@tensorix/metahub 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +18447 -16164
- package/dist/cli.js.map +43 -34
- package/dist/core/blobs.d.ts +10 -0
- package/dist/core/blobs.d.ts.map +1 -1
- package/dist/core/cache.d.ts +5 -0
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/config.d.ts +4 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/crdt.d.ts +7 -0
- package/dist/core/crdt.d.ts.map +1 -1
- package/dist/core/schema-init.d.ts +29 -0
- package/dist/core/schema-init.d.ts.map +1 -1
- package/dist/core/schema.d.ts +1 -1
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/shares.d.ts +60 -0
- package/dist/core/shares.d.ts.map +1 -0
- package/dist/core/sites-core.d.ts.map +1 -1
- package/dist/core/sites.d.ts.map +1 -1
- package/dist/core/sync/auth.d.ts +15 -2
- package/dist/core/sync/auth.d.ts.map +1 -1
- package/dist/core/sync/blob-routes.d.ts.map +1 -1
- package/dist/core/sync/client.d.ts +5 -0
- package/dist/core/sync/client.d.ts.map +1 -1
- package/dist/core/sync/e2ee.d.ts +7 -0
- package/dist/core/sync/e2ee.d.ts.map +1 -1
- package/dist/core/sync/peers.d.ts +1 -2
- package/dist/core/sync/peers.d.ts.map +1 -1
- package/dist/core/sync/server.d.ts.map +1 -1
- package/dist/core/sync/share-actions.d.ts +69 -0
- package/dist/core/sync/share-actions.d.ts.map +1 -0
- package/dist/core/sync/share-export.d.ts +72 -0
- package/dist/core/sync/share-export.d.ts.map +1 -0
- package/dist/core/sync/share-render.d.ts +10 -0
- package/dist/core/sync/share-render.d.ts.map +1 -0
- package/dist/core/sync/share-serve.d.ts +3 -0
- package/dist/core/sync/share-serve.d.ts.map +1 -0
- package/dist/core/sync/storage-s3-bun.d.ts +9 -0
- package/dist/core/sync/storage-s3-bun.d.ts.map +1 -1
- package/dist/core/sync/storage-url.d.ts +18 -0
- package/dist/core/sync/storage-url.d.ts.map +1 -0
- package/dist/db-worker.js +92 -62
- package/dist/index.js +19584 -17607
- package/dist/index.js.map +36 -29
- package/dist/sw.js +1 -1
- package/dist/webui/server/assets.d.ts.map +1 -1
- package/dist/webui/server/routes.d.ts.map +1 -1
- package/dist/webui/server/share-routes.d.ts +3 -0
- package/dist/webui/server/share-routes.d.ts.map +1 -0
- package/dist/webui.js +84 -58
- package/package.json +2 -1
package/dist/webui.js
CHANGED
|
@@ -1,60 +1,88 @@
|
|
|
1
|
-
var w3=Object.create;var{getPrototypeOf:A3,defineProperty:F6,getOwnPropertyNames:C3}=Object;var N3=Object.prototype.hasOwnProperty;function y3(Z){return this[Z]}var M3,_3,v3=(Z,J,Q)=>{var X=Z!=null&&typeof Z==="object";if(X){var z=J?M3??=new WeakMap:_3??=new WeakMap,G=z.get(Z);if(G)return G}Q=Z!=null?w3(A3(Z)):{};let W=J||!Z||!Z.__esModule?F6(Q,"default",{value:Z,enumerable:!0}):Q;for(let q of C3(Z))if(!N3.call(W,q))F6(W,q,{get:y3.bind(Z,q),enumerable:!0});if(X)z.set(Z,W);return W};var M0=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var tJ=M0((uG,oJ)=>{function jJ(Z){if(Z instanceof Map)Z.clear=Z.delete=Z.set=function(){throw Error("map is read-only")};else if(Z instanceof Set)Z.add=Z.clear=Z.delete=function(){throw Error("set is read-only")};return Object.freeze(Z),Object.getOwnPropertyNames(Z).forEach((J)=>{let Q=Z[J],X=typeof Q;if((X==="object"||X==="function")&&!Object.isFrozen(Q))jJ(Q)}),Z}class w1{constructor(Z){if(Z.data===void 0)Z.data={};this.data=Z.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function xJ(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function R9(Z,...J){let Q=Object.create(null);for(let X in Z)Q[X]=Z[X];return J.forEach(function(X){for(let z in X)Q[z]=X[z]}),Q}var c$="</span>",IJ=(Z)=>{return!!Z.scope},d$=(Z,{prefix:J})=>{if(Z.startsWith("language:"))return Z.replace("language:","language-");if(Z.includes(".")){let Q=Z.split(".");return[`${J}${Q.shift()}`,...Q.map((X,z)=>`${X}${"_".repeat(z+1)}`)].join(" ")}return`${J}${Z}`};class DJ{constructor(Z,J){this.buffer="",this.classPrefix=J.classPrefix,Z.walk(this)}addText(Z){this.buffer+=xJ(Z)}openNode(Z){if(!IJ(Z))return;let J=d$(Z.scope,{prefix:this.classPrefix});this.span(J)}closeNode(Z){if(!IJ(Z))return;this.buffer+=c$}value(){return this.buffer}span(Z){this.buffer+=`<span class="${Z}">`}}var SJ=(Z={})=>{let J={children:[]};return Object.assign(J,Z),J};class A1{constructor(){this.rootNode=SJ(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(Z){this.top.children.push(Z)}openNode(Z){let J=SJ({scope:Z});this.add(J),this.stack.push(J)}closeNode(){if(this.stack.length>1)return this.stack.pop();return}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(Z){return this.constructor._walk(Z,this.rootNode)}static _walk(Z,J){if(typeof J==="string")Z.addText(J);else if(J.children)Z.openNode(J),J.children.forEach((Q)=>this._walk(Z,Q)),Z.closeNode(J);return Z}static _collapse(Z){if(typeof Z==="string")return;if(!Z.children)return;if(Z.children.every((J)=>typeof J==="string"))Z.children=[Z.children.join("")];else Z.children.forEach((J)=>{A1._collapse(J)})}}class hJ extends A1{constructor(Z){super();this.options=Z}addText(Z){if(Z==="")return;this.add(Z)}startScope(Z){this.openNode(Z)}endScope(){this.closeNode()}__addSublanguage(Z,J){let Q=Z.root;if(J)Q.scope=`language:${J}`;this.add(Q)}toHTML(){return new DJ(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function vZ(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function mJ(Z){return d9("(?=",Z,")")}function i$(Z){return d9("(?:",Z,")*")}function a$(Z){return d9("(?:",Z,")?")}function d9(...Z){return Z.map((Q)=>vZ(Q)).join("")}function l$(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function C1(...Z){return"("+(l$(Z).capture?"":"?:")+Z.map((X)=>vZ(X)).join("|")+")"}function uJ(Z){return new RegExp(Z.toString()+"|").exec("").length-1}function n$(Z,J){let Q=Z&&Z.exec(J);return Q&&Q.index===0}var r$=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function N1(Z,{joinWith:J}){let Q=0;return Z.map((X)=>{Q+=1;let z=Q,G=vZ(X),W="";while(G.length>0){let q=r$.exec(G);if(!q){W+=G;break}if(W+=G.substring(0,q.index),G=G.substring(q.index+q[0].length),q[0][0]==="\\"&&q[1])W+="\\"+String(Number(q[1])+z);else if(W+=q[0],q[0]==="(")Q++}return W}).map((X)=>`(${X})`).join(J)}var o$=/\b\B/,EJ="[a-zA-Z]\\w*",y1="[a-zA-Z_]\\w*",pJ="\\b\\d+(\\.\\d+)?",cJ="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",dJ="\\b(0b[01]+)",t$="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",s$=(Z={})=>{let J=/^#![ ]*\//;if(Z.binary)Z.begin=d9(J,/.*\b/,Z.binary,/\b.*/);return R9({scope:"meta",begin:J,end:/$/,relevance:0,"on:begin":(Q,X)=>{if(Q.index!==0)X.ignoreMatch()}},Z)},kZ={begin:"\\\\[\\s\\S]",relevance:0},e$={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[kZ]},Z2={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[kZ]},J2={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},F8=function(Z,J,Q={}){let X=R9({scope:"comment",begin:Z,end:J,contains:[]},Q);X.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let z=C1("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return X.contains.push({begin:d9(/[ ]+/,"(",z,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),X},$2=F8("//","$"),Q2=F8("/\\*","\\*/"),X2=F8("#","$"),z2={scope:"number",begin:pJ,relevance:0},W2={scope:"number",begin:cJ,relevance:0},G2={scope:"number",begin:dJ,relevance:0},q2={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[kZ,{begin:/\[/,end:/\]/,relevance:0,contains:[kZ]}]},Y2={scope:"title",begin:EJ,relevance:0},H2={scope:"title",begin:y1,relevance:0},K2={begin:"\\.\\s*"+y1,relevance:0},F2=function(Z){return Object.assign(Z,{"on:begin":(J,Q)=>{Q.data._beginMatch=J[1]},"on:end":(J,Q)=>{if(Q.data._beginMatch!==J[1])Q.ignoreMatch()}})},H8=Object.freeze({__proto__:null,APOS_STRING_MODE:e$,BACKSLASH_ESCAPE:kZ,BINARY_NUMBER_MODE:G2,BINARY_NUMBER_RE:dJ,COMMENT:F8,C_BLOCK_COMMENT_MODE:Q2,C_LINE_COMMENT_MODE:$2,C_NUMBER_MODE:W2,C_NUMBER_RE:cJ,END_SAME_AS_BEGIN:F2,HASH_COMMENT_MODE:X2,IDENT_RE:EJ,MATCH_NOTHING_RE:o$,METHOD_GUARD:K2,NUMBER_MODE:z2,NUMBER_RE:pJ,PHRASAL_WORDS_MODE:J2,QUOTE_STRING_MODE:Z2,REGEXP_MODE:q2,RE_STARTERS_RE:t$,SHEBANG:s$,TITLE_MODE:Y2,UNDERSCORE_IDENT_RE:y1,UNDERSCORE_TITLE_MODE:H2});function U2(Z,J){if(Z.input[Z.index-1]===".")J.ignoreMatch()}function L2(Z,J){if(Z.className!==void 0)Z.scope=Z.className,delete Z.className}function B2(Z,J){if(!J)return;if(!Z.beginKeywords)return;if(Z.begin="\\b("+Z.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Z.__beforeBegin=U2,Z.keywords=Z.keywords||Z.beginKeywords,delete Z.beginKeywords,Z.relevance===void 0)Z.relevance=0}function P2(Z,J){if(!Array.isArray(Z.illegal))return;Z.illegal=C1(...Z.illegal)}function O2(Z,J){if(!Z.match)return;if(Z.begin||Z.end)throw Error("begin & end are not supported with match");Z.begin=Z.match,delete Z.match}function w2(Z,J){if(Z.relevance===void 0)Z.relevance=1}var A2=(Z,J)=>{if(!Z.beforeMatch)return;if(Z.starts)throw Error("beforeMatch cannot be used with starts");let Q=Object.assign({},Z);Object.keys(Z).forEach((X)=>{delete Z[X]}),Z.keywords=Q.keywords,Z.begin=d9(Q.beforeMatch,mJ(Q.begin)),Z.starts={relevance:0,contains:[Object.assign(Q,{endsParent:!0})]},Z.relevance=0,delete Q.beforeMatch},C2=["of","and","for","in","not","or","if","then","parent","list","value"],N2="keyword";function iJ(Z,J,Q=N2){let X=Object.create(null);if(typeof Z==="string")z(Q,Z.split(" "));else if(Array.isArray(Z))z(Q,Z);else Object.keys(Z).forEach(function(G){Object.assign(X,iJ(Z[G],J,G))});return X;function z(G,W){if(J)W=W.map((q)=>q.toLowerCase());W.forEach(function(q){let Y=q.split("|");X[Y[0]]=[G,y2(Y[0],Y[1])]})}}function y2(Z,J){if(J)return Number(J);return M2(Z)?0:1}function M2(Z){return C2.includes(Z.toLowerCase())}var VJ={},c9=(Z)=>{console.error(Z)},fJ=(Z,...J)=>{console.log(`WARN: ${Z}`,...J)},zZ=(Z,J)=>{if(VJ[`${Z}/${J}`])return;console.log(`Deprecated as of ${Z}. ${J}`),VJ[`${Z}/${J}`]=!0},K8=Error();function aJ(Z,J,{key:Q}){let X=0,z=Z[Q],G={},W={};for(let q=1;q<=J.length;q++)W[q+X]=z[q],G[q+X]=!0,X+=uJ(J[q-1]);Z[Q]=W,Z[Q]._emit=G,Z[Q]._multi=!0}function _2(Z){if(!Array.isArray(Z.begin))return;if(Z.skip||Z.excludeBegin||Z.returnBegin)throw c9("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),K8;if(typeof Z.beginScope!=="object"||Z.beginScope===null)throw c9("beginScope must be object"),K8;aJ(Z,Z.begin,{key:"beginScope"}),Z.begin=N1(Z.begin,{joinWith:""})}function v2(Z){if(!Array.isArray(Z.end))return;if(Z.skip||Z.excludeEnd||Z.returnEnd)throw c9("skip, excludeEnd, returnEnd not compatible with endScope: {}"),K8;if(typeof Z.endScope!=="object"||Z.endScope===null)throw c9("endScope must be object"),K8;aJ(Z,Z.end,{key:"endScope"}),Z.end=N1(Z.end,{joinWith:""})}function k2(Z){if(Z.scope&&typeof Z.scope==="object"&&Z.scope!==null)Z.beginScope=Z.scope,delete Z.scope}function T2(Z){if(k2(Z),typeof Z.beginScope==="string")Z.beginScope={_wrap:Z.beginScope};if(typeof Z.endScope==="string")Z.endScope={_wrap:Z.endScope};_2(Z),v2(Z)}function R2(Z){function J(W,q){return new RegExp(vZ(W),"m"+(Z.case_insensitive?"i":"")+(Z.unicodeRegex?"u":"")+(q?"g":""))}class Q{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(W,q){q.position=this.position++,this.matchIndexes[this.matchAt]=q,this.regexes.push([q,W]),this.matchAt+=uJ(W)+1}compile(){if(this.regexes.length===0)this.exec=()=>null;let W=this.regexes.map((q)=>q[1]);this.matcherRe=J(N1(W,{joinWith:"|"}),!0),this.lastIndex=0}exec(W){this.matcherRe.lastIndex=this.lastIndex;let q=this.matcherRe.exec(W);if(!q)return null;let Y=q.findIndex((F,K)=>K>0&&F!==void 0),H=this.matchIndexes[Y];return q.splice(0,Y),Object.assign(q,H)}}class X{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(W){if(this.multiRegexes[W])return this.multiRegexes[W];let q=new Q;return this.rules.slice(W).forEach(([Y,H])=>q.addRule(Y,H)),q.compile(),this.multiRegexes[W]=q,q}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(W,q){if(this.rules.push([W,q]),q.type==="begin")this.count++}exec(W){let q=this.getMatcher(this.regexIndex);q.lastIndex=this.lastIndex;let Y=q.exec(W);if(this.resumingScanAtSamePosition())if(Y&&Y.index===this.lastIndex);else{let H=this.getMatcher(0);H.lastIndex=this.lastIndex+1,Y=H.exec(W)}if(Y){if(this.regexIndex+=Y.position+1,this.regexIndex===this.count)this.considerAll()}return Y}}function z(W){let q=new X;if(W.contains.forEach((Y)=>q.addRule(Y.begin,{rule:Y,type:"begin"})),W.terminatorEnd)q.addRule(W.terminatorEnd,{type:"end"});if(W.illegal)q.addRule(W.illegal,{type:"illegal"});return q}function G(W,q){let Y=W;if(W.isCompiled)return Y;[L2,O2,T2,A2].forEach((F)=>F(W,q)),Z.compilerExtensions.forEach((F)=>F(W,q)),W.__beforeBegin=null,[B2,P2,w2].forEach((F)=>F(W,q)),W.isCompiled=!0;let H=null;if(typeof W.keywords==="object"&&W.keywords.$pattern)W.keywords=Object.assign({},W.keywords),H=W.keywords.$pattern,delete W.keywords.$pattern;if(H=H||/\w+/,W.keywords)W.keywords=iJ(W.keywords,Z.case_insensitive);if(Y.keywordPatternRe=J(H,!0),q){if(!W.begin)W.begin=/\B|\b/;if(Y.beginRe=J(Y.begin),!W.end&&!W.endsWithParent)W.end=/\B|\b/;if(W.end)Y.endRe=J(Y.end);if(Y.terminatorEnd=vZ(Y.end)||"",W.endsWithParent&&q.terminatorEnd)Y.terminatorEnd+=(W.end?"|":"")+q.terminatorEnd}if(W.illegal)Y.illegalRe=J(W.illegal);if(!W.contains)W.contains=[];if(W.contains=[].concat(...W.contains.map(function(F){return I2(F==="self"?W:F)})),W.contains.forEach(function(F){G(F,Y)}),W.starts)G(W.starts,q);return Y.matcher=z(Y),Y}if(!Z.compilerExtensions)Z.compilerExtensions=[];if(Z.contains&&Z.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return Z.classNameAliases=R9(Z.classNameAliases||{}),G(Z)}function lJ(Z){if(!Z)return!1;return Z.endsWithParent||lJ(Z.starts)}function I2(Z){if(Z.variants&&!Z.cachedVariants)Z.cachedVariants=Z.variants.map(function(J){return R9(Z,{variants:null},J)});if(Z.cachedVariants)return Z.cachedVariants;if(lJ(Z))return R9(Z,{starts:Z.starts?R9(Z.starts):null});if(Object.isFrozen(Z))return R9(Z);return Z}var S2="11.11.1";class nJ extends Error{constructor(Z,J){super(Z);this.name="HTMLInjectionError",this.html=J}}var O1=xJ,bJ=R9,gJ=Symbol("nomatch"),V2=7,rJ=function(Z){let J=Object.create(null),Q=Object.create(null),X=[],z=!0,G="Could not find the language '{}', did you forget to load/include a language module?",W={disableAutodetect:!0,name:"Plain text",contains:[]},q={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:hJ};function Y(g){return q.noHighlightRe.test(g)}function H(g){let I=g.className+" ";I+=g.parentNode?g.parentNode.className:"";let h=q.languageDetectRe.exec(I);if(h){let m=B(h[1]);if(!m)fJ(G.replace("{}",h[1])),fJ("Falling back to no-highlight mode for this block.",g);return m?h[1]:"no-highlight"}return I.split(/\s+/).find((m)=>Y(m)||B(m))}function F(g,I,h){let m="",z0="";if(typeof I==="object")m=g,h=I.ignoreIllegals,z0=I.language;else zZ("10.7.0","highlight(lang, code, ...args) has been deprecated."),zZ("10.7.0",`Please use highlight(code, options) instead.
|
|
2
|
-
https://github.com/highlightjs/highlight.js/issues/2277`),
|
|
3
|
-
`,1;if(v0>1e5&&v0>K0.index*3)throw Error("potential infinite loop, way more iterations than matches");return w0+=A0,A0.length}let F0=B(g);if(!F0)throw c9(G.replace("{}",g)),Error('Unknown language: "'+g+'"');let d=R2(F0),P0="",s=m||d,k0={},T0=new q.__emitter(q);x();let w0="",Z0=0,H0=0,v0=0,Z9=!1;try{if(!F0.__emitTokens){s.matcher.considerAll();for(;;){if(v0++,Z9)Z9=!1;else s.matcher.considerAll();s.matcher.lastIndex=H0;let J0=s.matcher.exec(I);if(!J0)break;let K0=I.substring(H0,J0.index),A0=l(K0,J0);H0=J0.index+A0}l(I.substring(H0))}else F0.__emitTokens(I,T0);return T0.finalize(),P0=T0.toHTML(),{language:g,value:P0,relevance:Z0,illegal:!1,_emitter:T0,_top:s}}catch(J0){if(J0.message&&J0.message.includes("Illegal"))return{language:g,value:O1(I),illegal:!0,relevance:0,_illegalBy:{message:J0.message,index:H0,context:I.slice(H0-100,H0+100),mode:J0.mode,resultSoFar:P0},_emitter:T0};else if(z)return{language:g,value:O1(I),illegal:!1,relevance:0,errorRaised:J0,_emitter:T0,_top:s};else throw J0}}function P(g){let I={value:O1(g),illegal:!1,relevance:0,_top:W,_emitter:new q.__emitter(q)};return I._emitter.addText(g),I}function A(g,I){I=I||q.languages||Object.keys(J);let h=P(g),m=I.filter(B).filter(_).map((Q0)=>K(Q0,g,!1));m.unshift(h);let z0=m.sort((Q0,j0)=>{if(Q0.relevance!==j0.relevance)return j0.relevance-Q0.relevance;if(Q0.language&&j0.language){if(B(Q0.language).supersetOf===j0.language)return 1;else if(B(j0.language).supersetOf===Q0.language)return-1}return 0}),[X0,Y0]=z0,p=X0;return p.secondBest=Y0,p}function L(g,I,h){let m=I&&Q[I]||h;g.classList.add("hljs"),g.classList.add(`language-${m}`)}function y(g){let I=null,h=H(g);if(Y(h))return;if(t("before:highlightElement",{el:g,language:h}),g.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",g);return}if(g.children.length>0){if(!q.ignoreUnescapedHTML)console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(g);if(q.throwUnescapedHTML)throw new nJ("One of your code blocks includes unescaped HTML.",g.innerHTML)}I=g;let m=I.textContent,z0=h?F(m,{language:h,ignoreIllegals:!0}):A(m);if(g.innerHTML=z0.value,g.dataset.highlighted="yes",L(g,h,z0.language),g.result={language:z0.language,re:z0.relevance,relevance:z0.relevance},z0.secondBest)g.secondBest={language:z0.secondBest.language,relevance:z0.secondBest.relevance};t("after:highlightElement",{el:g,result:z0,text:m})}function V(g){q=bJ(q,g)}let S=()=>{k(),zZ("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function M(){k(),zZ("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let N=!1;function k(){function g(){k()}if(document.readyState==="loading"){if(!N)window.addEventListener("DOMContentLoaded",g,!1);N=!0;return}document.querySelectorAll(q.cssSelector).forEach(y)}function v(g,I){let h=null;try{h=I(Z)}catch(m){if(c9("Language definition for '{}' could not be registered.".replace("{}",g)),!z)throw m;else c9(m);h=W}if(!h.name)h.name=g;if(J[g]=h,h.rawDefinition=I.bind(null,Z),h.aliases)C(h.aliases,{languageName:g})}function O(g){delete J[g];for(let I of Object.keys(Q))if(Q[I]===g)delete Q[I]}function U(){return Object.keys(J)}function B(g){return g=(g||"").toLowerCase(),J[g]||J[Q[g]]}function C(g,{languageName:I}){if(typeof g==="string")g=[g];g.forEach((h)=>{Q[h.toLowerCase()]=I})}function _(g){let I=B(g);return I&&!I.disableAutodetect}function T(g){if(g["before:highlightBlock"]&&!g["before:highlightElement"])g["before:highlightElement"]=(I)=>{g["before:highlightBlock"](Object.assign({block:I.el},I))};if(g["after:highlightBlock"]&&!g["after:highlightElement"])g["after:highlightElement"]=(I)=>{g["after:highlightBlock"](Object.assign({block:I.el},I))}}function u(g){T(g),X.push(g)}function E(g){let I=X.indexOf(g);if(I!==-1)X.splice(I,1)}function t(g,I){let h=g;X.forEach(function(m){if(m[h])m[h](I)})}function $0(g){return zZ("10.7.0","highlightBlock will be removed entirely in v12.0"),zZ("10.7.0","Please use highlightElement now."),y(g)}Object.assign(Z,{highlight:F,highlightAuto:A,highlightAll:k,highlightElement:y,highlightBlock:$0,configure:V,initHighlighting:S,initHighlightingOnLoad:M,registerLanguage:v,unregisterLanguage:O,listLanguages:U,getLanguage:B,registerAliases:C,autoDetection:_,inherit:bJ,addPlugin:u,removePlugin:E}),Z.debugMode=function(){z=!1},Z.safeMode=function(){z=!0},Z.versionString=S2,Z.regex={concat:d9,lookahead:mJ,either:C1,optional:a$,anyNumberOfTimes:i$};for(let g in H8)if(typeof H8[g]==="object")jJ(H8[g]);return Object.assign(Z,H8),Z},WZ=rJ({});WZ.newInstance=()=>rJ({});oJ.exports=WZ;WZ.HighlightJS=WZ;WZ.default=WZ});var eJ=M0((EG,sJ)=>{function f2(Z){let J=Z.regex,Q=J.concat(/[\p{L}_]/u,J.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),X=/[\p{L}0-9._:-]+/u,z={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},G={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},W=Z.inherit(G,{begin:/\(/,end:/\)/}),q=Z.inherit(Z.APOS_STRING_MODE,{className:"string"}),Y=Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),H={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:X,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[z]},{begin:/'/,end:/'/,contains:[z]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[G,Y,q,W,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[G,W,Y,q]}]}]},Z.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},z,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[Y]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[H],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[H],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:J.concat(/</,J.lookahead(J.concat(Q,J.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:Q,relevance:0,starts:H}]},{className:"tag",begin:J.concat(/<\//,J.lookahead(J.concat(Q,/>/))),contains:[{className:"name",begin:Q,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}sJ.exports=f2});var J4=M0((pG,Z4)=>{function b2(Z){let J=Z.regex,Q={},X={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[Q]}]};Object.assign(Q,{className:"variable",variants:[{begin:J.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},X]});let z={className:"subst",begin:/\$\(/,end:/\)/,contains:[Z.BACKSLASH_ESCAPE]},G=Z.inherit(Z.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),W={begin:/<<-?\s*(?=\w+)/,starts:{contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,Q,z]};z.contains.push(q);let Y={match:/\\"/},H={className:"string",begin:/'/,end:/'/},F={match:/\\'/},K={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},Z.NUMBER_MODE,Q]},P=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],A=Z.SHEBANG({binary:`(${P.join("|")})`,relevance:10}),L={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[Z.inherit(Z.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],V=["true","false"],S={match:/(\/[a-z._-]+)+/},M=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],N=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],k=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],v=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:V,built_in:[...M,...N,"set","shopt",...k,...v]},contains:[A,Z.SHEBANG(),L,K,G,W,S,q,Y,H,F,Q]}}Z4.exports=b2});var Q4=M0((cG,$4)=>{function g2(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",G="<[^<>]+>",W="(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},Y="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",H={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(H,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},P={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},A=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",V={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},S=[K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,H],M={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:V,contains:S.concat([{begin:/\(/,end:/\)/,keywords:V,contains:S.concat(["self"]),relevance:0}]),relevance:0},N={begin:"("+W+"[\\*&\\s]+)+"+A,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:V,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:V,relevance:0},{begin:A,returnBegin:!0,contains:[Z.inherit(P,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:V,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,H,F,q,{begin:/\(/,end:/\)/,keywords:V,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,H,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C",aliases:["h"],keywords:V,disableAutodetect:!0,illegal:"</",contains:[].concat(M,N,S,[K,{begin:Z.IDENT_RE+"::",keywords:V},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},Z.TITLE_MODE]}]),exports:{preprocessor:K,strings:H,keywords:V}}}$4.exports=g2});var z4=M0((dG,X4)=>{function j2(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",G="<[^<>]+>",W="(?!struct)(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},Y="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",H={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(H,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},P={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},A=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",L=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],V=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],S=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],k={type:y,keyword:L,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:V},v={className:"function.dispatch",relevance:0,keywords:{_hint:S},begin:J.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,Z.IDENT_RE,J.lookahead(/(<[^<>]+>|)\s*\(/))},O=[v,K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,H],U={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:O.concat([{begin:/\(/,end:/\)/,keywords:k,contains:O.concat(["self"]),relevance:0}]),relevance:0},B={className:"function",begin:"("+W+"[\\*&\\s]+)+"+A,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:k,relevance:0},{begin:A,returnBegin:!0,contains:[P],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[H,F]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,H,F,q,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,H,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:k,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(U,B,v,O,[K,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:k,contains:["self",q]},{begin:Z.IDENT_RE+"::",keywords:k},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}X4.exports=j2});var G4=M0((iG,W4)=>{function x2(Z){let J=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],Q=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],X=["default","false","null","true"],z=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],G=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],W={keyword:z.concat(G),built_in:J,literal:X},q=Z.inherit(Z.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),Y={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},H={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},F={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},K=Z.inherit(F,{illegal:/\n/}),P={className:"subst",begin:/\{/,end:/\}/,keywords:W},A=Z.inherit(P,{illegal:/\n/}),L={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},Z.BACKSLASH_ESCAPE,A]},y={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},P]},V=Z.inherit(y,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},A]});P.contains=[y,L,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,Y,Z.C_BLOCK_COMMENT_MODE],A.contains=[V,L,K,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,Y,Z.inherit(Z.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let S={variants:[H,y,L,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},M={begin:"<",end:">",contains:[{beginKeywords:"in out"},q]},N=Z.IDENT_RE+"(<"+Z.IDENT_RE+"(\\s*,\\s*"+Z.IDENT_RE+")*>)?(\\[\\])?",k={begin:"@"+Z.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:W,illegal:/::/,contains:[Z.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},S,Y,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},q,M,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,M,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+N+"\\s+)+"+Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:W,contains:[{beginKeywords:Q.join(" "),relevance:0},{begin:Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[Z.TITLE_MODE,M],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:W,relevance:0,contains:[S,Y,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},k]}}W4.exports=x2});var Y4=M0((aG,q4)=>{var D2=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},h2=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],m2=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],u2=[...h2,...m2],E2=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),p2=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),c2=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),d2=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function i2(Z){let J=Z.regex,Q=D2(Z),X={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},z="and or not only",G=/@-?\w[\w]*(-\w+)*/,W="[a-zA-Z-][a-zA-Z0-9_-]*",q=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[Q.BLOCK_COMMENT,X,Q.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},Q.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+p2.join("|")+")"},{begin:":(:)?("+c2.join("|")+")"}]},Q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+d2.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[Q.BLOCK_COMMENT,Q.HEXCOLOR,Q.IMPORTANT,Q.CSS_NUMBER_MODE,...q,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...q,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},Q.FUNCTION_DISPATCH]},{begin:J.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:G},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:E2.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...q,Q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+u2.join("|")+")\\b"}]}}q4.exports=i2});var K4=M0((lG,H4)=>{function a2(Z){let J=Z.regex,Q={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},X={begin:"^[-\\*]{3,}",end:"$"},z={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},G={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},W={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},q=/[A-Za-z][A-Za-z0-9+.-]*/,Y={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:J.concat(/\[.+?\]\(/,q,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},H={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},F={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},K=Z.inherit(H,{contains:[]}),P=Z.inherit(F,{contains:[]});H.contains.push(P),F.contains.push(K);let A=[Q,Y];return[H,F,K,P].forEach((S)=>{S.contains=S.contains.concat(A)}),A=A.concat(H,F),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:A},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:A}]}]},Q,G,H,F,{className:"quote",begin:"^>\\s+",contains:A,end:"$"},z,X,Y,W,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}H4.exports=a2});var U4=M0((nG,F4)=>{function l2(Z){let J=Z.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:J.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:J.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}F4.exports=l2});var B4=M0((rG,L4)=>{function n2(Z){let J=Z.regex,Q="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",X=J.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),z=J.concat(X,/(::\w+)*/),W={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},q={className:"doctag",begin:"@[A-Za-z]+"},Y={begin:"#<",end:">"},H=[Z.COMMENT("#","$",{contains:[q]}),Z.COMMENT("^=begin","^=end",{contains:[q],relevance:10}),Z.COMMENT("^__END__",Z.MATCH_NOTHING_RE)],F={className:"subst",begin:/#\{/,end:/\}/,keywords:W},K={className:"string",contains:[Z.BACKSLASH_ESCAPE,F],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:J.concat(/<<[-~]?'?/,J.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[Z.BACKSLASH_ESCAPE,F]})]}]},P="[1-9](_?[0-9])*|0",A="[0-9](_?[0-9])*",L={className:"number",relevance:0,variants:[{begin:"\\b([1-9](_?[0-9])*|0)(\\.([0-9](_?[0-9])*))?([eE][+-]?([0-9](_?[0-9])*)|r)?i?\\b"},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},y={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:W}]},O=[K,{variants:[{match:[/class\s+/,z,/\s+<\s+/,z]},{match:[/\b(class|module)\s+/,z]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:W},{match:[/(include|extend)\s+/,z],scope:{2:"title.class"},keywords:W},{relevance:0,match:[z,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:X,scope:"title.class"},{match:[/def/,/\s+/,"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"],scope:{1:"keyword",3:"title.function"},contains:[y]},{begin:Z.IDENT_RE+"::"},{className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[K,{begin:"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"}],relevance:0},L,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:W},{begin:"("+Z.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[Z.BACKSLASH_ESCAPE,F],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(Y,H),relevance:0}].concat(Y,H);F.contains=O,y.contains=O;let U="[>?]>",B="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",C="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",_=[{begin:/^\s*=>/,starts:{end:"$",contains:O}},{className:"meta.prompt",begin:"^("+U+"|"+B+"|"+C+")(?=[ ])",starts:{end:"$",keywords:W,contains:O}}];return H.unshift(Y),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:W,illegal:/\/\*/,contains:[Z.SHEBANG({binary:"ruby"})].concat(_).concat(H).concat(O)}}L4.exports=n2});var O4=M0((oG,P4)=>{function r2(Z){let G={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:G,illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"string",variants:[Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[Z.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:G,illegal:/["']/}]}]}}P4.exports=r2});var A4=M0((tG,w4)=>{function o2(Z){let J=Z.regex,Q=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[Z.HASH_COMMENT_MODE,Z.QUOTE_STRING_MODE,Z.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:J.concat(Q,J.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}w4.exports=o2});var N4=M0((sG,C4)=>{function t2(Z){let J=Z.regex,Q={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:Z.NUMBER_RE}]},X=Z.COMMENT();X.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let z={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},G={className:"literal",begin:/\bon|off|true|false|yes|no\b/},W={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},q={begin:/\[/,end:/\]/,contains:[X,G,z,W,Q,"self"],relevance:0},Y=/[A-Za-z0-9_-]+/,H=/"(\\"|[^"])*"/,F=/'[^']*'/,K=J.either(Y,H,F),P=J.concat(K,"(\\s*\\.\\s*",K,")*",J.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[X,{className:"section",begin:/\[+/,end:/\]+/},{begin:P,className:"attr",starts:{end:/$/,contains:[X,q,G,z,W,Q]}}]}}C4.exports=t2});var v4=M0((eG,_4)=>{var GZ="[0-9](_*[0-9])*",U8=`\\.(${GZ})`,L8="[0-9a-fA-F](_*[0-9a-fA-F])*",y4={className:"number",variants:[{begin:`(\\b(${GZ})((${U8})|\\.)?|(${U8}))[eE][+-]?(${GZ})[fFdD]?\\b`},{begin:`\\b(${GZ})((${U8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${U8})[fFdD]?\\b`},{begin:`\\b(${GZ})[fFdD]\\b`},{begin:`\\b0[xX]((${L8})\\.?|(${L8})?\\.(${L8}))[pP][+-]?(${GZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${L8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function M4(Z,J,Q){if(Q===-1)return"";return Z.replace(J,(X)=>{return M4(Z,J,Q-1)})}function s2(Z){let J=Z.regex,Q="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",X="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+M4("(?:<"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~(?:\\s*,\\s*"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~)*>)?",/~~~/g,2),Y={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},H={className:"meta",begin:"@"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},F={className:"params",begin:/\(/,end:/\)/,keywords:Y,relevance:0,contains:[Z.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:Y,illegal:/<\/|#/,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[Z.BACKSLASH_ESCAPE]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[J.concat(/(?!else)/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"),/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"},contains:[F,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+X+"\\s+)",Z.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:Y,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:Y,relevance:0,contains:[H,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,y4,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},y4,H]}}_4.exports=s2});var S4=M0((Zq,I4)=>{var e2=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],ZQ=["true","false","null","undefined","NaN","Infinity"],k4=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],T4=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],R4=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],JQ=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],$Q=[].concat(R4,k4,T4);function QQ(Z){let J=Z.regex,Q=(h,{after:m})=>{let z0="</"+h[0].slice(1);return h.input.indexOf(z0,m)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},G=/<[A-Za-z0-9\\._:-]+\s*\/>/,W={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(h,m)=>{let z0=h[0].length+h.index,X0=h.input[z0];if(X0==="<"||X0===","){m.ignoreMatch();return}if(X0===">"){if(!Q(h,{after:z0}))m.ignoreMatch()}let Y0,p=h.input.substring(z0);if(Y0=p.match(/^\s*=/)){m.ignoreMatch();return}if(Y0=p.match(/^\s+extends\s+/)){if(Y0.index===0){m.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e2,literal:ZQ,built_in:$Q,"variable.language":JQ},Y="[0-9](_?[0-9])*",H="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},P={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},A={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,P],subLanguage:"xml"}},L={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,P],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,P],subLanguage:"graphql"}},V={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,P]},M={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},N=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,A,L,y,V,{match:/\$\d+/},K];P.contains=N.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(N)});let k=[].concat(M,P.contains),v=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(k)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:v},U={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},B={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...k4,...T4]}},C={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},_={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[O],illegal:/%/},T={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function u(h){return J.concat("(?!",h.join("|"),")")}let E={match:J.concat(/\b/,u([...R4,"super","import"].map((h)=>`${h}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},t={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},$0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},O]},g="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",I={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(g)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:v,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),C,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,A,L,y,V,M,{match:/\$\d+/},K,B,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},I,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[M,Z.REGEXP_MODE,{className:"function",begin:g,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:v}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:G},{begin:W.begin,"on:begin":W.isTrulyOpeningTag,end:W.end}],subLanguage:"xml",contains:[{begin:W.begin,end:W.end,skip:!0,contains:["self"]}]}]},_,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[O,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},t,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},E,T,U,$0,{match:/\$[(.]/}]}}I4.exports=QQ});var f4=M0((Jq,V4)=>{function XQ(Z){let J={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},Q={match:/[{}[\],:]/,className:"punctuation",relevance:0},X=["true","false","null"],z={scope:"literal",beginKeywords:X.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:X},contains:[J,Q,Z.QUOTE_STRING_MODE,z,Z.C_NUMBER_MODE,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}V4.exports=XQ});var g4=M0(($q,b4)=>{var qZ="[0-9](_*[0-9])*",B8=`\\.(${qZ})`,P8="[0-9a-fA-F](_*[0-9a-fA-F])*",zQ={className:"number",variants:[{begin:`(\\b(${qZ})((${B8})|\\.)?|(${B8}))[eE][+-]?(${qZ})[fFdD]?\\b`},{begin:`\\b(${qZ})((${B8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${B8})[fFdD]?\\b`},{begin:`\\b(${qZ})[fFdD]\\b`},{begin:`\\b0[xX]((${P8})\\.?|(${P8})?\\.(${P8}))[pP][+-]?(${qZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${P8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function WQ(Z){let J={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},Q={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},X={className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"@"},z={className:"subst",begin:/\$\{/,end:/\}/,contains:[Z.C_NUMBER_MODE]},G={className:"variable",begin:"\\$"+Z.UNDERSCORE_IDENT_RE},W={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[G,z]},{begin:"'",end:"'",illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE,G,z]}]};z.contains.push(W);let q={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+Z.UNDERSCORE_IDENT_RE+")?"},Y={className:"meta",begin:"@"+Z.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[Z.inherit(W,{className:"string"}),"self"]}]},H=zQ,F=Z.COMMENT("/\\*","\\*/",{contains:[Z.C_BLOCK_COMMENT_MODE]}),K={variants:[{className:"type",begin:Z.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},P=K;return P.variants[1].contains=[K],K.variants[1].contains=[P],{name:"Kotlin",aliases:["kt","kts"],keywords:J,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),Z.C_LINE_COMMENT_MODE,F,Q,X,q,Y,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:J,relevance:5,contains:[{begin:Z.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[Z.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:J,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[K,Z.C_LINE_COMMENT_MODE,F],relevance:0},Z.C_LINE_COMMENT_MODE,F,q,Y,W,Z.C_NUMBER_MODE]},F]},{begin:[/class|interface|trait/,/\s+/,Z.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},Z.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},q,Y]},W,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4
|
-
`},H]}}b4.exports=WQ});var h4=M0((Qq,D4)=>{var GQ=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},qQ=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],YQ=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],HQ=[...qQ,...YQ],KQ=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),j4=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),x4=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),FQ=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),UQ=j4.concat(x4).sort().reverse();function LQ(Z){let J=GQ(Z),Q=UQ,X="and or not only",z="[\\w-]+",G="([\\w-]+|@\\{[\\w-]+\\})",W=[],q=[],Y=function(N){return{className:"string",begin:"~?"+N+".*?"+N}},H=function(N,k,v){return{className:N,begin:k,relevance:v}},F={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:KQ.join(" ")},K={begin:"\\(",end:"\\)",contains:q,keywords:F,relevance:0};q.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,Y("'"),Y('"'),J.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},J.HEXCOLOR,K,H("variable","@@?[\\w-]+",10),H("variable","@\\{[\\w-]+\\}"),H("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},J.IMPORTANT,{beginKeywords:"and not"},J.FUNCTION_DISPATCH);let P=q.concat({begin:/\{/,end:/\}/,contains:W}),A={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(q)},L={begin:G+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+FQ.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:q}}]},y={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:F,returnEnd:!0,contains:q,relevance:0}},V={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:P}},S={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:G,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,A,H("keyword","all\\b"),H("variable","@\\{[\\w-]+\\}"),{begin:"\\b("+HQ.join("|")+")\\b",className:"selector-tag"},J.CSS_NUMBER_MODE,H("selector-tag",G,0),H("selector-id","#"+G),H("selector-class","\\."+G,0),H("selector-tag","&",0),J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+j4.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+x4.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:P},{begin:"!important"},J.FUNCTION_DISPATCH]},M={begin:`[\\w-]+:(:)?(${Q.join("|")})`,returnBegin:!0,contains:[S]};return W.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,y,V,M,L,S,A,J.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:W}}D4.exports=LQ});var u4=M0((Xq,m4)=>{function BQ(Z){let X={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},z=[Z.COMMENT("--(?!\\[=*\\[)","$"),Z.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[X],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:Z.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:z.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[Z.inherit(Z.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:z}].concat(z)},Z.C_NUMBER_MODE,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[X],relevance:5}])}}m4.exports=BQ});var p4=M0((zq,E4)=>{function PQ(Z){let J={className:"variable",variants:[{begin:"\\$\\("+Z.UNDERSCORE_IDENT_RE+"\\)",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},Q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,J]},X={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[J,Q]},z={begin:"^"+Z.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},G={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},W={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[J]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[Z.HASH_COMMENT_MODE,J,Q,X,z,G,W]}}E4.exports=PQ});var d4=M0((Wq,c4)=>{function OQ(Z){let J=Z.regex,Q=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],X=/[dualxmsipngr]{0,12}/,z={$pattern:/[\w.]+/,keyword:Q.join(" ")},G={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:z},W={begin:/->\{/,end:/\}/},q={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},Y={scope:"variable",variants:[{begin:/\$\d/},{begin:J.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[q]},H={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},F=[Z.BACKSLASH_ESCAPE,G,Y],K=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],P=(y,V,S="\\1")=>{let M=S==="\\1"?S:J.concat(S,V);return J.concat(J.concat("(?:",y,")"),V,/(?:\\.|[^\\\/])*?/,M,/(?:\\.|[^\\\/])*?/,S,X)},A=(y,V,S)=>{return J.concat(J.concat("(?:",y,")"),V,/(?:\\.|[^\\\/])*?/,S,X)},L=[Y,Z.HASH_COMMENT_MODE,Z.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),W,{className:"string",contains:F,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},H,{begin:"(\\/\\/|"+Z.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[Z.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:P("s|tr|y",J.either(...K,{capture:!0}))},{begin:P("s|tr|y","\\(","\\)")},{begin:P("s|tr|y","\\[","\\]")},{begin:P("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:A("(?:m|qr)?",/\//,/\//)},{begin:A("m|qr",J.either(...K,{capture:!0}),/\1/)},{begin:A("m|qr",/\(/,/\)/)},{begin:A("m|qr",/\[/,/\]/)},{begin:A("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q,H]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return G.contains=L,W.contains=L,{name:"Perl",aliases:["pl","pm"],keywords:z,contains:L}}c4.exports=OQ});var a4=M0((Gq,i4)=>{function wQ(Z){let J={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},Q=/[a-zA-Z@][a-zA-Z0-9_]*/,q={"variable.language":["this","super"],$pattern:Q,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},Y={$pattern:Q,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:q,illegal:"</",contains:[J,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,Z.C_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+Y.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:Y,contains:[Z.UNDERSCORE_TITLE_MODE]},{begin:"\\."+Z.UNDERSCORE_IDENT_RE,relevance:0}]}}i4.exports=wQ});var n4=M0((qq,l4)=>{function AQ(Z){let J=Z.regex,Q=/(?![A-Za-z0-9])(?![$])/,X=J.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,Q),z=J.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,Q),G=J.concat(/[A-Z]+/,Q),W={scope:"variable",match:"\\$+"+X},q={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:0.1},{begin:/\?>/}]},Y={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},H=Z.inherit(Z.APOS_STRING_MODE,{illegal:null}),F=Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,contains:Z.QUOTE_STRING_MODE.contains.concat(Y)}),K={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:Z.QUOTE_STRING_MODE.contains.concat(Y),"on:begin":(t,$0)=>{$0.data._beginMatch=t[1]||t[2]},"on:end":(t,$0)=>{if($0.data._beginMatch!==t[1])$0.ignoreMatch()}},P=Z.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),A=`[
|
|
5
|
-
]`,
|
|
6
|
-
]`,"+"),J.concat("(?!",
|
|
7
|
-
]`,"*"),J.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[_]};_.contains.push(T);let u=[C,B,Z.C_BLOCK_COMMENT_MODE,L,y,O],E={begin:J.concat(/#\[\s*\\?/,J.either(z,G)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:V,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:V,keyword:["new","array"]},contains:["self",...u]},...u,{scope:"meta",variants:[{match:z},{match:G}]}]};return{case_insensitive:!1,keywords:k,contains:[E,Z.HASH_COMMENT_MODE,Z.COMMENT("//","$"),Z.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:Z.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},q,{scope:"variable.language",match:/\$this\b/},W,T,B,{match:[/const/,/\s/,X],scope:{1:"keyword",3:"variable.constant"}},O,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},Z.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:k,contains:["self",E,W,B,Z.C_BLOCK_COMMENT_MODE,L,y]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},Z.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[Z.inherit(Z.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},Z.UNDERSCORE_TITLE_MODE]},L,y]}}l4.exports=AQ});var o4=M0((Yq,r4)=>{function CQ(Z){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},Z.inherit(Z.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}r4.exports=CQ});var s4=M0((Hq,t4)=>{function NQ(Z){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}t4.exports=NQ});var Z5=M0((Kq,e4)=>{function yQ(Z){let J=Z.regex,Q=/[\p{XID_Start}_]\p{XID_Continue}*/u,X=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],q={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:X,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},Y={className:"meta",begin:/^(>>>|\.\.\.) /},H={className:"subst",begin:/\{/,end:/\}/,keywords:q,illegal:/#/},F={begin:/\{\{/,relevance:0},K={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,Y],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,Y],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,Y,F,H]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,Y,F,H]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[Z.BACKSLASH_ESCAPE,F,H]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,F,H]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},P="[0-9](_?[0-9])*",A="(\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.",L=`\\b|${X.join("|")}`,y={className:"number",relevance:0,variants:[{begin:`(\\b([0-9](_?[0-9])*)|((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.))[eE][+-]?([0-9](_?[0-9])*)[jJ]?(?=${L})`},{begin:"((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.)[jJ]?"},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${L})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${L})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${L})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${L})`},{begin:`\\b([0-9](_?[0-9])*)[jJ](?=${L})`}]},V={className:"comment",begin:J.lookahead(/# type:/),end:/$/,keywords:q,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},S={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:["self",Y,y,K,Z.HASH_COMMENT_MODE]}]};return H.contains=[K,y,Y],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:q,illegal:/(<\/|\?)|=>/,contains:[Y,y,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},K,V,Z.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,Q],scope:{1:"keyword",3:"title.function"},contains:[S]},{variants:[{match:[/\bclass/,/\s+/,Q,/\s*/,/\(\s*/,Q,/\s*\)/]},{match:[/\bclass/,/\s+/,Q]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[y,S,K]}]}}e4.exports=yQ});var $5=M0((Fq,J5)=>{function MQ(Z){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}J5.exports=MQ});var X5=M0((Uq,Q5)=>{function _Q(Z){let J=Z.regex,Q=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,X=J.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),z=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,G=J.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:Q,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[Z.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:J.lookahead(J.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:Q},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),Z.HASH_COMMENT_MODE,{scope:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[z,X]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,X]},{scope:{1:"punctuation",2:"number"},match:[G,X]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,X]}]},{scope:{3:"operator"},match:[Q,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:z},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:G},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}Q5.exports=_Q});var W5=M0((Lq,z5)=>{function vQ(Z){let J=Z.regex,Q=/(r#)?/,X=J.concat(Q,Z.UNDERSCORE_IDENT_RE),z=J.concat(Q,Z.IDENT_RE),G={className:"title.function.invoke",relevance:0,begin:J.concat(/\b/,/(?!let|for|while|if|else|match\b)/,z,J.lookahead(/\s*\(/))},W="([ui](8|16|32|64|128|size)|f(32|64))?",q=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],Y=["true","false","Some","None","Ok","Err"],H=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],F=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:Z.IDENT_RE+"!?",type:F,keyword:q,literal:Y,built_in:H},illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.COMMENT("/\\*","\\*/",{contains:["self"]}),Z.inherit(Z.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?"}],relevance:0},{begin:[/fn/,/\s+/,X],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,X],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,X,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:Z.IDENT_RE+"::",keywords:{keyword:"Self",built_in:H,type:F}},{className:"punctuation",begin:"->"},G]}}z5.exports=vQ});var q5=M0((Bq,G5)=>{var kQ=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},TQ=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],RQ=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],IQ=[...TQ,...RQ],SQ=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),VQ=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),fQ=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),bQ=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function gQ(Z){let J=kQ(Z),Q=fQ,X=VQ,z="@[a-z-]+",G="and or not only",W="[a-zA-Z-][a-zA-Z0-9_-]*",q={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,J.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+IQ.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+X.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+Q.join("|")+")"},q,{begin:/\(/,end:/\)/,contains:[J.CSS_NUMBER_MODE]},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+bQ.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[J.BLOCK_COMMENT,q,J.HEXCOLOR,J.CSS_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.IMPORTANT,J.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:"@[a-z-]+",keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:SQ.join(" ")},contains:[{begin:"@[a-z-]+",className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},q,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.HEXCOLOR,J.CSS_NUMBER_MODE]},J.FUNCTION_DISPATCH]}}G5.exports=gQ});var H5=M0((Pq,Y5)=>{function jQ(Z){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}Y5.exports=jQ});var F5=M0((Oq,K5)=>{function xQ(Z){let J=Z.regex,Q=Z.COMMENT("--","$"),X={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},z={begin:/"/,end:/"/,contains:[{match:/""/}]},G=["true","false","unknown"],W=["double precision","large object","with timezone","without timezone"],q=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],Y=["add","asc","collation","desc","final","first","last","view"],H=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],F=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],K=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],P=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],A=F,L=[...H,...Y].filter((v)=>{return!F.includes(v)}),y={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},V={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},S={match:J.concat(/\b/,J.either(...A),/\s*\(/),relevance:0,keywords:{built_in:A}};function M(v){return J.concat(/\b/,J.either(...v.map((O)=>{return O.replace(/\s+/,"\\s+")})),/\b/)}let N={scope:"keyword",match:M(P),relevance:0};function k(v,{exceptions:O,when:U}={}){let B=U;return O=O||[],v.map((C)=>{if(C.match(/\|\d+$/)||O.includes(C))return C;else if(B(C))return`${C}|0`;else return C})}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:k(L,{when:(v)=>v.length<3}),literal:G,type:q,built_in:K},contains:[{scope:"type",match:M(W)},N,S,y,X,z,Z.C_NUMBER_MODE,Z.C_BLOCK_COMMENT_MODE,Q,V]}}K5.exports=xQ});var N5=M0((wq,C5)=>{function P5(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function TZ(Z){return V0("(?=",Z,")")}function V0(...Z){return Z.map((Q)=>P5(Q)).join("")}function DQ(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function s0(...Z){return"("+(DQ(Z).capture?"":"?:")+Z.map((X)=>P5(X)).join("|")+")"}var v1=(Z)=>V0(/\b/,Z,/\w$/.test(Z)?/\b/:/\B/),hQ=["Protocol","Type"].map(v1),U5=["init","self"].map(v1),mQ=["Any","Self"],M1=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],L5=["false","nil","true"],uQ=["assignment","associativity","higherThan","left","lowerThan","none","right"],EQ=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],B5=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],O5=s0(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),w5=s0(O5,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),_1=V0(O5,w5,"*"),A5=s0(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),w8=s0(A5,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),B9=V0(A5,w8,"*"),O8=V0(/[A-Z]/,w8,"*"),pQ=["attached","autoclosure",V0(/convention\(/,s0("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",V0(/objc\(/,B9,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],cQ=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function dQ(Z){let J={match:/\s+/,relevance:0},Q=Z.COMMENT("/\\*","\\*/",{contains:["self"]}),X=[Z.C_LINE_COMMENT_MODE,Q],z={match:[/\./,s0(...hQ,...U5)],className:{2:"keyword"}},G={match:V0(/\./,s0(...M1)),relevance:0},W=M1.filter((d)=>typeof d==="string").concat(["_|0"]),q=M1.filter((d)=>typeof d!=="string").concat(mQ).map(v1),Y={variants:[{className:"keyword",match:s0(...q,...U5)}]},H={$pattern:s0(/\b\w+/,/#\w+/),keyword:W.concat(EQ),literal:L5},F=[z,G,Y],K={match:V0(/\./,s0(...B5)),relevance:0},P={className:"built_in",match:V0(/\b/,s0(...B5),/(?=\()/)},A=[K,P],L={match:/->/,relevance:0},y={className:"operator",relevance:0,variants:[{match:_1},{match:`\\.(\\.|${w5})+`}]},V=[L,y],S="([0-9]_*)+",M="([0-9a-fA-F]_*)+",N={className:"number",relevance:0,variants:[{match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{match:"\\b0x(([0-9a-fA-F]_*)+)(\\.(([0-9a-fA-F]_*)+))?([pP][+-]?(([0-9]_*)+))?\\b"},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},k=(d="")=>({className:"subst",variants:[{match:V0(/\\/,d,/[0\\tnr"']/)},{match:V0(/\\/,d,/u\{[0-9a-fA-F]{1,8}\}/)}]}),v=(d="")=>({className:"subst",match:V0(/\\/,d,/[\t ]*(?:[\r\n]|\r\n)/)}),O=(d="")=>({className:"subst",label:"interpol",begin:V0(/\\/,d,/\(/),end:/\)/}),U=(d="")=>({begin:V0(d,/"""/),end:V0(/"""/,d),contains:[k(d),v(d),O(d)]}),B=(d="")=>({begin:V0(d,/"/),end:V0(/"/,d),contains:[k(d),O(d)]}),C={className:"string",variants:[U(),U("#"),U("##"),U("###"),B(),B("#"),B("##"),B("###")]},_=[Z.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[Z.BACKSLASH_ESCAPE]}],T={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:_},u=(d)=>{let P0=V0(d,/\//),s=V0(/\//,d);return{begin:P0,end:s,contains:[..._,{scope:"comment",begin:`#(?!.*${s})`,end:/$/}]}},E={scope:"regexp",variants:[u("###"),u("##"),u("#"),T]},t={match:V0(/`/,B9,/`/)},$0={className:"variable",match:/\$\d+/},g={className:"variable",match:`\\$${w8}+`},I=[t,$0,g],h={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:cQ,contains:[...V,N,C]}]}},m={scope:"keyword",match:V0(/@/,s0(...pQ),TZ(s0(/\(/,/\s+/)))},z0={scope:"meta",match:V0(/@/,B9)},X0=[h,m,z0],Y0={match:TZ(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:V0(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,w8,"+")},{className:"type",match:O8,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:V0(/\s+&\s+/,TZ(O8)),relevance:0}]},p={begin:/</,end:/>/,keywords:H,contains:[...X,...F,...X0,L,Y0]};Y0.contains.push(p);let Q0={match:V0(B9,/\s*:/),keywords:"_|0",relevance:0},j0={begin:/\(/,end:/\)/,relevance:0,keywords:H,contains:["self",Q0,...X,E,...F,...A,...V,N,C,...I,...X0,Y0]},r0={begin:/</,end:/>/,keywords:"repeat each",contains:[...X,Y0]},a0={begin:s0(TZ(V0(B9,/\s*:/)),TZ(V0(B9,/\s+/,B9,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:B9}]},O0={begin:/\(/,end:/\)/,keywords:H,contains:[a0,...X,...F,...V,N,C,...X0,Y0,j0],endsParent:!0,illegal:/["']/},h0={match:[/(func|macro)/,/\s+/,s0(t.match,B9,_1)],className:{1:"keyword",3:"title.function"},contains:[r0,O0,J],illegal:[/\[/,/%/]},G0={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[r0,O0,J],illegal:/\[|%/},b={match:[/operator/,/\s+/,_1],className:{1:"keyword",3:"title"}},x={begin:[/precedencegroup/,/\s+/,O8],className:{1:"keyword",3:"title"},contains:[Y0],keywords:[...uQ,...L5],end:/}/},r={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},l={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},F0={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,B9,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:H,contains:[r0,...F,{begin:/:/,end:/\{/,keywords:H,contains:[{scope:"title.class.inherited",match:O8},...F],relevance:0}]};for(let d of C.variants){let P0=d.contains.find((k0)=>k0.label==="interpol");P0.keywords=H;let s=[...F,...A,...V,N,C,...I];P0.contains=[...s,{begin:/\(/,end:/\)/,contains:["self",...s]}]}return{name:"Swift",keywords:H,contains:[...X,h0,G0,r,l,F0,b,x,{beginKeywords:"import",end:/$/,contains:[...X],relevance:0},E,...F,...A,...V,N,C,...I,...X0,Y0,j0]}}C5.exports=dQ});var M5=M0((Aq,y5)=>{function iQ(Z){let X={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},z={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},G={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},W={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[Z.BACKSLASH_ESCAPE,z]},q=Z.inherit(W,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),Y="[0-9]{4}(-[0-9][0-9]){0,2}",H="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",F="(\\.[0-9]*)?",K="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",P={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},A={end:",",endsWithParent:!0,excludeEnd:!0,keywords:"true false yes no null",relevance:0},L={begin:/\{/,end:/\}/,contains:[A],illegal:"\\n",relevance:0},y={begin:"\\[",end:"\\]",contains:[A],illegal:"\\n",relevance:0},V=[X,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!<[\\w#;/?:@&=+$,.~*'()[\\]]+>"},{className:"type",begin:"![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"meta",begin:"&"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},Z.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},P,{className:"number",begin:Z.C_NUMBER_RE+"\\b",relevance:0},L,y,G,W],S=[...V];return S.pop(),S.push(q),A.contains=S,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:V}}y5.exports=iQ});var f5=M0((Cq,V5)=>{var _5=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],v5=["true","false","null","undefined","NaN","Infinity"],k5=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],T5=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],R5=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],I5=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],S5=[].concat(R5,k5,T5);function aQ(Z){let J=Z.regex,Q=(h,{after:m})=>{let z0="</"+h[0].slice(1);return h.input.indexOf(z0,m)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},G=/<[A-Za-z0-9\\._:-]+\s*\/>/,W={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(h,m)=>{let z0=h[0].length+h.index,X0=h.input[z0];if(X0==="<"||X0===","){m.ignoreMatch();return}if(X0===">"){if(!Q(h,{after:z0}))m.ignoreMatch()}let Y0,p=h.input.substring(z0);if(Y0=p.match(/^\s*=/)){m.ignoreMatch();return}if(Y0=p.match(/^\s+extends\s+/)){if(Y0.index===0){m.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:_5,literal:v5,built_in:S5,"variable.language":I5},Y="[0-9](_?[0-9])*",H="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},P={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},A={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,P],subLanguage:"xml"}},L={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,P],subLanguage:"css"}},y={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,P],subLanguage:"graphql"}},V={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,P]},M={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},N=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,A,L,y,V,{match:/\$\d+/},K];P.contains=N.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(N)});let k=[].concat(M,P.contains),v=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(k)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:v},U={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},B={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...k5,...T5]}},C={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},_={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[O],illegal:/%/},T={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function u(h){return J.concat("(?!",h.join("|"),")")}let E={match:J.concat(/\b/,u([...R5,"super","import"].map((h)=>`${h}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},t={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},$0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},O]},g="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",I={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(g)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:v,CLASS_REFERENCE:B},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),C,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,A,L,y,V,M,{match:/\$\d+/},K,B,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},I,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[M,Z.REGEXP_MODE,{className:"function",begin:g,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:v}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:G},{begin:W.begin,"on:begin":W.isTrulyOpeningTag,end:W.end}],subLanguage:"xml",contains:[{begin:W.begin,end:W.end,skip:!0,contains:["self"]}]}]},_,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[O,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},t,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},E,T,U,$0,{match:/\$[(.]/}]}}function lQ(Z){let J=Z.regex,Q=aQ(Z),X="[A-Za-z$_][0-9A-Za-z$_]*",z=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],G={begin:[/namespace/,/\s+/,Z.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},W={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:z},contains:[Q.exports.CLASS_REFERENCE]},q={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},Y=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],H={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:_5.concat(Y),literal:v5,built_in:S5.concat(z),"variable.language":I5},F={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},K=(y,V,S)=>{let M=y.contains.findIndex((N)=>N.label===V);if(M===-1)throw Error("can not find mode to replace");y.contains.splice(M,1,S)};Object.assign(Q.keywords,H),Q.exports.PARAMS_CONTAINS.push(F);let P=Q.contains.find((y)=>y.scope==="attr"),A=Object.assign({},P,{match:J.concat("[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\?:/))});Q.exports.PARAMS_CONTAINS.push([Q.exports.CLASS_REFERENCE,P,A]),Q.contains=Q.contains.concat([F,G,W,A]),K(Q,"shebang",Z.SHEBANG()),K(Q,"use_strict",q);let L=Q.contains.find((y)=>y.label==="func.def");return L.relevance=0,Object.assign(Q,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),Q}V5.exports=lQ});var g5=M0((Nq,b5)=>{function nQ(Z){let J=Z.regex,Q={className:"string",begin:/"(""|[^/n])"C\b/},X={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},z=/\d{1,2}\/\d{1,2}\/\d{4}/,G=/\d{4}-\d{1,2}-\d{1,2}/,W=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,q=/\d{1,2}(:\d{1,2}){1,2}/,Y={className:"literal",variants:[{begin:J.concat(/# */,J.either(G,z),/ *#/)},{begin:J.concat(/# */,q,/ *#/)},{begin:J.concat(/# */,W,/ *#/)},{begin:J.concat(/# */,J.either(G,z),/ +/,J.either(W,q),/ *#/)}]},H={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},F={className:"label",begin:/^\w+:/},K=Z.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),P=Z.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[Q,X,Y,H,F,K,P,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[P]}]}}b5.exports=nQ});var x5=M0((yq,j5)=>{function rQ(Z){Z.regex;let J=Z.COMMENT(/\(;/,/;\)/);J.contains.push("self");let Q=Z.COMMENT(/;;/,/$/),X=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],z={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},G={className:"variable",begin:/\$[\w_]+/},W={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},q={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},Y={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},H={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:X},contains:[Q,J,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},G,W,z,Z.QUOTE_STRING_MODE,Y,H,q]}}j5.exports=rQ});var h5=M0((Mq,D5)=>{var C0=tJ();C0.registerLanguage("xml",eJ());C0.registerLanguage("bash",J4());C0.registerLanguage("c",Q4());C0.registerLanguage("cpp",z4());C0.registerLanguage("csharp",G4());C0.registerLanguage("css",Y4());C0.registerLanguage("markdown",K4());C0.registerLanguage("diff",U4());C0.registerLanguage("ruby",B4());C0.registerLanguage("go",O4());C0.registerLanguage("graphql",A4());C0.registerLanguage("ini",N4());C0.registerLanguage("java",v4());C0.registerLanguage("javascript",S4());C0.registerLanguage("json",f4());C0.registerLanguage("kotlin",g4());C0.registerLanguage("less",h4());C0.registerLanguage("lua",u4());C0.registerLanguage("makefile",p4());C0.registerLanguage("perl",d4());C0.registerLanguage("objectivec",a4());C0.registerLanguage("php",n4());C0.registerLanguage("php-template",o4());C0.registerLanguage("plaintext",s4());C0.registerLanguage("python",Z5());C0.registerLanguage("python-repl",$5());C0.registerLanguage("r",X5());C0.registerLanguage("rust",W5());C0.registerLanguage("scss",q5());C0.registerLanguage("shell",H5());C0.registerLanguage("sql",F5());C0.registerLanguage("swift",N5());C0.registerLanguage("yaml",M5());C0.registerLanguage("typescript",f5());C0.registerLanguage("vbnet",g5());C0.registerLanguage("wasm",x5());C0.HighlightJS=C0;C0.default=C0;D5.exports=C0});var tZ,S0,O6,k3,v9,U6,w6,A6,g8,iZ,LZ,C6,h8,j8,x8,T3,nZ={},rZ=[],R3=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,sZ=Array.isArray;function O9(Z,J){for(var Q in J)Z[Q]=J[Q];return Z}function m8(Z){Z&&Z.parentNode&&Z.parentNode.removeChild(Z)}function I3(Z,J,Q){var X,z,G,W={};for(G in J)G=="key"?X=J[G]:G=="ref"?z=J[G]:W[G]=J[G];if(arguments.length>2&&(W.children=arguments.length>3?tZ.call(arguments,2):Q),typeof Z=="function"&&Z.defaultProps!=null)for(G in Z.defaultProps)W[G]===void 0&&(W[G]=Z.defaultProps[G]);return aZ(Z,W,X,z,null)}function aZ(Z,J,Q,X,z){var G={type:Z,props:J,key:Q,ref:X,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:z==null?++O6:z,__i:-1,__u:0};return z==null&&S0.vnode!=null&&S0.vnode(G),G}function n(Z){return Z.children}function lZ(Z,J){this.props=Z,this.context=J}function r9(Z,J){if(J==null)return Z.__?r9(Z.__,Z.__i+1):null;for(var Q;J<Z.__k.length;J++)if((Q=Z.__k[J])!=null&&Q.__e!=null)return Q.__e;return typeof Z.type=="function"?r9(Z):null}function S3(Z){if(Z.__P&&Z.__d){var J=Z.__v,Q=J.__e,X=[],z=[],G=O9({},J);G.__v=J.__v+1,S0.vnode&&S0.vnode(G),u8(Z.__P,G,J,Z.__n,Z.__P.namespaceURI,32&J.__u?[Q]:null,X,Q==null?r9(J):Q,!!(32&J.__u),z),G.__v=J.__v,G.__.__k[G.__i]=G,_6(X,G,z),J.__e=J.__=null,G.__e!=Q&&N6(G)}}function N6(Z){if((Z=Z.__)!=null&&Z.__c!=null)return Z.__e=Z.__c.base=null,Z.__k.some(function(J){if(J!=null&&J.__e!=null)return Z.__e=Z.__c.base=J.__e}),N6(Z)}function L6(Z){(!Z.__d&&(Z.__d=!0)&&v9.push(Z)&&!oZ.__r++||U6!=S0.debounceRendering)&&((U6=S0.debounceRendering)||w6)(oZ)}function oZ(){try{for(var Z,J=1;v9.length;)v9.length>J&&v9.sort(A6),Z=v9.shift(),J=v9.length,S3(Z)}finally{v9.length=oZ.__r=0}}function y6(Z,J,Q,X,z,G,W,q,Y,H,F){var K,P,A,L,y,V,S,M=X&&X.__k||rZ,N=J.length;for(Y=V3(Q,J,M,Y,N),K=0;K<N;K++)(A=Q.__k[K])!=null&&(P=A.__i!=-1&&M[A.__i]||nZ,A.__i=K,V=u8(Z,A,P,z,G,W,q,Y,H,F),L=A.__e,A.ref&&P.ref!=A.ref&&(P.ref&&E8(P.ref,null,A),F.push(A.ref,A.__c||L,A)),y==null&&L!=null&&(y=L),(S=!!(4&A.__u))||P.__k===A.__k?(Y=M6(A,Y,Z,S),S&&P.__e&&(P.__e=null)):typeof A.type=="function"&&V!==void 0?Y=V:L&&(Y=L.nextSibling),A.__u&=-7);return Q.__e=y,Y}function V3(Z,J,Q,X,z){var G,W,q,Y,H,F=Q.length,K=F,P=0;for(Z.__k=Array(z),G=0;G<z;G++)(W=J[G])!=null&&typeof W!="boolean"&&typeof W!="function"?(typeof W=="string"||typeof W=="number"||typeof W=="bigint"||W.constructor==String?W=Z.__k[G]=aZ(null,W,null,null,null):sZ(W)?W=Z.__k[G]=aZ(n,{children:W},null,null,null):W.constructor===void 0&&W.__b>0?W=Z.__k[G]=aZ(W.type,W.props,W.key,W.ref?W.ref:null,W.__v):Z.__k[G]=W,Y=G+P,W.__=Z,W.__b=Z.__b+1,q=null,(H=W.__i=f3(W,Q,Y,K))!=-1&&(K--,(q=Q[H])&&(q.__u|=2)),q==null||q.__v==null?(H==-1&&(z>F?P--:z<F&&P++),typeof W.type!="function"&&(W.__u|=4)):H!=Y&&(H==Y-1?P--:H==Y+1?P++:(H>Y?P--:P++,W.__u|=4))):Z.__k[G]=null;if(K)for(G=0;G<F;G++)(q=Q[G])!=null&&(2&q.__u)==0&&(q.__e==X&&(X=r9(q)),k6(q,q));return X}function M6(Z,J,Q,X){var z,G;if(typeof Z.type=="function"){for(z=Z.__k,G=0;z&&G<z.length;G++)z[G]&&(z[G].__=Z,J=M6(z[G],J,Q,X));return J}Z.__e!=J&&(X&&(J&&Z.type&&!J.parentNode&&(J=r9(Z)),Q.insertBefore(Z.__e,J||null)),J=Z.__e);do J=J&&J.nextSibling;while(J!=null&&J.nodeType==8);return J}function f3(Z,J,Q,X){var z,G,W,q=Z.key,Y=Z.type,H=J[Q],F=H!=null&&(2&H.__u)==0;if(H===null&&q==null||F&&q==H.key&&Y==H.type)return Q;if(X>(F?1:0)){for(z=Q-1,G=Q+1;z>=0||G<J.length;)if((H=J[W=z>=0?z--:G++])!=null&&(2&H.__u)==0&&q==H.key&&Y==H.type)return W}return-1}function B6(Z,J,Q){J[0]=="-"?Z.setProperty(J,Q==null?"":Q):Z[J]=Q==null?"":typeof Q!="number"||R3.test(J)?Q:Q+"px"}function dZ(Z,J,Q,X,z){var G,W;Z:if(J=="style")if(typeof Q=="string")Z.style.cssText=Q;else{if(typeof X=="string"&&(Z.style.cssText=X=""),X)for(J in X)Q&&J in Q||B6(Z.style,J,"");if(Q)for(J in Q)X&&Q[J]==X[J]||B6(Z.style,J,Q[J])}else if(J[0]=="o"&&J[1]=="n")G=J!=(J=J.replace(C6,"$1")),W=J.toLowerCase(),J=W in Z||J=="onFocusOut"||J=="onFocusIn"?W.slice(2):J.slice(2),Z.l||(Z.l={}),Z.l[J+G]=Q,Q?X?Q[LZ]=X[LZ]:(Q[LZ]=h8,Z.addEventListener(J,G?x8:j8,G)):Z.removeEventListener(J,G?x8:j8,G);else{if(z=="http://www.w3.org/2000/svg")J=J.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(J!="width"&&J!="height"&&J!="href"&&J!="list"&&J!="form"&&J!="tabIndex"&&J!="download"&&J!="rowSpan"&&J!="colSpan"&&J!="role"&&J!="popover"&&J in Z)try{Z[J]=Q==null?"":Q;break Z}catch(q){}typeof Q=="function"||(Q==null||Q===!1&&J[4]!="-"?Z.removeAttribute(J):Z.setAttribute(J,J=="popover"&&Q==1?"":Q))}}function P6(Z){return function(J){if(this.l){var Q=this.l[J.type+Z];if(J[iZ]==null)J[iZ]=h8++;else if(J[iZ]<Q[LZ])return;return Q(S0.event?S0.event(J):J)}}}function u8(Z,J,Q,X,z,G,W,q,Y,H){var F,K,P,A,L,y,V,S,M,N,k,v,O,U,B,C=J.type;if(J.constructor!==void 0)return null;128&Q.__u&&(Y=!!(32&Q.__u),G=[q=J.__e=Q.__e]),(F=S0.__b)&&F(J);Z:if(typeof C=="function")try{if(S=J.props,M=C.prototype&&C.prototype.render,N=(F=C.contextType)&&X[F.__c],k=F?N?N.props.value:F.__:X,Q.__c?V=(K=J.__c=Q.__c).__=K.__E:(M?J.__c=K=new C(S,k):(J.__c=K=new lZ(S,k),K.constructor=C,K.render=g3),N&&N.sub(K),K.state||(K.state={}),K.__n=X,P=K.__d=!0,K.__h=[],K._sb=[]),M&&K.__s==null&&(K.__s=K.state),M&&C.getDerivedStateFromProps!=null&&(K.__s==K.state&&(K.__s=O9({},K.__s)),O9(K.__s,C.getDerivedStateFromProps(S,K.__s))),A=K.props,L=K.state,K.__v=J,P)M&&C.getDerivedStateFromProps==null&&K.componentWillMount!=null&&K.componentWillMount(),M&&K.componentDidMount!=null&&K.__h.push(K.componentDidMount);else{if(M&&C.getDerivedStateFromProps==null&&S!==A&&K.componentWillReceiveProps!=null&&K.componentWillReceiveProps(S,k),J.__v==Q.__v||!K.__e&&K.shouldComponentUpdate!=null&&K.shouldComponentUpdate(S,K.__s,k)===!1){J.__v!=Q.__v&&(K.props=S,K.state=K.__s,K.__d=!1),J.__e=Q.__e,J.__k=Q.__k,J.__k.some(function(_){_&&(_.__=J)}),rZ.push.apply(K.__h,K._sb),K._sb=[],K.__h.length&&W.push(K);break Z}K.componentWillUpdate!=null&&K.componentWillUpdate(S,K.__s,k),M&&K.componentDidUpdate!=null&&K.__h.push(function(){K.componentDidUpdate(A,L,y)})}if(K.context=k,K.props=S,K.__P=Z,K.__e=!1,v=S0.__r,O=0,M)K.state=K.__s,K.__d=!1,v&&v(J),F=K.render(K.props,K.state,K.context),rZ.push.apply(K.__h,K._sb),K._sb=[];else do K.__d=!1,v&&v(J),F=K.render(K.props,K.state,K.context),K.state=K.__s;while(K.__d&&++O<25);K.state=K.__s,K.getChildContext!=null&&(X=O9(O9({},X),K.getChildContext())),M&&!P&&K.getSnapshotBeforeUpdate!=null&&(y=K.getSnapshotBeforeUpdate(A,L)),U=F!=null&&F.type===n&&F.key==null?v6(F.props.children):F,q=y6(Z,sZ(U)?U:[U],J,Q,X,z,G,W,q,Y,H),K.base=J.__e,J.__u&=-161,K.__h.length&&W.push(K),V&&(K.__E=K.__=null)}catch(_){if(J.__v=null,Y||G!=null)if(_.then){for(J.__u|=Y?160:128;q&&q.nodeType==8&&q.nextSibling;)q=q.nextSibling;G[G.indexOf(q)]=null,J.__e=q}else{for(B=G.length;B--;)m8(G[B]);D8(J)}else J.__e=Q.__e,J.__k=Q.__k,_.then||D8(J);S0.__e(_,J,Q)}else G==null&&J.__v==Q.__v?(J.__k=Q.__k,J.__e=Q.__e):q=J.__e=b3(Q.__e,J,Q,X,z,G,W,Y,H);return(F=S0.diffed)&&F(J),128&J.__u?void 0:q}function D8(Z){Z&&(Z.__c&&(Z.__c.__e=!0),Z.__k&&Z.__k.some(D8))}function _6(Z,J,Q){for(var X=0;X<Q.length;X++)E8(Q[X],Q[++X],Q[++X]);S0.__c&&S0.__c(J,Z),Z.some(function(z){try{Z=z.__h,z.__h=[],Z.some(function(G){G.call(z)})}catch(G){S0.__e(G,z.__v)}})}function v6(Z){return typeof Z!="object"||Z==null||Z.__b>0?Z:sZ(Z)?Z.map(v6):Z.constructor!==void 0?null:O9({},Z)}function b3(Z,J,Q,X,z,G,W,q,Y){var H,F,K,P,A,L,y,V=Q.props||nZ,S=J.props,M=J.type;if(M=="svg"?z="http://www.w3.org/2000/svg":M=="math"?z="http://www.w3.org/1998/Math/MathML":z||(z="http://www.w3.org/1999/xhtml"),G!=null){for(H=0;H<G.length;H++)if((A=G[H])&&"setAttribute"in A==!!M&&(M?A.localName==M:A.nodeType==3)){Z=A,G[H]=null;break}}if(Z==null){if(M==null)return document.createTextNode(S);Z=document.createElementNS(z,M,S.is&&S),q&&(S0.__m&&S0.__m(J,G),q=!1),G=null}if(M==null)V===S||q&&Z.data==S||(Z.data=S);else{if(G=M=="textarea"&&S.defaultValue!=null?null:G&&tZ.call(Z.childNodes),!q&&G!=null)for(V={},H=0;H<Z.attributes.length;H++)V[(A=Z.attributes[H]).name]=A.value;for(H in V)A=V[H],H=="dangerouslySetInnerHTML"?K=A:H=="children"||(H in S)||H=="value"&&("defaultValue"in S)||H=="checked"&&("defaultChecked"in S)||dZ(Z,H,null,A,z);for(H in S)A=S[H],H=="children"?P=A:H=="dangerouslySetInnerHTML"?F=A:H=="value"?L=A:H=="checked"?y=A:q&&typeof A!="function"||V[H]===A||dZ(Z,H,A,V[H],z);if(F)q||K&&(F.__html==K.__html||F.__html==Z.innerHTML)||(Z.innerHTML=F.__html),J.__k=[];else if(K&&(Z.innerHTML=""),y6(J.type=="template"?Z.content:Z,sZ(P)?P:[P],J,Q,X,M=="foreignObject"?"http://www.w3.org/1999/xhtml":z,G,W,G?G[0]:Q.__k&&r9(Q,0),q,Y),G!=null)for(H=G.length;H--;)m8(G[H]);q&&M!="textarea"||(H="value",M=="progress"&&L==null?Z.removeAttribute("value"):L!=null&&(L!==Z[H]||M=="progress"&&!L||M=="option"&&L!=V[H])&&dZ(Z,H,L,V[H],z),H="checked",y!=null&&y!=Z[H]&&dZ(Z,H,y,V[H],z))}return Z}function E8(Z,J,Q){try{if(typeof Z=="function"){var X=typeof Z.__u=="function";X&&Z.__u(),X&&J==null||(Z.__u=Z(J))}else Z.current=J}catch(z){S0.__e(z,Q)}}function k6(Z,J,Q){var X,z;if(S0.unmount&&S0.unmount(Z),(X=Z.ref)&&(X.current&&X.current!=Z.__e||E8(X,null,J)),(X=Z.__c)!=null){if(X.componentWillUnmount)try{X.componentWillUnmount()}catch(G){S0.__e(G,J)}X.base=X.__P=null}if(X=Z.__k)for(z=0;z<X.length;z++)X[z]&&k6(X[z],J,Q||typeof Z.type!="function");Q||m8(Z.__e),Z.__c=Z.__=Z.__e=void 0}function g3(Z,J,Q){return this.constructor(Z,Q)}function p8(Z,J,Q){var X,z,G,W;J==document&&(J=document.documentElement),S0.__&&S0.__(Z,J),z=(X=typeof Q=="function")?null:Q&&Q.__k||J.__k,G=[],W=[],u8(J,Z=(!X&&Q||J).__k=I3(n,null,[Z]),z||nZ,nZ,J.namespaceURI,!X&&Q?[Q]:z?null:J.firstChild?tZ.call(J.childNodes):null,G,!X&&Q?Q:z?z.__e:J.firstChild,X,W),_6(G,Z,W)}tZ=rZ.slice,S0={__e:function(Z,J,Q,X){for(var z,G,W;J=J.__;)if((z=J.__c)&&!z.__)try{if((G=z.constructor)&&G.getDerivedStateFromError!=null&&(z.setState(G.getDerivedStateFromError(Z)),W=z.__d),z.componentDidCatch!=null&&(z.componentDidCatch(Z,X||{}),W=z.__d),W)return z.__E=z}catch(q){Z=q}throw Z}},O6=0,k3=function(Z){return Z!=null&&Z.constructor===void 0},lZ.prototype.setState=function(Z,J){var Q;Q=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=O9({},this.state),typeof Z=="function"&&(Z=Z(O9({},Q),this.props)),Z&&O9(Q,Z),Z!=null&&this.__v&&(J&&this._sb.push(J),L6(this))},lZ.prototype.forceUpdate=function(Z){this.__v&&(this.__e=!0,Z&&this.__h.push(Z),L6(this))},lZ.prototype.render=n,v9=[],w6=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,A6=function(Z,J){return Z.__v.__b-J.__v.__b},oZ.__r=0,g8=Math.random().toString(8),iZ="__d"+g8,LZ="__a"+g8,C6=/(PointerCapture)$|Capture$/i,h8=0,j8=P6(!1),x8=P6(!0),T3=0;var o9,m0,c8,T6,BZ=0,j6=[],E0=S0,R6=E0.__b,I6=E0.__r,S6=E0.diffed,V6=E0.__c,f6=E0.unmount,b6=E0.__;function Z8(Z,J){E0.__h&&E0.__h(m0,Z,BZ||J),BZ=0;var Q=m0.__H||(m0.__H={__:[],__h:[]});return Z>=Q.__.length&&Q.__.push({}),Q.__[Z]}function f(Z){return BZ=1,j3(D6,Z)}function j3(Z,J,Q){var X=Z8(o9++,2);if(X.t=Z,!X.__c&&(X.__=[Q?Q(J):D6(void 0,J),function(q){var Y=X.__N?X.__N[0]:X.__[0],H=X.t(Y,q);Y!==H&&(X.__N=[H,X.__[1]],X.__c.setState({}))}],X.__c=m0,!m0.__f)){var z=function(q,Y,H){if(!X.__c.__H)return!0;var F=X.__c.__H.__.filter(function(P){return P.__c});if(F.every(function(P){return!P.__N}))return!G||G.call(this,q,Y,H);var K=X.__c.props!==q;return F.some(function(P){if(P.__N){var A=P.__[0];P.__=P.__N,P.__N=void 0,A!==P.__[0]&&(K=!0)}}),G&&G.call(this,q,Y,H)||K};m0.__f=!0;var{shouldComponentUpdate:G,componentWillUpdate:W}=m0;m0.componentWillUpdate=function(q,Y,H){if(this.__e){var F=G;G=void 0,z(q,Y,H),G=F}W&&W.call(this,q,Y,H)},m0.shouldComponentUpdate=z}return X.__N||X.__}function e(Z,J){var Q=Z8(o9++,3);!E0.__s&&i8(Q.__H,J)&&(Q.__=Z,Q.u=J,m0.__H.__h.push(Q))}function x6(Z,J){var Q=Z8(o9++,4);!E0.__s&&i8(Q.__H,J)&&(Q.__=Z,Q.u=J,m0.__h.push(Q))}function L0(Z){return BZ=5,PZ(function(){return{current:Z}},[])}function PZ(Z,J){var Q=Z8(o9++,7);return i8(Q.__H,J)&&(Q.__=Z(),Q.__H=J,Q.__h=Z),Q.__}function g9(Z,J){return BZ=8,PZ(function(){return Z},J)}function x3(){for(var Z;Z=j6.shift();){var J=Z.__H;if(Z.__P&&J)try{J.__h.some(eZ),J.__h.some(d8),J.__h=[]}catch(Q){J.__h=[],E0.__e(Q,Z.__v)}}}E0.__b=function(Z){m0=null,R6&&R6(Z)},E0.__=function(Z,J){Z&&J.__k&&J.__k.__m&&(Z.__m=J.__k.__m),b6&&b6(Z,J)},E0.__r=function(Z){I6&&I6(Z),o9=0;var J=(m0=Z.__c).__H;J&&(c8===m0?(J.__h=[],m0.__h=[],J.__.some(function(Q){Q.__N&&(Q.__=Q.__N),Q.u=Q.__N=void 0})):(J.__h.some(eZ),J.__h.some(d8),J.__h=[],o9=0)),c8=m0},E0.diffed=function(Z){S6&&S6(Z);var J=Z.__c;J&&J.__H&&(J.__H.__h.length&&(j6.push(J)!==1&&T6===E0.requestAnimationFrame||((T6=E0.requestAnimationFrame)||D3)(x3)),J.__H.__.some(function(Q){Q.u&&(Q.__H=Q.u),Q.u=void 0})),c8=m0=null},E0.__c=function(Z,J){J.some(function(Q){try{Q.__h.some(eZ),Q.__h=Q.__h.filter(function(X){return!X.__||d8(X)})}catch(X){J.some(function(z){z.__h&&(z.__h=[])}),J=[],E0.__e(X,Q.__v)}}),V6&&V6(Z,J)},E0.unmount=function(Z){f6&&f6(Z);var J,Q=Z.__c;Q&&Q.__H&&(Q.__H.__.some(function(X){try{eZ(X)}catch(z){J=z}}),Q.__H=void 0,J&&E0.__e(J,Q.__v))};var g6=typeof requestAnimationFrame=="function";function D3(Z){var J,Q=function(){clearTimeout(X),g6&&cancelAnimationFrame(J),setTimeout(Z)},X=setTimeout(Q,35);g6&&(J=requestAnimationFrame(Q))}function eZ(Z){var J=m0,Q=Z.__c;typeof Q=="function"&&(Z.__c=void 0,Q()),m0=J}function d8(Z){var J=m0;Z.__c=Z.__(),m0=J}function i8(Z,J){return!Z||Z.length!==J.length||J.some(function(Q,X){return Q!==Z[X]})}function D6(Z,J){return typeof J=="function"?J(Z):J}class j9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="BusError"}}class h6{ch=null;worker=null;started=!1;leader=!1;nextLocal=0;localPending=new Map;remotePending=new Map;listeners=new Set;start(){if(this.started)return;this.started=!0,this.ch=new BroadcastChannel("mh-replica-bus"),this.ch.onmessage=(J)=>this.onChannel(J.data);let Z=navigator.locks;if(Z)Z.request("mh-replica-leader",()=>{return this.becomeLeader(),new Promise(()=>{})}).catch(()=>{});else this.becomeLeader()}onEvent(Z){return this.listeners.add(Z),()=>this.listeners.delete(Z)}call(Z,...J){if(!this.started)this.start();if(this.leader)return this.workerCall(Z,J);return this.remoteCall(Z,J)}becomeLeader(){if(this.leader)return;this.leader=!0,this.spawnWorker();for(let[Z,J]of[...this.remotePending])this.remotePending.delete(Z),clearTimeout(J.timer),this.workerCall(J.op,J.args).then(J.resolve,J.reject)}spawnWorker(){if(this.worker)return;this.worker=new Worker("/db-worker.js",{type:"module"}),this.worker.onmessage=(Z)=>{let J=Z.data;if("id"in J){let Q=this.localPending.get(J.id);if(!Q)return;if(this.localPending.delete(J.id),J.ok)Q.resolve(J.result);else Q.reject(new j9(J.error.message,J.error.code));return}this.emit(J),this.ch?.postMessage({kind:"event",event:J})},this.worker.onerror=()=>{let Z={event:"status",status:{state:"error",paired:!1,node:null,error:"worker crashed"}};this.emit(Z),this.ch?.postMessage({kind:"event",event:Z})}}workerCall(Z,J){if(!this.worker)this.spawnWorker();let Q=++this.nextLocal;return new Promise((X,z)=>{this.localPending.set(Q,{resolve:X,reject:z}),this.worker.postMessage({id:Q,op:Z,args:J})})}remoteCall(Z,J){let Q=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;return new Promise((X,z)=>{let G=setTimeout(()=>{if(this.remotePending.delete(Q),this.leader){this.workerCall(Z,J).then(X,z);return}z(new j9("replica leader unavailable","network"))},1e4);this.remotePending.set(Q,{resolve:X,reject:z,timer:G,op:Z,args:J}),this.ch?.postMessage({kind:"req",id:Q,op:Z,args:J})})}onChannel(Z){if(Z.kind==="req"){if(!this.leader)return;this.workerCall(Z.op,Z.args).then((J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!0,result:J}),(J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!1,error:{message:J.message,code:J.code}}));return}if(Z.kind==="res"){let J=this.remotePending.get(Z.id);if(!J)return;if(this.remotePending.delete(Z.id),clearTimeout(J.timer),Z.ok)J.resolve(Z.result);else J.reject(new j9(Z.error?.message??"replica error",Z.error?.code));return}if(Z.kind==="event"&&!this.leader)this.emit(Z.event)}emit(Z){for(let J of this.listeners)J(Z)}stopWorker(){this.worker?.terminate(),this.worker=null,this.localPending.forEach((Z)=>Z.reject(new j9("replica stopped",void 0))),this.localPending.clear()}}function J8(){let Z=globalThis;return Z.__mhReplicaBus??=new h6}function h3(Z,J){if(Z===null)return"unknown";if(Z.status>=500)return"unknown";if(Z.ok)return J?.ok===!0?"server":"none";return"none"}async function m6(){let Z=null,J=null;try{Z=await fetch("/health",{cache:"no-store"}),J=Z.ok?await Z.json().catch(()=>null):null}catch{Z=null}return h3(Z,J)}var h9="mh-synced",wZ="mh_replica",OZ="mh_replica_hydrated",p6="mh_origin_mode";class A9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="ReplicaError"}}var C9=!1,w9={state:"booting",paired:!1,node:null},$8=new Set;function AZ(){return w9}function N9(Z){return $8.add(Z),()=>$8.delete(Z)}function a8(Z){try{return localStorage.getItem(Z)==="1"}catch{return!1}}function x9(Z,J){try{J?localStorage.setItem(Z,"1"):localStorage.removeItem(Z)}catch{}}function Q9(){return a8(wZ)}function o0(){return Q9()&&a8(OZ)&&C9&&w9.state!=="error"}var t9=(()=>{try{let Z=localStorage.getItem(p6);return Z==="server"||Z==="none"?Z:null}catch{return null}})();function q9(){return t9==="none"}function m3(){let Z=q9();return{dataHome:Z?"local":"server",hold:Z||Q9()?"replica":"window"}}async function l8(){if(t9)return t9;let Z=await m6();if(Z==="unknown")return"server";t9=Z;try{localStorage.setItem(p6,t9)}catch{}return t9}function u6(Z){if(Z.event==="status"){if(w9=Z.status,w9.lastSync?.ok&&!a8(OZ))x9(OZ,!0),navigator.storage?.persist?.().catch(()=>{});for(let J of $8)J(w9);return}if(Z.event==="synced"){if(document.dispatchEvent(new CustomEvent(h9,{detail:Z})),Z.datasets.some((J)=>J==="databases"||J==="documents"))document.dispatchEvent(new CustomEvent(Y9))}}function CZ(){if(C9||typeof Worker>"u")return;C9=!0;let Z=J8();Z.onEvent(u6),Z.start(),Z.call("status").then((J)=>u6({event:"status",status:J})).catch(()=>{}),u3(),window.addEventListener("online",D9),document.addEventListener("visibilitychange",D9)}function D0(Z,...J){if(!C9)return Promise.reject(new A9("replica not running",void 0));return J8().call(Z,...J).catch((Q)=>{throw Q instanceof j9?new A9(Q.message,Q.code):Q})}function D9(){if(C9)D0("sync").catch(()=>{})}function c6(){if(!C9)return Promise.reject(new A9("replica not running",void 0));return D0("sync")}function n8(Z=30000){if(w9.state==="ready")return Promise.resolve();return new Promise((J,Q)=>{let X=setTimeout(()=>{z(),Q(new A9("本地副本启动超时",void 0))},Z),z=N9((G)=>{if(G.state==="ready")clearTimeout(X),z(),J();else if(G.state==="error")clearTimeout(X),z(),Q(new A9(G.error??"本地副本启动失败",void 0))})})}async function d6(){if(CZ(),await n8(),!w9.paired){let Z=await s9("/api/pair/new",{method:"POST"});if(!Z.ok)throw new A9(`无法获取配对码: ${Z.status}`,void 0);let{code:J}=await Z.json();await D0("pair",J)}x9(wZ,!0),Q8(),D9()}async function i6(Z,J){CZ(),await n8();let Q=await D0("addStorageReplica",Z,J);return x9(wZ,!0),Q8(),D9(),Q}async function a6(){x9(wZ,!1),x9(OZ,!1);try{if(C9)await D0("unpair")}catch{}await r8()}async function l6(){x9(wZ,!1),x9(OZ,!1);try{if(C9)await D0("unpair").catch(()=>{}),await D0("reset")}finally{J8().stopWorker(),r8(),C9=!1,w9={state:"booting",paired:!1,node:null};for(let Z of $8)Z(w9)}}function n6(){if(Q9())CZ(),n8().then(()=>D9()).catch(()=>{})}function u3(){let Z=globalThis;if(Z.__mhSwBridge||!("serviceWorker"in navigator))return;Z.__mhSwBridge=!0,navigator.serviceWorker.addEventListener("message",(J)=>{let Q=J.data,X=J.ports?.[0];if(!Q||Q.kind!=="mh-rpc"||!X||!Q.op)return;if(!o0()){X.postMessage({ok:!1,error:{message:"replica unavailable",code:"unavailable"}});return}D0(Q.op,...Q.args??[]).then((z)=>X.postMessage({ok:!0,result:z}),(z)=>X.postMessage({ok:!1,error:{message:z.message,code:z.code}}))})}var E6=!1;async function r8(){try{if("serviceWorker"in navigator){let Z=await navigator.serviceWorker.getRegistrations();await Promise.all(Z.map((J)=>J.unregister().catch(()=>!1)))}}catch{}try{if("caches"in globalThis){for(let Z of await caches.keys())if(Z.startsWith("mh-shell-")||Z==="mh-api-v1"||Z==="mh-blob-v1")await caches.delete(Z)}}catch{}}function Q8(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return;if(typeof window>"u"||!window.isSecureContext)return;if(window.metahubDesktop||m3().hold!=="replica"){r8();return}if(navigator.serviceWorker.register("/sw.js").catch((Q)=>{console.warn("[webui] service worker registration failed —",Q)}),E6)return;E6=!0;let Z=navigator.serviceWorker.controller!=null,J=!1;navigator.serviceWorker.addEventListener("controllerchange",()=>{if(!Z){Z=!0;return}if(J)return;J=!0,location.reload()})}var E3={invalid_input:400,not_found:404,ambiguous:400,stale:409,conflict:409,auth:401,network:502};function p3(Z){return/^(create|update|delete|move|duplicate|revert)(Database|Document)/.test(Z)}async function N0(Z,...J){try{let Q=await D0(Z,...J);if(p3(Z))document.dispatchEvent(new CustomEvent(Y9));return Q}catch(Q){if(Q instanceof A9)throw new k9(Q.message,Q.code,Q.code?E3[Q.code]??400:0);throw Q}}var o8={listDatabases:()=>N0("listDatabases"),createDatabase:(Z)=>N0("createDatabase",Z),updateDatabase:(Z,J)=>N0("updateDatabase",Z,J),duplicateDatabase:(Z,J)=>N0("duplicateDatabase",Z,J),deleteDatabase:(Z)=>N0("deleteDatabase",Z),databaseActivity:(Z,J)=>N0("listDatabaseActivity",Z,J),listProperties:(Z)=>N0("listProperties",Z),createProperty:(Z)=>{let{db:J,...Q}=Z;return N0("addProperty",J,Q)},updateProperty:(Z,J)=>N0("updateProperty",Z,J),setColumnWidth:(Z,J)=>N0("setPropertyWidth",Z,J),deleteProperty:(Z)=>N0("removeProperty",Z),listRecords:(Z,J={})=>N0("listRecords",Z,J),createRecord:(Z,J)=>N0("createRecord",Z,J),getRecord:(Z)=>N0("getRecord",Z),updateRecord:(Z,J)=>N0("updateRecord",Z,J),moveRecord:(Z,J,Q)=>N0("moveRecord",Z,J,Q),deleteRecord:(Z)=>N0("deleteRecord",Z),recordHistory:(Z)=>N0("listRecordRevisions",Z),recordAt:(Z,J)=>N0("recordAtVersion",Z,J),revertRecord:(Z,J)=>N0("revertRecord",Z,J),listDocuments:(Z)=>N0("listDocuments",Z?{database_id:Z}:void 0),listDocumentsByParent:(Z)=>N0("listDocuments",{parent_id:Z}),createDocument:(Z)=>N0("createDocument",Z),getDocument:(Z)=>N0("getDocument",Z),updateDocument:(Z,J)=>{let{if_match:Q,...X}=J;return N0("updateDocument",Z,X,Q)},moveDocument:(Z,J,Q)=>N0("moveDocument",Z,J,Q),duplicateDocument:(Z,J)=>N0("duplicateDocument",Z,J),deleteDocument:(Z)=>N0("deleteDocument",Z),documentHistory:(Z)=>N0("listDocumentRevisions",Z),documentAt:(Z,J)=>N0("documentAtVersion",Z,J),revertDocument:(Z,J)=>N0("revertDocument",Z,J.to,J.if_match),nodes:()=>N0("nodes"),search:(Z,J)=>N0("search",Z,J)},t8={listSites:()=>N0("listSites"),listSiteFiles:(Z)=>N0("listSiteFiles",Z),createSite:(Z)=>N0("createSite",Z),updateSite:(Z,J)=>N0("updateSite",Z,J),deleteSite:(Z)=>N0("deleteSite",Z),deleteSiteFile:(Z,J)=>N0("deleteSiteFile",Z,J),uploadSiteFile:async(Z,J,Q)=>N0("putSiteFile",Z,J,await Q.arrayBuffer(),Q.type||void 0)};var c3=Math.floor(167772160);function d3(Z){if(Z instanceof ArrayBuffer)return Z;let J=new Uint8Array(Z.byteLength);return J.set(Z),J.buffer}async function i3(Z){let J=await crypto.subtle.digest("SHA-256",d3(Z));return[...new Uint8Array(J)].map((Q)=>Q.toString(16).padStart(2,"0")).join("")}async function r6(Z){return(await i3(Z)).slice(0,32)}var a3={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",svg:"image/svg+xml",pdf:"application/pdf"};function o6(Z){let J=Z.toLowerCase().split(";")[0].trim();for(let[Q,X]of Object.entries(a3))if(X===J&&Q!=="jpeg")return Q;return""}var X8=null;function l3(){if(X8)return X8;return X8=new Promise((Z,J)=>{let Q=indexedDB.open("mh-blobs",1);Q.onupgradeneeded=()=>{let X=Q.result;if(!X.objectStoreNames.contains("spool"))X.createObjectStore("spool",{keyPath:"hash"});if(!X.objectStoreNames.contains("meta"))X.createObjectStore("meta",{keyPath:"hash"})},Q.onsuccess=()=>Z(Q.result),Q.onerror=()=>J(Q.error)}),X8}function m9(Z,J,Q){return l3().then((X)=>new Promise((z,G)=>{let W=Q(X.transaction(Z,J).objectStore(Z));W.onsuccess=()=>z(W.result),W.onerror=()=>G(W.error)}))}async function t6(Z,J,Q){let X={hash:Z,bytes:J,content_type:Q,created:Date.now(),durable:0};await m9("spool","readwrite",(z)=>z.put(X))}async function s6(){return(await m9("spool","readonly",(J)=>J.getAll())??[]).filter((J)=>!J.durable)}async function e6(Z){await m9("spool","readwrite",(J)=>J.delete(Z))}var ZJ=(Z)=>`/blob/${Z}`;async function n3(Z,J){let Q=await m9("meta","readonly",(z)=>z.get(Z)),X={hash:Z,size:J,accessed:Date.now(),pinned:Q?.pinned??0};await m9("meta","readwrite",(z)=>z.put(X))}async function JJ(Z,J,Q){await(await caches.open("mh-blob-v1")).put(ZJ(Z),new Response(J,{headers:{"content-type":Q,"cache-control":"public, max-age=31536000, immutable"}})),await n3(Z,J.byteLength),await r3()}async function r3(){let Z=await m9("meta","readonly",(z)=>z.getAll())??[],J=Z.reduce((z,G)=>z+G.size,0);if(J<=209715200)return;let Q=await caches.open("mh-blob-v1"),X=Z.filter((z)=>!z.pinned).sort((z,G)=>z.accessed-G.accessed);for(let z of X){if(J<=c3)break;await Q.delete(ZJ(z.hash)),await m9("meta","readwrite",(G)=>G.delete(z.hash)),J-=z.size}}class k9 extends Error{code;status;constructor(Z,J,Q){super(Z);this.code=J;this.status=Q;this.name="ApiError"}}var Y9="mh-nav-invalidate";function o3(Z,J){return Z!=="GET"&&(J.startsWith("/api/database")||J.startsWith("/api/document"))}var e8="mh_token",t3="/auth/token";function $J(){try{return localStorage.getItem(e8)}catch{return null}}function s3(Z){try{localStorage.setItem(e8,Z)}catch{}document.cookie=`${e8}=${encodeURIComponent(Z)}; path=/; SameSite=Strict; Max-Age=31536000`}function QJ(){return $J()}async function s9(Z,J={}){let Q=$J(),X=new Headers(J.headers);if(Q&&!X.has("authorization"))X.set("authorization",`Bearer ${Q}`);let z=await fetch(Z,{...J,headers:X});if(z.status!==401||!Q)return z;let G=await fetch(t3,{headers:{authorization:`Bearer ${Q}`}}).catch(()=>null);if(!G?.ok)return z;let W=await G.json().catch(()=>null);if(!W?.token)return z;return s3(W.token),X.set("authorization",`Bearer ${W.token}`),fetch(Z,{...J,headers:X})}async function U0(Z,J,Q){let X=await s9(J,{method:Z,headers:Q!==void 0?{"content-type":"application/json"}:void 0,body:Q!==void 0?JSON.stringify(Q):void 0}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw new k9(z&&z.error||`${X.status} ${X.statusText}`,z?.code,X.status);if(o3(Z,J))document.dispatchEvent(new CustomEvent(Y9));return z}var y0=(Z)=>encodeURIComponent(Z),s8=!1;async function XJ(){if(s8||q9())return;s8=!0;try{for(let Z of await s6()){let J;try{J=await s9("/api/blob",{method:"POST",headers:{"content-type":Z.content_type},body:Z.bytes})}catch{break}if(!J.ok)break;await JJ(Z.hash,Z.bytes,Z.content_type).catch(()=>{}),await e6(Z.hash).catch(()=>{})}}finally{s8=!1}}if(typeof window<"u")window.addEventListener("online",()=>void XJ());var e3={listDatabases:()=>U0("GET","/api/databases"),createDatabase:(Z)=>U0("POST","/api/databases",Z),updateDatabase:(Z,J)=>U0("PATCH",`/api/database?id=${y0(Z)}`,J),duplicateDatabase:(Z,J)=>U0("POST",`/api/database/duplicate?id=${y0(Z)}`,J??{}),deleteDatabase:(Z)=>U0("DELETE",`/api/database?id=${y0(Z)}`),listProperties:(Z)=>U0("GET",`/api/properties?db=${y0(Z)}`),createProperty:(Z)=>U0("POST","/api/properties",Z),updateProperty:(Z,J)=>U0("PATCH",`/api/property?id=${y0(Z)}`,J),setColumnWidth:(Z,J)=>U0("PATCH",`/api/property/width?id=${y0(Z)}`,{width:J}),deleteProperty:(Z)=>U0("DELETE",`/api/property?id=${y0(Z)}`),listRecords:(Z,J={})=>{let Q=new URLSearchParams({db:Z});if(J.sort)Q.set("sort",J.sort);if(J.limit!=null)Q.set("limit",String(J.limit));return U0("GET",`/api/records?${Q}`)},createRecord:(Z,J)=>U0("POST",`/api/records?db=${y0(Z)}`,J),getRecord:(Z)=>U0("GET",`/api/record?id=${y0(Z)}`),updateRecord:(Z,J)=>U0("PATCH",`/api/record?id=${y0(Z)}`,J),moveRecord:(Z,J,Q)=>U0("PATCH",`/api/record/order?id=${y0(Z)}`,{target:J,where:Q}),deleteRecord:(Z)=>U0("DELETE",`/api/record?id=${y0(Z)}`),listDocuments:(Z)=>U0("GET",Z?`/api/documents?db=${y0(Z)}`:"/api/documents"),listDocumentsByParent:(Z)=>U0("GET",`/api/documents?parent=${y0(Z)}`),createDocument:(Z)=>U0("POST","/api/documents",Z),getDocument:(Z)=>U0("GET",`/api/document?id=${y0(Z)}`),updateDocument:(Z,J)=>U0("PATCH",`/api/document?id=${y0(Z)}`,J),moveDocument:(Z,J,Q)=>U0("PATCH",`/api/document/move?id=${y0(Z)}`,{target:J,where:Q}),duplicateDocument:(Z,J)=>U0("POST",`/api/document/duplicate?id=${y0(Z)}`,J??{}),deleteDocument:(Z)=>U0("DELETE",`/api/document?id=${y0(Z)}`),documentHistory:(Z)=>U0("GET",`/api/document/history?id=${y0(Z)}`),documentAt:(Z,J)=>U0("GET",`/api/document/at?id=${y0(Z)}&version=${y0(J)}`),revertDocument:(Z,J)=>U0("POST",`/api/document/revert?id=${y0(Z)}`,J),recordHistory:(Z)=>U0("GET",`/api/record/history?id=${y0(Z)}`),databaseActivity:(Z,J)=>U0("GET",`/api/database/activity?db=${y0(Z)}${J!=null?`&limit=${J}`:""}`),recordAt:(Z,J)=>U0("GET",`/api/record/at?id=${y0(Z)}&version=${y0(J)}`),revertRecord:(Z,J)=>U0("POST",`/api/record/revert?id=${y0(Z)}`,{to:J}),nodes:()=>U0("GET","/api/nodes"),search:(Z,J)=>{let Q=new URLSearchParams({q:Z});if(J!=null)Q.set("limit",String(J));return U0("GET",`/api/search?${Q}`)},listPeers:()=>U0("GET","/api/peers"),newPairingCode:()=>U0("POST","/api/pair/new"),addPeerByPairing:(Z)=>U0("POST","/api/peers/pair",Z),updatePeer:(Z,J)=>U0("PATCH",`/api/peer?url=${y0(Z)}`,J),removePeer:(Z)=>U0("DELETE",`/api/peer?url=${y0(Z)}`),syncPeer:(Z)=>U0("POST",`/api/peer/sync?url=${y0(Z)}`),listServerS3Peers:()=>U0("GET","/api/peers/s3"),addServerS3Peer:(Z)=>U0("POST","/api/peer/s3",Z),serverS3Config:(Z)=>U0("GET",`/api/peer/s3/config?url=${y0(Z)}`),listGrants:()=>U0("GET","/api/grants"),revokeGrant:(Z)=>U0("DELETE",`/api/grant?token=${y0(Z)}`),listSites:()=>U0("GET","/api/sites"),listSiteFiles:(Z)=>U0("GET",`/api/site/files?site=${y0(Z)}`),createSite:(Z)=>U0("POST","/api/sites",Z),updateSite:(Z,J)=>U0("PATCH",`/api/site?id=${y0(Z)}`,J),deleteSite:(Z)=>U0("DELETE",`/api/site?id=${y0(Z)}`),deleteSiteFile:(Z,J)=>U0("DELETE",`/api/site/file?site=${y0(Z)}&path=${y0(J)}`),uploadSiteFile:async(Z,J,Q)=>{let X=await s9(`/api/site/file?site=${y0(Z)}&path=${y0(J)}`,{method:"POST",headers:{"content-type":Q.type||"application/octet-stream"},body:Q}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw Error(z&&z.error||`${X.status} ${X.statusText}`);return z},uploadDocImage:async(Z)=>{try{let J=await s9("/api/blob",{method:"POST",headers:{"content-type":Z.type||"application/octet-stream"},body:Z}),Q=await J.json().catch(()=>null);if(J.ok&&Q&&!Q.error)return XJ(),Q;throw Error(Q&&Q.error||`${J.status} ${J.statusText}`)}catch(J){if(!(o0()||q9()))throw J;let Q=await Z.arrayBuffer(),X=await r6(Q),z=Z.type||"application/octet-stream";await t6(X,Q,z);let G=o6(z);return{hash:X,size:Q.byteLength,content_type:z,url:`/blob/${X}${G?"."+G:""}`}}},blobCache:()=>U0("GET","/api/blob-cache"),verifyBlobCache:()=>U0("POST","/api/blob-cache/verify"),clearBlobCache:()=>U0("POST","/api/blob-cache/clear"),setBlobPolicy:(Z)=>U0("POST","/api/blob-policy",Z),pinBlob:(Z,J)=>U0("POST","/api/blob-cache/pin",{hash:Z,pinned:J}),version:()=>U0("GET","/api/version")},c=new Proxy(e3,{get(Z,J,Q){if(o0()){if(J in o8)return o8[J];if(q9()&&J in t8)return t8[J]}return Reflect.get(Z,J,Q)}}),e9={text:{ic:"text",t:"文本"},number:{ic:"hash",t:"数字"},select:{ic:"select",t:"单选"},multi_select:{ic:"multi",t:"多选"},checkbox:{ic:"checkbox",t:"复选框"},date:{ic:"calendar",t:"日期"},url:{ic:"link",t:"链接"},relation:{ic:"relation",t:"关联"}};class ZZ extends Error{code;constructor(Z,J){super(J);this.code=Z;this.name="MhError"}}function Z$(Z){let J=new TextEncoder().encode(Z),Q="";for(let X=0;X<J.length;X++)Q+=String.fromCharCode(J[X]);return btoa(Q).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function J$(Z){let J=Z.replace(/-/g,"+").replace(/_/g,"/"),Q=atob(J),X=new Uint8Array(Q.length);for(let z=0;z<Q.length;z++)X[z]=Q.charCodeAt(z);return new TextDecoder().decode(X)}function Z1(Z){let J={endpoint:Z.endpoint,region:Z.region,bucket:Z.bucket,prefix:Z.prefix,accessKeyId:Z.accessKeyId,secretAccessKey:Z.secretAccessKey,encrypt:Z.encrypt,virtualHostedStyle:Z.virtualHostedStyle};return Z$(JSON.stringify(J))}function zJ(Z){let J=(Z??"").trim();if(!J)throw new ZZ("invalid_input","empty enroll code");let Q=/(?:[#&?]|^)enroll=([^&\s]+)/.exec(J),X=Q?Q[1]:J,z;try{z=JSON.parse(J$(X))}catch{throw new ZZ("invalid_input","invalid enroll code (could not decode)")}if(!z||typeof z!=="object")throw new ZZ("invalid_input","invalid enroll code (not an object)");let G=z,W=(q)=>{let Y=G[q];if(typeof Y!=="string"||Y.trim()==="")throw new ZZ("invalid_input",`enroll code missing '${q}'`);return Y};return{endpoint:W("endpoint"),bucket:W("bucket"),accessKeyId:W("accessKeyId"),secretAccessKey:W("secretAccessKey"),region:typeof G.region==="string"?G.region:void 0,prefix:typeof G.prefix==="string"?G.prefix:void 0,encrypt:typeof G.encrypt==="boolean"?G.encrypt:void 0,virtualHostedStyle:typeof G.virtualHostedStyle==="boolean"?G.virtualHostedStyle:void 0}}var $$=0;function $(Z,J,Q,X,z,G){J||(J={});var W,q,Y=J;if("ref"in Y)for(q in Y={},J)q=="ref"?W=J[q]:Y[q]=J[q];var H={type:Z,props:Y,key:Q,ref:W,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--$$,__i:-1,__u:0,__source:z,__self:G};if(typeof Z=="function"&&(W=Z.defaultProps))for(q in W)Y[q]===void 0&&(Y[q]=W[q]);return S0.vnode&&S0.vnode(H),H}var Q$={cube:'<path d="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z"/><path d="m3 7.5 9 5.5 9-5.5M12 22v-9"/>',chevron:'<path d="m9 6 6 6-6 6"/>',chevronDown:'<path d="m6 9 6 6 6-6"/>',arrowLeft:'<path d="M15 18l-6-6 6-6"/>',plus:'<path d="M12 5v14M5 12h14"/>',pin:'<path d="M9 4h6l-1 6 3 3v2H7v-2l3-3z"/><path d="M12 16v5"/>',search:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2"/>',dots:'<circle cx="5" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="19" cy="12" r="1.4" fill="currentColor" stroke="none"/>',grip:'<circle cx="9" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="18" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="18" r="1.3" fill="currentColor" stroke="none"/>',trash:'<path d="M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13M10 11v6M14 11v6"/>',filter:'<path d="M3 5h18l-7 8v6l-4-2v-4z"/>',sort:'<path d="M7 3v14M7 17l-3-3M7 17l3-3M17 21V7M17 7l-3 3M17 7l3 3"/>',group:'<rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/>',check:'<path d="M5 12.5 10 17l9-10"/>',x:'<path d="M6 6 18 18M18 6 6 18"/>',file:'<path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5"/>',database:'<ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.66 3.58 3 8 3s8-1.34 8-3V5"/><path d="M4 12c0 1.66 3.58 3 8 3s8-1.34 8-3"/>',table:'<rect x="3" y="4" width="18" height="16" rx="1.5"/><path d="M3 10h18M3 15h18M9 4v16M15 4v16"/>',alignLeft:'<path d="M4 6h16M4 12h10M4 18h13"/>',alignCenter:'<path d="M4 6h16M7 12h10M5 18h14"/>',alignRight:'<path d="M4 6h16M10 12h10M7 18h13"/>',share:'<path d="M4 12v7a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-7"/><path d="M12 3v13M8 7l4-4 4 4"/>',download:'<path d="M12 3v12M8 11l4 4 4-4"/><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',link:'<path d="M10 13a5 5 0 0 0 7 0l2-2a5 5 0 0 0-7-7l-1 1"/><path d="M14 11a5 5 0 0 0-7 0l-2 2a5 5 0 0 0 7 7l1-1"/>',calendar:'<rect x="3" y="4" width="18" height="17" rx="2"/><path d="M3 9h18M8 2v4M16 2v4"/>',timeline:'<rect x="3" y="5" width="9" height="3" rx="1.5"/><rect x="8" y="10.5" width="11" height="3" rx="1.5"/><rect x="5" y="16" width="7" height="3" rx="1.5"/>',hash:'<path d="M4 9h16M4 15h16M10 3 8 21M16 3l-2 18"/>',text:'<path d="M4 6h16M4 6v-.5M8 6v13M4 19h8"/><path d="M14 11h6M17 11v8M14 19h6"/>',list:'<path d="M9 6h11M9 12h11M9 18h11M4.5 6h.01M4.5 12h.01M4.5 18h.01"/>',numList:'<path d="M10 6h10M10 12h10M10 18h10M4 5h1v4M4 9h2M4 13.5c0-.8 2-.8 2 0 0 .8-2 1.2-2 2.5h2"/>',checkbox:'<rect x="4" y="4" width="16" height="16" rx="3"/><path d="m9 12 2 2 4-4"/>',select:'<circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="3" fill="currentColor" stroke="none"/>',multi:'<path d="M8 6h12M8 12h12M8 18h12M3 6h.01M3 12h.01M3 18h.01"/>',relation:'<path d="M7 7h4v4H7zM13 13h4v4h-4z"/><path d="M11 9h2a2 2 0 0 1 2 2v2"/>',quote:'<path d="M7 7c-2 1-3 3-3 6h3v4H4v-4M17 7c-2 1-3 3-3 6h3v4h-3v-4"/>',code:'<path d="m8 8-4 4 4 4M16 8l4 4-4 4M13 6l-2 12"/>',minus:'<path d="M5 12h14"/>',heading:'<path d="M6 4v16M18 4v16M6 12h12"/>',panelLeft:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M9 4v16"/>',cornerUpRight:'<path d="M5 19V11a4 4 0 0 1 4-4h10M15 3l4 4-4 4"/>',openPeek:'<rect x="3" y="5" width="18" height="14" rx="2.5"/><rect x="6" y="8" width="4" height="8" rx="1" fill="currentColor" stroke="none"/>',settings:'<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/>',eyeOff:'<path d="M4 4l16 16M9.5 9.5a3 3 0 0 0 4 4M6.5 6.7C4.5 8 3 10 2 12c2 4 6 7 10 7 1.6 0 3-.4 4.4-1.1M9.5 5.2A9.7 9.7 0 0 1 12 5c4 0 8 3 10 7-.6 1.3-1.5 2.5-2.5 3.5"/>',bold:'<path d="M6 4h7a4 4 0 0 1 0 8H6zM6 12h8a4 4 0 0 1 0 8H6z"/>',italic:'<path d="M19 4h-9M14 20H5M15 4 9 20"/>',underline:'<path d="M6 4v6a6 6 0 0 0 12 0V4M4 21h16"/>',strike:'<path d="M4 12h16M7 7a4 4 0 0 1 7-1M9 17a4 4 0 0 0 7-2"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/>',moon:'<path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/>',history:'<path d="M3 12a9 9 0 1 0 2.6-6.4L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l3.5 2"/>',monitor:'<rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8M12 17v4"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c2.4 2.5 3.7 5.7 3.7 9S14.4 18.5 12 21c-2.4-2.5-3.7-5.7-3.7-9S9.6 5.5 12 3z"/>',eye:'<path d="M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"/><circle cx="12" cy="12" r="3"/>',lock:'<rect x="4.5" y="11" width="15" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',upload:'<path d="M12 16V4M8 8l4-4 4 4M5 20h14"/>',spinner:'<path d="M21 12a9 9 0 1 1-6.219-8.56"/>',cloudUp:'<path d="M12 13v8"/><path d="m8 17 4-4 4 4"/><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"/>',cloudCheck:'<path d="M17 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 0 1 2.86 8"/><path d="m9 14 2 2 4-4"/>',cloudOff:'<path d="m2 2 20 20"/><path d="M5.78 5.78A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.3-.2"/><path d="M21.4 14.4A4.5 4.5 0 0 0 17.5 8h-1.8A7 7 0 0 0 9.4 4.6"/>',externalLink:'<path d="M14 4h6v6M20 4l-9 9M19 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h5"/>'};function D({name:Z,cls:J="ico"}){return $("svg",{class:J,viewBox:"0 0 24 24",dangerouslySetInnerHTML:{__html:Q$[Z]??""}},void 0,!1,void 0,this)}var J9={text:"text",number:"hash",select:"select",multi_select:"multi",checkbox:"checkbox",date:"calendar",url:"link",relation:"relation"};function JZ(Z,J){let Q=J.threshold??4,X=Q===0,z=(W)=>{if(W.pointerId!==Z.pointerId)return;if(!X){if(Math.hypot(W.clientX-Z.clientX,W.clientY-Z.clientY)<Q)return;X=!0,J.onStart?.(W)}W.preventDefault(),J.onMove(W)},G=(W)=>{if(W.pointerId!==Z.pointerId)return;removeEventListener("pointermove",z),removeEventListener("pointerup",G),removeEventListener("pointercancel",G),J.onEnd?.(W,X)};addEventListener("pointermove",z,{passive:!1}),addEventListener("pointerup",G),addEventListener("pointercancel",G)}function U9(){document.querySelectorAll(".drop-into,.drop-before,.drop-after").forEach((Z)=>Z.classList.remove("drop-into","drop-before","drop-after"))}function J1(Z,J,Q){U9();let X=Z.getBoundingClientRect(),z=Q==="y"?J.clientY<X.top+X.height/2?"before":"after":J.clientX<X.left+X.width/2?"before":"after";return Z.classList.add("drop-"+z),z}function X$(Z,J,Q){let X=document.createElement("div");return X.className="drag-ghost "+Z,X.style.width=`${J.width}px`,X.style.height=`${J.height}px`,X.textContent=Q,document.body.appendChild(X),X}function $1(Z,J,Q){if(!Z)return;Z.style.transform=`translate3d(${Math.round(J)}px, ${Math.round(Q)}px, 0)`}function Q1(Z,J){let Q=J.source.getBoundingClientRect(),X=Z.clientX-Q.left,z=Z.clientY-Q.top,G=null,W=null,q="before";JZ(Z,{onStart:()=>{G=X$(J.ghostCls,Q,J.ghostText),J.source.classList.add("drag-source"),document.body.classList.add("table-dragging"),J.onActivate?.()},onMove:(Y)=>{$1(G,Y.clientX-X,Y.clientY-z);let H=document.elementFromPoint(Y.clientX,Y.clientY)?.closest?.(J.targetSelector);if(!H||J.isSelf(H)){U9(),W=null;return}W=H,q=J1(H,Y,J.axis)},onEnd:(Y,H)=>{if(G?.remove(),J.source.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),U9(),H&&W)J.onDrop(W,q);J.onFinish?.(H)}})}function z8(Z,J){let Q=Z.currentTarget,X=J.startWidth,z=0;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let G=Q.closest("table");if(G)Q.style.setProperty("--rz-guide-h",G.offsetHeight+"px");JZ(Z,{threshold:0,onMove:(W)=>{if(X=Math.max(J.min,J.startWidth+W.clientX-Z.clientX),!z)z=requestAnimationFrame(()=>{if(z=0,J.col)J.col.style.width=X+"px"})},onEnd:()=>{if(z)cancelAnimationFrame(z);if(J.col)J.col.style.width=X+"px";Q.classList.remove("dragging"),Q.style.removeProperty("--rz-guide-h"),document.body.classList.remove("col-resizing"),J.onDone(X)}})}var W8="(max-width: 768px) and (pointer: coarse)";function X1(Z){let J=Z,Q=new Set;return{get:()=>J,set:(X)=>{J=X,Q.forEach((z)=>z(X))},use(){let[X,z]=f(J);return e(()=>{return Q.add(z),()=>void Q.delete(z)},[]),X}}}var NZ=X1([]),z$=0;function o(Z){let J=++z$;NZ.set([...NZ.get(),{id:J,msg:Z}]),setTimeout(()=>NZ.set(NZ.get().filter((Q)=>Q.id!==J)),2600)}var z1=X1(null);function I0(Z,J,Q={}){z1.set({render:J,anchor:Z,minWidth:Q.minWidth})}function WJ(){z1.set(null)}function W$(Z){if(Z instanceof MouseEvent)return{x:Z.clientX,y:Z.clientY};if("rect"in Z)return{x:Z.rect.left,y:Z.rect.bottom,bottom:Z.rect.bottom};return{x:Z.x,y:Z.y}}function G$(){let Z=z1.use(),J=L0(null),[Q,X]=f(null),z=matchMedia(W8).matches;if(x6(()=>{if(!Z||!J.current||z)return X(null);let{x:G,y:W}=W$(Z.anchor),q=J.current.getBoundingClientRect();X({left:Math.min(G,innerWidth-q.width-10),top:Math.min(W+4,innerHeight-q.height-10)})},[Z,z]),!Z)return null;return $("div",{class:"menu-layer",onMouseDown:(G)=>G.target===G.currentTarget&&WJ(),children:$("div",{ref:J,class:"pop"+(z?" sheet":""),style:z?void 0:{left:Q?.left??-9999,top:Q?.top??-9999,minWidth:Z.minWidth},onMouseDown:(G)=>G.stopPropagation(),children:Z.render(WJ)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function p0({children:Z}){return $("div",{class:"lbl",children:Z},void 0,!1,void 0,this)}function f0(){return $("div",{class:"sep"},void 0,!1,void 0,this)}function W0({icon:Z,label:J,sublabel:Q,danger:X,checked:z,onClick:G}){return $("button",{class:"item"+(X?" danger":""),onClick:G,children:[Z&&$("span",{class:"lico plain",children:$(D,{name:Z,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:J},void 0,!1,void 0,this),Q&&$("span",{class:"d",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z&&$("span",{class:"chk",children:$(D,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function u9(Z,J=240){let[Q,X]=f(!1);return e(()=>{let G=requestAnimationFrame(()=>X(!0));return()=>cancelAnimationFrame(G)},[]),{open:Q,close:()=>{X(!1),setTimeout(Z,J)}}}var W1=X1(null);function X9(Z){W1.set(Z)}function d0(){W1.set(null)}function H9({title:Z,sub:J,children:Q,footer:X,width:z}){return $("div",{class:"modal",style:{width:z},onMouseDown:(G)=>G.stopPropagation(),children:[$("div",{class:"modal-head",children:[$("h3",{children:Z},void 0,!1,void 0,this),J&&$("p",{children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"modal-body",children:Q},void 0,!1,void 0,this),X&&$("div",{class:"modal-foot",children:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function q$(){let Z=W1.use();return e(()=>{if(!Z)return;let J=(Q)=>Q.key==="Escape"&&d0();return addEventListener("keydown",J),()=>removeEventListener("keydown",J)},[Z]),$("div",{class:"modal-scrim"+(Z?" open":""),onMouseDown:(J)=>J.target===J.currentTarget&&d0(),children:Z},void 0,!1,void 0,this)}function b0(Z){return new Promise((J)=>{let Q=(X)=>{d0(),J(X)};X9($(H9,{title:Z.title,footer:$(n,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Q(!1),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn "+(Z.danger?"btn-danger":"btn-primary"),onClick:()=>Q(!0),children:Z.confirmLabel??"确定"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:$("div",{class:"muted",children:Z.message},void 0,!1,void 0,this)},void 0,!1,void 0,this))})}function L9(Z){return new Promise((J)=>{let Q=Z.value??"",X=(z)=>{d0(),J(z)};X9($(H9,{title:Z.title,footer:$(n,{children:[$("button",{class:"btn btn-secondary",onClick:()=>X(null),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:()=>X(Q.trim()||(Z.value??"")),children:Z.confirmLabel??"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[Z.label&&$("div",{class:"field-label",children:Z.label},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:Z.value??"",placeholder:Z.placeholder,onInput:(z)=>Q=z.target.value,onKeyDown:(z)=>{if(z.key==="Enter")X(Q.trim()||(Z.value??""))}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))})}function G8(){let Z=NZ.use();return $(n,{children:[$(G$,{},void 0,!1,void 0,this),$(q$,{},void 0,!1,void 0,this),$("div",{class:"toasts",children:Z.map((J)=>$("div",{class:"toast",children:[$(D,{name:"check",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:J.msg},void 0,!1,void 0,this)]},J.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var G1=null,Y$=/mac/i.test(navigator.userAgentData?.platform??navigator.platform);function qJ(Z){let{view:J,navigate:Q}=Z,[X,z]=f(new Set),[G,W]=f(""),[q,Y]=f(!1),H=L0(null),[F,K]=f(null),P=F$(Z.onResize);e(()=>{c.version().then((v)=>K(v.version)).catch(()=>K(null))},[]),e(()=>{if(q)H.current?.focus()},[q]);let A=(v)=>{let O=new Set(X);O.has(v)?O.delete(v):O.add(v),z(O)},L=(v)=>v().catch((O)=>Z.onError(String(O.message))),y=(v)=>{if("id"in J&&J.id===v)Q({kind:"empty"},{replace:!0})},V=(v)=>L(async()=>{let O=await c.createDocument({title:"",...v?{parent_id:v}:{}});if(v)X.add(v);Q({kind:"doc",id:O.id})}),S=(v,O,U)=>L(async()=>{if(v===O.id)return;if(K$(Z.docs,v,O.id))return;if(await c.moveDocument(v,O.id,U),U==="into")X.add(O.id)}),M=(v,O)=>{v.stopPropagation(),I0(v,(U)=>$(n,{children:[$(W0,{icon:"settings",label:"重命名…",onClick:async()=>{U();let B=await L9({title:"重命名数据库",value:O.name});if(B&&B!==O.name)L(async()=>{await c.updateDatabase(O.id,{name:B})})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(U(),await b0({title:"删除数据库?",message:`「${O.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))L(async()=>{await c.deleteDatabase(O.id),y(O.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},N=(v,O)=>{v.stopPropagation();let U=Z.docs.filter((B)=>B.parent_id===O.id).length;I0(v,(B)=>$(n,{children:[$(W0,{icon:"plus",label:"新建子页",onClick:()=>{B(),V(O.id)}},void 0,!1,void 0,this),$(W0,{icon:"settings",label:"重命名…",onClick:async()=>{B();let C=await L9({title:"重命名文档",value:O.title});if(C)L(async()=>{await c.updateDocument(O.id,{title:C})})}},void 0,!1,void 0,this),O.parent_id&&$(W0,{icon:"cornerUpRight",label:"移到顶层",onClick:()=>{B(),L(async()=>{await c.updateDocument(O.id,{parent_id:null})})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除",danger:!0,onClick:async()=>{if(B(),await b0({title:"删除文档?",message:U?`「${O.title||"无标题"}」及其 ${U} 个子页将被删除。`:`「${O.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))L(async()=>{await HJ(Z.docs,O.id),y(O.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},k=(v,O=0)=>{return Z.docs.filter((B)=>B.parent_id===v).map((B)=>{let C=Z.docs.filter((T)=>T.parent_id===B.id),_=C.length>0&&X.has(B.id);return $("div",{class:O?"navchildren":"",children:[$("div",{class:"navitem"+(J.kind==="doc"&&J.id===B.id?" active":""),draggable:!0,onClick:()=>Q({kind:"doc",id:B.id}),onDragStart:(T)=>{T.stopPropagation(),G1=B.id,T.currentTarget.classList.add("dragging")},onDragEnd:(T)=>{T.currentTarget.classList.remove("dragging"),q1()},onDragOver:(T)=>{T.preventDefault(),T.stopPropagation(),H$(T.currentTarget,T)},onDrop:(T)=>{T.preventDefault(),T.stopPropagation();let u=YJ(T.currentTarget,T),E=G1;if(G1=null,q1(),E)S(E,B,u)},children:[$("span",{class:"tw"+(_?" open":""),onClick:(T)=>{if(T.stopPropagation(),C.length)A(B.id)},children:C.length>0&&$(D,{name:"chevron",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"emoji",children:$(D,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"label",children:B.title||"无标题"},void 0,!1,void 0,this),$("span",{class:"acts",children:[$("button",{title:"新建子页",onClick:(T)=>{T.stopPropagation(),V(B.id)},children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"更多",onClick:(T)=>N(T,B),children:$(D,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),_&&k(B.id,O+1)]},B.id,!0,void 0,this)})};return $("div",{class:"sidebar"+(Z.collapsed?" collapsed":""),style:{width:Z.width,marginLeft:Z.collapsed?-Z.width:void 0},children:[$("div",{class:"sb-head",children:[$("div",{class:"brand",children:[$("span",{class:"mark",children:$(D,{name:"cube"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Metahub"]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(q?" active":""),title:"搜索","aria-label":"搜索",onClick:()=>Y((v)=>!v),children:$(D,{name:"search",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(D,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(D,{name:"settings",cls:"ico"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"收起侧栏",onClick:Z.onCollapse,children:$(D,{name:"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-search"+(q?" open":""),onClick:(v)=>v.currentTarget.querySelector("input")?.focus(),children:[$(D,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{ref:H,placeholder:"搜索…",value:G,onInput:(v)=>W(v.target.value),onKeyDown:(v)=>{if(v.key==="Enter"&&G.trim())Q({kind:"search",q:G.trim()},{replace:J.kind==="search"})}},void 0,!1,void 0,this),$("kbd",{children:Y$?"⌘K":"Ctrl K"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-scroll",children:[$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"数据库"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建数据库",onClick:()=>U$((v)=>Q({kind:"db",id:v}),Z.onError),children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.databases.map((v)=>$("div",{class:"navitem"+(J.kind==="db"&&J.id===v.id?" active":""),onClick:()=>Q({kind:"db",id:v.id}),children:[$("span",{class:"emoji",children:v.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{class:"label",children:v.name},void 0,!1,void 0,this),$("span",{class:"acts",children:$("button",{title:"更多",onClick:(O)=>M(O,v),children:$(D,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},v.id,!0,void 0,this)),Z.databases.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"文档"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建文档",onClick:()=>V(null),children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k(null),Z.docs.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-footer",children:[$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(D,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(D,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("span",{class:"sbf-ver",title:`Metahub Core v${F}`,children:["v",F]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-resizer",onMouseDown:P},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var q1=U9;function YJ(Z,J){let Q=Z.getBoundingClientRect(),X=J.clientY-Q.top;return X<Q.height*0.28?"before":X>Q.height*0.72?"after":"into"}function H$(Z,J){q1(),Z.classList.add("drop-"+YJ(Z,J))}function K$(Z,J,Q){let X=Z.find((z)=>z.id===Q);while(X){if(X.parent_id===J)return!0;X=Z.find((z)=>z.id===X.parent_id)}return!1}async function HJ(Z,J){for(let Q of Z.filter((X)=>X.parent_id===J))await HJ(Z,Q.id);await c.deleteDocument(J)}function F$(Z){return(J)=>{J.preventDefault();let Q=J.currentTarget;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let X=(G)=>Z(Math.max(210,Math.min(460,G.clientX))),z=()=>{Q.classList.remove("dragging"),document.body.classList.remove("col-resizing"),removeEventListener("mousemove",X),removeEventListener("mouseup",z)};addEventListener("mousemove",X),addEventListener("mouseup",z)}}var GJ={blank:[{name:"名称",type:"text"}],tasks:[{name:"名称",type:"text"},{name:"状态",type:"select",config:{options:["待办","进行中","已完成"]}},{name:"优先级",type:"select",config:{options:["高","中","低"]}},{name:"截止",type:"date"}],crm:[{name:"姓名",type:"text"},{name:"公司",type:"text"},{name:"分类",type:"select",config:{options:["客户","合作","潜在"]}},{name:"邮箱",type:"url"}]};function U$(Z,J){X9($(L$,{onOpenDb:Z,onError:J},void 0,!1,void 0,this))}function L$(Z){let J=["\uD83D\uDDC2️","\uD83C\uDFAF","\uD83E\uDD1D","\uD83D\uDCE6","\uD83D\uDCDA","\uD83D\uDCA1","\uD83E\uDDE9","\uD83D\uDCCA","\uD83D\uDDD3️","✅"],Q=[["blank","空白","仅一个「名称」列"],["tasks","任务","状态·优先级·截止"],["crm","联系人","公司·分类·邮箱"]],[X,z]=f(""),[G,W]=f(J[0]),[q,Y]=f("blank"),H=L0(!1),F=async()=>{if(H.current)return;H.current=!0;try{let K=await c.createDatabase({name:X.trim()||"未命名数据库",icon:G});for(let P of GJ[q]??GJ.blank)await c.createProperty({db:K.id,name:P.name,type:P.type,config:P.config});d0(),Z.onOpenDb(K.id),o(`已创建数据库「${K.name}」`)}catch(K){Z.onError(String(K.message))}finally{H.current=!1}};return $(H9,{title:"新建数据库",sub:"创建一个带属性列的结构化数据表。",footer:$(n,{children:[$("button",{class:"btn btn-secondary",onClick:d0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:F,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:"例如:项目、客户、库存…",value:X,onInput:(K)=>z(K.target.value),onKeyDown:(K)=>K.key==="Enter"&&F()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"图标"},void 0,!1,void 0,this),$("div",{class:"icon-pick",children:J.map((K)=>$("button",{class:K===G?"sel":"",onClick:()=>W(K),children:K},K,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"field-label",children:"模板"},void 0,!1,void 0,this),$("div",{class:"tmpl",children:Q.map(([K,P,A])=>$("button",{class:K===q?"sel":"",onClick:()=>Y(K),children:[$("div",{class:"tt",children:P},void 0,!1,void 0,this),$("div",{class:"td",children:A},void 0,!1,void 0,this)]},K,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var KJ=[4,28,45,130,165,200,220,255,290,330];function Y1(Z){let J=0;for(let Q=0;Q<Z.length;Q++)J=J*31+Z.charCodeAt(Q)>>>0;return`hsl(${KJ[J%KJ.length]} 65% 45%)`}function E9({text:Z}){return $("span",{class:"chip",style:{["--c"]:Y1(Z)},children:Z},void 0,!1,void 0,this)}function $Z({prop:Z,val:J}){if(J==null||J===""||Array.isArray(J)&&J.length===0)return $("span",{class:"muted",children:" "},void 0,!1,void 0,this);if(Z.type==="select")return $(E9,{text:String(J)},void 0,!1,void 0,this);if(Z.type==="multi_select"||Z.type==="relation")return $(n,{children:J.map((Q)=>$(E9,{text:String(Q)},String(Q),!1,void 0,this))},void 0,!1,void 0,this);if(Z.type==="url")return $("a",{href:String(J),target:"_blank",rel:"noreferrer",onClick:(Q)=>Q.stopPropagation(),children:String(J)},void 0,!1,void 0,this);return $("span",{children:String(J)},void 0,!1,void 0,this)}function FJ(Z,J){if(Z==="relation")return J.split(",").map((Q)=>Q.trim()).filter(Boolean);return J}function UJ(Z,J){if(J==null)return"";if(Array.isArray(J))return J.join(", ");return String(J)}var B$={user:"",repair:"修复",revert:"回滚"};function K1(Z){let J=Date.now()-new Date(Z).getTime();if(J<60000)return"刚刚";if(J<3600000)return`${Math.floor(J/60000)} 分钟前`;if(J<86400000)return`${Math.floor(J/3600000)} 小时前`;if(J<2592000000)return`${Math.floor(J/86400000)} 天前`;return new Date(Z).toLocaleDateString()}function F1(){let[Z,J]=f([]);return e(()=>{c.nodes().then(J).catch(()=>{})},[]),(Q)=>{let X=Z.find((z)=>z.node_id===Q);if(X?.self)return"本设备";return X?.label||Q.slice(0,8)}}function U1({kind:Z}){if(Z==="user")return null;return $("span",{class:"hist-kind "+Z,children:B$[Z]},void 0,!1,void 0,this)}function P$(Z,J){let Q=Array.from({length:Z.length+1},()=>Array(J.length+1).fill(0));for(let W=Z.length-1;W>=0;W--)for(let q=J.length-1;q>=0;q--)Q[W][q]=Z[W]===J[q]?Q[W+1][q+1]+1:Math.max(Q[W+1][q],Q[W][q+1]);let X=[],z=0,G=0;while(z<Z.length&&G<J.length)if(Z[z]===J[G])X.push([z,G]),z++,G++;else if(Q[z+1][G]>=Q[z][G+1])z++;else G++;return X}var O$=(Z)=>Z?Z.split(/\n{2,}/):[],LJ=(Z)=>Z?Z.split(`
|
|
8
|
-
`).filter((J)=>J.trim()!==""):[];function w$(Z,J){for(let Q=0;Q<Math.min(Z.length,J.length);Q++){let X=Z[Q].text,z=J[Q].text,G=0;while(G<X.length&&G<z.length&&X[G]===z[G])G++;let W=0;while(W<X.length-G&&W<z.length-G&&X[X.length-1-W]===z[z.length-1-W])W++;if(G+W<Math.max(X.length,z.length)*0.3)continue;Z[Q].seg=[X.slice(0,G),X.slice(G,X.length-W),X.slice(X.length-W)],J[Q].seg=[z.slice(0,G),z.slice(G,z.length-W),z.slice(z.length-W)]}}function A$(Z,J){let Q=LJ(Z),X=LJ(J),z=P$(Q,X),G=[],W=0,q=0;for(let[Y,H]of[...z,[Q.length,X.length]]){let F=[],K=[];for(;W<Y;W++)F.push({kind:"del",text:Q[W]});for(;q<H;q++)K.push({kind:"add",text:X[q]});if(w$(F,K),G.push(...F,...K),Y<Q.length)G.push({kind:"same",text:Q[Y]});W=Y+1,q=H+1}return G}function C$(Z){let J=[];if(Z.created)J.push("创建");if(Z.deleted)J.push("删除");if(Z.title_changed)J.push("标题");if(Z.blocks_changed)J.push(`${Z.blocks_changed} 块修改`);if(Z.blocks_deleted)J.push(`${Z.blocks_deleted} 块删除`);return J.join("、")||"元数据"}function BJ({docId:Z,onClose:J,onReverted:Q}){let{open:X,close:z}=u9(J),[G,W]=f(null),[q,Y]=f(null),[H,F]=f(null),[K,P]=f(null),[A,L]=f(!1),[y,V]=f(!1),[S,M]=f(!1),N=F1(),k=()=>Promise.all([c.documentHistory(Z),c.getDocument(Z)]).then(([B,C])=>{W(B),Y(C),F((_)=>_??B[0]?.version??null)}).catch((B)=>o(String(B.message)));e(()=>{k()},[Z]),e(()=>{if(!H)return P(null);c.documentAt(Z,H).then(P).catch(()=>P(null))},[Z,H]);let v=PZ(()=>(G??[]).filter((B)=>A||B.kind!=="repair"),[G,A]),O=H!=null&&G?.[0]?.version===H,U=async()=>{if(!H||!K)return;if(!await b0({title:"恢复到此版本?",message:`标题和正文将恢复到 ${new Date(K.version?N$(K.version):Date.now()).toLocaleString()} 的状态。此操作会作为一次新修订记录,任何版本都仍可从历史找回。`,confirmLabel:"恢复"}))return;M(!0);try{await c.revertDocument(Z,{to:H,if_match:q?.version}),o("已恢复"),Q(),z()}catch(C){if(C instanceof k9&&C.code==="stale")o("文档刚被其他端修改,已刷新,请重试"),await k();else o(String(C.message))}finally{M(!1)}};return $(n,{children:[$("div",{class:"scrim"+(X?" open":""),onClick:z},void 0,!1,void 0,this),$("div",{class:"peek hist-peek"+(X?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:z,children:$(D,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(D,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"版本历史"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:y,onInput:()=>V(!y)},void 0,!1,void 0,this),"对比当前"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:A,onInput:()=>L(!A)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-split",children:[$("div",{class:"hist-list",children:[G===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),v.map((B)=>$("div",{class:"hist-item"+(H===B.version?" sel":""),onClick:()=>F(B.version),children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(B.at).toLocaleString(),children:K1(B.at)},void 0,!1,void 0,this),$(U1,{kind:B.kind},void 0,!1,void 0,this),G?.[0]?.version===B.version&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:[$("span",{class:"who",children:N(B.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:C$(B)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},B.version,!0,void 0,this))]},void 0,!0,void 0,this),$("div",{class:"hist-preview",children:[K&&$(n,{children:[$("div",{class:"hist-doc-title",children:K.title||"无标题"},void 0,!1,void 0,this),y&&!O?A$(q?.body??"",K.body).map((B,C)=>$("div",{class:"hist-line "+B.kind,children:B.seg?$(n,{children:[B.seg[0],$("span",{class:"seg",children:B.seg[1]},void 0,!1,void 0,this),B.seg[2]]},void 0,!0,void 0,this):B.text},C,!1,void 0,this)):O$(K.body).map((B,C)=>$("div",{class:"hist-block",children:B},C,!1,void 0,this)),!K.body&&$("div",{class:"muted",children:"(空文档)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!K&&H&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-foot",children:$("button",{class:"btn btn-primary",disabled:!H||O||S,onClick:U,children:"恢复到此版本"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function N$(Z){return Number(Z.slice(0,15))||Date.now()}function y$(Z){if(Z.deleted)return"已删除";if(Z.created)return"创建";if(Z.moved&&!Z.diffs.length)return"调整排序";return""}var H1=3;function PJ({dbId:Z,onClose:J}){let{open:Q,close:X}=u9(J),[z,G]=f(null),[W,q]=f(new Map),[Y,H]=f(!1),[F,K]=f(new Set),P=F1();e(()=>{Promise.all([c.databaseActivity(Z),c.listProperties(Z)]).then(([L,y])=>{G(L),q(new Map(y.map((V)=>[V.id,V.name])))}).catch((L)=>o(String(L.message)))},[Z]);let A=(z??[]).filter((L)=>Y||L.kind!=="repair");return $(n,{children:[$("div",{class:"scrim"+(Q?" open":""),onClick:X},void 0,!1,void 0,this),$("div",{class:"peek"+(Q?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:X,children:$(D,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(D,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"最近动态"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:Y,onInput:()=>H(!Y)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body hist-feed",children:[z===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),z!==null&&A.length===0&&$("div",{class:"muted pad",children:"暂无动态。"},void 0,!1,void 0,this),A.map((L)=>{let y=L.record_id+L.version,V=F.has(y),S=V?L.diffs:L.diffs.slice(0,H1),M=y$(L);return $("div",{class:"hist-item static",children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(L.at).toLocaleString(),children:K1(L.at)},void 0,!1,void 0,this),$(U1,{kind:L.kind},void 0,!1,void 0,this),$("span",{class:"hist-recname",children:L.record_title||L.record_id},void 0,!1,void 0,this),M&&$("span",{class:"hist-status",children:M},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:$("span",{class:"who",children:P(L.node_id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),S.length>0&&$("div",{class:"hist-fields",children:[S.map((N)=>$("div",{class:"hist-field",children:[$("span",{class:"fname",children:W.get(N.prop)??"(已删字段)"},void 0,!1,void 0,this),!L.created&&$("span",{class:"old",title:QZ(N.before),children:QZ(N.before)},void 0,!1,void 0,this),!L.created&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",title:QZ(N.after),children:QZ(N.after)},void 0,!1,void 0,this)]},N.prop,!0,void 0,this)),L.diffs.length>H1&&!V&&$("button",{class:"hist-more",onClick:()=>K(new Set(F).add(y)),children:["…还有 ",L.diffs.length-H1," 项"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},y,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function M$(Z,J){let Q=[];if(Z.created)Q.push("创建");if(Z.deleted)Q.push("删除");if(Z.fields.length)Q.push(Z.fields.map((X)=>J.get(X)??"(已删字段)").join("、"));if(Z.moved&&!Q.length)Q.push("排序");return Q.join(";")||"元数据"}function QZ(Z){if(Z===void 0)return"(空)";if(Z===null)return"(空)";if(typeof Z==="string")return Z===""?"(空)":Z;return JSON.stringify(Z)}function OJ({rec:Z,props:J,onReverted:Q}){let[X,z]=f(null),[G,W]=f(null),[q,Y]=f(!1),H=L0(new Map),[,F]=f(0),K=F1(),P=PZ(()=>new Map(J.map((M)=>[M.id,M.name])),[J]),A=()=>c.recordHistory(Z.id).then(z).catch((M)=>o(String(M.message)));e(()=>{A()},[Z.id]);let L=async(M)=>{let N=H.current.get(M);if(N)return N;let k=await c.recordAt(Z.id,M);return H.current.set(M,k),F((v)=>v+1),k},y=(M,N)=>{if(G===M.version)return W(null);if(W(M.version),L(M.version),N)L(N.version)},V=async(M)=>{if(!await b0({title:"恢复到此版本?",message:"记录字段将恢复到该修订时的值。此操作会作为一次新修订记录。",confirmLabel:"恢复"}))return;try{await c.revertRecord(Z.id,M.version),o("已恢复"),H.current.clear(),Q(),await A()}catch(k){o(String(k.message))}},S=(X??[]).filter((M)=>q||M.kind!=="repair");return $("div",{class:"hist-rec",children:[$("div",{class:"hist-rec-head",children:[$("span",{class:"hist-title",children:[$(D,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"修改历史"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:q,onInput:()=>Y(!q)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),X!==null&&S.length===0&&$("div",{class:"muted pad",children:"暂无历史。"},void 0,!1,void 0,this),S.map((M,N)=>{let k=S[N+1],v=H.current.get(M.version),O=k?H.current.get(k.version):void 0,U=M.created&&v?Object.keys(v.data):M.fields;return $("div",{class:"hist-item static",children:[$("div",{class:"row1",onClick:()=>y(M,k),children:[$("span",{class:"when",title:new Date(M.at).toLocaleString(),children:K1(M.at)},void 0,!1,void 0,this),$(U1,{kind:M.kind},void 0,!1,void 0,this),N===0&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$(D,{name:G===M.version?"chevronDown":"chevron",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",onClick:()=>y(M,k),children:[$("span",{class:"who",children:K(M.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:M$(M,P)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G===M.version&&$("div",{class:"hist-fields",children:[!v&&$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this),v&&U.map((B)=>{let C=O?O.data[B]:void 0,_=v.data[B];return $("div",{class:"hist-field",children:[$("span",{class:"fname",children:P.get(B)??"(已删字段)"},void 0,!1,void 0,this),k&&$("span",{class:"old",children:QZ(C)},void 0,!1,void 0,this),k&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",children:QZ(_)},void 0,!1,void 0,this)]},B,!0,void 0,this)}),v&&N!==0&&$("button",{class:"btn btn-secondary hist-restore",onClick:()=>V(M),children:"恢复到此版本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},M.version,!0,void 0,this)})]},void 0,!0,void 0,this)}var p9="\x00__ungrouped__";function wJ({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z,onMove:G}){let W=Z.filter((M)=>M.type==="select"||M.type==="multi_select"),[q,Y]=f(null),H=Z.find((M)=>M.id===q)??W.find((M)=>M.type==="select")??W[0]??null;if(!H)return $("div",{class:"view-placeholder",children:"看板视图需要一个「单选」或「多选」属性来分组。请在表格视图中添加一个单选列后再切换到看板。"},void 0,!1,void 0,this);let F=Z[0],K=H.type==="multi_select",P=H.config?.options??[],A=(M)=>{let N=M.cells[H.id];if(K){let v=(Array.isArray(N)?N:[]).map(String).filter((O)=>P.includes(O));return v.length?v:[p9]}let k=N==null?"":String(N);return k&&P.includes(k)?[k]:[p9]},L=new Map;for(let M of P)L.set(M,[]);L.set(p9,[]);for(let M of J)for(let N of A(M))L.get(N)?.push(M);let y=[...P];if((L.get(p9)?.length??0)>0)y.push(p9);let V=(M,N)=>{if(M.button!==0)return;if(M.target.closest("button,a,input"))return;let k=M.currentTarget.closest(".kcard");if(!k)return;let v=k.getBoundingClientRect();M.preventDefault();let O=M.clientX-v.left,U=M.clientY-v.top,B=null;JZ(M,{onStart:()=>{B=k.cloneNode(!0),B.classList.add("dragging-ghost"),B.style.width=`${v.width}px`,document.body.appendChild(B),k.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(C)=>{$1(B,C.clientX-O,C.clientY-U),U9(),document.elementFromPoint(C.clientX,C.clientY)?.closest?.(".board-col")?.classList.add("drop-into")},onEnd:(C,_)=>{if(B?.remove(),k.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),U9(),!_){z(N.id);return}let T=document.elementFromPoint(C.clientX,C.clientY)?.closest?.(".board-col");if(!T)return;if(!K){let t=T.dataset.colKey,$0=String(N.cells[H.id]??""),g=t===p9?null:t;if(String(g??"")!==$0)Q(N,H,g)}let u=document.elementFromPoint(C.clientX,C.clientY)?.closest?.(".kcard"),E=u?.dataset.recId;if(E&&E!==N.id){let t=u.getBoundingClientRect();G(N.id,E,C.clientY<t.top+t.height/2?"before":"after")}}})};return $("div",{class:"board-wrap",children:[$("div",{class:"board-bar",children:[$("button",{class:"tbtn",onClick:(M)=>I0(M,(N)=>$(n,{children:[$(p0,{children:"按属性分组"},void 0,!1,void 0,this),W.map((k)=>$(W0,{icon:J9[k.type],label:k.name,onClick:()=>{Y(k.id),N()}},k.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(D,{name:"group",cls:"ico sm"},void 0,!1,void 0,this),"分组:",H.name]},void 0,!0,void 0,this),K&&$("span",{class:"muted",style:{fontSize:12},children:"多选分组不支持拖拽改值"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board",children:y.map((M)=>{let N=L.get(M)??[],k=M===p9;return $("div",{class:"board-col","data-col-key":M,children:[$("div",{class:"board-col-head",children:[k?$("span",{class:"muted",style:{fontWeight:600},children:"未分组"},void 0,!1,void 0,this):$(E9,{text:M},void 0,!1,void 0,this),$("span",{class:"board-count",children:N.length},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),$("button",{class:"iconbtn sm",title:"新建记录",onClick:()=>X(k?{}:{[H.id]:M}),children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board-col-body",children:[N.map((v)=>$("div",{class:"kcard","data-rec-id":v.id,onPointerDown:(O)=>V(O,v),children:[$("div",{class:"kcard-title",children:_$(v,F)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z.filter((O)=>O!==F&&O.id!==H.id&&!v$(v.cells[O.id])).slice(0,4).map((O)=>$("div",{class:"kcard-field",children:[$(D,{name:J9[O.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$($Z,{prop:O,val:v.cells[O.id]},void 0,!1,void 0,this)]},O.id,!0,void 0,this))]},v.id,!0,void 0,this)),$("button",{class:"board-add",onClick:()=>X(k?{}:{[H.id]:M}),children:[$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},M,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _$(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function v$(Z){return Z==null||Z===""||Array.isArray(Z)&&Z.length===0}function yZ(Z){if(Z==null)return null;let J=String(Z).trim();if(!J)return null;let Q=/^(\d{4})-(\d{2})-(\d{2})/.exec(J);if(Q)return new Date(Number(Q[1]),Number(Q[2])-1,Number(Q[3]));let X=new Date(J);return Number.isNaN(X.getTime())?null:new Date(X.getFullYear(),X.getMonth(),X.getDate())}function K9(Z){let J=Z.getFullYear(),Q=String(Z.getMonth()+1).padStart(2,"0"),X=String(Z.getDate()).padStart(2,"0");return`${J}-${Q}-${X}`}function i0(Z,J){return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()+J)}function L1(Z,J){return Z.getFullYear()===J.getFullYear()&&Z.getMonth()===J.getMonth()&&Z.getDate()===J.getDate()}function k$(Z,J){return new Date(Z,J,1)}function T$(Z,J){return new Date(Z,J+1,0)}function XZ(Z,J){let Q=Date.UTC(Z.getFullYear(),Z.getMonth(),Z.getDate()),X=Date.UTC(J.getFullYear(),J.getMonth(),J.getDate());return Math.round((X-Q)/86400000)}function q8(){let Z=new Date;return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate())}function R$(Z){let J=(Z.getDay()+6)%7;return i0(Z,-J)}function AJ(Z,J){let Q=R$(k$(Z,J)),X=T$(Z,J),z=[],G=Q;while(G<=X||z.length===0||G.getDay()!==1){let W=[];for(let q=0;q<7;q++)W.push(i0(G,q));if(z.push(W),G=i0(G,7),z.length>=6)break}return z}var I$=["一","二","三","四","五","六","日"],B1=3;function CJ({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z}){let G=Z.filter((O)=>O.type==="date"),[W,q]=f(null),Y=Z.find((O)=>O.id===W)??G[0]??null,H=q8(),[F,K]=f({y:H.getFullYear(),m:H.getMonth()}),P=L0(null);if(!Y)return $("div",{class:"view-placeholder",children:"日历视图需要一个「日期」属性。请在表格视图中添加一个日期列后再切换到日历。"},void 0,!1,void 0,this);let A=Z[0],L=AJ(F.y,F.m),y=J.map((O)=>({rec:O,date:yZ(O.cells[Y.id])})).filter((O)=>O.date!=null),V=(O)=>y.filter((U)=>L1(U.date,O)),S=(O)=>{let U=F.m+O;K({y:F.y+Math.floor(U/12),m:(U%12+12)%12})},M=()=>K({y:H.getFullYear(),m:H.getMonth()}),N=()=>document.querySelectorAll(".cal-day.drop-into").forEach((O)=>O.classList.remove("drop-into")),k=(O,U)=>{if(O.button!==0)return;O.preventDefault(),O.stopPropagation(),P.current={id:U.id,pointerId:O.pointerId,startX:O.clientX,startY:O.clientY,active:!1,ghost:null};let B=(_)=>{let T=P.current;if(!T||T.pointerId!==_.pointerId)return;if(!T.active){if(Math.hypot(_.clientX-T.startX,_.clientY-T.startY)<4)return;T.active=!0,T.ghost=S$(Y8(U,A)),document.body.classList.add("table-dragging")}if(_.preventDefault(),T.ghost)T.ghost.style.transform=`translate3d(${Math.round(_.clientX+8)}px, ${Math.round(_.clientY+8)}px, 0)`;N(),document.elementFromPoint(_.clientX,_.clientY)?.closest?.(".cal-day")?.classList.add("drop-into")},C=(_)=>{let T=P.current;if(!T||T.pointerId!==_.pointerId)return;if(removeEventListener("pointermove",B),removeEventListener("pointerup",C),removeEventListener("pointercancel",C),T.ghost?.remove(),document.body.classList.remove("table-dragging"),N(),P.current=null,!T.active){z(U.id);return}let E=document.elementFromPoint(_.clientX,_.clientY)?.closest?.(".cal-day")?.dataset.iso;if(E&&E!==String(U.cells[Y.id]??""))Q(U,Y,E)};addEventListener("pointermove",B,{passive:!1}),addEventListener("pointerup",C),addEventListener("pointercancel",C)},v=(O)=>I0(O,(U)=>$(n,{children:[$(p0,{children:"按日期属性"},void 0,!1,void 0,this),G.map((B)=>$(W0,{icon:J9[B.type],label:B.name,onClick:()=>{q(B.id),U()}},B.id,!1,void 0,this))]},void 0,!0,void 0,this));return $("div",{class:"cal",children:[$("div",{class:"cal-nav",children:[$("button",{class:"iconbtn",title:"上个月",onClick:()=>S(-1),children:$(D,{name:"chevron",cls:"ico flip"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"cal-title",children:[F.y," 年 ",F.m+1," 月"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"下个月",onClick:()=>S(1),children:$(D,{name:"chevron",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"tbtn",onClick:M,children:"今天"},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),G.length>1&&$("button",{class:"tbtn",onClick:v,children:[$(D,{name:"calendar",cls:"ico sm"},void 0,!1,void 0,this),Y.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-grid cal-head",children:I$.map((O)=>$("div",{class:"cal-wd",children:O},O,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"cal-body",children:L.map((O,U)=>$("div",{class:"cal-grid cal-week",children:O.map((B)=>{let C=B.getMonth()!==F.m,_=L1(B,H),T=V(B),u=K9(B);return $("div",{class:"cal-day"+(C?" dim":"")+(_?" today":""),"data-iso":u,onClick:(E)=>{if(E.target.closest(".cal-ev,.cal-add,.cal-more"))return;X({[Y.id]:u})},children:[$("div",{class:"cal-daynum",children:[$("span",{children:B.getDate()},void 0,!1,void 0,this),$("button",{class:"cal-add",title:"新建记录",onClick:(E)=>{E.stopPropagation(),X({[Y.id]:u})},children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-events",children:[T.slice(0,B1).map(({rec:E})=>$("div",{class:"cal-ev",style:{["--c"]:Y1(Y8(E,A)||E.id)},onPointerDown:(t)=>k(t,E),children:Y8(E,A)||"无标题"},E.id,!1,void 0,this)),T.length>B1&&$("button",{class:"cal-more",onClick:(E)=>{E.stopPropagation(),I0(E,(t)=>$(n,{children:[$(p0,{children:[u," · ",T.length," 条记录"]},void 0,!0,void 0,this),T.map(({rec:$0})=>$(W0,{label:Y8($0,A)||"无标题",onClick:()=>{t(),z($0.id)}},$0.id,!1,void 0,this))]},void 0,!0,void 0,this))},children:["+",T.length-B1," 更多"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},u,!0,void 0,this)})},U,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Y8(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function S$(Z){let J=document.createElement("div");return J.className="drag-ghost",J.textContent=Z||"移动记录",document.body.appendChild(J),J}var T9=200,MZ=36,_Z=44,t0=28,NJ=3;function MJ({props:Z,records:J,onCommitValue:Q,onOpenRecord:X}){let z=Z.filter((I)=>I.type==="date"),[G,W]=f(null),[q,Y]=f(null),H=Z.find((I)=>I.id===G)??z[0]??null,F=q==="none"?null:Z.find((I)=>I.id===q)??z.find((I)=>I!==H)??null,K=L0(null),P=L0(null);if(!H)return $("div",{class:"view-placeholder",children:"时间轴视图需要一个「日期」属性作为开始日期。请在表格视图中添加一个日期列后再切换到时间轴。"},void 0,!1,void 0,this);let A=Z[0],L=q8(),y=J.map((I)=>{let h=yZ(I.cells[H.id]),m=F?yZ(I.cells[F.id]):null;return{rec:I,s:h,e:m&&h&&m<h?h:m}}),V=y.filter((I)=>I.s),S=L,M=L;if(V.length){S=V[0].s,M=V[0].s;for(let I of V){if(I.s<S)S=I.s;let h=I.e??I.s;if(h>M)M=h}}else S=i0(L,-10),M=i0(L,14);let N=i0(S,-NJ),k=i0(M,NJ),v=XZ(N,k)+1,O=T9+v*t0,U=(I)=>T9+I*t0,B=XZ(N,L),C=[];for(let I=0;I<v;I++)C.push(i0(N,I));let _=(I,h,m,z0,X0)=>{if(X0===0)return;if(z0==="move"){if(h)Q(I,H,K9(i0(h,X0)));if(F&&m)Q(I,F,K9(i0(m,X0)))}else if(z0==="l"&&h){let Y0=i0(h,X0);Q(I,H,K9(m&&Y0>m?m:Y0))}else if(z0==="r"&&F&&m){let Y0=i0(m,X0);Q(I,F,K9(h&&Y0<h?h:Y0))}},T=(I,h)=>{let m=P.current;if(!m)return;m.style.left=I+"px",m.style.display="block";let z0=m.firstElementChild;if(z0)z0.textContent=h},u=()=>{if(P.current)P.current.style.display="none"},E=(I,h,m,z0,X0,Y0)=>{if(I.button!==0||!m)return;I.preventDefault(),I.stopPropagation();let{offsetLeft:p,offsetWidth:Q0}=Y0,j0=!1,r0=X0==="move"?null:I.currentTarget;r0?.classList.add("dragging"),K.current={pointerId:I.pointerId,startX:I.clientX};let a0=(h0)=>{let G0=K.current;if(!G0||G0.pointerId!==h0.pointerId)return;let b=Math.round((h0.clientX-G0.startX)/t0);if(Math.abs(h0.clientX-G0.startX)>3)j0=!0;let x,r;if(X0==="move"){let l=p+b*t0;Y0.style.left=l+"px",x=l,r=i0(m,b)}else if(X0==="l"){let l=p+b*t0;Y0.style.left=l+"px",Y0.style.width=Math.max(t0,Q0-b*t0)+"px",x=l,r=i0(m,b)}else{let l=Math.max(t0,Q0+b*t0);Y0.style.width=l+"px",x=p+l,r=i0(m,Math.round(l/t0)-1)}T(x,K9(r))},O0=(h0)=>{let G0=K.current;if(!G0||G0.pointerId!==h0.pointerId)return;removeEventListener("pointermove",a0),removeEventListener("pointerup",O0),removeEventListener("pointercancel",O0),K.current=null,r0?.classList.remove("dragging"),u();let b=Math.round((h0.clientX-G0.startX)/t0);if(!j0){X(h.id);return}_(h,m,z0,X0,b)};addEventListener("pointermove",a0,{passive:!1}),addEventListener("pointerup",O0),addEventListener("pointercancel",O0)},t=(I,h)=>{if(Q(I,H,K9(h)),F)Q(I,F,K9(h))},$0=(I,h)=>{let m=I.currentTarget.closest(".tl-row");if(!m)return;let z0=I.clientX-m.getBoundingClientRect().left;if(z0<T9)return;let X0=Math.max(0,Math.min(v-1,Math.round((z0-T9)/t0)));t(h,i0(N,X0))};return $("div",{class:"tl",children:[$("div",{class:"tl-toolbar",children:$("button",{class:"tbtn",onClick:(I)=>I0(I,(h)=>$(n,{children:[$(p0,{children:"开始日期"},void 0,!1,void 0,this),z.map((m)=>$(W0,{icon:J9[m.type],label:m.name,checked:m===H,onClick:()=>{W(m.id),h()}},m.id,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this),$(p0,{children:"结束日期(可选)"},void 0,!1,void 0,this),$(W0,{icon:"x",label:"无(里程碑)",checked:!F,onClick:()=>{Y("none"),h()}},void 0,!1,void 0,this),z.map((m)=>$(W0,{icon:J9[m.type],label:m.name,checked:m===F,onClick:()=>{Y(m.id),h()}},m.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(D,{name:"timeline",cls:"ico sm"},void 0,!1,void 0,this),H.name,F?` → ${F.name}`:"(里程碑)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"tl-scroll",children:$("div",{class:"tl-canvas",style:{width:O,height:_Z+y.length*MZ+8},children:[$("div",{class:"tl-axis",style:{height:_Z},children:[$("div",{class:"tl-corner",style:{width:T9},children:"记录"},void 0,!1,void 0,this),C.map((I,h)=>{let m=I.getDate()===1;return $("div",{class:"tl-tick"+(m?" mstart":"")+(XZ(I,L)===0?" today":""),style:{left:U(h),width:t0},children:[m&&$("span",{class:"tl-month",children:[I.getMonth()+1,"月"]},void 0,!0,void 0,this),$("span",{class:"tl-dnum",children:I.getDate()},void 0,!1,void 0,this)]},h,!0,void 0,this)})]},void 0,!0,void 0,this),y.map(({rec:I,s:h,e:m},z0)=>{let X0=h?XZ(N,h):0,Y0=h&&m?XZ(h,m)+1:1;return $("div",{class:"tl-row",style:{top:_Z+z0*MZ,height:MZ},children:[$("div",{class:"tl-rowlabel",style:{width:T9},children:yJ(I,A)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!h?$("div",{class:"tl-track-empty",style:{left:T9},onClick:(p)=>$0(p,I),title:"点击空白处排期",children:$("button",{class:"tl-schedule",style:{left:T9+8},onClick:(p)=>{p.stopPropagation(),t(I,L)},children:"未排期 · 排到今天"},void 0,!1,void 0,this)},void 0,!1,void 0,this):m?$("div",{class:"tl-item",style:{left:U(X0),width:Y0*t0},onPointerDown:(p)=>E(p,I,h,m,"move",p.currentTarget),children:[$("span",{class:"tl-h l",onPointerDown:(p)=>E(p,I,h,m,"l",p.currentTarget.parentElement)},void 0,!1,void 0,this),$("span",{class:"tl-label",children:yJ(I,A)},void 0,!1,void 0,this),$("span",{class:"tl-h r",onPointerDown:(p)=>E(p,I,h,m,"r",p.currentTarget.parentElement)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("div",{class:"tl-milestone",style:{left:U(X0)},title:K9(h),onPointerDown:(p)=>E(p,I,h,null,"move",p.currentTarget)},void 0,!1,void 0,this)]},I.id,!0,void 0,this)}),B>=0&&B<v&&$("div",{class:"tl-today",style:{left:U(B)+t0/2,height:_Z+y.length*MZ}},void 0,!1,void 0,this),$("div",{class:"tl-guide",ref:P,style:{display:"none",height:_Z+y.length*MZ},children:$("span",{class:"tl-guide-label"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function yJ(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}var V$=[["表格","list"],["看板","group"],["日历","calendar"],["时间轴","timeline"]];function P1(Z){return{r0:Math.min(Z.a.r,Z.b.r),r1:Math.max(Z.a.r,Z.b.r),c0:Math.min(Z.a.c,Z.b.c),c1:Math.max(Z.a.c,Z.b.c)}}function vJ({db:Z,onError:J}){let[Q,X]=f([]),[z,G]=f([]),[W,q]=f(0),[Y,H]=f(new Set),[F,K]=f(null),[P,A]=f(null),L=L0(P);L.current=P;let[y,V]=f(null),[S,M]=f(null),N=(b)=>b.config?.width??180,k=L0(!1),v=(b)=>b().catch((x)=>J(String(x.message))),O=async()=>{let[b,x]=await Promise.all([c.listProperties(Z.id),c.listRecords(Z.id)]);X(b),G(x)};e(()=>{H(new Set),V(null),q(0),M(null),A(null),O().catch((b)=>J(String(b.message)))},[Z.id]),e(()=>{let b=(x)=>{if(!x.detail?.datasets?.some((l)=>l==="records"||l==="properties"))return;if(L.current)return;O().catch(()=>{})};return document.addEventListener(h9,b),()=>document.removeEventListener(h9,b)},[Z.id]);let U=(b,x,r)=>{A(null),G((l)=>l.map((F0)=>F0.id===b.id?{...F0,cells:{...F0.cells,[x.id]:r},values:{...F0.values,[x.name]:r}}:F0)),c.updateRecord(b.id,{[x.id]:r}).then((l)=>G((F0)=>F0.map((d)=>d.id===l.id?l:d))).catch((l)=>{J(String(l.message)),O().catch((F0)=>J(String(F0.message)))})},B=(b)=>v(async()=>{let x=await c.createRecord(Z.id,b);G((r)=>[...r,x])}),C=()=>B({}),_=(b)=>v(async()=>{if(await Promise.all(b.map((x)=>c.deleteRecord(x))),G((x)=>x.filter((r)=>!b.includes(r.id))),H(new Set),y&&b.includes(y))V(null)}),T=(b)=>v(async()=>{let x=await c.createRecord(Z.id,b.cells);G((r)=>{let l=r.findIndex((F0)=>F0.id===b.id);return[...r.slice(0,l+1),x,...r.slice(l+1)]})}),u=(b,x,r)=>{if(b===x||F)return;G((l)=>_J(l,b,x,r))},E=(b,x,r)=>{if(b===x||F)return;u(b,x,r),c.moveRecord(b,x,r).catch((l)=>{J(String(l.message)),O().catch((F0)=>J(String(F0.message)))})},t=(b,x,r)=>{if(b===x)return;X((l)=>{let F0=_J(l,b,x,r).map((s,k0)=>({...s,position:k0+1})),d=new Map(l.map((s)=>[s.id,s.position])),P0=F0.filter((s)=>d.get(s.id)!==s.position);if(P0.length)Promise.all(P0.map((s)=>c.updateProperty(s.id,{position:s.position}))).catch((s)=>{J(String(s.message)),O().catch((k0)=>J(String(k0.message)))});return F0})},$0=(b,x)=>{if(F||b.button!==0)return;let r=b.currentTarget.closest("tr");if(!r)return;b.preventDefault(),Q1(b,{source:r,axis:"y",ghostCls:"row-ghost",ghostText:b$(r),targetSelector:"tr[data-row-id]",isSelf:(l)=>l.dataset.rowId===x.id,onDrop:(l,F0)=>E(x.id,l.dataset.rowId,F0)})},g=(b,x)=>{if(b.button!==0)return;let r=b.currentTarget.closest("th");if(!r)return;Q1(b,{source:r,axis:"x",ghostCls:"col-ghost",ghostText:r.textContent?.trim()||"移动属性",targetSelector:"th[data-col-id]",isSelf:(l)=>l.dataset.colId===x.id,onActivate:()=>{k.current=!0},onDrop:(l,F0)=>t(x.id,l.dataset.colId,F0),onFinish:(l)=>{if(l)setTimeout(()=>{k.current=!1},0)}})},I=(b,x,r)=>{if(b.button!==0)return;if(b.target.closest("input,button,a"))return;let l=b.shiftKey&&S?S.a:{r:x,c:r};M({a:l,b:{r:x,c:r}}),JZ(b,{onStart:()=>document.body.classList.add("cell-selecting"),onMove:(F0)=>{let d=document.elementFromPoint(F0.clientX,F0.clientY)?.closest?.("td.cell-td");if(!d||d.dataset.r==null)return;M({a:l,b:{r:Number(d.dataset.r),c:Number(d.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},h=(b)=>b!=="checkbox"&&b!=="select"&&b!=="multi_select",m=(b,x,r)=>Math.max(x,Math.min(r,b)),z0=(b,x)=>requestAnimationFrame(()=>{document.querySelector(`td.cell-td[data-r="${b}"][data-c="${x}"]`)?.scrollIntoView({block:"nearest",inline:"nearest"})}),X0=(b,x)=>{M({a:{r:b,c:x},b:{r:b,c:x}}),z0(b,x)},Y0=(b,x,r)=>{let l=O0[b],F0=Q[x];if(!l||!F0)return;if(X0(b,x),h(F0.type))A({rec:l.id,prop:F0.id,seed:r})},p=(b,x,r)=>{let l=x+r;if(l<0||l>=Q.length){X0(b,x);return}Y0(b,l)},Q0=(b)=>v(async()=>{if(!S)return;let{r0:x,r1:r,c0:l,c1:F0}=P1(S),d=Q.slice(l,F0+1),P0=O0.slice(x,r+1),s=await Promise.all(P0.map((k0)=>{let T0={};for(let w0 of d)T0[w0.id]=b(w0);return c.updateRecord(k0.id,T0)}));G((k0)=>k0.map((T0)=>s.find((w0)=>w0.id===T0.id)??T0))}),j0=async()=>{if(!S)return;let{r0:b,r1:x,c0:r,c1:l}=P1(S),F0=Q.slice(r,l+1),d=O0.slice(b,x+1).map((P0)=>F0.map((s)=>UJ(s,P0.cells[s.id])).join("\t")).join(`
|
|
9
|
-
`);try{await navigator.clipboard.writeText(d)}catch{}},r0=F?Q.find((b)=>b.id===F.id):void 0,a0=(b)=>{let x=b==null||b===""?NaN:Number(b);return Number.isFinite(x)?x:Number.NEGATIVE_INFINITY},O0=F?[...z].sort((b,x)=>{let r=b.cells[F.id],l=x.cells[F.id],F0=r0?.type==="number"?a0(r)-a0(l):String(r??"").localeCompare(String(l??""),"zh");return(F.desc?-1:1)*F0}):z,h0=z.find((b)=>b.id===y)??null,G0=S?P1(S):null;return e(()=>{let b=(x)=>{if(!S||P)return;let r=document.activeElement,l=(r?.tagName||"").toLowerCase();if(l==="input"||l==="textarea"||r?.isContentEditable)return;let F0=S.a.r===S.b.r&&S.a.c===S.b.c,{r:d,c:P0}=S.b,s={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(x.key in s){x.preventDefault();let[k0,T0]=s[x.key],w0={r:m(d+k0,0,O0.length-1),c:m(P0+T0,0,Q.length-1)};M(x.shiftKey?{a:S.a,b:w0}:{a:w0,b:w0}),z0(w0.r,w0.c)}else if((x.metaKey||x.ctrlKey)&&x.key.toLowerCase()==="c")x.preventDefault(),j0();else if(x.key==="Escape")M(null);else if(x.key==="Delete"||x.key==="Backspace")x.preventDefault(),Q0(()=>null);else if(F0&&(x.key==="Enter"||x.key==="F2"))x.preventDefault(),Y0(d,P0);else if(F0&&x.key.length===1&&!x.metaKey&&!x.ctrlKey&&!x.altKey&&!x.isComposing&&x.keyCode!==229){let k0=Q[P0];if(!k0||!h(k0.type)||k0.type==="date")return;if(k0.type==="number"&&!/[0-9.+-]/.test(x.key))return;x.preventDefault(),Y0(d,P0,x.key)}};return addEventListener("keydown",b),()=>removeEventListener("keydown",b)},[S,P,z,Q,F]),$("div",{class:"db",onPointerDown:(b)=>{if(!b.target.closest("td.cell-td, .cellselbar"))M(null)},children:[$("div",{class:"db-head",children:[$("div",{class:"db-icon",children:Z.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("div",{children:$("div",{class:"db-title",contentEditable:!0,onBlur:(b)=>{let x=b.target.textContent?.trim()||Z.name;if(x!==Z.name)v(async()=>{await c.updateDatabase(Z.id,{name:x})})},children:Z.name},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"views",children:[V$.map(([b,x],r)=>$("div",{class:"view-tab"+(r===W?" active":""),onClick:()=>q(r),children:[$(D,{name:x},void 0,!1,void 0,this),b]},b,!0,void 0,this)),$("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:C,children:[$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),W===0&&$("div",{class:"toolbar",children:$("button",{class:"tbtn",onClick:(b)=>m$(b,Q,F,K),children:[$(D,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),"排序"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),W===1?$(wJ,{props:Q,records:z,onCommitValue:U,onCreate:B,onOpenRecord:V,onMove:E},void 0,!1,void 0,this):W===2?$(CJ,{props:Q,records:z,onCommitValue:U,onCreate:B,onOpenRecord:V},void 0,!1,void 0,this):W===3?$(MJ,{props:Q,records:z,onCommitValue:U,onCreate:B,onOpenRecord:V},void 0,!1,void 0,this):$("div",{class:"tablewrap",children:[$("div",{class:"tablescroll",children:$("table",{class:"grid",children:[$("colgroup",{children:[$("col",{style:{width:38}},void 0,!1,void 0,this),$("col",{style:{width:26}},void 0,!1,void 0,this),Q.map((b)=>$("col",{"data-col-id":b.id,style:{width:N(b)}},b.id,!1,void 0,this)),$("col",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("thead",{children:$("tr",{children:[$("th",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.size>0&&Y.size===z.length,onChange:(b)=>H(b.target.checked?new Set(z.map((x)=>x.id)):new Set)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("th",{class:"gripcol"},void 0,!1,void 0,this),Q.map((b)=>$("th",{"data-col-id":b.id,children:[$("div",{class:"colhead",onPointerDown:(x)=>g(x,b),onClick:(x)=>{if(k.current){k.current=!1,x.preventDefault(),x.stopPropagation();return}x$(x,b,Z.id,O,Q)},children:[$("span",{class:"ti",children:$(D,{name:J9[b.type]??"text",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"nm",children:b.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(g$,{colId:b.id,startWidth:N(b),onCommit:(x)=>{X((r)=>r.map((l)=>l.id===b.id?{...l,config:{...l.config??{},width:x}}:l)),c.setColumnWidth(b.id,x).catch((r)=>{J(String(r.message)),O().catch(()=>{})})}},void 0,!1,void 0,this)]},b.id,!0,void 0,this)),$("th",{class:"addcol",children:$("div",{class:"colhead",title:"新建属性",onClick:(b)=>h$(b,Z.id,Q,O),children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("tbody",{children:O0.map((b,x)=>$("tr",{"data-row-id":b.id,class:Y.has(b.id)?"sel":"",children:[$("td",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.has(b.id),onChange:()=>H((r)=>{let l=new Set(r);return l.has(b.id)?l.delete(b.id):l.add(b.id),l})},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("td",{class:"rowgrip",title:F?"清除排序后可拖拽移动":"拖拽移动","aria-disabled":F?"true":void 0,onPointerDown:(r)=>$0(r,b),children:$(D,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((r,l)=>{let F0=G0!=null&&x>=G0.r0&&x<=G0.r1&&l>=G0.c0&&l<=G0.c1,d;if(F0&&G0){let P0=[];if(x===G0.r0)P0.push("inset 0 2px 0 0 var(--accent)");if(x===G0.r1)P0.push("inset 0 -2px 0 0 var(--accent)");if(l===G0.c0)P0.push("inset 2px 0 0 0 var(--accent)");if(l===G0.c1)P0.push("inset -2px 0 0 0 var(--accent)");d=P0.join(",")||void 0}return $("td",{class:"cell-td"+(F0?" cellsel":""),"data-r":x,"data-c":l,style:d?{boxShadow:d}:void 0,onPointerDown:(P0)=>I(P0,x,l),children:$(f$,{rec:b,prop:r,first:l===0,editing:P?.rec===b.id&&P?.prop===r.id,seed:P?.rec===b.id&&P?.prop===r.id?P.seed:void 0,onEdit:()=>{X0(x,l),A({rec:b.id,prop:r.id})},onCommit:(P0)=>U(b,r,P0),onDone:(P0)=>{if(A(null),P0.reason!=="cancel"&&P0.changed)U(b,r,P0.value);if(P0.reason==="tab")p(x,l,1);else if(P0.reason==="shifttab")p(x,l,-1);else if(P0.reason==="enter")X0(m(x+1,0,O0.length-1),l)},onOpen:()=>V(b.id),onRowMenu:(P0)=>u$(P0,b,()=>V(b.id),()=>T(b),()=>_([b.id]))},void 0,!1,void 0,this)},r.id,!1,void 0,this)}),$("td",{class:"filler"},void 0,!1,void 0,this)]},b.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"addrow",onClick:C,children:[$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建记录"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",z.length," 条记录"]},void 0,!0,void 0,this),$("span",{children:[Q.length," 个属性"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y.size>0&&$("div",{class:"selbar",children:[$("span",{class:"cnt",children:[Y.size," 已选"]},void 0,!0,void 0,this),$("button",{onClick:()=>v(async()=>{for(let b of Y)await T(z.find((x)=>x.id===b))}),children:[$(D,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:async()=>{if(await b0({title:"删除记录?",message:`确定删除选中的 ${Y.size} 条记录?`,confirmLabel:"删除",danger:!0}))_([...Y])},children:[$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除"]},void 0,!0,void 0,this),$("button",{onClick:()=>H(new Set),children:$(D,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G0&&(G0.r0!==G0.r1||G0.c0!==G0.c1)&&$("div",{class:"selbar cellselbar",children:[$("span",{class:"cnt",children:[(G0.r1-G0.r0+1)*(G0.c1-G0.c0+1)," 个单元格"]},void 0,!0,void 0,this),$("button",{onClick:j0,children:[$(D,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{onClick:()=>Q0((b)=>O0[G0.r0].cells[b.id]??null),children:[$(D,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"填充"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:()=>Q0(()=>null),children:[$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清空"]},void 0,!0,void 0,this),$("button",{onClick:()=>M(null),children:$(D,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),h0&&$(E$,{db:Z,props:Q,rec:h0,onClose:()=>V(null),onCommit:(b,x)=>U(h0,b,x),onDelete:()=>_([h0.id]),onDuplicate:()=>T(h0),onReverted:()=>O().catch((b)=>J(String(b.message)))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function kJ({prop:Z,val:J,seed:Q,captureTab:X,onDone:z}){let G=Array.isArray(J)?J.join(", "):J==null?"":String(J),W=L0(null),q=L0(!1);e(()=>{let H=W.current;H.value=Q??G,H.focus();try{H.setSelectionRange(H.value.length,H.value.length)}catch{}},[]);let Y=(H)=>{if(q.current)return;if(q.current=!0,H==="cancel")return z({reason:"cancel"});let F=W.current.value;z({reason:H,changed:F!==G,value:FJ(Z.type,F)})};return $("input",{ref:W,class:"inlineedit",type:Z.type==="number"?"number":Z.type==="date"?"date":"text",onBlur:()=>Y("blur"),onKeyDown:(H)=>{if(H.isComposing||H.keyCode===229)return;if(H.key==="Enter")H.preventDefault(),Y("enter");else if(H.key==="Escape")H.preventDefault(),H.stopPropagation(),Y("cancel");else if(H.key==="Tab"&&X)H.preventDefault(),Y(H.shiftKey?"shifttab":"tab")}},void 0,!1,void 0,this)}function f$({rec:Z,prop:J,first:Q,editing:X,seed:z,onEdit:G,onCommit:W,onDone:q,onOpen:Y,onRowMenu:H}){let F=Z.cells[J.id];if(J.type==="checkbox")return $("div",{class:"cell center",children:$("input",{type:"checkbox",checked:!!F,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>W(!F)},void 0,!1,void 0,this)},void 0,!1,void 0,this);let K=(L)=>{if(J.type==="select"||J.type==="multi_select")TJ(L,J,F,W);else G()},P=$($Z,{prop:J,val:F},void 0,!1,void 0,this);return $(n,{children:[Q?$("div",{class:"cell",onDblClick:K,onContextMenu:(L)=>{L.preventDefault(),H(L)},children:$("div",{class:"firstcell",children:[P,$("div",{class:"rowactions",children:$("button",{class:"rowopen",title:"打开",onClick:(L)=>{L.stopPropagation(),Y()},children:$(D,{name:"openPeek",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this):$("div",{class:"cell",onDblClick:K,children:P},void 0,!1,void 0,this),X&&J.type!=="select"&&J.type!=="multi_select"&&$("div",{class:"celledit",children:$(kJ,{prop:J,val:F,seed:z,captureTab:!0,onDone:q},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _J(Z,J,Q,X){let z=[...Z],G=z.findIndex((Y)=>Y.id===J);if(G<0)return Z;let W=z.splice(G,1)[0],q=z.findIndex((Y)=>Y.id===Q);if(q<0)return Z;if(X==="after")q+=1;return z.splice(q,0,W),z}function b$(Z){return Array.from(Z.querySelectorAll("td")).map((Q)=>(Q.textContent??"").trim()).filter(Boolean).join(" ")||"移动记录"}function g$({colId:Z,startWidth:J,onCommit:Q}){return $("div",{class:"col-resizer",onPointerDown:(z)=>{z.preventDefault(),z.stopPropagation(),z8(z,{col:document.querySelector(`col[data-col-id="${CSS.escape(Z)}"]`),startWidth:J,min:80,onDone:Q})}},void 0,!1,void 0,this)}function TJ(Z,J,Q,X){Z.stopPropagation();let z=J.type==="multi_select",G=J.config?.options??[];I0(Z,(W)=>$(j$,{multi:z,options:G,value:Q,onPick:(q)=>{if(X(q),!z)W()}},void 0,!1,void 0,this))}function j$({multi:Z,options:J,value:Q,onPick:X}){let[z,G]=f(Q),W=(Y)=>Z?Array.isArray(z)?z.includes(Y):!1:z===Y,q=(Y)=>{if(Z){let H=new Set(Array.isArray(z)?z:[]);H.has(Y)?H.delete(Y):H.add(Y);let F=[...H];G(F),X(F)}else G(Y),X(Y)};return $(n,{children:[$(p0,{children:Z?"多选 — 点选切换":"单选"},void 0,!1,void 0,this),J.map((Y)=>$("button",{class:"item",onClick:()=>q(Y),children:[$(E9,{text:Y},void 0,!1,void 0,this),W(Y)&&$("span",{class:"chk",children:$(D,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},Y,!0,void 0,this)),Z&&Array.isArray(z)&&z.length>0&&$(n,{children:[$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"x",label:"清空",onClick:()=>{G([]),X([])}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function x$(Z,J,Q,X,z){Z.stopPropagation(),I0(Z,(G)=>$(D$,{prop:J,dbId:Q,reload:X,close:G,allProps:z},void 0,!1,void 0,this),{minWidth:252})}function D$({prop:Z,dbId:J,reload:Q,close:X,allProps:z}){let[G,W]=f(Z.name),[q,Y]=f(Z.type),[H,F]=f(Z.config?.options??[]),K=(L)=>c.updateProperty(Z.id,L).then(Q).catch((y)=>o(`更新属性失败:${y.message}`)),P=(L)=>{Y(L);let y=H;if((L==="select"||L==="multi_select")&&y.length===0)y=["选项 1","选项 2"],F(y);K({type:L,...L==="select"||L==="multi_select"?{config:{options:y}}:{}})},A=(L)=>{F(L),K({config:{options:L}})};return $(n,{children:[$("input",{class:"field",value:G,onInput:(L)=>W(L.target.value),onBlur:()=>G&&G!==Z.name&&K({name:G}),onKeyDown:(L)=>{if(L.key==="Enter")L.target.blur(),X()}},void 0,!1,void 0,this),$(p0,{children:"属性类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(e9).map((L)=>$("button",{class:"item"+(L===q?" sel":""),onClick:()=>P(L),children:[$("span",{class:"lico",children:$(D,{name:J9[L],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:e9[L].t},void 0,!1,void 0,this)]},L,!0,void 0,this))},void 0,!1,void 0,this),(q==="select"||q==="multi_select")&&$(n,{children:[$(f0,{},void 0,!1,void 0,this),$(p0,{children:"选项"},void 0,!1,void 0,this),H.map((L,y)=>$("div",{class:"optrow",children:[$(E9,{text:L},void 0,!1,void 0,this),$("button",{class:"x",onClick:()=>A(H.filter((V,S)=>S!==y)),children:$(D,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L+y,!0,void 0,this)),$(W0,{icon:"plus",label:"添加选项",onClick:()=>A([...H,"选项 "+(H.length+1)])},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{X(),c.createProperty({db:J,name:RJ("新属性",z),type:"text"}).then(Q).catch((L)=>o(`新建属性失败:${L.message}`))}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除属性",danger:!0,onClick:async()=>{if(X(),await b0({title:"删除属性?",message:`「${Z.name}」及其所有单元格数据将被移除。`,confirmLabel:"删除",danger:!0}))c.deleteProperty(Z.id).then(Q)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function RJ(Z,J){let Q=new Set(J.map((X)=>X.name.toLowerCase()));if(!Q.has(Z.toLowerCase()))return Z;for(let X=2;;X++){let z=`${Z} ${X}`;if(!Q.has(z.toLowerCase()))return z}}function h$(Z,J,Q,X){Z.stopPropagation(),I0(Z,(z)=>$(n,{children:[$(p0,{children:"新建属性 · 选择类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(e9).map((G)=>$("button",{class:"item",onClick:()=>{z();let W=G==="select"||G==="multi_select"?{options:["选项 1","选项 2"]}:void 0;c.createProperty({db:J,name:RJ(e9[G].t,Q),type:G,config:W}).then(X).catch((q)=>o(`新建属性失败:${q.message}`))},children:[$("span",{class:"lico",children:$(D,{name:J9[G],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:e9[G].t},void 0,!1,void 0,this)]},G,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function m$(Z,J,Q,X){I0(Z,(z)=>$(n,{children:[$(p0,{children:"排序依据"},void 0,!1,void 0,this),J.map((G)=>$(W0,{icon:J9[G.type],label:G.name,onClick:()=>{X({id:G.id,desc:Q?.id===G.id?!Q.desc:!1}),z()}},G.id,!1,void 0,this)),Q&&$(n,{children:[$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"x",label:"清除排序",onClick:()=>{X(null),z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function u$(Z,J,Q,X,z){Z.stopPropagation(),I0(Z,(G)=>$(n,{children:[$(W0,{icon:"cornerUpRight",label:"打开记录",onClick:()=>{G(),Q()}},void 0,!1,void 0,this),$(W0,{icon:"copy",label:"复制记录",onClick:()=>{G(),X()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(G(),await b0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function E$({db:Z,props:J,rec:Q,onClose:X,onCommit:z,onDelete:G,onDuplicate:W,onReverted:q}){let[Y,H]=f(null),[F,K]=f(!1),{open:P,close:A}=u9(X),L=J[0];return $(n,{children:[$("div",{class:"scrim"+(P?" open":""),onClick:A},void 0,!1,void 0,this),$("div",{class:"peek"+(P?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:A,children:$(D,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("button",{class:"iconbtn",title:"返回字段",onClick:()=>K(!1),children:$(D,{name:"arrowLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(y)=>I0(y,(V)=>$(n,{children:[$(W0,{icon:"history",label:"版本历史",checked:F,onClick:()=>{V(),K(!F)}},void 0,!1,void 0,this),$(W0,{icon:"copy",label:"复制记录",onClick:()=>{V(),W()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(V(),await b0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))G()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),children:$(D,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:F?$(OJ,{rec:Q,props:J,onReverted:q},void 0,!1,void 0,this):$(n,{children:[$("h2",{contentEditable:!0,onBlur:(y)=>L&&z(L,y.target.textContent??""),children:L?String(Q.cells[L.id]??"无标题"):"无标题"},void 0,!1,void 0,this),J.map((y)=>$("div",{class:"proprow",children:[$("div",{class:"k",children:[$(D,{name:J9[y.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:y.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(p$,{prop:y,rec:Q,editing:Y===y.id,onEdit:()=>H(y.id),onCommit:(V)=>{z(y,V),H(null)},onCloseEdit:()=>H(null)},void 0,!1,void 0,this)]},y.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function p$({prop:Z,rec:J,editing:Q,onEdit:X,onCommit:z,onCloseEdit:G}){let W=J.cells[Z.id];if(Z.type==="checkbox")return $("div",{class:"v",children:$("input",{type:"checkbox",checked:!!W,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>z(!W)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Z.type==="select"||Z.type==="multi_select")return $("div",{class:"v",onClick:(q)=>TJ(q,Z,W,z),children:$($Z,{prop:Z,val:W},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Q)return $("div",{class:"v",children:$(kJ,{prop:Z,val:W,onDone:(q)=>{if(q.reason!=="cancel"&&q.changed)z(q.value);else G()}},void 0,!1,void 0,this)},void 0,!1,void 0,this);return $("div",{class:"v",onClick:X,children:$($Z,{prop:Z,val:W},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var m5=v3(h5(),1);var A8=m5.default;function oQ(Z){for(var J=1;J<arguments.length;J++){var Q=arguments[J];for(var X in Q)if(Object.prototype.hasOwnProperty.call(Q,X))Z[X]=Q[X]}return Z}function I1(Z,J){return Array(J+1).join(Z)}function p5(Z){return Z.replace(/^\n*/,"")}function c5(Z){var J=Z.length;while(J>0&&Z[J-1]===`
|
|
10
|
-
|
|
1
|
+
var t3=Object.create;var{getPrototypeOf:s3,defineProperty:zJ,getOwnPropertyNames:e3}=Object;var Z2=Object.prototype.hasOwnProperty;function J2(Z){return this[Z]}var $2,Q2,X2=(Z,J,Q)=>{var X=Z!=null&&typeof Z==="object";if(X){var z=J?$2??=new WeakMap:Q2??=new WeakMap,W=z.get(Z);if(W)return W}Q=Z!=null?t3(s3(Z)):{};let G=J||!Z||!Z.__esModule?zJ(Q,"default",{value:Z,enumerable:!0}):Q;for(let q of e3(Z))if(!Z2.call(G,q))zJ(G,q,{get:J2.bind(Z,q),enumerable:!0});if(X)z.set(Z,G);return G};var y0=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var z7=y0(($Y,X7)=>{function c5(Z){if(Z instanceof Map)Z.clear=Z.delete=Z.set=function(){throw Error("map is read-only")};else if(Z instanceof Set)Z.add=Z.clear=Z.delete=function(){throw Error("set is read-only")};return Object.freeze(Z),Object.getOwnPropertyNames(Z).forEach((J)=>{let Q=Z[J],X=typeof Q;if((X==="object"||X==="function")&&!Object.isFrozen(Q))c5(Q)}),Z}class t6{constructor(Z){if(Z.data===void 0)Z.data={};this.data=Z.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function d5(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function f9(Z,...J){let Q=Object.create(null);for(let X in Z)Q[X]=Z[X];return J.forEach(function(X){for(let z in X)Q[z]=X[z]}),Q}var vQ="</span>",D5=(Z)=>{return!!Z.scope},TQ=(Z,{prefix:J})=>{if(Z.startsWith("language:"))return Z.replace("language:","language-");if(Z.includes(".")){let Q=Z.split(".");return[`${J}${Q.shift()}`,...Q.map((X,z)=>`${X}${"_".repeat(z+1)}`)].join(" ")}return`${J}${Z}`};class i5{constructor(Z,J){this.buffer="",this.classPrefix=J.classPrefix,Z.walk(this)}addText(Z){this.buffer+=d5(Z)}openNode(Z){if(!D5(Z))return;let J=TQ(Z.scope,{prefix:this.classPrefix});this.span(J)}closeNode(Z){if(!D5(Z))return;this.buffer+=vQ}value(){return this.buffer}span(Z){this.buffer+=`<span class="${Z}">`}}var x5=(Z={})=>{let J={children:[]};return Object.assign(J,Z),J};class s6{constructor(){this.rootNode=x5(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(Z){this.top.children.push(Z)}openNode(Z){let J=x5({scope:Z});this.add(J),this.stack.push(J)}closeNode(){if(this.stack.length>1)return this.stack.pop();return}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(Z){return this.constructor._walk(Z,this.rootNode)}static _walk(Z,J){if(typeof J==="string")Z.addText(J);else if(J.children)Z.openNode(J),J.children.forEach((Q)=>this._walk(Z,Q)),Z.closeNode(J);return Z}static _collapse(Z){if(typeof Z==="string")return;if(!Z.children)return;if(Z.children.every((J)=>typeof J==="string"))Z.children=[Z.children.join("")];else Z.children.forEach((J)=>{s6._collapse(J)})}}class a5 extends s6{constructor(Z){super();this.options=Z}addText(Z){if(Z==="")return;this.add(Z)}startScope(Z){this.openNode(Z)}endScope(){this.closeNode()}__addSublanguage(Z,J){let Q=Z.root;if(J)Q.scope=`language:${J}`;this.add(Q)}toHTML(){return new i5(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function mZ(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function n5(Z){return r9("(?=",Z,")")}function kQ(Z){return r9("(?:",Z,")*")}function RQ(Z){return r9("(?:",Z,")?")}function r9(...Z){return Z.map((Q)=>mZ(Q)).join("")}function IQ(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function e6(...Z){return"("+(IQ(Z).capture?"":"?:")+Z.map((X)=>mZ(X)).join("|")+")"}function l5(Z){return new RegExp(Z.toString()+"|").exec("").length-1}function SQ(Z,J){let Q=Z&&Z.exec(J);return Q&&Q.index===0}var VQ=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Z1(Z,{joinWith:J}){let Q=0;return Z.map((X)=>{Q+=1;let z=Q,W=mZ(X),G="";while(W.length>0){let q=VQ.exec(W);if(!q){G+=W;break}if(G+=W.substring(0,q.index),W=W.substring(q.index+q[0].length),q[0][0]==="\\"&&q[1])G+="\\"+String(Number(q[1])+z);else if(G+=q[0],q[0]==="(")Q++}return G}).map((X)=>`(${X})`).join(J)}var fQ=/\b\B/,r5="[a-zA-Z]\\w*",J1="[a-zA-Z_]\\w*",o5="\\b\\d+(\\.\\d+)?",t5="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",s5="\\b(0b[01]+)",gQ="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",bQ=(Z={})=>{let J=/^#![ ]*\//;if(Z.binary)Z.begin=r9(J,/.*\b/,Z.binary,/\b.*/);return f9({scope:"meta",begin:J,end:/$/,relevance:0,"on:begin":(Q,X)=>{if(Q.index!==0)X.ignoreMatch()}},Z)},uZ={begin:"\\\\[\\s\\S]",relevance:0},jQ={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[uZ]},hQ={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[uZ]},DQ={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},b8=function(Z,J,Q={}){let X=f9({scope:"comment",begin:Z,end:J,contains:[]},Q);X.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let z=e6("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return X.contains.push({begin:r9(/[ ]+/,"(",z,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),X},xQ=b8("//","$"),mQ=b8("/\\*","\\*/"),uQ=b8("#","$"),EQ={scope:"number",begin:o5,relevance:0},pQ={scope:"number",begin:t5,relevance:0},cQ={scope:"number",begin:s5,relevance:0},dQ={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[uZ,{begin:/\[/,end:/\]/,relevance:0,contains:[uZ]}]},iQ={scope:"title",begin:r5,relevance:0},aQ={scope:"title",begin:J1,relevance:0},nQ={begin:"\\.\\s*"+J1,relevance:0},lQ=function(Z){return Object.assign(Z,{"on:begin":(J,Q)=>{Q.data._beginMatch=J[1]},"on:end":(J,Q)=>{if(Q.data._beginMatch!==J[1])Q.ignoreMatch()}})},f8=Object.freeze({__proto__:null,APOS_STRING_MODE:jQ,BACKSLASH_ESCAPE:uZ,BINARY_NUMBER_MODE:cQ,BINARY_NUMBER_RE:s5,COMMENT:b8,C_BLOCK_COMMENT_MODE:mQ,C_LINE_COMMENT_MODE:xQ,C_NUMBER_MODE:pQ,C_NUMBER_RE:t5,END_SAME_AS_BEGIN:lQ,HASH_COMMENT_MODE:uQ,IDENT_RE:r5,MATCH_NOTHING_RE:fQ,METHOD_GUARD:nQ,NUMBER_MODE:EQ,NUMBER_RE:o5,PHRASAL_WORDS_MODE:DQ,QUOTE_STRING_MODE:hQ,REGEXP_MODE:dQ,RE_STARTERS_RE:gQ,SHEBANG:bQ,TITLE_MODE:iQ,UNDERSCORE_IDENT_RE:J1,UNDERSCORE_TITLE_MODE:aQ});function rQ(Z,J){if(Z.input[Z.index-1]===".")J.ignoreMatch()}function oQ(Z,J){if(Z.className!==void 0)Z.scope=Z.className,delete Z.className}function tQ(Z,J){if(!J)return;if(!Z.beginKeywords)return;if(Z.begin="\\b("+Z.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Z.__beforeBegin=rQ,Z.keywords=Z.keywords||Z.beginKeywords,delete Z.beginKeywords,Z.relevance===void 0)Z.relevance=0}function sQ(Z,J){if(!Array.isArray(Z.illegal))return;Z.illegal=e6(...Z.illegal)}function eQ(Z,J){if(!Z.match)return;if(Z.begin||Z.end)throw Error("begin & end are not supported with match");Z.begin=Z.match,delete Z.match}function ZX(Z,J){if(Z.relevance===void 0)Z.relevance=1}var JX=(Z,J)=>{if(!Z.beforeMatch)return;if(Z.starts)throw Error("beforeMatch cannot be used with starts");let Q=Object.assign({},Z);Object.keys(Z).forEach((X)=>{delete Z[X]}),Z.keywords=Q.keywords,Z.begin=r9(Q.beforeMatch,n5(Q.begin)),Z.starts={relevance:0,contains:[Object.assign(Q,{endsParent:!0})]},Z.relevance=0,delete Q.beforeMatch},$X=["of","and","for","in","not","or","if","then","parent","list","value"],QX="keyword";function e5(Z,J,Q=QX){let X=Object.create(null);if(typeof Z==="string")z(Q,Z.split(" "));else if(Array.isArray(Z))z(Q,Z);else Object.keys(Z).forEach(function(W){Object.assign(X,e5(Z[W],J,W))});return X;function z(W,G){if(J)G=G.map((q)=>q.toLowerCase());G.forEach(function(q){let H=q.split("|");X[H[0]]=[W,XX(H[0],H[1])]})}}function XX(Z,J){if(J)return Number(J);return zX(Z)?0:1}function zX(Z){return $X.includes(Z.toLowerCase())}var m5={},l9=(Z)=>{console.error(Z)},u5=(Z,...J)=>{console.log(`WARN: ${Z}`,...J)},PZ=(Z,J)=>{if(m5[`${Z}/${J}`])return;console.log(`Deprecated as of ${Z}. ${J}`),m5[`${Z}/${J}`]=!0},g8=Error();function Z7(Z,J,{key:Q}){let X=0,z=Z[Q],W={},G={};for(let q=1;q<=J.length;q++)G[q+X]=z[q],W[q+X]=!0,X+=l5(J[q-1]);Z[Q]=G,Z[Q]._emit=W,Z[Q]._multi=!0}function WX(Z){if(!Array.isArray(Z.begin))return;if(Z.skip||Z.excludeBegin||Z.returnBegin)throw l9("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),g8;if(typeof Z.beginScope!=="object"||Z.beginScope===null)throw l9("beginScope must be object"),g8;Z7(Z,Z.begin,{key:"beginScope"}),Z.begin=Z1(Z.begin,{joinWith:""})}function GX(Z){if(!Array.isArray(Z.end))return;if(Z.skip||Z.excludeEnd||Z.returnEnd)throw l9("skip, excludeEnd, returnEnd not compatible with endScope: {}"),g8;if(typeof Z.endScope!=="object"||Z.endScope===null)throw l9("endScope must be object"),g8;Z7(Z,Z.end,{key:"endScope"}),Z.end=Z1(Z.end,{joinWith:""})}function qX(Z){if(Z.scope&&typeof Z.scope==="object"&&Z.scope!==null)Z.beginScope=Z.scope,delete Z.scope}function HX(Z){if(qX(Z),typeof Z.beginScope==="string")Z.beginScope={_wrap:Z.beginScope};if(typeof Z.endScope==="string")Z.endScope={_wrap:Z.endScope};WX(Z),GX(Z)}function YX(Z){function J(G,q){return new RegExp(mZ(G),"m"+(Z.case_insensitive?"i":"")+(Z.unicodeRegex?"u":"")+(q?"g":""))}class Q{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(G,q){q.position=this.position++,this.matchIndexes[this.matchAt]=q,this.regexes.push([q,G]),this.matchAt+=l5(G)+1}compile(){if(this.regexes.length===0)this.exec=()=>null;let G=this.regexes.map((q)=>q[1]);this.matcherRe=J(Z1(G,{joinWith:"|"}),!0),this.lastIndex=0}exec(G){this.matcherRe.lastIndex=this.lastIndex;let q=this.matcherRe.exec(G);if(!q)return null;let H=q.findIndex((F,K)=>K>0&&F!==void 0),Y=this.matchIndexes[H];return q.splice(0,H),Object.assign(q,Y)}}class X{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(G){if(this.multiRegexes[G])return this.multiRegexes[G];let q=new Q;return this.rules.slice(G).forEach(([H,Y])=>q.addRule(H,Y)),q.compile(),this.multiRegexes[G]=q,q}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(G,q){if(this.rules.push([G,q]),q.type==="begin")this.count++}exec(G){let q=this.getMatcher(this.regexIndex);q.lastIndex=this.lastIndex;let H=q.exec(G);if(this.resumingScanAtSamePosition())if(H&&H.index===this.lastIndex);else{let Y=this.getMatcher(0);Y.lastIndex=this.lastIndex+1,H=Y.exec(G)}if(H){if(this.regexIndex+=H.position+1,this.regexIndex===this.count)this.considerAll()}return H}}function z(G){let q=new X;if(G.contains.forEach((H)=>q.addRule(H.begin,{rule:H,type:"begin"})),G.terminatorEnd)q.addRule(G.terminatorEnd,{type:"end"});if(G.illegal)q.addRule(G.illegal,{type:"illegal"});return q}function W(G,q){let H=G;if(G.isCompiled)return H;[oQ,eQ,HX,JX].forEach((F)=>F(G,q)),Z.compilerExtensions.forEach((F)=>F(G,q)),G.__beforeBegin=null,[tQ,sQ,ZX].forEach((F)=>F(G,q)),G.isCompiled=!0;let Y=null;if(typeof G.keywords==="object"&&G.keywords.$pattern)G.keywords=Object.assign({},G.keywords),Y=G.keywords.$pattern,delete G.keywords.$pattern;if(Y=Y||/\w+/,G.keywords)G.keywords=e5(G.keywords,Z.case_insensitive);if(H.keywordPatternRe=J(Y,!0),q){if(!G.begin)G.begin=/\B|\b/;if(H.beginRe=J(H.begin),!G.end&&!G.endsWithParent)G.end=/\B|\b/;if(G.end)H.endRe=J(H.end);if(H.terminatorEnd=mZ(H.end)||"",G.endsWithParent&&q.terminatorEnd)H.terminatorEnd+=(G.end?"|":"")+q.terminatorEnd}if(G.illegal)H.illegalRe=J(G.illegal);if(!G.contains)G.contains=[];if(G.contains=[].concat(...G.contains.map(function(F){return KX(F==="self"?G:F)})),G.contains.forEach(function(F){W(F,H)}),G.starts)W(G.starts,q);return H.matcher=z(H),H}if(!Z.compilerExtensions)Z.compilerExtensions=[];if(Z.contains&&Z.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return Z.classNameAliases=f9(Z.classNameAliases||{}),W(Z)}function J7(Z){if(!Z)return!1;return Z.endsWithParent||J7(Z.starts)}function KX(Z){if(Z.variants&&!Z.cachedVariants)Z.cachedVariants=Z.variants.map(function(J){return f9(Z,{variants:null},J)});if(Z.cachedVariants)return Z.cachedVariants;if(J7(Z))return f9(Z,{starts:Z.starts?f9(Z.starts):null});if(Object.isFrozen(Z))return f9(Z);return Z}var FX="11.11.1";class $7 extends Error{constructor(Z,J){super(Z);this.name="HTMLInjectionError",this.html=J}}var o6=d5,E5=f9,p5=Symbol("nomatch"),UX=7,Q7=function(Z){let J=Object.create(null),Q=Object.create(null),X=[],z=!0,W="Could not find the language '{}', did you forget to load/include a language module?",G={disableAutodetect:!0,name:"Plain text",contains:[]},q={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:a5};function H(x){return q.noHighlightRe.test(x)}function Y(x){let b=x.className+" ";b+=x.parentNode?x.parentNode.className:"";let u=q.languageDetectRe.exec(b);if(u){let V=w(u[1]);if(!V)u5(W.replace("{}",u[1])),u5("Falling back to no-highlight mode for this block.",x);return V?u[1]:"no-highlight"}return b.split(/\s+/).find((V)=>H(V)||w(V))}function F(x,b,u){let V="",i="";if(typeof b==="object")V=x,u=b.ignoreIllegals,i=b.language;else PZ("10.7.0","highlight(lang, code, ...args) has been deprecated."),PZ("10.7.0",`Please use highlight(code, options) instead.
|
|
2
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),i=x,V=b;if(u===void 0)u=!0;let Z0={code:V,language:i};$0("before:highlight",Z0);let G0=Z0.result?Z0.result:K(Z0.language,Z0.code,u);return G0.code=Z0.code,$0("after:highlight",G0),G0}function K(x,b,u,V){let i=Object.create(null);function Z0(l,t){return l.keywords[t]}function G0(){if(!K0.keywords){A0.addText(j);return}let l=0;K0.keywordPatternRe.lastIndex=0;let t=K0.keywordPatternRe.exec(j),X0="";while(t){X0+=j.substring(l,t.index);let U0=i0.case_insensitive?t[0].toLowerCase():t[0],k0=Z0(K0,U0);if(k0){let[g0,X6]=k0;if(A0.addText(X0),X0="",i[U0]=(i[U0]||0)+1,i[U0]<=UX)I+=X6;if(g0.startsWith("_"))X0+=t[0];else{let X8=i0.classNameAliases[g0]||g0;P0(t[0],X8)}}else X0+=t[0];l=K0.keywordPatternRe.lastIndex,t=K0.keywordPatternRe.exec(j)}X0+=j.substring(l),A0.addText(X0)}function J0(){if(j==="")return;let l=null;if(typeof K0.subLanguage==="string"){if(!J[K0.subLanguage]){A0.addText(j);return}l=K(K0.subLanguage,j,!0,q0[K0.subLanguage]),q0[K0.subLanguage]=l._top}else l=U(j,K0.subLanguage.length?K0.subLanguage:null);if(K0.relevance>0)I+=l.relevance;A0.__addSublanguage(l._emitter,l.language)}function e(){if(K0.subLanguage!=null)J0();else G0();j=""}function P0(l,t){if(l==="")return;A0.startScope(t),A0.addText(l),A0.endScope()}function l0(l,t){let X0=1,U0=t.length-1;while(X0<=U0){if(!l._emit[X0]){X0++;continue}let k0=i0.classNameAliases[l[X0]]||l[X0],g0=t[X0];if(k0)P0(g0,k0);else j=g0,G0(),j="";X0++}}function c0(l,t){if(l.scope&&typeof l.scope==="string")A0.openNode(i0.classNameAliases[l.scope]||l.scope);if(l.beginScope){if(l.beginScope._wrap)P0(j,i0.classNameAliases[l.beginScope._wrap]||l.beginScope._wrap),j="";else if(l.beginScope._multi)l0(l.beginScope,t),j=""}return K0=Object.create(l,{parent:{value:K0}}),K0}function d0(l,t,X0){let U0=SQ(l.endRe,X0);if(U0){if(l["on:end"]){let k0=new t6(l);if(l["on:end"](t,k0),k0.isMatchIgnored)U0=!1}if(U0){while(l.endsParent&&l.parent)l=l.parent;return l}}if(l.endsWithParent)return d0(l.parent,t,X0)}function n0(l){if(K0.matcher.regexIndex===0)return j+=l[0],1;else return F0=!0,0}function E0(l){let t=l[0],X0=l.rule,U0=new t6(X0),k0=[X0.__beforeBegin,X0["on:begin"]];for(let g0 of k0){if(!g0)continue;if(g0(l,U0),U0.isMatchIgnored)return n0(t)}if(X0.skip)j+=t;else{if(X0.excludeBegin)j+=t;if(e(),!X0.returnBegin&&!X0.excludeBegin)j=t}return c0(X0,l),X0.returnBegin?0:t.length}function N0(l){let t=l[0],X0=b.substring(l.index),U0=d0(K0,l,X0);if(!U0)return p5;let k0=K0;if(K0.endScope&&K0.endScope._wrap)e(),P0(t,K0.endScope._wrap);else if(K0.endScope&&K0.endScope._multi)e(),l0(K0.endScope,l);else if(k0.skip)j+=t;else{if(!(k0.returnEnd||k0.excludeEnd))j+=t;if(e(),k0.excludeEnd)j=t}do{if(K0.scope)A0.closeNode();if(!K0.skip&&!K0.subLanguage)I+=K0.relevance;K0=K0.parent}while(K0!==U0.parent);if(U0.starts)c0(U0.starts,l);return k0.returnEnd?0:t.length}function v0(){let l=[];for(let t=K0;t!==i0;t=t.parent)if(t.scope)l.unshift(t.scope);l.forEach((t)=>A0.openNode(t))}let O0={};function j0(l,t){let X0=t&&t[0];if(j+=l,X0==null)return e(),0;if(O0.type==="begin"&&t.type==="end"&&O0.index===t.index&&X0===""){if(j+=b.slice(t.index,t.index+1),!z){let U0=Error(`0 width match regex (${x})`);throw U0.languageName=x,U0.badRule=O0.rule,U0}return 1}if(O0=t,t.type==="begin")return E0(t);else if(t.type==="illegal"&&!u){let U0=Error('Illegal lexeme "'+X0+'" for mode "'+(K0.scope||"<unnamed>")+'"');throw U0.mode=K0,U0}else if(t.type==="end"){let U0=N0(t);if(U0!==p5)return U0}if(t.type==="illegal"&&X0==="")return j+=`
|
|
3
|
+
`,1;if(a>1e5&&a>t.index*3)throw Error("potential infinite loop, way more iterations than matches");return j+=X0,X0.length}let i0=w(x);if(!i0)throw l9(W.replace("{}",x)),Error('Unknown language: "'+x+'"');let T0=YX(i0),o0="",K0=V||T0,q0={},A0=new q.__emitter(q);v0();let j="",I=0,E=0,a=0,F0=!1;try{if(!i0.__emitTokens){K0.matcher.considerAll();for(;;){if(a++,F0)F0=!1;else K0.matcher.considerAll();K0.matcher.lastIndex=E;let l=K0.matcher.exec(b);if(!l)break;let t=b.substring(E,l.index),X0=j0(t,l);E=l.index+X0}j0(b.substring(E))}else i0.__emitTokens(b,A0);return A0.finalize(),o0=A0.toHTML(),{language:x,value:o0,relevance:I,illegal:!1,_emitter:A0,_top:K0}}catch(l){if(l.message&&l.message.includes("Illegal"))return{language:x,value:o6(b),illegal:!0,relevance:0,_illegalBy:{message:l.message,index:E,context:b.slice(E-100,E+100),mode:l.mode,resultSoFar:o0},_emitter:A0};else if(z)return{language:x,value:o6(b),illegal:!1,relevance:0,errorRaised:l,_emitter:A0,_top:K0};else throw l}}function N(x){let b={value:o6(x),illegal:!1,relevance:0,_top:G,_emitter:new q.__emitter(q)};return b._emitter.addText(x),b}function U(x,b){b=b||q.languages||Object.keys(J);let u=N(x),V=b.filter(w).filter(y).map((e)=>K(e,x,!1));V.unshift(u);let i=V.sort((e,P0)=>{if(e.relevance!==P0.relevance)return P0.relevance-e.relevance;if(e.language&&P0.language){if(w(e.language).supersetOf===P0.language)return 1;else if(w(P0.language).supersetOf===e.language)return-1}return 0}),[Z0,G0]=i,J0=Z0;return J0.secondBest=G0,J0}function O(x,b,u){let V=b&&Q[b]||u;x.classList.add("hljs"),x.classList.add(`language-${V}`)}function C(x){let b=null,u=Y(x);if(H(u))return;if($0("before:highlightElement",{el:x,language:u}),x.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",x);return}if(x.children.length>0){if(!q.ignoreUnescapedHTML)console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(x);if(q.throwUnescapedHTML)throw new $7("One of your code blocks includes unescaped HTML.",x.innerHTML)}b=x;let V=b.textContent,i=u?F(V,{language:u,ignoreIllegals:!0}):U(V);if(x.innerHTML=i.value,x.dataset.highlighted="yes",O(x,u,i.language),x.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest)x.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance};$0("after:highlightElement",{el:x,result:i,text:V})}function f(x){q=E5(q,x)}let h=()=>{k(),PZ("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function _(){k(),PZ("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let M=!1;function k(){function x(){k()}if(document.readyState==="loading"){if(!M)window.addEventListener("DOMContentLoaded",x,!1);M=!0;return}document.querySelectorAll(q.cssSelector).forEach(C)}function T(x,b){let u=null;try{u=b(Z)}catch(V){if(l9("Language definition for '{}' could not be registered.".replace("{}",x)),!z)throw V;else l9(V);u=G}if(!u.name)u.name=x;if(J[x]=u,u.rawDefinition=b.bind(null,Z),u.aliases)A(u.aliases,{languageName:x})}function L(x){delete J[x];for(let b of Object.keys(Q))if(Q[b]===x)delete Q[b]}function P(){return Object.keys(J)}function w(x){return x=(x||"").toLowerCase(),J[x]||J[Q[x]]}function A(x,{languageName:b}){if(typeof x==="string")x=[x];x.forEach((u)=>{Q[u.toLowerCase()]=b})}function y(x){let b=w(x);return b&&!b.disableAutodetect}function S(x){if(x["before:highlightBlock"]&&!x["before:highlightElement"])x["before:highlightElement"]=(b)=>{x["before:highlightBlock"](Object.assign({block:b.el},b))};if(x["after:highlightBlock"]&&!x["after:highlightElement"])x["after:highlightElement"]=(b)=>{x["after:highlightBlock"](Object.assign({block:b.el},b))}}function p(x){S(x),X.push(x)}function n(x){let b=X.indexOf(x);if(b!==-1)X.splice(b,1)}function $0(x,b){let u=x;X.forEach(function(V){if(V[u])V[u](b)})}function Q0(x){return PZ("10.7.0","highlightBlock will be removed entirely in v12.0"),PZ("10.7.0","Please use highlightElement now."),C(x)}Object.assign(Z,{highlight:F,highlightAuto:U,highlightAll:k,highlightElement:C,highlightBlock:Q0,configure:f,initHighlighting:h,initHighlightingOnLoad:_,registerLanguage:T,unregisterLanguage:L,listLanguages:P,getLanguage:w,registerAliases:A,autoDetection:y,inherit:E5,addPlugin:p,removePlugin:n}),Z.debugMode=function(){z=!1},Z.safeMode=function(){z=!0},Z.versionString=FX,Z.regex={concat:r9,lookahead:n5,either:e6,optional:RQ,anyNumberOfTimes:kQ};for(let x in f8)if(typeof f8[x]==="object")c5(f8[x]);return Object.assign(Z,f8),Z},BZ=Q7({});BZ.newInstance=()=>Q7({});X7.exports=BZ;BZ.HighlightJS=BZ;BZ.default=BZ});var G7=y0((QY,W7)=>{function LX(Z){let J=Z.regex,Q=J.concat(/[\p{L}_]/u,J.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),X=/[\p{L}0-9._:-]+/u,z={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},W={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},G=Z.inherit(W,{begin:/\(/,end:/\)/}),q=Z.inherit(Z.APOS_STRING_MODE,{className:"string"}),H=Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),Y={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:X,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[z]},{begin:/'/,end:/'/,contains:[z]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[W,H,q,G,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[W,G,H,q]}]}]},Z.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},z,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[H]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[Y],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[Y],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:J.concat(/</,J.lookahead(J.concat(Q,J.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:Q,relevance:0,starts:Y}]},{className:"tag",begin:J.concat(/<\//,J.lookahead(J.concat(Q,/>/))),contains:[{className:"name",begin:Q,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}W7.exports=LX});var H7=y0((XY,q7)=>{function PX(Z){let J=Z.regex,Q={},X={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[Q]}]};Object.assign(Q,{className:"variable",variants:[{begin:J.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},X]});let z={className:"subst",begin:/\$\(/,end:/\)/,contains:[Z.BACKSLASH_ESCAPE]},W=Z.inherit(Z.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),G={begin:/<<-?\s*(?=\w+)/,starts:{contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,Q,z]};z.contains.push(q);let H={match:/\\"/},Y={className:"string",begin:/'/,end:/'/},F={match:/\\'/},K={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},Z.NUMBER_MODE,Q]},N=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],U=Z.SHEBANG({binary:`(${N.join("|")})`,relevance:10}),O={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[Z.inherit(Z.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},C=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],f=["true","false"],h={match:/(\/[a-z._-]+)+/},_=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],M=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],k=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],T=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:C,literal:f,built_in:[..._,...M,"set","shopt",...k,...T]},contains:[U,Z.SHEBANG(),O,K,W,G,h,q,H,Y,F,Q]}}q7.exports=PX});var K7=y0((zY,Y7)=>{function BX(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",W="<[^<>]+>",G="(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},H="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",Y={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Y,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},N={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},U=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",f={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},h=[K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],_={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:f,contains:h.concat([{begin:/\(/,end:/\)/,keywords:f,contains:h.concat(["self"]),relevance:0}]),relevance:0},M={begin:"("+G+"[\\*&\\s]+)+"+U,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:f,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:f,relevance:0},{begin:U,returnBegin:!0,contains:[Z.inherit(N,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C",aliases:["h"],keywords:f,disableAutodetect:!0,illegal:"</",contains:[].concat(_,M,h,[K,{begin:Z.IDENT_RE+"::",keywords:f},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},Z.TITLE_MODE]}]),exports:{preprocessor:K,strings:Y,keywords:f}}}Y7.exports=BX});var U7=y0((WY,F7)=>{function OX(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",W="<[^<>]+>",G="(?!struct)(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},H="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",Y={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Y,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},N={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},U=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",O=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],C=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],f=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],h=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],k={type:C,keyword:O,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:f},T={className:"function.dispatch",relevance:0,keywords:{_hint:h},begin:J.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,Z.IDENT_RE,J.lookahead(/(<[^<>]+>|)\s*\(/))},L=[T,K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],P={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:L.concat([{begin:/\(/,end:/\)/,keywords:k,contains:L.concat(["self"]),relevance:0}]),relevance:0},w={className:"function",begin:"("+G+"[\\*&\\s]+)+"+U,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:k,relevance:0},{begin:U,returnBegin:!0,contains:[N],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[Y,F]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:k,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(P,w,T,L,[K,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:k,contains:["self",q]},{begin:Z.IDENT_RE+"::",keywords:k},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}F7.exports=OX});var P7=y0((GY,L7)=>{function AX(Z){let J=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],Q=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],X=["default","false","null","true"],z=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],W=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],G={keyword:z.concat(W),built_in:J,literal:X},q=Z.inherit(Z.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),H={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},Y={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},F={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},K=Z.inherit(F,{illegal:/\n/}),N={className:"subst",begin:/\{/,end:/\}/,keywords:G},U=Z.inherit(N,{illegal:/\n/}),O={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},Z.BACKSLASH_ESCAPE,U]},C={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},N]},f=Z.inherit(C,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},U]});N.contains=[C,O,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.C_BLOCK_COMMENT_MODE],U.contains=[f,O,K,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.inherit(Z.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let h={variants:[Y,C,O,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},_={begin:"<",end:">",contains:[{beginKeywords:"in out"},q]},M=Z.IDENT_RE+"(<"+Z.IDENT_RE+"(\\s*,\\s*"+Z.IDENT_RE+")*>)?(\\[\\])?",k={begin:"@"+Z.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:G,illegal:/::/,contains:[Z.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},h,H,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},q,_,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,_,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+M+"\\s+)+"+Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:G,contains:[{beginKeywords:Q.join(" "),relevance:0},{begin:Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[Z.TITLE_MODE,_],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:G,relevance:0,contains:[h,H,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},k]}}L7.exports=AX});var O7=y0((qY,B7)=>{var NX=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},wX=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],CX=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],MX=[...wX,...CX],yX=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),_X=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),vX=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),TX=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function kX(Z){let J=Z.regex,Q=NX(Z),X={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},z="and or not only",W=/@-?\w[\w]*(-\w+)*/,G="[a-zA-Z-][a-zA-Z0-9_-]*",q=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[Q.BLOCK_COMMENT,X,Q.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},Q.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+_X.join("|")+")"},{begin:":(:)?("+vX.join("|")+")"}]},Q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+TX.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[Q.BLOCK_COMMENT,Q.HEXCOLOR,Q.IMPORTANT,Q.CSS_NUMBER_MODE,...q,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...q,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},Q.FUNCTION_DISPATCH]},{begin:J.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:W},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:yX.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...q,Q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+MX.join("|")+")\\b"}]}}B7.exports=kX});var N7=y0((HY,A7)=>{function RX(Z){let J=Z.regex,Q={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},X={begin:"^[-\\*]{3,}",end:"$"},z={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},W={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},G={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},q=/[A-Za-z][A-Za-z0-9+.-]*/,H={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:J.concat(/\[.+?\]\(/,q,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},Y={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},F={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},K=Z.inherit(Y,{contains:[]}),N=Z.inherit(F,{contains:[]});Y.contains.push(N),F.contains.push(K);let U=[Q,H];return[Y,F,K,N].forEach((h)=>{h.contains=h.contains.concat(U)}),U=U.concat(Y,F),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:U},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:U}]}]},Q,W,Y,F,{className:"quote",begin:"^>\\s+",contains:U,end:"$"},z,X,H,G,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}A7.exports=RX});var C7=y0((YY,w7)=>{function IX(Z){let J=Z.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:J.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:J.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}w7.exports=IX});var y7=y0((KY,M7)=>{function SX(Z){let J=Z.regex,Q="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",X=J.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),z=J.concat(X,/(::\w+)*/),G={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},q={className:"doctag",begin:"@[A-Za-z]+"},H={begin:"#<",end:">"},Y=[Z.COMMENT("#","$",{contains:[q]}),Z.COMMENT("^=begin","^=end",{contains:[q],relevance:10}),Z.COMMENT("^__END__",Z.MATCH_NOTHING_RE)],F={className:"subst",begin:/#\{/,end:/\}/,keywords:G},K={className:"string",contains:[Z.BACKSLASH_ESCAPE,F],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:J.concat(/<<[-~]?'?/,J.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[Z.BACKSLASH_ESCAPE,F]})]}]},N="[1-9](_?[0-9])*|0",U="[0-9](_?[0-9])*",O={className:"number",relevance:0,variants:[{begin:"\\b([1-9](_?[0-9])*|0)(\\.([0-9](_?[0-9])*))?([eE][+-]?([0-9](_?[0-9])*)|r)?i?\\b"},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},C={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:G}]},L=[K,{variants:[{match:[/class\s+/,z,/\s+<\s+/,z]},{match:[/\b(class|module)\s+/,z]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:G},{match:[/(include|extend)\s+/,z],scope:{2:"title.class"},keywords:G},{relevance:0,match:[z,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:X,scope:"title.class"},{match:[/def/,/\s+/,"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"],scope:{1:"keyword",3:"title.function"},contains:[C]},{begin:Z.IDENT_RE+"::"},{className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[K,{begin:"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"}],relevance:0},O,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:G},{begin:"("+Z.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[Z.BACKSLASH_ESCAPE,F],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(H,Y),relevance:0}].concat(H,Y);F.contains=L,C.contains=L;let P="[>?]>",w="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",A="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",y=[{begin:/^\s*=>/,starts:{end:"$",contains:L}},{className:"meta.prompt",begin:"^("+P+"|"+w+"|"+A+")(?=[ ])",starts:{end:"$",keywords:G,contains:L}}];return Y.unshift(H),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:G,illegal:/\/\*/,contains:[Z.SHEBANG({binary:"ruby"})].concat(y).concat(Y).concat(L)}}M7.exports=SX});var v7=y0((FY,_7)=>{function VX(Z){let W={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:W,illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"string",variants:[Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[Z.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:W,illegal:/["']/}]}]}}_7.exports=VX});var k7=y0((UY,T7)=>{function fX(Z){let J=Z.regex,Q=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[Z.HASH_COMMENT_MODE,Z.QUOTE_STRING_MODE,Z.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:J.concat(Q,J.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}T7.exports=fX});var I7=y0((LY,R7)=>{function gX(Z){let J=Z.regex,Q={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:Z.NUMBER_RE}]},X=Z.COMMENT();X.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let z={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},W={className:"literal",begin:/\bon|off|true|false|yes|no\b/},G={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},q={begin:/\[/,end:/\]/,contains:[X,W,z,G,Q,"self"],relevance:0},H=/[A-Za-z0-9_-]+/,Y=/"(\\"|[^"])*"/,F=/'[^']*'/,K=J.either(H,Y,F),N=J.concat(K,"(\\s*\\.\\s*",K,")*",J.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[X,{className:"section",begin:/\[+/,end:/\]+/},{begin:N,className:"attr",starts:{end:/$/,contains:[X,q,W,z,G,Q]}}]}}R7.exports=gX});var g7=y0((PY,f7)=>{var OZ="[0-9](_*[0-9])*",j8=`\\.(${OZ})`,h8="[0-9a-fA-F](_*[0-9a-fA-F])*",S7={className:"number",variants:[{begin:`(\\b(${OZ})((${j8})|\\.)?|(${j8}))[eE][+-]?(${OZ})[fFdD]?\\b`},{begin:`\\b(${OZ})((${j8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${j8})[fFdD]?\\b`},{begin:`\\b(${OZ})[fFdD]\\b`},{begin:`\\b0[xX]((${h8})\\.?|(${h8})?\\.(${h8}))[pP][+-]?(${OZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${h8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function V7(Z,J,Q){if(Q===-1)return"";return Z.replace(J,(X)=>{return V7(Z,J,Q-1)})}function bX(Z){let J=Z.regex,Q="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",X="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+V7("(?:<"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~(?:\\s*,\\s*"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~)*>)?",/~~~/g,2),H={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},Y={className:"meta",begin:"@"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},F={className:"params",begin:/\(/,end:/\)/,keywords:H,relevance:0,contains:[Z.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:H,illegal:/<\/|#/,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[Z.BACKSLASH_ESCAPE]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[J.concat(/(?!else)/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"),/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"},contains:[F,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+X+"\\s+)",Z.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:H,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:H,relevance:0,contains:[Y,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,S7,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},S7,Y]}}f7.exports=bX});var x7=y0((BY,D7)=>{var jX=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],hX=["true","false","null","undefined","NaN","Infinity"],b7=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],j7=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],h7=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],DX=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],xX=[].concat(h7,b7,j7);function mX(Z){let J=Z.regex,Q=(u,{after:V})=>{let i="</"+u[0].slice(1);return u.input.indexOf(i,V)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},W=/<[A-Za-z0-9\\._:-]+\s*\/>/,G={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(u,V)=>{let i=u[0].length+u.index,Z0=u.input[i];if(Z0==="<"||Z0===","){V.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:i}))V.ignoreMatch()}let G0,J0=u.input.substring(i);if(G0=J0.match(/^\s*=/)){V.ignoreMatch();return}if(G0=J0.match(/^\s+extends\s+/)){if(G0.index===0){V.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:jX,literal:hX,built_in:xX,"variable.language":DX},H="[0-9](_?[0-9])*",Y="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},N={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},U={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"css"}},C={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"graphql"}},f={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,N]},_={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},M=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,{match:/\$\d+/},K];N.contains=M.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(M)});let k=[].concat(_,N.contains),T=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(k)}]),L={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T},P={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...b7,...j7]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},y={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[L],illegal:/%/},S={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function p(u){return J.concat("(?!",u.join("|"),")")}let n={match:J.concat(/\b/,p([...h7,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},$0={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},L]},x="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",b={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(x)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[L]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:T,CLASS_REFERENCE:w},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,_,{match:/\$\d+/},K,w,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},b,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[_,Z.REGEXP_MODE,{className:"function",begin:x,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:W},{begin:G.begin,"on:begin":G.isTrulyOpeningTag,end:G.end}],subLanguage:"xml",contains:[{begin:G.begin,end:G.end,skip:!0,contains:["self"]}]}]},y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[L,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},$0,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[L]},n,S,P,Q0,{match:/\$[(.]/}]}}D7.exports=mX});var u7=y0((OY,m7)=>{function uX(Z){let J={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},Q={match:/[{}[\],:]/,className:"punctuation",relevance:0},X=["true","false","null"],z={scope:"literal",beginKeywords:X.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:X},contains:[J,Q,Z.QUOTE_STRING_MODE,z,Z.C_NUMBER_MODE,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}m7.exports=uX});var p7=y0((AY,E7)=>{var AZ="[0-9](_*[0-9])*",D8=`\\.(${AZ})`,x8="[0-9a-fA-F](_*[0-9a-fA-F])*",EX={className:"number",variants:[{begin:`(\\b(${AZ})((${D8})|\\.)?|(${D8}))[eE][+-]?(${AZ})[fFdD]?\\b`},{begin:`\\b(${AZ})((${D8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${D8})[fFdD]?\\b`},{begin:`\\b(${AZ})[fFdD]\\b`},{begin:`\\b0[xX]((${x8})\\.?|(${x8})?\\.(${x8}))[pP][+-]?(${AZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${x8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function pX(Z){let J={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},Q={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},X={className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"@"},z={className:"subst",begin:/\$\{/,end:/\}/,contains:[Z.C_NUMBER_MODE]},W={className:"variable",begin:"\\$"+Z.UNDERSCORE_IDENT_RE},G={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[W,z]},{begin:"'",end:"'",illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE,W,z]}]};z.contains.push(G);let q={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+Z.UNDERSCORE_IDENT_RE+")?"},H={className:"meta",begin:"@"+Z.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[Z.inherit(G,{className:"string"}),"self"]}]},Y=EX,F=Z.COMMENT("/\\*","\\*/",{contains:[Z.C_BLOCK_COMMENT_MODE]}),K={variants:[{className:"type",begin:Z.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},N=K;return N.variants[1].contains=[K],K.variants[1].contains=[N],{name:"Kotlin",aliases:["kt","kts"],keywords:J,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),Z.C_LINE_COMMENT_MODE,F,Q,X,q,H,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:J,relevance:5,contains:[{begin:Z.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[Z.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:J,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[K,Z.C_LINE_COMMENT_MODE,F],relevance:0},Z.C_LINE_COMMENT_MODE,F,q,H,G,Z.C_NUMBER_MODE]},F]},{begin:[/class|interface|trait/,/\s+/,Z.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},Z.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},q,H]},G,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4
|
+
`},Y]}}E7.exports=pX});var a7=y0((NY,i7)=>{var cX=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},dX=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],iX=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],aX=[...dX,...iX],nX=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),c7=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),d7=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),lX=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),rX=c7.concat(d7).sort().reverse();function oX(Z){let J=cX(Z),Q=rX,X="and or not only",z="[\\w-]+",W="([\\w-]+|@\\{[\\w-]+\\})",G=[],q=[],H=function(M){return{className:"string",begin:"~?"+M+".*?"+M}},Y=function(M,k,T){return{className:M,begin:k,relevance:T}},F={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:nX.join(" ")},K={begin:"\\(",end:"\\)",contains:q,keywords:F,relevance:0};q.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,H("'"),H('"'),J.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},J.HEXCOLOR,K,Y("variable","@@?[\\w-]+",10),Y("variable","@\\{[\\w-]+\\}"),Y("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},J.IMPORTANT,{beginKeywords:"and not"},J.FUNCTION_DISPATCH);let N=q.concat({begin:/\{/,end:/\}/,contains:G}),U={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(q)},O={begin:W+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+lX.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:q}}]},C={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:F,returnEnd:!0,contains:q,relevance:0}},f={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:N}},h={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:W,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,U,Y("keyword","all\\b"),Y("variable","@\\{[\\w-]+\\}"),{begin:"\\b("+aX.join("|")+")\\b",className:"selector-tag"},J.CSS_NUMBER_MODE,Y("selector-tag",W,0),Y("selector-id","#"+W),Y("selector-class","\\."+W,0),Y("selector-tag","&",0),J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+c7.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+d7.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:N},{begin:"!important"},J.FUNCTION_DISPATCH]},_={begin:`[\\w-]+:(:)?(${Q.join("|")})`,returnBegin:!0,contains:[h]};return G.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,C,f,_,O,h,U,J.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:G}}i7.exports=oX});var l7=y0((wY,n7)=>{function tX(Z){let X={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},z=[Z.COMMENT("--(?!\\[=*\\[)","$"),Z.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[X],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:Z.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:z.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[Z.inherit(Z.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:z}].concat(z)},Z.C_NUMBER_MODE,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[X],relevance:5}])}}n7.exports=tX});var o7=y0((CY,r7)=>{function sX(Z){let J={className:"variable",variants:[{begin:"\\$\\("+Z.UNDERSCORE_IDENT_RE+"\\)",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},Q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,J]},X={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[J,Q]},z={begin:"^"+Z.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},W={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},G={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[J]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[Z.HASH_COMMENT_MODE,J,Q,X,z,W,G]}}r7.exports=sX});var s7=y0((MY,t7)=>{function eX(Z){let J=Z.regex,Q=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],X=/[dualxmsipngr]{0,12}/,z={$pattern:/[\w.]+/,keyword:Q.join(" ")},W={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:z},G={begin:/->\{/,end:/\}/},q={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},H={scope:"variable",variants:[{begin:/\$\d/},{begin:J.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[q]},Y={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},F=[Z.BACKSLASH_ESCAPE,W,H],K=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],N=(C,f,h="\\1")=>{let _=h==="\\1"?h:J.concat(h,f);return J.concat(J.concat("(?:",C,")"),f,/(?:\\.|[^\\\/])*?/,_,/(?:\\.|[^\\\/])*?/,h,X)},U=(C,f,h)=>{return J.concat(J.concat("(?:",C,")"),f,/(?:\\.|[^\\\/])*?/,h,X)},O=[H,Z.HASH_COMMENT_MODE,Z.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),G,{className:"string",contains:F,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},Y,{begin:"(\\/\\/|"+Z.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[Z.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:N("s|tr|y",J.either(...K,{capture:!0}))},{begin:N("s|tr|y","\\(","\\)")},{begin:N("s|tr|y","\\[","\\]")},{begin:N("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:U("(?:m|qr)?",/\//,/\//)},{begin:U("m|qr",J.either(...K,{capture:!0}),/\1/)},{begin:U("m|qr",/\(/,/\)/)},{begin:U("m|qr",/\[/,/\]/)},{begin:U("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q,Y]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return W.contains=O,G.contains=O,{name:"Perl",aliases:["pl","pm"],keywords:z,contains:O}}t7.exports=eX});var Z4=y0((yY,e7)=>{function Zz(Z){let J={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},Q=/[a-zA-Z@][a-zA-Z0-9_]*/,q={"variable.language":["this","super"],$pattern:Q,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},H={$pattern:Q,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:q,illegal:"</",contains:[J,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,Z.C_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+H.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:H,contains:[Z.UNDERSCORE_TITLE_MODE]},{begin:"\\."+Z.UNDERSCORE_IDENT_RE,relevance:0}]}}e7.exports=Zz});var $4=y0((_Y,J4)=>{function Jz(Z){let J=Z.regex,Q=/(?![A-Za-z0-9])(?![$])/,X=J.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,Q),z=J.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,Q),W=J.concat(/[A-Z]+/,Q),G={scope:"variable",match:"\\$+"+X},q={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:0.1},{begin:/\?>/}]},H={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},Y=Z.inherit(Z.APOS_STRING_MODE,{illegal:null}),F=Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,contains:Z.QUOTE_STRING_MODE.contains.concat(H)}),K={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:Z.QUOTE_STRING_MODE.contains.concat(H),"on:begin":($0,Q0)=>{Q0.data._beginMatch=$0[1]||$0[2]},"on:end":($0,Q0)=>{if(Q0.data._beginMatch!==$0[1])Q0.ignoreMatch()}},N=Z.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),U=`[
|
|
5
|
+
]`,O={scope:"string",variants:[F,Y,K,N]},C={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},f=["false","null","true"],h=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],_=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],k={keyword:h,literal:(($0)=>{let Q0=[];return $0.forEach((x)=>{if(Q0.push(x),x.toLowerCase()===x)Q0.push(x.toUpperCase());else Q0.push(x.toLowerCase())}),Q0})(f),built_in:_},T=($0)=>{return $0.map((Q0)=>{return Q0.replace(/\|\d+$/,"")})},L={variants:[{match:[/new/,J.concat(`[
|
|
6
|
+
]`,"+"),J.concat("(?!",T(_).join("\\b|"),"\\b)"),z],scope:{1:"keyword",4:"title.class"}}]},P=J.concat(X,"\\b(?!\\()"),w={variants:[{match:[J.concat(/::/,J.lookahead(/(?!class\b)/)),P],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[z,J.concat(/::/,J.lookahead(/(?!class\b)/)),P],scope:{1:"title.class",3:"variable.constant"}},{match:[z,J.concat("::",J.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[z,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},A={scope:"attr",match:J.concat(X,J.lookahead(":"),J.lookahead(/(?!::)/))},y={relevance:0,begin:/\(/,end:/\)/,keywords:k,contains:[A,G,w,Z.C_BLOCK_COMMENT_MODE,O,C,L]},S={relevance:0,match:[/\b/,J.concat("(?!fn\\b|function\\b|",T(h).join("\\b|"),"|",T(_).join("\\b|"),"\\b)"),X,J.concat(`[
|
|
7
|
+
]`,"*"),J.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[y]};y.contains.push(S);let p=[A,w,Z.C_BLOCK_COMMENT_MODE,O,C,L],n={begin:J.concat(/#\[\s*\\?/,J.either(z,W)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:f,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:f,keyword:["new","array"]},contains:["self",...p]},...p,{scope:"meta",variants:[{match:z},{match:W}]}]};return{case_insensitive:!1,keywords:k,contains:[n,Z.HASH_COMMENT_MODE,Z.COMMENT("//","$"),Z.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:Z.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},q,{scope:"variable.language",match:/\$this\b/},G,S,w,{match:[/const/,/\s/,X],scope:{1:"keyword",3:"variable.constant"}},L,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},Z.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:k,contains:["self",n,G,w,Z.C_BLOCK_COMMENT_MODE,O,C]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},Z.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[Z.inherit(Z.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},Z.UNDERSCORE_TITLE_MODE]},O,C]}}J4.exports=Jz});var X4=y0((vY,Q4)=>{function $z(Z){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},Z.inherit(Z.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}Q4.exports=$z});var W4=y0((TY,z4)=>{function Qz(Z){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}z4.exports=Qz});var q4=y0((kY,G4)=>{function Xz(Z){let J=Z.regex,Q=/[\p{XID_Start}_]\p{XID_Continue}*/u,X=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],q={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:X,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},H={className:"meta",begin:/^(>>>|\.\.\.) /},Y={className:"subst",begin:/\{/,end:/\}/,keywords:q,illegal:/#/},F={begin:/\{\{/,relevance:0},K={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,H],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,H],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,H,F,Y]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,H,F,Y]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[Z.BACKSLASH_ESCAPE,F,Y]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,F,Y]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},N="[0-9](_?[0-9])*",U="(\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.",O=`\\b|${X.join("|")}`,C={className:"number",relevance:0,variants:[{begin:`(\\b([0-9](_?[0-9])*)|((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.))[eE][+-]?([0-9](_?[0-9])*)[jJ]?(?=${O})`},{begin:"((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.)[jJ]?"},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${O})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${O})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${O})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${O})`},{begin:`\\b([0-9](_?[0-9])*)[jJ](?=${O})`}]},f={className:"comment",begin:J.lookahead(/# type:/),end:/$/,keywords:q,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},h={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:["self",H,C,K,Z.HASH_COMMENT_MODE]}]};return Y.contains=[K,C,H],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:q,illegal:/(<\/|\?)|=>/,contains:[H,C,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},K,f,Z.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,Q],scope:{1:"keyword",3:"title.function"},contains:[h]},{variants:[{match:[/\bclass/,/\s+/,Q,/\s*/,/\(\s*/,Q,/\s*\)/]},{match:[/\bclass/,/\s+/,Q]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[C,h,K]}]}}G4.exports=Xz});var Y4=y0((RY,H4)=>{function zz(Z){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}H4.exports=zz});var F4=y0((IY,K4)=>{function Wz(Z){let J=Z.regex,Q=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,X=J.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),z=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,W=J.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:Q,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[Z.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:J.lookahead(J.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:Q},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),Z.HASH_COMMENT_MODE,{scope:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[z,X]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,X]},{scope:{1:"punctuation",2:"number"},match:[W,X]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,X]}]},{scope:{3:"operator"},match:[Q,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:z},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:W},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}K4.exports=Wz});var L4=y0((SY,U4)=>{function Gz(Z){let J=Z.regex,Q=/(r#)?/,X=J.concat(Q,Z.UNDERSCORE_IDENT_RE),z=J.concat(Q,Z.IDENT_RE),W={className:"title.function.invoke",relevance:0,begin:J.concat(/\b/,/(?!let|for|while|if|else|match\b)/,z,J.lookahead(/\s*\(/))},G="([ui](8|16|32|64|128|size)|f(32|64))?",q=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],H=["true","false","Some","None","Ok","Err"],Y=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],F=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:Z.IDENT_RE+"!?",type:F,keyword:q,literal:H,built_in:Y},illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.COMMENT("/\\*","\\*/",{contains:["self"]}),Z.inherit(Z.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?"}],relevance:0},{begin:[/fn/,/\s+/,X],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,X],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,X,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:Z.IDENT_RE+"::",keywords:{keyword:"Self",built_in:Y,type:F}},{className:"punctuation",begin:"->"},W]}}U4.exports=Gz});var B4=y0((VY,P4)=>{var qz=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},Hz=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Yz=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Kz=[...Hz,...Yz],Fz=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Uz=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Lz=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Pz=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Bz(Z){let J=qz(Z),Q=Lz,X=Uz,z="@[a-z-]+",W="and or not only",G="[a-zA-Z-][a-zA-Z0-9_-]*",q={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,J.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+Kz.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+X.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+Q.join("|")+")"},q,{begin:/\(/,end:/\)/,contains:[J.CSS_NUMBER_MODE]},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Pz.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[J.BLOCK_COMMENT,q,J.HEXCOLOR,J.CSS_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.IMPORTANT,J.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:"@[a-z-]+",keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Fz.join(" ")},contains:[{begin:"@[a-z-]+",className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},q,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.HEXCOLOR,J.CSS_NUMBER_MODE]},J.FUNCTION_DISPATCH]}}P4.exports=Bz});var A4=y0((fY,O4)=>{function Oz(Z){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}O4.exports=Oz});var w4=y0((gY,N4)=>{function Az(Z){let J=Z.regex,Q=Z.COMMENT("--","$"),X={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},z={begin:/"/,end:/"/,contains:[{match:/""/}]},W=["true","false","unknown"],G=["double precision","large object","with timezone","without timezone"],q=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],H=["add","asc","collation","desc","final","first","last","view"],Y=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],F=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],K=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],N=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],U=F,O=[...Y,...H].filter((T)=>{return!F.includes(T)}),C={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},f={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},h={match:J.concat(/\b/,J.either(...U),/\s*\(/),relevance:0,keywords:{built_in:U}};function _(T){return J.concat(/\b/,J.either(...T.map((L)=>{return L.replace(/\s+/,"\\s+")})),/\b/)}let M={scope:"keyword",match:_(N),relevance:0};function k(T,{exceptions:L,when:P}={}){let w=P;return L=L||[],T.map((A)=>{if(A.match(/\|\d+$/)||L.includes(A))return A;else if(w(A))return`${A}|0`;else return A})}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:k(O,{when:(T)=>T.length<3}),literal:W,type:q,built_in:K},contains:[{scope:"type",match:_(G)},M,h,C,X,z,Z.C_NUMBER_MODE,Z.C_BLOCK_COMMENT_MODE,Q,f]}}N4.exports=Az});var I4=y0((bY,R4)=>{function _4(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function EZ(Z){return V0("(?=",Z,")")}function V0(...Z){return Z.map((Q)=>_4(Q)).join("")}function Nz(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function $9(...Z){return"("+(Nz(Z).capture?"":"?:")+Z.map((X)=>_4(X)).join("|")+")"}var X1=(Z)=>V0(/\b/,Z,/\w$/.test(Z)?/\b/:/\B/),wz=["Protocol","Type"].map(X1),C4=["init","self"].map(X1),Cz=["Any","Self"],$1=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],M4=["false","nil","true"],Mz=["assignment","associativity","higherThan","left","lowerThan","none","right"],yz=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],y4=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],v4=$9(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),T4=$9(v4,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Q1=V0(v4,T4,"*"),k4=$9(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),u8=$9(k4,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),N9=V0(k4,u8,"*"),m8=V0(/[A-Z]/,u8,"*"),_z=["attached","autoclosure",V0(/convention\(/,$9("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",V0(/objc\(/,N9,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],vz=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function Tz(Z){let J={match:/\s+/,relevance:0},Q=Z.COMMENT("/\\*","\\*/",{contains:["self"]}),X=[Z.C_LINE_COMMENT_MODE,Q],z={match:[/\./,$9(...wz,...C4)],className:{2:"keyword"}},W={match:V0(/\./,$9(...$1)),relevance:0},G=$1.filter((T0)=>typeof T0==="string").concat(["_|0"]),q=$1.filter((T0)=>typeof T0!=="string").concat(Cz).map(X1),H={variants:[{className:"keyword",match:$9(...q,...C4)}]},Y={$pattern:$9(/\b\w+/,/#\w+/),keyword:G.concat(yz),literal:M4},F=[z,W,H],K={match:V0(/\./,$9(...y4)),relevance:0},N={className:"built_in",match:V0(/\b/,$9(...y4),/(?=\()/)},U=[K,N],O={match:/->/,relevance:0},C={className:"operator",relevance:0,variants:[{match:Q1},{match:`\\.(\\.|${T4})+`}]},f=[O,C],h="([0-9]_*)+",_="([0-9a-fA-F]_*)+",M={className:"number",relevance:0,variants:[{match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{match:"\\b0x(([0-9a-fA-F]_*)+)(\\.(([0-9a-fA-F]_*)+))?([pP][+-]?(([0-9]_*)+))?\\b"},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},k=(T0="")=>({className:"subst",variants:[{match:V0(/\\/,T0,/[0\\tnr"']/)},{match:V0(/\\/,T0,/u\{[0-9a-fA-F]{1,8}\}/)}]}),T=(T0="")=>({className:"subst",match:V0(/\\/,T0,/[\t ]*(?:[\r\n]|\r\n)/)}),L=(T0="")=>({className:"subst",label:"interpol",begin:V0(/\\/,T0,/\(/),end:/\)/}),P=(T0="")=>({begin:V0(T0,/"""/),end:V0(/"""/,T0),contains:[k(T0),T(T0),L(T0)]}),w=(T0="")=>({begin:V0(T0,/"/),end:V0(/"/,T0),contains:[k(T0),L(T0)]}),A={className:"string",variants:[P(),P("#"),P("##"),P("###"),w(),w("#"),w("##"),w("###")]},y=[Z.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[Z.BACKSLASH_ESCAPE]}],S={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:y},p=(T0)=>{let o0=V0(T0,/\//),K0=V0(/\//,T0);return{begin:o0,end:K0,contains:[...y,{scope:"comment",begin:`#(?!.*${K0})`,end:/$/}]}},n={scope:"regexp",variants:[p("###"),p("##"),p("#"),S]},$0={match:V0(/`/,N9,/`/)},Q0={className:"variable",match:/\$\d+/},x={className:"variable",match:`\\$${u8}+`},b=[$0,Q0,x],u={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:vz,contains:[...f,M,A]}]}},V={scope:"keyword",match:V0(/@/,$9(..._z),EZ($9(/\(/,/\s+/)))},i={scope:"meta",match:V0(/@/,N9)},Z0=[u,V,i],G0={match:EZ(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:V0(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,u8,"+")},{className:"type",match:m8,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:V0(/\s+&\s+/,EZ(m8)),relevance:0}]},J0={begin:/</,end:/>/,keywords:Y,contains:[...X,...F,...Z0,O,G0]};G0.contains.push(J0);let e={match:V0(N9,/\s*:/),keywords:"_|0",relevance:0},P0={begin:/\(/,end:/\)/,relevance:0,keywords:Y,contains:["self",e,...X,n,...F,...U,...f,M,A,...b,...Z0,G0]},l0={begin:/</,end:/>/,keywords:"repeat each",contains:[...X,G0]},c0={begin:$9(EZ(V0(N9,/\s*:/)),EZ(V0(N9,/\s+/,N9,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:N9}]},d0={begin:/\(/,end:/\)/,keywords:Y,contains:[c0,...X,...F,...f,M,A,...Z0,G0,P0],endsParent:!0,illegal:/["']/},n0={match:[/(func|macro)/,/\s+/,$9($0.match,N9,Q1)],className:{1:"keyword",3:"title.function"},contains:[l0,d0,J],illegal:[/\[/,/%/]},E0={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[l0,d0,J],illegal:/\[|%/},N0={match:[/operator/,/\s+/,Q1],className:{1:"keyword",3:"title"}},v0={begin:[/precedencegroup/,/\s+/,m8],className:{1:"keyword",3:"title"},contains:[G0],keywords:[...Mz,...M4],end:/}/},O0={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},j0={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},i0={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,N9,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:Y,contains:[l0,...F,{begin:/:/,end:/\{/,keywords:Y,contains:[{scope:"title.class.inherited",match:m8},...F],relevance:0}]};for(let T0 of A.variants){let o0=T0.contains.find((q0)=>q0.label==="interpol");o0.keywords=Y;let K0=[...F,...U,...f,M,A,...b];o0.contains=[...K0,{begin:/\(/,end:/\)/,contains:["self",...K0]}]}return{name:"Swift",keywords:Y,contains:[...X,n0,E0,O0,j0,i0,N0,v0,{beginKeywords:"import",end:/$/,contains:[...X],relevance:0},n,...F,...U,...f,M,A,...b,...Z0,G0,P0]}}R4.exports=Tz});var V4=y0((jY,S4)=>{function kz(Z){let X={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},z={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},W={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},G={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[Z.BACKSLASH_ESCAPE,z]},q=Z.inherit(G,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),H="[0-9]{4}(-[0-9][0-9]){0,2}",Y="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",F="(\\.[0-9]*)?",K="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",N={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},U={end:",",endsWithParent:!0,excludeEnd:!0,keywords:"true false yes no null",relevance:0},O={begin:/\{/,end:/\}/,contains:[U],illegal:"\\n",relevance:0},C={begin:"\\[",end:"\\]",contains:[U],illegal:"\\n",relevance:0},f=[X,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!<[\\w#;/?:@&=+$,.~*'()[\\]]+>"},{className:"type",begin:"![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"meta",begin:"&"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},Z.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},N,{className:"number",begin:Z.C_NUMBER_RE+"\\b",relevance:0},O,C,W,G],h=[...f];return h.pop(),h.push(q),U.contains=h,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:f}}S4.exports=kz});var u4=y0((hY,m4)=>{var f4=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],g4=["true","false","null","undefined","NaN","Infinity"],b4=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],j4=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],h4=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],D4=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],x4=[].concat(h4,b4,j4);function Rz(Z){let J=Z.regex,Q=(u,{after:V})=>{let i="</"+u[0].slice(1);return u.input.indexOf(i,V)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},W=/<[A-Za-z0-9\\._:-]+\s*\/>/,G={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(u,V)=>{let i=u[0].length+u.index,Z0=u.input[i];if(Z0==="<"||Z0===","){V.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:i}))V.ignoreMatch()}let G0,J0=u.input.substring(i);if(G0=J0.match(/^\s*=/)){V.ignoreMatch();return}if(G0=J0.match(/^\s+extends\s+/)){if(G0.index===0){V.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:f4,literal:g4,built_in:x4,"variable.language":D4},H="[0-9](_?[0-9])*",Y="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},N={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},U={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"css"}},C={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"graphql"}},f={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,N]},_={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},M=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,{match:/\$\d+/},K];N.contains=M.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(M)});let k=[].concat(_,N.contains),T=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(k)}]),L={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T},P={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...b4,...j4]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},y={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[L],illegal:/%/},S={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function p(u){return J.concat("(?!",u.join("|"),")")}let n={match:J.concat(/\b/,p([...h4,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},$0={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},L]},x="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",b={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(x)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[L]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:T,CLASS_REFERENCE:w},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,_,{match:/\$\d+/},K,w,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},b,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[_,Z.REGEXP_MODE,{className:"function",begin:x,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:W},{begin:G.begin,"on:begin":G.isTrulyOpeningTag,end:G.end}],subLanguage:"xml",contains:[{begin:G.begin,end:G.end,skip:!0,contains:["self"]}]}]},y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[L,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},$0,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[L]},n,S,P,Q0,{match:/\$[(.]/}]}}function Iz(Z){let J=Z.regex,Q=Rz(Z),X="[A-Za-z$_][0-9A-Za-z$_]*",z=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],W={begin:[/namespace/,/\s+/,Z.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},G={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:z},contains:[Q.exports.CLASS_REFERENCE]},q={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},H=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],Y={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:f4.concat(H),literal:g4,built_in:x4.concat(z),"variable.language":D4},F={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},K=(C,f,h)=>{let _=C.contains.findIndex((M)=>M.label===f);if(_===-1)throw Error("can not find mode to replace");C.contains.splice(_,1,h)};Object.assign(Q.keywords,Y),Q.exports.PARAMS_CONTAINS.push(F);let N=Q.contains.find((C)=>C.scope==="attr"),U=Object.assign({},N,{match:J.concat("[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\?:/))});Q.exports.PARAMS_CONTAINS.push([Q.exports.CLASS_REFERENCE,N,U]),Q.contains=Q.contains.concat([F,W,G,U]),K(Q,"shebang",Z.SHEBANG()),K(Q,"use_strict",q);let O=Q.contains.find((C)=>C.label==="func.def");return O.relevance=0,Object.assign(Q,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),Q}m4.exports=Iz});var p4=y0((DY,E4)=>{function Sz(Z){let J=Z.regex,Q={className:"string",begin:/"(""|[^/n])"C\b/},X={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},z=/\d{1,2}\/\d{1,2}\/\d{4}/,W=/\d{4}-\d{1,2}-\d{1,2}/,G=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,q=/\d{1,2}(:\d{1,2}){1,2}/,H={className:"literal",variants:[{begin:J.concat(/# */,J.either(W,z),/ *#/)},{begin:J.concat(/# */,q,/ *#/)},{begin:J.concat(/# */,G,/ *#/)},{begin:J.concat(/# */,J.either(W,z),/ +/,J.either(G,q),/ *#/)}]},Y={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},F={className:"label",begin:/^\w+:/},K=Z.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),N=Z.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[Q,X,H,Y,F,K,N,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[N]}]}}E4.exports=Sz});var d4=y0((xY,c4)=>{function Vz(Z){Z.regex;let J=Z.COMMENT(/\(;/,/;\)/);J.contains.push("self");let Q=Z.COMMENT(/;;/,/$/),X=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],z={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},W={className:"variable",begin:/\$[\w_]+/},G={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},q={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},H={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},Y={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:X},contains:[Q,J,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},W,G,z,Z.QUOTE_STRING_MODE,H,Y,q]}}c4.exports=Vz});var a4=y0((mY,i4)=>{var C0=z7();C0.registerLanguage("xml",G7());C0.registerLanguage("bash",H7());C0.registerLanguage("c",K7());C0.registerLanguage("cpp",U7());C0.registerLanguage("csharp",P7());C0.registerLanguage("css",O7());C0.registerLanguage("markdown",N7());C0.registerLanguage("diff",C7());C0.registerLanguage("ruby",y7());C0.registerLanguage("go",v7());C0.registerLanguage("graphql",k7());C0.registerLanguage("ini",I7());C0.registerLanguage("java",g7());C0.registerLanguage("javascript",x7());C0.registerLanguage("json",u7());C0.registerLanguage("kotlin",p7());C0.registerLanguage("less",a7());C0.registerLanguage("lua",l7());C0.registerLanguage("makefile",o7());C0.registerLanguage("perl",s7());C0.registerLanguage("objectivec",Z4());C0.registerLanguage("php",$4());C0.registerLanguage("php-template",X4());C0.registerLanguage("plaintext",W4());C0.registerLanguage("python",q4());C0.registerLanguage("python-repl",Y4());C0.registerLanguage("r",F4());C0.registerLanguage("rust",L4());C0.registerLanguage("scss",B4());C0.registerLanguage("shell",A4());C0.registerLanguage("sql",w4());C0.registerLanguage("swift",I4());C0.registerLanguage("yaml",V4());C0.registerLanguage("typescript",u4());C0.registerLanguage("vbnet",p4());C0.registerLanguage("wasm",d4());C0.HighlightJS=C0;C0.default=C0;i4.exports=C0});var P8,S0,YJ,z2,R9,WJ,KJ,FJ,G6,H8,vZ,UJ,K6,q6,H6,W2,F8={},U8=[],G2=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,B8=Array.isArray;function C9(Z,J){for(var Q in J)Z[Q]=J[Q];return Z}function F6(Z){Z&&Z.parentNode&&Z.parentNode.removeChild(Z)}function q2(Z,J,Q){var X,z,W,G={};for(W in J)W=="key"?X=J[W]:W=="ref"?z=J[W]:G[W]=J[W];if(arguments.length>2&&(G.children=arguments.length>3?P8.call(arguments,2):Q),typeof Z=="function"&&Z.defaultProps!=null)for(W in Z.defaultProps)G[W]===void 0&&(G[W]=Z.defaultProps[W]);return Y8(Z,G,X,z,null)}function Y8(Z,J,Q,X,z){var W={type:Z,props:J,key:Q,ref:X,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:z==null?++YJ:z,__i:-1,__u:0};return z==null&&S0.vnode!=null&&S0.vnode(W),W}function r(Z){return Z.children}function K8(Z,J){this.props=Z,this.context=J}function zZ(Z,J){if(J==null)return Z.__?zZ(Z.__,Z.__i+1):null;for(var Q;J<Z.__k.length;J++)if((Q=Z.__k[J])!=null&&Q.__e!=null)return Q.__e;return typeof Z.type=="function"?zZ(Z):null}function H2(Z){if(Z.__P&&Z.__d){var J=Z.__v,Q=J.__e,X=[],z=[],W=C9({},J);W.__v=J.__v+1,S0.vnode&&S0.vnode(W),U6(Z.__P,W,J,Z.__n,Z.__P.namespaceURI,32&J.__u?[Q]:null,X,Q==null?zZ(J):Q,!!(32&J.__u),z),W.__v=J.__v,W.__.__k[W.__i]=W,OJ(X,W,z),J.__e=J.__=null,W.__e!=Q&&LJ(W)}}function LJ(Z){if((Z=Z.__)!=null&&Z.__c!=null)return Z.__e=Z.__c.base=null,Z.__k.some(function(J){if(J!=null&&J.__e!=null)return Z.__e=Z.__c.base=J.__e}),LJ(Z)}function GJ(Z){(!Z.__d&&(Z.__d=!0)&&R9.push(Z)&&!L8.__r++||WJ!=S0.debounceRendering)&&((WJ=S0.debounceRendering)||KJ)(L8)}function L8(){try{for(var Z,J=1;R9.length;)R9.length>J&&R9.sort(FJ),Z=R9.shift(),J=R9.length,H2(Z)}finally{R9.length=L8.__r=0}}function PJ(Z,J,Q,X,z,W,G,q,H,Y,F){var K,N,U,O,C,f,h,_=X&&X.__k||U8,M=J.length;for(H=Y2(Q,J,_,H,M),K=0;K<M;K++)(U=Q.__k[K])!=null&&(N=U.__i!=-1&&_[U.__i]||F8,U.__i=K,f=U6(Z,U,N,z,W,G,q,H,Y,F),O=U.__e,U.ref&&N.ref!=U.ref&&(N.ref&&L6(N.ref,null,U),F.push(U.ref,U.__c||O,U)),C==null&&O!=null&&(C=O),(h=!!(4&U.__u))||N.__k===U.__k?(H=BJ(U,H,Z,h),h&&N.__e&&(N.__e=null)):typeof U.type=="function"&&f!==void 0?H=f:O&&(H=O.nextSibling),U.__u&=-7);return Q.__e=C,H}function Y2(Z,J,Q,X,z){var W,G,q,H,Y,F=Q.length,K=F,N=0;for(Z.__k=Array(z),W=0;W<z;W++)(G=J[W])!=null&&typeof G!="boolean"&&typeof G!="function"?(typeof G=="string"||typeof G=="number"||typeof G=="bigint"||G.constructor==String?G=Z.__k[W]=Y8(null,G,null,null,null):B8(G)?G=Z.__k[W]=Y8(r,{children:G},null,null,null):G.constructor===void 0&&G.__b>0?G=Z.__k[W]=Y8(G.type,G.props,G.key,G.ref?G.ref:null,G.__v):Z.__k[W]=G,H=W+N,G.__=Z,G.__b=Z.__b+1,q=null,(Y=G.__i=K2(G,Q,H,K))!=-1&&(K--,(q=Q[Y])&&(q.__u|=2)),q==null||q.__v==null?(Y==-1&&(z>F?N--:z<F&&N++),typeof G.type!="function"&&(G.__u|=4)):Y!=H&&(Y==H-1?N--:Y==H+1?N++:(Y>H?N--:N++,G.__u|=4))):Z.__k[W]=null;if(K)for(W=0;W<F;W++)(q=Q[W])!=null&&(2&q.__u)==0&&(q.__e==X&&(X=zZ(q)),NJ(q,q));return X}function BJ(Z,J,Q,X){var z,W;if(typeof Z.type=="function"){for(z=Z.__k,W=0;z&&W<z.length;W++)z[W]&&(z[W].__=Z,J=BJ(z[W],J,Q,X));return J}Z.__e!=J&&(X&&(J&&Z.type&&!J.parentNode&&(J=zZ(Z)),Q.insertBefore(Z.__e,J||null)),J=Z.__e);do J=J&&J.nextSibling;while(J!=null&&J.nodeType==8);return J}function K2(Z,J,Q,X){var z,W,G,q=Z.key,H=Z.type,Y=J[Q],F=Y!=null&&(2&Y.__u)==0;if(Y===null&&q==null||F&&q==Y.key&&H==Y.type)return Q;if(X>(F?1:0)){for(z=Q-1,W=Q+1;z>=0||W<J.length;)if((Y=J[G=z>=0?z--:W++])!=null&&(2&Y.__u)==0&&q==Y.key&&H==Y.type)return G}return-1}function qJ(Z,J,Q){J[0]=="-"?Z.setProperty(J,Q==null?"":Q):Z[J]=Q==null?"":typeof Q!="number"||G2.test(J)?Q:Q+"px"}function q8(Z,J,Q,X,z){var W,G;Z:if(J=="style")if(typeof Q=="string")Z.style.cssText=Q;else{if(typeof X=="string"&&(Z.style.cssText=X=""),X)for(J in X)Q&&J in Q||qJ(Z.style,J,"");if(Q)for(J in Q)X&&Q[J]==X[J]||qJ(Z.style,J,Q[J])}else if(J[0]=="o"&&J[1]=="n")W=J!=(J=J.replace(UJ,"$1")),G=J.toLowerCase(),J=G in Z||J=="onFocusOut"||J=="onFocusIn"?G.slice(2):J.slice(2),Z.l||(Z.l={}),Z.l[J+W]=Q,Q?X?Q[vZ]=X[vZ]:(Q[vZ]=K6,Z.addEventListener(J,W?H6:q6,W)):Z.removeEventListener(J,W?H6:q6,W);else{if(z=="http://www.w3.org/2000/svg")J=J.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(J!="width"&&J!="height"&&J!="href"&&J!="list"&&J!="form"&&J!="tabIndex"&&J!="download"&&J!="rowSpan"&&J!="colSpan"&&J!="role"&&J!="popover"&&J in Z)try{Z[J]=Q==null?"":Q;break Z}catch(q){}typeof Q=="function"||(Q==null||Q===!1&&J[4]!="-"?Z.removeAttribute(J):Z.setAttribute(J,J=="popover"&&Q==1?"":Q))}}function HJ(Z){return function(J){if(this.l){var Q=this.l[J.type+Z];if(J[H8]==null)J[H8]=K6++;else if(J[H8]<Q[vZ])return;return Q(S0.event?S0.event(J):J)}}}function U6(Z,J,Q,X,z,W,G,q,H,Y){var F,K,N,U,O,C,f,h,_,M,k,T,L,P,w,A=J.type;if(J.constructor!==void 0)return null;128&Q.__u&&(H=!!(32&Q.__u),W=[q=J.__e=Q.__e]),(F=S0.__b)&&F(J);Z:if(typeof A=="function")try{if(h=J.props,_=A.prototype&&A.prototype.render,M=(F=A.contextType)&&X[F.__c],k=F?M?M.props.value:F.__:X,Q.__c?f=(K=J.__c=Q.__c).__=K.__E:(_?J.__c=K=new A(h,k):(J.__c=K=new K8(h,k),K.constructor=A,K.render=U2),M&&M.sub(K),K.state||(K.state={}),K.__n=X,N=K.__d=!0,K.__h=[],K._sb=[]),_&&K.__s==null&&(K.__s=K.state),_&&A.getDerivedStateFromProps!=null&&(K.__s==K.state&&(K.__s=C9({},K.__s)),C9(K.__s,A.getDerivedStateFromProps(h,K.__s))),U=K.props,O=K.state,K.__v=J,N)_&&A.getDerivedStateFromProps==null&&K.componentWillMount!=null&&K.componentWillMount(),_&&K.componentDidMount!=null&&K.__h.push(K.componentDidMount);else{if(_&&A.getDerivedStateFromProps==null&&h!==U&&K.componentWillReceiveProps!=null&&K.componentWillReceiveProps(h,k),J.__v==Q.__v||!K.__e&&K.shouldComponentUpdate!=null&&K.shouldComponentUpdate(h,K.__s,k)===!1){J.__v!=Q.__v&&(K.props=h,K.state=K.__s,K.__d=!1),J.__e=Q.__e,J.__k=Q.__k,J.__k.some(function(y){y&&(y.__=J)}),U8.push.apply(K.__h,K._sb),K._sb=[],K.__h.length&&G.push(K);break Z}K.componentWillUpdate!=null&&K.componentWillUpdate(h,K.__s,k),_&&K.componentDidUpdate!=null&&K.__h.push(function(){K.componentDidUpdate(U,O,C)})}if(K.context=k,K.props=h,K.__P=Z,K.__e=!1,T=S0.__r,L=0,_)K.state=K.__s,K.__d=!1,T&&T(J),F=K.render(K.props,K.state,K.context),U8.push.apply(K.__h,K._sb),K._sb=[];else do K.__d=!1,T&&T(J),F=K.render(K.props,K.state,K.context),K.state=K.__s;while(K.__d&&++L<25);K.state=K.__s,K.getChildContext!=null&&(X=C9(C9({},X),K.getChildContext())),_&&!N&&K.getSnapshotBeforeUpdate!=null&&(C=K.getSnapshotBeforeUpdate(U,O)),P=F!=null&&F.type===r&&F.key==null?AJ(F.props.children):F,q=PJ(Z,B8(P)?P:[P],J,Q,X,z,W,G,q,H,Y),K.base=J.__e,J.__u&=-161,K.__h.length&&G.push(K),f&&(K.__E=K.__=null)}catch(y){if(J.__v=null,H||W!=null)if(y.then){for(J.__u|=H?160:128;q&&q.nodeType==8&&q.nextSibling;)q=q.nextSibling;W[W.indexOf(q)]=null,J.__e=q}else{for(w=W.length;w--;)F6(W[w]);Y6(J)}else J.__e=Q.__e,J.__k=Q.__k,y.then||Y6(J);S0.__e(y,J,Q)}else W==null&&J.__v==Q.__v?(J.__k=Q.__k,J.__e=Q.__e):q=J.__e=F2(Q.__e,J,Q,X,z,W,G,H,Y);return(F=S0.diffed)&&F(J),128&J.__u?void 0:q}function Y6(Z){Z&&(Z.__c&&(Z.__c.__e=!0),Z.__k&&Z.__k.some(Y6))}function OJ(Z,J,Q){for(var X=0;X<Q.length;X++)L6(Q[X],Q[++X],Q[++X]);S0.__c&&S0.__c(J,Z),Z.some(function(z){try{Z=z.__h,z.__h=[],Z.some(function(W){W.call(z)})}catch(W){S0.__e(W,z.__v)}})}function AJ(Z){return typeof Z!="object"||Z==null||Z.__b>0?Z:B8(Z)?Z.map(AJ):Z.constructor!==void 0?null:C9({},Z)}function F2(Z,J,Q,X,z,W,G,q,H){var Y,F,K,N,U,O,C,f=Q.props||F8,h=J.props,_=J.type;if(_=="svg"?z="http://www.w3.org/2000/svg":_=="math"?z="http://www.w3.org/1998/Math/MathML":z||(z="http://www.w3.org/1999/xhtml"),W!=null){for(Y=0;Y<W.length;Y++)if((U=W[Y])&&"setAttribute"in U==!!_&&(_?U.localName==_:U.nodeType==3)){Z=U,W[Y]=null;break}}if(Z==null){if(_==null)return document.createTextNode(h);Z=document.createElementNS(z,_,h.is&&h),q&&(S0.__m&&S0.__m(J,W),q=!1),W=null}if(_==null)f===h||q&&Z.data==h||(Z.data=h);else{if(W=_=="textarea"&&h.defaultValue!=null?null:W&&P8.call(Z.childNodes),!q&&W!=null)for(f={},Y=0;Y<Z.attributes.length;Y++)f[(U=Z.attributes[Y]).name]=U.value;for(Y in f)U=f[Y],Y=="dangerouslySetInnerHTML"?K=U:Y=="children"||(Y in h)||Y=="value"&&("defaultValue"in h)||Y=="checked"&&("defaultChecked"in h)||q8(Z,Y,null,U,z);for(Y in h)U=h[Y],Y=="children"?N=U:Y=="dangerouslySetInnerHTML"?F=U:Y=="value"?O=U:Y=="checked"?C=U:q&&typeof U!="function"||f[Y]===U||q8(Z,Y,U,f[Y],z);if(F)q||K&&(F.__html==K.__html||F.__html==Z.innerHTML)||(Z.innerHTML=F.__html),J.__k=[];else if(K&&(Z.innerHTML=""),PJ(J.type=="template"?Z.content:Z,B8(N)?N:[N],J,Q,X,_=="foreignObject"?"http://www.w3.org/1999/xhtml":z,W,G,W?W[0]:Q.__k&&zZ(Q,0),q,H),W!=null)for(Y=W.length;Y--;)F6(W[Y]);q&&_!="textarea"||(Y="value",_=="progress"&&O==null?Z.removeAttribute("value"):O!=null&&(O!==Z[Y]||_=="progress"&&!O||_=="option"&&O!=f[Y])&&q8(Z,Y,O,f[Y],z),Y="checked",C!=null&&C!=Z[Y]&&q8(Z,Y,C,f[Y],z))}return Z}function L6(Z,J,Q){try{if(typeof Z=="function"){var X=typeof Z.__u=="function";X&&Z.__u(),X&&J==null||(Z.__u=Z(J))}else Z.current=J}catch(z){S0.__e(z,Q)}}function NJ(Z,J,Q){var X,z;if(S0.unmount&&S0.unmount(Z),(X=Z.ref)&&(X.current&&X.current!=Z.__e||L6(X,null,J)),(X=Z.__c)!=null){if(X.componentWillUnmount)try{X.componentWillUnmount()}catch(W){S0.__e(W,J)}X.base=X.__P=null}if(X=Z.__k)for(z=0;z<X.length;z++)X[z]&&NJ(X[z],J,Q||typeof Z.type!="function");Q||F6(Z.__e),Z.__c=Z.__=Z.__e=void 0}function U2(Z,J,Q){return this.constructor(Z,Q)}function D9(Z,J,Q){var X,z,W,G;J==document&&(J=document.documentElement),S0.__&&S0.__(Z,J),z=(X=typeof Q=="function")?null:Q&&Q.__k||J.__k,W=[],G=[],U6(J,Z=(!X&&Q||J).__k=q2(r,null,[Z]),z||F8,F8,J.namespaceURI,!X&&Q?[Q]:z?null:J.firstChild?P8.call(J.childNodes):null,W,!X&&Q?Q:z?z.__e:J.firstChild,X,G),OJ(W,Z,G)}P8=U8.slice,S0={__e:function(Z,J,Q,X){for(var z,W,G;J=J.__;)if((z=J.__c)&&!z.__)try{if((W=z.constructor)&&W.getDerivedStateFromError!=null&&(z.setState(W.getDerivedStateFromError(Z)),G=z.__d),z.componentDidCatch!=null&&(z.componentDidCatch(Z,X||{}),G=z.__d),G)return z.__E=z}catch(q){Z=q}throw Z}},YJ=0,z2=function(Z){return Z!=null&&Z.constructor===void 0},K8.prototype.setState=function(Z,J){var Q;Q=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=C9({},this.state),typeof Z=="function"&&(Z=Z(C9({},Q),this.props)),Z&&C9(Q,Z),Z!=null&&this.__v&&(J&&this._sb.push(J),GJ(this))},K8.prototype.forceUpdate=function(Z){this.__v&&(this.__e=!0,Z&&this.__h.push(Z),GJ(this))},K8.prototype.render=r,R9=[],KJ=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,FJ=function(Z,J){return Z.__v.__b-J.__v.__b},L8.__r=0,G6=Math.random().toString(8),H8="__d"+G6,vZ="__a"+G6,UJ=/(PointerCapture)$|Capture$/i,K6=0,q6=HJ(!1),H6=HJ(!0),W2=0;var WZ,x0,P6,wJ,TZ=0,RJ=[],u0=S0,CJ=u0.__b,MJ=u0.__r,yJ=u0.diffed,_J=u0.__c,vJ=u0.unmount,TJ=u0.__;function A8(Z,J){u0.__h&&u0.__h(x0,Z,TZ||J),TZ=0;var Q=x0.__H||(x0.__H={__:[],__h:[]});return Z>=Q.__.length&&Q.__.push({}),Q.__[Z]}function R(Z){return TZ=1,L2(SJ,Z)}function L2(Z,J,Q){var X=A8(WZ++,2);if(X.t=Z,!X.__c&&(X.__=[Q?Q(J):SJ(void 0,J),function(q){var H=X.__N?X.__N[0]:X.__[0],Y=X.t(H,q);H!==Y&&(X.__N=[Y,X.__[1]],X.__c.setState({}))}],X.__c=x0,!x0.__f)){var z=function(q,H,Y){if(!X.__c.__H)return!0;var F=X.__c.__H.__.filter(function(N){return N.__c});if(F.every(function(N){return!N.__N}))return!W||W.call(this,q,H,Y);var K=X.__c.props!==q;return F.some(function(N){if(N.__N){var U=N.__[0];N.__=N.__N,N.__N=void 0,U!==N.__[0]&&(K=!0)}}),W&&W.call(this,q,H,Y)||K};x0.__f=!0;var{shouldComponentUpdate:W,componentWillUpdate:G}=x0;x0.componentWillUpdate=function(q,H,Y){if(this.__e){var F=W;W=void 0,z(q,H,Y),W=F}G&&G.call(this,q,H,Y)},x0.shouldComponentUpdate=z}return X.__N||X.__}function o(Z,J){var Q=A8(WZ++,3);!u0.__s&&O6(Q.__H,J)&&(Q.__=Z,Q.u=J,x0.__H.__h.push(Q))}function IJ(Z,J){var Q=A8(WZ++,4);!u0.__s&&O6(Q.__H,J)&&(Q.__=Z,Q.u=J,x0.__h.push(Q))}function W0(Z){return TZ=5,M9(function(){return{current:Z}},[])}function M9(Z,J){var Q=A8(WZ++,7);return O6(Q.__H,J)&&(Q.__=Z(),Q.__H=J,Q.__h=Z),Q.__}function x9(Z,J){return TZ=8,M9(function(){return Z},J)}function P2(){for(var Z;Z=RJ.shift();){var J=Z.__H;if(Z.__P&&J)try{J.__h.some(O8),J.__h.some(B6),J.__h=[]}catch(Q){J.__h=[],u0.__e(Q,Z.__v)}}}u0.__b=function(Z){x0=null,CJ&&CJ(Z)},u0.__=function(Z,J){Z&&J.__k&&J.__k.__m&&(Z.__m=J.__k.__m),TJ&&TJ(Z,J)},u0.__r=function(Z){MJ&&MJ(Z),WZ=0;var J=(x0=Z.__c).__H;J&&(P6===x0?(J.__h=[],x0.__h=[],J.__.some(function(Q){Q.__N&&(Q.__=Q.__N),Q.u=Q.__N=void 0})):(J.__h.some(O8),J.__h.some(B6),J.__h=[],WZ=0)),P6=x0},u0.diffed=function(Z){yJ&&yJ(Z);var J=Z.__c;J&&J.__H&&(J.__H.__h.length&&(RJ.push(J)!==1&&wJ===u0.requestAnimationFrame||((wJ=u0.requestAnimationFrame)||B2)(P2)),J.__H.__.some(function(Q){Q.u&&(Q.__H=Q.u),Q.u=void 0})),P6=x0=null},u0.__c=function(Z,J){J.some(function(Q){try{Q.__h.some(O8),Q.__h=Q.__h.filter(function(X){return!X.__||B6(X)})}catch(X){J.some(function(z){z.__h&&(z.__h=[])}),J=[],u0.__e(X,Q.__v)}}),_J&&_J(Z,J)},u0.unmount=function(Z){vJ&&vJ(Z);var J,Q=Z.__c;Q&&Q.__H&&(Q.__H.__.some(function(X){try{O8(X)}catch(z){J=z}}),Q.__H=void 0,J&&u0.__e(J,Q.__v))};var kJ=typeof requestAnimationFrame=="function";function B2(Z){var J,Q=function(){clearTimeout(X),kJ&&cancelAnimationFrame(J),setTimeout(Z)},X=setTimeout(Q,35);kJ&&(J=requestAnimationFrame(Q))}function O8(Z){var J=x0,Q=Z.__c;typeof Q=="function"&&(Z.__c=void 0,Q()),x0=J}function B6(Z){var J=x0;Z.__c=Z.__(),x0=J}function O6(Z,J){return!Z||Z.length!==J.length||J.some(function(Q,X){return Q!==Z[X]})}function SJ(Z,J){return typeof J=="function"?J(Z):J}class m9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="BusError"}}class VJ{ch=null;worker=null;started=!1;leader=!1;nextLocal=0;localPending=new Map;remotePending=new Map;listeners=new Set;start(){if(this.started)return;this.started=!0,this.ch=new BroadcastChannel("mh-replica-bus"),this.ch.onmessage=(J)=>this.onChannel(J.data);let Z=navigator.locks;if(Z)Z.request("mh-replica-leader",()=>{return this.becomeLeader(),new Promise(()=>{})}).catch(()=>{});else this.becomeLeader()}onEvent(Z){return this.listeners.add(Z),()=>this.listeners.delete(Z)}call(Z,...J){if(!this.started)this.start();if(this.leader)return this.workerCall(Z,J);return this.remoteCall(Z,J)}becomeLeader(){if(this.leader)return;this.leader=!0,this.spawnWorker();for(let[Z,J]of[...this.remotePending])this.remotePending.delete(Z),clearTimeout(J.timer),this.workerCall(J.op,J.args).then(J.resolve,J.reject)}spawnWorker(){if(this.worker)return;this.worker=new Worker("/db-worker.js",{type:"module"}),this.worker.onmessage=(Z)=>{let J=Z.data;if("id"in J){let Q=this.localPending.get(J.id);if(!Q)return;if(this.localPending.delete(J.id),J.ok)Q.resolve(J.result);else Q.reject(new m9(J.error.message,J.error.code));return}this.emit(J),this.ch?.postMessage({kind:"event",event:J})},this.worker.onerror=()=>{let Z={event:"status",status:{state:"error",paired:!1,node:null,error:"worker crashed"}};this.emit(Z),this.ch?.postMessage({kind:"event",event:Z})}}workerCall(Z,J){if(!this.worker)this.spawnWorker();let Q=++this.nextLocal;return new Promise((X,z)=>{this.localPending.set(Q,{resolve:X,reject:z}),this.worker.postMessage({id:Q,op:Z,args:J})})}remoteCall(Z,J){let Q=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;return new Promise((X,z)=>{let W=setTimeout(()=>{if(this.remotePending.delete(Q),this.leader){this.workerCall(Z,J).then(X,z);return}z(new m9("replica leader unavailable","network"))},1e4);this.remotePending.set(Q,{resolve:X,reject:z,timer:W,op:Z,args:J}),this.ch?.postMessage({kind:"req",id:Q,op:Z,args:J})})}onChannel(Z){if(Z.kind==="req"){if(!this.leader)return;this.workerCall(Z.op,Z.args).then((J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!0,result:J}),(J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!1,error:{message:J.message,code:J.code}}));return}if(Z.kind==="res"){let J=this.remotePending.get(Z.id);if(!J)return;if(this.remotePending.delete(Z.id),clearTimeout(J.timer),Z.ok)J.resolve(Z.result);else J.reject(new m9(Z.error?.message??"replica error",Z.error?.code));return}if(Z.kind==="event"&&!this.leader)this.emit(Z.event)}emit(Z){for(let J of this.listeners)J(Z)}stopWorker(){this.worker?.terminate(),this.worker=null,this.localPending.forEach((Z)=>Z.reject(new m9("replica stopped",void 0))),this.localPending.clear()}}function N8(){let Z=globalThis;return Z.__mhReplicaBus??=new VJ}function O2(Z,J){if(Z===null)return"unknown";if(Z.status>=500)return"unknown";if(Z.ok)return J?.ok===!0?"server":"none";return"none"}async function fJ(){let Z=null,J=null;try{Z=await fetch("/health",{cache:"no-store"}),J=Z.ok?await Z.json().catch(()=>null):null}catch{Z=null}return O2(Z,J)}var p9="mh-synced",RZ="mh_replica",kZ="mh_replica_hydrated",jJ="mh_origin_mode";class _9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="ReplicaError"}}var v9=!1,y9={state:"booting",paired:!1,node:null},w8=new Set;function IZ(){return y9}function F9(Z){return w8.add(Z),()=>w8.delete(Z)}function A6(Z){try{return localStorage.getItem(Z)==="1"}catch{return!1}}function u9(Z,J){try{J?localStorage.setItem(Z,"1"):localStorage.removeItem(Z)}catch{}}function q9(){return A6(RZ)}function e0(){return q9()&&A6(kZ)&&v9&&y9.state!=="error"}var GZ=(()=>{try{let Z=localStorage.getItem(jJ);return Z==="server"||Z==="none"?Z:null}catch{return null}})();function U9(){return GZ==="none"}function I9(){let Z=U9();return{surface:typeof window<"u"&&window.metahubDesktop?"desktop":"web",dataHome:Z?"local":"server",hold:Z||q9()?"replica":"window"}}async function N6(){if(GZ)return GZ;let Z=await fJ();if(Z==="unknown")return"server";GZ=Z;try{localStorage.setItem(jJ,GZ)}catch{}return GZ}function gJ(Z){if(Z.event==="status"){if(y9=Z.status,y9.lastSync?.ok&&!A6(kZ))u9(kZ,!0),navigator.storage?.persist?.().catch(()=>{});for(let J of w8)J(y9);return}if(Z.event==="synced"){if(document.dispatchEvent(new CustomEvent(p9,{detail:Z})),Z.datasets.some((J)=>J==="databases"||J==="documents"))document.dispatchEvent(new CustomEvent(L9))}}function SZ(){if(v9||typeof Worker>"u")return;v9=!0;let Z=N8();Z.onEvent(gJ),Z.start(),Z.call("status").then((J)=>gJ({event:"status",status:J})).catch(()=>{}),A2(),window.addEventListener("online",E9),document.addEventListener("visibilitychange",E9)}function b0(Z,...J){if(!v9)return Promise.reject(new _9("replica not running",void 0));return N8().call(Z,...J).catch((Q)=>{throw Q instanceof m9?new _9(Q.message,Q.code):Q})}function E9(){if(v9)b0("sync").catch(()=>{})}function hJ(){if(!v9)return Promise.reject(new _9("replica not running",void 0));return b0("sync")}function w6(Z=30000){if(y9.state==="ready")return Promise.resolve();return new Promise((J,Q)=>{let X=setTimeout(()=>{z(),Q(new _9("本地副本启动超时",void 0))},Z),z=F9((W)=>{if(W.state==="ready")clearTimeout(X),z(),J();else if(W.state==="error")clearTimeout(X),z(),Q(new _9(W.error??"本地副本启动失败",void 0))})})}async function DJ(){if(SZ(),await w6(),!y9.paired){let Z=await VZ("/api/pair/new",{method:"POST"});if(!Z.ok)throw new _9(`无法获取配对码: ${Z.status}`,void 0);let{code:J}=await Z.json();await b0("pair",J)}u9(RZ,!0),C8(),E9()}async function xJ(Z,J){SZ(),await w6();let Q=await b0("addStorageReplica",Z,J);return u9(RZ,!0),C8(),E9(),Q}async function mJ(){u9(RZ,!1),u9(kZ,!1);try{if(v9)await b0("unpair")}catch{}await C6()}async function uJ(){u9(RZ,!1),u9(kZ,!1);try{if(v9)await b0("unpair").catch(()=>{}),await b0("reset")}finally{N8().stopWorker(),C6(),v9=!1,y9={state:"booting",paired:!1,node:null};for(let Z of w8)Z(y9)}}function EJ(){if(q9())SZ(),w6().then(()=>E9()).catch(()=>{})}function A2(){let Z=globalThis;if(Z.__mhSwBridge||!("serviceWorker"in navigator))return;Z.__mhSwBridge=!0,navigator.serviceWorker.addEventListener("message",(J)=>{let Q=J.data,X=J.ports?.[0];if(!Q||Q.kind!=="mh-rpc"||!X||!Q.op)return;if(!e0()){X.postMessage({ok:!1,error:{message:"replica unavailable",code:"unavailable"}});return}b0(Q.op,...Q.args??[]).then((z)=>X.postMessage({ok:!0,result:z}),(z)=>X.postMessage({ok:!1,error:{message:z.message,code:z.code}}))})}var bJ=!1;async function C6(){try{if("serviceWorker"in navigator){let Z=await navigator.serviceWorker.getRegistrations();await Promise.all(Z.map((J)=>J.unregister().catch(()=>!1)))}}catch{}try{if("caches"in globalThis){for(let Z of await caches.keys())if(Z.startsWith("mh-shell-")||Z==="mh-api-v1"||Z==="mh-blob-v1")await caches.delete(Z)}}catch{}}function C8(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return;if(typeof window>"u"||!window.isSecureContext)return;if(I9().surface==="desktop"||I9().hold!=="replica"){C6();return}if(navigator.serviceWorker.register("/sw.js").catch((Q)=>{console.warn("[webui] service worker registration failed —",Q)}),bJ)return;bJ=!0;let Z=navigator.serviceWorker.controller!=null,J=!1;navigator.serviceWorker.addEventListener("controllerchange",()=>{if(!Z){Z=!0;return}if(J)return;J=!0,location.reload()})}var N2={invalid_input:400,not_found:404,ambiguous:400,stale:409,conflict:409,auth:401,network:502};function w2(Z){return/^(create|update|delete|move|duplicate|revert)(Database|Document)/.test(Z)}async function M0(Z,...J){try{let Q=await b0(Z,...J);if(w2(Z))document.dispatchEvent(new CustomEvent(L9));return Q}catch(Q){if(Q instanceof _9)throw new S9(Q.message,Q.code,Q.code?N2[Q.code]??400:0);throw Q}}var M6={listDatabases:()=>M0("listDatabases"),createDatabase:(Z)=>M0("createDatabase",Z),updateDatabase:(Z,J)=>M0("updateDatabase",Z,J),duplicateDatabase:(Z,J)=>M0("duplicateDatabase",Z,J),deleteDatabase:(Z)=>M0("deleteDatabase",Z),databaseActivity:(Z,J)=>M0("listDatabaseActivity",Z,J),listProperties:(Z)=>M0("listProperties",Z),createProperty:(Z)=>{let{db:J,...Q}=Z;return M0("addProperty",J,Q)},updateProperty:(Z,J)=>M0("updateProperty",Z,J),setColumnWidth:(Z,J)=>M0("setPropertyWidth",Z,J),deleteProperty:(Z)=>M0("removeProperty",Z),listRecords:(Z,J={})=>M0("listRecords",Z,J),createRecord:(Z,J)=>M0("createRecord",Z,J),getRecord:(Z)=>M0("getRecord",Z),updateRecord:(Z,J)=>M0("updateRecord",Z,J),moveRecord:(Z,J,Q)=>M0("moveRecord",Z,J,Q),deleteRecord:(Z)=>M0("deleteRecord",Z),recordHistory:(Z)=>M0("listRecordRevisions",Z),recordAt:(Z,J)=>M0("recordAtVersion",Z,J),revertRecord:(Z,J)=>M0("revertRecord",Z,J),listDocuments:(Z)=>M0("listDocuments",Z?{database_id:Z}:void 0),listDocumentsByParent:(Z)=>M0("listDocuments",{parent_id:Z}),createDocument:(Z)=>M0("createDocument",Z),getDocument:(Z)=>M0("getDocument",Z),updateDocument:(Z,J)=>{let{if_match:Q,...X}=J;return M0("updateDocument",Z,X,Q)},moveDocument:(Z,J,Q)=>M0("moveDocument",Z,J,Q),duplicateDocument:(Z,J)=>M0("duplicateDocument",Z,J),deleteDocument:(Z)=>M0("deleteDocument",Z),documentHistory:(Z)=>M0("listDocumentRevisions",Z),documentAt:(Z,J)=>M0("documentAtVersion",Z,J),revertDocument:(Z,J)=>M0("revertDocument",Z,J.to,J.if_match),nodes:()=>M0("nodes"),search:(Z,J)=>M0("search",Z,J)},y6={listSites:()=>M0("listSites"),listSiteFiles:(Z)=>M0("listSiteFiles",Z),createSite:(Z)=>M0("createSite",Z),updateSite:(Z,J)=>M0("updateSite",Z,J),deleteSite:(Z)=>M0("deleteSite",Z),deleteSiteFile:(Z,J)=>M0("deleteSiteFile",Z,J),uploadSiteFile:async(Z,J,Q)=>M0("putSiteFile",Z,J,await Q.arrayBuffer(),Q.type||void 0)};var pJ=209715200,C2=Math.floor(167772160);function M2(Z){if(Z instanceof ArrayBuffer)return Z;let J=new Uint8Array(Z.byteLength);return J.set(Z),J.buffer}async function y2(Z){let J=await crypto.subtle.digest("SHA-256",M2(Z));return[...new Uint8Array(J)].map((Q)=>Q.toString(16).padStart(2,"0")).join("")}async function cJ(Z){return(await y2(Z)).slice(0,32)}var _2={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",svg:"image/svg+xml",pdf:"application/pdf"};function dJ(Z){let J=Z.toLowerCase().split(";")[0].trim();for(let[Q,X]of Object.entries(_2))if(X===J&&Q!=="jpeg")return Q;return""}var M8=null;function v2(){if(M8)return M8;return M8=new Promise((Z,J)=>{let Q=indexedDB.open("mh-blobs",1);Q.onupgradeneeded=()=>{let X=Q.result;if(!X.objectStoreNames.contains("spool"))X.createObjectStore("spool",{keyPath:"hash"});if(!X.objectStoreNames.contains("meta"))X.createObjectStore("meta",{keyPath:"hash"})},Q.onsuccess=()=>Z(Q.result),Q.onerror=()=>J(Q.error)}),M8}function Z9(Z,J,Q){return v2().then((X)=>new Promise((z,W)=>{let G=Q(X.transaction(Z,J).objectStore(Z));G.onsuccess=()=>z(G.result),G.onerror=()=>W(G.error)}))}async function iJ(Z,J,Q){let X={hash:Z,bytes:J,content_type:Q,created:Date.now(),durable:0};await Z9("spool","readwrite",(z)=>z.put(X))}async function fZ(){return(await Z9("spool","readonly",(J)=>J.getAll())??[]).filter((J)=>!J.durable)}async function aJ(Z){await Z9("spool","readwrite",(J)=>J.delete(Z))}var gZ=(Z)=>`/blob/${Z}`;async function T2(Z,J,Q){let X=await Z9("meta","readonly",(W)=>W.get(Z)),z={hash:Z,size:J,accessed:Date.now(),pinned:X?.pinned??0,content_type:Q??X?.content_type};await Z9("meta","readwrite",(W)=>W.put(z))}async function nJ(Z,J){let Q=await Z9("meta","readonly",(X)=>X.get(Z));if(!Q)return!1;return Q.pinned=J?1:0,await Z9("meta","readwrite",(X)=>X.put(Q)),!0}async function lJ(Z,J,Q){await(await caches.open("mh-blob-v1")).put(gZ(Z),new Response(J,{headers:{"content-type":Q,"cache-control":"public, max-age=31536000, immutable"}})),await T2(Z,J.byteLength,Q),await k2()}async function k2(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=Z.reduce((z,W)=>z+W.size,0);if(J<=209715200)return;let Q=await caches.open("mh-blob-v1"),X=Z.filter((z)=>!z.pinned).sort((z,W)=>z.accessed-W.accessed);for(let z of X){if(J<=C2)break;await Q.delete(gZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),J-=z.size}}async function rJ(){let Z=await Z9("meta","readonly",(X)=>X.getAll())??[],J=0,Q=0;for(let X of Z)if(J+=X.size,X.pinned)Q+=X.size;return{count:Z.length,totalBytes:J,pinnedBytes:Q}}async function oJ(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=await caches.open("mh-blob-v1"),Q=0,X=0;for(let z of Z){if(z.pinned)continue;await J.delete(gZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),Q++,X+=z.size}return{cleared:Q,freedBytes:X}}async function tJ(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=await caches.open("mh-blob-v1"),Q=[],X=new Set;for(let z of Z){let W=z.content_type??null;if(!W)W=(await J.match(gZ(z.hash)))?.headers.get("content-type")??null;Q.push({hash:z.hash,size:z.size,content_type:W,accessed:z.accessed,pinned:!!z.pinned,pending:!1}),X.add(z.hash)}for(let z of await fZ()){if(X.has(z.hash))continue;Q.push({hash:z.hash,size:z.bytes.byteLength,content_type:z.content_type||null,accessed:z.created,pinned:!1,pending:!0})}return Q}async function _6(Z){let J=await caches.open("mh-blob-v1"),Q=0,X=0;for(let z of new Set(Z)){let W=await Z9("meta","readonly",(G)=>G.get(z));if(!W||W.pinned)continue;await J.delete(gZ(z)),await Z9("meta","readwrite",(G)=>G.delete(z)),Q++,X+=W.size}return{cleared:Q,freedBytes:X}}async function sJ(Z){let{cleared:J,freedBytes:Q}=await _6(Z);return{removed:J,freedBytes:Q}}class S9 extends Error{code;status;constructor(Z,J,Q){super(Z);this.code=J;this.status=Q;this.name="ApiError"}}var L9="mh-nav-invalidate";function R2(Z,J){return Z!=="GET"&&(J.startsWith("/api/database")||J.startsWith("/api/document"))}var T6="mh_token",Q5="/auth/token";function k6(){try{return localStorage.getItem(T6)}catch{return null}}function X5(Z){try{localStorage.setItem(T6,Z)}catch{}document.cookie=`${T6}=${encodeURIComponent(Z)}; path=/; SameSite=Strict; Max-Age=31536000`}function z5(){return k6()}async function VZ(Z,J={}){let Q=k6(),X=new Headers(J.headers);if(Q&&!X.has("authorization"))X.set("authorization",`Bearer ${Q}`);let z=await fetch(Z,{...J,headers:X});if(z.status!==401||!Q)return z;let W=await fetch(Q5,{headers:{authorization:`Bearer ${Q}`}}).catch(()=>null);if(!W?.ok)return z;let G=await W.json().catch(()=>null);if(!G?.token)return z;return X5(G.token),X.set("authorization",`Bearer ${G.token}`),fetch(Z,{...J,headers:X})}function eJ(Z,J,Q,X,z){return new Promise((W,G)=>{let q=new XMLHttpRequest;if(q.open("POST",Z),Q)q.setRequestHeader("authorization",`Bearer ${Q}`);if(q.setRequestHeader("content-type",X),z)q.upload.onprogress=(H)=>{if(H.lengthComputable)z(H.loaded,H.total)};q.onload=()=>{let H=null;try{H=JSON.parse(q.responseText)}catch{}W({status:q.status,data:H})},q.onerror=()=>G(Error("network error")),q.ontimeout=()=>G(Error("timeout")),q.send(J)})}async function I2(Z,J,Q,X){let z=k6(),W=await eJ(Z,J,z,Q,X);if(W.status===401&&z){let G=await fetch(Q5,{headers:{authorization:`Bearer ${z}`}}).catch(()=>null),q=G?.ok?await G.json().catch(()=>null):null;if(q?.token)X5(q.token),W=await eJ(Z,J,q.token,Q,X)}if(W.status>=200&&W.status<300&&W.data&&!W.data.error)return W.data;throw Error(W.data&&W.data.error||`${W.status}`)}async function Y0(Z,J,Q){let X=await VZ(J,{method:Z,headers:Q!==void 0?{"content-type":"application/json"}:void 0,body:Q!==void 0?JSON.stringify(Q):void 0}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw new S9(z&&z.error||`${X.status} ${X.statusText}`,z?.code,X.status);if(R2(Z,J))document.dispatchEvent(new CustomEvent(L9));return z}var w0=(Z)=>encodeURIComponent(Z),v6=!1;async function W5(){if(v6||U9())return;v6=!0;try{for(let Z of await fZ()){let J;try{J=await VZ("/api/blob",{method:"POST",headers:{"content-type":Z.content_type},body:Z.bytes})}catch{break}if(!J.ok)break;await lJ(Z.hash,Z.bytes,Z.content_type).catch(()=>{}),await aJ(Z.hash).catch(()=>{})}}finally{v6=!1}}if(typeof window<"u")window.addEventListener("online",()=>void W5());var G5={image:26214400,video:104857600,audio:104857600,file:104857600};function Z5(Z){let J=Z.split(/[?#]/,1)[0]??Z,Q=J.slice(J.lastIndexOf("/")+1),X=Q.lastIndexOf(".");return X>=0?Q.slice(X+1).toLowerCase():""}function J5(Z,J,Q,X){let z=Z5(J)||Z5(X)||dJ(Q);return`/blob/${Z}${z?"."+z:""}`}async function $5(Z,J){let Q=Z.type||"application/octet-stream",X=Z.name||"";try{let z=await I2("/api/blob",Z,Q,J);W5();let W=z;return{...W,url:J5(W.hash,W.url,Q,X)}}catch(z){if(!(e0()||U9()))throw z;let W=await Z.arrayBuffer(),G=await cJ(W);return await iJ(G,W,Q),J?.(W.byteLength,W.byteLength),{hash:G,size:W.byteLength,content_type:Q,url:J5(G,"",Q,X)}}}var S2={listDatabases:()=>Y0("GET","/api/databases"),createDatabase:(Z)=>Y0("POST","/api/databases",Z),updateDatabase:(Z,J)=>Y0("PATCH",`/api/database?id=${w0(Z)}`,J),duplicateDatabase:(Z,J)=>Y0("POST",`/api/database/duplicate?id=${w0(Z)}`,J??{}),deleteDatabase:(Z)=>Y0("DELETE",`/api/database?id=${w0(Z)}`),listProperties:(Z)=>Y0("GET",`/api/properties?db=${w0(Z)}`),createProperty:(Z)=>Y0("POST","/api/properties",Z),updateProperty:(Z,J)=>Y0("PATCH",`/api/property?id=${w0(Z)}`,J),setColumnWidth:(Z,J)=>Y0("PATCH",`/api/property/width?id=${w0(Z)}`,{width:J}),deleteProperty:(Z)=>Y0("DELETE",`/api/property?id=${w0(Z)}`),listRecords:(Z,J={})=>{let Q=new URLSearchParams({db:Z});if(J.sort)Q.set("sort",J.sort);if(J.limit!=null)Q.set("limit",String(J.limit));return Y0("GET",`/api/records?${Q}`)},createRecord:(Z,J)=>Y0("POST",`/api/records?db=${w0(Z)}`,J),getRecord:(Z)=>Y0("GET",`/api/record?id=${w0(Z)}`),updateRecord:(Z,J)=>Y0("PATCH",`/api/record?id=${w0(Z)}`,J),moveRecord:(Z,J,Q)=>Y0("PATCH",`/api/record/order?id=${w0(Z)}`,{target:J,where:Q}),deleteRecord:(Z)=>Y0("DELETE",`/api/record?id=${w0(Z)}`),listDocuments:(Z)=>Y0("GET",Z?`/api/documents?db=${w0(Z)}`:"/api/documents"),listDocumentsByParent:(Z)=>Y0("GET",`/api/documents?parent=${w0(Z)}`),createDocument:(Z)=>Y0("POST","/api/documents",Z),getDocument:(Z)=>Y0("GET",`/api/document?id=${w0(Z)}`),updateDocument:(Z,J)=>Y0("PATCH",`/api/document?id=${w0(Z)}`,J),moveDocument:(Z,J,Q)=>Y0("PATCH",`/api/document/move?id=${w0(Z)}`,{target:J,where:Q}),duplicateDocument:(Z,J)=>Y0("POST",`/api/document/duplicate?id=${w0(Z)}`,J??{}),deleteDocument:(Z)=>Y0("DELETE",`/api/document?id=${w0(Z)}`),documentHistory:(Z)=>Y0("GET",`/api/document/history?id=${w0(Z)}`),documentAt:(Z,J)=>Y0("GET",`/api/document/at?id=${w0(Z)}&version=${w0(J)}`),revertDocument:(Z,J)=>Y0("POST",`/api/document/revert?id=${w0(Z)}`,J),recordHistory:(Z)=>Y0("GET",`/api/record/history?id=${w0(Z)}`),databaseActivity:(Z,J)=>Y0("GET",`/api/database/activity?db=${w0(Z)}${J!=null?`&limit=${J}`:""}`),recordAt:(Z,J)=>Y0("GET",`/api/record/at?id=${w0(Z)}&version=${w0(J)}`),revertRecord:(Z,J)=>Y0("POST",`/api/record/revert?id=${w0(Z)}`,{to:J}),nodes:()=>Y0("GET","/api/nodes"),search:(Z,J)=>{let Q=new URLSearchParams({q:Z});if(J!=null)Q.set("limit",String(J));return Y0("GET",`/api/search?${Q}`)},listPeers:()=>Y0("GET","/api/peers"),newPairingCode:()=>Y0("POST","/api/pair/new"),addPeerByPairing:(Z)=>Y0("POST","/api/peers/pair",Z),updatePeer:(Z,J)=>Y0("PATCH",`/api/peer?url=${w0(Z)}`,J),removePeer:(Z)=>Y0("DELETE",`/api/peer?url=${w0(Z)}`),syncPeer:(Z)=>Y0("POST",`/api/peer/sync?url=${w0(Z)}`),listServerS3Peers:()=>Y0("GET","/api/peers/s3"),addServerS3Peer:(Z)=>Y0("POST","/api/peer/s3",Z),serverS3Config:(Z)=>Y0("GET",`/api/peer/s3/config?url=${w0(Z)}`),listGrants:()=>Y0("GET","/api/grants"),revokeGrant:(Z)=>Y0("DELETE",`/api/grant?token=${w0(Z)}`),listSites:()=>Y0("GET","/api/sites"),listSiteFiles:(Z)=>Y0("GET",`/api/site/files?site=${w0(Z)}`),createSite:(Z)=>Y0("POST","/api/sites",Z),updateSite:(Z,J)=>Y0("PATCH",`/api/site?id=${w0(Z)}`,J),deleteSite:(Z)=>Y0("DELETE",`/api/site?id=${w0(Z)}`),deleteSiteFile:(Z,J)=>Y0("DELETE",`/api/site/file?site=${w0(Z)}&path=${w0(J)}`),uploadSiteFile:async(Z,J,Q)=>{let X=await VZ(`/api/site/file?site=${w0(Z)}&path=${w0(J)}`,{method:"POST",headers:{"content-type":Q.type||"application/octet-stream"},body:Q}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw Error(z&&z.error||`${X.status} ${X.statusText}`);return z},uploadDocBlob:$5,uploadDocImage:$5,listShareServers:()=>Y0("GET","/api/share/servers"),listShareBuckets:()=>Y0("GET","/api/share/buckets"),listShares:(Z={})=>Y0("GET",`/api/shares${Z.target?`?target=${w0(Z.target)}`:""}`),createShare:(Z)=>Y0("POST","/api/share",Z),revokeShare:(Z)=>Y0("DELETE",`/api/share?slug=${w0(Z)}`),renewShare:(Z)=>Y0("POST",`/api/share/renew?slug=${w0(Z)}`),blobCache:()=>Y0("GET","/api/blob-cache"),verifyBlobCache:()=>Y0("POST","/api/blob-cache/verify"),clearBlobCache:()=>Y0("POST","/api/blob-cache/clear"),setBlobPolicy:(Z)=>Y0("POST","/api/blob-policy",Z),pinBlob:(Z,J)=>Y0("POST","/api/blob-cache/pin",{hash:Z,pinned:J}),blobs:()=>Y0("GET","/api/blobs"),clearBlobs:(Z)=>Y0("POST","/api/blobs/clear",{hashes:Z}),deleteBlobs:(Z)=>Y0("POST","/api/blobs/delete",{hashes:Z}),version:()=>Y0("GET","/api/version")},d=new Proxy(S2,{get(Z,J,Q){if(e0()){if(J in M6)return M6[J];if(U9()&&J in y6)return y6[J]}return Reflect.get(Z,J,Q)}}),qZ={text:{ic:"text",t:"文本"},number:{ic:"hash",t:"数字"},select:{ic:"select",t:"单选"},multi_select:{ic:"multi",t:"多选"},checkbox:{ic:"checkbox",t:"复选框"},date:{ic:"calendar",t:"日期"},url:{ic:"link",t:"链接"},relation:{ic:"relation",t:"关联"}};class HZ extends Error{code;constructor(Z,J){super(J);this.code=Z;this.name="MhError"}}function V2(Z){let J=new TextEncoder().encode(Z),Q="";for(let X=0;X<J.length;X++)Q+=String.fromCharCode(J[X]);return btoa(Q).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function f2(Z){let J=Z.replace(/-/g,"+").replace(/_/g,"/"),Q=atob(J),X=new Uint8Array(Q.length);for(let z=0;z<Q.length;z++)X[z]=Q.charCodeAt(z);return new TextDecoder().decode(X)}function R6(Z){let J={endpoint:Z.endpoint,region:Z.region,bucket:Z.bucket,prefix:Z.prefix,accessKeyId:Z.accessKeyId,secretAccessKey:Z.secretAccessKey,encrypt:Z.encrypt,virtualHostedStyle:Z.virtualHostedStyle};return V2(JSON.stringify(J))}function q5(Z){let J=(Z??"").trim();if(!J)throw new HZ("invalid_input","empty enroll code");let Q=/(?:[#&?]|^)enroll=([^&\s]+)/.exec(J),X=Q?Q[1]:J,z;try{z=JSON.parse(f2(X))}catch{throw new HZ("invalid_input","invalid enroll code (could not decode)")}if(!z||typeof z!=="object")throw new HZ("invalid_input","invalid enroll code (not an object)");let W=z,G=(q)=>{let H=W[q];if(typeof H!=="string"||H.trim()==="")throw new HZ("invalid_input",`enroll code missing '${q}'`);return H};return{endpoint:G("endpoint"),bucket:G("bucket"),accessKeyId:G("accessKeyId"),secretAccessKey:G("secretAccessKey"),region:typeof W.region==="string"?W.region:void 0,prefix:typeof W.prefix==="string"?W.prefix:void 0,encrypt:typeof W.encrypt==="boolean"?W.encrypt:void 0,virtualHostedStyle:typeof W.virtualHostedStyle==="boolean"?W.virtualHostedStyle:void 0}}var g2=0;function $(Z,J,Q,X,z,W){J||(J={});var G,q,H=J;if("ref"in H)for(q in H={},J)q=="ref"?G=J[q]:H[q]=J[q];var Y={type:Z,props:H,key:Q,ref:G,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--g2,__i:-1,__u:0,__source:z,__self:W};if(typeof Z=="function"&&(G=Z.defaultProps))for(q in G)H[q]===void 0&&(H[q]=G[q]);return S0.vnode&&S0.vnode(Y),Y}var I6="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z",S6="m3 7.5 9 5.5 9-5.5M12 22v-9";var b2={cube:'<path d="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z"/><path d="m3 7.5 9 5.5 9-5.5M12 22v-9"/>',chevron:'<path d="m9 6 6 6-6 6"/>',chevronDown:'<path d="m6 9 6 6 6-6"/>',arrowLeft:'<path d="M15 18l-6-6 6-6"/>',plus:'<path d="M12 5v14M5 12h14"/>',pin:'<path d="M9 4h6l-1 6 3 3v2H7v-2l3-3z"/><path d="M12 16v5"/>',search:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2"/>',dots:'<circle cx="5" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="19" cy="12" r="1.4" fill="currentColor" stroke="none"/>',grip:'<circle cx="9" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="18" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="18" r="1.3" fill="currentColor" stroke="none"/>',trash:'<path d="M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13M10 11v6M14 11v6"/>',filter:'<path d="M3 5h18l-7 8v6l-4-2v-4z"/>',sort:'<path d="M7 3v14M7 17l-3-3M7 17l3-3M17 21V7M17 7l-3 3M17 7l3 3"/>',group:'<rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/>',check:'<path d="M5 12.5 10 17l9-10"/>',x:'<path d="M6 6 18 18M18 6 6 18"/>',file:'<path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5"/>',database:'<ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.66 3.58 3 8 3s8-1.34 8-3V5"/><path d="M4 12c0 1.66 3.58 3 8 3s8-1.34 8-3"/>',table:'<rect x="3" y="4" width="18" height="16" rx="1.5"/><path d="M3 10h18M3 15h18M9 4v16M15 4v16"/>',alignLeft:'<path d="M4 6h16M4 12h10M4 18h13"/>',alignCenter:'<path d="M4 6h16M7 12h10M5 18h14"/>',alignRight:'<path d="M4 6h16M10 12h10M7 18h13"/>',share:'<path d="M4 12v7a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-7"/><path d="M12 3v13M8 7l4-4 4 4"/>',download:'<path d="M12 3v12M8 11l4 4 4-4"/><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',link:'<path d="M10 13a5 5 0 0 0 7 0l2-2a5 5 0 0 0-7-7l-1 1"/><path d="M14 11a5 5 0 0 0-7 0l-2 2a5 5 0 0 0 7 7l1-1"/>',calendar:'<rect x="3" y="4" width="18" height="17" rx="2"/><path d="M3 9h18M8 2v4M16 2v4"/>',timeline:'<rect x="3" y="5" width="9" height="3" rx="1.5"/><rect x="8" y="10.5" width="11" height="3" rx="1.5"/><rect x="5" y="16" width="7" height="3" rx="1.5"/>',hash:'<path d="M4 9h16M4 15h16M10 3 8 21M16 3l-2 18"/>',text:'<path d="M4 6h16M4 6v-.5M8 6v13M4 19h8"/><path d="M14 11h6M17 11v8M14 19h6"/>',list:'<path d="M9 6h11M9 12h11M9 18h11M4.5 6h.01M4.5 12h.01M4.5 18h.01"/>',numList:'<path d="M10 6h10M10 12h10M10 18h10M4 5h1v4M4 9h2M4 13.5c0-.8 2-.8 2 0 0 .8-2 1.2-2 2.5h2"/>',checkbox:'<rect x="4" y="4" width="16" height="16" rx="3"/><path d="m9 12 2 2 4-4"/>',select:'<circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="3" fill="currentColor" stroke="none"/>',multi:'<path d="M8 6h12M8 12h12M8 18h12M3 6h.01M3 12h.01M3 18h.01"/>',relation:'<path d="M7 7h4v4H7zM13 13h4v4h-4z"/><path d="M11 9h2a2 2 0 0 1 2 2v2"/>',quote:'<path d="M7 7c-2 1-3 3-3 6h3v4H4v-4M17 7c-2 1-3 3-3 6h3v4h-3v-4"/>',code:'<path d="m8 8-4 4 4 4M16 8l4 4-4 4M13 6l-2 12"/>',minus:'<path d="M5 12h14"/>',heading:'<path d="M6 4v16M18 4v16M6 12h12"/>',panelLeft:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M9 4v16"/>',cornerUpRight:'<path d="M5 19V11a4 4 0 0 1 4-4h10M15 3l4 4-4 4"/>',openPeek:'<rect x="3" y="5" width="18" height="14" rx="2.5"/><rect x="6" y="8" width="4" height="8" rx="1" fill="currentColor" stroke="none"/>',settings:'<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/>',eyeOff:'<path d="M4 4l16 16M9.5 9.5a3 3 0 0 0 4 4M6.5 6.7C4.5 8 3 10 2 12c2 4 6 7 10 7 1.6 0 3-.4 4.4-1.1M9.5 5.2A9.7 9.7 0 0 1 12 5c4 0 8 3 10 7-.6 1.3-1.5 2.5-2.5 3.5"/>',bold:'<path d="M6 4h7a4 4 0 0 1 0 8H6zM6 12h8a4 4 0 0 1 0 8H6z"/>',italic:'<path d="M19 4h-9M14 20H5M15 4 9 20"/>',underline:'<path d="M6 4v6a6 6 0 0 0 12 0V4M4 21h16"/>',strike:'<path d="M4 12h16M7 7a4 4 0 0 1 7-1M9 17a4 4 0 0 0 7-2"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/>',moon:'<path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/>',history:'<path d="M3 12a9 9 0 1 0 2.6-6.4L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l3.5 2"/>',monitor:'<rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8M12 17v4"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c2.4 2.5 3.7 5.7 3.7 9S14.4 18.5 12 21c-2.4-2.5-3.7-5.7-3.7-9S9.6 5.5 12 3z"/>',eye:'<path d="M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"/><circle cx="12" cy="12" r="3"/>',lock:'<rect x="4.5" y="11" width="15" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',upload:'<path d="M12 16V4M8 8l4-4 4 4M5 20h14"/>',spinner:'<path d="M21 12a9 9 0 1 1-6.219-8.56"/>',cloudUp:'<path d="M12 13v8"/><path d="m8 17 4-4 4 4"/><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"/>',cloudCheck:'<path d="M17 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 0 1 2.86 8"/><path d="m9 14 2 2 4-4"/>',cloudOff:'<path d="m2 2 20 20"/><path d="M5.78 5.78A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.3-.2"/><path d="M21.4 14.4A4.5 4.5 0 0 0 17.5 8h-1.8A7 7 0 0 0 9.4 4.6"/>',externalLink:'<path d="M14 4h6v6M20 4l-9 9M19 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h5"/>',image:'<rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.6"/><path d="m21 15-4.5-4.5L6 21"/>',video:'<rect x="2.5" y="6" width="13" height="12" rx="2"/><path d="m16 10 5.2-3a.5.5 0 0 1 .8.4v9.2a.5.5 0 0 1-.8.4L16 14z"/>',audio:'<path d="M9 18V5l11-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/>',htmlTag:'<path d="m9 8-4 4 4 4M15 8l4 4-4 4"/>',zoomIn:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2M11 8.5v5M8.5 11h5"/>',zoomOut:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2M8.5 11h5"/>',square:'<rect x="4" y="4" width="16" height="16" rx="1.5"/>',arrowUpRight:'<path d="M7 17 17 7M8 7h9v9"/>',type:'<path d="M4 7V5h16v2M9 19h6M12 5v14"/>',maximize:'<path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/>',pencil:'<path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"/>',undo:'<path d="M9 14 4 9l5-5"/><path d="M4 9h11a4 4 0 0 1 0 8h-2"/>'};function g({name:Z,cls:J="ico"}){return $("svg",{class:J,viewBox:"0 0 24 24",dangerouslySetInnerHTML:{__html:b2[Z]??""}},void 0,!1,void 0,this)}var X9={text:"text",number:"hash",select:"select",multi_select:"multi",checkbox:"checkbox",date:"calendar",url:"link",relation:"relation"};function c9(Z,J){let Q=J.threshold??4,X=Q===0,z=(G)=>{if(G.pointerId!==Z.pointerId)return;if(!X){if(Math.hypot(G.clientX-Z.clientX,G.clientY-Z.clientY)<Q)return;X=!0,J.onStart?.(G)}G.preventDefault(),J.onMove(G)},W=(G)=>{if(G.pointerId!==Z.pointerId)return;removeEventListener("pointermove",z),removeEventListener("pointerup",W),removeEventListener("pointercancel",W),J.onEnd?.(G,X)};addEventListener("pointermove",z,{passive:!1}),addEventListener("pointerup",W),addEventListener("pointercancel",W)}function O9(){document.querySelectorAll(".drop-into,.drop-before,.drop-after").forEach((Z)=>Z.classList.remove("drop-into","drop-before","drop-after"))}function y8(Z,J,Q){O9();let X=Z.getBoundingClientRect(),z=Q==="y"?J.clientY<X.top+X.height/2?"before":"after":J.clientX<X.left+X.width/2?"before":"after";return Z.classList.add("drop-"+z),z}function V6(Z,J,Q){let X=document.createElement("div");return X.className="drag-ghost "+Z,X.style.width=`${J.width}px`,X.style.height=`${J.height}px`,X.textContent=Q,document.body.appendChild(X),X}function bZ(Z,J,Q){if(!Z)return;Z.style.transform=`translate3d(${Math.round(J)}px, ${Math.round(Q)}px, 0)`}function H5(Z,J){let Q=J.source.getBoundingClientRect(),X=Z.clientX-Q.left,z=Z.clientY-Q.top,W=null,G=null,q="before";c9(Z,{onStart:()=>{W=V6(J.ghostCls,Q,J.ghostText),J.source.classList.add("drag-source"),document.body.classList.add("table-dragging"),J.onActivate?.()},onMove:(H)=>{bZ(W,H.clientX-X,H.clientY-z);let Y=document.elementFromPoint(H.clientX,H.clientY)?.closest?.(J.targetSelector);if(!Y||J.isSelf(Y)){O9(),G=null;return}G=Y,q=y8(Y,H,J.axis)},onEnd:(H,Y)=>{if(W?.remove(),J.source.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),O9(),Y&&G)J.onDrop(G,q);J.onFinish?.(Y)}})}function _8(Z,J){let Q=Z.currentTarget,X=J.startWidth,z=0;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let W=Q.closest("table");if(W)Q.style.setProperty("--rz-guide-h",W.offsetHeight+"px");c9(Z,{threshold:0,onMove:(G)=>{if(X=Math.max(J.min,J.startWidth+G.clientX-Z.clientX),!z)z=requestAnimationFrame(()=>{if(z=0,J.col)J.col.style.width=X+"px"})},onEnd:()=>{if(z)cancelAnimationFrame(z);if(J.col)J.col.style.width=X+"px";Q.classList.remove("dragging"),Q.style.removeProperty("--rz-guide-h"),document.body.classList.remove("col-resizing"),J.onDone(X)}})}var v8="(max-width: 768px) and (pointer: coarse)";function T8(Z){let J=Z,Q=new Set;return{get:()=>J,set:(X)=>{J=X,Q.forEach((z)=>z(X))},use(){let[X,z]=R(J);return o(()=>{return Q.add(z),()=>void Q.delete(z)},[]),X}}}var jZ=T8([]),j2=0;function s(Z){let J=++j2;jZ.set([...jZ.get(),{id:J,msg:Z}]),setTimeout(()=>jZ.set(jZ.get().filter((Q)=>Q.id!==J)),2600)}var d9=T8([]),h2=0;function f6(Z,J){d9.set(d9.get().map((Q)=>Q.id===Z?{...Q,...J}:Q))}function g6(Z){d9.set(d9.get().filter((J)=>J.id!==Z))}function K5(Z){let J=++h2;return d9.set([...d9.get(),{id:J,name:Z,loaded:0,total:0}]),J}function F5(Z,J,Q){f6(Z,{loaded:J,total:Q})}function b6(Z,J,Q){if(J)f6(Z,{loaded:1,total:1}),setTimeout(()=>g6(Z),900);else f6(Z,{failed:!0,retry:Q})}function D2(){let Z=d9.use();if(!Z.length)return null;return $("div",{class:"upload-tray",children:Z.map((J)=>{let Q=J.failed?null:J.total>0?Math.min(100,Math.round(J.loaded/J.total*100)):null;return $("div",{class:"upload-item"+(J.failed?" failed":""),children:[$("span",{class:"up-name",title:J.name,children:J.name},void 0,!1,void 0,this),J.failed?$("span",{class:"up-fail",children:[$("span",{children:"失败"},void 0,!1,void 0,this),J.retry&&$("button",{class:"up-retry",onClick:()=>{J.retry?.(),g6(J.id)},children:"重试"},void 0,!1,void 0,this),$("button",{class:"up-x",title:"移除",onClick:()=>g6(J.id),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("span",{class:"up-prog",children:[$("span",{class:"ver-bar"+(Q==null?" indet":""),children:$("span",{class:"ver-bar-fill",style:Q!=null?{width:`${Q}%`}:void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"up-pct",children:Q!=null?`${Q}%`:"…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},J.id,!0,void 0,this)})},void 0,!1,void 0,this)}var j6=T8(null);function _0(Z,J,Q={}){j6.set({render:J,anchor:Z,minWidth:Q.minWidth})}function Y5(){j6.set(null)}function x2(Z){if(Z instanceof MouseEvent)return{x:Z.clientX,y:Z.clientY};if("rect"in Z)return{x:Z.rect.left,y:Z.rect.bottom,bottom:Z.rect.bottom};return{x:Z.x,y:Z.y}}function m2(){let Z=j6.use(),J=W0(null),[Q,X]=R(null),z=matchMedia(v8).matches;if(IJ(()=>{if(!Z||!J.current||z)return X(null);let{x:W,y:G}=x2(Z.anchor),q=J.current.getBoundingClientRect();X({left:Math.min(W,innerWidth-q.width-10),top:Math.min(G+4,innerHeight-q.height-10)})},[Z,z]),!Z)return null;return $("div",{class:"menu-layer",onMouseDown:(W)=>W.target===W.currentTarget&&Y5(),children:$("div",{ref:J,class:"pop"+(z?" sheet":""),style:z?void 0:{left:Q?.left??-9999,top:Q?.top??-9999,minWidth:Z.minWidth},onMouseDown:(W)=>W.stopPropagation(),children:Z.render(Y5)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function h0({children:Z}){return $("div",{class:"lbl",children:Z},void 0,!1,void 0,this)}function f0(){return $("div",{class:"sep"},void 0,!1,void 0,this)}function z0({icon:Z,label:J,sublabel:Q,danger:X,checked:z,onClick:W}){return $("button",{class:"item"+(X?" danger":""),onClick:W,children:[Z&&$("span",{class:"lico plain",children:$(g,{name:Z,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:J},void 0,!1,void 0,this),Q&&$("span",{class:"d",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z&&$("span",{class:"chk",children:$(g,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function i9(Z,J=240){let[Q,X]=R(!1);return o(()=>{let W=requestAnimationFrame(()=>X(!0));return()=>cancelAnimationFrame(W)},[]),{open:Q,close:()=>{X(!1),setTimeout(Z,J)}}}var h6=T8(null);function z9(Z){h6.set(Z)}function p0(){h6.set(null)}function G9({title:Z,sub:J,children:Q,footer:X,width:z}){return $("div",{class:"modal",style:{width:z},onMouseDown:(W)=>W.stopPropagation(),children:[$("div",{class:"modal-head",children:[$("h3",{children:Z},void 0,!1,void 0,this),J&&$("p",{children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"modal-body",children:Q},void 0,!1,void 0,this),X&&$("div",{class:"modal-foot",children:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function u2(){let Z=h6.use();return o(()=>{if(!Z)return;let J=(Q)=>Q.key==="Escape"&&p0();return addEventListener("keydown",J),()=>removeEventListener("keydown",J)},[Z]),$("div",{class:"modal-scrim"+(Z?" open":""),onMouseDown:(J)=>J.target===J.currentTarget&&p0(),children:Z},void 0,!1,void 0,this)}function R0(Z){return new Promise((J)=>{let Q=(X)=>{p0(),J(X)};z9($(G9,{title:Z.title,footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Q(!1),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn "+(Z.danger?"btn-danger":"btn-primary"),onClick:()=>Q(!0),children:Z.confirmLabel??"确定"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:$("div",{class:"muted",children:Z.message},void 0,!1,void 0,this)},void 0,!1,void 0,this))})}function H9(Z){return new Promise((J)=>{let Q=Z.value??"",X=(z)=>{p0(),J(z)};z9($(G9,{title:Z.title,footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:()=>X(null),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:()=>X(Q.trim()||(Z.value??"")),children:Z.confirmLabel??"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[Z.label&&$("div",{class:"field-label",children:Z.label},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:Z.value??"",placeholder:Z.placeholder,onInput:(z)=>Q=z.target.value,onKeyDown:(z)=>{if(z.key==="Enter")X(Q.trim()||(Z.value??""))}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))})}function k8(){let Z=jZ.use();return $(r,{children:[$(m2,{},void 0,!1,void 0,this),$(u2,{},void 0,!1,void 0,this),$("div",{class:"toasts",children:Z.map((J)=>$("div",{class:"toast",children:[$(g,{name:"check",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:J.msg},void 0,!1,void 0,this)]},J.id,!0,void 0,this))},void 0,!1,void 0,this),$(D2,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var D6=null,E2=/mac/i.test(navigator.userAgentData?.platform??navigator.platform);function L5(Z){let{view:J,navigate:Q}=Z,[X,z]=R(new Set),[W,G]=R(""),[q,H]=R(!1),Y=W0(null),[F,K]=R(null),N=d2(Z.onResize);o(()=>{d.version().then((T)=>K(T.version)).catch(()=>K(null))},[]),o(()=>{if(q)Y.current?.focus()},[q]);let U=(T)=>{let L=new Set(X);L.has(T)?L.delete(T):L.add(T),z(L)},O=(T)=>T().catch((L)=>Z.onError(String(L.message))),C=(T)=>{if("id"in J&&J.id===T)Q({kind:"empty"},{replace:!0})},f=(T)=>O(async()=>{let L=await d.createDocument({title:"",...T?{parent_id:T}:{}});if(T)X.add(T);Q({kind:"doc",id:L.id})}),h=(T,L,P)=>O(async()=>{if(T===L.id)return;if(c2(Z.docs,T,L.id))return;if(await d.moveDocument(T,L.id,P),P==="into")X.add(L.id)}),_=(T,L)=>{T.stopPropagation(),_0(T,(P)=>$(r,{children:[$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{P();let w=await H9({title:"重命名数据库",value:L.name});if(w&&w!==L.name)O(async()=>{await d.updateDatabase(L.id,{name:w})})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(P(),await R0({title:"删除数据库?",message:`「${L.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))O(async()=>{await d.deleteDatabase(L.id),C(L.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},M=(T,L)=>{T.stopPropagation();let P=Z.docs.filter((w)=>w.parent_id===L.id).length;_0(T,(w)=>$(r,{children:[$(z0,{icon:"plus",label:"新建子页",onClick:()=>{w(),f(L.id)}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{w();let A=await H9({title:"重命名文档",value:L.title});if(A)O(async()=>{await d.updateDocument(L.id,{title:A})})}},void 0,!1,void 0,this),L.parent_id&&$(z0,{icon:"cornerUpRight",label:"移到顶层",onClick:()=>{w(),O(async()=>{await d.updateDocument(L.id,{parent_id:null})})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除",danger:!0,onClick:async()=>{if(w(),await R0({title:"删除文档?",message:P?`「${L.title||"无标题"}」及其 ${P} 个子页将被删除。`:`「${L.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))O(async()=>{await B5(Z.docs,L.id),C(L.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},k=(T,L=0)=>{return Z.docs.filter((w)=>w.parent_id===T).map((w)=>{let A=Z.docs.filter((S)=>S.parent_id===w.id),y=A.length>0&&X.has(w.id);return $("div",{class:L?"navchildren":"",children:[$("div",{class:"navitem"+(J.kind==="doc"&&J.id===w.id?" active":""),draggable:!0,onClick:()=>Q({kind:"doc",id:w.id}),onDragStart:(S)=>{S.stopPropagation(),D6=w.id,S.currentTarget.classList.add("dragging")},onDragEnd:(S)=>{S.currentTarget.classList.remove("dragging"),x6()},onDragOver:(S)=>{S.preventDefault(),S.stopPropagation(),p2(S.currentTarget,S)},onDrop:(S)=>{S.preventDefault(),S.stopPropagation();let p=P5(S.currentTarget,S),n=D6;if(D6=null,x6(),n)h(n,w,p)},children:[$("span",{class:"tw"+(y?" open":""),onClick:(S)=>{if(S.stopPropagation(),A.length)U(w.id)},children:A.length>0&&$(g,{name:"chevron",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"emoji",children:$(g,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"label",children:w.title||"无标题"},void 0,!1,void 0,this),$("span",{class:"acts",children:[$("button",{title:"新建子页",onClick:(S)=>{S.stopPropagation(),f(w.id)},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"更多",onClick:(S)=>M(S,w),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),y&&k(w.id,L+1)]},w.id,!0,void 0,this)})};return $("div",{class:"sidebar"+(Z.collapsed?" collapsed":""),style:{width:Z.width,marginLeft:Z.collapsed?-Z.width:void 0},children:[$("div",{class:"sb-head",children:[$("div",{class:"brand",children:[$("span",{class:"mark",children:$(g,{name:"cube"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Metahub"]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(q?" active":""),title:"搜索","aria-label":"搜索",onClick:()=>H((T)=>!T),children:$(g,{name:"search",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(g,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="shares"?" active":""),title:"分享","aria-label":"分享",onClick:()=>Q({kind:"shares"}),children:$(g,{name:"link",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(g,{name:"settings",cls:"ico"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"收起侧栏",onClick:Z.onCollapse,children:$(g,{name:"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-search"+(q?" open":""),onClick:(T)=>T.currentTarget.querySelector("input")?.focus(),children:[$(g,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{ref:Y,placeholder:"搜索…",value:W,onInput:(T)=>G(T.target.value),onKeyDown:(T)=>{if(T.key==="Enter"&&W.trim())Q({kind:"search",q:W.trim()},{replace:J.kind==="search"})}},void 0,!1,void 0,this),$("kbd",{children:E2?"⌘K":"Ctrl K"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-scroll",children:[$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"数据库"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建数据库",onClick:()=>i2((T)=>Q({kind:"db",id:T}),Z.onError),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.databases.map((T)=>$("div",{class:"navitem"+(J.kind==="db"&&J.id===T.id?" active":""),onClick:()=>Q({kind:"db",id:T.id}),children:[$("span",{class:"emoji",children:T.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{class:"label",children:T.name},void 0,!1,void 0,this),$("span",{class:"acts",children:$("button",{title:"更多",onClick:(L)=>_(L,T),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},T.id,!0,void 0,this)),Z.databases.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"文档"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建文档",onClick:()=>f(null),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k(null),Z.docs.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-footer",children:[$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(g,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="shares"?" active":""),title:"分享","aria-label":"分享",onClick:()=>Q({kind:"shares"}),children:$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("span",{class:"sbf-ver",title:`Metahub Core v${F}`,children:["v",F]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-resizer",onMouseDown:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var x6=O9;function P5(Z,J){let Q=Z.getBoundingClientRect(),X=J.clientY-Q.top;return X<Q.height*0.28?"before":X>Q.height*0.72?"after":"into"}function p2(Z,J){x6(),Z.classList.add("drop-"+P5(Z,J))}function c2(Z,J,Q){let X=Z.find((z)=>z.id===Q);while(X){if(X.parent_id===J)return!0;X=Z.find((z)=>z.id===X.parent_id)}return!1}async function B5(Z,J){for(let Q of Z.filter((X)=>X.parent_id===J))await B5(Z,Q.id);await d.deleteDocument(J)}function d2(Z){return(J)=>{J.preventDefault();let Q=J.currentTarget;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let X=(W)=>Z(Math.max(210,Math.min(460,W.clientX))),z=()=>{Q.classList.remove("dragging"),document.body.classList.remove("col-resizing"),removeEventListener("mousemove",X),removeEventListener("mouseup",z)};addEventListener("mousemove",X),addEventListener("mouseup",z)}}var U5={blank:[{name:"名称",type:"text"}],tasks:[{name:"名称",type:"text"},{name:"状态",type:"select",config:{options:["待办","进行中","已完成"]}},{name:"优先级",type:"select",config:{options:["高","中","低"]}},{name:"截止",type:"date"}],crm:[{name:"姓名",type:"text"},{name:"公司",type:"text"},{name:"分类",type:"select",config:{options:["客户","合作","潜在"]}},{name:"邮箱",type:"url"}]};function i2(Z,J){z9($(a2,{onOpenDb:Z,onError:J},void 0,!1,void 0,this))}function a2(Z){let J=["\uD83D\uDDC2️","\uD83C\uDFAF","\uD83E\uDD1D","\uD83D\uDCE6","\uD83D\uDCDA","\uD83D\uDCA1","\uD83E\uDDE9","\uD83D\uDCCA","\uD83D\uDDD3️","✅"],Q=[["blank","空白","仅一个「名称」列"],["tasks","任务","状态·优先级·截止"],["crm","联系人","公司·分类·邮箱"]],[X,z]=R(""),[W,G]=R(J[0]),[q,H]=R("blank"),Y=W0(!1),F=async()=>{if(Y.current)return;Y.current=!0;try{let K=await d.createDatabase({name:X.trim()||"未命名数据库",icon:W});for(let N of U5[q]??U5.blank)await d.createProperty({db:K.id,name:N.name,type:N.type,config:N.config});p0(),Z.onOpenDb(K.id),s(`已创建数据库「${K.name}」`)}catch(K){Z.onError(String(K.message))}finally{Y.current=!1}};return $(G9,{title:"新建数据库",sub:"创建一个带属性列的结构化数据表。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:F,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:"例如:项目、客户、库存…",value:X,onInput:(K)=>z(K.target.value),onKeyDown:(K)=>K.key==="Enter"&&F()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"图标"},void 0,!1,void 0,this),$("div",{class:"icon-pick",children:J.map((K)=>$("button",{class:K===W?"sel":"",onClick:()=>G(K),children:K},K,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"field-label",children:"模板"},void 0,!1,void 0,this),$("div",{class:"tmpl",children:Q.map(([K,N,U])=>$("button",{class:K===q?"sel":"",onClick:()=>H(K),children:[$("div",{class:"tt",children:N},void 0,!1,void 0,this),$("div",{class:"td",children:U},void 0,!1,void 0,this)]},K,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function m6(Z,J,Q){let X=[{id:"server",kind:"server",label:"当前服务器",subtitle:Q,icon:"globe",isDefault:!0,routeOp:{via:"http"},deleteSemantics:"purge"}];for(let z of Z)X.push({id:`server:${z.url}`,kind:"server",label:z.label,subtitle:z.url,icon:"globe",isDefault:!1,routeOp:{via:"http"},deleteSemantics:"purge"});for(let z of J)X.push({id:`bucket:${z.url}`,kind:"bucket",label:"对象存储",subtitle:z.label,icon:"database",isDefault:!1,routeOp:{via:"bucket",url:z.url},deleteSemantics:"evict"});return X}function u6(Z,J){if(Z.routeOp.via==="bucket")return Z.routeOp.url;if(Z.id.startsWith("server:"))return Z.id.slice(7);return J}var YZ="mh-shares-changed";function R8(){document.dispatchEvent(new Event(YZ))}function KZ(){let[Z,J]=R(()=>new Set);return o(()=>{let Q=!0,X=()=>d.listShares().then((z)=>Q&&J(new Set(z.map((W)=>W.target_id)))).catch(()=>{return});return X(),document.addEventListener(YZ,X),()=>{Q=!1,document.removeEventListener(YZ,X)}},[]),Z}function E6(Z,J,Q){return{copyShare:async(G)=>{if(G.url){I8(G.url),J("链接已复制");return}try{let q=await d.renewShare(G.slug);I8(q.url),J("已重新生成并复制链接"),R8(),Z()}catch(q){Q(q.message)}},revoke:async(G)=>{if(!confirm(`撤销这个分享?(${G.source})`))return;try{await d.revokeShare(G.slug),J("已撤销"),R8(),Z()}catch(q){Q(q.message)}},renew:async(G)=>{try{let q=await d.renewShare(G.slug);I8(q.url),J("已续期 7 天,新链接已复制"),R8(),Z()}catch(q){Q(q.message)}}}}function A9(Z){o2();let J=document.createElement("div");document.body.appendChild(J),D9($(l2,{target:Z,onClose:()=>{D9(null,J),J.remove()}},void 0,!1,void 0,this),J)}var O5=[{label:"永不过期",ms:null},{label:"1 小时",ms:3600000},{label:"24 小时",ms:86400000},{label:"7 天",ms:604800000},{label:"30 天",ms:2592000000}];function n2(){let[Z,J]=R(()=>m6([],[],location.origin));return o(()=>{let Q=!0,X=()=>Promise.all([d.listShareServers().catch(()=>[]),d.listShareBuckets().catch(()=>[])]).then(([W,G])=>{if(Q)J(m6(W,G,location.origin))});X();let z=F9(()=>X());return()=>{Q=!1,z()}},[]),Z}function I8(Z){navigator.clipboard?.writeText(Z).catch(()=>{return})}function l2({target:Z,onClose:J}){let Q=n2(),[X,z]=R("server"),[W,G]=R("view"),[q,H]=R(""),[Y,F]=R(0),[K,N]=R(!1),[U,O]=R(""),[C,f]=R([]),[h,_]=R("");o(()=>{M()},[]);function M(){d.listShares({target:Z.ref}).then(f).catch(()=>{return})}let k=Q.find((y)=>y.id===X)??Q[0],T=k.kind==="bucket",L=Z.kind==="site";o(()=>{if(T&&W==="edit")G("view")},[T]);let P=T?O5.filter((y)=>y.ms==null||y.ms<=604800000):O5,w=Math.min(Y,P.length-1);async function A(){if(T&&L){O("站点不支持对象存储分享,请选服务器。");return}N(!0),O("");try{let y={kind:Z.kind,ref:Z.ref,transport:T?"s3":"server",permission:W,password:q||null,expiresMs:P[w]?.ms??null,server:T?null:u6(k,location.origin),bucketUrl:T?u6(k,location.origin):null},S=await d.createShare(y);I8(S.url),_(`已通过「${S.source}」创建,链接已复制`),H(""),R8(),M()}catch(y){O(y.message||"创建失败")}finally{N(!1)}}return $("div",{class:"mhshare-overlay",onClick:(y)=>y.target===y.currentTarget&&J(),children:$("div",{class:"mhshare-modal",children:[$("div",{class:"mhshare-head",children:[$("h2",{children:["分享",Z.title?`:${Z.title}`:""]},void 0,!0,void 0,this),$("button",{class:"mhshare-x",onClick:J,"aria-label":"关闭",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-body",children:[$("div",{class:"mhshare-section",children:"新建分享"},void 0,!1,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"通过"},void 0,!1,void 0,this),$("select",{value:k.id,onChange:(y)=>z(y.currentTarget.value),children:Q.map((y)=>$("option",{value:y.id,disabled:y.kind==="bucket"&&L,children:[y.label," — ",y.subtitle,y.kind==="bucket"&&L?"(站点不支持)":""]},void 0,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"权限"},void 0,!1,void 0,this),$("select",{value:W,disabled:T,onChange:(y)=>G(y.currentTarget.value),children:[$("option",{value:"view",children:"只读"},void 0,!1,void 0,this),$("option",{value:"edit",children:["可编辑",T?"(仅服务器)":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"口令"},void 0,!1,void 0,this),$("input",{type:"password",placeholder:"可选",value:q,onInput:(y)=>H(y.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"有效期"},void 0,!1,void 0,this),$("select",{value:String(w),onChange:(y)=>F(Number(y.currentTarget.value)),children:P.map((y,S)=>$("option",{value:String(S),children:y.label},void 0,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U&&$("p",{class:"mhshare-err",children:U},void 0,!1,void 0,this),h&&$("p",{class:"mhshare-ok",children:h},void 0,!1,void 0,this),$("div",{class:"mhshare-foot",children:[$("button",{onClick:J,children:"关闭"},void 0,!1,void 0,this),$("button",{class:"mhshare-primary",disabled:K,onClick:A,children:K?"创建中…":"创建并复制链接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-section",children:["已有分享(",C.length,")"]},void 0,!0,void 0,this),$(r2,{shares:C,reload:M,onFlash:_,onError:O,empty:"还没有分享这个对象。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function r2({shares:Z,reload:J,onFlash:Q,onError:X,empty:z}){let{copyShare:W,revoke:G,renew:q}=E6(J,Q,X);if(Z.length===0)return $("p",{class:"mhshare-note",children:z},void 0,!1,void 0,this);return $("ul",{class:"mhshare-list",children:Z.map((H)=>$("li",{children:[$("div",{class:"mhshare-li-main",children:[$("span",{class:"mhshare-badge",children:H.transport==="s3"?"对象存储":"服务器"},void 0,!1,void 0,this),$("span",{class:"mhshare-src",children:H.source},void 0,!1,void 0,this),$("span",{class:"mhshare-meta",children:[H.permission==="edit"?"可编辑":"只读",H.hasPassword?" · \uD83D\uDD12":"",H.expiresAt?` · 至 ${new Date(H.expiresAt).toLocaleString()}`:" · 永久"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-li-actions",children:[$("button",{onClick:()=>W(H),children:"复制"},void 0,!1,void 0,this),H.transport==="s3"&&$("button",{onClick:()=>q(H),children:"续期"},void 0,!1,void 0,this),H.url&&$("a",{href:H.url,target:"_blank",rel:"noreferrer",children:"打开"},void 0,!1,void 0,this),$("button",{class:"mhshare-danger",onClick:()=>G(H),children:"撤销"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},H.slug,!0,void 0,this))},void 0,!1,void 0,this)}var A5=!1;function o2(){if(A5)return;A5=!0;let Z=`
|
|
8
|
+
.mhshare-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:9999}
|
|
9
|
+
.mhshare-modal{background:var(--mh-bg,#fff);color:var(--mh-fg,#1f2328);width:min(480px,94vw);max-height:88vh;overflow:auto;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.3);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC",sans-serif}
|
|
10
|
+
.mhshare-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--mh-line,#e5e7eb);position:sticky;top:0;background:inherit}
|
|
11
|
+
.mhshare-head h2{font-size:16px;margin:0}
|
|
12
|
+
.mhshare-x{background:none;border:0;font-size:16px;cursor:pointer;color:var(--mh-muted,#6e7781)}
|
|
13
|
+
.mhshare-body{padding:14px 18px;display:flex;flex-direction:column;gap:10px}
|
|
14
|
+
.mhshare-section{font-size:12px;font-weight:600;color:var(--mh-muted,#6e7781);text-transform:uppercase;letter-spacing:.04em;margin-top:6px}
|
|
15
|
+
.mhshare-field{display:flex;align-items:center;gap:12px}
|
|
16
|
+
.mhshare-field>span{width:48px;color:var(--mh-muted,#6e7781);flex:none}
|
|
17
|
+
.mhshare-field select,.mhshare-field input{flex:1;padding:8px;border:1px solid var(--mh-line,#d0d7de);border-radius:7px;background:var(--mh-card,#f6f8fa);color:inherit}
|
|
18
|
+
.mhshare-foot{display:flex;justify-content:flex-end;gap:8px;margin:4px 0 2px}
|
|
19
|
+
.mhshare-foot button{padding:8px 14px;border:1px solid var(--mh-line,#d0d7de);border-radius:7px;background:var(--mh-card,#f6f8fa);color:inherit;cursor:pointer}
|
|
20
|
+
.mhshare-primary{background:#0969da!important;color:#fff!important;border-color:#0969da!important}
|
|
21
|
+
.mhshare-primary:disabled{opacity:.6;cursor:default}
|
|
22
|
+
.mhshare-note{color:var(--mh-muted,#6e7781);font-size:13px;margin:2px 0}
|
|
23
|
+
.mhshare-err{color:#cf222e;font-size:13px;margin:0}
|
|
24
|
+
.mhshare-ok{color:#1a7f37;font-size:13px;margin:0}
|
|
25
|
+
.mhshare-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
|
|
26
|
+
.mhshare-list li{border:1px solid var(--mh-line,#e5e7eb);border-radius:9px;padding:9px 11px;display:flex;flex-direction:column;gap:6px}
|
|
27
|
+
.mhshare-li-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
|
|
28
|
+
.mhshare-badge{font-size:11px;background:var(--mh-card,#f6f8fa);border:1px solid var(--mh-line,#e5e7eb);border-radius:999px;padding:1px 8px}
|
|
29
|
+
.mhshare-src{font-weight:600}
|
|
30
|
+
.mhshare-meta{color:var(--mh-muted,#6e7781);font-size:12px}
|
|
31
|
+
.mhshare-li-actions{display:flex;gap:6px;align-items:center}
|
|
32
|
+
.mhshare-li-actions button,.mhshare-li-actions a{font-size:13px;padding:4px 10px;border:1px solid var(--mh-line,#d0d7de);border-radius:6px;background:var(--mh-card,#f6f8fa);color:inherit;cursor:pointer;text-decoration:none}
|
|
33
|
+
.mhshare-danger{color:#cf222e!important}
|
|
34
|
+
@media (prefers-color-scheme: dark){.mhshare-modal{--mh-bg:#161b22;--mh-fg:#e6edf3;--mh-line:#30363d;--mh-muted:#8b949e;--mh-card:#0d1117}}
|
|
35
|
+
`,J=document.createElement("style");J.textContent=Z,document.head.appendChild(J)}var N5=[4,28,45,130,165,200,220,255,290,330];function p6(Z){let J=0;for(let Q=0;Q<Z.length;Q++)J=J*31+Z.charCodeAt(Q)>>>0;return`hsl(${N5[J%N5.length]} 65% 45%)`}function a9({text:Z}){return $("span",{class:"chip",style:{["--c"]:p6(Z)},children:Z},void 0,!1,void 0,this)}function FZ({prop:Z,val:J}){if(J==null||J===""||Array.isArray(J)&&J.length===0)return $("span",{class:"muted",children:" "},void 0,!1,void 0,this);if(Z.type==="select")return $(a9,{text:String(J)},void 0,!1,void 0,this);if(Z.type==="multi_select"||Z.type==="relation")return $(r,{children:J.map((Q)=>$(a9,{text:String(Q)},String(Q),!1,void 0,this))},void 0,!1,void 0,this);if(Z.type==="url")return $("a",{href:String(J),target:"_blank",rel:"noreferrer",onClick:(Q)=>Q.stopPropagation(),children:String(J)},void 0,!1,void 0,this);return $("span",{children:String(J)},void 0,!1,void 0,this)}function w5(Z,J){if(Z==="relation")return J.split(",").map((Q)=>Q.trim()).filter(Boolean);return J}function C5(Z,J){if(J==null)return"";if(Array.isArray(J))return J.join(", ");return String(J)}var t2={user:"",repair:"修复",revert:"回滚"};function d6(Z){let J=Date.now()-new Date(Z).getTime();if(J<60000)return"刚刚";if(J<3600000)return`${Math.floor(J/60000)} 分钟前`;if(J<86400000)return`${Math.floor(J/3600000)} 小时前`;if(J<2592000000)return`${Math.floor(J/86400000)} 天前`;return new Date(Z).toLocaleDateString()}function i6(){let[Z,J]=R([]);return o(()=>{d.nodes().then(J).catch(()=>{})},[]),(Q)=>{let X=Z.find((z)=>z.node_id===Q);if(X?.self)return"本设备";return X?.label||Q.slice(0,8)}}function a6({kind:Z}){if(Z==="user")return null;return $("span",{class:"hist-kind "+Z,children:t2[Z]},void 0,!1,void 0,this)}function s2(Z,J){let Q=Array.from({length:Z.length+1},()=>Array(J.length+1).fill(0));for(let G=Z.length-1;G>=0;G--)for(let q=J.length-1;q>=0;q--)Q[G][q]=Z[G]===J[q]?Q[G+1][q+1]+1:Math.max(Q[G+1][q],Q[G][q+1]);let X=[],z=0,W=0;while(z<Z.length&&W<J.length)if(Z[z]===J[W])X.push([z,W]),z++,W++;else if(Q[z+1][W]>=Q[z][W+1])z++;else W++;return X}var e2=(Z)=>Z?Z.split(/\n{2,}/):[],M5=(Z)=>Z?Z.split(`
|
|
36
|
+
`).filter((J)=>J.trim()!==""):[];function ZQ(Z,J){for(let Q=0;Q<Math.min(Z.length,J.length);Q++){let X=Z[Q].text,z=J[Q].text,W=0;while(W<X.length&&W<z.length&&X[W]===z[W])W++;let G=0;while(G<X.length-W&&G<z.length-W&&X[X.length-1-G]===z[z.length-1-G])G++;if(W+G<Math.max(X.length,z.length)*0.3)continue;Z[Q].seg=[X.slice(0,W),X.slice(W,X.length-G),X.slice(X.length-G)],J[Q].seg=[z.slice(0,W),z.slice(W,z.length-G),z.slice(z.length-G)]}}function JQ(Z,J){let Q=M5(Z),X=M5(J),z=s2(Q,X),W=[],G=0,q=0;for(let[H,Y]of[...z,[Q.length,X.length]]){let F=[],K=[];for(;G<H;G++)F.push({kind:"del",text:Q[G]});for(;q<Y;q++)K.push({kind:"add",text:X[q]});if(ZQ(F,K),W.push(...F,...K),H<Q.length)W.push({kind:"same",text:Q[H]});G=H+1,q=Y+1}return W}function $Q(Z){let J=[];if(Z.created)J.push("创建");if(Z.deleted)J.push("删除");if(Z.title_changed)J.push("标题");if(Z.blocks_changed)J.push(`${Z.blocks_changed} 块修改`);if(Z.blocks_deleted)J.push(`${Z.blocks_deleted} 块删除`);return J.join("、")||"元数据"}function y5({docId:Z,onClose:J,onReverted:Q}){let{open:X,close:z}=i9(J),[W,G]=R(null),[q,H]=R(null),[Y,F]=R(null),[K,N]=R(null),[U,O]=R(!1),[C,f]=R(!1),[h,_]=R(!1),M=i6(),k=()=>Promise.all([d.documentHistory(Z),d.getDocument(Z)]).then(([w,A])=>{G(w),H(A),F((y)=>y??w[0]?.version??null)}).catch((w)=>s(String(w.message)));o(()=>{k()},[Z]),o(()=>{if(!Y)return N(null);d.documentAt(Z,Y).then(N).catch(()=>N(null))},[Z,Y]);let T=M9(()=>(W??[]).filter((w)=>U||w.kind!=="repair"),[W,U]),L=Y!=null&&W?.[0]?.version===Y,P=async()=>{if(!Y||!K)return;if(!await R0({title:"恢复到此版本?",message:`标题和正文将恢复到 ${new Date(K.version?QQ(K.version):Date.now()).toLocaleString()} 的状态。此操作会作为一次新修订记录,任何版本都仍可从历史找回。`,confirmLabel:"恢复"}))return;_(!0);try{await d.revertDocument(Z,{to:Y,if_match:q?.version}),s("已恢复"),Q(),z()}catch(A){if(A instanceof S9&&A.code==="stale")s("文档刚被其他端修改,已刷新,请重试"),await k();else s(String(A.message))}finally{_(!1)}};return $(r,{children:[$("div",{class:"scrim"+(X?" open":""),onClick:z},void 0,!1,void 0,this),$("div",{class:"peek hist-peek"+(X?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:z,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"版本历史"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:C,onInput:()=>f(!C)},void 0,!1,void 0,this),"对比当前"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:U,onInput:()=>O(!U)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-split",children:[$("div",{class:"hist-list",children:[W===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),T.map((w)=>$("div",{class:"hist-item"+(Y===w.version?" sel":""),onClick:()=>F(w.version),children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(w.at).toLocaleString(),children:d6(w.at)},void 0,!1,void 0,this),$(a6,{kind:w.kind},void 0,!1,void 0,this),W?.[0]?.version===w.version&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:[$("span",{class:"who",children:M(w.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:$Q(w)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},w.version,!0,void 0,this))]},void 0,!0,void 0,this),$("div",{class:"hist-preview",children:[K&&$(r,{children:[$("div",{class:"hist-doc-title",children:K.title||"无标题"},void 0,!1,void 0,this),C&&!L?JQ(q?.body??"",K.body).map((w,A)=>$("div",{class:"hist-line "+w.kind,children:w.seg?$(r,{children:[w.seg[0],$("span",{class:"seg",children:w.seg[1]},void 0,!1,void 0,this),w.seg[2]]},void 0,!0,void 0,this):w.text},A,!1,void 0,this)):e2(K.body).map((w,A)=>$("div",{class:"hist-block",children:w},A,!1,void 0,this)),!K.body&&$("div",{class:"muted",children:"(空文档)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!K&&Y&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-foot",children:$("button",{class:"btn btn-primary",disabled:!Y||L||h,onClick:P,children:"恢复到此版本"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function QQ(Z){return Number(Z.slice(0,15))||Date.now()}function XQ(Z){if(Z.deleted)return"已删除";if(Z.created)return"创建";if(Z.moved&&!Z.diffs.length)return"调整排序";return""}var c6=3;function _5({dbId:Z,onClose:J}){let{open:Q,close:X}=i9(J),[z,W]=R(null),[G,q]=R(new Map),[H,Y]=R(!1),[F,K]=R(new Set),N=i6();o(()=>{Promise.all([d.databaseActivity(Z),d.listProperties(Z)]).then(([O,C])=>{W(O),q(new Map(C.map((f)=>[f.id,f.name])))}).catch((O)=>s(String(O.message)))},[Z]);let U=(z??[]).filter((O)=>H||O.kind!=="repair");return $(r,{children:[$("div",{class:"scrim"+(Q?" open":""),onClick:X},void 0,!1,void 0,this),$("div",{class:"peek"+(Q?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:X,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"最近动态"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:H,onInput:()=>Y(!H)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body hist-feed",children:[z===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),z!==null&&U.length===0&&$("div",{class:"muted pad",children:"暂无动态。"},void 0,!1,void 0,this),U.map((O)=>{let C=O.record_id+O.version,f=F.has(C),h=f?O.diffs:O.diffs.slice(0,c6),_=XQ(O);return $("div",{class:"hist-item static",children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(O.at).toLocaleString(),children:d6(O.at)},void 0,!1,void 0,this),$(a6,{kind:O.kind},void 0,!1,void 0,this),$("span",{class:"hist-recname",children:O.record_title||O.record_id},void 0,!1,void 0,this),_&&$("span",{class:"hist-status",children:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:$("span",{class:"who",children:N(O.node_id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),h.length>0&&$("div",{class:"hist-fields",children:[h.map((M)=>$("div",{class:"hist-field",children:[$("span",{class:"fname",children:G.get(M.prop)??"(已删字段)"},void 0,!1,void 0,this),!O.created&&$("span",{class:"old",title:UZ(M.before),children:UZ(M.before)},void 0,!1,void 0,this),!O.created&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",title:UZ(M.after),children:UZ(M.after)},void 0,!1,void 0,this)]},M.prop,!0,void 0,this)),O.diffs.length>c6&&!f&&$("button",{class:"hist-more",onClick:()=>K(new Set(F).add(C)),children:["…还有 ",O.diffs.length-c6," 项"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},C,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function zQ(Z,J){let Q=[];if(Z.created)Q.push("创建");if(Z.deleted)Q.push("删除");if(Z.fields.length)Q.push(Z.fields.map((X)=>J.get(X)??"(已删字段)").join("、"));if(Z.moved&&!Q.length)Q.push("排序");return Q.join(";")||"元数据"}function UZ(Z){if(Z===void 0)return"(空)";if(Z===null)return"(空)";if(typeof Z==="string")return Z===""?"(空)":Z;return JSON.stringify(Z)}function v5({rec:Z,props:J,onReverted:Q}){let[X,z]=R(null),[W,G]=R(null),[q,H]=R(!1),Y=W0(new Map),[,F]=R(0),K=i6(),N=M9(()=>new Map(J.map((_)=>[_.id,_.name])),[J]),U=()=>d.recordHistory(Z.id).then(z).catch((_)=>s(String(_.message)));o(()=>{U()},[Z.id]);let O=async(_)=>{let M=Y.current.get(_);if(M)return M;let k=await d.recordAt(Z.id,_);return Y.current.set(_,k),F((T)=>T+1),k},C=(_,M)=>{if(W===_.version)return G(null);if(G(_.version),O(_.version),M)O(M.version)},f=async(_)=>{if(!await R0({title:"恢复到此版本?",message:"记录字段将恢复到该修订时的值。此操作会作为一次新修订记录。",confirmLabel:"恢复"}))return;try{await d.revertRecord(Z.id,_.version),s("已恢复"),Y.current.clear(),Q(),await U()}catch(k){s(String(k.message))}},h=(X??[]).filter((_)=>q||_.kind!=="repair");return $("div",{class:"hist-rec",children:[$("div",{class:"hist-rec-head",children:[$("span",{class:"hist-title",children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"修改历史"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:q,onInput:()=>H(!q)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),X!==null&&h.length===0&&$("div",{class:"muted pad",children:"暂无历史。"},void 0,!1,void 0,this),h.map((_,M)=>{let k=h[M+1],T=Y.current.get(_.version),L=k?Y.current.get(k.version):void 0,P=_.created&&T?Object.keys(T.data):_.fields;return $("div",{class:"hist-item static",children:[$("div",{class:"row1",onClick:()=>C(_,k),children:[$("span",{class:"when",title:new Date(_.at).toLocaleString(),children:d6(_.at)},void 0,!1,void 0,this),$(a6,{kind:_.kind},void 0,!1,void 0,this),M===0&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$(g,{name:W===_.version?"chevronDown":"chevron",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",onClick:()=>C(_,k),children:[$("span",{class:"who",children:K(_.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:zQ(_,N)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W===_.version&&$("div",{class:"hist-fields",children:[!T&&$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this),T&&P.map((w)=>{let A=L?L.data[w]:void 0,y=T.data[w];return $("div",{class:"hist-field",children:[$("span",{class:"fname",children:N.get(w)??"(已删字段)"},void 0,!1,void 0,this),k&&$("span",{class:"old",children:UZ(A)},void 0,!1,void 0,this),k&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",children:UZ(y)},void 0,!1,void 0,this)]},w,!0,void 0,this)}),T&&M!==0&&$("button",{class:"btn btn-secondary hist-restore",onClick:()=>f(_),children:"恢复到此版本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},_.version,!0,void 0,this)})]},void 0,!0,void 0,this)}var n9="\x00__ungrouped__";function T5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z,onMove:W}){let G=Z.filter((_)=>_.type==="select"||_.type==="multi_select"),[q,H]=R(null),Y=Z.find((_)=>_.id===q)??G.find((_)=>_.type==="select")??G[0]??null;if(!Y)return $("div",{class:"view-placeholder",children:"看板视图需要一个「单选」或「多选」属性来分组。请在表格视图中添加一个单选列后再切换到看板。"},void 0,!1,void 0,this);let F=Z[0],K=Y.type==="multi_select",N=Y.config?.options??[],U=(_)=>{let M=_.cells[Y.id];if(K){let T=(Array.isArray(M)?M:[]).map(String).filter((L)=>N.includes(L));return T.length?T:[n9]}let k=M==null?"":String(M);return k&&N.includes(k)?[k]:[n9]},O=new Map;for(let _ of N)O.set(_,[]);O.set(n9,[]);for(let _ of J)for(let M of U(_))O.get(M)?.push(_);let C=[...N];if((O.get(n9)?.length??0)>0)C.push(n9);let f=(_,M)=>{if(_.button!==0)return;if(_.target.closest("button,a,input"))return;let k=_.currentTarget.closest(".kcard");if(!k)return;let T=k.getBoundingClientRect();_.preventDefault();let L=_.clientX-T.left,P=_.clientY-T.top,w=null;c9(_,{onStart:()=>{w=k.cloneNode(!0),w.classList.add("dragging-ghost"),w.style.width=`${T.width}px`,document.body.appendChild(w),k.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(A)=>{bZ(w,A.clientX-L,A.clientY-P),O9(),document.elementFromPoint(A.clientX,A.clientY)?.closest?.(".board-col")?.classList.add("drop-into")},onEnd:(A,y)=>{if(w?.remove(),k.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),O9(),!y){z(M.id);return}let S=document.elementFromPoint(A.clientX,A.clientY)?.closest?.(".board-col");if(!S)return;if(!K){let $0=S.dataset.colKey,Q0=String(M.cells[Y.id]??""),x=$0===n9?null:$0;if(String(x??"")!==Q0)Q(M,Y,x)}let p=document.elementFromPoint(A.clientX,A.clientY)?.closest?.(".kcard"),n=p?.dataset.recId;if(n&&n!==M.id){let $0=p.getBoundingClientRect();W(M.id,n,A.clientY<$0.top+$0.height/2?"before":"after")}}})};return $("div",{class:"board-wrap",children:[$("div",{class:"board-bar",children:[$("button",{class:"tbtn",onClick:(_)=>_0(_,(M)=>$(r,{children:[$(h0,{children:"按属性分组"},void 0,!1,void 0,this),G.map((k)=>$(z0,{icon:X9[k.type],label:k.name,onClick:()=>{H(k.id),M()}},k.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(g,{name:"group",cls:"ico sm"},void 0,!1,void 0,this),"分组:",Y.name]},void 0,!0,void 0,this),K&&$("span",{class:"muted",style:{fontSize:12},children:"多选分组不支持拖拽改值"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board",children:C.map((_)=>{let M=O.get(_)??[],k=_===n9;return $("div",{class:"board-col","data-col-key":_,children:[$("div",{class:"board-col-head",children:[k?$("span",{class:"muted",style:{fontWeight:600},children:"未分组"},void 0,!1,void 0,this):$(a9,{text:_},void 0,!1,void 0,this),$("span",{class:"board-count",children:M.length},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),$("button",{class:"iconbtn sm",title:"新建记录",onClick:()=>X(k?{}:{[Y.id]:_}),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board-col-body",children:[M.map((T)=>$("div",{class:"kcard","data-rec-id":T.id,onPointerDown:(L)=>f(L,T),children:[$("div",{class:"kcard-title",children:WQ(T,F)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z.filter((L)=>L!==F&&L.id!==Y.id&&!GQ(T.cells[L.id])).slice(0,4).map((L)=>$("div",{class:"kcard-field",children:[$(g,{name:X9[L.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$(FZ,{prop:L,val:T.cells[L.id]},void 0,!1,void 0,this)]},L.id,!0,void 0,this))]},T.id,!0,void 0,this)),$("button",{class:"board-add",onClick:()=>X(k?{}:{[Y.id]:_}),children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},_,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function WQ(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function GQ(Z){return Z==null||Z===""||Array.isArray(Z)&&Z.length===0}function hZ(Z){if(Z==null)return null;let J=String(Z).trim();if(!J)return null;let Q=/^(\d{4})-(\d{2})-(\d{2})/.exec(J);if(Q)return new Date(Number(Q[1]),Number(Q[2])-1,Number(Q[3]));let X=new Date(J);return Number.isNaN(X.getTime())?null:new Date(X.getFullYear(),X.getMonth(),X.getDate())}function P9(Z){let J=Z.getFullYear(),Q=String(Z.getMonth()+1).padStart(2,"0"),X=String(Z.getDate()).padStart(2,"0");return`${J}-${Q}-${X}`}function r0(Z,J){return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()+J)}function n6(Z,J){return Z.getFullYear()===J.getFullYear()&&Z.getMonth()===J.getMonth()&&Z.getDate()===J.getDate()}function qQ(Z,J){return new Date(Z,J,1)}function HQ(Z,J){return new Date(Z,J+1,0)}function LZ(Z,J){let Q=Date.UTC(Z.getFullYear(),Z.getMonth(),Z.getDate()),X=Date.UTC(J.getFullYear(),J.getMonth(),J.getDate());return Math.round((X-Q)/86400000)}function S8(){let Z=new Date;return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate())}function YQ(Z){let J=(Z.getDay()+6)%7;return r0(Z,-J)}function k5(Z,J){let Q=YQ(qQ(Z,J)),X=HQ(Z,J),z=[],W=Q;while(W<=X||z.length===0||W.getDay()!==1){let G=[];for(let q=0;q<7;q++)G.push(r0(W,q));if(z.push(G),W=r0(W,7),z.length>=6)break}return z}var KQ=["一","二","三","四","五","六","日"],l6=3;function R5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z}){let W=Z.filter((L)=>L.type==="date"),[G,q]=R(null),H=Z.find((L)=>L.id===G)??W[0]??null,Y=S8(),[F,K]=R({y:Y.getFullYear(),m:Y.getMonth()}),N=W0(null);if(!H)return $("div",{class:"view-placeholder",children:"日历视图需要一个「日期」属性。请在表格视图中添加一个日期列后再切换到日历。"},void 0,!1,void 0,this);let U=Z[0],O=k5(F.y,F.m),C=J.map((L)=>({rec:L,date:hZ(L.cells[H.id])})).filter((L)=>L.date!=null),f=(L)=>C.filter((P)=>n6(P.date,L)),h=(L)=>{let P=F.m+L;K({y:F.y+Math.floor(P/12),m:(P%12+12)%12})},_=()=>K({y:Y.getFullYear(),m:Y.getMonth()}),M=()=>document.querySelectorAll(".cal-day.drop-into").forEach((L)=>L.classList.remove("drop-into")),k=(L,P)=>{if(L.button!==0)return;L.preventDefault(),L.stopPropagation(),N.current={id:P.id,pointerId:L.pointerId,startX:L.clientX,startY:L.clientY,active:!1,ghost:null};let w=(y)=>{let S=N.current;if(!S||S.pointerId!==y.pointerId)return;if(!S.active){if(Math.hypot(y.clientX-S.startX,y.clientY-S.startY)<4)return;S.active=!0,S.ghost=FQ(V8(P,U)),document.body.classList.add("table-dragging")}if(y.preventDefault(),S.ghost)S.ghost.style.transform=`translate3d(${Math.round(y.clientX+8)}px, ${Math.round(y.clientY+8)}px, 0)`;M(),document.elementFromPoint(y.clientX,y.clientY)?.closest?.(".cal-day")?.classList.add("drop-into")},A=(y)=>{let S=N.current;if(!S||S.pointerId!==y.pointerId)return;if(removeEventListener("pointermove",w),removeEventListener("pointerup",A),removeEventListener("pointercancel",A),S.ghost?.remove(),document.body.classList.remove("table-dragging"),M(),N.current=null,!S.active){z(P.id);return}let n=document.elementFromPoint(y.clientX,y.clientY)?.closest?.(".cal-day")?.dataset.iso;if(n&&n!==String(P.cells[H.id]??""))Q(P,H,n)};addEventListener("pointermove",w,{passive:!1}),addEventListener("pointerup",A),addEventListener("pointercancel",A)},T=(L)=>_0(L,(P)=>$(r,{children:[$(h0,{children:"按日期属性"},void 0,!1,void 0,this),W.map((w)=>$(z0,{icon:X9[w.type],label:w.name,onClick:()=>{q(w.id),P()}},w.id,!1,void 0,this))]},void 0,!0,void 0,this));return $("div",{class:"cal",children:[$("div",{class:"cal-nav",children:[$("button",{class:"iconbtn",title:"上个月",onClick:()=>h(-1),children:$(g,{name:"chevron",cls:"ico flip"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"cal-title",children:[F.y," 年 ",F.m+1," 月"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"下个月",onClick:()=>h(1),children:$(g,{name:"chevron",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"tbtn",onClick:_,children:"今天"},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),W.length>1&&$("button",{class:"tbtn",onClick:T,children:[$(g,{name:"calendar",cls:"ico sm"},void 0,!1,void 0,this),H.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-grid cal-head",children:KQ.map((L)=>$("div",{class:"cal-wd",children:L},L,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"cal-body",children:O.map((L,P)=>$("div",{class:"cal-grid cal-week",children:L.map((w)=>{let A=w.getMonth()!==F.m,y=n6(w,Y),S=f(w),p=P9(w);return $("div",{class:"cal-day"+(A?" dim":"")+(y?" today":""),"data-iso":p,onClick:(n)=>{if(n.target.closest(".cal-ev,.cal-add,.cal-more"))return;X({[H.id]:p})},children:[$("div",{class:"cal-daynum",children:[$("span",{children:w.getDate()},void 0,!1,void 0,this),$("button",{class:"cal-add",title:"新建记录",onClick:(n)=>{n.stopPropagation(),X({[H.id]:p})},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-events",children:[S.slice(0,l6).map(({rec:n})=>$("div",{class:"cal-ev",style:{["--c"]:p6(V8(n,U)||n.id)},onPointerDown:($0)=>k($0,n),children:V8(n,U)||"无标题"},n.id,!1,void 0,this)),S.length>l6&&$("button",{class:"cal-more",onClick:(n)=>{n.stopPropagation(),_0(n,($0)=>$(r,{children:[$(h0,{children:[p," · ",S.length," 条记录"]},void 0,!0,void 0,this),S.map(({rec:Q0})=>$(z0,{label:V8(Q0,U)||"无标题",onClick:()=>{$0(),z(Q0.id)}},Q0.id,!1,void 0,this))]},void 0,!0,void 0,this))},children:["+",S.length-l6," 更多"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},p,!0,void 0,this)})},P,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function V8(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function FQ(Z){let J=document.createElement("div");return J.className="drag-ghost",J.textContent=Z||"移动记录",document.body.appendChild(J),J}var V9=200,DZ=36,xZ=44,J9=28,I5=3;function V5({props:Z,records:J,onCommitValue:Q,onOpenRecord:X}){let z=Z.filter((b)=>b.type==="date"),[W,G]=R(null),[q,H]=R(null),Y=Z.find((b)=>b.id===W)??z[0]??null,F=q==="none"?null:Z.find((b)=>b.id===q)??z.find((b)=>b!==Y)??null,K=W0(null),N=W0(null);if(!Y)return $("div",{class:"view-placeholder",children:"时间轴视图需要一个「日期」属性作为开始日期。请在表格视图中添加一个日期列后再切换到时间轴。"},void 0,!1,void 0,this);let U=Z[0],O=S8(),C=J.map((b)=>{let u=hZ(b.cells[Y.id]),V=F?hZ(b.cells[F.id]):null;return{rec:b,s:u,e:V&&u&&V<u?u:V}}),f=C.filter((b)=>b.s),h=O,_=O;if(f.length){h=f[0].s,_=f[0].s;for(let b of f){if(b.s<h)h=b.s;let u=b.e??b.s;if(u>_)_=u}}else h=r0(O,-10),_=r0(O,14);let M=r0(h,-I5),k=r0(_,I5),T=LZ(M,k)+1,L=V9+T*J9,P=(b)=>V9+b*J9,w=LZ(M,O),A=[];for(let b=0;b<T;b++)A.push(r0(M,b));let y=(b,u,V,i,Z0)=>{if(Z0===0)return;if(i==="move"){if(u)Q(b,Y,P9(r0(u,Z0)));if(F&&V)Q(b,F,P9(r0(V,Z0)))}else if(i==="l"&&u){let G0=r0(u,Z0);Q(b,Y,P9(V&&G0>V?V:G0))}else if(i==="r"&&F&&V){let G0=r0(V,Z0);Q(b,F,P9(u&&G0<u?u:G0))}},S=(b,u)=>{let V=N.current;if(!V)return;V.style.left=b+"px",V.style.display="block";let i=V.firstElementChild;if(i)i.textContent=u},p=()=>{if(N.current)N.current.style.display="none"},n=(b,u,V,i,Z0,G0)=>{if(b.button!==0||!V)return;b.preventDefault(),b.stopPropagation();let{offsetLeft:J0,offsetWidth:e}=G0,P0=!1,l0=Z0==="move"?null:b.currentTarget;l0?.classList.add("dragging"),K.current={pointerId:b.pointerId,startX:b.clientX};let c0=(n0)=>{let E0=K.current;if(!E0||E0.pointerId!==n0.pointerId)return;let N0=Math.round((n0.clientX-E0.startX)/J9);if(Math.abs(n0.clientX-E0.startX)>3)P0=!0;let v0,O0;if(Z0==="move"){let j0=J0+N0*J9;G0.style.left=j0+"px",v0=j0,O0=r0(V,N0)}else if(Z0==="l"){let j0=J0+N0*J9;G0.style.left=j0+"px",G0.style.width=Math.max(J9,e-N0*J9)+"px",v0=j0,O0=r0(V,N0)}else{let j0=Math.max(J9,e+N0*J9);G0.style.width=j0+"px",v0=J0+j0,O0=r0(V,Math.round(j0/J9)-1)}S(v0,P9(O0))},d0=(n0)=>{let E0=K.current;if(!E0||E0.pointerId!==n0.pointerId)return;removeEventListener("pointermove",c0),removeEventListener("pointerup",d0),removeEventListener("pointercancel",d0),K.current=null,l0?.classList.remove("dragging"),p();let N0=Math.round((n0.clientX-E0.startX)/J9);if(!P0){X(u.id);return}y(u,V,i,Z0,N0)};addEventListener("pointermove",c0,{passive:!1}),addEventListener("pointerup",d0),addEventListener("pointercancel",d0)},$0=(b,u)=>{if(Q(b,Y,P9(u)),F)Q(b,F,P9(u))},Q0=(b,u)=>{let V=b.currentTarget.closest(".tl-row");if(!V)return;let i=b.clientX-V.getBoundingClientRect().left;if(i<V9)return;let Z0=Math.max(0,Math.min(T-1,Math.round((i-V9)/J9)));$0(u,r0(M,Z0))};return $("div",{class:"tl",children:[$("div",{class:"tl-toolbar",children:$("button",{class:"tbtn",onClick:(b)=>_0(b,(u)=>$(r,{children:[$(h0,{children:"开始日期"},void 0,!1,void 0,this),z.map((V)=>$(z0,{icon:X9[V.type],label:V.name,checked:V===Y,onClick:()=>{G(V.id),u()}},V.id,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this),$(h0,{children:"结束日期(可选)"},void 0,!1,void 0,this),$(z0,{icon:"x",label:"无(里程碑)",checked:!F,onClick:()=>{H("none"),u()}},void 0,!1,void 0,this),z.map((V)=>$(z0,{icon:X9[V.type],label:V.name,checked:V===F,onClick:()=>{H(V.id),u()}},V.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(g,{name:"timeline",cls:"ico sm"},void 0,!1,void 0,this),Y.name,F?` → ${F.name}`:"(里程碑)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"tl-scroll",children:$("div",{class:"tl-canvas",style:{width:L,height:xZ+C.length*DZ+8},children:[$("div",{class:"tl-axis",style:{height:xZ},children:[$("div",{class:"tl-corner",style:{width:V9},children:"记录"},void 0,!1,void 0,this),A.map((b,u)=>{let V=b.getDate()===1;return $("div",{class:"tl-tick"+(V?" mstart":"")+(LZ(b,O)===0?" today":""),style:{left:P(u),width:J9},children:[V&&$("span",{class:"tl-month",children:[b.getMonth()+1,"月"]},void 0,!0,void 0,this),$("span",{class:"tl-dnum",children:b.getDate()},void 0,!1,void 0,this)]},u,!0,void 0,this)})]},void 0,!0,void 0,this),C.map(({rec:b,s:u,e:V},i)=>{let Z0=u?LZ(M,u):0,G0=u&&V?LZ(u,V)+1:1;return $("div",{class:"tl-row",style:{top:xZ+i*DZ,height:DZ},children:[$("div",{class:"tl-rowlabel",style:{width:V9},children:S5(b,U)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!u?$("div",{class:"tl-track-empty",style:{left:V9},onClick:(J0)=>Q0(J0,b),title:"点击空白处排期",children:$("button",{class:"tl-schedule",style:{left:V9+8},onClick:(J0)=>{J0.stopPropagation(),$0(b,O)},children:"未排期 · 排到今天"},void 0,!1,void 0,this)},void 0,!1,void 0,this):V?$("div",{class:"tl-item",style:{left:P(Z0),width:G0*J9},onPointerDown:(J0)=>n(J0,b,u,V,"move",J0.currentTarget),children:[$("span",{class:"tl-h l",onPointerDown:(J0)=>n(J0,b,u,V,"l",J0.currentTarget.parentElement)},void 0,!1,void 0,this),$("span",{class:"tl-label",children:S5(b,U)},void 0,!1,void 0,this),$("span",{class:"tl-h r",onPointerDown:(J0)=>n(J0,b,u,V,"r",J0.currentTarget.parentElement)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("div",{class:"tl-milestone",style:{left:P(Z0)},title:P9(u),onPointerDown:(J0)=>n(J0,b,u,null,"move",J0.currentTarget)},void 0,!1,void 0,this)]},b.id,!0,void 0,this)}),w>=0&&w<T&&$("div",{class:"tl-today",style:{left:P(w)+J9/2,height:xZ+C.length*DZ}},void 0,!1,void 0,this),$("div",{class:"tl-guide",ref:N,style:{display:"none",height:xZ+C.length*DZ},children:$("span",{class:"tl-guide-label"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function S5(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}var UQ=[["表格","list"],["看板","group"],["日历","calendar"],["时间轴","timeline"]];function r6(Z){return{r0:Math.min(Z.a.r,Z.b.r),r1:Math.max(Z.a.r,Z.b.r),c0:Math.min(Z.a.c,Z.b.c),c1:Math.max(Z.a.c,Z.b.c)}}function g5({db:Z,onError:J}){let[Q,X]=R([]),[z,W]=R([]),G=KZ(),[q,H]=R(0),[Y,F]=R(new Set),[K,N]=R(null),[U,O]=R(null),C=W0(U);C.current=U;let[f,h]=R(null),[_,M]=R(null),k=(j)=>j.config?.width??180,T=W0(!1),L=W0(null),P=W0(null),[w,A]=R(null),[y,S]=R(null),p=W0(null),n=(j)=>{if(document.body.classList.contains("table-dragging"))return;let I=P.current,E=L.current;if(!I||!E)return;let a=w&&E.querySelector(`tbody tr[data-row-id="${w.id}"]`);if(a){let l=a.getBoundingClientRect();if(j>=l.top&&j<l.bottom)return}let F0=I.getBoundingClientRect().top;for(let l of Array.from(E.querySelectorAll("tbody tr[data-row-id]"))){let t=l.getBoundingClientRect();if(j>=t.top&&j<t.bottom){A({id:l.dataset.rowId,top:t.top-F0,height:t.height});return}}if(w)A(null)},$0=(j)=>j().catch((I)=>J(String(I.message))),Q0=async()=>{let[j,I]=await Promise.all([d.listProperties(Z.id),d.listRecords(Z.id)]);X(j),W(I)};o(()=>{F(new Set),h(null),H(0),M(null),O(null),Q0().catch((j)=>J(String(j.message)))},[Z.id]),o(()=>{let j=(I)=>{if(!I.detail?.datasets?.some((a)=>a==="records"||a==="properties"))return;if(C.current)return;Q0().catch(()=>{})};return document.addEventListener(p9,j),()=>document.removeEventListener(p9,j)},[Z.id]);let x=(j,I,E)=>{O(null),W((a)=>a.map((F0)=>F0.id===j.id?{...F0,cells:{...F0.cells,[I.id]:E},values:{...F0.values,[I.name]:E}}:F0)),d.updateRecord(j.id,{[I.id]:E}).then((a)=>W((F0)=>F0.map((l)=>l.id===a.id?a:l))).catch((a)=>{J(String(a.message)),Q0().catch((F0)=>J(String(F0.message)))})},b=(j)=>$0(async()=>{let I=await d.createRecord(Z.id,j);W((E)=>[...E,I])}),u=()=>b({}),V=(j)=>$0(async()=>{if(await Promise.all(j.map((I)=>d.deleteRecord(I))),W((I)=>I.filter((E)=>!j.includes(E.id))),F(new Set),f&&j.includes(f))h(null)}),i=(j)=>$0(async()=>{let I=await d.createRecord(Z.id,j.cells);W((E)=>{let a=E.findIndex((F0)=>F0.id===j.id);return[...E.slice(0,a+1),I,...E.slice(a+1)]})}),Z0=(j,I,E)=>{if(j===I||K)return;W((a)=>f5(a,j,I,E))},G0=(j,I,E)=>{if(j===I||K)return;Z0(j,I,E),d.moveRecord(j,I,E).catch((a)=>{J(String(a.message)),Q0().catch((F0)=>J(String(F0.message)))})},J0=(j,I,E)=>{if(j===I)return;X((a)=>{let F0=f5(a,j,I,E).map((X0,U0)=>({...X0,position:U0+1})),l=new Map(a.map((X0)=>[X0.id,X0.position])),t=F0.filter((X0)=>l.get(X0.id)!==X0.position);if(t.length)Promise.all(t.map((X0)=>d.updateProperty(X0.id,{position:X0.position}))).catch((X0)=>{J(String(X0.message)),Q0().catch((U0)=>J(String(U0.message)))});return F0})},e=(j,I)=>{let E=P.current,a=L.current;if(!E||!a)return null;let F0=Array.from(a.querySelectorAll("tbody tr[data-row-id]"));if(!F0.length)return null;let l=E.getBoundingClientRect().top,t=F0[F0.length-1],X0="after";for(let k0 of F0){let g0=k0.getBoundingClientRect();if(j<g0.top+g0.height/2){t=k0,X0="before";break}if(j<=g0.bottom){t=k0,X0="after";break}}if(t.dataset.rowId===I)return null;let U0=t.getBoundingClientRect();return{id:t.dataset.rowId,where:X0,y:(X0==="before"?U0.top:U0.bottom)-l}},P0=(j,I)=>{if(K||j.button!==0)return;let E=L.current?.querySelector(`tr[data-row-id="${I}"]`);if(!E)return;j.preventDefault();let a=E.getBoundingClientRect(),F0=j.clientX-a.left,l=j.clientY-a.top,t=null;c9(j,{onStart:()=>{t=V6("row-ghost",a,PQ(E)),E.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(X0)=>{bZ(t,X0.clientX-F0,X0.clientY-l);let U0=e(X0.clientY,I);p.current=U0,S(U0?U0.y:null)},onEnd:(X0,U0)=>{t?.remove(),E.classList.remove("drag-source"),document.body.classList.remove("table-dragging");let k0=p.current;if(p.current=null,S(null),U0&&k0)G0(I,k0.id,k0.where)}})},l0=(j,I)=>{if(j.button!==0)return;let E=j.currentTarget.closest("th");if(!E)return;H5(j,{source:E,axis:"x",ghostCls:"col-ghost",ghostText:E.textContent?.trim()||"移动属性",targetSelector:"th[data-col-id]",isSelf:(a)=>a.dataset.colId===I.id,onActivate:()=>{T.current=!0},onDrop:(a,F0)=>J0(I.id,a.dataset.colId,F0),onFinish:(a)=>{if(a)setTimeout(()=>{T.current=!1},0)}})},c0=(j,I,E)=>{if(j.button!==0)return;if(j.target.closest("input,button,a"))return;let a=j.shiftKey&&_?_.a:{r:I,c:E};M({a,b:{r:I,c:E}}),c9(j,{onStart:()=>document.body.classList.add("cell-selecting"),onMove:(F0)=>{let l=document.elementFromPoint(F0.clientX,F0.clientY)?.closest?.("td.cell-td");if(!l||l.dataset.r==null)return;M({a,b:{r:Number(l.dataset.r),c:Number(l.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},d0=(j)=>j!=="checkbox"&&j!=="select"&&j!=="multi_select",n0=(j,I,E)=>Math.max(I,Math.min(E,j)),E0=(j,I)=>requestAnimationFrame(()=>{document.querySelector(`td.cell-td[data-r="${j}"][data-c="${I}"]`)?.scrollIntoView({block:"nearest",inline:"nearest"})}),N0=(j,I)=>{M({a:{r:j,c:I},b:{r:j,c:I}}),E0(j,I)},v0=(j,I,E)=>{let a=K0[j],F0=Q[I];if(!a||!F0)return;if(N0(j,I),d0(F0.type))O({rec:a.id,prop:F0.id,seed:E})},O0=(j,I,E)=>{let a=I+E;if(a<0||a>=Q.length){N0(j,I);return}v0(j,a)},j0=(j)=>$0(async()=>{if(!_)return;let{r0:I,r1:E,c0:a,c1:F0}=r6(_),l=Q.slice(a,F0+1),t=K0.slice(I,E+1),X0=await Promise.all(t.map((U0)=>{let k0={};for(let g0 of l)k0[g0.id]=j(g0);return d.updateRecord(U0.id,k0)}));W((U0)=>U0.map((k0)=>X0.find((g0)=>g0.id===k0.id)??k0))}),i0=async()=>{if(!_)return;let{r0:j,r1:I,c0:E,c1:a}=r6(_),F0=Q.slice(E,a+1),l=K0.slice(j,I+1).map((t)=>F0.map((X0)=>C5(X0,t.cells[X0.id])).join("\t")).join(`
|
|
37
|
+
`);try{await navigator.clipboard.writeText(l)}catch{}},T0=K?Q.find((j)=>j.id===K.id):void 0,o0=(j)=>{let I=j==null||j===""?NaN:Number(j);return Number.isFinite(I)?I:Number.NEGATIVE_INFINITY},K0=K?[...z].sort((j,I)=>{let E=j.cells[K.id],a=I.cells[K.id],F0=T0?.type==="number"?o0(E)-o0(a):String(E??"").localeCompare(String(a??""),"zh");return(K.desc?-1:1)*F0}):z,q0=z.find((j)=>j.id===f)??null,A0=_?r6(_):null;return o(()=>{let j=(I)=>{if(!_||U)return;let E=document.activeElement,a=(E?.tagName||"").toLowerCase();if(a==="input"||a==="textarea"||E?.isContentEditable)return;let F0=_.a.r===_.b.r&&_.a.c===_.b.c,{r:l,c:t}=_.b,X0={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(I.key in X0){I.preventDefault();let[U0,k0]=X0[I.key],g0={r:n0(l+U0,0,K0.length-1),c:n0(t+k0,0,Q.length-1)};M(I.shiftKey?{a:_.a,b:g0}:{a:g0,b:g0}),E0(g0.r,g0.c)}else if((I.metaKey||I.ctrlKey)&&I.key.toLowerCase()==="c")I.preventDefault(),i0();else if(I.key==="Escape")M(null);else if(I.key==="Delete"||I.key==="Backspace")I.preventDefault(),j0(()=>null);else if(F0&&(I.key==="Enter"||I.key==="F2"))I.preventDefault(),v0(l,t);else if(F0&&I.key.length===1&&!I.metaKey&&!I.ctrlKey&&!I.altKey&&!I.isComposing&&I.keyCode!==229){let U0=Q[t];if(!U0||!d0(U0.type)||U0.type==="date")return;if(U0.type==="number"&&!/[0-9.+-]/.test(I.key))return;I.preventDefault(),v0(l,t,I.key)}};return addEventListener("keydown",j),()=>removeEventListener("keydown",j)},[_,U,z,Q,K]),$("div",{class:"db",onPointerDown:(j)=>{if(!j.target.closest("td.cell-td, .cellselbar"))M(null)},children:[$("div",{class:"db-head",children:[$("div",{class:"db-icon",children:Z.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("div",{children:$("div",{class:"db-title",contentEditable:!0,onBlur:(j)=>{let I=j.target.textContent?.trim()||Z.name;if(I!==Z.name)$0(async()=>{await d.updateDatabase(Z.id,{name:I})})},children:Z.name},void 0,!1,void 0,this)},void 0,!1,void 0,this),G.has(Z.id)&&$("span",{class:"db-title-share",title:"已分享 · 管理分享",onClick:()=>A9({kind:"database",ref:Z.id,title:Z.name}),children:$(g,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"views",children:[UQ.map(([j,I],E)=>$("div",{class:"view-tab"+(E===q?" active":""),onClick:()=>H(E),children:[$(g,{name:I},void 0,!1,void 0,this),j]},j,!0,void 0,this)),$("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:u,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q===0&&$("div",{class:"toolbar",children:$("button",{class:"tbtn",onClick:(j)=>CQ(j,Q,K,N),children:[$(g,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),"排序"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),q===1?$(T5,{props:Q,records:z,onCommitValue:x,onCreate:b,onOpenRecord:h,onMove:G0},void 0,!1,void 0,this):q===2?$(R5,{props:Q,records:z,onCommitValue:x,onCreate:b,onOpenRecord:h},void 0,!1,void 0,this):q===3?$(V5,{props:Q,records:z,onCommitValue:x,onCreate:b,onOpenRecord:h},void 0,!1,void 0,this):$("div",{class:"gridhost",ref:P,onMouseMove:(j)=>n(j.clientY),onMouseLeave:()=>{if(!document.body.classList.contains("table-dragging"))A(null)},children:[w&&$("button",{class:"rowgrip-ext"+(K?" is-disabled":""),style:{top:w.top+w.height/2},title:K?"清除排序后可拖拽移动":"拖拽移动","aria-disabled":K?"true":void 0,onPointerDown:(j)=>P0(j,w.id),children:$(g,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),y!=null&&$("div",{class:"rowdrop",style:{top:y}},void 0,!1,void 0,this),$("div",{class:"tablewrap",children:[$("div",{class:"tablescroll",children:$("table",{class:"grid",ref:L,children:[$("colgroup",{children:[$("col",{style:{width:38}},void 0,!1,void 0,this),Q.map((j)=>$("col",{"data-col-id":j.id,style:{width:k(j)}},j.id,!1,void 0,this)),$("col",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("thead",{children:$("tr",{children:[$("th",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.size>0&&Y.size===z.length,onChange:(j)=>F(j.target.checked?new Set(z.map((I)=>I.id)):new Set)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((j)=>$("th",{"data-col-id":j.id,children:[$("div",{class:"colhead",onPointerDown:(I)=>l0(I,j),onClick:(I)=>{if(T.current){T.current=!1,I.preventDefault(),I.stopPropagation();return}AQ(I,j,Z.id,Q0,Q)},children:[$("span",{class:"ti",children:$(g,{name:X9[j.type]??"text",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"nm",children:j.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(BQ,{colId:j.id,startWidth:k(j),onCommit:(I)=>{X((E)=>E.map((a)=>a.id===j.id?{...a,config:{...a.config??{},width:I}}:a)),d.setColumnWidth(j.id,I).catch((E)=>{J(String(E.message)),Q0().catch(()=>{})})}},void 0,!1,void 0,this)]},j.id,!0,void 0,this)),$("th",{class:"addcol",children:$("div",{class:"colhead",title:"新建属性",onClick:(j)=>wQ(j,Z.id,Q,Q0),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("tbody",{children:K0.map((j,I)=>$("tr",{"data-row-id":j.id,class:Y.has(j.id)?"sel":"",children:[$("td",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.has(j.id),onChange:()=>F((E)=>{let a=new Set(E);return a.has(j.id)?a.delete(j.id):a.add(j.id),a})},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((E,a)=>{let F0=A0!=null&&I>=A0.r0&&I<=A0.r1&&a>=A0.c0&&a<=A0.c1,l;if(F0&&A0){let t=[];if(I===A0.r0)t.push("inset 0 2px 0 0 var(--accent)");if(I===A0.r1)t.push("inset 0 -2px 0 0 var(--accent)");if(a===A0.c0)t.push("inset 2px 0 0 0 var(--accent)");if(a===A0.c1)t.push("inset -2px 0 0 0 var(--accent)");l=t.join(",")||void 0}return $("td",{class:"cell-td"+(F0?" cellsel":""),"data-r":I,"data-c":a,style:l?{boxShadow:l}:void 0,onPointerDown:(t)=>c0(t,I,a),children:$(LQ,{rec:j,prop:E,first:a===0,editing:U?.rec===j.id&&U?.prop===E.id,seed:U?.rec===j.id&&U?.prop===E.id?U.seed:void 0,onEdit:()=>{N0(I,a),O({rec:j.id,prop:E.id})},onCommit:(t)=>x(j,E,t),onDone:(t)=>{if(O(null),t.reason!=="cancel"&&t.changed)x(j,E,t.value);if(t.reason==="tab")O0(I,a,1);else if(t.reason==="shifttab")O0(I,a,-1);else if(t.reason==="enter")N0(n0(I+1,0,K0.length-1),a)},onOpen:()=>h(j.id),onRowMenu:(t)=>MQ(t,j,()=>h(j.id),()=>i(j),()=>V([j.id]))},void 0,!1,void 0,this)},E.id,!1,void 0,this)}),$("td",{class:"filler"},void 0,!1,void 0,this)]},j.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"addrow",onClick:u,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建记录"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",z.length," 条记录"]},void 0,!0,void 0,this),$("span",{children:[Q.length," 个属性"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y.size>0&&$("div",{class:"selbar",children:[$("span",{class:"cnt",children:[Y.size," 已选"]},void 0,!0,void 0,this),$("button",{onClick:()=>$0(async()=>{for(let j of Y)await i(z.find((I)=>I.id===j))}),children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:async()=>{if(await R0({title:"删除记录?",message:`确定删除选中的 ${Y.size} 条记录?`,confirmLabel:"删除",danger:!0}))V([...Y])},children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除"]},void 0,!0,void 0,this),$("button",{onClick:()=>F(new Set),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),A0&&(A0.r0!==A0.r1||A0.c0!==A0.c1)&&$("div",{class:"selbar cellselbar",children:[$("span",{class:"cnt",children:[(A0.r1-A0.r0+1)*(A0.c1-A0.c0+1)," 个单元格"]},void 0,!0,void 0,this),$("button",{onClick:i0,children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{onClick:()=>j0((j)=>K0[A0.r0].cells[j.id]??null),children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"填充"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:()=>j0(()=>null),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清空"]},void 0,!0,void 0,this),$("button",{onClick:()=>M(null),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q0&&$(yQ,{db:Z,props:Q,rec:q0,onClose:()=>h(null),onCommit:(j,I)=>x(q0,j,I),onDelete:()=>V([q0.id]),onDuplicate:()=>i(q0),onReverted:()=>Q0().catch((j)=>J(String(j.message)))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function b5({prop:Z,val:J,seed:Q,captureTab:X,onDone:z}){let W=Array.isArray(J)?J.join(", "):J==null?"":String(J),G=W0(null),q=W0(!1);o(()=>{let Y=G.current;Y.value=Q??W,Y.focus();try{Y.setSelectionRange(Y.value.length,Y.value.length)}catch{}},[]);let H=(Y)=>{if(q.current)return;if(q.current=!0,Y==="cancel")return z({reason:"cancel"});let F=G.current.value;z({reason:Y,changed:F!==W,value:w5(Z.type,F)})};return $("input",{ref:G,class:"inlineedit",type:Z.type==="number"?"number":Z.type==="date"?"date":"text",onBlur:()=>H("blur"),onKeyDown:(Y)=>{if(Y.isComposing||Y.keyCode===229)return;if(Y.key==="Enter")Y.preventDefault(),H("enter");else if(Y.key==="Escape")Y.preventDefault(),Y.stopPropagation(),H("cancel");else if(Y.key==="Tab"&&X)Y.preventDefault(),H(Y.shiftKey?"shifttab":"tab")}},void 0,!1,void 0,this)}function LQ({rec:Z,prop:J,first:Q,editing:X,seed:z,onEdit:W,onCommit:G,onDone:q,onOpen:H,onRowMenu:Y}){let F=Z.cells[J.id];if(J.type==="checkbox")return $("div",{class:"cell center",children:$("input",{type:"checkbox",checked:!!F,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>G(!F)},void 0,!1,void 0,this)},void 0,!1,void 0,this);let K=(O)=>{if(J.type==="select"||J.type==="multi_select")j5(O,J,F,G);else W()},N=$(FZ,{prop:J,val:F},void 0,!1,void 0,this);return $(r,{children:[Q?$("div",{class:"cell",onDblClick:K,onContextMenu:(O)=>{O.preventDefault(),Y(O)},children:$("div",{class:"firstcell",children:[N,$("div",{class:"rowactions",children:$("button",{class:"rowopen",title:"打开",onClick:(O)=>{O.stopPropagation(),H()},children:$(g,{name:"openPeek",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this):$("div",{class:"cell",onDblClick:K,children:N},void 0,!1,void 0,this),X&&J.type!=="select"&&J.type!=="multi_select"&&$("div",{class:"celledit",children:$(b5,{prop:J,val:F,seed:z,captureTab:!0,onDone:q},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function f5(Z,J,Q,X){let z=[...Z],W=z.findIndex((H)=>H.id===J);if(W<0)return Z;let G=z.splice(W,1)[0],q=z.findIndex((H)=>H.id===Q);if(q<0)return Z;if(X==="after")q+=1;return z.splice(q,0,G),z}function PQ(Z){return Array.from(Z.querySelectorAll("td")).map((Q)=>(Q.textContent??"").trim()).filter(Boolean).join(" ")||"移动记录"}function BQ({colId:Z,startWidth:J,onCommit:Q}){return $("div",{class:"col-resizer",onPointerDown:(z)=>{z.preventDefault(),z.stopPropagation(),_8(z,{col:document.querySelector(`col[data-col-id="${CSS.escape(Z)}"]`),startWidth:J,min:80,onDone:Q})}},void 0,!1,void 0,this)}function j5(Z,J,Q,X){Z.stopPropagation();let z=J.type==="multi_select",W=J.config?.options??[];_0(Z,(G)=>$(OQ,{multi:z,options:W,value:Q,onPick:(q)=>{if(X(q),!z)G()}},void 0,!1,void 0,this))}function OQ({multi:Z,options:J,value:Q,onPick:X}){let[z,W]=R(Q),G=(H)=>Z?Array.isArray(z)?z.includes(H):!1:z===H,q=(H)=>{if(Z){let Y=new Set(Array.isArray(z)?z:[]);Y.has(H)?Y.delete(H):Y.add(H);let F=[...Y];W(F),X(F)}else W(H),X(H)};return $(r,{children:[$(h0,{children:Z?"多选 — 点选切换":"单选"},void 0,!1,void 0,this),J.map((H)=>$("button",{class:"item",onClick:()=>q(H),children:[$(a9,{text:H},void 0,!1,void 0,this),G(H)&&$("span",{class:"chk",children:$(g,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},H,!0,void 0,this)),Z&&Array.isArray(z)&&z.length>0&&$(r,{children:[$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"x",label:"清空",onClick:()=>{W([]),X([])}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function AQ(Z,J,Q,X,z){Z.stopPropagation(),_0(Z,(W)=>$(NQ,{prop:J,dbId:Q,reload:X,close:W,allProps:z},void 0,!1,void 0,this),{minWidth:252})}function NQ({prop:Z,dbId:J,reload:Q,close:X,allProps:z}){let[W,G]=R(Z.name),[q,H]=R(Z.type),[Y,F]=R(Z.config?.options??[]),K=(O)=>d.updateProperty(Z.id,O).then(Q).catch((C)=>s(`更新属性失败:${C.message}`)),N=(O)=>{H(O);let C=Y;if((O==="select"||O==="multi_select")&&C.length===0)C=["选项 1","选项 2"],F(C);K({type:O,...O==="select"||O==="multi_select"?{config:{options:C}}:{}})},U=(O)=>{F(O),K({config:{options:O}})};return $(r,{children:[$("input",{class:"field",value:W,onInput:(O)=>G(O.target.value),onBlur:()=>W&&W!==Z.name&&K({name:W}),onKeyDown:(O)=>{if(O.key==="Enter")O.target.blur(),X()}},void 0,!1,void 0,this),$(h0,{children:"属性类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(qZ).map((O)=>$("button",{class:"item"+(O===q?" sel":""),onClick:()=>N(O),children:[$("span",{class:"lico",children:$(g,{name:X9[O],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:qZ[O].t},void 0,!1,void 0,this)]},O,!0,void 0,this))},void 0,!1,void 0,this),(q==="select"||q==="multi_select")&&$(r,{children:[$(f0,{},void 0,!1,void 0,this),$(h0,{children:"选项"},void 0,!1,void 0,this),Y.map((O,C)=>$("div",{class:"optrow",children:[$(a9,{text:O},void 0,!1,void 0,this),$("button",{class:"x",onClick:()=>U(Y.filter((f,h)=>h!==C)),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O+C,!0,void 0,this)),$(z0,{icon:"plus",label:"添加选项",onClick:()=>U([...Y,"选项 "+(Y.length+1)])},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{X(),d.createProperty({db:J,name:h5("新属性",z),type:"text"}).then(Q).catch((O)=>s(`新建属性失败:${O.message}`))}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除属性",danger:!0,onClick:async()=>{if(X(),await R0({title:"删除属性?",message:`「${Z.name}」及其所有单元格数据将被移除。`,confirmLabel:"删除",danger:!0}))d.deleteProperty(Z.id).then(Q)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function h5(Z,J){let Q=new Set(J.map((X)=>X.name.toLowerCase()));if(!Q.has(Z.toLowerCase()))return Z;for(let X=2;;X++){let z=`${Z} ${X}`;if(!Q.has(z.toLowerCase()))return z}}function wQ(Z,J,Q,X){Z.stopPropagation(),_0(Z,(z)=>$(r,{children:[$(h0,{children:"新建属性 · 选择类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(qZ).map((W)=>$("button",{class:"item",onClick:()=>{z();let G=W==="select"||W==="multi_select"?{options:["选项 1","选项 2"]}:void 0;d.createProperty({db:J,name:h5(qZ[W].t,Q),type:W,config:G}).then(X).catch((q)=>s(`新建属性失败:${q.message}`))},children:[$("span",{class:"lico",children:$(g,{name:X9[W],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:qZ[W].t},void 0,!1,void 0,this)]},W,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function CQ(Z,J,Q,X){_0(Z,(z)=>$(r,{children:[$(h0,{children:"排序依据"},void 0,!1,void 0,this),J.map((W)=>$(z0,{icon:X9[W.type],label:W.name,onClick:()=>{X({id:W.id,desc:Q?.id===W.id?!Q.desc:!1}),z()}},W.id,!1,void 0,this)),Q&&$(r,{children:[$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"x",label:"清除排序",onClick:()=>{X(null),z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function MQ(Z,J,Q,X,z){Z.stopPropagation(),_0(Z,(W)=>$(r,{children:[$(z0,{icon:"cornerUpRight",label:"打开记录",onClick:()=>{W(),Q()}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"复制记录",onClick:()=>{W(),X()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(W(),await R0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function yQ({db:Z,props:J,rec:Q,onClose:X,onCommit:z,onDelete:W,onDuplicate:G,onReverted:q}){let[H,Y]=R(null),[F,K]=R(!1),{open:N,close:U}=i9(X),O=J[0];return $(r,{children:[$("div",{class:"scrim"+(N?" open":""),onClick:U},void 0,!1,void 0,this),$("div",{class:"peek"+(N?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:U,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("button",{class:"iconbtn",title:"返回字段",onClick:()=>K(!1),children:$(g,{name:"arrowLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(C)=>_0(C,(f)=>$(r,{children:[$(z0,{icon:"history",label:"版本历史",checked:F,onClick:()=>{f(),K(!F)}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"复制记录",onClick:()=>{f(),G()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(f(),await R0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))W()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:F?$(v5,{rec:Q,props:J,onReverted:q},void 0,!1,void 0,this):$(r,{children:[$("h2",{contentEditable:!0,onBlur:(C)=>O&&z(O,C.target.textContent??""),children:O?String(Q.cells[O.id]??"无标题"):"无标题"},void 0,!1,void 0,this),J.map((C)=>$("div",{class:"proprow",children:[$("div",{class:"k",children:[$(g,{name:X9[C.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:C.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(_Q,{prop:C,rec:Q,editing:H===C.id,onEdit:()=>Y(C.id),onCommit:(f)=>{z(C,f),Y(null)},onCloseEdit:()=>Y(null)},void 0,!1,void 0,this)]},C.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function _Q({prop:Z,rec:J,editing:Q,onEdit:X,onCommit:z,onCloseEdit:W}){let G=J.cells[Z.id];if(Z.type==="checkbox")return $("div",{class:"v",children:$("input",{type:"checkbox",checked:!!G,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>z(!G)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Z.type==="select"||Z.type==="multi_select")return $("div",{class:"v",onClick:(q)=>j5(q,Z,G,z),children:$(FZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Q)return $("div",{class:"v",children:$(b5,{prop:Z,val:G,onDone:(q)=>{if(q.reason!=="cancel"&&q.changed)z(q.value);else W()}},void 0,!1,void 0,this)},void 0,!1,void 0,this);return $("div",{class:"v",onClick:X,children:$(FZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var n4=X2(a4(),1);var E8=n4.default;function fz(Z){for(var J=1;J<arguments.length;J++){var Q=arguments[J];for(var X in Q)if(Object.prototype.hasOwnProperty.call(Q,X))Z[X]=Q[X]}return Z}function q1(Z,J){return Array(J+1).join(Z)}function o4(Z){return Z.replace(/^\n*/,"")}function t4(Z){var J=Z.length;while(J>0&&Z[J-1]===`
|
|
38
|
+
`)J--;return Z.substring(0,J)}function s4(Z){return t4(o4(Z))}var gz=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function H1(Z){return Y1(Z,gz)}var e4=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function Z$(Z){return Y1(Z,e4)}function bz(Z){return $$(Z,e4)}var J$=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function jz(Z){return Y1(Z,J$)}function hz(Z){return $$(Z,J$)}function Y1(Z,J){return J.indexOf(Z.nodeName)>=0}function $$(Z,J){return Z.getElementsByTagName&&J.some(function(Q){return Z.getElementsByTagName(Q).length})}var Dz=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function Q$(Z){return Dz.reduce(function(J,Q){return J.replace(Q[0],Q[1])},Z)}var t0={};t0.paragraph={filter:"p",replacement:function(Z){return`
|
|
11
39
|
|
|
12
40
|
`+Z+`
|
|
13
41
|
|
|
14
|
-
`}};
|
|
15
|
-
`}};
|
|
42
|
+
`}};t0.lineBreak={filter:"br",replacement:function(Z,J,Q){return Q.br+`
|
|
43
|
+
`}};t0.heading={filter:["h1","h2","h3","h4","h5","h6"],replacement:function(Z,J,Q){var X=Number(J.nodeName.charAt(1));if(Q.headingStyle==="setext"&&X<3){var z=q1(X===1?"=":"-",Z.length);return`
|
|
16
44
|
|
|
17
45
|
`+Z+`
|
|
18
46
|
`+z+`
|
|
19
47
|
|
|
20
48
|
`}else return`
|
|
21
49
|
|
|
22
|
-
`+
|
|
50
|
+
`+q1("#",X)+" "+Z+`
|
|
23
51
|
|
|
24
|
-
`}};
|
|
52
|
+
`}};t0.blockquote={filter:"blockquote",replacement:function(Z){return Z=s4(Z).replace(/^/gm,"> "),`
|
|
25
53
|
|
|
26
54
|
`+Z+`
|
|
27
55
|
|
|
28
|
-
`}};
|
|
56
|
+
`}};t0.list={filter:["ul","ol"],replacement:function(Z,J){var Q=J.parentNode;if(Q.nodeName==="LI"&&Q.lastElementChild===J)return`
|
|
29
57
|
`+Z;else return`
|
|
30
58
|
|
|
31
59
|
`+Z+`
|
|
32
60
|
|
|
33
|
-
`}};
|
|
61
|
+
`}};t0.listItem={filter:"li",replacement:function(Z,J,Q){var X=Q.bulletListMarker+" ",z=J.parentNode;if(z.nodeName==="OL"){var W=z.getAttribute("start"),G=Array.prototype.indexOf.call(z.children,J);X=(W?Number(W)+G:G+1)+". "}var q=/\n$/.test(Z);return Z=s4(Z)+(q?`
|
|
34
62
|
`:""),Z=Z.replace(/\n/gm,`
|
|
35
63
|
`+" ".repeat(X.length)),X+Z+(J.nextSibling?`
|
|
36
|
-
`:"")}};
|
|
64
|
+
`:"")}};t0.indentedCodeBlock={filter:function(Z,J){return J.codeBlockStyle==="indented"&&Z.nodeName==="PRE"&&Z.firstChild&&Z.firstChild.nodeName==="CODE"},replacement:function(Z,J,Q){return`
|
|
37
65
|
|
|
38
66
|
`+J.firstChild.textContent.replace(/\n/g,`
|
|
39
67
|
`)+`
|
|
40
68
|
|
|
41
|
-
`}};
|
|
69
|
+
`}};t0.fencedCodeBlock={filter:function(Z,J){return J.codeBlockStyle==="fenced"&&Z.nodeName==="PRE"&&Z.firstChild&&Z.firstChild.nodeName==="CODE"},replacement:function(Z,J,Q){var X=J.firstChild.getAttribute("class")||"",z=(X.match(/language-(\S+)/)||[null,""])[1],W=J.firstChild.textContent,G=Q.fence.charAt(0),q=3,H=new RegExp("^"+G+"{3,}","gm"),Y;while(Y=H.exec(W))if(Y[0].length>=q)q=Y[0].length+1;var F=q1(G,q);return`
|
|
42
70
|
|
|
43
71
|
`+F+z+`
|
|
44
|
-
`+
|
|
72
|
+
`+W.replace(/\n$/,"")+`
|
|
45
73
|
`+F+`
|
|
46
74
|
|
|
47
|
-
`}};
|
|
75
|
+
`}};t0.horizontalRule={filter:"hr",replacement:function(Z,J,Q){return`
|
|
48
76
|
|
|
49
77
|
`+Q.hr+`
|
|
50
78
|
|
|
51
|
-
`}};
|
|
79
|
+
`}};t0.inlineLink={filter:function(Z,J){return J.linkStyle==="inlined"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J){var Q=K1(J.getAttribute("href")),X=F1(p8(J.getAttribute("title"))),z=X?' "'+X+'"':"";return"["+Z+"]("+Q+z+")"}};t0.referenceLink={filter:function(Z,J){return J.linkStyle==="referenced"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J,Q){var X=K1(J.getAttribute("href")),z=p8(J.getAttribute("title"));if(z)z=' "'+F1(z)+'"';var W,G;switch(Q.linkReferenceStyle){case"collapsed":W="["+Z+"][]",G="["+Z+"]: "+X+z;break;case"shortcut":W="["+Z+"]",G="["+Z+"]: "+X+z;break;default:var q=this.references.length+1;W="["+Z+"]["+q+"]",G="["+q+"]: "+X+z}return this.references.push(G),W},references:[],append:function(Z){var J="";if(this.references.length)J=`
|
|
52
80
|
|
|
53
81
|
`+this.references.join(`
|
|
54
82
|
`)+`
|
|
55
83
|
|
|
56
|
-
`,this.references=[];return J}};
|
|
57
|
-
`):""}function
|
|
84
|
+
`,this.references=[];return J}};t0.emphasis={filter:["em","i"],replacement:function(Z,J,Q){if(!Z.trim())return"";return Q.emDelimiter+Z+Q.emDelimiter}};t0.strong={filter:["strong","b"],replacement:function(Z,J,Q){if(!Z.trim())return"";return Q.strongDelimiter+Z+Q.strongDelimiter}};t0.code={filter:function(Z){var J=Z.previousSibling||Z.nextSibling,Q=Z.parentNode.nodeName==="PRE"&&!J;return Z.nodeName==="CODE"&&!Q},replacement:function(Z){if(!Z)return"";Z=Z.replace(/\r?\n|\r/g," ");var J=/^`|^ .*?[^ ].* $|`$/.test(Z)?" ":"",Q="`",X=Z.match(/`+/gm)||[];while(X.indexOf(Q)!==-1)Q=Q+"`";return Q+J+Z+J+Q}};t0.image={filter:"img",replacement:function(Z,J){var Q=Q$(p8(J.getAttribute("alt"))),X=K1(J.getAttribute("src")||""),z=p8(J.getAttribute("title")),W=z?' "'+F1(z)+'"':"";return X?"":""}};function p8(Z){return Z?Z.replace(/(\n+\s*)+/g,`
|
|
85
|
+
`):""}function K1(Z){var J=Z.replace(/([<>()])/g,"\\$1");return J.indexOf(" ")>=0?"<"+J+">":J}function F1(Z){return Z.replace(/"/g,"\\\"")}function X$(Z){this.options=Z,this._keep=[],this._remove=[],this.blankRule={replacement:Z.blankReplacement},this.keepReplacement=Z.keepReplacement,this.defaultRule={replacement:Z.defaultReplacement},this.array=[];for(var J in Z.rules)this.array.push(Z.rules[J])}X$.prototype={add:function(Z,J){this.array.unshift(J)},keep:function(Z){this._keep.unshift({filter:Z,replacement:this.keepReplacement})},remove:function(Z){this._remove.unshift({filter:Z,replacement:function(){return""}})},forNode:function(Z){if(Z.isBlank)return this.blankRule;var J;if(J=z1(this.array,Z,this.options))return J;if(J=z1(this._keep,Z,this.options))return J;if(J=z1(this._remove,Z,this.options))return J;return this.defaultRule},forEach:function(Z){for(var J=0;J<this.array.length;J++)Z(this.array[J],J)}};function z1(Z,J,Q){for(var X=0;X<Z.length;X++){var z=Z[X];if(xz(z,J,Q))return z}return}function xz(Z,J,Q){var X=Z.filter;if(typeof X==="string"){if(X===J.nodeName.toLowerCase())return!0}else if(Array.isArray(X)){if(X.indexOf(J.nodeName.toLowerCase())>-1)return!0}else if(typeof X==="function"){if(X.call(Z,J,Q))return!0}else throw TypeError("`filter` needs to be a string, array, or function")}function mz(Z){var{element:J,isBlock:Q,isVoid:X}=Z,z=Z.isPre||function(K){return K.nodeName==="PRE"};if(!J.firstChild||z(J))return;var W=null,G=!1,q=null,H=l4(q,J,z);while(H!==J){if(H.nodeType===3||H.nodeType===4){var Y=H.data.replace(/[ \r\n\t]+/g," ");if((!W||/ $/.test(W.data))&&!G&&Y[0]===" ")Y=Y.substr(1);if(!Y){H=W1(H);continue}H.data=Y,W=H}else if(H.nodeType===1){if(Q(H)||H.nodeName==="BR"){if(W)W.data=W.data.replace(/ $/,"");W=null,G=!1}else if(X(H)||z(H))W=null,G=!0;else if(W)G=!1}else{H=W1(H);continue}var F=l4(q,H,z);q=H,H=F}if(W){if(W.data=W.data.replace(/ $/,""),!W.data)W1(W)}}function W1(Z){var J=Z.nextSibling||Z.parentNode;return Z.parentNode.removeChild(Z),J}function l4(Z,J,Q){if(Z&&Z.parentNode===J||Q(J))return J.nextSibling||J.parentNode;return J.firstChild||J.nextSibling||J.parentNode}var U1=typeof window<"u"?window:{};function uz(){var Z=U1.DOMParser,J=!1;try{if(new Z().parseFromString("","text/html"))J=!0}catch(Q){}return J}function Ez(){var Z=function(){};if(pz())Z.prototype.parseFromString=function(J){var Q=new window.ActiveXObject("htmlfile");return Q.designMode="on",Q.open(),Q.write(J),Q.close(),Q};else Z.prototype.parseFromString=function(J){var Q=document.implementation.createHTMLDocument("");return Q.open(),Q.write(J),Q.close(),Q};return Z}function pz(){var Z=!1;try{document.implementation.createHTMLDocument("").open()}catch(J){if(U1.ActiveXObject)Z=!0}return Z}var cz=uz()?U1.DOMParser:Ez();function dz(Z,J){var Q;if(typeof Z==="string"){var X=iz().parseFromString('<x-turndown id="turndown-root">'+Z+"</x-turndown>","text/html");Q=X.getElementById("turndown-root")}else Q=Z.cloneNode(!0);return mz({element:Q,isBlock:H1,isVoid:Z$,isPre:J.preformattedCode?az:null}),Q}var G1;function iz(){return G1=G1||new cz,G1}function az(Z){return Z.nodeName==="PRE"||Z.nodeName==="CODE"}function nz(Z,J){return Z.isBlock=H1(Z),Z.isCode=Z.nodeName==="CODE"||Z.parentNode.isCode,Z.isBlank=lz(Z),Z.flankingWhitespace=rz(Z,J),Z}function lz(Z){return!Z$(Z)&&!jz(Z)&&/^\s*$/i.test(Z.textContent)&&!bz(Z)&&!hz(Z)}function rz(Z,J){if(Z.isBlock||J.preformattedCode&&Z.isCode)return{leading:"",trailing:""};var Q=oz(Z.textContent);if(Q.leadingAscii&&r4("left",Z,J))Q.leading=Q.leadingNonAscii;if(Q.trailingAscii&&r4("right",Z,J))Q.trailing=Q.trailingNonAscii;return{leading:Q.leading,trailing:Q.trailing}}function oz(Z){var J=Z.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);return{leading:J[1],leadingAscii:J[2],leadingNonAscii:J[3],trailing:J[4],trailingNonAscii:J[5],trailingAscii:J[6]}}function r4(Z,J,Q){var X,z,W;if(Z==="left")X=J.previousSibling,z=/ $/;else X=J.nextSibling,z=/^ /;if(X){if(X.nodeType===3)W=z.test(X.nodeValue);else if(Q.preformattedCode&&X.nodeName==="CODE")W=!1;else if(X.nodeType===1&&!H1(X))W=z.test(X.textContent)}return W}var tz=Array.prototype.reduce;function pZ(Z){if(!(this instanceof pZ))return new pZ(Z);var J={rules:t0,headingStyle:"setext",hr:"* * *",bulletListMarker:"*",codeBlockStyle:"indented",fence:"```",emDelimiter:"_",strongDelimiter:"**",linkStyle:"inlined",linkReferenceStyle:"full",br:" ",preformattedCode:!1,blankReplacement:function(Q,X){return X.isBlock?`
|
|
58
86
|
|
|
59
87
|
`:""},keepReplacement:function(Q,X){return X.isBlock?`
|
|
60
88
|
|
|
@@ -64,58 +92,56 @@ https://github.com/highlightjs/highlight.js/issues/2277`),z0=g,m=I;if(h===void 0
|
|
|
64
92
|
|
|
65
93
|
`+Q+`
|
|
66
94
|
|
|
67
|
-
`:Q}};this.options=
|
|
95
|
+
`:Q}};this.options=fz({},J,Z),this.rules=new X$(this.options)}pZ.prototype={turndown:function(Z){if(!ZW(Z))throw TypeError(Z+" is not a string, or an element/document/fragment node.");if(Z==="")return"";var J=z$.call(this,new dz(Z,this.options));return sz.call(this,J)},use:function(Z){if(Array.isArray(Z))for(var J=0;J<Z.length;J++)this.use(Z[J]);else if(typeof Z==="function")Z(this);else throw TypeError("plugin must be a Function or an Array of Functions");return this},addRule:function(Z,J){return this.rules.add(Z,J),this},keep:function(Z){return this.rules.keep(Z),this},remove:function(Z){return this.rules.remove(Z),this},escape:function(Z){return Q$(Z)}};function z$(Z){var J=this;return tz.call(Z.childNodes,function(Q,X){X=new nz(X,J.options);var z="";if(X.nodeType===3)z=X.isCode?X.nodeValue:J.escape(X.nodeValue);else if(X.nodeType===1)z=ez.call(J,X);return W$(Q,z)},"")}function sz(Z){var J=this;return this.rules.forEach(function(Q){if(typeof Q.append==="function")Z=W$(Z,Q.append(J.options))}),Z.replace(/^[\t\r\n]+/,"").replace(/[\t\r\n\s]+$/,"")}function ez(Z){var J=this.rules.forNode(Z),Q=z$.call(this,Z),X=Z.flankingWhitespace;if(X.leading||X.trailing)Q=Q.trim();return X.leading+J.replacement(Q,Z,this.options)+X.trailing}function W$(Z,J){var Q=t4(Z),X=o4(J),z=Math.max(Z.length-Q.length,J.length-X.length),W=`
|
|
68
96
|
|
|
69
|
-
`.substring(0,z);return Q+
|
|
97
|
+
`.substring(0,z);return Q+W+X}function ZW(Z){return Z!=null&&(typeof Z==="string"||Z.nodeType&&(Z.nodeType===1||Z.nodeType===9||Z.nodeType===11))}var G$=/highlight-(?:text|source)-([a-z0-9]+)/;function JW(Z){Z.addRule("highlightedCodeBlock",{filter:function(J){var Q=J.firstChild;return J.nodeName==="DIV"&&G$.test(J.className)&&Q&&Q.nodeName==="PRE"},replacement:function(J,Q,X){var z=Q.className||"",W=(z.match(G$)||[null,""])[1];return`
|
|
70
98
|
|
|
71
|
-
`+X.fence+
|
|
99
|
+
`+X.fence+W+`
|
|
72
100
|
`+Q.firstChild.textContent+`
|
|
73
101
|
`+X.fence+`
|
|
74
102
|
|
|
75
|
-
`}})}function
|
|
103
|
+
`}})}function $W(Z){Z.addRule("strikethrough",{filter:["del","s","strike"],replacement:function(J){return"~"+J+"~"}})}var QW=Array.prototype.indexOf,XW=Array.prototype.every,NZ={};NZ.tableCell={filter:["th","td"],replacement:function(Z,J){return q$(Z,J)}};NZ.tableRow={filter:"tr",replacement:function(Z,J){var Q="",X={left:":--",right:"--:",center:":-:"};if(L1(J))for(var z=0;z<J.childNodes.length;z++){var W="---",G=(J.childNodes[z].getAttribute("align")||"").toLowerCase();if(G)W=X[G]||W;Q+=q$(W,J.childNodes[z])}return`
|
|
76
104
|
`+Z+(Q?`
|
|
77
|
-
`+Q:"")}};
|
|
105
|
+
`+Q:"")}};NZ.table={filter:function(Z){return Z.nodeName==="TABLE"&&L1(Z.rows[0])},replacement:function(Z){return Z=Z.replace(`
|
|
78
106
|
|
|
79
107
|
`,`
|
|
80
108
|
`),`
|
|
81
109
|
|
|
82
110
|
`+Z+`
|
|
83
111
|
|
|
84
|
-
`}};
|
|
112
|
+
`}};NZ.tableSection={filter:["thead","tbody","tfoot"],replacement:function(Z){return Z}};function L1(Z){var J=Z.parentNode;return J.nodeName==="THEAD"||J.firstChild===Z&&(J.nodeName==="TABLE"||zW(J))&&XW.call(Z.childNodes,function(Q){return Q.nodeName==="TH"})}function zW(Z){var J=Z.previousSibling;return Z.nodeName==="TBODY"&&(!J||J.nodeName==="THEAD"&&/^\s*$/i.test(J.textContent))}function q$(Z,J){var Q=QW.call(J.parentNode.childNodes,J),X=" ";if(Q===0)X="| ";return X+Z+" |"}function WW(Z){Z.keep(function(Q){return Q.nodeName==="TABLE"&&!L1(Q.rows[0])});for(var J in NZ)Z.addRule(J,NZ[J])}function GW(Z){Z.addRule("taskListItems",{filter:function(J){return J.type==="checkbox"&&J.parentNode.nodeName==="LI"},replacement:function(J,Q){return(Q.checked?"[x]":"[ ]")+" "}})}function H$(Z){Z.use([JW,$W,WW,GW])}function qW(Z){let J=Z.match(/(?:language|lang)-(\S+)/);return J?J[1]:""}function HW(){let Z=new pZ({codeBlockStyle:"fenced",headingStyle:"atx",bulletListMarker:"-",emDelimiter:"*",strongDelimiter:"**"});return Z.use(H$),Z.remove(["style","script","title"]),Z.escape=(J)=>J,Z.addRule("fencedCodeWithLang",{filter:(J)=>J.nodeName==="PRE"&&!!J.querySelector("code"),replacement:(J,Q)=>{let X=Q.querySelector("code"),z=(X?.textContent??Q.textContent??"").replace(/\n$/,""),W=X?qW(X.className):"",G="```";return`
|
|
85
113
|
|
|
86
|
-
\`\`\`${
|
|
114
|
+
\`\`\`${W}
|
|
87
115
|
${z}
|
|
88
116
|
\`\`\`
|
|
89
117
|
|
|
90
|
-
`}}),Z}var $
|
|
118
|
+
`}}),Z}var Y$=null;function K$(Z){return Y$??=HW(),Y$.turndown(Z)}var YW=new Set(["mp4","webm","mov","m4v","ogv","mkv","ogg"]),KW=new Set(["mp3","wav","m4a","aac","flac","opus","oga","weba"]);function B1(Z){let J=(Z||"").toLowerCase();if(J.startsWith("image/"))return"image";if(J.startsWith("video/"))return"video";if(J.startsWith("audio/"))return"audio";return"file"}function FW(Z){let J=Z.split(/[?#]/,1)[0]??Z,Q=J.slice(J.lastIndexOf("/")+1),X=Q.lastIndexOf(".");return X>=0?Q.slice(X+1).toLowerCase():""}function UW(Z){if(YW.has(Z))return"video";if(KW.has(Z))return"audio";return"image"}function LW(Z){let J=Z.indexOf("#"),Q=J>=0?Z.slice(J):"",X=J>=0?Z.slice(0,J):Z,z=X.indexOf("?");if(z<0)return{src:Z};let W=X.slice(0,z),G,q=[];for(let H of X.slice(z+1).split("&").filter(Boolean)){let Y=H.match(/^w=(\d+)$/);if(Y)G=parseInt(Y[1],10);else q.push(H)}return{src:W+(q.length?"?"+q.join("&"):"")+Q,width:G}}function PW(Z){let J=Z.src??"";if(Z.type!=="image"||!Z.width||Z.width<=0)return J;return J+(J.includes("?")?"&":"?")+"w="+Math.round(Z.width)}function F$(Z){return Z.replace(/[[\]()]/g,"").trim()}function BW(Z){let J=Z.trim(),Q=J.match(/^!\[([^\]]*)\]\(([^\s)]+)\)$/);if(Q){let{src:X,width:z}=LW(Q[2]),W=UW(FW(X)),G={type:W,content:"",src:X,name:Q[1]};if(W==="image"&&z)G.width=z;return G}if(Q=J.match(/^\[([^\]]*)\]\(([^\s)]+)(?:\s+"([^"]*)")?\)$/),Q&&Q[2].startsWith("/blob/")){let X={type:"file",content:"",src:Q[2],name:Q[1]};if(Q[3]!=null&&/^\d+$/.test(Q[3]))X.size=parseInt(Q[3],10);return X}return null}function U$(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}var OW=0;function W9(){return`blk_${Date.now().toString(36)}_${(OW++).toString(36)}`}var AW=new Set(["bullet","numbered","todo"]),NW=new Set(["h1","h2","h3","h4","h5","h6"]),T9={fenceOpen:/^\s*(`{3,}|~{3,})\s*([^\s`]*)?.*$/,h:/^(#{1,6})\s+(.*)$/,todo:/^\s*[-*+]\s+\[([ xX])\]\s*(.*)$/,bullet:/^\s*[-*+]\s+(.*)$/,numbered:/^\s*(\d+)[.)]\s+(.*)$/,quote:/^>\s?(.*)$/,divider:/^\s*(?:-{3,}|\*{3,}|_{3,})\s*$/};function Q9(Z){return AW.has(Z)}function wZ(Z){return NW.has(Z)}function wW(){return[["",""],["",""]]}function O1(Z,J,Q){if(Z.type=J,Z.content=Q.content??"",J==="todo")Z.checked=Q.checked??!1;else delete Z.checked;if(J==="code")Z.lang=Q.lang??"";else delete Z.lang;if(J==="numbered"&&Q.start!=null&&Q.start>1)Z.start=Q.start;else delete Z.start;if(J==="table")Z.rows=Q.rows?Q.rows.map((X)=>[...X]):wW(),Z.align=Q.align?[...Q.align]:Array(Z.rows[0].length).fill(null);else delete Z.rows,delete Z.align;if(U$(J)||J==="uploading"){if(Z.src=Q.src??"",Q.name!=null)Z.name=Q.name;else delete Z.name;if(J==="image"&&Q.width)Z.width=Q.width;else delete Z.width;if(J==="file"&&Q.size!=null)Z.size=Q.size;else delete Z.size}else delete Z.src,delete Z.name,delete Z.width,delete Z.size}function t9(Z,J={}){let Q={id:W9(),type:Z,content:""};if(O1(Q,Z,J),Q9(Z)&&J.children?.length)Q.children=J.children;return Q}function L$(Z){let J=d8(Z.filter((Q)=>!o9(Q)));return Z.map((Q)=>y$(Q,0,J.get(Q.id)??1).join(`
|
|
91
119
|
`)).join(`
|
|
92
|
-
`)}function
|
|
120
|
+
`)}function cZ(Z){let J=(Z??"").replace(/\r\n?/g,`
|
|
93
121
|
`),Q=J?J.split(`
|
|
94
|
-
`):[],X=
|
|
95
|
-
`)}function
|
|
96
|
-
`)
|
|
97
|
-
`)},next:
|
|
98
|
-
`)},next:z}}function
|
|
99
|
-
`).
|
|
100
|
-
`).map((
|
|
101
|
-
`).map((
|
|
102
|
-
|
|
103
|
-
`).replace(/\n$/,"")}function v7(Z){let J="";return Z.childNodes.forEach((Q)=>{if(Q.nodeType===Node.TEXT_NODE){J+=(Q.textContent??"").replace(/\u00a0/g," ");return}if(!(Q instanceof HTMLElement))return;let X=Q.tagName.toLowerCase();if(X==="img"){let G=Q.getAttribute("src")||"";J+=G?``:"";return}let z=v7(Q);if(X==="br")J+=`
|
|
104
|
-
|
|
122
|
+
`):[],X=N$(Q,0,0).blocks;P$(X);let z=J.length-J.replace(/\n+$/,"").length;for(let W=1;W<z;W++)X.push({id:W9(),type:"p",content:""});return X}function o9(Z){return Z.type==="p"&&Z.content.trim()===""&&!Z.children?.length}function d8(Z){let J=new Map,Q=null;for(let X of Z)if(X.type==="numbered")Q=Q===null?Math.max(1,X.start??1):Q+1,J.set(X.id,Q);else Q=null;return J}function P$(Z){let J=!0;for(let Q of Z){if(Q.type==="numbered")if(J){if((Q.start??1)<=1)delete Q.start;J=!1}else delete Q.start;else J=!0;if(Q.children)P$(Q.children)}}function B$(Z){return O$(Z,0,!0).join(`
|
|
123
|
+
`)}function O$(Z,J,Q){let X=d8(Z.filter((q)=>!o9(q))),z=[],W=null,G=0;for(let q of Z){if(o9(q)){if(z.length)G++;continue}if(!_$(q))continue;if(z.length){let H=jW(W,q)||G>0?1:0;for(let Y=0;Y<H+G;Y++)z.push("")}z.push(...y$(q,J,X.get(q.id)??1)),W=q,G=0}if(z.length&&G>0)for(let q=0;q<G+(Q?1:0);q++)z.push("");return z}function A1(Z,J){if(J===" "){let X=Z.match(/^(#{1,6}) $/);if(X)return{type:`h${X[1].length}`,content:""};if(Z==="> ")return{type:"quote",content:""};if(/^[-*+] $/.test(Z))return{type:"bullet",content:""};let z=Z.match(/^(\d+)[.)] $/);if(z)return{type:"numbered",content:"",start:parseInt(z[1],10)};let W=Z.match(/^[-*+]\s+\[([ xX])\]\s*$/);if(W)return{type:"todo",content:"",checked:W[1].toLowerCase()==="x"};return null}let Q=Z.match(/^```([A-Za-z0-9_+.#-]*)$/);if(Q)return{type:"code",content:"",lang:N1(Q[1]??"")};return null}function A$(Z){let J=Z.match(/^\[([ xX])\]$/);return J?{checked:J[1].toLowerCase()==="x"}:null}function N$(Z,J,Q){let X=[],z=J,W=0;while(z<Z.length){let G=Z[z];if(G.trim()===""){let H=z;while(H<Z.length&&Z[H].trim()==="")H++;if(H>=Z.length||g9(Z[H])<Q)break;W+=H-z,z=H;continue}if(g9(G)<Q)break;if(X.length&&W>1)for(let H=1;H<W;H++)X.push({id:W9(),type:"p",content:""});W=0;let q=CW(Z,z,Q)??kW(Z,z,Q)??MW(Z,z,Q);X.push(q.block),z=q.next}return{blocks:X,next:z}}function CW(Z,J,Q){let X=M$(Z[J],Q);if(!X)return null;let z={id:W9(),type:X.type,content:X.content};if(X.type==="todo")z.checked=!!X.checked;if(X.type==="numbered"&&X.num!=null)z.start=X.num;let W=N$(Z,J+1,X.indent+2);if(W.blocks.length)z.children=W.blocks;return{block:z,next:W.next}}function MW(Z,J,Q){let X=B9(Z[J],Q),z=X.match(T9.fenceOpen);if(z){let q=yW(Z,J,Q,z);if(q)return q}if(T9.divider.test(X.trim()))return{block:{id:W9(),type:"divider",content:""},next:J+1};let W=X.match(T9.h);if(W)return{block:{id:W9(),type:`h${W[1].length}`,content:W[2]},next:J+1};if(T9.quote.test(X))return _W(Z,J,Q);let G=BW(X);if(G)return{block:{id:W9(),...G},next:J+1};return fW(Z,J,Q)}function yW(Z,J,Q,X){let z=X[1],W=[],G=J+1,q=!1;for(;G<Z.length;G++){let Y=Z[G],F=B9(Y,Q);if(hW(F,z[0],z.length)){q=!0,G++;break}W.push(F)}if(!q)return null;let H=N1(X[2]??"");if(H==="mh-html")return{block:{id:W9(),type:"html",content:W.join(`
|
|
124
|
+
`)},next:G};return{block:{id:W9(),type:"code",content:W.join(`
|
|
125
|
+
`),lang:H},next:G}}function _W(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||g9(W)<Q)break;let G=B9(W,Q).match(T9.quote);if(!G)break;X.push(G[1]??"")}return{block:{id:W9(),type:"quote",content:X.join(`
|
|
126
|
+
`)},next:z}}var vW=/^\s*:?-+:?\s*$/;function w$(Z,J,Q){let X=Z[J],z=Z[J+1];if(X==null||z==null)return!1;if(g9(X)<Q||g9(z)<Q)return!1;let W=B9(X,Q),G=B9(z,Q);if(!W.includes("|")||!G.includes("|"))return!1;let q=c8(G);return q.length>0&&q.every((H)=>vW.test(H))}function c8(Z){let J=[],Q="";for(let X=0;X<Z.length;X++){let z=Z[X];if(z==="\\"&&Z[X+1]==="|"){Q+="|",X++;continue}if(z==="|"){J.push(Q),Q="";continue}Q+=z}if(J.push(Q),J.length&&J[0].trim()==="")J.shift();if(J.length&&J[J.length-1].trim()==="")J.pop();return J.map((X)=>X.trim())}function TW(Z){let J=Z.trim(),Q=J.startsWith(":"),X=J.endsWith(":");if(Q&&X)return"center";if(X)return"right";if(Q)return"left";return null}function P1(Z,J){let Q=Z.slice(0,J);while(Q.length<J)Q.push("");return Q}function kW(Z,J,Q){if(!w$(Z,J,Q))return null;let X=c8(B9(Z[J],Q)),z=Math.max(1,X.length),W=c8(B9(Z[J+1],Q)).map(TW),G=[P1(X,z)],q=J+2;for(;q<Z.length;q++){let H=Z[q];if(H.trim()===""||g9(H)<Q)break;let Y=B9(H,Q);if(!Y.includes("|"))break;G.push(P1(c8(Y),z))}while(W.length<z)W.push(null);return W.length=z,{block:{id:W9(),type:"table",content:"",rows:G,align:W},next:q}}function RW(Z){switch(Z){case"left":return":---";case"center":return":---:";case"right":return"---:";default:return"---"}}function IW(Z,J){let Q=" ".repeat(J),X=Z.rows??[],z=Math.max(1,...X.map((F)=>F.length)),W=Z.align??[],G=(F)=>F.replace(/\|/g,"\\|").replace(/\n/g," "),q=(F)=>`${Q}| ${P1(F,z).map(G).join(" | ")} |`,H=`${Q}| ${Array.from({length:z},(F,K)=>RW(W[K]??null)).join(" | ")} |`,Y=X[0]??Array.from({length:z},()=>"");return[q(Y),H,...X.slice(1).map(q)]}var C$=/^\\*(?:`{3,}|~{3,})/;function SW(Z){return C$.test(Z)?`\\${Z}`:Z}function VW(Z){return Z.startsWith("\\")&&C$.test(Z.slice(1))?Z.slice(1):Z}function fW(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||g9(W)<Q)break;if(X.length&&(gW(W,Q)||w$(Z,z,Q)))break;X.push(VW(B9(W,Q)))}return{block:{id:W9(),type:"p",content:X.join(`
|
|
127
|
+
`)},next:z}}function gW(Z,J){if(M$(Z,J))return!0;let Q=B9(Z,J);return!!Q.match(T9.fenceOpen)||!!Q.match(T9.h)||T9.divider.test(Q.trim())||T9.quote.test(Q)}function M$(Z,J){let Q=g9(Z);if(Q<J)return null;let X=B9(Z,Q),z=X.match(/^[-*+]\s+\[([ xX])\]\s*(.*)$/);if(z)return{indent:Q,type:"todo",checked:z[1].toLowerCase()==="x",content:z[2]};if(z=X.match(/^(\d+)[.)](?:\s+(.*))?$/),z)return{indent:Q,type:"numbered",content:z[2]??"",num:parseInt(z[1],10)};if(z=X.match(/^[-*+](?:\s+(.*))?$/),z)return{indent:Q,type:"bullet",content:z[1]??""};return null}function y$(Z,J,Q){let X=" ".repeat(J);if(wZ(Z.type))return[`${X}${"#".repeat(Number(Z.type.slice(1)))} ${Z.content}`];switch(Z.type){case"bullet":case"numbered":case"todo":return bW(Z,J,Q);case"quote":return Z.content.split(`
|
|
128
|
+
`).map((z)=>`${X}>${z?` ${z}`:""}`);case"code":{let z=`${X}\`\`\`${Z.lang?N1(Z.lang):""}`,W=Z.content.split(`
|
|
129
|
+
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"table":return IW(Z,J);case"divider":return[`${X}---`];case"image":case"video":case"audio":return[`${X}})`];case"file":{let z=Z.size!=null?` "${Z.size}"`:"";return[`${X}[${F$(Z.name??"文件")}](${Z.src??""}${z})`]}case"html":{let z=`${X}\`\`\`mh-html`,W=Z.content.split(`
|
|
130
|
+
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"uploading":return[];default:return Z.content.split(`
|
|
131
|
+
`).map((z)=>`${X}${SW(z)}`)}}function bW(Z,J,Q){let X=" ".repeat(J),z=Z.type==="numbered"?`${Q}. `:Z.type==="todo"?`- [${Z.checked?"x":" "}] `:"- ",W=[`${X}${z}${Z.content}`],G=Z.children??[],q=G.find((H)=>!o9(H)&&_$(H));if(q){if(!Q9(q.type)&&Z.content.trim()!=="")W.push("");W.push(...O$(G,J+2,!1))}return W}function jW(Z,J){if(!Z)return!1;return!(Q9(Z.type)&&Q9(J.type))}function _$(Z){if(Z.type==="divider")return!0;if(Q9(Z.type))return!0;if(Z.type==="code")return Z.content.trim()!==""||!!Z.lang?.trim();if(Z.type==="table")return(Z.rows??[]).some((J)=>J.some((Q)=>Q.trim()!==""));if(Z.type==="uploading")return!1;if(U$(Z.type))return!!Z.src;if(Z.type==="html")return Z.content.trim()!=="";return Z.content.trim()!==""}function g9(Z){let J=0;for(let Q of Z)if(Q===" ")J++;else if(Q==="\t")J+=4;else break;return J}function B9(Z,J){let Q=0,X=0;for(;X<Z.length&&Q<J;X++){let z=Z[X];if(z===" ")Q++;else if(z==="\t")Q+=4;else break}return Z.slice(X)}function hW(Z,J,Q){let X=Z.trim();if(!X||X[0]!==J)return!1;for(let z of X)if(z!==J)return!1;return X.length>=Q}function N1(Z){return Z.trim().replace(/[^A-Za-z0-9_+.#-]/g,"")}var w1=[{id:"",label:"纯文本"},{id:"bash",label:"Bash"},{id:"shell",label:"Shell"},{id:"javascript",label:"JavaScript"},{id:"typescript",label:"TypeScript"},{id:"json",label:"JSON"},{id:"python",label:"Python"},{id:"go",label:"Go"},{id:"rust",label:"Rust"},{id:"java",label:"Java"},{id:"c",label:"C"},{id:"cpp",label:"C++"},{id:"csharp",label:"C#"},{id:"sql",label:"SQL"},{id:"yaml",label:"YAML"},{id:"xml",label:"HTML / XML"},{id:"css",label:"CSS"},{id:"scss",label:"SCSS"},{id:"markdown",label:"Markdown"},{id:"php",label:"PHP"},{id:"ruby",label:"Ruby"},{id:"swift",label:"Swift"},{id:"kotlin",label:"Kotlin"},{id:"objectivec",label:"Objective-C"},{id:"perl",label:"Perl"},{id:"lua",label:"Lua"},{id:"makefile",label:"Makefile"},{id:"ini",label:"INI / TOML"},{id:"diff",label:"Diff"}],C1=[{type:"p",ic:"text",t:"文本",d:"普通段落"},{type:"h1",ic:"heading",t:"标题 1",d:"大号标题"},{type:"h2",ic:"heading",t:"标题 2",d:"中号标题"},{type:"h3",ic:"heading",t:"标题 3",d:"小号标题"},{type:"bullet",ic:"list",t:"无序列表",d:"项目符号"},{type:"numbered",ic:"numList",t:"有序列表",d:"编号列表"},{type:"todo",ic:"checkbox",t:"待办清单",d:"复选项"},{type:"quote",ic:"quote",t:"引用",d:"引用块"},{type:"code",ic:"code",t:"代码",d:"代码块"},{type:"table",ic:"table",t:"表格",d:"插入表格"},{type:"divider",ic:"minus",t:"分隔线",d:"水平分隔"},{type:"image",ic:"image",t:"图片",d:"上传或拖入图片"},{type:"video",ic:"video",t:"视频",d:"上传视频文件"},{type:"audio",ic:"audio",t:"音频",d:"上传音频文件"},{type:"file",ic:"file",t:"文件",d:"上传任意文件"},{type:"html",ic:"htmlTag",t:"HTML",d:"嵌入并渲染 HTML"}];function dZ(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}function DW(Z){if(Z==null||!isFinite(Z))return"";if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(0)} KB`;if(Z<1073741824)return`${(Z/1048576).toFixed(1)} MB`;return`${(Z/1073741824).toFixed(2)} GB`}function M1({icon:Z,name:J,onRetry:Q}){return $("div",{class:"void-block void-unavailable",children:[$(g,{name:Z,cls:"ico"},void 0,!1,void 0,this),$("span",{class:"vu-meta",children:[$("span",{class:"vu-name",children:J||"媒体"},void 0,!1,void 0,this),$("span",{class:"vu-sub",children:"字节未同步到本设备或加载失败"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"vu-retry",onClick:Q,onMouseDown:(X)=>X.stopPropagation(),children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this)," 重试"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function v$({block:Z}){return $("div",{class:"void-block void-uploading",children:[$(g,{name:"spinner",cls:"ico spin"},void 0,!1,void 0,this),$("span",{class:"vu-name",children:Z.name||"上传中…"},void 0,!1,void 0,this),$("span",{class:"vu-sub",children:"上传中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function T$({block:Z,selected:J,onResize:Q,onPreview:X}){let z=W0(null),W=W0(null),[G,q]=R(Z.width),H=W0(Z.width),[Y,F]=R(!1),[K,N]=R(0);o(()=>{q(Z.width),H.current=Z.width},[Z.width]),o(()=>F(!1),[Z.src]);let U=(O,C)=>{O.preventDefault(),O.stopPropagation();let f=W.current;if(!f)return;let h=O.clientX,_=f.offsetWidth,M=z.current?.closest(".doc")?.clientWidth??1200,k=(L)=>{let P=L.clientX-h,w=Math.max(60,Math.min(C==="r"?_+P:_-P,M));H.current=Math.round(w),q(H.current)},T=()=>{window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",T),Q(H.current)};window.addEventListener("mousemove",k),window.addEventListener("mouseup",T)};if(Y)return $(M1,{icon:"image",name:Z.name,onRetry:()=>{N((O)=>O+1),F(!1)}},void 0,!1,void 0,this);return $("div",{ref:z,class:"void-block void-image"+(J?" selected":""),style:{width:G?`${G}px`:void 0},onDblClick:X,children:[$("img",{ref:W,src:Z.src,alt:Z.name??"",loading:"lazy",draggable:!1,title:"双击预览 / 标注",onError:()=>F(!0)},K,!1,void 0,this),$("button",{class:"void-expand",title:"预览",onClick:X,onMouseDown:(O)=>O.stopPropagation(),children:$(g,{name:"maximize",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),J&&$(r,{children:[$("span",{class:"img-handle h-l",onMouseDown:(O)=>U(O,"l")},void 0,!1,void 0,this),$("span",{class:"img-handle h-r",onMouseDown:(O)=>U(O,"r")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function k$({block:Z}){let[J,Q]=R(!1),[X,z]=R(0);if(o(()=>Q(!1),[Z.src]),J)return $(M1,{icon:"video",name:Z.name,onRetry:()=>{z((W)=>W+1),Q(!1)}},void 0,!1,void 0,this);return $("div",{class:"void-block void-media void-video",children:$("video",{src:Z.src,controls:!0,preload:"metadata",onError:()=>Q(!0)},X,!1,void 0,this)},void 0,!1,void 0,this)}function R$({block:Z}){let[J,Q]=R(!1),[X,z]=R(0);if(o(()=>Q(!1),[Z.src]),J)return $(M1,{icon:"audio",name:Z.name,onRetry:()=>{z((W)=>W+1),Q(!1)}},void 0,!1,void 0,this);return $("div",{class:"void-block void-media void-audio",children:[Z.name&&$("div",{class:"void-audio-name",children:Z.name},void 0,!1,void 0,this),$("audio",{src:Z.src,controls:!0,preload:"metadata",onError:()=>Q(!0)},X,!1,void 0,this)]},void 0,!0,void 0,this)}function I$({block:Z}){let J=Z.name||"文件",Q=J.includes(".")?J.slice(J.lastIndexOf(".")+1).toUpperCase():"";return $("a",{class:"void-block void-file",href:Z.src,download:J,target:"_blank",rel:"noreferrer",onMouseDown:(X)=>X.stopPropagation(),children:[$("span",{class:"file-glyph",children:[$(g,{name:"file",cls:"ico"},void 0,!1,void 0,this),Q&&$("span",{class:"file-ext",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"file-meta",children:[$("span",{class:"file-name",children:J},void 0,!1,void 0,this),$("span",{class:"file-sub",children:DW(Z.size)||"下载文件"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"file-dl",children:$(g,{name:"download",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var xW="<script>(function(){function r(){try{parent.postMessage({__mhHtmlHeight:document.documentElement.scrollHeight},'*')}catch(e){}}try{new ResizeObserver(r).observe(document.documentElement)}catch(e){}addEventListener('load',r);setTimeout(r,60);setTimeout(r,400)})();</script>";function mW(Z){return`<!doctype html><html><head><meta charset="utf-8"><base target="_blank"><style>html,body{margin:0;padding:0;color-scheme:light dark;font-family:system-ui,-apple-system,sans-serif}</style></head><body>${Z}${xW}</body></html>`}function S$({block:Z,selected:J,onChange:Q}){let[X,z]=R(!Z.content.trim()),[W,G]=R(120),q=W0(null),H=W0(null);return o(()=>{if(X)H.current?.focus()},[X]),o(()=>{let Y=(F)=>{if(q.current&&F.source===q.current.contentWindow){let K=Number(F.data?.__mhHtmlHeight);if(K>0)G(Math.max(48,Math.min(Math.ceil(K),4000)))}};return window.addEventListener("message",Y),()=>window.removeEventListener("message",Y)},[]),$("div",{class:"void-block void-html"+(J?" selected":""),children:[$("div",{class:"html-bar",children:[$("span",{class:"html-tag",children:[$(g,{name:"htmlTag",cls:"ico sm"},void 0,!1,void 0,this)," HTML"]},void 0,!0,void 0,this),$("button",{class:"html-toggle"+(X?" on":""),title:X?"预览渲染":"编辑源码",onMouseDown:(Y)=>Y.stopPropagation(),onClick:()=>z((Y)=>!Y),children:[$(g,{name:X?"eye":"code",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:X?"预览":"源码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X?$("textarea",{ref:H,class:"html-source code-input",spellcheck:!1,placeholder:"<!-- 在此粘贴 / 编写 HTML,将沙箱渲染 -->",value:Z.content,onMouseDown:(Y)=>Y.stopPropagation(),onInput:(Y)=>Q(Y.currentTarget.value)},void 0,!1,void 0,this):Z.content.trim()?$("iframe",{ref:q,class:"html-frame",title:"HTML 预览",sandbox:"allow-scripts allow-popups",srcdoc:mW(Z.content),style:{height:`${W}px`}},void 0,!1,void 0,this):$("div",{class:"html-empty",onClick:()=>z(!0),children:"空的 HTML 块 — 点此添加内容"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var V$=["#ef4444","#f59e0b","#22c55e","#3b82f6","#111827","#ffffff"],y1=3,uW=20;function _1(Z,J,Q){if(Z.strokeStyle=J.color,Z.fillStyle=J.color,Z.lineWidth=y1*Q,Z.lineJoin="round",Z.lineCap="round",J.tool==="rect"){let X=Math.min(J.x1,J.x2)*Q,z=Math.min(J.y1,J.y2)*Q;Z.strokeRect(X,z,Math.abs(J.x2-J.x1)*Q,Math.abs(J.y2-J.y1)*Q)}else if(J.tool==="arrow"){let X=J.x1*Q,z=J.y1*Q,W=J.x2*Q,G=J.y2*Q,q=Math.atan2(G-z,W-X),H=Math.max(10,y1*Q*3.2);Z.beginPath(),Z.moveTo(X,z),Z.lineTo(W,G),Z.stroke(),Z.beginPath(),Z.moveTo(W,G),Z.lineTo(W-H*Math.cos(q-Math.PI/7),G-H*Math.sin(q-Math.PI/7)),Z.lineTo(W-H*Math.cos(q+Math.PI/7),G-H*Math.sin(q+Math.PI/7)),Z.closePath(),Z.fill()}else if(J.tool==="text"&&J.text)Z.font=`600 ${uW*Q}px system-ui, -apple-system, sans-serif`,Z.textBaseline="top",Z.lineWidth=Math.max(2,y1*Q),Z.strokeStyle="rgba(0,0,0,.55)",Z.strokeText(J.text,J.x1*Q,J.y1*Q),Z.fillText(J.text,J.x1*Q,J.y1*Q)}function f$({src:Z,onCancel:J,onSave:Q}){let X=W0(null),z=W0(null),[W,G]=R("rect"),[q,H]=R(V$[0]),[Y,F]=R([]),[K,N]=R(!1),U=W0(null),O=W0(!1),C=()=>{let L=X.current,P=z.current;if(!L||!P)return;P.width=L.clientWidth,P.height=L.clientHeight,f()},f=()=>{let L=z.current;if(!L)return;let P=L.getContext("2d");if(!P)return;P.clearRect(0,0,L.width,L.height);for(let w of Y)_1(P,w,1);if(U.current)_1(P,U.current,1)};o(f,[Y]),o(()=>{let L=()=>C();return window.addEventListener("resize",L),()=>window.removeEventListener("resize",L)},[]);let h=(L)=>{let P=z.current.getBoundingClientRect();return{x:L.clientX-P.left,y:L.clientY-P.top}},_=async(L)=>{L.preventDefault();let P=h(L);if(W==="text"){let w=await H9({title:"添加文字标注",placeholder:"输入文字…",confirmLabel:"添加"});if(w&&w.trim())F((A)=>[...A,{tool:"text",x1:P.x,y1:P.y,x2:P.x,y2:P.y,color:q,text:w.trim()}]);return}O.current=!0,U.current={tool:W,x1:P.x,y1:P.y,x2:P.x,y2:P.y,color:q},f()},M=(L)=>{if(!O.current||!U.current)return;let P=h(L);U.current={...U.current,x2:P.x,y2:P.y},f()},k=()=>{if(!O.current)return;O.current=!1;let L=U.current;if(U.current=null,L&&(Math.abs(L.x2-L.x1)>3||Math.abs(L.y2-L.y1)>3))F((P)=>[...P,L]);else f()},T=()=>{let L=X.current;if(!L)return;N(!0);let P=document.createElement("canvas");P.width=L.naturalWidth||L.clientWidth,P.height=L.naturalHeight||L.clientHeight;let w=P.getContext("2d");if(!w){N(!1);return}w.drawImage(L,0,0,P.width,P.height);let A=P.width/(z.current?.width||L.clientWidth||1);for(let y of Y)_1(w,y,A);P.toBlob((y)=>{if(N(!1),y)Q(y)},"image/png")};return $("div",{class:"annot",onMouseDown:(L)=>L.stopPropagation(),children:[$("div",{class:"annot-toolbar",children:[$("div",{class:"annot-tools",children:[$("button",{class:"annot-tool"+(W==="rect"?" on":""),title:"矩形框选",onClick:()=>G("rect"),children:$(g,{name:"square",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"annot-tool"+(W==="arrow"?" on":""),title:"箭头",onClick:()=>G("arrow"),children:$(g,{name:"arrowUpRight",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"annot-tool"+(W==="text"?" on":""),title:"文字",onClick:()=>G("text"),children:$(g,{name:"type",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"annot-colors",children:V$.map((L)=>$("button",{class:"annot-swatch"+(L===q?" on":""),style:{background:L},title:L,onClick:()=>H(L)},L,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"annot-actions",children:[$("button",{class:"annot-tool",title:"撤销",disabled:!Y.length,onClick:()=>F((L)=>L.slice(0,-1)),children:$(g,{name:"undo",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:J,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",disabled:K,onClick:T,children:K?"保存中…":"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"annot-stage",children:$("div",{class:"annot-img-wrap",children:[$("img",{ref:X,src:Z,alt:"",draggable:!1,onLoad:C},void 0,!1,void 0,this),$("canvas",{ref:z,class:"annot-canvas tool-"+W,onMouseDown:(L)=>void _(L),onMouseMove:(L)=>M(L),onMouseUp:k,onMouseLeave:k},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var v1=0.2,T1=8;function k1({src:Z,name:J,onClose:Q,onReplace:X,draggableBar:z}){let[W,G]=R(1),[q,H]=R(0),[Y,F]=R(0),[K,N]=R(!1),U=W0(null),O=W0(null),C=()=>{G(1),H(0),F(0)};o(()=>{let _=(M)=>{if(M.key==="Escape")M.stopPropagation(),K?N(!1):Q();else if((M.key==="+"||M.key==="=")&&!K)G((k)=>Math.min(T1,k*1.2));else if(M.key==="-"&&!K)G((k)=>Math.max(v1,k/1.2));else if(M.key==="0"&&!K)C()};return document.addEventListener("keydown",_,!0),()=>document.removeEventListener("keydown",_,!0)},[K,Q]);let f=(_)=>{_.preventDefault();let M=U.current?.getBoundingClientRect(),k=M?_.clientX-M.left-M.width/2:0,T=M?_.clientY-M.top-M.height/2:0,L=_.deltaY<0?1.12:0.8928571428571428;G((P)=>{let w=Math.max(v1,Math.min(T1,P*L)),A=w/P;return H((y)=>k-(k-y)*A),F((y)=>T-(T-y)*A),w})},h=(_)=>{O.current={x:_.clientX,y:_.clientY,tx:q,ty:Y}};return o(()=>{let _=(k)=>{let T=O.current;if(!T)return;H(T.tx+(k.clientX-T.x)),F(T.ty+(k.clientY-T.y))},M=()=>{O.current=null};return window.addEventListener("mousemove",_),window.addEventListener("mouseup",M),()=>{window.removeEventListener("mousemove",_),window.removeEventListener("mouseup",M)}},[]),$(r,{children:[$("div",{class:"lightbox-toolbar"+(z?" app-drag":""),onMouseDown:(_)=>_.stopPropagation(),children:[J&&$("span",{class:"lightbox-name",title:J,children:J},void 0,!1,void 0,this),$("span",{class:"lightbox-spacer"},void 0,!1,void 0,this),!K&&$(r,{children:[$("button",{title:"缩小",onClick:()=>G((_)=>Math.max(v1,_/1.2)),children:$(g,{name:"zoomOut",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"lightbox-pct",title:"重置",onClick:C,children:[Math.round(W*100),"%"]},void 0,!0,void 0,this),$("button",{title:"放大",onClick:()=>G((_)=>Math.min(T1,_*1.2)),children:$(g,{name:"zoomIn",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"标注 / 编辑",onClick:()=>{C(),N(!0)},children:$(g,{name:"pencil",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{title:"关闭",onClick:()=>K?N(!1):Q(),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K?$(f$,{src:Z,onCancel:()=>N(!1),onSave:(_)=>{X(_),N(!1)}},void 0,!1,void 0,this):$("div",{ref:U,class:"lightbox-stage",onMouseDown:(_)=>{_.stopPropagation(),h(_)},onWheel:(_)=>f(_),children:$("img",{src:Z,alt:J??"",draggable:!1,style:{transform:`translate(${q}px, ${Y}px) scale(${W})`,cursor:W>1?"grab":"default"}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function g$(Z){return $("div",{class:"lightbox",onMouseDown:()=>Z.onClose(),children:$(k1,{...Z},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function I0(Z,J,Q=null){for(let X=0;X<Z.length;X++){let z=Z[X];if(z.id===J)return{block:z,parent:Z,index:X,parentBlock:Q};let W=z.children?I0(z.children,J,z):null;if(W)return W}return null}function R1(Z){let J=0;for(let Q of Z)J+=1+R1(Q.children??[]);return J}function i8(Z){return{...Z,id:W9(),children:Z.children?.map(i8)}}function I1(Z,J){for(let Q of Z??[])if(Q.id===J||I1(Q.children,J))return!0;return!1}function Y9(Z,J=[]){for(let Q of Z)if(J.push(Q),Q.children)Y9(Q.children,J);return J}function s9(Z,J){let Q=null,X=null,z=(W)=>{for(let G of W){if(G.id===J){X=Q;return}if(Q=G,G.children)z(G.children);if(X)return}};return z(Z),X}function iZ(Z,J){let Q=Y9(Z),X=Q.findIndex((z)=>z.id===J);return X>=0&&X+1<Q.length?Q[X+1]:null}function aZ(Z,J){let Q=I0(Z,J);if(!Q)return null;let[X]=Q.parent.splice(Q.index,1);if(Q.parent.length===0&&Q.parentBlock)delete Q.parentBlock.children;return X??null}function b$(Z,J,Q,X){if(J===Q)return!1;let z=I0(Z,J),W=I0(Z,Q);if(!z||!W||I1(z.block.children,Q))return!1;let G=z.parent.splice(z.index,1)[0],q=I0(Z,Q);if(!q)return z.parent.splice(z.index,0,G),!1;if(z.parent.length===0&&z.parentBlock)delete z.parentBlock.children;return q.parent.splice(q.index+(X==="after"?1:0),0,G),!0}function S1(Z,J){let Q=I0(Z,J);if(!Q||Q.index===0)return!1;let X=Q.parent[Q.index-1];if(!Q9(X.type))return!1;let z=Q.parent.splice(Q.index,1)[0];return X.children??=[],X.children.push(z),!0}function V1(Z,J){let Q=I0(Z,J);if(!Q?.parentBlock)return!1;let X=I0(Z,Q.parentBlock.id);if(!X)return!1;let z=Q.parent.splice(Q.index);if(!z.length)return!1;if(Q.parent.length===0)delete Q.parentBlock.children;return X.parent.splice(X.index+1,0,...z),!0}function k9(Z,J){let Q=new Set(J),X=[],z=(W,G)=>{for(let q of W){let H=Q.has(q.id);if(H&&!G)X.push(q.id);if(q.children)z(q.children,G||H)}};return z(Z,!1),X}function f1(Z,J,Q,X={}){let W=I0(Z,J)?.block;if(!W)return!1;let G=Q9(Q)?W.children:void 0;if(O1(W,Q,X),G?.length)W.children=G;else delete W.children;return!0}function j$(Z,J,Q){let X=Y9(Z),z=X.findIndex((H)=>H.id===J),W=X.findIndex((H)=>H.id===Q);if(z<0||W<0)return[];let[G,q]=z<=W?[z,W]:[W,z];return X.slice(G,q+1).map((H)=>H.id)}function h$(Z,J){if(!J.length)return null;let Q=new Set(J),X=Y9(Z),z=X.findIndex((G)=>Q.has(G.id));if(z<0)return null;let W=null;for(let G=z-1;G>=0;G--)if(!Q.has(X[G].id)){W=X[G].id;break}if(!W){for(let G=z+1;G<X.length;G++)if(!Q.has(X[G].id)){W=X[G].id;break}}for(let G of k9(Z,J))aZ(Z,G);if(W&&!I0(Z,W))W=null;return W??Y9(Z)[0]?.id??null}function D$(Z,J){let Q=k9(Z,J);if(!Q.length)return[];let X=[];for(let W of Q){let G=I0(Z,W);if(G)X.push(i8(G.block))}let z=I0(Z,Q[Q.length-1]);if(!z||!X.length)return[];return z.parent.splice(z.index+1,0,...X),X.map((W)=>W.id)}function x$(Z,J,Q,X){let z=k9(Z,J);if(!z.length||z.includes(Q))return!1;for(let q of z){let H=I0(Z,q);if(H&&I1(H.block.children,Q))return!1}let W=[];for(let q of z){let H=aZ(Z,q);if(H)W.push(H)}let G=I0(Z,Q);if(!G)return Z.push(...W),!1;return G.parent.splice(G.index+(X==="after"?1:0),0,...W),!0}function m$(Z,J){let Q=k9(Z,J).map((X)=>I0(Z,X)?.block).filter((X)=>!!X);return L$(Q)}function u$(Z,J){let Q=[];for(let X of k9(Z,J))if(S1(Z,X))Q.push(X);return Q}function E$(Z,J){let Q=[];for(let X of k9(Z,J))if(V1(Z,X))Q.push(X);return Q}function nZ(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var p$=String.fromCharCode(57344),c$=String.fromCharCode(57345),EW=new RegExp(p$+"(\\d+)"+c$,"g");function lZ(Z){let J=[],Q=Z.replace(/`([^`]+)`/g,(X,z)=>{return J.push(z),p$+(J.length-1)+c$});return Q=nZ(Q),Q=Q.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g,(X,z,W)=>{return`<img src="${String(W).replace(/"/g,""")}" alt="${z}" class="doc-img" loading="lazy">`}),Q=Q.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(X,z,W)=>{return`<a href="${String(W).replace(/"/g,""")}" target="_blank" rel="noreferrer">${z}</a>`}),Q=Q.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),Q=Q.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),Q=Q.replace(/\n/g,"<br>"),Q=Q.replace(EW,(X,z)=>`<code>${nZ(J[+z]??"")}</code>`),Q}function e9(Z){let J=document.createElement("div");return J.innerHTML=Z,d$(J).replace(/\n{3,}/g,`
|
|
132
|
+
|
|
133
|
+
`).replace(/\n$/,"")}function d$(Z){let J="";return Z.childNodes.forEach((Q)=>{if(Q.nodeType===Node.TEXT_NODE){J+=(Q.textContent??"").replace(/\u00a0/g," ");return}if(!(Q instanceof HTMLElement))return;let X=Q.tagName.toLowerCase();if(X==="img"){let W=Q.getAttribute("src")||"";J+=W?``:"";return}let z=d$(Q);if(X==="br")J+=`
|
|
134
|
+
`;else if(X==="strong"||X==="b")J+=z?`**${z}**`:"";else if(X==="em"||X==="i")J+=z?`*${z}*`:"";else if(X==="code")J+=z?"`"+z+"`":"";else if(X==="a"){let W=Q.getAttribute("href")||"";J+=W?`[${z}](${W})`:z}else if(X==="div"||X==="p")J+=(J&&!J.endsWith(`
|
|
105
135
|
`)?`
|
|
106
|
-
`:"")+z;else J+=z}),J}function
|
|
136
|
+
`:"")+z;else J+=z}),J}function a$(){return typeof CSS<"u"&&!!CSS.highlights&&typeof globalThis.Highlight==="function"}function a8(Z){return/[A-Za-z0-9_]/.test(Z)}function pW(Z,J,Q){let X=Z[J]??"",z=Z[Q-1]??"",W=J>0?Z[J-1]:"",G=Q<Z.length?Z[Q]:"",q=!a8(X)||!a8(W),H=!a8(z)||!a8(G);return q&&H}function g1(Z,J,Q){let X=[];if(!J)return X;let z=Q.caseSensitive?Z:Z.toLowerCase(),W=Q.caseSensitive?J:J.toLowerCase(),G=0;for(;;){let q=z.indexOf(W,G);if(q<0)break;let H=q+W.length;if(!Q.wholeWord||pW(Z,q,H))X.push([q,H]);G=H>q?H:q+1}return X}function i$(Z,J,Q){for(let X=Z.length-1;X>=0;X--)if(Q>=J[X])return{node:Z[X],offset:Q-J[X]};return null}function n$(Z,J,Q){let X=[];if(!J)return X;let z=Array.from(Z.querySelectorAll(".doc-title, .editable, .doc-td, pre.code-hl > code.hljs"));for(let W of z){let G=[],q=document.createTreeWalker(W,NodeFilter.SHOW_TEXT),H;while(H=q.nextNode())G.push(H);if(!G.length)continue;let Y="",F=[];for(let K of G)F.push(Y.length),Y+=K.data;for(let[K,N]of g1(Y,J,Q)){let U=i$(G,F,K),O=i$(G,F,N);if(!U||!O)continue;let C=document.createRange();C.setStart(U.node,U.offset),C.setEnd(O.node,O.offset),X.push(C)}}return X}function l$(Z,J){if(!a$())return;let Q=globalThis.Highlight,X=CSS.highlights;if(Z.length)X.set("mh-find-all",new Q(...Z));else X.delete("mh-find-all");if(J){let z=new Q(J);z.priority=1,X.set("mh-find-current",z)}else X.delete("mh-find-current")}function n8(){if(!a$())return;let Z=CSS.highlights;Z.delete("mh-find-all"),Z.delete("mh-find-current")}function cW(Z,J){let Q;try{Q=J&&E8.getLanguage(J)?E8.highlight(Z,{language:J,ignoreIllegals:!0}).value:E8.highlightAuto(Z).value}catch{Q=nZ(Z)}return Z.endsWith(`
|
|
107
137
|
`)?Q+`
|
|
108
|
-
`:Q}function
|
|
109
|
-
`);if(!B0.trim())return;w.preventDefault();let _0=a9(B0);if(!_0.length)return;let g0=x0(d,R.id);if(!g0)return;let{before:$9,after:P9}=S8(i);if(_0.length===1&&_0[0].type==="p"&&($9.trim()!==""||P9.trim()!=="")){R.content=$9+_0[0].content+P9;let O3=f7($9+_0[0].content);O0(),G0(),requestAnimationFrame(()=>t1(R.id,O3));return}let b9=[..._0],cZ=P9.trim()!==""?IZ("p",{content:P9}):null;if(cZ)b9.push(cZ);if($9.trim()===""&&!g0.block.children?.length)g0.parent.splice(g0.index,1,...b9);else R.content=$9,g0.parent.splice(g0.index+1,0,...b9);O0(),G0();let P3=cZ??b9[b9.length-1];requestAnimationFrame(()=>u0(P3.id,!cZ))},H0=async(w,R,i)=>{let j=x0(d,w.id);if(!j)return;let{before:a,after:q0}=S8(R),B0=[];for(let P9 of i)try{B0.push(S7(P9.name,(await c.uploadDocImage(P9)).url))}catch(b9){o(`图片上传失败:${b9.message}`)}if(!B0.length)return;let _0=[...a9(B0.join(`
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
`)
|
|
114
|
-
`,a)===-1){w.preventDefault();let B0=d1(d,R.id);if(B0)u0(B0.id);else s(R.id,"p");return}if(w.key==="ArrowUp"&&a===q0&&j.lastIndexOf(`
|
|
115
|
-
|
|
116
|
-
`).length-1,a=getComputedStyle(R),q0=parseFloat(a.lineHeight)||20,B0=(parseFloat(a.paddingTop)||0)+j*q0,_0=F3(R);if(_0){let g0=R.getBoundingClientRect().top-_0.getBoundingClientRect().top+_0.scrollTop;_0.scrollTo({top:Math.max(0,g0+B0-_0.clientHeight/2),behavior:"smooth"})}else{let g0=R.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,g0+B0-innerHeight/2),behavior:"smooth"})}}else{let R=z0.current,i=R[w]??null;if(I7(R,i),i){let j=i.startContainer;(j.nodeType===3?j.parentElement:j)?.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"})}}};e(()=>{if(!E){k8(),z0.current=[],X0.current=[],h(0);return}let w={caseSensitive:E.caseSensitive,wholeWord:E.wholeWord},R=setTimeout(()=>{let i;if(Y==="source"){let a=W.current?.value??G.current;X0.current=l1(a,E.term,w),z0.current=[],k8(),i=X0.current.length}else{let a=u.current;z0.current=a?R7(a,E.term,w):[],X0.current=[],i=z0.current.length}let j=i?Math.min(m.current,i-1):0;m.current=j,g(j),h(i),H6(j)},110);return()=>clearTimeout(R)},[E,F,Y]),e(()=>()=>k8(),[]),e(()=>{let w=(R)=>{if((R.metaKey||R.ctrlKey)&&!R.altKey&&R.key.toLowerCase()==="f")R.preventDefault(),t((i)=>i??{term:"",caseSensitive:!1,wholeWord:!1}),requestAnimationFrame(()=>{let i=u.current?.parentElement?.querySelector(".find-bar input")??document.querySelector(".find-bar input");i?.focus(),i?.select()})};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);let U3=(w)=>{let R=Y==="source"?X0.current.length:z0.current.length;if(!R)return;let i=(m.current+w+R)%R;m.current=i,g(i),H6(i)},L3=()=>t(null);if(P)return $("div",{class:"empty",children:"加载中…"},void 0,!1,void 0,this);let B3=new Set(P0),K6=(w,R=0)=>{let i=y8(w.filter((j)=>!i9(j)));return w.map((j)=>$(sX,{renderKey:F,block:j,depth:R,selected:B3.has(j.id),number:j.type==="numbered"?i.get(j.id)??1:0,onInput:(a)=>w0(j,a),onPaste:(a,q0)=>Z0(a,j,q0),onLangInput:(a)=>{j.lang=a,O0(),G0()},onKeyDown:(a,q0)=>q3(a,j,q0),onCodeInput:(a)=>{j.content=a,Q0("text:"+j.id),G0()},onCodeKeyDown:(a,q0)=>Y3(a,j,q0),onCellInput:(a,q0,B0)=>{if(!j.rows?.[a])return;j.rows[a][q0]=B0,Q0("table:"+j.id+":"+a+":"+q0),G0()},onTableChange:()=>{O0(),G0()},onAdd:()=>s(j.id),onMenu:(a)=>H3(a,j),onToggle:()=>{j.checked=!j.checked,O0(),G0()},onDropFiles:(a)=>void v0(j,a),dragRef:K3,onReorder:(a,q0)=>{let B0=P0;if(B0.length>1&&B0.includes(a)?A7(d,B0,j.id,q0):B7(d,a,j.id,q0))O0(),G0()},children:j.children?.length?K6(j.children,R+1):null},j.id,!1,void 0,this))};return $(n,{children:[Y==="blocks"&&$(tX,{blocks:d},F,!1,void 0,this),E&&$(Xz,{term:E.term,caseSensitive:E.caseSensitive,wholeWord:E.wholeWord,idx:$0,total:I,onTerm:(w)=>{m.current=0,t((R)=>R?{...R,term:w}:R)},onToggleCase:()=>t((w)=>w?{...w,caseSensitive:!w.caseSensitive}:w),onToggleWord:()=>t((w)=>w?{...w,wholeWord:!w.wholeWord}:w),onStep:U3,onClose:L3},void 0,!1,void 0,this),$("div",{ref:u,class:"doc"+(Y==="source"?" source-mode":""),onMouseDown:(w)=>G3(w),onMouseUp:()=>n1(M),onKeyUp:(w)=>{if(w.shiftKey||w.key.startsWith("Arrow"))n1(M)},children:[_&&$("div",{class:"doc-conflict",role:"alert",children:[$("span",{class:"doc-conflict-msg",children:"文档已被其他端修改,自动保存已暂停。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>h0(),children:"载入最新(弃本地改动)"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>void r({force:!0}),children:"用本地版本覆盖"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"doc-title",contentEditable:!0,onInput:(w)=>{q.current=w.target.textContent??"",Q0("title"),G0()},onKeyDown:(w)=>{if(w.isComposing||w.keyCode===229)return;if(w.key==="Enter")if(w.preventDefault(),!d.length)s(null);else u0(d[0].id)},dangerouslySetInnerHTML:{__html:q.current}},void 0,!1,void 0,this),$("div",{class:"doc-meta",children:[$("span",{children:[$(D,{name:"file",cls:"ico sm"},void 0,!1,void 0,this),p1(d)," 个块"]},void 0,!0,void 0,this),$("span",{children:"实时同步"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y==="source"?$("textarea",{ref:W,class:"doc-source",spellcheck:!1,defaultValue:G.current,onInput:(w)=>{let R=w.currentTarget;G.current=R.value,b7(R),G0()}},void 0,!1,void 0,this):K6(d),Y==="blocks"&&d.length===0&&$("div",{class:"editable",style:{color:"var(--muted)",cursor:"text"},onClick:()=>s(null),children:"点此书写,或输入 “/” 选择块类型…"},void 0,!1,void 0,this),L&&Z9.length>0&&(()=>{let i=innerHeight-(L.y+22)-8,j=L.y-8,a=i>=240||i>=j,q0=Math.min(L.x,innerWidth-270),B0=Math.min(a?i:j,Math.round(innerHeight*0.7)),_0=a?{left:q0,top:L.y+22,maxHeight:B0,minWidth:260}:{left:q0,bottom:innerHeight-L.y+6,maxHeight:B0,minWidth:260};return $("div",{class:"pop",style:_0,ref:V,children:[$(p0,{children:"基础块"},void 0,!1,void 0,this),Z9.map((g0,$9)=>$("button",{class:"item"+($9===L.idx?" sel":""),onMouseDown:(P9)=>{P9.preventDefault(),J0(g0)},children:[$("span",{class:"lico",children:$(D,{name:g0.ic,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:g0.t},void 0,!1,void 0,this),$("span",{class:"d",children:g0.d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},g0.type,!0,void 0,this))]},void 0,!0,void 0,this)})(),S&&!N&&$(zz,{x:S.x,y:S.y,onCommand:G9},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function j7(Z){if(!Z)return[];let J=[];for(let Q=0;Q<(Z.items?.length??0);Q++){let X=Z.items[Q];if(X.kind==="file"&&X.type.startsWith("image/")){let z=X.getAsFile();if(z)J.push(z)}}if(!J.length)for(let Q=0;Q<(Z.files?.length??0);Q++){let X=Z.files[Q];if(X.type.startsWith("image/"))J.push(X)}return J}function S7(Z,J){return`![${(Z||"image").replace(/[[\]()]/g,"").trim()}](${J})`}function sX({block:Z,number:J,depth:Q,renderKey:X,selected:z,onInput:G,onPaste:W,onLangInput:q,onKeyDown:Y,onCodeInput:H,onCodeKeyDown:F,onCellInput:K,onTableChange:P,onAdd:A,onMenu:L,onToggle:y,onDropFiles:V,dragRef:S,onReorder:M,children:N}){let k=L0(null);e(()=>{let U=k.current;if(U&&Z.type!=="code"){let B=fZ(Z.content);if(U.innerHTML!==B&&l9(U.innerHTML)!==Z.content)U.innerHTML=B}},[X,Z.type]);let v=e0(Z.type)&&Z.content.trim()===""&&Z.children?.[0]?.type==="code",O="block b-"+Z.type+(Z.type==="todo"&&Z.checked?" b-done":"")+(v?" list-code-host":"")+(z?" selected":"");return $("div",{class:"block-wrap"+(Q?" nested":""),children:[$("div",{class:O,"data-bid":Z.id,onDragOver:(U)=>{if(S.current&&S.current!==Z.id){if(U.preventDefault(),U.dataTransfer)U.dataTransfer.dropEffect="move";Bz(U.currentTarget,U)}else if(!S.current&&Array.from(U.dataTransfer?.items??[]).some((B)=>B.kind==="file")){if(U.preventDefault(),U.dataTransfer)U.dataTransfer.dropEffect="copy"}},onDrop:(U)=>{if(S.current){U.preventDefault();let C=U.currentTarget.classList.contains("drop-after")?"after":"before",_=S.current;S.current=null,g7(),M(_,C);return}let B=j7(U.dataTransfer);if(B.length)U.preventDefault(),V(B)},children:[$("div",{class:"gutter",children:[$("button",{title:"在下方插入",onClick:A,children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"grip",title:"拖拽移动 · 点击菜单",draggable:!0,onClick:L,onDragStart:(U)=>{if(S.current=Z.id,U.dataTransfer)U.dataTransfer.effectAllowed="move",U.dataTransfer.setData("text/plain",Z.id);U.currentTarget.closest(".block").classList.add("dragging")},onDragEnd:(U)=>{U.currentTarget.closest(".block").classList.remove("dragging"),g7()},children:$(D,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.type==="divider"?$("hr",{},void 0,!1,void 0,this):Z.type==="table"?$($z,{block:Z,renderKey:X,onCellInput:K,onTableChange:P},void 0,!1,void 0,this):$(n,{children:[Z.type==="bullet"&&$("div",{class:"marker",children:"•"},void 0,!1,void 0,this),Z.type==="numbered"&&$("div",{class:"marker",children:[J,"."]},void 0,!0,void 0,this),Z.type==="todo"&&$("div",{class:"marker",children:$("input",{type:"checkbox",checked:!!Z.checked,onChange:y},void 0,!1,void 0,this)},void 0,!1,void 0,this),v?null:Z.type==="code"?$(Jz,{block:Z,renderKey:X,onInput:H,onLangChange:q,onKeyDown:F},void 0,!1,void 0,this):$("div",{ref:k,class:"editable",contentEditable:!0,"data-ph":eX(Z.type),"data-ph-hint":Zz(Z.type)?"slash":"kind",onInput:(U)=>G(U.currentTarget),onPaste:(U)=>W(U,U.currentTarget),onKeyDown:(U)=>Y(U,U.currentTarget)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),N]},void 0,!0,void 0,this)}var x7={h1:"标题 1",h2:"标题 2",h3:"标题 3",code:"输入代码…",quote:"引用"};function eX(Z){return x7[Z]??"输入文本,“/” 唤出命令"}function Zz(Z){return!(Z in x7)}function Jz({block:Z,renderKey:J,onInput:Q,onLangChange:X,onKeyDown:z}){let G=L0(null),W=L0(null),q=L0(null),[Y,H]=f(!1),F=(A)=>{if(W.current)W.current.innerHTML=rX(A,Z.lang);if(q.current){let y=A.split(`
|
|
117
|
-
`).length,V="1";for(let S=2;S<=y;S++)V+=`
|
|
118
|
-
`+S;q.current.textContent=V}let L=G.current;if(L)L.style.height="auto",L.style.height=L.scrollHeight+"px"};e(()=>{let A=G.current;if(A&&A.value!==Z.content)A.value=Z.content;F(Z.content)},[J,Z.lang]);let K=Z.lang??"",P=u1.some((A)=>A.id===K);return $("div",{class:"codeblock",children:[$("div",{class:"code-body",children:[$("div",{ref:q,class:"code-gutter","aria-hidden":"true",children:"1"},void 0,!1,void 0,this),$("div",{class:"code-scroll",children:[$("pre",{class:"code-hl","aria-hidden":"true",children:$("code",{ref:W,class:"hljs"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("textarea",{ref:G,class:"code-input",rows:1,spellcheck:!1,wrap:"off",placeholder:"输入代码…",onInput:(A)=>{let L=A.currentTarget;Q(L.value),F(L.value)},onKeyDown:(A)=>z(A,A.currentTarget),onScroll:(A)=>{let L=W.current?.parentElement;if(L)L.scrollLeft=A.currentTarget.scrollLeft}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"code-tools",children:[$("span",{class:"code-lang",children:[$("select",{value:K,onChange:(A)=>X(A.currentTarget.value),children:[!P&&$("option",{value:K,children:K||"纯文本"},void 0,!1,void 0,this),u1.map((A)=>$("option",{value:A.id,children:A.label},A.id,!1,void 0,this))]},void 0,!0,void 0,this),$(D,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"code-copy"+(Y?" ok":""),title:"复制代码",onClick:()=>{let A=G.current?.value??Z.content;navigator.clipboard?.writeText(A).then(()=>{H(!0),setTimeout(()=>H(!1),1400)}).catch(()=>{})},children:[$(D,{name:Y?"check":"copy",cls:"ico sm"},void 0,!1,void 0,this),Y?"已复制":"复制"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function $z({block:Z,renderKey:J,onCellInput:Q,onTableChange:X}){let z=Z.rows??[],G=z[0]?.length??0,W=Z.align??[],q=L0(null),Y=L0([]);if(Y.current.length!==G)Y.current=Array.from({length:G},(N,k)=>Y.current[k]??160);let H=()=>{Z.rows=[...z,Array(G).fill("")],X()},F=()=>{Z.rows=z.map((N)=>[...N,""]),Z.align=[...W,null],X()},K=(N)=>{Z.rows=z.map((v)=>{let O=[...v];return O.splice(N,0,""),O});let k=[...W];k.splice(N,0,null),Z.align=k,X()},P=(N)=>{if(G<=1)return;Z.rows=z.map((k)=>k.filter((v,O)=>O!==N)),Z.align=W.filter((k,v)=>v!==N),X()},A=(N)=>{if(N===0||z.length<=2)return;Z.rows=z.filter((k,v)=>v!==N),X()},L=(N,k)=>{let v=Array.from({length:G},(O,U)=>W[U]??null);v[N]=k,Z.align=v,X()},y=(N,k)=>{let v=q.current?.querySelector(`.doc-td[data-r="${N}"][data-c="${k}"]`);if(!v)return!1;v.focus();let O=document.createRange();O.selectNodeContents(v),O.collapse(!1);let U=getSelection();return U?.removeAllRanges(),U?.addRange(O),!0},V=(N,k,v)=>{if(N.isComposing||N.keyCode===229)return;if(N.key==="Tab"){if(N.preventDefault(),N.shiftKey){if(v>0)y(k,v-1);else if(k>0)y(k-1,G-1)}else if(v<G-1)y(k,v+1);else if(k<z.length-1)y(k+1,0);else H(),requestAnimationFrame(()=>y(z.length,0));return}if(N.key==="Enter"){if(N.preventDefault(),k<z.length-1)y(k+1,v);else H(),requestAnimationFrame(()=>y(z.length,v));return}},S=(N,k)=>{N.preventDefault(),N.stopPropagation(),z8(N,{col:q.current?.querySelector(`col[data-tcol="${k}"]`)??null,startWidth:Y.current[k]??160,min:60,onDone:(v)=>{Y.current[k]=v}})},M=(N,k)=>{N.preventDefault(),N.stopPropagation(),I0(N,(v)=>$(n,{children:[$(p0,{children:"对齐方式"},void 0,!1,void 0,this),$(W0,{icon:"alignLeft",label:"左对齐",checked:(W[k]??null)===null||W[k]==="left",onClick:()=>{L(k,"left"),v()}},void 0,!1,void 0,this),$(W0,{icon:"alignCenter",label:"居中",checked:W[k]==="center",onClick:()=>{L(k,"center"),v()}},void 0,!1,void 0,this),$(W0,{icon:"alignRight",label:"右对齐",checked:W[k]==="right",onClick:()=>{L(k,"right"),v()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"plus",label:"在左侧插入列",onClick:()=>{K(k),v()}},void 0,!1,void 0,this),$(W0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{K(k+1),v()}},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除列",danger:!0,onClick:()=>{P(k),v()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"doc-table-wrap",children:$("div",{class:"doc-table-scroll",children:$("div",{class:"doc-table-inner",children:[$("div",{class:"doc-table-row",children:[$("table",{ref:q,class:"doc-table",children:[$("colgroup",{children:Array.from({length:G},(N,k)=>$("col",{"data-tcol":k,style:{width:Y.current[k]}},k,!1,void 0,this))},void 0,!1,void 0,this),$("tbody",{children:z.map((N,k)=>$("tr",{children:N.map((v,O)=>$("td",{class:k===0?"doc-th":void 0,children:[$(Qz,{value:v,renderKey:J,r:k,c:O,align:W[O]??null,onInput:(U)=>Q(k,O,U),onKeyDown:(U)=>V(U,k,O)},void 0,!1,void 0,this),k===0&&$(n,{children:[$("button",{class:"doc-col-menu",title:"列选项",onMouseDown:(U)=>M(U,O),children:$(D,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"doc-col-resizer",onPointerDown:(U)=>S(U,O)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O===0&&k>0&&z.length>2&&$("button",{class:"doc-row-del",title:"删除行",onMouseDown:(U)=>{U.preventDefault(),U.stopPropagation(),A(k)},children:$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O,!0,void 0,this))},k,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addcol",title:"新增列",onMouseDown:(N)=>{N.preventDefault(),F()},children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addrow",title:"新增行",onMouseDown:(N)=>{N.preventDefault(),H()},children:$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Qz({value:Z,renderKey:J,r:Q,c:X,align:z,onInput:G,onKeyDown:W}){let q=L0(null);return e(()=>{let Y=q.current;if(Y){let H=fZ(Z);if(Y.innerHTML!==H&&l9(Y.innerHTML)!==Z)Y.innerHTML=H}},[J]),$("div",{ref:q,class:"doc-td","data-r":Q,"data-c":X,contentEditable:!0,"data-ph":Q===0?"表头":"",style:z?{textAlign:z}:void 0,onInput:(Y)=>G(l9(Y.currentTarget.innerHTML)),onKeyDown:(Y)=>W(Y)},void 0,!1,void 0,this)}function Xz({term:Z,caseSensitive:J,wholeWord:Q,idx:X,total:z,onTerm:G,onToggleCase:W,onToggleWord:q,onStep:Y,onClose:H}){let F=(K)=>K.preventDefault();return $("div",{class:"find-bar",role:"search",children:[$(D,{name:"search",cls:"ico sm find-ico"},void 0,!1,void 0,this),$("input",{type:"text",placeholder:"在文档中查找",value:Z,autoFocus:!0,onInput:(K)=>G(K.currentTarget.value),onKeyDown:(K)=>{if(K.key==="Enter")K.preventDefault(),Y(K.shiftKey?-1:1);else if(K.key==="Escape")K.preventDefault(),H()}},void 0,!1,void 0,this),$("span",{class:"find-count",children:z?`${X+1} / ${z}`:Z?"无结果":""},void 0,!1,void 0,this),$("button",{class:"find-opt"+(J?" on":""),title:"区分大小写",onMouseDown:F,onClick:W,children:"Aa"},void 0,!1,void 0,this),$("button",{class:"find-opt"+(Q?" on":""),title:"全词匹配",onMouseDown:F,onClick:q,children:"全词"},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"上一个 (Shift+Enter)",disabled:!z,onMouseDown:F,onClick:()=>Y(-1),children:$(D,{name:"chevronDown",cls:"ico sm find-prev"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"下一个 (Enter)",disabled:!z,onMouseDown:F,onClick:()=>Y(1),children:$(D,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav find-close",title:"关闭 (Esc)",onClick:H,children:$(D,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function zz({x:Z,y:J,onCommand:Q}){let X=(z)=>(G)=>{G.preventDefault(),Q(z)};return $("div",{class:"pop",style:{left:Math.max(8,Math.min(Z,innerWidth-220)),top:J-46,minWidth:0,padding:3,display:"flex",gap:1},children:[["bold","bold"],["italic","italic"],["underline","underline"],["strikeThrough","strike"],["code","code"],["createLink","link"]].map(([z,G])=>$("button",{class:"item",style:{width:34,justifyContent:"center",padding:"7px 0"},onMouseDown:X(z),children:$(D,{name:G,cls:"ico sm"},void 0,!1,void 0,this)},z,!1,void 0,this))},void 0,!1,void 0,this)}function Wz(){let Z=getSelection();if(!Z||Z.isCollapsed)return;document.execCommand("insertHTML",!1,`<code>${VZ(Z.toString())}</code>`)}function KZ(Z){document.querySelectorAll(".doc .block[data-bid]").forEach((J)=>Gz(Z,J))}function Gz(Z,J){let Q=J.matches(".block[data-bid]")?J:J.closest(".block[data-bid]"),X=Q?.getAttribute("data-bid"),z=X?x0(Z,X)?.block:null;if(!z||!Q)return;let G=Q.querySelector(".editable"),W=Q.querySelector(".code-input");if(G)z.content=bZ(z,G);else if(W)z.content=W.value}function qz(Z){return(Z instanceof HTMLElement?Z:Z.parentElement)?.closest(".block[data-bid]")??null}function V7(){return document.activeElement?.closest?.(".doc .block[data-bid]")?.getAttribute("data-bid")??null}function o1(Z){document.querySelector(".doc")?.classList.toggle("selecting",Z)}function T8(){getSelection()?.removeAllRanges(),document.activeElement?.blur?.(),o1(!0)}function n1(Z){let J=getSelection();if(!J||J.isCollapsed||!J.rangeCount)return Z(null);if(!J.anchorNode?.parentElement?.closest?.(".editable"))return Z(null);let X=J.getRangeAt(0),z=X.getBoundingClientRect(),G=z.width||z.height?z:X.getClientRects()[0];if(!G)return Z(null);Z({x:G.left,y:G.top})}function Yz(Z){let J=getSelection()?.anchorNode?.parentElement?.closest?.(".editable"),X=J?.closest(".block")?.getAttribute("data-bid"),z=X?x0(Z,X)?.block:null;if(z&&J)z.content=bZ(z,J)}function bZ(Z,J){return l9(J.innerHTML)}function r1(){let Z=getSelection();return!!Z&&!Z.isCollapsed}function Hz(Z){let J=getSelection();if(!J||!J.rangeCount)return 0;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return 0;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length}function R8(Z){let J=document.querySelector(`.block[data-bid="${Z}"]`),Q=document.activeElement;if(!J||!Q||!J.contains(Q))return null;if(Q instanceof HTMLTextAreaElement)return Q.selectionStart;let X=J.querySelector(".editable");return X?Hz(X):null}function I8(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .code-input`);if(Q){Q.focus();let X=Math.min(J,Q.value.length);Q.setSelectionRange(X,X);return}t1(Z,J)}function Kz(Z){let J=getSelection();if(!J||!J.rangeCount||!J.isCollapsed)return!1;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return!1;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length===0}function Fz(){let Z=getSelection();if(!Z||!Z.rangeCount)return{x:80,y:120};let J=Z.getRangeAt(0).getBoundingClientRect();return{x:J.left||80,y:J.top||120}}function Uz(Z){let J=getSelection();if(!J||!J.rangeCount)return{first:!0,last:!0};let Q=J.getRangeAt(0).getBoundingClientRect(),X=Z.getBoundingClientRect();if(!Q.height&&!Q.top)return{first:!0,last:!0};let z=parseFloat(getComputedStyle(Z).lineHeight)||Q.height||20;return{first:Q.top-X.top<z*0.5,last:X.bottom-Q.bottom<z*0.5}}function Lz(Z){let J=Z.textContent??"";if(J.trim()==="")return!0;let Q=getSelection();if(!Q||!Q.rangeCount||Q.isCollapsed)return!1;if(!Z.contains(Q.anchorNode)||!Z.contains(Q.focusNode))return!1;return Q.toString().length>=J.length}function S8(Z){let J=getSelection();if(!J||!J.rangeCount||!Z.contains(J.getRangeAt(0).startContainer))return{before:l9(Z.innerHTML),after:""};let Q=J.getRangeAt(0),X=(z)=>{let G=document.createRange();G.selectNodeContents(Z),z(G);let W=document.createElement("div");return W.appendChild(G.cloneContents()),l9(W.innerHTML)};return{before:X((z)=>z.setEnd(Q.startContainer,Q.startOffset)),after:X((z)=>z.setStart(Q.endContainer,Q.endOffset))}}function f7(Z){let J=document.createElement("div");return J.innerHTML=fZ(Z),(J.textContent??"").length}function t1(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .editable`);if(!Q)return;Q.focus();let X=document.createTreeWalker(Q,NodeFilter.SHOW_TEXT),z=J,G=null;for(let Y=X.nextNode();Y;Y=X.nextNode()){if(G=Y,z<=Y.data.length)break;z-=Y.data.length}let W=document.createRange();if(G)W.setStart(G,Math.min(z,G.data.length));else W.selectNodeContents(Q);W.collapse(!0);let q=getSelection();q?.removeAllRanges(),q?.addRange(W)}function u0(Z,J=!1){let Q=`.block[data-bid="${Z}"] .editable, .block[data-bid="${Z}"] .code-input`,X=document.querySelector(Q);if(!X)return;if(X.focus(),X instanceof HTMLTextAreaElement){let W=J?X.value.length:0;X.setSelectionRange(W,W);return}let z=document.createRange();z.selectNodeContents(X),z.collapse(!J);let G=getSelection();G?.removeAllRanges(),G?.addRange(z)}function b7(Z){Z.style.height="auto",Z.style.height=Z.scrollHeight+"px"}var g7=U9;function Bz(Z,J){J1(Z,J,"y")}var FZ=function(Z,J){let z=Z,G=gZ[J],W=null,q=0,Y=null,H=[],F={},K=function(U,B){if(q=z*4+17,W=function(C){let _=Array(C);for(let T=0;T<C;T+=1){_[T]=Array(C);for(let u=0;u<C;u+=1)_[T][u]=null}return _}(q),P(0,0),P(q-7,0),P(0,q-7),y(),L(),S(U,B),z>=7)V(U);if(Y==null)Y=k(z,G,H);M(Y,B)},P=function(U,B){for(let C=-1;C<=7;C+=1){if(U+C<=-1||q<=U+C)continue;for(let _=-1;_<=7;_+=1){if(B+_<=-1||q<=B+_)continue;if(0<=C&&C<=6&&(_==0||_==6)||0<=_&&_<=6&&(C==0||C==6)||2<=C&&C<=4&&2<=_&&_<=4)W[U+C][B+_]=!0;else W[U+C][B+_]=!1}}},A=function(){let U=0,B=0;for(let C=0;C<8;C+=1){K(!0,C);let _=V9.getLostPoint(F);if(C==0||U>_)U=_,B=C}return B},L=function(){for(let U=8;U<q-8;U+=1){if(W[U][6]!=null)continue;W[U][6]=U%2==0}for(let U=8;U<q-8;U+=1){if(W[6][U]!=null)continue;W[6][U]=U%2==0}},y=function(){let U=V9.getPatternPosition(z);for(let B=0;B<U.length;B+=1)for(let C=0;C<U.length;C+=1){let _=U[B],T=U[C];if(W[_][T]!=null)continue;for(let u=-2;u<=2;u+=1)for(let E=-2;E<=2;E+=1)if(u==-2||u==2||E==-2||E==2||u==0&&E==0)W[_+u][T+E]=!0;else W[_+u][T+E]=!1}},V=function(U){let B=V9.getBCHTypeNumber(z);for(let C=0;C<18;C+=1){let _=!U&&(B>>C&1)==1;W[Math.floor(C/3)][C%3+q-8-3]=_}for(let C=0;C<18;C+=1){let _=!U&&(B>>C&1)==1;W[C%3+q-8-3][Math.floor(C/3)]=_}},S=function(U,B){let C=G<<3|B,_=V9.getBCHTypeInfo(C);for(let T=0;T<15;T+=1){let u=!U&&(_>>T&1)==1;if(T<6)W[T][8]=u;else if(T<8)W[T+1][8]=u;else W[q-15+T][8]=u}for(let T=0;T<15;T+=1){let u=!U&&(_>>T&1)==1;if(T<8)W[8][q-T-1]=u;else if(T<9)W[8][15-T-1+1]=u;else W[8][15-T-1]=u}W[q-8][8]=!U},M=function(U,B){let C=-1,_=q-1,T=7,u=0,E=V9.getMaskFunction(B);for(let t=q-1;t>0;t-=2){if(t==6)t-=1;while(!0){for(let $0=0;$0<2;$0+=1)if(W[_][t-$0]==null){let g=!1;if(u<U.length)g=(U[u]>>>T&1)==1;if(E(_,t-$0))g=!g;if(W[_][t-$0]=g,T-=1,T==-1)u+=1,T=7}if(_+=C,_<0||q<=_){_-=C,C=-C;break}}}},N=function(U,B){let C=0,_=0,T=0,u=Array(B.length),E=Array(B.length);for(let I=0;I<B.length;I+=1){let h=B[I].dataCount,m=B[I].totalCount-h;_=Math.max(_,h),T=Math.max(T,m),u[I]=Array(h);for(let p=0;p<u[I].length;p+=1)u[I][p]=255&U.getBuffer()[p+C];C+=h;let z0=V9.getErrorCorrectPolynomial(m),Y0=jZ(u[I],z0.getLength()-1).mod(z0);E[I]=Array(z0.getLength()-1);for(let p=0;p<E[I].length;p+=1){let Q0=p+Y0.getLength()-E[I].length;E[I][p]=Q0>=0?Y0.getAt(Q0):0}}let t=0;for(let I=0;I<B.length;I+=1)t+=B[I].totalCount;let $0=Array(t),g=0;for(let I=0;I<_;I+=1)for(let h=0;h<B.length;h+=1)if(I<u[h].length)$0[g]=u[h][I],g+=1;for(let I=0;I<T;I+=1)for(let h=0;h<B.length;h+=1)if(I<E[h].length)$0[g]=E[h][I],g+=1;return $0},k=function(U,B,C){let _=D7.getRSBlocks(U,B),T=h7();for(let E=0;E<C.length;E+=1){let t=C[E];T.put(t.getMode(),4),T.put(t.getLength(),V9.getLengthInBits(t.getMode(),U)),t.write(T)}let u=0;for(let E=0;E<_.length;E+=1)u+=_[E].dataCount;if(T.getLengthInBits()>u*8)throw"code length overflow. ("+T.getLengthInBits()+">"+u*8+")";if(T.getLengthInBits()+4<=u*8)T.put(0,4);while(T.getLengthInBits()%8!=0)T.putBit(!1);while(!0){if(T.getLengthInBits()>=u*8)break;if(T.put(236,8),T.getLengthInBits()>=u*8)break;T.put(17,8)}return N(T,_)};F.addData=function(U,B){B=B||"Byte";let C=null;switch(B){case"Numeric":C=Pz(U);break;case"Alphanumeric":C=Oz(U);break;case"Byte":C=wz(U);break;case"Kanji":C=Az(U);break;default:throw"mode:"+B}H.push(C),Y=null},F.isDark=function(U,B){if(U<0||q<=U||B<0||q<=B)throw U+","+B;return W[U][B]},F.getModuleCount=function(){return q},F.make=function(){if(z<1){let U=1;for(;U<40;U++){let B=D7.getRSBlocks(U,G),C=h7();for(let T=0;T<H.length;T++){let u=H[T];C.put(u.getMode(),4),C.put(u.getLength(),V9.getLengthInBits(u.getMode(),U)),u.write(C)}let _=0;for(let T=0;T<B.length;T++)_+=B[T].dataCount;if(C.getLengthInBits()<=_*8)break}z=U}K(!1,A())},F.createTableTag=function(U,B){U=U||2,B=typeof B>"u"?U*4:B;let C="";C+='<table style="',C+=" border-width: 0px; border-style: none;",C+=" border-collapse: collapse;",C+=" padding: 0px; margin: "+B+"px;",C+='">',C+="<tbody>";for(let _=0;_<F.getModuleCount();_+=1){C+="<tr>";for(let T=0;T<F.getModuleCount();T+=1)C+='<td style="',C+=" border-width: 0px; border-style: none;",C+=" border-collapse: collapse;",C+=" padding: 0px; margin: 0px;",C+=" width: "+U+"px;",C+=" height: "+U+"px;",C+=" background-color: ",C+=F.isDark(_,T)?"#000000":"#ffffff",C+=";",C+='"/>';C+="</tr>"}return C+="</tbody>",C+="</table>",C},F.createSvgTag=function(U,B,C,_){let T={};if(typeof arguments[0]=="object")T=arguments[0],U=T.cellSize,B=T.margin,C=T.alt,_=T.title;U=U||2,B=typeof B>"u"?U*4:B,C=typeof C==="string"?{text:C}:C||{},C.text=C.text||null,C.id=C.text?C.id||"qrcode-description":null,_=typeof _==="string"?{text:_}:_||{},_.text=_.text||null,_.id=_.text?_.id||"qrcode-title":null;let u=F.getModuleCount()*U+B*2,E,t,$0,g,I="",h;h="l"+U+",0 0,"+U+" -"+U+",0 0,-"+U+"z ",I+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',I+=!T.scalable?' width="'+u+'px" height="'+u+'px"':"",I+=' viewBox="0 0 '+u+" "+u+'" ',I+=' preserveAspectRatio="xMinYMin meet"',I+=_.text||C.text?' role="img" aria-labelledby="'+v([_.id,C.id].join(" ").trim())+'"':"",I+=">",I+=_.text?'<title id="'+v(_.id)+'">'+v(_.text)+"</title>":"",I+=C.text?'<description id="'+v(C.id)+'">'+v(C.text)+"</description>":"",I+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',I+='<path d="';for($0=0;$0<F.getModuleCount();$0+=1){g=$0*U+B;for(E=0;E<F.getModuleCount();E+=1)if(F.isDark($0,E))t=E*U+B,I+="M"+t+","+g+h}return I+='" stroke="transparent" fill="black"/>',I+="</svg>",I},F.createDataURL=function(U,B){U=U||2,B=typeof B>"u"?U*4:B;let C=F.getModuleCount()*U+B*2,_=B,T=C-B;return Mz(C,C,function(u,E){if(_<=u&&u<T&&_<=E&&E<T){let t=Math.floor((u-_)/U),$0=Math.floor((E-_)/U);return F.isDark($0,t)?0:1}else return 1})},F.createImgTag=function(U,B,C){U=U||2,B=typeof B>"u"?U*4:B;let _=F.getModuleCount()*U+B*2,T="";if(T+="<img",T+=' src="',T+=F.createDataURL(U,B),T+='"',T+=' width="',T+=_,T+='"',T+=' height="',T+=_,T+='"',C)T+=' alt="',T+=v(C),T+='"';return T+="/>",T};let v=function(U){let B="";for(let C=0;C<U.length;C+=1){let _=U.charAt(C);switch(_){case"<":B+="<";break;case">":B+=">";break;case"&":B+="&";break;case'"':B+=""";break;default:B+=_;break}}return B},O=function(U){U=typeof U>"u"?2:U;let C=F.getModuleCount()*1+U*2,_=U,T=C-U,u,E,t,$0,g,I={"██":"█","█ ":"▀"," █":"▄"," ":" "},h={"██":"▀","█ ":"▀"," █":" "," ":" "},m="";for(u=0;u<C;u+=2){t=Math.floor((u-_)/1),$0=Math.floor((u+1-_)/1);for(E=0;E<C;E+=1){if(g="█",_<=E&&E<T&&_<=u&&u<T&&F.isDark(t,Math.floor((E-_)/1)))g=" ";if(_<=E&&E<T&&_<=u+1&&u+1<T&&F.isDark($0,Math.floor((E-_)/1)))g+=" ";else g+="█";m+=U<1&&u+1>=T?h[g]:I[g]}m+=`
|
|
119
|
-
`}if(C%2&&U>0)return m.substring(0,m.length-C-1)+Array(C+1).join("▀");return m.substring(0,m.length-1)};return F.createASCII=function(U,B){if(U=U||1,U<2)return O(B);U-=1,B=typeof B>"u"?U*2:B;let C=F.getModuleCount()*U+B*2,_=B,T=C-B,u,E,t,$0,g=Array(U+1).join("██"),I=Array(U+1).join(" "),h="",m="";for(u=0;u<C;u+=1){t=Math.floor((u-_)/U),m="";for(E=0;E<C;E+=1){if($0=1,_<=E&&E<T&&_<=u&&u<T&&F.isDark(t,Math.floor((E-_)/U)))$0=0;m+=$0?g:I}for(t=0;t<U;t+=1)h+=m+`
|
|
120
|
-
`}return h.substring(0,h.length-1)},F.renderTo2dContext=function(U,B){B=B||2;let C=F.getModuleCount();for(let _=0;_<C;_++)for(let T=0;T<C;T++)U.fillStyle=F.isDark(_,T)?"black":"white",U.fillRect(T*B,_*B,B,B)},F};FZ.stringToBytes=function(Z){let J=[];for(let Q=0;Q<Z.length;Q+=1){let X=Z.charCodeAt(Q);J.push(X&255)}return J};FZ.createStringToBytes=function(Z,J){let Q=function(){let z=Nz(Z),G=function(){let Y=z.read();if(Y==-1)throw"eof";return Y},W=0,q={};while(!0){let Y=z.read();if(Y==-1)break;let H=G(),F=G(),K=G(),P=String.fromCharCode(Y<<8|H),A=F<<8|K;q[P]=A,W+=1}if(W!=J)throw W+" != "+J;return q}(),X=63;return function(z){let G=[];for(let W=0;W<z.length;W+=1){let q=z.charCodeAt(W);if(q<128)G.push(q);else{let Y=Q[z.charAt(W)];if(typeof Y=="number")if((Y&255)==Y)G.push(Y);else G.push(Y>>>8),G.push(Y&255);else G.push(63)}}return G}};var n0={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},gZ={L:1,M:0,Q:3,H:2},S9={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},V9=function(){let Z=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],J=1335,Q=7973,X=21522,z={},G=function(W){let q=0;while(W!=0)q+=1,W>>>=1;return q};return z.getBCHTypeInfo=function(W){let q=W<<10;while(G(q)-G(1335)>=0)q^=1335<<G(q)-G(1335);return(W<<10|q)^21522},z.getBCHTypeNumber=function(W){let q=W<<12;while(G(q)-G(7973)>=0)q^=7973<<G(q)-G(7973);return W<<12|q},z.getPatternPosition=function(W){return Z[W-1]},z.getMaskFunction=function(W){switch(W){case S9.PATTERN000:return function(q,Y){return(q+Y)%2==0};case S9.PATTERN001:return function(q,Y){return q%2==0};case S9.PATTERN010:return function(q,Y){return Y%3==0};case S9.PATTERN011:return function(q,Y){return(q+Y)%3==0};case S9.PATTERN100:return function(q,Y){return(Math.floor(q/2)+Math.floor(Y/3))%2==0};case S9.PATTERN101:return function(q,Y){return q*Y%2+q*Y%3==0};case S9.PATTERN110:return function(q,Y){return(q*Y%2+q*Y%3)%2==0};case S9.PATTERN111:return function(q,Y){return(q*Y%3+(q+Y)%2)%2==0};default:throw"bad maskPattern:"+W}},z.getErrorCorrectPolynomial=function(W){let q=jZ([1],0);for(let Y=0;Y<W;Y+=1)q=q.multiply(jZ([1,f9.gexp(Y)],0));return q},z.getLengthInBits=function(W,q){if(1<=q&&q<10)switch(W){case n0.MODE_NUMBER:return 10;case n0.MODE_ALPHA_NUM:return 9;case n0.MODE_8BIT_BYTE:return 8;case n0.MODE_KANJI:return 8;default:throw"mode:"+W}else if(q<27)switch(W){case n0.MODE_NUMBER:return 12;case n0.MODE_ALPHA_NUM:return 11;case n0.MODE_8BIT_BYTE:return 16;case n0.MODE_KANJI:return 10;default:throw"mode:"+W}else if(q<41)switch(W){case n0.MODE_NUMBER:return 14;case n0.MODE_ALPHA_NUM:return 13;case n0.MODE_8BIT_BYTE:return 16;case n0.MODE_KANJI:return 12;default:throw"mode:"+W}else throw"type:"+q},z.getLostPoint=function(W){let q=W.getModuleCount(),Y=0;for(let K=0;K<q;K+=1)for(let P=0;P<q;P+=1){let A=0,L=W.isDark(K,P);for(let y=-1;y<=1;y+=1){if(K+y<0||q<=K+y)continue;for(let V=-1;V<=1;V+=1){if(P+V<0||q<=P+V)continue;if(y==0&&V==0)continue;if(L==W.isDark(K+y,P+V))A+=1}}if(A>5)Y+=3+A-5}for(let K=0;K<q-1;K+=1)for(let P=0;P<q-1;P+=1){let A=0;if(W.isDark(K,P))A+=1;if(W.isDark(K+1,P))A+=1;if(W.isDark(K,P+1))A+=1;if(W.isDark(K+1,P+1))A+=1;if(A==0||A==4)Y+=3}for(let K=0;K<q;K+=1)for(let P=0;P<q-6;P+=1)if(W.isDark(K,P)&&!W.isDark(K,P+1)&&W.isDark(K,P+2)&&W.isDark(K,P+3)&&W.isDark(K,P+4)&&!W.isDark(K,P+5)&&W.isDark(K,P+6))Y+=40;for(let K=0;K<q;K+=1)for(let P=0;P<q-6;P+=1)if(W.isDark(P,K)&&!W.isDark(P+1,K)&&W.isDark(P+2,K)&&W.isDark(P+3,K)&&W.isDark(P+4,K)&&!W.isDark(P+5,K)&&W.isDark(P+6,K))Y+=40;let H=0;for(let K=0;K<q;K+=1)for(let P=0;P<q;P+=1)if(W.isDark(P,K))H+=1;let F=Math.abs(100*H/q/q-50)/5;return Y+=F*10,Y},z}(),f9=function(){let Z=Array(256),J=Array(256);for(let X=0;X<8;X+=1)Z[X]=1<<X;for(let X=8;X<256;X+=1)Z[X]=Z[X-4]^Z[X-5]^Z[X-6]^Z[X-8];for(let X=0;X<255;X+=1)J[Z[X]]=X;let Q={};return Q.glog=function(X){if(X<1)throw"glog("+X+")";return J[X]},Q.gexp=function(X){while(X<0)X+=255;while(X>=256)X-=255;return Z[X]},Q}(),jZ=function(Z,J){if(typeof Z.length>"u")throw Z.length+"/"+J;let Q=function(){let z=0;while(z<Z.length&&Z[z]==0)z+=1;let G=Array(Z.length-z+J);for(let W=0;W<Z.length-z;W+=1)G[W]=Z[W+z];return G}(),X={};return X.getAt=function(z){return Q[z]},X.getLength=function(){return Q.length},X.multiply=function(z){let G=Array(X.getLength()+z.getLength()-1);for(let W=0;W<X.getLength();W+=1)for(let q=0;q<z.getLength();q+=1)G[W+q]^=f9.gexp(f9.glog(X.getAt(W))+f9.glog(z.getAt(q)));return jZ(G,0)},X.mod=function(z){if(X.getLength()-z.getLength()<0)return X;let G=f9.glog(X.getAt(0))-f9.glog(z.getAt(0)),W=Array(X.getLength());for(let q=0;q<X.getLength();q+=1)W[q]=X.getAt(q);for(let q=0;q<z.getLength();q+=1)W[q]^=f9.gexp(f9.glog(z.getAt(q))+G);return jZ(W,0).mod(z)},X},D7=function(){let Z=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],J=function(z,G){let W={};return W.totalCount=z,W.dataCount=G,W},Q={},X=function(z,G){switch(G){case gZ.L:return Z[(z-1)*4+0];case gZ.M:return Z[(z-1)*4+1];case gZ.Q:return Z[(z-1)*4+2];case gZ.H:return Z[(z-1)*4+3];default:return}};return Q.getRSBlocks=function(z,G){let W=X(z,G);if(typeof W>"u")throw"bad rs block @ typeNumber:"+z+"/errorCorrectionLevel:"+G;let q=W.length/3,Y=[];for(let H=0;H<q;H+=1){let F=W[H*3+0],K=W[H*3+1],P=W[H*3+2];for(let A=0;A<F;A+=1)Y.push(J(K,P))}return Y},Q}(),h7=function(){let Z=[],J=0,Q={};return Q.getBuffer=function(){return Z},Q.getAt=function(X){let z=Math.floor(X/8);return(Z[z]>>>7-X%8&1)==1},Q.put=function(X,z){for(let G=0;G<z;G+=1)Q.putBit((X>>>z-G-1&1)==1)},Q.getLengthInBits=function(){return J},Q.putBit=function(X){let z=Math.floor(J/8);if(Z.length<=z)Z.push(0);if(X)Z[z]|=128>>>J%8;J+=1},Q},Pz=function(Z){let J=n0.MODE_NUMBER,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(W){return Q.length},X.write=function(W){let q=Q,Y=0;while(Y+2<q.length)W.put(z(q.substring(Y,Y+3)),10),Y+=3;if(Y<q.length){if(q.length-Y==1)W.put(z(q.substring(Y,Y+1)),4);else if(q.length-Y==2)W.put(z(q.substring(Y,Y+2)),7)}};let z=function(W){let q=0;for(let Y=0;Y<W.length;Y+=1)q=q*10+G(W.charAt(Y));return q},G=function(W){if("0"<=W&&W<="9")return W.charCodeAt(0)-48;throw"illegal char :"+W};return X},Oz=function(Z){let J=n0.MODE_ALPHA_NUM,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(G){return Q.length},X.write=function(G){let W=Q,q=0;while(q+1<W.length)G.put(z(W.charAt(q))*45+z(W.charAt(q+1)),11),q+=2;if(q<W.length)G.put(z(W.charAt(q)),6)};let z=function(G){if("0"<=G&&G<="9")return G.charCodeAt(0)-48;else if("A"<=G&&G<="Z")return G.charCodeAt(0)-65+10;else switch(G){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+G}};return X},wz=function(Z){let J=n0.MODE_8BIT_BYTE,Q=Z,X=FZ.stringToBytes(Z),z={};return z.getMode=function(){return J},z.getLength=function(G){return X.length},z.write=function(G){for(let W=0;W<X.length;W+=1)G.put(X[W],8)},z},Az=function(Z){let J=n0.MODE_KANJI,Q=Z,X=FZ.stringToBytes;(function(W,q){let Y=X(W);if(Y.length!=2||(Y[0]<<8|Y[1])!=q)throw"sjis not supported."})("友",38726);let z=X(Z),G={};return G.getMode=function(){return J},G.getLength=function(W){return~~(z.length/2)},G.write=function(W){let q=z,Y=0;while(Y+1<q.length){let H=(255&q[Y])<<8|255&q[Y+1];if(33088<=H&&H<=40956)H-=33088;else if(57408<=H&&H<=60351)H-=49472;else throw"illegal char at "+(Y+1)+"/"+H;H=(H>>>8&255)*192+(H&255),W.put(H,13),Y+=2}if(Y<q.length)throw"illegal char at "+(Y+1)},G},m7=function(){let Z=[],J={};return J.writeByte=function(Q){Z.push(Q&255)},J.writeShort=function(Q){J.writeByte(Q),J.writeByte(Q>>>8)},J.writeBytes=function(Q,X,z){X=X||0,z=z||Q.length;for(let G=0;G<z;G+=1)J.writeByte(Q[G+X])},J.writeString=function(Q){for(let X=0;X<Q.length;X+=1)J.writeByte(Q.charCodeAt(X))},J.toByteArray=function(){return Z},J.toString=function(){let Q="";Q+="[";for(let X=0;X<Z.length;X+=1){if(X>0)Q+=",";Q+=Z[X]}return Q+="]",Q},J},Cz=function(){let Z=0,J=0,Q=0,X="",z={},G=function(q){X+=String.fromCharCode(W(q&63))},W=function(q){if(q<0)throw"n:"+q;else if(q<26)return 65+q;else if(q<52)return 97+(q-26);else if(q<62)return 48+(q-52);else if(q==62)return 43;else if(q==63)return 47;else throw"n:"+q};return z.writeByte=function(q){Z=Z<<8|q&255,J+=8,Q+=1;while(J>=6)G(Z>>>J-6),J-=6},z.flush=function(){if(J>0)G(Z<<6-J),Z=0,J=0;if(Q%3!=0){let q=3-Q%3;for(let Y=0;Y<q;Y+=1)X+="="}},z.toString=function(){return X},z},Nz=function(Z){let J=Z,Q=0,X=0,z=0,G={};G.read=function(){while(z<8){if(Q>=J.length){if(z==0)return-1;throw"unexpected end of file./"+z}let Y=J.charAt(Q);if(Q+=1,Y=="=")return z=0,-1;else if(Y.match(/^\s$/))continue;X=X<<6|W(Y.charCodeAt(0)),z+=6}let q=X>>>z-8&255;return z-=8,q};let W=function(q){if(65<=q&&q<=90)return q-65;else if(97<=q&&q<=122)return q-97+26;else if(48<=q&&q<=57)return q-48+52;else if(q==43)return 62;else if(q==47)return 63;else throw"c:"+q};return G},yz=function(Z,J){let Q=Z,X=J,z=Array(Z*J),G={};G.setPixel=function(H,F,K){z[F*Q+H]=K},G.write=function(H){H.writeString("GIF87a"),H.writeShort(Q),H.writeShort(X),H.writeByte(128),H.writeByte(0),H.writeByte(0),H.writeByte(0),H.writeByte(0),H.writeByte(0),H.writeByte(255),H.writeByte(255),H.writeByte(255),H.writeString(","),H.writeShort(0),H.writeShort(0),H.writeShort(Q),H.writeShort(X),H.writeByte(0);let F=2,K=q(F);H.writeByte(F);let P=0;while(K.length-P>255)H.writeByte(255),H.writeBytes(K,P,255),P+=255;H.writeByte(K.length-P),H.writeBytes(K,P,K.length-P),H.writeByte(0),H.writeString(";")};let W=function(H){let F=H,K=0,P=0,A={};return A.write=function(L,y){if(L>>>y!=0)throw"length over";while(K+y>=8)F.writeByte(255&(L<<K|P)),y-=8-K,L>>>=8-K,P=0,K=0;P=L<<K|P,K=K+y},A.flush=function(){if(K>0)F.writeByte(P)},A},q=function(H){let F=1<<H,K=(1<<H)+1,P=H+1,A=Y();for(let M=0;M<F;M+=1)A.add(String.fromCharCode(M));A.add(String.fromCharCode(F)),A.add(String.fromCharCode(K));let L=m7(),y=W(L);y.write(F,P);let V=0,S=String.fromCharCode(z[V]);V+=1;while(V<z.length){let M=String.fromCharCode(z[V]);if(V+=1,A.contains(S+M))S=S+M;else{if(y.write(A.indexOf(S),P),A.size()<4095){if(A.size()==1<<P)P+=1;A.add(S+M)}S=M}}return y.write(A.indexOf(S),P),y.write(K,P),y.flush(),L.toByteArray()},Y=function(){let H={},F=0,K={};return K.add=function(P){if(K.contains(P))throw"dup key:"+P;H[P]=F,F+=1},K.size=function(){return F},K.indexOf=function(P){return H[P]},K.contains=function(P){return typeof H[P]<"u"},K};return G},Mz=function(Z,J,Q){let X=yz(Z,J);for(let q=0;q<J;q+=1)for(let Y=0;Y<Z;Y+=1)X.setPixel(Y,q,Q(Y,q));let z=m7();X.write(z);let G=Cz(),W=z.toByteArray();for(let q=0;q<W.length;q+=1)G.writeByte(W[q]);return G.flush(),"data:image/gif;base64,"+G},u7=FZ,rq=FZ.stringToBytes;function s1(){let Z=localStorage.getItem("mh-theme");return Z==="light"||Z==="dark"||Z==="system"?Z:"system"}function e1(){let Z=s1(),J=Z==="dark"||Z!=="light"&&matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.resolved=J?"dark":"light"}function E7(Z){localStorage.setItem("mh-theme",Z),e1(),f8()}function f8(){let Z=document.getElementById("theme-color-meta");if(!Z)return;let J=document.body.classList.contains("mobile")&&!document.body.classList.contains("mobile-content"),Q=getComputedStyle(document.documentElement).getPropertyValue(J?"--sidebar":"--bg").trim();if(Q)Z.setAttribute("content",Q)}function n9(Z,J){let Q=Z.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0),X=J.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0);for(let z=0;z<Math.max(Q.length,X.length);z++){let G=(Q[z]??0)-(X[z]??0);if(G!==0)return G}return 0}var c7=()=>typeof window<"u"&&!!window.metahubDesktop,_z=[{value:"light",icon:"sun",name:"浅色",desc:"始终使用明亮界面"},{value:"dark",icon:"moon",name:"深色",desc:"始终使用暗色界面"},{value:"system",icon:"monitor",name:"跟随系统",desc:"随操作系统外观自动切换"}];function xZ({label:Z,children:J}){return $("div",{class:"set-group",children:[$("div",{class:"set-group-label",children:Z},void 0,!1,void 0,this),$("div",{class:"set-panel",children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function d7({onUpdatePending:Z}={}){let[J,Q]=f(s1()),X=(z)=>{E7(z),Q(z)};return $("div",{class:"set-page",children:[$("div",{class:"set-title",children:"设置"},void 0,!1,void 0,this),$("div",{class:"set-sub",children:"个性化你的 Metahub 工作区。"},void 0,!1,void 0,this),$(xZ,{label:"外观",children:$("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"颜色主题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择界面的明暗外观。"},void 0,!1,void 0,this),$("div",{class:"theme-grid",children:_z.map((z)=>$("button",{class:"theme-card"+(J===z.value?" sel":""),"aria-pressed":J===z.value,onClick:()=>X(z.value),children:[$("span",{class:"tc-check",children:$(D,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(D,{name:z.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-name",children:z.name},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:z.desc},void 0,!1,void 0,this)]},z.value,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),typeof window<"u"&&window.metahubDesktop?.quicknote&&$(xZ,{label:"快速笔记",children:$(az,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(xZ,{label:"同步",children:[!c7()&&$(fz,{},void 0,!1,void 0,this),$(gz,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!q9()&&$(xZ,{label:"存储",children:$(Iz,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!q9()&&$(xZ,{label:"设备与授权",children:[$(lz,{},void 0,!1,void 0,this),$(nz,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(dz,{onUpdatePending:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function M9(Z){if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(1)} KB`;if(Z<1073741824)return`${(Z/1024/1024).toFixed(1)} MB`;return`${(Z/1024/1024/1024).toFixed(2)} GB`}function vz(Z){let J=Math.max(0,Math.round((Date.now()-Z)/1000));if(J<60)return"刚刚";let Q=Math.round(J/60);if(Q<60)return`${Q} 分钟前`;let X=Math.round(Q/60);if(X<24)return`${X} 小时前`;return`${Math.round(X/24)} 天前`}var kz=300000,Tz=()=>typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function Rz(Z,J=600){let[Q,X]=f(Z),z=L0(Z);return e(()=>{if(Tz()){z.current=Z,X(Z);return}let G=z.current,W=performance.now(),q=0,Y=(H)=>{let F=Math.min(1,(H-W)/J),K=1-Math.pow(1-F,3);if(X(Math.round(G+(Z-G)*K)),F<1)q=requestAnimationFrame(Y);else z.current=Z};return q=requestAnimationFrame(Y),()=>cancelAnimationFrame(q)},[Z]),Q}function Iz(){let[Z,J]=f(null),[Q,X]=f(null),[z,G]=f(!1),[W,q]=f(!1),Y=()=>{c.blobCache().then((p)=>{J(p),X(null)}).catch((p)=>X(p.message))},H=async(p=!1)=>{q(!0);try{J(await c.verifyBlobCache()),X(null)}catch(Q0){if(p)o(Q0.message)}finally{q(!1)}};e(()=>{Y(),H()},[]);let[F,K]=f(!1);e(()=>{let p=requestAnimationFrame(()=>K(!0));return()=>cancelAnimationFrame(p)},[]);let P=Rz(Z?.stats.clearableBytes??0);if(Q||!Z)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:Q?`无法读取缓存信息:${Q}`:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{stats:A,policy:L,nodes:y,buckets:V,quotaBytes:S,pinnedBytes:M}=Z,N=[...V,...L.fullNodes.filter((p)=>p.startsWith("s3://")&&!V.some((Q0)=>Q0.url===p)).map((p)=>({url:p,label:null,bucket:null}))],k=async(p)=>{G(!0);try{await c.setBlobPolicy({full_nodes:p}),await H()}catch(Q0){o(Q0.message)}finally{G(!1)}},v=(p)=>{let Q0=new Set(L.fullNodes);if(Q0.has(p))Q0.delete(p);else Q0.add(p);k([...Q0])},O=async(p)=>{G(!0);try{await c.setBlobPolicy({redundancy:p}),await H()}catch(Q0){o(Q0.message)}finally{G(!1)}},U=async()=>{if(!await b0({title:"清理腾空间",message:`将释放约 ${M9(A.clearableBytes)}。只删别处已备份的副本,文件不会丢,用到时自动取回。`,confirmLabel:"清理"}))return;G(!0);try{let Q0=await c.clearBlobCache();o(Q0.cleared?`已腾出 ${M9(Q0.freedBytes)}(${Q0.cleared} 项)`:"暂时没有可清理的"),Y()}catch(Q0){o(Q0.message)}finally{G(!1)}},B=Math.max(1,A.totalBytes),C=Math.max(0,A.retainedBytes-M),_=(p)=>p/B*100,T=_(A.clearableBytes),u=_(C),E=_(M),t=A.clearableBytes>0,$0=L.fullNodes.length===0,g=y.find((p)=>p.self),I=!!g&&L.fullNodes.includes(g.nodeId),h=!$0&&!I&&Z.lastVerifiedAt==null,m=I?"self-full":$0?"no-anchor":h?"unverified":t?"free":"safe",z0=Z.lastVerifiedAt==null||Date.now()-Z.lastVerifiedAt>kz,X0=S>0&&A.totalBytes>S&&(Z.unreachableAnchors.length>0||z0),Y0=(p)=>F?p:0;return $("div",{class:"set-block blob-pane",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"图片和大文件会先存在这台设备上,打开快。只要别处留了一份长期备份,这里随时能清——文件不会丢,需要时自动取回。"},void 0,!1,void 0,this),$("div",{class:"blob-hero",children:[$("div",{class:"blob-hero-main",children:[$("div",{class:"blob-legend",children:[$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot free"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"可释放"},void 0,!1,void 0,this),$("b",{children:M9(A.clearableBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot keep"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"保留中"},void 0,!1,void 0,this),$("b",{children:M9(C)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M>0&&$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot pin"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"已固定"},void 0,!1,void 0,this),$("b",{children:M9(M)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-total",children:["共 ",A.count," 项 · ",M9(A.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:z||W||!t,onClick:()=>void U(),children:[$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),t?`清理腾出 ${M9(A.clearableBytes)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-verify-btn",disabled:z||W,onClick:()=>void H(!0),children:[$(D,{name:"history",cls:"ico sm"+(W?" spin":"")},void 0,!1,void 0,this),W?"检查中…":"重新检查"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-verify-at",children:W?"":Z.lastVerifiedAt!=null?`${vz(Z.lastVerifiedAt)}检查过`:"未检查"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-ring"+(m==="free"?" has-free":m==="safe"?" all-safe":" locked"),children:[$("svg",{viewBox:"0 0 100 100",class:"blob-ring-svg","aria-hidden":"true",children:$("g",{transform:"rotate(-90 50 50)",children:[$("circle",{class:"blob-ring-track",cx:"50",cy:"50",r:"42",pathLength:100},void 0,!1,void 0,this),E>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Y0(E)} ${100-Y0(E)}`,"stroke-dashoffset":-(T+u)},void 0,!1,void 0,this),$("circle",{class:"blob-seg keep",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Y0(u)} ${100-Y0(u)}`,"stroke-dashoffset":-T},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Y0(T)} ${100-Y0(T)}`,"stroke-dashoffset":0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-center",children:[m==="free"&&$(n,{children:[$("div",{class:"blob-ring-big",children:M9(P)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m==="safe"&&$(n,{children:[$("div",{class:"blob-ring-check",children:$(D,{name:"check",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"都备份好了"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"暂时无需清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m==="no-anchor"&&$(n,{children:[$("div",{class:"blob-ring-lock",children:$(D,{name:"lock",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"未设置长期备份"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"指定后才能清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m==="unverified"&&$(n,{children:[$("div",{class:"blob-ring-lock",children:$(D,{name:"history",cls:"ico"+(W?" spin":"")},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:W?"检查中…":"未检查"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"检查后才知道"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m==="self-full"&&$(n,{children:[$("div",{class:"blob-ring-lock",children:$(D,{name:"database",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"本机长期备份库"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"保留全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-anchors",children:[$("div",{class:"blob-sub-title",children:"长期备份保存在"},void 0,!1,void 0,this),y.map((p)=>{let Q0=L.fullNodes.includes(p.nodeId);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(D,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[p.label||p.nodeId,p.self?" · 本机":""]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:Q0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(Q0?" on":""),role:"switch","aria-checked":Q0,disabled:z,onClick:()=>v(p.nodeId),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},p.nodeId,!0,void 0,this)}),N.map((p)=>{let Q0=L.fullNodes.includes(p.url);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(D,{name:"database",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[p.label||p.bucket||p.url," · 云端"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:Q0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(Q0?" on":""),role:"switch","aria-checked":Q0,disabled:z,onClick:()=>v(p.url),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},p.url,!0,void 0,this)}),$0&&$("div",{class:"blob-hint",children:"还没设置长期备份。先指定一处,之后就能放心清理这台设备。"},void 0,!1,void 0,this),L.fullNodes.length>1&&$("div",{class:"blob-strategy",children:[$("div",{class:"blob-sub-title",children:"清理前先确认"},void 0,!1,void 0,this),$("div",{class:"seg",children:[$("button",{class:"seg-opt"+(L.redundancy==="any"?" on":""),disabled:z||W,onClick:()=>void O("any"),children:[$("span",{class:"seg-opt-t",children:"有一处备份就行"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更省空间"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"seg-opt"+(L.redundancy==="all"?" on":""),disabled:z||W,onClick:()=>void O("all"),children:[$("span",{class:"seg-opt-t",children:"每处都备份好"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更稳妥"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z.unreachableAnchors.length>0&&$("div",{class:"blob-hint warn",children:"部分长期备份连不上,相关文件暂不清理。"},void 0,!1,void 0,this),X0&&$("div",{class:"blob-hint warn",children:"空间超了,但备份暂时离线,先没清理。"},void 0,!1,void 0,this),S>0&&$("div",{class:"blob-foot",children:["缓存超过 ",M9(S)," 时,自动清理最久没用、已有备份的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Sz(){if(typeof Worker>"u"||typeof navigator>"u")return"此浏览器不支持 Web Worker。";if(!window.isSecureContext)return"需要 HTTPS(安全上下文)。当前是 http:// 访问,浏览器不开放离线所需的 OPFS 与 Service Worker——给服务器配置 TLS(--tls-cert/--tls-key,或 Caddy / Tailscale Serve 反代;iPhone 需要受信任的证书),或在本机用 localhost 访问。";if(!navigator.storage?.getDirectory)return"此浏览器不支持 OPFS 本地存储(需要 Safari 17+ / Chrome / Firefox 较新版本)。";return null}function Vz({kind:Z,noOrigin:J,hasServerBucket:Q,deviceDirect:X}){let z=Z==="trusted",G=!J,W=G&&Q,q=X,Y=W||q,H=q&&G&&Y;return $("span",{class:"md-graph"+(z?" trusted":" light")+(H?" has-direct":""),"aria-hidden":"true",children:[$("span",{class:"md-node self",children:[$("span",{class:"md-node-ico",children:$(D,{name:"monitor",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"本设备"},void 0,!1,void 0,this),$("span",{class:"md-node-tag",children:z?"存一份":"不留存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G&&$(n,{children:[$("span",{class:"md-wire bi"},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(D,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"服务器"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y&&$(n,{children:[$("span",{class:"md-wire "+(G?"to":"bi")},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(D,{name:"cube",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"云桶"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),H&&$("span",{class:"md-direct","data-label":"直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function fz(){let Z=Sz(),[J,Q]=f(Q9()),[X,z]=f(AZ()),[G,W]=f(!1),[q,Y]=f(null),H=q9(),[F,K]=f(!1),[P,A]=f(!1);e(()=>{let U=!0,B=async()=>{let _=Q9()?(await D0("listStoragePeers").catch(()=>[])).length>0:!1,T=H?!1:(await c.listServerS3Peers().catch(()=>[])).length>0;if(!U)return;A(_),K(T)};B();let C=N9(B);return()=>{U=!1,C()}},[H]);let[L,y]=f(null),V=(U,B)=>{let C=B.currentTarget,_=C?.closest(".set-panel"),T=C?.closest(".sync-holds");if(!_||!T)return;let u=_.getBoundingClientRect(),E=248,t=28;if(window.innerWidth-u.right<E+t)return y(null);(async()=>{let $0=Q9()?(await D0("listStoragePeers").catch(()=>[])).length>0:!1,g=H?!1:(await c.listServerS3Peers().catch(()=>[])).length>0;A($0),K(g)})(),y({kind:U,left:u.right+t,top:T.getBoundingClientRect().top})},S=()=>y(null);e(()=>N9((U)=>z({...U})),[]),e(()=>{if(!J||!navigator.storage?.estimate)return;let U=!0,B=()=>navigator.storage.estimate().then((_)=>{if(U&&_.usage!=null)Y((_.usage/1024/1024).toFixed(1))});B();let C=N9(()=>void B());return()=>{U=!1,C()}},[J]);let M=async()=>{if(!await b0({title:"重置本地副本",message:"将删除此浏览器里的全部本地数据(服务器数据不受影响),并停用离线副本。未同步的本地修改会丢失——建议先「立即同步」。",confirmLabel:"删除并重置",danger:!0}))return;W(!0);try{await l6(),Q(!1),o("本地副本已重置")}catch(B){o(`重置失败:${B.message}`)}finally{W(!1)}},N=async()=>{W(!0);try{await d6(),Q(!0),o("离线副本已启用,正在下载数据…")}catch(U){o(`启用失败:${U.message}`)}finally{W(!1)}},k=async()=>{if(!await b0({title:"停用离线副本",message:"此浏览器将恢复纯在线模式。已下载的本地数据保留在浏览器里,重新启用后从断点续传。",confirmLabel:"停用",danger:!0}))return;let B=typeof navigator<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.controller!=null;W(!0);try{if(await a6(),Q(!1),o("已停用离线副本"),B)location.reload()}finally{W(!1)}},v=()=>{if(!J)return"轻量模式 · 仅在线读写,断网不可用。";if(X.state==="error")return`副本异常(已自动回退在线模式):${X.error??"未知错误"}`;if(X.state==="hydrating")return`正在下载数据… 已接收 ${X.hydrated??0} 条变更`;if(X.lastSync){let U=UZ(X.lastSync.at);return X.lastSync.ok?`本地优先已生效 · 上次同步 ${U}(推送 ${X.lastSync.pushed} / 拉取 ${X.lastSync.pulled})`:`上次同步失败(${U}):${X.lastSync.error??""} — 本地读写不受影响,恢复网络后自动重试`}return"等待首次同步…"};if(Z)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"这台设备为轻量模式:仅在线读写,不在本机保存。"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["⚠ 此设备无法「信任并本机保存」:",Z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let O=(U)=>$(Vz,{kind:U,noOrigin:H,hasServerBucket:F,deviceDirect:U==="trusted"&&P},void 0,!1,void 0,this);return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择这台设备如何使用工作区,之后可随时修改。"},void 0,!1,void 0,this),$("div",{class:"theme-grid sync-holds",children:[$("button",{class:"theme-card mode-card"+(!J?" sel":""),"aria-pressed":!J,disabled:G,onClick:()=>J&&k(),onMouseEnter:(U)=>V("light",U),onMouseLeave:S,onFocus:(U)=>V("light",U),onBlur:S,children:[$("span",{class:"tc-check",children:$(D,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(D,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"轻量模式"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:"仅在线使用"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"theme-card mode-card"+(J?" sel":""),"aria-pressed":J,disabled:G,onClick:()=>!J&&N(),onMouseEnter:(U)=>V("trusted",U),onMouseLeave:S,onFocus:(U)=>V("trusted",U),onBlur:S,children:[$("span",{class:"tc-check",children:$(D,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(D,{name:"lock"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"信任此设备"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:G&&!J?"启用中…":"本机保存,支持同步"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),L&&$("div",{class:"mode-aside",style:{top:L.top+"px",left:L.left+"px"},children:$("div",{class:"mp-show",children:[O(L.kind),$("span",{class:"mp-cap",children:L.kind==="trusted"?"本机存一份 · 离线也能读写":"仅在线读写 · 不在本机保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),J&&$("div",{class:"peer-actions",style:{marginTop:12},children:[$("button",{class:"btn btn-secondary",disabled:G,onClick:()=>D9(),children:[$(D,{name:"share",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",disabled:G,onClick:M,children:"重置本地副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:[v(),J&&X.node?` · 节点 ${X.node}`:"",J&&q?` · 本地占用 ${q} MB`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function b8(Z){try{return new URL(Z).host}catch{return Z}}function bz(Z){return Z.length<=8?Z.slice(0,2)+"…":Z.slice(0,4)+"…"+Z.slice(-4)}function gz(){let Z=q9(),J=c7(),[Q,X]=f(Q9()),[z,G]=f(null),[W,q]=f(null),Y=()=>{if(Q9())D0("listStoragePeers").then(q).catch(()=>{});else q(null)},H=()=>{if(Y(),!Z)c.listServerS3Peers().then(G).catch((O)=>o(`加载失败:${O.message}`))};e(()=>{return H(),N9(()=>{X(Q9()),Y()})},[]);let F=new Set((W??[]).map((O)=>O.url)),K=!J&&Q,P=()=>X9($(cz,{toServer:!Z,alsoReplica:!Z&&K,onDone:()=>{d0(),H()}},void 0,!1,void 0,this)),A=(O)=>X9($(jz,{peer:O,onDone:()=>{d0(),H()}},void 0,!1,void 0,this)),L=async()=>{try{if(Z)await D0("sync");else if(await Promise.all((z??[]).map((O)=>c.syncPeer(O.url))),K)await D0("sync").catch(()=>{});o("已触发同步"),H()}catch(O){o(`同步失败:${O.message}`)}},y=async(O,U)=>{if(!await b0({title:"移除存储桶",message:`确定移除 ${U}?将停止与该存储桶同步(桶内数据不受影响)。`,confirmLabel:"移除",danger:!0}))return;if(Z)await D0("removeStorageReplica",O).catch((C)=>o(C.message));else if(await c.removePeer(O).catch((C)=>o(C.message)),K)await D0("removeStorageReplica",O).catch(()=>{});H()},V=async(O,U)=>{if(!await b0({title:"取消本设备直连",message:`这台设备将不再直连 ${U}(存储桶仍在服务器上;本设备在线时照常经服务器同步)。`,confirmLabel:"取消直连",danger:!0}))return;await D0("removeStorageReplica",O).catch((C)=>o(C.message)),H()},S=(O)=>Z?D0("storagePeerConfig",O):c.serverS3Config(O),M=((Z?W:z)??[]).map((O)=>({url:O.url,name:O.label||O.bucket||O.url})),N=()=>X9($(Ez,{buckets:M,getConfig:S,server:!Z,onPaired:()=>{d0(),H()}},void 0,!1,void 0,this)),k=(O,U,B)=>I0(O,(C)=>$(n,{children:[B&&$(W0,{icon:"link",label:"取消本设备直连",onClick:()=>{C(),V(U.url,U.label||U.bucket||U.url)}},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"移除存储桶",danger:!0,onClick:()=>{C(),y(U.url,U.label||U.bucket||U.url)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),v=(Z?W:z)?.length?!0:!1;return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"在所有设备间同步"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"连一个云端存储桶,手机、电脑就保持同步——不必开公网服务器,对方离线也收得到,内容端到端加密。"},void 0,!1,void 0,this),$("div",{class:"set-meta",children:$("span",{class:"set-meta-item",children:[$(D,{name:J||!Z?"globe":"cube",cls:"ico sm"},void 0,!1,void 0,this),J?"连一个云端存储桶,这台设备就和你的手机、其他电脑自动保持同步。":Z?"这台设备就是工作区的家,其他设备扫码加入即可一起同步。":"存储桶连在服务器上,所有设备自动共享;信任本设备后,它离线、在外时也能直接同步。"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("details",{class:"set-disclosure",children:[$("summary",{children:"它是怎么工作的"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:['存储桶只当"哑"中转:每台设备把自己的变更加密上传、再拉取别人的——谁都不必同时在线,也不需要公网 IP。',J?"这台设备把自己的变更发布到桶,其他设备从桶拉取;新设备扫码加入即可一起同步。":Z?"这台设备把整个工作区发布到桶,新设备扫码加入后从桶秒恢复。":"密钥只存在服务器,不会同步到浏览器;信任的设备重输一次密钥即可直接同步,离线、在外也不中断。添加时会自动为本站点开通桶的访问权限(CORS)。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z&&!Q?$("div",{class:"peer-sub",style:"margin-top:12px",children:"⚠ 请先在上方把这台设备设为「信任此设备」,再连接存储桶。"},void 0,!1,void 0,this):$(n,{children:[$("div",{class:"peer-actions",style:{marginTop:14},children:[$("button",{class:"btn btn-primary",onClick:P,children:[$(D,{name:"cube",cls:"ico sm"},void 0,!1,void 0,this)," 连接存储桶"]},void 0,!0,void 0,this),(!Z||M.length>0)&&$("button",{class:"btn btn-secondary",onClick:N,children:[$(D,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)," 添加设备"]},void 0,!0,void 0,this),v&&$("button",{class:"btn btn-secondary",onClick:L,children:[$(D,{name:"cloudUp",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-list flush",children:J?z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能保持同步。"},void 0,!1,void 0,this):z.map((O)=>{let U=O.label||O.bucket||O.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(O.enabled?O.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:U},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[O.endpoint?b8(O.endpoint)+" · ":"","最近同步 ",UZ(O.lastSyncAt),O.status==="error"&&O.error?` · 错误:${O.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>y(O.url,U),children:$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O.url,!0,void 0,this)}):Z?W==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):W.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,手机、电脑就能免公网服务器互通。"},void 0,!1,void 0,this):W.map((O)=>{let U=O.label||O.bucket||O.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(O.enabled?O.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:U},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:$("span",{class:"peer-tag",children:[$(D,{name:"upload",cls:"ico"},void 0,!1,void 0,this)," 本机发布"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[O.endpoint?b8(O.endpoint)+" · ":"","最近同步 ",UZ(O.lastSyncAt),O.status==="error"&&O.error?` · 错误:${O.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>y(O.url,U),children:$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O.url,!0,void 0,this)}):z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能免公网服务器互通。"},void 0,!1,void 0,this):z.map((O)=>{let U=O.label||O.bucket||O.url,B=Q&&F.has(O.url);return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(O.enabled?O.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:U},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:[$("span",{class:"peer-tag",children:[$(D,{name:"globe",cls:"ico"},void 0,!1,void 0,this)," 服务器同步"]},void 0,!0,void 0,this),Q?B?$("span",{class:"peer-tag ok",children:[$(D,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 本机已直连"]},void 0,!0,void 0,this):$("button",{class:"peer-tag act",onClick:()=>A(O),children:[$(D,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 让本机直接同步"]},void 0,!0,void 0,this):$("span",{class:"peer-tag muted",children:"信任本设备后可直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",children:[O.endpoint?b8(O.endpoint)+" · ":"","最近同步 ",UZ(O.lastSyncAt),O.status==="error"&&O.error?` · 错误:${O.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"更多",onClick:(C)=>k(C,O,B),children:$(D,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O.url,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function jz({peer:Z,onDone:J}){let[Q,X]=f(""),[z,G]=f(""),[W,q]=f(!1),Y=Z.endpoint?b8(Z.endpoint):"",H=async()=>{if(!Q.trim())return o("密钥必填");if(Z.encrypt&&!z)return o("加密口令必填");if(!Z.endpoint||!Z.bucket||!Z.accessKeyId)return o("服务器未提供该桶的完整配置,无法在本设备激活");q(!0);try{let F={endpoint:Z.endpoint,region:Z.region||"auto",bucket:Z.bucket,prefix:Z.prefix||"metahub",accessKeyId:Z.accessKeyId,secretAccessKey:Q.trim(),encrypt:Z.encrypt,...Z.virtualHostedStyle!=null?{virtualHostedStyle:Z.virtualHostedStyle}:{},publish:!1};await D0("addStorageReplica",F,z),o("已让本机直连存储桶 · 离线、在外也能直接同步"),J()}catch(F){let K=F.message;o(a7(K)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`启用失败:${K}`),q(!1)}};return $(H9,{title:"在本设备启用直连",sub:"服务器已配置这个存储桶。为保护密钥,服务器不会把它同步到浏览器——再输入一次密钥,这台设备就能与桶直接同步(离线、在外也不中断)。",footer:$(n,{children:[$("button",{class:"btn btn-secondary",onClick:d0,disabled:W,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:H,disabled:W,children:W?"连接中…":"启用直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"activate-id",children:[$("div",{class:"activate-id-row",children:[$("span",{children:"存储桶"},void 0,!1,void 0,this),$("b",{children:Z.bucket},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y&&$("div",{class:"activate-id-row",children:[$("span",{children:"服务地址"},void 0,!1,void 0,this),$("b",{children:Y},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.accessKeyId&&$("div",{class:"activate-id-row",children:[$("span",{children:"访问密钥 ID"},void 0,!1,void 0,this),$("b",{children:bz(Z.accessKeyId)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:!0,placeholder:"重新输入该桶的密钥",value:Q,onInput:(F)=>X(F.target.value),onKeyDown:(F)=>!Z.encrypt&&F.key==="Enter"&&H()},void 0,!1,void 0,this),Z.encrypt&&$(n,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"与其它设备相同的加密口令",value:z,onInput:(F)=>G(F.target.value),onKeyDown:(F)=>F.key==="Enter"&&H()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"跨设备共用的那把加密钥——用它解开桶里别人的数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Z6="mh_shell_base";function xz(Z,J){return`${(Z||location.origin).replace(/\/+$/,"")}/#enroll=${Z1(J)}`}function i7({data:Z}){let J=u7(0,"M");return J.addData(Z),J.make(),$("div",{class:"qr-box",dangerouslySetInnerHTML:{__html:J.createSvgTag({cellSize:4,margin:2,scalable:!0})}},void 0,!1,void 0,this)}function hZ({text:Z,label:J,done:Q,primary:X}){return $("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),style:{width:"100%",marginTop:10},onClick:()=>{navigator.clipboard?.writeText(Z),o(Q)},children:[$(D,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)," ",J]},void 0,!0,void 0,this)}function Dz({config:Z}){let[J,Q]=f(()=>{try{return localStorage.getItem(Z6)||location.origin}catch{return location.origin}}),X=xz(J,Z),z=(G)=>{Q(G);try{G?localStorage.setItem(Z6,G):localStorage.removeItem(Z6)}catch{}};return $(n,{children:[$(i7,{data:X},void 0,!1,void 0,this),$("div",{class:"field-label",children:"壳地址(手机访问的静态站点域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:J,onInput:(G)=>z(G.target.value)},void 0,!1,void 0,this),$(hZ,{text:X,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"手机相机扫码打开,输入加密口令即可同步。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hz({config:Z}){let J=Z1(Z),Q=`mh config peer add --s3 --enroll ${J}`;return $(n,{children:[$("div",{class:"field-label",children:"在另一台电脑的终端运行"},void 0,!1,void 0,this),$("div",{class:"enroll-cmd",children:Q},void 0,!1,void 0,this),$(hZ,{text:Q,label:"复制命令",done:"已复制命令",primary:!0},void 0,!1,void 0,this),$(hZ,{text:J,label:"复制接入码",done:"已复制接入码"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["对方运行后会提示输入加密口令。也可在 ",$("code",{children:"mh config"},void 0,!1,void 0,this)," 向导选「粘贴接入码加入存储」。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function mz({code:Z,exp:J}){let[Q,X]=f(Math.max(0,Math.round((J-Date.now())/1000)));e(()=>{let W=setInterval(()=>X(Math.max(0,Math.round((J-Date.now())/1000))),1000);return()=>clearInterval(W)},[J]);let z=Math.floor(Q/60),G=String(Q%60).padStart(2,"0");return $(n,{children:[$("div",{class:"pair-code",children:Z},void 0,!1,void 0,this),$("div",{class:"muted",style:{textAlign:"center",marginTop:8},children:Q>0?`${z}:${G} 后过期`:"已过期,请重新生成"},void 0,!1,void 0,this),$(hZ,{text:Z,label:"复制配对码",done:"已复制配对码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uz({onPaired:Z}){let[J,Q]=f(null),[X,z]=f(!1),G=async()=>{z(!0);try{Q(await c.newPairingCode())}catch(N){o(`生成失败:${N.message}`)}finally{z(!1)}},[W,q]=f(""),[Y,H]=f(""),[F,K]=f(location.origin),[P,A]=f(!1),L=async()=>{if(!W.trim()||!Y.trim())return o("地址和配对码必填");A(!0);try{let N=await c.addPeerByPairing({url:W.trim(),code:Y.trim(),self_url:F.trim()||void 0});await c.syncPeer(N.url).catch(()=>{}),o(`已配对 ${N.url}`),Z()}catch(N){o(`配对失败:${N.message}`),A(!1)}},[y,V]=f(()=>{try{return localStorage.getItem(J6)||location.origin}catch{return location.origin}}),S=(N)=>{V(N);try{N?localStorage.setItem(J6,N):localStorage.removeItem(J6)}catch{}},M=pz(y,QJ());return $(n,{children:[$("div",{class:"enroll-section",children:"邀请另一台服务器配对"},void 0,!1,void 0,this),J?$(mz,{code:J.code,exp:J.exp},void 0,!1,void 0,this):$("button",{class:"btn btn-secondary",style:{width:"100%"},disabled:X,onClick:G,children:[$(D,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)," ",X?"生成中…":"生成本机配对码"]},void 0,!0,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"已有对方的配对码?"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"对方服务器地址"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"http://192.168.1.10:7777",value:W,onInput:(N)=>q(N.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"配对码"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"对方「生成本机配对码」得到的码",value:Y,onInput:(N)=>H(N.target.value),onKeyDown:(N)=>N.key==="Enter"&&L()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"本机可达地址(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"留空则仅本机主动同步",value:F,onInput:(N)=>K(N.target.value)},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",style:{width:"100%",marginTop:10},disabled:P,onClick:L,children:P?"配对中…":"配对"},void 0,!1,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"在手机上打开本服务器"},void 0,!1,void 0,this),$(i7,{data:M},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务器地址(手机访问的域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:y,onInput:(N)=>S(N.target.value)},void 0,!1,void 0,this),$(hZ,{text:M,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 含访问令牌,请勿公开分享。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Ez({buckets:Z,getConfig:J,server:Q,onPaired:X}){let z=Z.length>0,G=[...z?[{id:"phone",label:"手机扫码"},{id:"cli",label:"电脑 / 命令行"}]:[],...Q?[{id:"server",label:"高级:服务器配对"}]:[]],[W,q]=f(G[0]?.id??"server"),[Y,H]=f(Z[0]?.url??""),[F,K]=f(null),[P,A]=f("");return e(()=>{if(!z||!Y)return;let L=!0;return K(null),A(""),J(Y).then((y)=>{if(!L)return;y?K(y):A("找不到该存储的配置")}).catch((y)=>L&&A(y.message)),()=>{L=!1}},[Y]),$(H9,{title:"添加设备",sub:"让另一台设备加入同一个工作区——手机扫码,或在电脑上粘贴接入码。",footer:$("button",{class:"btn btn-primary",onClick:d0,children:"完成"},void 0,!1,void 0,this),width:420,children:[G.length>1&&$("div",{class:"add-tabs",children:G.map((L)=>$("button",{class:"add-tab"+(W===L.id?" on":""),onClick:()=>q(L.id),children:L.label},L.id,!1,void 0,this))},void 0,!1,void 0,this),(W==="phone"||W==="cli")&&$(n,{children:[Z.length>1&&$(n,{children:[$("div",{class:"field-label",children:"存储桶"},void 0,!1,void 0,this),$("select",{class:"text-input",value:Y,onChange:(L)=>H(L.target.value),children:Z.map((L)=>$("option",{value:L.url,children:L.name},L.url,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P?$("div",{class:"enroll-err",children:P},void 0,!1,void 0,this):!F?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):W==="phone"?$(Dz,{config:F},void 0,!1,void 0,this):$(hz,{config:F},void 0,!1,void 0,this),F&&$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 接入码含桶访问密钥,请勿公开分享;不含加密口令——新设备需另输口令。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W==="server"&&$(uz,{onPaired:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function a7(Z){return/failed to fetch|load failed|networkerror|cors/i.test(Z)}var J6="mh_server_base";function pz(Z,J){let Q=(Z||location.origin).replace(/\/+$/,"");return J?`${Q}/?token=${encodeURIComponent(J)}`:Q}var DZ=[{id:"r2",name:"Cloudflare R2",region:"auto",ph:"https://<账户ID>.r2.cloudflarestorage.com",hint:"R2 控制台 → 管理 R2 API 令牌,创建 S3 凭据;区域填 auto。免费额度 10GB。"},{id:"s3",name:"Amazon S3",region:"us-east-1",ph:"https://s3.<区域>.amazonaws.com",hint:"IAM 用户的访问密钥;区域如 us-east-1。"},{id:"minio",name:"MinIO",region:"us-east-1",ph:"https://minio.你的域名",hint:"自建 MinIO 的访问地址与 access / secret key。"},{id:"cos",name:"腾讯云 COS",region:"ap-shanghai",ph:"https://<桶名-APPID>.cos.<区域>.myqcloud.com",hint:"桶名须含 APPID,用虚拟主机风格地址(host 以桶名开头)。"},{id:"custom",name:"自定义",region:"auto",ph:"https://s3.example.com",hint:"任何 S3 兼容对象存储。"}];function cz({onDone:Z,toServer:J,alsoReplica:Q}){let[X,z]=f(""),[G,W]=f(""),[q,Y]=f("auto"),[H,F]=f(""),[K,P]=f(""),[A,L]=f("metahub"),[y,V]=f(!0),[S,M]=f(""),[N,k]=f(!1),[v,O]=f("r2"),U=DZ.find((_)=>_.id===v)??DZ[4],B=(_)=>{O(_);let T=DZ.find((u)=>u.id===_);if(T&&DZ.some((u)=>u.region===q))Y(T.region)},C=async()=>{if(!X.trim()||!G.trim()||!H.trim()||!K.trim()){o("服务地址、桶名称、访问密钥 ID、密钥都要填");return}if(y&&!S){o("加密口令必填(或关闭加密)");return}k(!0);try{let _={endpoint:X.trim(),region:q.trim()||"auto",bucket:G.trim(),prefix:A.trim()||"metahub",accessKeyId:H.trim(),secretAccessKey:K.trim(),encrypt:y};if(J){if(await c.addServerS3Peer({..._,passphrase:S,corsOrigins:[location.origin]}),Q)await D0("addStorageReplica",{..._,publish:!1},S)}else await D0("addStorageReplica",_,S);o(J?Q?"已连接存储桶 · 服务器开始同步到桶,这台设备也直接同步":"已连接存储桶 · 服务器开始同步到桶":"已连接存储桶 · 这台设备开始同步到桶"),Z()}catch(_){let T=_.message;o(a7(T)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE(R2 控制台一条规则即可)。":`添加失败:${T}`),k(!1)}};return $(H9,{title:"连接存储桶",sub:"连接一个 S3 兼容存储桶,所有设备就能同步——不需要公网服务器。新桶自动初始化;已有桶用相同加密口令即可加入。",footer:$(n,{children:[$("button",{class:"btn btn-secondary",onClick:d0,disabled:N,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:C,disabled:N,children:N?"连接中…":"连接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"存储服务商"},void 0,!1,void 0,this),$("div",{class:"provider-grid",children:DZ.map((_)=>$("button",{class:"provider-chip"+(v===_.id?" sel":""),"aria-pressed":v===_.id,onClick:()=>B(_.id),children:_.name},_.id,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"set-hint",children:U.hint},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务地址"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:U.ph,value:X,onInput:(_)=>z(_.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"桶名称"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"my-metahub",value:G,onInput:(_)=>W(_.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"访问密钥 ID"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"Access Key ID",value:H,onInput:(_)=>F(_.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"Secret Access Key",value:K,onInput:(_)=>P(_.target.value)},void 0,!1,void 0,this),$("label",{class:"set-check-row",style:{marginTop:14},children:[$("input",{type:"checkbox",checked:y,onChange:(_)=>V(_.target.checked)},void 0,!1,void 0,this),$("span",{children:"端到端加密(强烈建议;关闭后文件以明文存放,仅限完全信任的存储)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y&&$(n,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"新桶以此创建;其它设备用同一口令加入",value:S,onInput:(_)=>M(_.target.value),onKeyDown:(_)=>_.key==="Enter"&&C()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"这是跨设备共用的一把加密钥——记牢它,换设备 / 加入已有桶时都要用它解开数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("details",{class:"set-disclosure",style:{marginTop:14},children:[$("summary",{children:"进阶"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:[$("div",{class:"field-label",style:{marginTop:0},children:"区域"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:U.region,value:q,onInput:(_)=>Y(_.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"大多按服务商默认即可(R2 用 auto)。"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"metahub",value:A,onInput:(_)=>L(_.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"同一个桶里隔离多个工作区时用;默认 metahub。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function dz({onUpdatePending:Z}){let J=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0,[Q,X]=f(null),[z,G]=f(null),[W,q]=f(null),[Y,H]=f(null),[F,K]=f("idle"),[P,A]=f("");e(()=>{c.version().then((k)=>G(k.version)).catch(()=>G(null)),(typeof window<"u"?window.metahubDesktop:void 0)?.appVersion?.().then(X).catch(()=>X(null)),J?.installedVersion().then(q).catch(()=>q(null))},[]),e(()=>{if(F==="idle"&&z&&W&&n9(W,z)>0)K("staged"),Z?.(!0)},[z,W]);let L=()=>{if(z&&W)return n9(W,z)>0?W:z;return W??z},y=()=>!!(z&&W&&n9(W,z)>0),V=async()=>{K("checking"),A("");try{let{latest:N}=await J.check();if(!N){A("无法获取最新版本(网络不可用或 GitHub API 受限)"),K("error");return}let k=L();if(!k||n9(N,k)>0)H(N),K("available"),Z?.(!0);else o("已是最新版本"),K(y()?"staged":"idle")}catch(N){A(N.message),K("error")}},S=async()=>{K("downloading"),A("");try{let N=await J.download();if(N)q(N),K("staged"),Z?.(!0),o(`已下载 v${N}`);else o("已是最新版本"),K(y()?"staged":"idle")}catch(N){A(N.message),K("error")}},M=null;if(J)switch(F){case"checking":M=$("span",{class:"ver-act","aria-disabled":"true",children:"检查中…"},void 0,!1,void 0,this);break;case"downloading":M=$("span",{class:"ver-act","aria-disabled":"true",children:"下载中…"},void 0,!1,void 0,this);break;case"available":M=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:["新版本 ",$("span",{class:"ver-num",children:Y},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:S,title:`下载并更新到 v${Y}`,children:"下载"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"staged":M=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:[$("span",{class:"ver-num",children:W},void 0,!1,void 0,this)," 待重启"]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:()=>void J.restart(),title:`重启应用以更新到 v${W}`,children:"重启"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"error":M=$("span",{class:"ver-up err",children:[$("span",{class:"ver-msg",children:"检查失败"},void 0,!1,void 0,this),$("button",{class:"ver-act",onClick:V,title:P||"重试",children:"重试"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;default:M=$("button",{class:"ver-act",onClick:V,children:"检查更新"},void 0,!1,void 0,this)}return $("div",{class:"set-footer",children:[Q&&$("span",{children:["App ",$("span",{class:"ver-num",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Q&&z&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),z&&$("span",{children:["Core ",$("span",{class:"ver-num",children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M&&(z||Q)&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),M]},void 0,!0,void 0,this)}var $6="CommandOrControl+Shift+Space";function iz(Z){if(["Control","Meta","Alt","Shift"].includes(Z.key))return null;let J=[];if(Z.metaKey||Z.ctrlKey)J.push("CommandOrControl");if(Z.altKey)J.push("Alt");if(Z.shiftKey)J.push("Shift");let Q=Z.key;if(Q===" ")Q="Space";else if(Q.startsWith("Arrow"))Q=Q.slice(5);else if(Q.length===1)Q=Q.toUpperCase();if(J.length===0)return null;return J.push(Q),J.join("+")}function p7(Z){let J=typeof window<"u"&&window.metahubDesktop?.platform==="darwin";return Z.replace("CommandOrControl",J?"⌘":"Ctrl").replace("Alt",J?"⌥":"Alt").replace("Shift",J?"⇧":"Shift").split("+").join(J?" ":"+")}function az(){let Z=window.metahubDesktop.quicknote,[J,Q]=f($6),[X,z]=f(!1),[G,W]=f(!1);e(()=>{Z.getSettings().then((F)=>{Q(F.shortcut),z(F.alwaysOnTop)}).catch((F)=>o(`加载失败:${F.message}`))},[]);let q=async(F)=>{try{let K=await Z.setShortcut(F);Q(K.shortcut),o(`快捷键已设为 ${p7(K.shortcut)}`)}catch(K){o(`设置失败:${K.message}`)}},Y=(F)=>{if(F.preventDefault(),F.key==="Escape"){W(!1);return}let K=iz(F);if(!K)return;W(!1),q(K)},H=async()=>{let F=!X;z(F);try{z(await Z.setAlwaysOnTop(F))}catch(K){z(!F),o(`设置失败:${K.message}`)}};return $("div",{class:"set-block",children:[$("div",{class:"set-block-desc",children:"用全局快捷键随时唤起小窗记录想法。小窗也可从菜单栏图标打开。"},void 0,!1,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"唤起快捷键"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"点击下方按钮,然后按下你想用的组合键。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary qn-shortcut"+(G?" capturing":""),onClick:()=>W(!0),onBlur:()=>W(!1),onKeyDown:G?Y:void 0,children:G?"按下组合键…":p7(J)},void 0,!1,void 0,this),J!==$6&&$("button",{class:"btn btn-ghost",title:"重置默认",onClick:()=>void q($6),children:"重置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"默认始终置顶"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"小窗浮在其他窗口之上;也可在小窗内用 \uD83D\uDCCC 按钮切换。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),"aria-pressed":X,onClick:()=>void H(),children:X?"已开启":"已关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function UZ(Z){if(!Z)return"从未";return new Date(Z).toLocaleString()}function lz(){let[Z,J]=f(null),Q=()=>c.listPeers().then(J).catch((q)=>o(`加载失败:${q.message}`));e(()=>{Q()},[]);let X=async(q)=>{try{let Y=await c.syncPeer(q.url);o(Y.ok?`已同步:推送 ${Y.pushed},拉取 ${Y.pulled}`:`同步失败:${Y.error}`),Q()}catch(Y){o(`同步失败:${Y.message}`)}},z=async(q)=>{await c.updatePeer(q.url,{enabled:!q.enabled}).catch((Y)=>o(Y.message)),Q()},G=async(q)=>{if(!await b0({title:"移除同步设备",message:`确定移除 ${q.url}?将停止与该设备的数据同步。`,confirmLabel:"移除",danger:!0}))return;await c.removePeer(q.url).catch((H)=>o(H.message)),Q()},W=(q,Y)=>I0(q,(H)=>$(n,{children:[$(W0,{icon:"share",label:"立即同步",onClick:()=>{H(),X(Y)}},void 0,!1,void 0,this),$(W0,{icon:Y.enabled?"eyeOff":"check",label:Y.enabled?"禁用":"启用",onClick:()=>{H(),z(Y)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"移除",danger:!0,onClick:()=>{H(),G(Y)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"同步设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"已直接配对的设备(服务器 HTTP 双向同步)。新增请用上方「同步 → 添加设备 → 高级:服务器配对」。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有配对的设备。"},void 0,!1,void 0,this):Z.map((q)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(q.enabled?q.last_status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:q.label||q.url},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[q.enabled?"已启用":"已禁用"," · 最近同步 ",UZ(q.last_success_at),q.last_status==="error"&&q.last_error?` · 错误:${q.last_error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",onClick:(Y)=>W(Y,q),children:$(D,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},q.url,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nz(){let[Z,J]=f(null),Q=()=>c.listGrants().then(J).catch((z)=>o(`加载失败:${z.message}`));e(()=>{Q()},[]);let X=async(z)=>{if(!await b0({title:"吊销凭据",message:`吊销后,持有此凭据的设备${z.peer_url?`(${z.peer_url})`:""}将无法再同步进本机。`,confirmLabel:"吊销",danger:!0}))return;await c.revokeGrant(z.token).catch((W)=>o(W.message)),Q()};return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"已授权设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"本机签发、允许其他设备同步进来的凭据。吊销即断开对方的入站访问。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有签发任何凭据。"},void 0,!1,void 0,this):Z.map((z)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot on"},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:z.peer_url||"(未知地址)"},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[z.token.slice(0,8),"… · 签发于 ",UZ(z.created_at)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"吊销",onClick:()=>X(z),children:$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},z.token,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var mZ=(Z)=>location.origin+"/sites/"+Z+"/",rz=(Z)=>(/\.([a-z0-9]+)$/i.exec(Z)?.[1]??"").toLowerCase(),n7=(Z)=>Z.startsWith("image/");function r7(Z){let J=Number(Z.split("-")[0]);if(!Number.isFinite(J)||J<=0)return"—";return new Date(J).toISOString().slice(0,10)}function oz(Z){let J=rz(Z.path);if(["html","htm","js","mjs","css","json","xml"].includes(J))return"code";if(n7(Z.content_type))return"file";if(["md","txt"].includes(J))return"text";return"file"}function uZ(Z){navigator.clipboard?.writeText(Z).catch(()=>{}),o("已复制")}function o7(){let[Z,J]=f(null),[Q,X]=f(null),[z,G]=f(null),W=()=>c.listSites().then((H)=>{J(H),X((F)=>F?H.find((K)=>K.id===F.id)??null:null)}).catch((H)=>o(`加载失败:${H.message}`));e(()=>{W()},[]);let q=()=>X9($(tz,{onCreated:(H)=>{W(),X(H)}},void 0,!1,void 0,this)),Y=(H,F,K)=>{I0(H,(P)=>$(n,{children:[$(W0,{icon:"externalLink",label:"复制访问地址",onClick:()=>{P(),uZ(mZ(F.name))}},void 0,!1,void 0,this),$(W0,{icon:"settings",label:"修改标题…",onClick:async()=>{P();let A=await L9({title:"修改标题",label:"标题",value:F.title??F.name});if(A==null)return;try{await c.updateSite(F.id,{title:A})}catch(L){return o(L.message)}W()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除站点",danger:!0,onClick:async()=>{if(P(),!await b0({title:"删除站点?",message:`「${F.name}」及其 ${F.file_count} 个文件将被删除。`,confirmLabel:"删除",danger:!0}))return;try{await c.deleteSite(F.id)}catch(L){return o(L.message)}if(K)X(null);W()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"db",children:[$("div",{class:"db-head",children:[$("div",{class:"db-icon",children:"\uD83C\uDF10"},void 0,!1,void 0,this),$("div",{children:[$("div",{class:"db-title",children:"站点管理"},void 0,!1,void 0,this),$("div",{class:"db-desc",children:"静态文件站点 · 通过 /sites/<name>/ 对外提供,随同步无冲突复制"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"toolbar",children:[$("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:q,children:[$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z==null?$("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"site-empty",children:[$("div",{class:"ei",children:"\uD83C\uDF10"},void 0,!1,void 0,this),$("div",{class:"et",children:"还没有站点"},void 0,!1,void 0,this),$("div",{class:"ed",children:"站点是一个命名文件桶,发布后可通过 /sites/<name>/ 直接访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:q,children:[$(D,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$(n,{children:[$("div",{class:"sites-grid",children:Z.map((H)=>$("div",{class:"site-card",onClick:()=>X(H),children:[$("div",{class:"site-card-head",children:[$("span",{class:"si",children:$(D,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"site-card-id",children:[$("div",{class:"slug",children:H.name},void 0,!1,void 0,this),$("div",{class:"ttl"+(H.title?"":" muted"),children:H.title||"未命名站点"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"site-addr",title:"点击复制访问地址",onClick:(F)=>{F.stopPropagation(),uZ(mZ(H.name))},children:[$(D,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:mZ(H.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-meta",children:[$("span",{children:[$("b",{children:H.file_count},void 0,!1,void 0,this)," 文件"]},void 0,!0,void 0,this),$("span",{class:"dot",children:"·"},void 0,!1,void 0,this),$("span",{children:r7(H.created_hlc)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-foot",children:[$("button",{class:"btn btn-secondary",style:{flex:1},onClick:(F)=>{F.stopPropagation(),G(H)},children:[$(D,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),"访问"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(F)=>{F.stopPropagation(),Y(F,H)},children:$(D,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},H.id,!0,void 0,this))},void 0,!1,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",Z.length," 个站点"]},void 0,!0,void 0,this),$("span",{children:[Z.reduce((H,F)=>H+F.file_count,0)," 个文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Q&&$(sz,{site:Q,onClose:()=>X(null),onVisit:()=>G(Q),onMenu:(H)=>Y(H,Q,!0),onChanged:W},void 0,!1,void 0,this),z&&$(ez,{site:z,onClose:()=>G(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function tz({onCreated:Z}){let[J,Q]=f(""),[X,z]=f(""),G=async()=>{let W=J.trim().toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"");if(!W)return o("请填写站点名称");try{let q=await c.createSite({name:W,title:X.trim()||void 0});d0(),o(`已创建站点「${W}」`),Z(q)}catch(q){o(q.message)}};return $(H9,{title:"新建站点",sub:"创建一个命名文件桶,随同步无冲突复制。",footer:$(n,{children:[$("button",{class:"btn btn-secondary",onClick:d0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:G,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称(slug)"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:J,placeholder:"例如:docs、demo、status",onInput:(W)=>Q(W.target.value),onKeyDown:(W)=>{if(W.key==="Enter")G()}},void 0,!1,void 0,this),$("div",{class:"field-label",children:"标题(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",value:X,placeholder:"人类可读的标题",onInput:(W)=>z(W.target.value),onKeyDown:(W)=>{if(W.key==="Enter")G()}},void 0,!1,void 0,this),$("div",{class:"muted",style:{fontSize:12,marginTop:10},children:["将通过 ",$("span",{style:{fontFamily:"var(--mono)"},children:"/sites/<名称>/"},void 0,!1,void 0,this)," 对外提供。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function sz({site:Z,onClose:J,onVisit:Q,onMenu:X,onChanged:z}){let[G,W]=f(null),q=L0(null),{open:Y,close:H}=u9(J),F=()=>c.listSiteFiles(Z.id).then(W).catch((L)=>o(L.message));e(()=>{let L=!1;return W(null),c.listSiteFiles(Z.id).then((y)=>!L&&W(y)).catch((y)=>!L&&o(y.message)),()=>{L=!0}},[Z.id]);let K=async(L)=>{let y=L.target,V=Array.from(y.files??[]);if(y.value="",!V.length)return;let S=0;try{for(let M of V)await c.uploadSiteFile(Z.id,M.name,M),S++;o(`已上传 ${S} 个文件`)}catch(M){o(`已上传 ${S}/${V.length} 个,其余失败:${M.message}`)}finally{F(),z()}},P=async(L)=>{if(!await b0({title:"删除文件?",message:`「${L.path}」将从站点「${Z.name}」中删除。`,confirmLabel:"删除",danger:!0}))return;try{await c.deleteSiteFile(Z.id,L.path)}catch(V){return o(V.message)}F(),z()},A=mZ(Z.name);return $(n,{children:[$("div",{class:"scrim"+(Y?" open":""),onClick:H},void 0,!1,void 0,this),$("div",{class:"peek"+(Y?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:H,children:$(D,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1,display:"flex",alignItems:"center",gap:8,minWidth:0,fontWeight:600,fontSize:14},children:[$(D,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),$("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(D,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(L)=>X(L),children:$(D,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("input",{ref:q,type:"file",multiple:!0,style:{display:"none"},onChange:K},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:[$("h2",{style:{margin:"0 0 20px"},children:Z.title||Z.name},void 0,!1,void 0,this),$("div",{class:"acc-link",children:[$("span",{class:"url",children:A},void 0,!1,void 0,this),$("button",{title:"复制地址",onClick:()=>uZ(A),children:$(D,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"accent",title:"访问站点",onClick:Q,children:$(D,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-meta",children:[$("span",{children:[$("b",{children:G?.length??Z.file_count},void 0,!1,void 0,this)," 个文件"]},void 0,!0,void 0,this),$("span",{children:["创建于 ",r7(Z.created_hlc)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"files-head",children:[$("span",{children:"文件"},void 0,!1,void 0,this),$("span",{children:G?.length??""},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G.length===0?$("div",{class:"site-empty",style:{marginTop:4},children:[$("div",{class:"ei",children:"\uD83D\uDCC1"},void 0,!1,void 0,this),$("div",{class:"et",children:"站点还没有文件"},void 0,!1,void 0,this),$("div",{class:"ed",children:"上传文件后即可通过站点地址访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(D,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$("div",{children:G.map((L)=>$("div",{class:"filerow",onClick:()=>X9($(l7,{site:Z,file:L},void 0,!1,void 0,this)),children:[$("span",{class:"fi",children:$(D,{name:oz(L),cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"fpath",children:L.path},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(L.encoding==="blob"?" blob":""),children:L.encoding},void 0,!1,void 0,this),$("div",{class:"facts",children:[$("button",{title:"预览",onClick:(y)=>{y.stopPropagation(),X9($(l7,{site:Z,file:L},void 0,!1,void 0,this))},children:$(D,{name:"eye",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"复制路径",onClick:(y)=>{y.stopPropagation(),uZ("/sites/"+Z.name+"/"+L.path)},children:$(D,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"del",title:"删除",onClick:(y)=>{y.stopPropagation(),P(L)},children:$(D,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},L.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function l7({site:Z,file:J}){let Q="/sites/"+Z.name+"/"+J.path,[X,z]=f(null),G=n7(J.content_type),W=!G&&(J.encoding==="utf8"||/text\/|json|javascript|xml/.test(J.content_type));return e(()=>{if(!W)return;fetch(Q).then((q)=>q.text()).then(z).catch(()=>z("(无法加载内容)"))},[Q]),$(H9,{title:J.path,sub:Q,width:680,footer:$(n,{children:[$("button",{class:"btn btn-secondary",onClick:()=>uZ(Q),children:"复制路径"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:d0,children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center",color:"var(--muted)",fontSize:12,marginBottom:12},children:[$("span",{children:J.content_type},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(J.encoding==="blob"?" blob":""),children:J.encoding},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G?$("img",{src:Q,style:{maxWidth:"100%",borderRadius:"var(--radius)",border:"1px solid var(--line)"}},void 0,!1,void 0,this):W?X==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):$("div",{class:"preview-box",children:X},void 0,!1,void 0,this):$("div",{class:"preview-bin",children:[$("div",{class:"pi",children:"\uD83D\uDCE6"},void 0,!1,void 0,this),$("div",{class:"pt",children:"二进制文件 · 在新标签打开查看"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function ez({site:Z,onClose:J}){e(()=>{let X=(z)=>{if(z.key==="Escape")J()};return addEventListener("keydown",X),()=>removeEventListener("keydown",X)},[]);let Q="/sites/"+Z.name+"/";return $("div",{class:"spv-scrim open",onClick:(X)=>{if(X.target===X.currentTarget)J()},children:$("div",{class:"spv",children:[$("div",{class:"spv-chrome",children:[$("div",{class:"spv-dots",children:[$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"spv-url",children:[$(D,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:mZ(Z.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"spv-btn",title:"在新标签打开",onClick:()=>window.open(Q,"_blank"),children:[$(D,{name:"externalLink",cls:"ico sm"},void 0,!1,void 0,this),"新标签"]},void 0,!0,void 0,this),$("button",{class:"spv-btn icon",title:"关闭",onClick:J,children:$(D,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("iframe",{class:"spv-frame",src:Q,sandbox:"allow-scripts allow-same-origin"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Q6(Z){switch(Z.kind){case"db":return`#/db/${encodeURIComponent(Z.id)}`;case"doc":return`#/doc/${encodeURIComponent(Z.id)}`;case"search":return`#/search?q=${encodeURIComponent(Z.q)}`;case"settings":return"#/settings";case"sites":return"#/sites";case"empty":return"#/"}}function X6(Z){if(!Z.startsWith("#/"))return{kind:"empty"};let[J="",Q=""]=Z.slice(2).split("?",2),[X,z=""]=J.split("/",2);try{if(X==="db"&&z)return{kind:"db",id:decodeURIComponent(z)};if(X==="doc"&&z)return{kind:"doc",id:decodeURIComponent(z)};if(X==="search"){let G=new URLSearchParams(Q).get("q");if(G)return{kind:"search",q:G}}if(X==="settings")return{kind:"settings"};if(X==="sites")return{kind:"sites"}}catch{}return{kind:"empty"}}var t7="mh-quicknote-last",s7="mh-quicknote-parent",e7="Quick Notes";function ZW(Z,J){return(J.created_hlc??"").localeCompare(Z.created_hlc??"")}async function JW(){let Z=localStorage.getItem(s7);if(Z)try{return await c.getDocument(Z),Z}catch{}let X=(await c.listDocuments()).find((z)=>z.parent_id==null&&z.title===e7)?.id??(await c.createDocument({title:e7})).id;return localStorage.setItem(s7,X),X}function Z3(){let[Z,J]=f(null),[Q,X]=f([]),[z,G]=f(null),[W,q]=f(""),[Y,H]=f(!1),F=L0(null),K=typeof window<"u"?window.metahubDesktop?.quicknote:void 0,P=g9(async(N)=>{let k=(await c.listDocumentsByParent(N)).sort(ZW);return X(k),k},[]);e(()=>{if(!Z)return;let N,k=()=>{clearTimeout(N),N=setTimeout(()=>void P(Z),80)};return document.addEventListener(Y9,k),()=>{clearTimeout(N),document.removeEventListener(Y9,k)}},[Z,P]);let A=g9(async(N)=>{let k=await c.createDocument({title:"",parent_id:N});return await P(N),k.id},[P]);e(()=>{(async()=>{try{let N=await JW();J(N);let k=await P(N),v=localStorage.getItem(t7),O=v&&k.some((U)=>U.id===v)&&v||k[0]?.id||await A(N);G(O)}catch(N){q(String(N.message))}})()},[P,A]),e(()=>{if(z)localStorage.setItem(t7,z)},[z]),e(()=>{K?.getAlwaysOnTop().then(H).catch(()=>{})},[K]),e(()=>{if(!K)return;let N=(k)=>{if(k.key==="Escape")K.hide()};return addEventListener("keydown",N),()=>removeEventListener("keydown",N)},[K]);let L=async()=>{if(!Z)return;try{G(await A(Z))}catch(N){q(String(N.message))}},y=async()=>{if(!K)return;let N=!Y;H(N);try{H(await K.setAlwaysOnTop(N))}catch{H(!N)}},V=async()=>{if(!z||!Z)return;if(!await b0({title:"删除笔记?",message:"该快速笔记将被删除。",confirmLabel:"删除",danger:!0}))return;await c.deleteDocument(z);let k=await P(Z);G(k[0]?.id??await A(Z))},S=(N)=>{I0(N,(k)=>$(n,{children:[$(p0,{children:"快速笔记"},void 0,!1,void 0,this),Q.length===0&&$("div",{class:"lbl",children:"还没有笔记"},void 0,!1,void 0,this),Q.map((v)=>$(W0,{icon:"file",label:v.title||"无标题",checked:v.id===z,onClick:()=>{k(),G(v.id)}},v.id,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"plus",label:"新建笔记",onClick:()=>{k(),L()}},void 0,!1,void 0,this),z&&$(W0,{icon:"trash",label:"删除当前笔记",danger:!0,onClick:()=>{k(),V()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),{minWidth:220})},M=Q.find((N)=>N.id===z)?.title;return $("div",{class:"qn",children:[$("div",{class:"qn-bar",children:[$("span",{class:"qn-brand",children:M||"快速笔记"},void 0,!1,void 0,this),$("div",{class:"qn-actions",children:[$("button",{class:"iconbtn",title:"新建笔记",onClick:()=>void L(),children:$(D,{name:"plus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"笔记列表",onClick:S,children:$(D,{name:"list"},void 0,!1,void 0,this)},void 0,!1,void 0,this),K&&$("button",{class:"iconbtn"+(Y?" active":""),title:Y?"取消置顶":"始终置顶",onClick:()=>void y(),children:$(D,{name:"pin"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),W&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",W,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"qn-body",children:z?$(V8,{docId:z,onError:q,onHandle:(N)=>F.current=N},z,!1,void 0,this):$("div",{class:"empty",children:$("div",{children:"加载中…"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(G8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var $W=/[",\r\n]/;function QW(Z){return $W.test(Z)?`"${Z.replace(/"/g,'""')}"`:Z}function J3(Z){return Z.map((J)=>J.map(QW).join(",")).join(`
|
|
121
|
-
`)}function z6(Z,J){let Q=J.startsWith(".")?J:"."+J,X=Z.trim().replace(/[\\/:*?"<>|\x00-\x1f]/g,"-").replace(/\s+/g," ").replace(/^\.+$/,"").slice(0,90)||"untitled";return X.toLowerCase().endsWith(Q.toLowerCase())?X:X+Q}function W6(Z,J,Q){let X=URL.createObjectURL(new Blob([J],{type:Q})),z=document.createElement("a");z.href=X,z.download=Z,document.body.appendChild(z),z.click(),z.remove(),setTimeout(()=>URL.revokeObjectURL(X),0)}function $3(Z,J){let Q=["id",...Z.map((z)=>z.name)],X=J.map((z)=>[z.id,...Z.map((G)=>XW(z.cells[G.id]))]);return J3([Q,...X])}function XW(Z){if(Z==null)return"";if(typeof Z==="boolean")return Z?"true":"false";if(typeof Z==="object")return JSON.stringify(Z);return String(Z)}function zW(){let[Z,J]=f(()=>typeof window<"u"&&window.matchMedia(W8).matches);return e(()=>{let Q=window.matchMedia(W8),X=()=>J(Q.matches);return Q.addEventListener("change",X),()=>Q.removeEventListener("change",X)},[]),Z}function WW(){let[Z,J]=f([]),[Q,X]=f([]),[z,G]=f(()=>X6(location.hash)),[W,q]=f(""),[Y,H]=f(!1),[F,K]=f(268),[P,A]=f("blocks"),[L,y]=f(!1),[V,S]=f(!1),[M,N]=f(!1),[k,v]=f(!1),[O,U]=f(()=>AZ()),[B,C]=f(!1),[_,T]=f(!1),u=L0(null),E=L0(!1),t=L0(null),$0=zW(),g=g9((Z0)=>q(Z0),[]),I=g9((Z0)=>{u.current=Z0},[]),h=g9(async()=>{let[Z0,H0]=await Promise.all([c.listDatabases(),c.listDocuments()]);J(Z0),X(H0),y(!0)},[]);e(()=>{h().catch((Z0)=>g(String(Z0.message)))},[h]),e(()=>{let Z0,H0=()=>{clearTimeout(Z0),Z0=setTimeout(()=>h().catch((v0)=>g(String(v0.message))),80)};return document.addEventListener(Y9,H0),()=>{clearTimeout(Z0),document.removeEventListener(Y9,H0)}},[h,g]),e(()=>{if(typeof window<"u"&&window.metahubDesktop)return;n6()},[]),e(()=>N9((Z0)=>U({...Z0})),[]),e(()=>{if(Boolean(O.bucketDirty||O.bucketSyncing)){E.current=!0,C(!1);return}if(!E.current||O.bucketError)return;E.current=!1,C(!0);let H0=setTimeout(()=>C(!1),900);return()=>clearTimeout(H0)},[O.bucketDirty,O.bucketSyncing,O.bucketError]),e(()=>{l8().then(()=>Q8())},[]);let[m,z0]=f(typeof navigator<"u"&&!navigator.onLine);e(()=>{let Z0=()=>z0(!1),H0=()=>z0(!0);return window.addEventListener("online",Z0),window.addEventListener("offline",H0),()=>{window.removeEventListener("online",Z0),window.removeEventListener("offline",H0)}},[]),e(()=>{let Z0=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0;if(!Z0)return;Promise.all([c.version().then((H0)=>H0.version).catch(()=>null),Z0.installedVersion().catch(()=>null)]).then(([H0,v0])=>{if(H0&&v0&&n9(v0,H0)>0)S(!0)})},[]);let X0=(Z0,H0)=>{let v0=Q6(Z0);if(location.hash!==v0)history[H0?.replace?"replaceState":"pushState"](null,"",v0);G(Z0)};e(()=>{if(location.hash&&!location.hash.startsWith("#/"))history.replaceState(null,"","#/");let Z0=()=>G(X6(location.hash));return window.addEventListener("hashchange",Z0),()=>window.removeEventListener("hashchange",Z0)},[]);let Y0=()=>c.createDocument({title:""}).then((Z0)=>X0({kind:"doc",id:Z0.id})).catch((Z0)=>g(String(Z0.message))),p=z.kind==="db"?Z.find((Z0)=>Z0.id===z.id):void 0,Q0=z.kind==="doc"?Q.find((Z0)=>Z0.id===z.id):void 0,j0=z.kind==="doc"?z.id:null,r0=z.kind==="db"?z.id:null;e(()=>{A("blocks"),N(!1)},[j0]),e(()=>{v(!1)},[r0]);let a0=z.kind!=="empty",O0=L0(0);e(()=>{let Z0=$0&&a0;if(Z0&&!document.body.classList.contains("mobile-content"))O0.current=window.scrollY;if(document.body.classList.toggle("mobile",$0),document.body.classList.toggle("mobile-content",Z0),f8(),$0)window.scrollTo(0,Z0?0:O0.current)},[$0,a0,z]),e(()=>{let Z0=(H0)=>{if((H0.metaKey||H0.ctrlKey)&&H0.key.toLowerCase()==="k"){H0.preventDefault(),document.querySelector(".sb-search input")?.focus();return}if((H0.metaKey||H0.ctrlKey)&&H0.key.toLowerCase()==="s"){if(t.current?.())H0.preventDefault()}};return window.addEventListener("keydown",Z0),()=>window.removeEventListener("keydown",Z0)},[]),e(()=>{let Z0=window.matchMedia("(prefers-color-scheme: dark)"),H0=()=>{e1(),f8()};return Z0.addEventListener("change",H0),()=>Z0.removeEventListener("change",H0)},[]);let h0=(Z0)=>{let H0=u.current?.snapshotMarkdown();u.current?.flushSave(),(H0==null?c.getDocument(Z0.id).then((Z9)=>Z9.body??""):Promise.resolve(H0)).then((Z9)=>W6(z6(Z0.title||Z0.id,".md"),Z9,"text/markdown;charset=utf-8")).catch((Z9)=>g(String(Z9.message)))},G0=(Z0)=>{Promise.all([c.listProperties(Z0.id),c.listRecords(Z0.id)]).then(([H0,v0])=>W6(z6(Z0.name||Z0.id,".csv"),$3(H0,v0),"text/csv;charset=utf-8")).catch((H0)=>g(String(H0.message)))},b=(Z0)=>{I0(Z0,(H0)=>$(n,{children:[$(W0,{icon:"link",label:"复制链接",onClick:()=>{H0(),navigator.clipboard.writeText(location.origin+location.pathname+Q6(z)).then(()=>o("链接已复制")).catch((v0)=>g(String(v0.message)))}},void 0,!1,void 0,this),z.kind==="doc"&&Q0&&$(W0,{icon:"download",label:"导出 Markdown",onClick:()=>{H0(),h0(Q0)}},void 0,!1,void 0,this),z.kind==="db"&&p&&$(W0,{icon:"download",label:"导出 CSV",onClick:()=>{H0(),G0(p)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},x=o0()&&(O.bucketDirty||O.bucketSyncing||O.bucketError||B)?O.bucketSyncing?"saving":B?"saved":O.bucketError?"error":"dirty":"share",r=x==="saving"?"保存中…":x==="saved"?"已保存":x==="share"?"分享":"保存",l=x==="share"?"share":x==="saved"?"cloudCheck":x==="saving"?"spinner":x==="error"?"cloudOff":"cloudUp",F0=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform),P0=x==="share"?"分享":x==="error"?`保存到云端失败:${O.bucketError??""}`:`保存到云端${$0?"":F0?" · ⌘S":" · Ctrl+S"}`,s=async()=>{try{await u.current?.flushSave(),await c6();let Z0=AZ();if(Z0.bucketError)throw Error(Z0.bucketError);if(Z0.bucketDirty)throw Error("仍有改动尚未保存到云端")}catch(Z0){o(`保存失败:${Z0.message}`)}},k0=()=>{T(!0),window.setTimeout(()=>T(!1),320)},T0=(Z0)=>{if(x==="share"){b(Z0);return}if(x==="saving"||x==="saved")return;s()};t.current=()=>{if(z.kind!=="doc"&&z.kind!=="db")return!1;if(x==="saving"||x==="saved")return!0;if(x==="dirty"||x==="error")s(),k0();else if(o0())o("已是最新"),k0();return!0};let w0=(Z0)=>{if(z.kind==="doc"&&Q0)I0(Z0,(H0)=>$(n,{children:[$(W0,{icon:"code",label:P==="source"?"块方式显示":"代码方式显示",checked:P==="source",onClick:()=>{H0(),u.current?.setMode(P==="source"?"blocks":"source")}},void 0,!1,void 0,this),$(W0,{icon:"copy",label:"创建副本",onClick:async()=>{H0(),u.current?.flushSave();try{let v0=await c.duplicateDocument(Q0.id,{title:`${Q0.title||"无标题"} 副本`});X0({kind:"doc",id:v0.id}),o("已创建副本")}catch(v0){g(String(v0.message))}}},void 0,!1,void 0,this),$(W0,{icon:"history",label:"版本历史",onClick:()=>{H0(),u.current?.flushSave(),N(!0)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"settings",label:"重命名…",onClick:async()=>{H0();let v0=await L9({title:"重命名文档",value:Q0.title});if(v0)await c.updateDocument(Q0.id,{title:v0})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除文档",danger:!0,onClick:async()=>{if(H0(),await b0({title:"删除文档?",message:`「${Q0.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))await c.deleteDocument(Q0.id),X0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));else if(z.kind==="db"&&p)I0(Z0,(H0)=>$(n,{children:[$(W0,{icon:"copy",label:"创建副本",onClick:async()=>{H0();try{let v0=await c.duplicateDatabase(p.id,{name:`${p.name} 副本`});X0({kind:"db",id:v0.id}),o("已创建副本")}catch(v0){g(String(v0.message))}}},void 0,!1,void 0,this),$(W0,{icon:"history",label:"最近动态",onClick:()=>{H0(),v(!0)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"settings",label:"重命名…",onClick:async()=>{H0();let v0=await L9({title:"重命名数据库",value:p.name});if(v0&&v0!==p.name)await c.updateDatabase(p.id,{name:v0})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(W0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(H0(),await b0({title:"删除数据库?",message:`「${p.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))await c.deleteDatabase(p.id),X0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $(n,{children:[$(qJ,{databases:Z,docs:Q,view:z,navigate:X0,width:F,collapsed:Y,onResize:K,onCollapse:()=>H(!0),updatePending:V,onError:g},void 0,!1,void 0,this),$("div",{class:"main",children:[$("div",{class:"topbar"+(z.kind==="empty"?" bare":""),children:[$("button",{class:"iconbtn hamburger"+(Y?" show-collapsed":""),title:$0?"返回":Y?"展开侧栏":"菜单",onClick:()=>$0?X0({kind:"empty"}):H(!1),children:$(D,{name:$0?"arrowLeft":"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"crumb",children:[z.kind==="doc"&&$(n,{children:[$("span",{class:"emoji",children:$(D,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:Q0?.title||"无标题"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="db"&&$(n,{children:[$("span",{class:"emoji",children:p?.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{children:p?.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="search"&&$("span",{children:["搜索:“",z.q,"”"]},void 0,!0,void 0,this),z.kind==="settings"&&$(n,{children:[$("span",{class:"emoji",children:$(D,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"设置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="sites"&&$(n,{children:[$("span",{class:"emoji",children:$(D,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"站点管理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(z.kind==="doc"||z.kind==="db")&&$(n,{children:[$("button",{class:`btn share-save share-save-${x}${_?" share-save-kbd":""}`,title:P0,disabled:x==="saving"||x==="saved",onClick:T0,children:[$("span",{class:"share-save-ico",children:$(D,{name:l,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"share-save-label",children:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",onClick:w0,children:$(D,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),m&&$("div",{class:"offline-bar",children:o0()?"⚡ 离线 — 本地副本模式:可正常查看和编辑全部内容,恢复连接后自动同步":"⚡ 离线 — 可浏览已缓存的内容,修改会失败;恢复网络后自动恢复"},void 0,!1,void 0,this),W&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",W,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"content",children:[z.kind==="empty"&&$(GW,{onNewDoc:Y0},void 0,!1,void 0,this),z.kind==="db"&&p&&$(vJ,{db:p,onError:g},p.id,!1,void 0,this),z.kind==="db"&&!p&&$("div",{class:"empty",children:L?"数据库不存在或已被删除。":"加载中…"},void 0,!1,void 0,this),z.kind==="doc"&&$(V8,{docId:z.id,onError:g,onModeChange:A,onHandle:I},z.id,!1,void 0,this),z.kind==="search"&&$(YW,{q:z.q,onOpenDoc:(Z0)=>X0({kind:"doc",id:Z0}),onOpenDb:(Z0)=>X0({kind:"db",id:Z0})},void 0,!1,void 0,this),z.kind==="settings"&&$(d7,{onUpdatePending:S},void 0,!1,void 0,this),z.kind==="sites"&&$(o7,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M&&z.kind==="doc"&&$(BJ,{docId:z.id,onClose:()=>N(!1),onReverted:()=>u.current?.reload()},void 0,!1,void 0,this),k&&z.kind==="db"&&$(PJ,{dbId:z.id,onClose:()=>v(!1)},void 0,!1,void 0,this),$(G8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function GW({onNewDoc:Z}){return $("div",{class:"empty",children:[$("svg",{class:"estate-art",viewBox:"0 0 220 190",fill:"none","aria-hidden":"true",children:[$("ellipse",{class:"kg-ground ground",cx:"110",cy:"176",rx:"62",ry:"8"},void 0,!1,void 0,this),$("circle",{class:"kg-glow fill-soft",cx:"116",cy:"88",r:"42"},void 0,!1,void 0,this),$("g",{class:"kg-plant",children:[$("path",{class:"kg-stem stroke-a draw",pathLength:"100",d:"M110 134 C110 117 108 106 113 92 C116 83 122 77 128 72"},void 0,!1,void 0,this),$("g",{class:"kg-leaf l1",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M108 108 C90 100 86 88 88 80 C102 80 111 90 108 108 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l2",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M118 90 C133 83 144 86 150 94 C139 105 125 104 118 90 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l3",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M128 72 C128 57 136 48 146 45 C150 58 144 69 128 72 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("rect",{class:"kg-cardB fill-soft",x:"76",y:"124",width:"68",height:"44",rx:"8",transform:"rotate(7 110 146)"},void 0,!1,void 0,this),$("g",{class:"kg-cardA",children:[$("rect",{class:"fill-surface stroke",x:"66",y:"128",width:"76",height:"46",rx:"9",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-a",x:"74",y:"136",width:"18",height:"18",rx:"5",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"139",width:"34",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"150",width:"24",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("circle",{class:"kg-particle p1 fill-a",cx:"44",cy:"62",r:"2.6"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p2 fill-soft",cx:"178",cy:"74",r:"3"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p3 fill-a",cx:"40",cy:"120",r:"2"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p4 fill-soft",cx:"182",cy:"126",r:"2.4"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p5 fill-a",cx:"150",cy:"44",r:"2.2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("p",{class:"estate-title",children:"空空如也"},void 0,!1,void 0,this),$("p",{class:"estate-hint",children:"从左侧选择一个数据库或文档,或新建一个开始。"},void 0,!1,void 0,this),$("button",{class:"estate-link",onClick:Z,children:"+ 新建文档"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function qW({text:Z}){let J=Z.split(/\[([^\[\]]*)\]/g);return $(n,{children:J.map((Q,X)=>X%2?$("mark",{children:Q},X,!1,void 0,this):Q)},void 0,!1,void 0,this)}function YW({q:Z,onOpenDoc:J,onOpenDb:Q}){let[X,z]=f(null);return e(()=>{z(null),c.search(Z).then(z).catch(()=>z([]))},[Z]),$("div",{class:"db",children:[$("div",{class:"db-title",style:{marginBottom:14},children:["搜索:“",Z,"”"]},void 0,!0,void 0,this),X===null&&$("p",{class:"muted",children:"搜索中…"},void 0,!1,void 0,this),X?.length===0&&$("p",{class:"muted",children:"没有匹配结果。"},void 0,!1,void 0,this),X?.map((G)=>$("div",{class:"search-hit",onClick:()=>G.type==="document"?J(G.id):G.database_id&&Q(G.database_id),children:[$("strong",{children:G.title||G.id},void 0,!1,void 0,this)," ",$("span",{class:"muted",children:G.type==="document"?"文档":"记录"},void 0,!1,void 0,this),$("div",{class:"muted",children:$(qW,{text:G.snippet},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},G.id,!0,void 0,this))]},void 0,!0,void 0,this)}function Q3({text:Z}){return $("div",{class:"enroll-splash",children:[$("div",{class:"enroll-spinner"},void 0,!1,void 0,this),$("div",{class:"muted",children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function HW(){let Z=/[#&]enroll=([^&]+)/.exec(location.hash);if(!Z)return null;try{return zJ(Z[1])}catch{return null}}function KW({onDone:Z}){let J=HW(),[Q,X]=f(J?.endpoint??""),[z,G]=f(J?.bucket??""),[W,q]=f(J?.region??"auto"),[Y,H]=f(J?.accessKeyId??""),[F,K]=f(J?.secretAccessKey??""),[P,A]=f(J?.prefix??"metahub"),[L,y]=f(J?.encrypt??!0),[V,S]=f(""),[M,N]=f(!1),[k,v]=f(""),O=J!=null,U=async()=>{if(!Q.trim()||!z.trim()||!Y.trim()||!F.trim()){v("endpoint、bucket、access key、secret key 必填");return}if(L&&!V){v("加密口令必填");return}N(!0),v("");try{await i6({endpoint:Q.trim(),region:W.trim()||"auto",bucket:z.trim(),prefix:P.trim()||"metahub",accessKeyId:Y.trim(),secretAccessKey:F.trim(),encrypt:L,virtualHostedStyle:J?.virtualHostedStyle},V),Z()}catch(B){let C=B.message;v(/failed to fetch|load failed|networkerror|cors/i.test(C)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`连接失败:${C}`),N(!1)}};return $("div",{class:"enroll",children:$("div",{class:"enroll-card",children:[$("div",{class:"enroll-title",children:"连接你的存储桶"},void 0,!1,void 0,this),$("div",{class:"enroll-sub",children:O?"已从二维码读取桶信息,输入加密口令即可同步你的数据。":"填入 S3 兼容存储桶(R2/COS/MinIO/S3)的连接信息;数据上传前端到端加密。"},void 0,!1,void 0,this),!O&&$(n,{children:[$("div",{class:"field-label",children:"Endpoint"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"https://<bucket>.cos.<region>.myqcloud.com",value:Q,onInput:(B)=>X(B.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Bucket"},void 0,!1,void 0,this),$("input",{class:"text-input",value:z,onInput:(B)=>G(B.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Region"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"auto",value:W,onInput:(B)=>q(B.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Access Key ID"},void 0,!1,void 0,this),$("input",{class:"text-input",value:Y,onInput:(B)=>H(B.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Secret Access Key"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",value:F,onInput:(B)=>K(B.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",value:P,onInput:(B)=>A(B.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O&&$("div",{class:"enroll-bucket muted",children:["桶:",z]},void 0,!0,void 0,this),L&&$(n,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:O,placeholder:"与其他设备相同的口令",value:V,onInput:(B)=>S(B.target.value),onKeyDown:(B)=>B.key==="Enter"&&U()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k&&$("div",{class:"enroll-err",children:k},void 0,!1,void 0,this),$("button",{class:"btn btn-primary enroll-go",disabled:M,onClick:U,children:M?"连接中…":"连接并同步"},void 0,!1,void 0,this),$("div",{class:"enroll-hint muted",children:"提示:iPhone 请用 Safari 的「分享 → 添加到主屏」装成 App,离线与持久存储才生效。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function FW(){let[Z,J]=f("detecting");if(e(()=>{l8().then((Q)=>{if(Q==="server")return J("app");if(!Q9())return J("enroll");CZ(),J(o0()?"app":"hydrating")})},[]),e(()=>{if(Z!=="hydrating")return;if(o0())return J("app");return N9(()=>{if(o0())J("app")})},[Z]),Z==="detecting")return $(Q3,{text:"加载中…"},void 0,!1,void 0,this);if(Z==="enroll")return $(KW,{onDone:()=>J(o0()?"app":"hydrating")},void 0,!1,void 0,this);if(Z==="hydrating")return $(Q3,{text:"正在从云端水合本地副本…"},void 0,!1,void 0,this);return $(WW,{},void 0,!1,void 0,this)}if(typeof window<"u"&&window.metahubDesktop){if(document.body.classList.add("desktop"),window.metahubDesktop.platform==="darwin")document.body.classList.add("desktop-mac")}if(location.hash==="#quick"&&typeof window<"u"&&window.metahubDesktop)document.body.classList.add("quicknote"),p8($(Z3,{},void 0,!1,void 0,this),document.getElementById("app"));else p8($(FW,{},void 0,!1,void 0,this),document.getElementById("app"));
|
|
138
|
+
`:Q}function dW(Z){return Z.replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/(\*|_)([^*_]+)\1/g,"$2").replace(/~~([^~]+)~~/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").trim()}function iW({blocks:Z}){let J=Y9(Z).filter((G)=>wZ(G.type)).map((G)=>({id:G.id,level:Number(G.type.slice(1)),text:dW(G.content)||"无标题"})),[Q,X]=R(null),z=J.map((G)=>G.id).join("|");if(o(()=>{if(!J.length)return;let G=document.querySelector(".content"),q=0,H=()=>{let K=Math.max(G?G.getBoundingClientRect().top:0,0)+100,N=J[0].id;for(let U of J){let O=document.querySelector(`.block[data-bid="${U.id}"]`);if(!O)continue;if(O.getBoundingClientRect().top-K<=1)N=U.id;else break}X(N)},Y=()=>{if(q)return;q=requestAnimationFrame(()=>{q=0,H()})};H();let F=new IntersectionObserver(H,{root:G,rootMargin:"-90px 0px -70% 0px",threshold:[0,1]});for(let K of J){let N=document.querySelector(`.block[data-bid="${K.id}"]`);if(N)F.observe(N)}return G?.addEventListener("scroll",Y,{passive:!0}),window.addEventListener("scroll",Y,{passive:!0}),()=>{if(F.disconnect(),G?.removeEventListener("scroll",Y),window.removeEventListener("scroll",Y),q)cancelAnimationFrame(q)}},[z]),!J.length)return null;let W=(G)=>{document.querySelector(`.block[data-bid="${G}"]`)?.scrollIntoView({behavior:"smooth",block:"start"})};return $("nav",{class:"doc-toc","aria-label":"文档目录",children:J.map((G)=>$("button",{class:"toc-row lvl-"+G.level+(G.id===Q?" active":""),title:G.text,onClick:()=>W(G.id),children:[$("span",{class:"toc-tick"},void 0,!1,void 0,this),$("span",{class:"toc-label",children:G.text},void 0,!1,void 0,this)]},G.id,!0,void 0,this))},void 0,!1,void 0,this)}function s8({docId:Z,onError:J,onModeChange:Q,onHandle:X}){let z=W0([]),W=W0(""),G=W0(null),q=W0(""),H=KZ(),[Y,F]=R("blocks"),[K,N]=R(0),[U,O]=R(!0),[C,f]=R(null),h=W0(null),[_,M]=R(null),[k,T]=R(null),[L,P]=R(null),w=W0(),A=W0(null),y=W0(!1),S=W0(0),p=W0(Promise.resolve()),[n,$0]=R(!1),Q0=W0(null),[x,b]=R(null),[u,V]=R(0),[i,Z0]=R(0),G0=W0(0),J0=W0([]),e=W0([]),P0=W0({past:[],future:[],present:null,lastKey:null,lastTime:0}),l0=()=>({blocks:structuredClone(z.current),title:q.current,focusId:o$()}),c0=(B)=>{let v=P0.current;if(!v.present){v.present=l0(),v.lastKey=B,v.lastTime=Date.now();return}let m=Date.now();if(B&&B===v.lastKey&&m-v.lastTime<600){v.present=l0(),v.lastTime=m;return}if(v.past.push(v.present),v.past.length>200)v.past.shift();v.present=l0(),v.future=[],v.lastKey=B,v.lastTime=m},d0=(B)=>{if(z.current=structuredClone(B.blocks),q.current=B.title,T(null),N((v)=>v+1),O0(),B.focusId)requestAnimationFrame(()=>D0(B.focusId,!0))},n0=()=>{let B=P0.current;if(!B.past.length)return;if(B.present)B.future.push(B.present);let v=B.past.pop();B.present=v,B.lastKey=null,d0(v)},E0=()=>{let B=P0.current;if(!B.future.length)return;if(B.present)B.past.push(B.present);let v=B.future.pop();B.present=v,B.lastKey=null,d0(v)},N0=()=>{c0(null),N((B)=>B+1)},v0=()=>{O(!0),f(null),$0(!1),P0.current={past:[],future:[],present:null,lastKey:null,lastTime:0},d.getDocument(Z).then((B)=>{q.current=B.title??"",W.current=B.body??"",z.current=cZ(B.body),A.current=B.version??null,y.current=!1,O(!1),N0()}).catch((B)=>J(String(B.message)))};o(()=>{return v0(),()=>clearTimeout(w.current)},[Z]),o(()=>{let B=(v)=>{if(!y.current)return;v.preventDefault(),v.returnValue=""};return window.addEventListener("beforeunload",B),()=>window.removeEventListener("beforeunload",B)},[]),o(()=>{let B=(v)=>{if(!v.detail?.datasets?.some((D)=>D==="documents"||D==="doc_blocks"))return;(async()=>{try{if(y.current)await o0();let D=await d.getDocument(Z);if(D.version!=null&&D.version===A.current)return;let c=o$(),H0=c?Y9(z.current).findIndex((B0)=>B0.id===c):-1,L0=c?r8(c):null;if(q.current=D.title??"",W.current=D.body??"",z.current=cZ(D.body),A.current=D.version??null,y.current=!1,$0(!1),N((B0)=>B0+1),H0>=0)requestAnimationFrame(()=>{let B0=Y9(z.current),m0=B0[Math.min(H0,B0.length-1)];if(m0)o8(m0.id,L0??0)});s("已合并其他设备的修改")}catch{}})()};return document.addEventListener(p9,B),()=>document.removeEventListener(p9,B)},[Z]);let O0=()=>{y.current=!0,clearTimeout(w.current),w.current=setTimeout(T0,700)},j0=()=>{if(Y==="source")return W.current=G.current?.value??W.current,W.current;return ZZ(z.current),B$(z.current)},i0=(B={})=>d.updateDocument(Z,{title:q.current,body:j0(),...B.force||A.current==null||e0()?{}:{if_match:A.current}}).then((v)=>{A.current=v.version??null,y.current=!1,S.current=0,$0(!1)}).catch((v)=>{if(v instanceof S9&&v.code==="stale"){$0(!0);return}J(String(v.message)),S.current=Math.min(Math.max(S.current*2,1000),30000),clearTimeout(w.current),w.current=setTimeout(T0,S.current)}),T0=(B={})=>p.current=p.current.then(()=>i0(B)),o0=async()=>{clearTimeout(w.current),await T0()},K0=(B)=>{if(B===Y)return;if(B==="source"){W.current=j0(),f(null),M(null),T(null),F("source"),Q?.("source"),requestAnimationFrame(()=>{if(G.current)G.current.value=W.current,s$(G.current),G.current.focus()});return}W.current=G.current?.value??W.current,z.current=cZ(W.current),F("blocks"),Q?.("blocks"),N((v)=>v+1),requestAnimationFrame(()=>{let v=Y9(z.current)[0];if(v)D0(v.id)})};o(()=>{return X?.({getMode:()=>Y,setMode:K0,snapshotMarkdown:j0,flushSave:o0,reload:v0}),()=>X?.(null)},[X,Y]);let q0=z.current,A0=k?j$(q0,k.anchorId,k.focusId):[],j=(B,v="p",m={})=>{let D=t9(v,m);if(!B)q0.push(D);else{let c=I0(q0,B);if(c)c.parent.splice(c.index+1,0,D);else q0.push(D)}return N0(),requestAnimationFrame(()=>D0(D.id)),O0(),D},I=(B,v,m={})=>{let D=I0(q0,B)?.block;if(!D)return;let c=m.content===void 0||m.content===D.content?r8(B):null;if(!f1(q0,B,v,m))return;if(N0(),v!=="divider"&&v!=="table")requestAnimationFrame(()=>c!=null?o8(B,c):D0(B));O0()},E=(B)=>{if(!aZ(q0,B))return;N0(),O0()},a=(B,v)=>{B.content=rZ(B,v),c0("text:"+B.id);let m=v.textContent??"";if(m.startsWith("/")){let D=WG();f((c)=>({blockId:B.id,x:D.x,y:D.y,query:m.slice(1),idx:c?.blockId===B.id?c.idx:0}))}else if(C)f(null);O0()},F0=(B,v,m)=>{let D=r$(B.clipboardData);if(D.length){B.preventDefault(),U0(v,m,D);return}let c=B.clipboardData?.getData("text/html"),L0=(c?K$(c):B.clipboardData?.getData("text/plain")??"").replace(/\r\n?/g,`
|
|
139
|
+
`);if(!L0.trim())return;B.preventDefault();let B0=cZ(L0);if(!B0.length)return;let m0=I0(q0,v.id);if(!m0)return;let{before:K9,after:XZ}=t8(m);if(B0.length===1&&B0[0].type==="p"&&(K9.trim()!==""||XZ.trim()!=="")){v.content=K9+B0[0].content+XZ;let o3=t$(K9+B0[0].content);N0(),O0(),requestAnimationFrame(()=>D1(v.id,o3));return}let _Z=[...B0],G8=XZ.trim()!==""?t9("p",{content:XZ}):null;if(G8)_Z.push(G8);if(K9.trim()===""&&!m0.block.children?.length)m0.parent.splice(m0.index,1,..._Z);else v.content=K9,m0.parent.splice(m0.index+1,0,..._Z);N0(),O0();let r3=G8??_Z[_Z.length-1];requestAnimationFrame(()=>D0(r3.id,!G8))},l=(B)=>{let v=[];for(let m of B){let D=G5[B1(m.type)];if(m.size>D)s(`${m.name||"文件"} 超过 ${Math.round(D/1024/1024)}MB 上限`);else v.push(m)}return v},t=(B,v)=>{let m=K5(B.name||"文件"),D=B1(B.type);d.uploadDocBlob(B,(c,H0)=>F5(m,c,H0)).then((c)=>{let H0=t9(D,{src:c.url,name:B.name||void 0,size:D==="file"?c.size:void 0}),L0=I0(z.current,v);if(L0)L0.parent.splice(L0.index,1,H0);else z.current.push(H0);b6(m,!0)}).catch((c)=>{aZ(z.current,v),b6(m,!1,()=>X0([B],{mode:"append"})),s(`上传失败:${c.message}`)}).finally(()=>{N0(),O0()})},X0=(B,v)=>{let m=l(B);if(!m.length)return;let D=m.map((c)=>t9("uploading",{name:c.name||void 0}));if(v.mode==="caret"){let c=I0(z.current,v.block.id);if(!c)return;let{before:H0,after:L0}=t8(v.el),B0=[...D];if(L0.trim()!=="")B0.push(t9("p",{content:L0}));if(H0.trim()===""&&!c.block.children?.length)c.parent.splice(c.index,1,...B0);else v.block.content=H0,c.parent.splice(c.index+1,0,...B0)}else if(v.mode==="at"){let c=I0(z.current,v.targetId);if(!c)return;c.parent.splice(c.index+(v.where==="after"?1:0),0,...D)}else if(v.mode==="append")z.current.push(...D);else{let c=I0(z.current,v.blockId);if(!c)z.current.push(...D);else if(c.block.type==="p"&&!c.block.content.trim()&&!c.block.children?.length)c.parent.splice(c.index,1,...D);else c.parent.splice(c.index+1,0,...D)}N0(),O0(),m.forEach((c,H0)=>t(c,D[H0].id))},U0=(B,v,m)=>X0(m,{mode:"caret",block:B,el:v}),k0=(B,v,m)=>X0(m,{mode:"at",targetId:B,where:v}),g0=(B)=>X0(B,{mode:"append"}),X6=(B,v)=>{let m=document.createElement("input");m.type="file",m.multiple=!0,m.accept=B==="image"?"image/*":B==="video"?"video/*":B==="audio"?"audio/*":"",m.onchange=()=>{let D=Array.from(m.files??[]);if(D.length)X0(D,{mode:"slot",blockId:v})},m.click()},X8=(B,v)=>{let m=I0(q0,B);if(!m)return;if(Object.assign(m.block,v),"width"in v&&!v.width)delete m.block.width;c0("void:"+B),N0(),O0()},f3=(B,v)=>{if(B.target.closest("textarea, input, select, video, audio"))return;if(B.key==="Backspace"||B.key==="Delete"){B.preventDefault();let m=s9(q0,v.id),D=iZ(q0,v.id);E(v.id),requestAnimationFrame(()=>m?D0(m.id,!0):D?D0(D.id):void 0)}else if(B.key==="Enter")B.preventDefault(),j(v.id);else if(B.key==="ArrowUp"){let m=s9(q0,v.id);if(m)B.preventDefault(),D0(m.id,!0)}else if(B.key==="ArrowDown"){let m=iZ(q0,v.id);if(m)B.preventDefault(),D0(m.id)}},g3=async(B,v)=>{try{let m=await d.uploadDocBlob(new File([v],"annotated.png",{type:"image/png"}));X8(B,{src:m.url}),P((D)=>D&&D.id===B?{...D,src:m.url}:D)}catch(m){s(`保存失败:${m.message}`)}},b3=(B)=>{let v=B.src??"";if(typeof window<"u"&&window.metahubDesktop?.preview)window.metahubDesktop.preview.open({src:v,name:B.name,blockId:B.id});else P({id:B.id,src:v,name:B.name})};o(()=>{let B=null;try{B=new BroadcastChannel("mh-doc-image")}catch{return}return B.onmessage=(v)=>{let m=v.data;if(!m||m.action!=="replace"||!m.blockId||!m.url)return;let D=I0(z.current,m.blockId);if(!D)return;D.block.src=m.url,N0(),O0()},()=>B?.close()},[]);let z8=C?C1.filter((B)=>(B.t+B.type+B.d).toLowerCase().includes(C.query.toLowerCase())):[],o1=(B)=>{if(!C)return;let v=C.blockId;if(f(null),dZ(B.type))X6(B.type,v);else I(v,B.type)},t1=(B,v)=>{I(B.id,v.type,v),f(null)},j3=(B,v)=>{B.content="",B.children??=[];let m=t9(v.type,v);B.children.unshift(m),f(null),N0(),requestAnimationFrame(()=>D0(m.id)),O0()},h3=(B)=>{ZZ(q0);let v=r8(B);if(!S1(q0,B))return;N0(),requestAnimationFrame(()=>v!=null?o8(B,v):D0(B)),O0()},s1=(B)=>{ZZ(q0);let v=r8(B);if(!V1(q0,B))return;N0(),requestAnimationFrame(()=>v!=null?o8(B,v):D0(B)),O0()},D3=async(B)=>{if(B==="createLink"){let v=getSelection(),m=v&&v.rangeCount?v.getRangeAt(0).cloneRange():null;if(!m||m.collapsed)return;M(null);let D=(await H9({title:"插入链接",label:"链接地址",placeholder:"https://…"}))?.trim();if(!D)return;m.startContainer.parentElement?.closest?.(".editable")?.focus();let H0=getSelection();H0?.removeAllRanges(),H0?.addRange(m),document.execCommand("createLink",!1,D)}else if(B==="code")ZG();else document.execCommand(B,!1,void 0);QG(q0),O0(),b1(M)},QZ=()=>T(null),e1=()=>{let B=Y9(q0);if(!B.length)return;l8(),T({anchorId:B[0].id,focusId:B[B.length-1].id})},z6=(B)=>{ZZ(q0);let v=h$(q0,B);if(QZ(),N0(),v)requestAnimationFrame(()=>D0(v,!0));O0()},x3=(B,v)=>{if(ZZ(q0),!(v==="indent"?u$(q0,B):E$(q0,B)).length)return;N0(),O0()},ZJ=(B)=>{ZZ(q0);let v=D$(q0,B);if(v.length)T({anchorId:v[0],focusId:v[v.length-1]});N0(),O0()},m3=(B)=>{let v=m$(q0,B);if(v)navigator.clipboard?.writeText(v).catch(()=>{})},u3=(B,v)=>{ZZ(q0);let m=!1;for(let D of k9(q0,B)){let c=I0(q0,D)?.block;if(!c||dZ(c.type)||c.type==="uploading")continue;if(f1(q0,D,v,{content:c.content}))m=!0}if(!m)return;N0(),O0()},JJ=(B)=>{if(B.target?.closest?.(".doc-source"))return;let m=B.metaKey||B.ctrlKey;if(m&&(B.key==="z"||B.key==="Z")){if(B.preventDefault(),B.shiftKey)E0();else n0();return}if(m&&B.key==="y"){B.preventDefault(),E0();return}if(!k)return;let D=A0;if(!D.length)return;if(B.key==="Escape"){B.preventDefault();let c=k.anchorId;QZ(),D0(c,!0);return}if(B.key==="Tab"){B.preventDefault(),x3(D,B.shiftKey?"outdent":"indent");return}if(B.key==="Backspace"||B.key==="Delete"){B.preventDefault(),z6(D);return}if(m&&B.key==="d"){B.preventDefault(),ZJ(D);return}if(m&&(B.key==="c"||B.key==="x")){if(B.preventDefault(),m3(D),B.key==="x")z6(D);return}if(m&&B.key==="a"){B.preventDefault(),e1();return}if(B.key==="ArrowDown"||B.key==="ArrowUp"){B.preventDefault();let c=Y9(q0),H0=c.findIndex((L0)=>L0.id===k.focusId);if(H0<0)return;if(B.shiftKey){let L0=B.key==="ArrowDown"?Math.min(H0+1,c.length-1):Math.max(H0-1,0);T({anchorId:k.anchorId,focusId:c[L0].id})}else{let L0=B.key==="ArrowDown"?D[D.length-1]:D[0];QZ(),D0(L0,B.key==="ArrowDown")}return}if(B.key.length===1&&!m){let c=D[D.length-1];QZ(),D0(c,!0)}},W8=W0(null),E3=(B)=>{if(B.button!==0)return;let v=B.target;if(v.closest(".gutter")||v.closest(".pop")||v.closest(".doc-col-resizer")||v.closest("input, button, select, a")||v.closest("video, audio, iframe, textarea, .img-handle"))return;let D=$G(B.target)?.getAttribute("data-bid")??null;if(!D){let H0=v.classList.contains("doc")?v:null;if(Y==="blocks"&&H0){let L0=H0.querySelectorAll(".block"),B0=L0.length?L0[L0.length-1]:H0.querySelector(".doc-meta"),m0=B0?B0.getBoundingClientRect().bottom:0;if(B.clientY>m0){B.preventDefault();let K9=q0[q0.length-1];if(K9&&o9(K9))D0(K9.id,!0);else j(null);return}}QZ();return}if(B.shiftKey&&k){B.preventDefault(),l8(),T({anchorId:k.anchorId,focusId:D});return}if(!!v.closest(".editable, .code-input, .doc-td")){if(W8.current={anchorId:D,started:!1,sx:B.clientX,sy:B.clientY,mode:"text"},k)QZ()}else B.preventDefault(),l8(),T({anchorId:D,focusId:D}),W8.current={anchorId:D,started:!0,sx:B.clientX,sy:B.clientY,mode:"block"}};o(()=>{let B=(m)=>{let D=W8.current;if(!D)return;let H0=document.elementFromPoint(m.clientX,m.clientY)?.closest(".block[data-bid]")?.getAttribute("data-bid")??null;if(D.mode==="text"){if(H0&&H0!==D.anchorId)D.mode="block",l8(),T({anchorId:D.anchorId,focusId:H0});return}if(!D.started&&Math.abs(m.clientX-D.sx)+Math.abs(m.clientY-D.sy)<4)return;if(D.started=!0,h1(!0),H0)T({anchorId:D.anchorId,focusId:H0})},v=()=>{W8.current=null,h1(!1)};return window.addEventListener("mousemove",B),window.addEventListener("mouseup",v),()=>{window.removeEventListener("mousemove",B),window.removeEventListener("mouseup",v)}},[]);let $J=W0(JJ);$J.current=JJ,o(()=>{let B=(v)=>$J.current(v);return document.addEventListener("keydown",B,!0),()=>document.removeEventListener("keydown",B,!0)},[]),o(()=>{if(!C)return;h.current?.querySelector(".item.sel")?.scrollIntoView({block:"nearest"})},[C?.idx,C?.blockId]),o(()=>{if(!C)return;let B=()=>f(null);return document.addEventListener("focusout",B),()=>document.removeEventListener("focusout",B)},[!!C]);let p3=(B,v,m)=>{if(B.isComposing||B.keyCode===229)return;if(C&&C.blockId===v.id){if(B.key==="ArrowDown"){B.preventDefault(),f({...C,idx:Math.min(C.idx+1,z8.length-1)});return}if(B.key==="ArrowUp"){B.preventDefault(),f({...C,idx:Math.max(C.idx-1,0)});return}if(B.key==="Enter"){B.preventDefault();let D=z8[C.idx];if(D)o1(D);return}if(B.key==="Escape"){f(null);return}}if((B.metaKey||B.ctrlKey)&&(B.key==="a"||B.key==="A")){if(qG(m))B.preventDefault(),e1();return}if(B.key==="Tab"){B.preventDefault(),(B.shiftKey?s1:h3)(v.id);return}if((B.key==="ArrowUp"||B.key==="ArrowDown")&&!B.shiftKey&&!j1()){let D=GG(m);if(B.key==="ArrowUp"&&D.first){let c=s9(q0,v.id);if(c){B.preventDefault(),D0(c.id,!0);return}}else if(B.key==="ArrowDown"&&D.last){let c=iZ(q0,v.id);if(c){B.preventDefault(),D0(c.id);return}}}if(B.key===" "&&!j1()&&(v.type==="p"||wZ(v.type)||v.type==="bullet")){let{before:D,after:c}=t8(m);if(v.type==="p"||wZ(v.type)){let H0=A1(D+" "," ");if(H0&&(v.type==="p"||wZ(H0.type))){B.preventDefault(),t1(v,{...H0,content:c});return}}else{let H0=A$(D);if(H0){B.preventDefault(),I(v.id,"todo",{content:c,checked:H0.checked});return}}}if(B.key==="Enter"&&!B.shiftKey&&v.type!=="code"){let D=A1((m.textContent??"").trim(),"Enter");if(D){if(B.preventDefault(),Q9(v.type)&&D.type==="code"){j3(v,D);return}t1(v,D);return}B.preventDefault();let c=(m.textContent??"").trim()==="";if(Q9(v.type)&&c&&!(v.children??[]).length){I(v.id,"p");return}let{before:H0,after:L0}=t8(m);v.content=H0,j(v.id,Q9(v.type)?v.type:"p",{content:L0})}else if(B.key==="Backspace"){if((m.textContent??"")==="")if(B.preventDefault(),v.type!=="p")I(v.id,"p");else{let D=s9(q0,v.id);if(D)E(v.id),requestAnimationFrame(()=>D0(D.id,!0))}else if(!j1()&&zG(m))if(Q9(v.type))B.preventDefault(),I(v.id,"p",{content:rZ(v,m)});else{let D=s9(q0,v.id);if(D&&D.type!=="code"&&D.type!=="table"&&D.type!=="divider"){B.preventDefault();let c=t$(D.content);D.content+=rZ(v,m),E(v.id),requestAnimationFrame(()=>{let H0=document.querySelector(`.block[data-bid="${D.id}"] .editable`);if(H0){let L0=lZ(D.content);if(H0.innerHTML!==L0)H0.innerHTML=L0}D1(D.id,c)})}}}},c3=(B,v,m)=>{if(B.isComposing||B.keyCode===229)return;let{value:D,selectionStart:c,selectionEnd:H0}=m;if(B.key==="Tab"){if(B.preventDefault(),B.shiftKey){s1(v.id);return}document.execCommand("insertText",!1," ");return}if(B.key==="ArrowDown"&&c===H0&&D.indexOf(`
|
|
140
|
+
`,c)===-1){B.preventDefault();let L0=iZ(q0,v.id);if(L0)D0(L0.id);else j(v.id,"p");return}if(B.key==="ArrowUp"&&c===H0&&D.lastIndexOf(`
|
|
141
|
+
`,c-1)===-1){B.preventDefault();let L0=s9(q0,v.id);if(L0)D0(L0.id,!0);return}if(B.key==="Backspace"&&D===""){B.preventDefault();let L0=I0(q0,v.id),B0=L0?.parentBlock;if(L0&&B0&&Q9(B0.type)&&B0.content.trim()===""){if(L0.parent.splice(L0.index,1),L0.parent.length===0)delete B0.children;N0(),requestAnimationFrame(()=>D0(B0.id)),O0();return}I(v.id,"p")}},d3=(B,v)=>{B.stopPropagation();let m=A0,D=m.length>1&&m.includes(v.id),c=D?k9(q0,m).length:1,H0=D||!dZ(v.type)&&v.type!=="uploading";_0(B,(L0)=>$(r,{children:[H0&&$(r,{children:[$(h0,{children:D?`转换为(${c} 个块)`:"转换为"},void 0,!1,void 0,this),C1.filter((B0)=>B0.type!=="divider"&&!dZ(B0.type)&&(!D||B0.type!=="table")).map((B0)=>$(z0,{icon:B0.ic,label:B0.t,checked:!D&&v.type===B0.type,onClick:()=>{D?u3(m,B0.type):I(v.id,B0.type,{content:v.content}),L0()}},B0.type,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(z0,{icon:"copy",label:D?"复制块组":"复制块",onClick:()=>{if(D)ZJ(m);else{let B0=I0(q0,v.id);if(B0)B0.parent.splice(B0.index+1,0,i8(v));N0(),O0()}L0()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:D?"删除块组":"删除块",danger:!0,onClick:()=>{if(D)z6(m);else E(v.id);L0()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},W6=W0(null),i3=(B)=>{let v=B.parentElement;while(v){let m=getComputedStyle(v).overflowY;if((m==="auto"||m==="scroll")&&v.scrollHeight>v.clientHeight)return v;v=v.parentElement}return null},QJ=(B)=>{if(Y==="source"){let v=G.current,m=e.current[B];if(!v||!m)return;v.setSelectionRange(m[0],m[1]);let D=v.value.slice(0,m[0]).split(`
|
|
142
|
+
`).length-1,c=getComputedStyle(v),H0=parseFloat(c.lineHeight)||20,L0=(parseFloat(c.paddingTop)||0)+D*H0,B0=i3(v);if(B0){let m0=v.getBoundingClientRect().top-B0.getBoundingClientRect().top+B0.scrollTop;B0.scrollTo({top:Math.max(0,m0+L0-B0.clientHeight/2),behavior:"smooth"})}else{let m0=v.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,m0+L0-innerHeight/2),behavior:"smooth"})}}else{let v=J0.current,m=v[B]??null;if(l$(v,m),m){let D=m.startContainer;(D.nodeType===3?D.parentElement:D)?.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"})}}};o(()=>{if(!x){n8(),J0.current=[],e.current=[],Z0(0);return}let B={caseSensitive:x.caseSensitive,wholeWord:x.wholeWord},v=setTimeout(()=>{let m;if(Y==="source"){let c=G.current?.value??W.current;e.current=g1(c,x.term,B),J0.current=[],n8(),m=e.current.length}else{let c=Q0.current;J0.current=c?n$(c,x.term,B):[],e.current=[],m=J0.current.length}let D=m?Math.min(G0.current,m-1):0;G0.current=D,V(D),Z0(m),QJ(D)},110);return()=>clearTimeout(v)},[x,K,Y]),o(()=>()=>n8(),[]),o(()=>{let B=(v)=>{if((v.metaKey||v.ctrlKey)&&!v.altKey&&v.key.toLowerCase()==="f")v.preventDefault(),b((m)=>m??{term:"",caseSensitive:!1,wholeWord:!1}),requestAnimationFrame(()=>{let m=Q0.current?.parentElement?.querySelector(".find-bar input")??document.querySelector(".find-bar input");m?.focus(),m?.select()})};return window.addEventListener("keydown",B),()=>window.removeEventListener("keydown",B)},[]);let a3=(B)=>{let v=Y==="source"?e.current.length:J0.current.length;if(!v)return;let m=(G0.current+B+v)%v;G0.current=m,V(m),QJ(m)},n3=()=>b(null);if(U)return $("div",{class:"empty",children:"加载中…"},void 0,!1,void 0,this);let l3=new Set(A0),XJ=(B,v=0)=>{let m=d8(B.filter((D)=>!o9(D)));return B.map((D)=>$(aW,{renderKey:K,block:D,depth:v,selected:l3.has(D.id),number:D.type==="numbered"?m.get(D.id)??1:0,onInput:(c)=>a(D,c),onPaste:(c,H0)=>F0(c,D,H0),onLangInput:(c)=>{D.lang=c,N0(),O0()},onKeyDown:(c,H0)=>p3(c,D,H0),onCodeInput:(c)=>{D.content=c,c0("text:"+D.id),O0()},onCodeKeyDown:(c,H0)=>c3(c,D,H0),onCellInput:(c,H0,L0)=>{if(!D.rows?.[c])return;D.rows[c][H0]=L0,c0("table:"+D.id+":"+c+":"+H0),O0()},onTableChange:()=>{N0(),O0()},onAdd:()=>j(D.id),onMenu:(c)=>d3(c,D),onToggle:()=>{D.checked=!D.checked,N0(),O0()},onVoidChange:(c)=>X8(D.id,c),onVoidKey:(c)=>f3(c,D),onPreview:()=>b3(D),dragRef:W6,onReorder:(c,H0)=>{let L0=A0;if(L0.length>1&&L0.includes(c)?x$(q0,L0,D.id,H0):b$(q0,c,D.id,H0))N0(),O0()},children:D.children?.length?XJ(D.children,v+1):null},D.id,!1,void 0,this))};return $(r,{children:[Y==="blocks"&&$(iW,{blocks:q0},K,!1,void 0,this),x&&$(sW,{term:x.term,caseSensitive:x.caseSensitive,wholeWord:x.wholeWord,idx:u,total:i,onTerm:(B)=>{G0.current=0,b((v)=>v?{...v,term:B}:v)},onToggleCase:()=>b((B)=>B?{...B,caseSensitive:!B.caseSensitive}:B),onToggleWord:()=>b((B)=>B?{...B,wholeWord:!B.wholeWord}:B),onStep:a3,onClose:n3},void 0,!1,void 0,this),$("div",{ref:Q0,class:"doc"+(Y==="source"?" source-mode":""),onMouseDown:(B)=>E3(B),onMouseUp:()=>b1(M),onKeyUp:(B)=>{if(B.shiftKey||B.key.startsWith("Arrow"))b1(M)},onDragOver:(B)=>{if(W6.current||Y==="source")return;if(!Array.from(B.dataTransfer?.items??[]).some((m)=>m.kind==="file"))return;if(B.preventDefault(),B.dataTransfer)B.dataTransfer.dropEffect="copy";let v=e$(Q0.current,B.clientY);if(v)J3(v,B);else CZ()},onDragLeave:(B)=>{if(!B.relatedTarget||!Q0.current?.contains(B.relatedTarget))CZ()},onDrop:(B)=>{if(W6.current||Y==="source")return;let v=r$(B.dataTransfer);if(!v.length)return;B.preventDefault();let m=e$(Q0.current,B.clientY);if(m?.dataset.bid){let D=y8(m,B,"y");CZ(),k0(m.dataset.bid,D,v)}else CZ(),g0(v)},children:[n&&$("div",{class:"doc-conflict",role:"alert",children:[$("span",{class:"doc-conflict-msg",children:"文档已被其他端修改,自动保存已暂停。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>v0(),children:"载入最新(弃本地改动)"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>void T0({force:!0}),children:"用本地版本覆盖"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"doc-title",contentEditable:!0,onInput:(B)=>{q.current=B.target.textContent??"",c0("title"),O0()},onKeyDown:(B)=>{if(B.isComposing||B.keyCode===229)return;if(B.key==="Enter")if(B.preventDefault(),!q0.length)j(null);else D0(q0[0].id)},dangerouslySetInnerHTML:{__html:q.current}},void 0,!1,void 0,this),$("div",{class:"doc-meta",children:[$("span",{children:[$(g,{name:"file",cls:"ico sm"},void 0,!1,void 0,this),R1(q0)," 个块"]},void 0,!0,void 0,this),$("span",{children:"实时同步"},void 0,!1,void 0,this),H.has(Z)&&$("button",{class:"doc-shared",title:"已分享 · 管理分享",onClick:()=>A9({kind:"doc",ref:Z,title:q.current}),children:[$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),"已分享"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y==="source"?$("textarea",{ref:G,class:"doc-source",spellcheck:!1,defaultValue:W.current,onInput:(B)=>{let v=B.currentTarget;W.current=v.value,s$(v),O0()}},void 0,!1,void 0,this):XJ(q0),Y==="blocks"&&q0.length===0&&$("div",{class:"editable",style:{color:"var(--muted)",cursor:"text"},onClick:()=>j(null),children:"点此书写,或输入 “/” 选择块类型…"},void 0,!1,void 0,this),C&&z8.length>0&&(()=>{let m=innerHeight-(C.y+22)-8,D=C.y-8,c=m>=240||m>=D,H0=Math.min(C.x,innerWidth-270),L0=Math.min(c?m:D,Math.round(innerHeight*0.7)),B0=c?{left:H0,top:C.y+22,maxHeight:L0,minWidth:260}:{left:H0,bottom:innerHeight-C.y+6,maxHeight:L0,minWidth:260};return $("div",{class:"pop",style:B0,ref:h,children:[$(h0,{children:"基础块"},void 0,!1,void 0,this),z8.map((m0,K9)=>$("button",{class:"item"+(K9===C.idx?" sel":""),onMouseDown:(XZ)=>{XZ.preventDefault(),o1(m0)},children:[$("span",{class:"lico",children:$(g,{name:m0.ic,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:m0.t},void 0,!1,void 0,this),$("span",{class:"d",children:m0.d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},m0.type,!0,void 0,this))]},void 0,!0,void 0,this)})(),_&&!k&&$(eW,{x:_.x,y:_.y,onCommand:D3},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L&&$(g$,{src:L.src,name:L.name,onClose:()=>P(null),onReplace:(B)=>void g3(L.id,B)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function r$(Z){if(!Z)return[];let J=[];for(let Q=0;Q<(Z.items?.length??0);Q++){let X=Z.items[Q];if(X.kind==="file"){let z=X.getAsFile();if(z)J.push(z)}}if(!J.length)for(let Q=0;Q<(Z.files?.length??0);Q++)J.push(Z.files[Q]);return J}function aW({block:Z,number:J,depth:Q,renderKey:X,selected:z,onInput:W,onPaste:G,onLangInput:q,onKeyDown:H,onCodeInput:Y,onCodeKeyDown:F,onCellInput:K,onTableChange:N,onAdd:U,onMenu:O,onToggle:C,onVoidChange:f,onVoidKey:h,onPreview:_,dragRef:M,onReorder:k,children:T}){let L=W0(null);o(()=>{let A=L.current;if(A&&Z.type!=="code"){let y=lZ(Z.content);if(A.innerHTML!==y&&e9(A.innerHTML)!==Z.content)A.innerHTML=y}},[X,Z.type]);let P=Q9(Z.type)&&Z.content.trim()===""&&Z.children?.[0]?.type==="code",w="block b-"+Z.type+(Z.type==="todo"&&Z.checked?" b-done":"")+(P?" list-code-host":"")+(z?" selected":"");return $("div",{class:"block-wrap"+(Q?" nested":""),children:[$("div",{class:w,"data-bid":Z.id,onDragOver:(A)=>{if(M.current&&M.current!==Z.id){if(A.preventDefault(),A.dataTransfer)A.dataTransfer.dropEffect="move";J3(A.currentTarget,A)}},onDrop:(A)=>{if(M.current){A.preventDefault(),A.stopPropagation();let y=A.currentTarget.classList.contains("drop-after")?"after":"before",S=M.current;M.current=null,CZ(),k(S,y)}},children:[$("div",{class:"gutter",children:[$("button",{title:"在下方插入",onClick:U,children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"grip",title:"拖拽移动 · 点击菜单",draggable:!0,onClick:O,onDragStart:(A)=>{if(M.current=Z.id,A.dataTransfer)A.dataTransfer.effectAllowed="move",A.dataTransfer.setData("text/plain",Z.id);A.currentTarget.closest(".block").classList.add("dragging")},onDragEnd:(A)=>{A.currentTarget.closest(".block").classList.remove("dragging"),CZ()},children:$(g,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.type==="divider"?$("hr",{},void 0,!1,void 0,this):Z.type==="table"?$(oW,{block:Z,renderKey:X,onCellInput:K,onTableChange:N},void 0,!1,void 0,this):Z.type==="image"||Z.type==="video"||Z.type==="audio"||Z.type==="file"||Z.type==="html"||Z.type==="uploading"?$("div",{class:"void-host",tabindex:0,onKeyDown:(A)=>h(A),children:Z.type==="image"?$(T$,{block:Z,selected:z,onResize:(A)=>f({width:A}),onPreview:_},void 0,!1,void 0,this):Z.type==="video"?$(k$,{block:Z},void 0,!1,void 0,this):Z.type==="audio"?$(R$,{block:Z},void 0,!1,void 0,this):Z.type==="file"?$(I$,{block:Z},void 0,!1,void 0,this):Z.type==="uploading"?$(v$,{block:Z},void 0,!1,void 0,this):$(S$,{block:Z,selected:z,onChange:(A)=>f({content:A})},void 0,!1,void 0,this)},void 0,!1,void 0,this):$(r,{children:[Z.type==="bullet"&&$("div",{class:"marker",children:"•"},void 0,!1,void 0,this),Z.type==="numbered"&&$("div",{class:"marker",children:[J,"."]},void 0,!0,void 0,this),Z.type==="todo"&&$("div",{class:"marker",children:$("input",{type:"checkbox",checked:!!Z.checked,onChange:C},void 0,!1,void 0,this)},void 0,!1,void 0,this),P?null:Z.type==="code"?$(rW,{block:Z,renderKey:X,onInput:Y,onLangChange:q,onKeyDown:F},void 0,!1,void 0,this):$("div",{ref:L,class:"editable",contentEditable:!0,"data-ph":nW(Z.type),"data-ph-hint":lW(Z.type)?"slash":"kind",onInput:(A)=>W(A.currentTarget),onPaste:(A)=>G(A,A.currentTarget),onKeyDown:(A)=>H(A,A.currentTarget)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),T]},void 0,!0,void 0,this)}var Z3={h1:"标题 1",h2:"标题 2",h3:"标题 3",code:"输入代码…",quote:"引用"};function nW(Z){return Z3[Z]??"输入文本,“/” 唤出命令"}function lW(Z){return!(Z in Z3)}function rW({block:Z,renderKey:J,onInput:Q,onLangChange:X,onKeyDown:z}){let W=W0(null),G=W0(null),q=W0(null),[H,Y]=R(!1),F=(U)=>{if(G.current)G.current.innerHTML=cW(U,Z.lang);if(q.current){let C=U.split(`
|
|
143
|
+
`).length,f="1";for(let h=2;h<=C;h++)f+=`
|
|
144
|
+
`+h;q.current.textContent=f}let O=W.current;if(O)O.style.height="auto",O.style.height=O.scrollHeight+"px"};o(()=>{let U=W.current;if(U&&U.value!==Z.content)U.value=Z.content;F(Z.content)},[J,Z.lang]);let K=Z.lang??"",N=w1.some((U)=>U.id===K);return $("div",{class:"codeblock",children:[$("div",{class:"code-body",children:[$("div",{ref:q,class:"code-gutter","aria-hidden":"true",children:"1"},void 0,!1,void 0,this),$("div",{class:"code-scroll",children:[$("pre",{class:"code-hl","aria-hidden":"true",children:$("code",{ref:G,class:"hljs"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("textarea",{ref:W,class:"code-input",rows:1,spellcheck:!1,wrap:"off",placeholder:"输入代码…",onInput:(U)=>{let O=U.currentTarget;Q(O.value),F(O.value)},onKeyDown:(U)=>z(U,U.currentTarget),onScroll:(U)=>{let O=G.current?.parentElement;if(O)O.scrollLeft=U.currentTarget.scrollLeft}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"code-tools",children:[$("span",{class:"code-lang",children:[$("select",{value:K,onChange:(U)=>X(U.currentTarget.value),children:[!N&&$("option",{value:K,children:K||"纯文本"},void 0,!1,void 0,this),w1.map((U)=>$("option",{value:U.id,children:U.label},U.id,!1,void 0,this))]},void 0,!0,void 0,this),$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"code-copy"+(H?" ok":""),title:"复制代码",onClick:()=>{let U=W.current?.value??Z.content;navigator.clipboard?.writeText(U).then(()=>{Y(!0),setTimeout(()=>Y(!1),1400)}).catch(()=>{})},children:[$(g,{name:H?"check":"copy",cls:"ico sm"},void 0,!1,void 0,this),H?"已复制":"复制"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function oW({block:Z,renderKey:J,onCellInput:Q,onTableChange:X}){let z=Z.rows??[],W=z[0]?.length??0,G=Z.align??[],q=W0(null),H=W0([]);if(H.current.length!==W)H.current=Array.from({length:W},(M,k)=>H.current[k]??160);let Y=()=>{Z.rows=[...z,Array(W).fill("")],X()},F=()=>{Z.rows=z.map((M)=>[...M,""]),Z.align=[...G,null],X()},K=(M)=>{Z.rows=z.map((T)=>{let L=[...T];return L.splice(M,0,""),L});let k=[...G];k.splice(M,0,null),Z.align=k,X()},N=(M)=>{if(W<=1)return;Z.rows=z.map((k)=>k.filter((T,L)=>L!==M)),Z.align=G.filter((k,T)=>T!==M),X()},U=(M)=>{if(M===0||z.length<=2)return;Z.rows=z.filter((k,T)=>T!==M),X()},O=(M,k)=>{let T=Array.from({length:W},(L,P)=>G[P]??null);T[M]=k,Z.align=T,X()},C=(M,k)=>{let T=q.current?.querySelector(`.doc-td[data-r="${M}"][data-c="${k}"]`);if(!T)return!1;T.focus();let L=document.createRange();L.selectNodeContents(T),L.collapse(!1);let P=getSelection();return P?.removeAllRanges(),P?.addRange(L),!0},f=(M,k,T)=>{if(M.isComposing||M.keyCode===229)return;if(M.key==="Tab"){if(M.preventDefault(),M.shiftKey){if(T>0)C(k,T-1);else if(k>0)C(k-1,W-1)}else if(T<W-1)C(k,T+1);else if(k<z.length-1)C(k+1,0);else Y(),requestAnimationFrame(()=>C(z.length,0));return}if(M.key==="Enter"){if(M.preventDefault(),k<z.length-1)C(k+1,T);else Y(),requestAnimationFrame(()=>C(z.length,T));return}},h=(M,k)=>{M.preventDefault(),M.stopPropagation(),_8(M,{col:q.current?.querySelector(`col[data-tcol="${k}"]`)??null,startWidth:H.current[k]??160,min:60,onDone:(T)=>{H.current[k]=T}})},_=(M,k)=>{M.preventDefault(),M.stopPropagation(),_0(M,(T)=>$(r,{children:[$(h0,{children:"对齐方式"},void 0,!1,void 0,this),$(z0,{icon:"alignLeft",label:"左对齐",checked:(G[k]??null)===null||G[k]==="left",onClick:()=>{O(k,"left"),T()}},void 0,!1,void 0,this),$(z0,{icon:"alignCenter",label:"居中",checked:G[k]==="center",onClick:()=>{O(k,"center"),T()}},void 0,!1,void 0,this),$(z0,{icon:"alignRight",label:"右对齐",checked:G[k]==="right",onClick:()=>{O(k,"right"),T()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"在左侧插入列",onClick:()=>{K(k),T()}},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{K(k+1),T()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除列",danger:!0,onClick:()=>{N(k),T()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"doc-table-wrap",children:$("div",{class:"doc-table-scroll",children:$("div",{class:"doc-table-inner",children:[$("div",{class:"doc-table-row",children:[$("table",{ref:q,class:"doc-table",children:[$("colgroup",{children:Array.from({length:W},(M,k)=>$("col",{"data-tcol":k,style:{width:H.current[k]}},k,!1,void 0,this))},void 0,!1,void 0,this),$("tbody",{children:z.map((M,k)=>$("tr",{children:M.map((T,L)=>$("td",{class:k===0?"doc-th":void 0,children:[$(tW,{value:T,renderKey:J,r:k,c:L,align:G[L]??null,onInput:(P)=>Q(k,L,P),onKeyDown:(P)=>f(P,k,L)},void 0,!1,void 0,this),k===0&&$(r,{children:[$("button",{class:"doc-col-menu",title:"列选项",onMouseDown:(P)=>_(P,L),children:$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"doc-col-resizer",onPointerDown:(P)=>h(P,L)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L===0&&k>0&&z.length>2&&$("button",{class:"doc-row-del",title:"删除行",onMouseDown:(P)=>{P.preventDefault(),P.stopPropagation(),U(k)},children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L,!0,void 0,this))},k,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addcol",title:"新增列",onMouseDown:(M)=>{M.preventDefault(),F()},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addrow",title:"新增行",onMouseDown:(M)=>{M.preventDefault(),Y()},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function tW({value:Z,renderKey:J,r:Q,c:X,align:z,onInput:W,onKeyDown:G}){let q=W0(null);return o(()=>{let H=q.current;if(H){let Y=lZ(Z);if(H.innerHTML!==Y&&e9(H.innerHTML)!==Z)H.innerHTML=Y}},[J]),$("div",{ref:q,class:"doc-td","data-r":Q,"data-c":X,contentEditable:!0,"data-ph":Q===0?"表头":"",style:z?{textAlign:z}:void 0,onInput:(H)=>W(e9(H.currentTarget.innerHTML)),onKeyDown:(H)=>G(H)},void 0,!1,void 0,this)}function sW({term:Z,caseSensitive:J,wholeWord:Q,idx:X,total:z,onTerm:W,onToggleCase:G,onToggleWord:q,onStep:H,onClose:Y}){let F=(K)=>K.preventDefault();return $("div",{class:"find-bar",role:"search",children:[$(g,{name:"search",cls:"ico sm find-ico"},void 0,!1,void 0,this),$("input",{type:"text",placeholder:"在文档中查找",value:Z,autoFocus:!0,onInput:(K)=>W(K.currentTarget.value),onKeyDown:(K)=>{if(K.key==="Enter")K.preventDefault(),H(K.shiftKey?-1:1);else if(K.key==="Escape")K.preventDefault(),Y()}},void 0,!1,void 0,this),$("span",{class:"find-count",children:z?`${X+1} / ${z}`:Z?"无结果":""},void 0,!1,void 0,this),$("button",{class:"find-opt"+(J?" on":""),title:"区分大小写",onMouseDown:F,onClick:G,children:"Aa"},void 0,!1,void 0,this),$("button",{class:"find-opt"+(Q?" on":""),title:"全词匹配",onMouseDown:F,onClick:q,children:"全词"},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"上一个 (Shift+Enter)",disabled:!z,onMouseDown:F,onClick:()=>H(-1),children:$(g,{name:"chevronDown",cls:"ico sm find-prev"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"下一个 (Enter)",disabled:!z,onMouseDown:F,onClick:()=>H(1),children:$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav find-close",title:"关闭 (Esc)",onClick:Y,children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eW({x:Z,y:J,onCommand:Q}){let X=(z)=>(W)=>{W.preventDefault(),Q(z)};return $("div",{class:"pop",style:{left:Math.max(8,Math.min(Z,innerWidth-220)),top:J-46,minWidth:0,padding:3,display:"flex",gap:1},children:[["bold","bold"],["italic","italic"],["underline","underline"],["strikeThrough","strike"],["code","code"],["createLink","link"]].map(([z,W])=>$("button",{class:"item",style:{width:34,justifyContent:"center",padding:"7px 0"},onMouseDown:X(z),children:$(g,{name:W,cls:"ico sm"},void 0,!1,void 0,this)},z,!1,void 0,this))},void 0,!1,void 0,this)}function ZG(){let Z=getSelection();if(!Z||Z.isCollapsed)return;document.execCommand("insertHTML",!1,`<code>${nZ(Z.toString())}</code>`)}function ZZ(Z){document.querySelectorAll(".doc .block[data-bid]").forEach((J)=>JG(Z,J))}function JG(Z,J){let Q=J.matches(".block[data-bid]")?J:J.closest(".block[data-bid]"),X=Q?.getAttribute("data-bid"),z=X?I0(Z,X)?.block:null;if(!z||!Q)return;let W=Q.querySelector(".editable"),G=Q.querySelector(".code-input");if(W)z.content=rZ(z,W);else if(G)z.content=G.value}function $G(Z){return(Z instanceof HTMLElement?Z:Z.parentElement)?.closest(".block[data-bid]")??null}function o$(){return document.activeElement?.closest?.(".doc .block[data-bid]")?.getAttribute("data-bid")??null}function h1(Z){document.querySelector(".doc")?.classList.toggle("selecting",Z)}function l8(){getSelection()?.removeAllRanges(),document.activeElement?.blur?.(),h1(!0)}function b1(Z){let J=getSelection();if(!J||J.isCollapsed||!J.rangeCount)return Z(null);if(!J.anchorNode?.parentElement?.closest?.(".editable"))return Z(null);let X=J.getRangeAt(0),z=X.getBoundingClientRect(),W=z.width||z.height?z:X.getClientRects()[0];if(!W)return Z(null);Z({x:W.left,y:W.top})}function QG(Z){let J=getSelection()?.anchorNode?.parentElement?.closest?.(".editable"),X=J?.closest(".block")?.getAttribute("data-bid"),z=X?I0(Z,X)?.block:null;if(z&&J)z.content=rZ(z,J)}function rZ(Z,J){return e9(J.innerHTML)}function j1(){let Z=getSelection();return!!Z&&!Z.isCollapsed}function XG(Z){let J=getSelection();if(!J||!J.rangeCount)return 0;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return 0;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length}function r8(Z){let J=document.querySelector(`.block[data-bid="${Z}"]`),Q=document.activeElement;if(!J||!Q||!J.contains(Q))return null;if(Q instanceof HTMLTextAreaElement)return Q.selectionStart;let X=J.querySelector(".editable");return X?XG(X):null}function o8(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .code-input`);if(Q){Q.focus();let X=Math.min(J,Q.value.length);Q.setSelectionRange(X,X);return}D1(Z,J)}function zG(Z){let J=getSelection();if(!J||!J.rangeCount||!J.isCollapsed)return!1;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return!1;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length===0}function WG(){let Z=getSelection();if(!Z||!Z.rangeCount)return{x:80,y:120};let J=Z.getRangeAt(0).getBoundingClientRect();return{x:J.left||80,y:J.top||120}}function GG(Z){let J=getSelection();if(!J||!J.rangeCount)return{first:!0,last:!0};let Q=J.getRangeAt(0).getBoundingClientRect(),X=Z.getBoundingClientRect();if(!Q.height&&!Q.top)return{first:!0,last:!0};let z=parseFloat(getComputedStyle(Z).lineHeight)||Q.height||20;return{first:Q.top-X.top<z*0.5,last:X.bottom-Q.bottom<z*0.5}}function qG(Z){let J=Z.textContent??"";if(J.trim()==="")return!0;let Q=getSelection();if(!Q||!Q.rangeCount||Q.isCollapsed)return!1;if(!Z.contains(Q.anchorNode)||!Z.contains(Q.focusNode))return!1;return Q.toString().length>=J.length}function t8(Z){let J=getSelection();if(!J||!J.rangeCount||!Z.contains(J.getRangeAt(0).startContainer))return{before:e9(Z.innerHTML),after:""};let Q=J.getRangeAt(0),X=(z)=>{let W=document.createRange();W.selectNodeContents(Z),z(W);let G=document.createElement("div");return G.appendChild(W.cloneContents()),e9(G.innerHTML)};return{before:X((z)=>z.setEnd(Q.startContainer,Q.startOffset)),after:X((z)=>z.setStart(Q.endContainer,Q.endOffset))}}function t$(Z){let J=document.createElement("div");return J.innerHTML=lZ(Z),(J.textContent??"").length}function D1(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .editable`);if(!Q)return;Q.focus();let X=document.createTreeWalker(Q,NodeFilter.SHOW_TEXT),z=J,W=null;for(let H=X.nextNode();H;H=X.nextNode()){if(W=H,z<=H.data.length)break;z-=H.data.length}let G=document.createRange();if(W)G.setStart(W,Math.min(z,W.data.length));else G.selectNodeContents(Q);G.collapse(!0);let q=getSelection();q?.removeAllRanges(),q?.addRange(G)}function D0(Z,J=!1){let Q=`.block[data-bid="${Z}"] .editable, .block[data-bid="${Z}"] .code-input, .block[data-bid="${Z}"] .void-host`,X=document.querySelector(Q);if(!X)return;if(X.focus(),X.classList.contains("void-host"))return;if(X instanceof HTMLTextAreaElement){let G=J?X.value.length:0;X.setSelectionRange(G,G);return}let z=document.createRange();z.selectNodeContents(X),z.collapse(!J);let W=getSelection();W?.removeAllRanges(),W?.addRange(z)}function s$(Z){Z.style.height="auto",Z.style.height=Z.scrollHeight+"px"}var CZ=O9;function J3(Z,J){y8(Z,J,"y")}function e$(Z,J){if(!Z)return null;let Q=Array.from(Z.querySelectorAll(":scope > .block-wrap > .block")),X=null,z=1/0;for(let W of Q){let G=W.getBoundingClientRect();if(J>=G.top&&J<=G.bottom)return W;let q=J<G.top?G.top-J:J-G.bottom;if(q<z)z=q,X=W}return X}var MZ=function(Z,J){let z=Z,W=oZ[J],G=null,q=0,H=null,Y=[],F={},K=function(P,w){if(q=z*4+17,G=function(A){let y=Array(A);for(let S=0;S<A;S+=1){y[S]=Array(A);for(let p=0;p<A;p+=1)y[S][p]=null}return y}(q),N(0,0),N(q-7,0),N(0,q-7),C(),O(),h(P,w),z>=7)f(P);if(H==null)H=k(z,W,Y);_(H,w)},N=function(P,w){for(let A=-1;A<=7;A+=1){if(P+A<=-1||q<=P+A)continue;for(let y=-1;y<=7;y+=1){if(w+y<=-1||q<=w+y)continue;if(0<=A&&A<=6&&(y==0||y==6)||0<=y&&y<=6&&(A==0||A==6)||2<=A&&A<=4&&2<=y&&y<=4)G[P+A][w+y]=!0;else G[P+A][w+y]=!1}}},U=function(){let P=0,w=0;for(let A=0;A<8;A+=1){K(!0,A);let y=j9.getLostPoint(F);if(A==0||P>y)P=y,w=A}return w},O=function(){for(let P=8;P<q-8;P+=1){if(G[P][6]!=null)continue;G[P][6]=P%2==0}for(let P=8;P<q-8;P+=1){if(G[6][P]!=null)continue;G[6][P]=P%2==0}},C=function(){let P=j9.getPatternPosition(z);for(let w=0;w<P.length;w+=1)for(let A=0;A<P.length;A+=1){let y=P[w],S=P[A];if(G[y][S]!=null)continue;for(let p=-2;p<=2;p+=1)for(let n=-2;n<=2;n+=1)if(p==-2||p==2||n==-2||n==2||p==0&&n==0)G[y+p][S+n]=!0;else G[y+p][S+n]=!1}},f=function(P){let w=j9.getBCHTypeNumber(z);for(let A=0;A<18;A+=1){let y=!P&&(w>>A&1)==1;G[Math.floor(A/3)][A%3+q-8-3]=y}for(let A=0;A<18;A+=1){let y=!P&&(w>>A&1)==1;G[A%3+q-8-3][Math.floor(A/3)]=y}},h=function(P,w){let A=W<<3|w,y=j9.getBCHTypeInfo(A);for(let S=0;S<15;S+=1){let p=!P&&(y>>S&1)==1;if(S<6)G[S][8]=p;else if(S<8)G[S+1][8]=p;else G[q-15+S][8]=p}for(let S=0;S<15;S+=1){let p=!P&&(y>>S&1)==1;if(S<8)G[8][q-S-1]=p;else if(S<9)G[8][15-S-1+1]=p;else G[8][15-S-1]=p}G[q-8][8]=!P},_=function(P,w){let A=-1,y=q-1,S=7,p=0,n=j9.getMaskFunction(w);for(let $0=q-1;$0>0;$0-=2){if($0==6)$0-=1;while(!0){for(let Q0=0;Q0<2;Q0+=1)if(G[y][$0-Q0]==null){let x=!1;if(p<P.length)x=(P[p]>>>S&1)==1;if(n(y,$0-Q0))x=!x;if(G[y][$0-Q0]=x,S-=1,S==-1)p+=1,S=7}if(y+=A,y<0||q<=y){y-=A,A=-A;break}}}},M=function(P,w){let A=0,y=0,S=0,p=Array(w.length),n=Array(w.length);for(let b=0;b<w.length;b+=1){let u=w[b].dataCount,V=w[b].totalCount-u;y=Math.max(y,u),S=Math.max(S,V),p[b]=Array(u);for(let J0=0;J0<p[b].length;J0+=1)p[b][J0]=255&P.getBuffer()[J0+A];A+=u;let i=j9.getErrorCorrectPolynomial(V),G0=tZ(p[b],i.getLength()-1).mod(i);n[b]=Array(i.getLength()-1);for(let J0=0;J0<n[b].length;J0+=1){let e=J0+G0.getLength()-n[b].length;n[b][J0]=e>=0?G0.getAt(e):0}}let $0=0;for(let b=0;b<w.length;b+=1)$0+=w[b].totalCount;let Q0=Array($0),x=0;for(let b=0;b<y;b+=1)for(let u=0;u<w.length;u+=1)if(b<p[u].length)Q0[x]=p[u][b],x+=1;for(let b=0;b<S;b+=1)for(let u=0;u<w.length;u+=1)if(b<n[u].length)Q0[x]=n[u][b],x+=1;return Q0},k=function(P,w,A){let y=$3.getRSBlocks(P,w),S=Q3();for(let n=0;n<A.length;n+=1){let $0=A[n];S.put($0.getMode(),4),S.put($0.getLength(),j9.getLengthInBits($0.getMode(),P)),$0.write(S)}let p=0;for(let n=0;n<y.length;n+=1)p+=y[n].dataCount;if(S.getLengthInBits()>p*8)throw"code length overflow. ("+S.getLengthInBits()+">"+p*8+")";if(S.getLengthInBits()+4<=p*8)S.put(0,4);while(S.getLengthInBits()%8!=0)S.putBit(!1);while(!0){if(S.getLengthInBits()>=p*8)break;if(S.put(236,8),S.getLengthInBits()>=p*8)break;S.put(17,8)}return M(S,y)};F.addData=function(P,w){w=w||"Byte";let A=null;switch(w){case"Numeric":A=HG(P);break;case"Alphanumeric":A=YG(P);break;case"Byte":A=KG(P);break;case"Kanji":A=FG(P);break;default:throw"mode:"+w}Y.push(A),H=null},F.isDark=function(P,w){if(P<0||q<=P||w<0||q<=w)throw P+","+w;return G[P][w]},F.getModuleCount=function(){return q},F.make=function(){if(z<1){let P=1;for(;P<40;P++){let w=$3.getRSBlocks(P,W),A=Q3();for(let S=0;S<Y.length;S++){let p=Y[S];A.put(p.getMode(),4),A.put(p.getLength(),j9.getLengthInBits(p.getMode(),P)),p.write(A)}let y=0;for(let S=0;S<w.length;S++)y+=w[S].dataCount;if(A.getLengthInBits()<=y*8)break}z=P}K(!1,U())},F.createTableTag=function(P,w){P=P||2,w=typeof w>"u"?P*4:w;let A="";A+='<table style="',A+=" border-width: 0px; border-style: none;",A+=" border-collapse: collapse;",A+=" padding: 0px; margin: "+w+"px;",A+='">',A+="<tbody>";for(let y=0;y<F.getModuleCount();y+=1){A+="<tr>";for(let S=0;S<F.getModuleCount();S+=1)A+='<td style="',A+=" border-width: 0px; border-style: none;",A+=" border-collapse: collapse;",A+=" padding: 0px; margin: 0px;",A+=" width: "+P+"px;",A+=" height: "+P+"px;",A+=" background-color: ",A+=F.isDark(y,S)?"#000000":"#ffffff",A+=";",A+='"/>';A+="</tr>"}return A+="</tbody>",A+="</table>",A},F.createSvgTag=function(P,w,A,y){let S={};if(typeof arguments[0]=="object")S=arguments[0],P=S.cellSize,w=S.margin,A=S.alt,y=S.title;P=P||2,w=typeof w>"u"?P*4:w,A=typeof A==="string"?{text:A}:A||{},A.text=A.text||null,A.id=A.text?A.id||"qrcode-description":null,y=typeof y==="string"?{text:y}:y||{},y.text=y.text||null,y.id=y.text?y.id||"qrcode-title":null;let p=F.getModuleCount()*P+w*2,n,$0,Q0,x,b="",u;u="l"+P+",0 0,"+P+" -"+P+",0 0,-"+P+"z ",b+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',b+=!S.scalable?' width="'+p+'px" height="'+p+'px"':"",b+=' viewBox="0 0 '+p+" "+p+'" ',b+=' preserveAspectRatio="xMinYMin meet"',b+=y.text||A.text?' role="img" aria-labelledby="'+T([y.id,A.id].join(" ").trim())+'"':"",b+=">",b+=y.text?'<title id="'+T(y.id)+'">'+T(y.text)+"</title>":"",b+=A.text?'<description id="'+T(A.id)+'">'+T(A.text)+"</description>":"",b+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',b+='<path d="';for(Q0=0;Q0<F.getModuleCount();Q0+=1){x=Q0*P+w;for(n=0;n<F.getModuleCount();n+=1)if(F.isDark(Q0,n))$0=n*P+w,b+="M"+$0+","+x+u}return b+='" stroke="transparent" fill="black"/>',b+="</svg>",b},F.createDataURL=function(P,w){P=P||2,w=typeof w>"u"?P*4:w;let A=F.getModuleCount()*P+w*2,y=w,S=A-w;return BG(A,A,function(p,n){if(y<=p&&p<S&&y<=n&&n<S){let $0=Math.floor((p-y)/P),Q0=Math.floor((n-y)/P);return F.isDark(Q0,$0)?0:1}else return 1})},F.createImgTag=function(P,w,A){P=P||2,w=typeof w>"u"?P*4:w;let y=F.getModuleCount()*P+w*2,S="";if(S+="<img",S+=' src="',S+=F.createDataURL(P,w),S+='"',S+=' width="',S+=y,S+='"',S+=' height="',S+=y,S+='"',A)S+=' alt="',S+=T(A),S+='"';return S+="/>",S};let T=function(P){let w="";for(let A=0;A<P.length;A+=1){let y=P.charAt(A);switch(y){case"<":w+="<";break;case">":w+=">";break;case"&":w+="&";break;case'"':w+=""";break;default:w+=y;break}}return w},L=function(P){P=typeof P>"u"?2:P;let A=F.getModuleCount()*1+P*2,y=P,S=A-P,p,n,$0,Q0,x,b={"██":"█","█ ":"▀"," █":"▄"," ":" "},u={"██":"▀","█ ":"▀"," █":" "," ":" "},V="";for(p=0;p<A;p+=2){$0=Math.floor((p-y)/1),Q0=Math.floor((p+1-y)/1);for(n=0;n<A;n+=1){if(x="█",y<=n&&n<S&&y<=p&&p<S&&F.isDark($0,Math.floor((n-y)/1)))x=" ";if(y<=n&&n<S&&y<=p+1&&p+1<S&&F.isDark(Q0,Math.floor((n-y)/1)))x+=" ";else x+="█";V+=P<1&&p+1>=S?u[x]:b[x]}V+=`
|
|
145
|
+
`}if(A%2&&P>0)return V.substring(0,V.length-A-1)+Array(A+1).join("▀");return V.substring(0,V.length-1)};return F.createASCII=function(P,w){if(P=P||1,P<2)return L(w);P-=1,w=typeof w>"u"?P*2:w;let A=F.getModuleCount()*P+w*2,y=w,S=A-w,p,n,$0,Q0,x=Array(P+1).join("██"),b=Array(P+1).join(" "),u="",V="";for(p=0;p<A;p+=1){$0=Math.floor((p-y)/P),V="";for(n=0;n<A;n+=1){if(Q0=1,y<=n&&n<S&&y<=p&&p<S&&F.isDark($0,Math.floor((n-y)/P)))Q0=0;V+=Q0?x:b}for($0=0;$0<P;$0+=1)u+=V+`
|
|
146
|
+
`}return u.substring(0,u.length-1)},F.renderTo2dContext=function(P,w){w=w||2;let A=F.getModuleCount();for(let y=0;y<A;y++)for(let S=0;S<A;S++)P.fillStyle=F.isDark(y,S)?"black":"white",P.fillRect(S*w,y*w,w,w)},F};MZ.stringToBytes=function(Z){let J=[];for(let Q=0;Q<Z.length;Q+=1){let X=Z.charCodeAt(Q);J.push(X&255)}return J};MZ.createStringToBytes=function(Z,J){let Q=function(){let z=LG(Z),W=function(){let H=z.read();if(H==-1)throw"eof";return H},G=0,q={};while(!0){let H=z.read();if(H==-1)break;let Y=W(),F=W(),K=W(),N=String.fromCharCode(H<<8|Y),U=F<<8|K;q[N]=U,G+=1}if(G!=J)throw G+" != "+J;return q}(),X=63;return function(z){let W=[];for(let G=0;G<z.length;G+=1){let q=z.charCodeAt(G);if(q<128)W.push(q);else{let H=Q[z.charAt(G)];if(typeof H=="number")if((H&255)==H)W.push(H);else W.push(H>>>8),W.push(H&255);else W.push(63)}}return W}};var s0={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},oZ={L:1,M:0,Q:3,H:2},b9={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},j9=function(){let Z=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],J=1335,Q=7973,X=21522,z={},W=function(G){let q=0;while(G!=0)q+=1,G>>>=1;return q};return z.getBCHTypeInfo=function(G){let q=G<<10;while(W(q)-W(1335)>=0)q^=1335<<W(q)-W(1335);return(G<<10|q)^21522},z.getBCHTypeNumber=function(G){let q=G<<12;while(W(q)-W(7973)>=0)q^=7973<<W(q)-W(7973);return G<<12|q},z.getPatternPosition=function(G){return Z[G-1]},z.getMaskFunction=function(G){switch(G){case b9.PATTERN000:return function(q,H){return(q+H)%2==0};case b9.PATTERN001:return function(q,H){return q%2==0};case b9.PATTERN010:return function(q,H){return H%3==0};case b9.PATTERN011:return function(q,H){return(q+H)%3==0};case b9.PATTERN100:return function(q,H){return(Math.floor(q/2)+Math.floor(H/3))%2==0};case b9.PATTERN101:return function(q,H){return q*H%2+q*H%3==0};case b9.PATTERN110:return function(q,H){return(q*H%2+q*H%3)%2==0};case b9.PATTERN111:return function(q,H){return(q*H%3+(q+H)%2)%2==0};default:throw"bad maskPattern:"+G}},z.getErrorCorrectPolynomial=function(G){let q=tZ([1],0);for(let H=0;H<G;H+=1)q=q.multiply(tZ([1,h9.gexp(H)],0));return q},z.getLengthInBits=function(G,q){if(1<=q&&q<10)switch(G){case s0.MODE_NUMBER:return 10;case s0.MODE_ALPHA_NUM:return 9;case s0.MODE_8BIT_BYTE:return 8;case s0.MODE_KANJI:return 8;default:throw"mode:"+G}else if(q<27)switch(G){case s0.MODE_NUMBER:return 12;case s0.MODE_ALPHA_NUM:return 11;case s0.MODE_8BIT_BYTE:return 16;case s0.MODE_KANJI:return 10;default:throw"mode:"+G}else if(q<41)switch(G){case s0.MODE_NUMBER:return 14;case s0.MODE_ALPHA_NUM:return 13;case s0.MODE_8BIT_BYTE:return 16;case s0.MODE_KANJI:return 12;default:throw"mode:"+G}else throw"type:"+q},z.getLostPoint=function(G){let q=G.getModuleCount(),H=0;for(let K=0;K<q;K+=1)for(let N=0;N<q;N+=1){let U=0,O=G.isDark(K,N);for(let C=-1;C<=1;C+=1){if(K+C<0||q<=K+C)continue;for(let f=-1;f<=1;f+=1){if(N+f<0||q<=N+f)continue;if(C==0&&f==0)continue;if(O==G.isDark(K+C,N+f))U+=1}}if(U>5)H+=3+U-5}for(let K=0;K<q-1;K+=1)for(let N=0;N<q-1;N+=1){let U=0;if(G.isDark(K,N))U+=1;if(G.isDark(K+1,N))U+=1;if(G.isDark(K,N+1))U+=1;if(G.isDark(K+1,N+1))U+=1;if(U==0||U==4)H+=3}for(let K=0;K<q;K+=1)for(let N=0;N<q-6;N+=1)if(G.isDark(K,N)&&!G.isDark(K,N+1)&&G.isDark(K,N+2)&&G.isDark(K,N+3)&&G.isDark(K,N+4)&&!G.isDark(K,N+5)&&G.isDark(K,N+6))H+=40;for(let K=0;K<q;K+=1)for(let N=0;N<q-6;N+=1)if(G.isDark(N,K)&&!G.isDark(N+1,K)&&G.isDark(N+2,K)&&G.isDark(N+3,K)&&G.isDark(N+4,K)&&!G.isDark(N+5,K)&&G.isDark(N+6,K))H+=40;let Y=0;for(let K=0;K<q;K+=1)for(let N=0;N<q;N+=1)if(G.isDark(N,K))Y+=1;let F=Math.abs(100*Y/q/q-50)/5;return H+=F*10,H},z}(),h9=function(){let Z=Array(256),J=Array(256);for(let X=0;X<8;X+=1)Z[X]=1<<X;for(let X=8;X<256;X+=1)Z[X]=Z[X-4]^Z[X-5]^Z[X-6]^Z[X-8];for(let X=0;X<255;X+=1)J[Z[X]]=X;let Q={};return Q.glog=function(X){if(X<1)throw"glog("+X+")";return J[X]},Q.gexp=function(X){while(X<0)X+=255;while(X>=256)X-=255;return Z[X]},Q}(),tZ=function(Z,J){if(typeof Z.length>"u")throw Z.length+"/"+J;let Q=function(){let z=0;while(z<Z.length&&Z[z]==0)z+=1;let W=Array(Z.length-z+J);for(let G=0;G<Z.length-z;G+=1)W[G]=Z[G+z];return W}(),X={};return X.getAt=function(z){return Q[z]},X.getLength=function(){return Q.length},X.multiply=function(z){let W=Array(X.getLength()+z.getLength()-1);for(let G=0;G<X.getLength();G+=1)for(let q=0;q<z.getLength();q+=1)W[G+q]^=h9.gexp(h9.glog(X.getAt(G))+h9.glog(z.getAt(q)));return tZ(W,0)},X.mod=function(z){if(X.getLength()-z.getLength()<0)return X;let W=h9.glog(X.getAt(0))-h9.glog(z.getAt(0)),G=Array(X.getLength());for(let q=0;q<X.getLength();q+=1)G[q]=X.getAt(q);for(let q=0;q<z.getLength();q+=1)G[q]^=h9.gexp(h9.glog(z.getAt(q))+W);return tZ(G,0).mod(z)},X},$3=function(){let Z=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],J=function(z,W){let G={};return G.totalCount=z,G.dataCount=W,G},Q={},X=function(z,W){switch(W){case oZ.L:return Z[(z-1)*4+0];case oZ.M:return Z[(z-1)*4+1];case oZ.Q:return Z[(z-1)*4+2];case oZ.H:return Z[(z-1)*4+3];default:return}};return Q.getRSBlocks=function(z,W){let G=X(z,W);if(typeof G>"u")throw"bad rs block @ typeNumber:"+z+"/errorCorrectionLevel:"+W;let q=G.length/3,H=[];for(let Y=0;Y<q;Y+=1){let F=G[Y*3+0],K=G[Y*3+1],N=G[Y*3+2];for(let U=0;U<F;U+=1)H.push(J(K,N))}return H},Q}(),Q3=function(){let Z=[],J=0,Q={};return Q.getBuffer=function(){return Z},Q.getAt=function(X){let z=Math.floor(X/8);return(Z[z]>>>7-X%8&1)==1},Q.put=function(X,z){for(let W=0;W<z;W+=1)Q.putBit((X>>>z-W-1&1)==1)},Q.getLengthInBits=function(){return J},Q.putBit=function(X){let z=Math.floor(J/8);if(Z.length<=z)Z.push(0);if(X)Z[z]|=128>>>J%8;J+=1},Q},HG=function(Z){let J=s0.MODE_NUMBER,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(G){return Q.length},X.write=function(G){let q=Q,H=0;while(H+2<q.length)G.put(z(q.substring(H,H+3)),10),H+=3;if(H<q.length){if(q.length-H==1)G.put(z(q.substring(H,H+1)),4);else if(q.length-H==2)G.put(z(q.substring(H,H+2)),7)}};let z=function(G){let q=0;for(let H=0;H<G.length;H+=1)q=q*10+W(G.charAt(H));return q},W=function(G){if("0"<=G&&G<="9")return G.charCodeAt(0)-48;throw"illegal char :"+G};return X},YG=function(Z){let J=s0.MODE_ALPHA_NUM,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(W){return Q.length},X.write=function(W){let G=Q,q=0;while(q+1<G.length)W.put(z(G.charAt(q))*45+z(G.charAt(q+1)),11),q+=2;if(q<G.length)W.put(z(G.charAt(q)),6)};let z=function(W){if("0"<=W&&W<="9")return W.charCodeAt(0)-48;else if("A"<=W&&W<="Z")return W.charCodeAt(0)-65+10;else switch(W){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+W}};return X},KG=function(Z){let J=s0.MODE_8BIT_BYTE,Q=Z,X=MZ.stringToBytes(Z),z={};return z.getMode=function(){return J},z.getLength=function(W){return X.length},z.write=function(W){for(let G=0;G<X.length;G+=1)W.put(X[G],8)},z},FG=function(Z){let J=s0.MODE_KANJI,Q=Z,X=MZ.stringToBytes;(function(G,q){let H=X(G);if(H.length!=2||(H[0]<<8|H[1])!=q)throw"sjis not supported."})("友",38726);let z=X(Z),W={};return W.getMode=function(){return J},W.getLength=function(G){return~~(z.length/2)},W.write=function(G){let q=z,H=0;while(H+1<q.length){let Y=(255&q[H])<<8|255&q[H+1];if(33088<=Y&&Y<=40956)Y-=33088;else if(57408<=Y&&Y<=60351)Y-=49472;else throw"illegal char at "+(H+1)+"/"+Y;Y=(Y>>>8&255)*192+(Y&255),G.put(Y,13),H+=2}if(H<q.length)throw"illegal char at "+(H+1)},W},X3=function(){let Z=[],J={};return J.writeByte=function(Q){Z.push(Q&255)},J.writeShort=function(Q){J.writeByte(Q),J.writeByte(Q>>>8)},J.writeBytes=function(Q,X,z){X=X||0,z=z||Q.length;for(let W=0;W<z;W+=1)J.writeByte(Q[W+X])},J.writeString=function(Q){for(let X=0;X<Q.length;X+=1)J.writeByte(Q.charCodeAt(X))},J.toByteArray=function(){return Z},J.toString=function(){let Q="";Q+="[";for(let X=0;X<Z.length;X+=1){if(X>0)Q+=",";Q+=Z[X]}return Q+="]",Q},J},UG=function(){let Z=0,J=0,Q=0,X="",z={},W=function(q){X+=String.fromCharCode(G(q&63))},G=function(q){if(q<0)throw"n:"+q;else if(q<26)return 65+q;else if(q<52)return 97+(q-26);else if(q<62)return 48+(q-52);else if(q==62)return 43;else if(q==63)return 47;else throw"n:"+q};return z.writeByte=function(q){Z=Z<<8|q&255,J+=8,Q+=1;while(J>=6)W(Z>>>J-6),J-=6},z.flush=function(){if(J>0)W(Z<<6-J),Z=0,J=0;if(Q%3!=0){let q=3-Q%3;for(let H=0;H<q;H+=1)X+="="}},z.toString=function(){return X},z},LG=function(Z){let J=Z,Q=0,X=0,z=0,W={};W.read=function(){while(z<8){if(Q>=J.length){if(z==0)return-1;throw"unexpected end of file./"+z}let H=J.charAt(Q);if(Q+=1,H=="=")return z=0,-1;else if(H.match(/^\s$/))continue;X=X<<6|G(H.charCodeAt(0)),z+=6}let q=X>>>z-8&255;return z-=8,q};let G=function(q){if(65<=q&&q<=90)return q-65;else if(97<=q&&q<=122)return q-97+26;else if(48<=q&&q<=57)return q-48+52;else if(q==43)return 62;else if(q==47)return 63;else throw"c:"+q};return W},PG=function(Z,J){let Q=Z,X=J,z=Array(Z*J),W={};W.setPixel=function(Y,F,K){z[F*Q+Y]=K},W.write=function(Y){Y.writeString("GIF87a"),Y.writeShort(Q),Y.writeShort(X),Y.writeByte(128),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(255),Y.writeByte(255),Y.writeByte(255),Y.writeString(","),Y.writeShort(0),Y.writeShort(0),Y.writeShort(Q),Y.writeShort(X),Y.writeByte(0);let F=2,K=q(F);Y.writeByte(F);let N=0;while(K.length-N>255)Y.writeByte(255),Y.writeBytes(K,N,255),N+=255;Y.writeByte(K.length-N),Y.writeBytes(K,N,K.length-N),Y.writeByte(0),Y.writeString(";")};let G=function(Y){let F=Y,K=0,N=0,U={};return U.write=function(O,C){if(O>>>C!=0)throw"length over";while(K+C>=8)F.writeByte(255&(O<<K|N)),C-=8-K,O>>>=8-K,N=0,K=0;N=O<<K|N,K=K+C},U.flush=function(){if(K>0)F.writeByte(N)},U},q=function(Y){let F=1<<Y,K=(1<<Y)+1,N=Y+1,U=H();for(let _=0;_<F;_+=1)U.add(String.fromCharCode(_));U.add(String.fromCharCode(F)),U.add(String.fromCharCode(K));let O=X3(),C=G(O);C.write(F,N);let f=0,h=String.fromCharCode(z[f]);f+=1;while(f<z.length){let _=String.fromCharCode(z[f]);if(f+=1,U.contains(h+_))h=h+_;else{if(C.write(U.indexOf(h),N),U.size()<4095){if(U.size()==1<<N)N+=1;U.add(h+_)}h=_}}return C.write(U.indexOf(h),N),C.write(K,N),C.flush(),O.toByteArray()},H=function(){let Y={},F=0,K={};return K.add=function(N){if(K.contains(N))throw"dup key:"+N;Y[N]=F,F+=1},K.size=function(){return F},K.indexOf=function(N){return Y[N]},K.contains=function(N){return typeof Y[N]<"u"},K};return W},BG=function(Z,J,Q){let X=PG(Z,J);for(let q=0;q<J;q+=1)for(let H=0;H<Z;H+=1)X.setPixel(H,q,Q(H,q));let z=X3();X.write(z);let W=UG(),G=z.toByteArray();for(let q=0;q<G.length;q+=1)W.writeByte(G[q]);return W.flush(),"data:image/gif;base64,"+W},z3=MZ,gK=MZ.stringToBytes;function x1(){let Z=localStorage.getItem("mh-theme");return Z==="light"||Z==="dark"||Z==="system"?Z:"system"}function m1(){let Z=x1(),J=Z==="dark"||Z!=="light"&&matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.resolved=J?"dark":"light"}function W3(Z){localStorage.setItem("mh-theme",Z),m1(),e8()}function e8(){let Z=document.getElementById("theme-color-meta");if(!Z)return;let J=document.body.classList.contains("mobile")&&!document.body.classList.contains("mobile-content"),Q=getComputedStyle(document.documentElement).getPropertyValue(J?"--sidebar":"--bg").trim();if(Q)Z.setAttribute("content",Q)}var u1="__MH_WEBUI_VERSION__".startsWith("__MH_")?null:"__MH_WEBUI_VERSION__";function JZ(Z,J){let Q=Z.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0),X=J.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0);for(let z=0;z<Math.max(Q.length,X.length);z++){let W=(Q[z]??0)-(X[z]??0);if(W!==0)return W}return 0}function OG(Z){if(Z.kind==="local")return{title:"Blob 管理",subtitle:"已下载到这台设备的图片和大文件。清理只删本机副本,需要时从云端重新取回;桶里的原件始终不动。",deleteSemantics:"evict",list:async()=>{let[J,Q]=await Promise.all([tJ(),b0("blobRefs").catch(()=>[])]),X=new Set(Q);return J.map((z)=>({hash:z.hash,size:z.size,contentType:z.content_type,lastAccess:z.accessed,pinned:z.pinned,pending:z.pending,clearable:!z.pinned&&!z.pending,referenced:X.has(z.hash)}))},clear:(J)=>_6(J),remove:(J)=>sJ(J),pin:async(J,Q)=>{await nJ(J,Q)}};return{title:"Blob 管理",subtitle:"图片和大文件的本机副本。可清理项随时能腾空间(用时自动取回);没被任何文档或站点引用的孤儿可彻底删除。",deleteSemantics:"purge",list:()=>d.blobs(),clear:(J)=>d.clearBlobs(J),remove:(J)=>d.deleteBlobs(J),pin:async(J,Q)=>{await d.pinBlob(J,Q)}}}function p1(Z){z9($(yG,{source:OG(Z)},void 0,!1,void 0,this))}function $Z(Z){if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(1)} KB`;if(Z<1073741824)return`${(Z/1024/1024).toFixed(1)} MB`;return`${(Z/1024/1024/1024).toFixed(2)} GB`}function AG(Z){if(!Z)return"—";let J=Math.max(0,Math.round((Date.now()-Z)/1000));if(J<60)return"刚刚";let Q=Math.round(J/60);if(Q<60)return`${Q} 分钟前`;let X=Math.round(Q/60);if(X<24)return`${X} 小时前`;return`${Math.round(X/24)} 天前`}var Z6={image:"图片",video:"视频",audio:"音频",file:"文件",other:"其他"},NG={image:"image",video:"video",audio:"audio",file:"file",other:"file"};function sZ(Z){if(!Z)return"other";let J=Z.toLowerCase();if(J.startsWith("image/"))return"image";if(J.startsWith("video/"))return"video";if(J.startsWith("audio/"))return"audio";if(J.startsWith("application/")||J.startsWith("text/"))return"file";return"other"}function wG(Z){if(Z.pending)return"pending";if(Z.pinned)return"pinned";if(!Z.referenced)return"orphan";if(Z.clearable)return"clearable";return"retained"}var CG={pending:"待上传",pinned:"已固定",orphan:"孤儿",clearable:"可清理",retained:"保留"},E1={size:"大小",type:"类型",access:"最近使用"},G3=[{key:"all",label:"全部类型"},{key:"image",label:"图片"},{key:"video",label:"视频"},{key:"audio",label:"音频"},{key:"file",label:"文件"},{key:"other",label:"其他"}],q3=[{key:"all",label:"全部状态"},{key:"clearable",label:"可清理"},{key:"retained",label:"保留中"},{key:"pinned",label:"已固定"},{key:"pending",label:"待上传"},{key:"orphan",label:"孤儿"}];function MG({row:Z}){let J=sZ(Z.contentType),[Q,X]=R(!1);if(J==="image"&&!Q)return $("img",{class:"blob-mgr-thumb",src:`/blob/${Z.hash}`,loading:"lazy",alt:"",onError:()=>X(!0)},void 0,!1,void 0,this);return $("span",{class:"blob-mgr-ico",children:$(g,{name:NG[J],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function yG({source:Z}){let[J,Q]=R(null),[X,z]=R(null),[W,G]=R(!1),[q,H]=R(""),[Y,F]=R("all"),[K,N]=R("all"),[U,O]=R({key:"size",desc:!0}),[C,f]=R(new Set),h=async()=>{try{let V=await Z.list();Q(V),z(null),f((i)=>new Set([...i].filter((Z0)=>V.some((G0)=>G0.hash===Z0))))}catch(V){z(V.message)}};o(()=>{h()},[]);let _=(V,i)=>{if(i==="all")return!0;if(i==="clearable")return V.clearable&&!V.pinned;if(i==="retained")return!V.clearable&&!V.pending&&V.referenced;if(i==="pinned")return V.pinned;if(i==="pending")return V.pending;if(i==="orphan")return!V.referenced;return!0},M=M9(()=>{let V=q.trim().toLowerCase(),i=(J??[]).filter((G0)=>{let J0=sZ(G0.contentType);if(Y!=="all"&&J0!==Y)return!1;if(!_(G0,K))return!1;if(V){if(!`${G0.hash} ${G0.contentType??""} ${Z6[J0]}`.toLowerCase().includes(V))return!1}return!0}),Z0=U.desc?-1:1;return[...i].sort((G0,J0)=>{let e=0;if(U.key==="size")e=G0.size-J0.size;else if(U.key==="access")e=(G0.lastAccess??0)-(J0.lastAccess??0);else e=Z6[sZ(G0.contentType)].localeCompare(Z6[sZ(J0.contentType)],"zh")||G0.size-J0.size;return Z0*e})},[J,q,Y,K,U]),k=(V)=>f((i)=>{let Z0=new Set(i);if(Z0.has(V))Z0.delete(V);else Z0.add(V);return Z0}),T=M.length>0&&M.every((V)=>C.has(V.hash)),L=()=>f((V)=>{if(M.every((i)=>V.has(i.hash))){let i=new Set(V);for(let Z0 of M)i.delete(Z0.hash);return i}return new Set([...V,...M.map((i)=>i.hash)])}),P=(J??[]).filter((V)=>C.has(V.hash)),w=P.filter((V)=>V.clearable&&!V.pinned),A=P.filter((V)=>!V.referenced),y=P.reduce((V,i)=>V+i.size,0),S=async(V)=>{G(!0);try{await Z.pin(V.hash,!V.pinned),await h()}catch(i){s(i.message)}finally{G(!1)}},p=async()=>{let V=w.map((i)=>i.hash);if(!V.length)return;G(!0);try{let i=await Z.clear(V);s(i.cleared?`已清理 ${i.cleared} 项 · 腾出 ${$Z(i.freedBytes)}`:"没有可清理的项"),await h()}catch(i){s(i.message)}finally{G(!1)}},n=async()=>{let V=A;if(!V.length)return;let i=V.reduce((J0,e)=>J0+e.size,0),Z0=Z.deleteSemantics==="evict";if(!await R0({title:"删除孤儿 blob",message:Z0?`将从这台设备移除 ${V.length} 个未被任何文档/站点引用的 blob,约 ${$Z(i)}。桶里的原件不动,需要时仍可重新下载。`:`将永久删除 ${V.length} 个未被任何文档/站点引用的 blob,约 ${$Z(i)}。此操作不可恢复。`,confirmLabel:"删除",danger:!0}))return;G(!0);try{let J0=await Z.remove(V.map((e)=>e.hash));s(J0.removed?`已删除 ${J0.removed} 项 · 腾出 ${$Z(J0.freedBytes)}`:"没有可删除的孤儿"),await h()}catch(J0){s(J0.message)}finally{G(!1)}},$0=(V)=>_0(V,(i)=>$(r,{children:[$(h0,{children:"排序依据"},void 0,!1,void 0,this),Object.keys(E1).map((Z0)=>$(z0,{label:E1[Z0]+(U.key===Z0?U.desc?" ↓":" ↑":""),checked:U.key===Z0,onClick:()=>{O((G0)=>({key:Z0,desc:G0.key===Z0?!G0.desc:!0})),i()}},Z0,!1,void 0,this))]},void 0,!0,void 0,this)),Q0=(V)=>_0(V,(i)=>$(r,{children:[$(h0,{children:"按类型"},void 0,!1,void 0,this),G3.map((Z0)=>$(z0,{label:Z0.label,checked:Y===Z0.key,onClick:()=>{F(Z0.key),i()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),x=(V)=>_0(V,(i)=>$(r,{children:[$(h0,{children:"按状态"},void 0,!1,void 0,this),q3.map((Z0)=>$(z0,{label:Z0.label,checked:K===Z0.key,onClick:()=>{N(Z0.key),i()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),b=G3.find((V)=>V.key===Y).label,u=q3.find((V)=>V.key===K).label;return $(G9,{title:Z.title,sub:Z.subtitle,width:760,footer:$(r,{children:[$("div",{class:"blob-mgr-selsum",children:C.size>0?$(r,{children:["已选 ",$("b",{children:C.size},void 0,!1,void 0,this)," 项 · ",$Z(y)]},void 0,!0,void 0,this):J?$(r,{children:["共 ",J.length," 项 · ",$Z(J.reduce((V,i)=>V+i.size,0))]},void 0,!0,void 0,this):""},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",disabled:W||!w.length,onClick:()=>void p(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清理所选",w.length?`(${w.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-danger",disabled:W||!A.length,onClick:()=>void n(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除孤儿",A.length?`(${A.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",onClick:()=>p0(),children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:$("div",{class:"blob-mgr",children:[$("div",{class:"blob-mgr-bar",children:[$("div",{class:"blob-mgr-search",children:[$(g,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{class:"blob-mgr-search-in",placeholder:"搜索 hash 或类型…",value:q,onInput:(V)=>H(V.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn"+(Y!=="all"?" on":""),onClick:(V)=>Q0(V),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),b]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn"+(K!=="all"?" on":""),onClick:(V)=>x(V),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),u]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn",onClick:(V)=>$0(V),children:[$(g,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),E1[U.key],U.desc?" ↓":" ↑"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X?$("div",{class:"blob-mgr-empty",children:["无法读取:",X]},void 0,!0,void 0,this):!J?$("div",{class:"blob-mgr-empty",children:"加载中…"},void 0,!1,void 0,this):M.length===0?$("div",{class:"blob-mgr-empty",children:J.length?"没有符合条件的项":"这台设备还没有缓存的 blob"},void 0,!1,void 0,this):$("div",{class:"blob-mgr-list",children:[$("div",{class:"blob-mgr-row blob-mgr-head",children:[$("label",{class:"blob-mgr-check",children:$("input",{type:"checkbox",checked:T,onChange:L},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{},void 0,!1,void 0,this),$("span",{children:"名称"},void 0,!1,void 0,this),$("span",{class:"blob-mgr-r",children:"大小"},void 0,!1,void 0,this),$("span",{children:"状态"},void 0,!1,void 0,this),$("span",{class:"blob-mgr-age",children:"最近使用"},void 0,!1,void 0,this),$("span",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.map((V)=>{let i=sZ(V.contentType),Z0=wG(V);return $("div",{class:"blob-mgr-row"+(C.has(V.hash)?" sel":""),children:[$("label",{class:"blob-mgr-check",children:$("input",{type:"checkbox",checked:C.has(V.hash),onChange:()=>k(V.hash)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(MG,{row:V},void 0,!1,void 0,this),$("div",{class:"blob-mgr-name",children:[$("span",{class:"blob-mgr-hash",children:V.hash.slice(0,12)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-type",children:V.contentType??Z6[i]},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"blob-mgr-r blob-mgr-size",children:$Z(V.size)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-badge s-"+Z0,children:CG[Z0]},void 0,!1,void 0,this),$("span",{class:"blob-mgr-age",children:AG(V.lastAccess)},void 0,!1,void 0,this),$("button",{class:"blob-mgr-pin"+(V.pinned?" on":""),disabled:W||V.pending,title:V.pinned?"取消固定":"固定(不被自动清理)",onClick:()=>void S(V),children:$(g,{name:"pin",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},V.hash,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var eZ={localDevice:{label:"本机",subtitle:"这台设备上的副本",icon:"monitor"},cloudWorkspace:{label:"云端工作区",subtitle:"你常用的在线工作区",icon:"globe"},localWorkspace:{label:"本机工作区",subtitle:"这台电脑上的工作区",icon:"monitor"}};function H3(){return{id:"local",kind:"local",label:eZ.localDevice.label,subtitle:eZ.localDevice.subtitle,icon:eZ.localDevice.icon,isDefault:!1,routeOp:{via:"replica"},deleteSemantics:"evict"}}function J6(Z){let J=Z==="desktop"?eZ.localWorkspace:eZ.cloudWorkspace;return{id:"server",kind:"server",label:J.label,subtitle:J.subtitle,icon:J.icon,isDefault:!1,routeOp:{via:"http"},deleteSemantics:"purge"}}function _G(Z){if(Z.surface==="cli")return"cli";if(Z.surface==="desktop")return"sidecar";if(Z.dataHome==="local")return"bucket-replica";return Z.hold==="replica"?"offline-replica":"thin"}function Y3(Z){let J=_G(Z),Q;switch(J){case"thin":Q=[J6(Z.surface)];break;case"offline-replica":Q=[H3(),J6(Z.surface)];break;case"bucket-replica":Q=[H3()];break;case"sidecar":Q=[J6(Z.surface)];break;case"cli":Q=[J6(Z.surface)];break;default:throw Error(`scopesFor: unhandled cell ${J}`)}return Q.map((X,z)=>({...X,isDefault:z===0}))}function K3({scopes:Z,value:J,onChange:Q,variant:X,sub:z}){if(Z.length===0)return null;let W=Z.find((H)=>H.id===J)??Z[0],G=z&&W.subtitle?$("div",{class:"scope-sub",children:W.subtitle},void 0,!1,void 0,this):null;if(Z.length===1)return $("div",{class:"scope-pick",children:[$("span",{class:"scope-pill",children:[$(g,{name:W.icon},void 0,!1,void 0,this),W.label]},void 0,!0,void 0,this),G]},void 0,!0,void 0,this);if((X??(Z.length>3?"menu":"segmented"))==="menu")return $("div",{class:"scope-pick",children:[$("button",{class:"btn btn-secondary scope-trigger",onClick:(H)=>_0(H,(Y)=>Z.map((F)=>$(z0,{icon:F.icon,label:F.label,sublabel:F.subtitle,checked:F.id===W.id,onClick:()=>{Q(F.id),Y()}},F.id,!1,void 0,this))),children:[$(g,{name:W.icon},void 0,!1,void 0,this),W.label,$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G]},void 0,!0,void 0,this);return $("div",{class:"scope-pick",children:[$("div",{class:"scope-seg",role:"tablist",children:Z.map((H)=>$("button",{class:"scope-seg-item"+(H.id===W.id?" sel":""),role:"tab","aria-selected":H.id===W.id,onClick:()=>Q(H.id),children:[$(g,{name:H.icon},void 0,!1,void 0,this),H.label]},H.id,!0,void 0,this))},void 0,!1,void 0,this),G]},void 0,!0,void 0,this)}var U3=()=>I9().surface==="desktop",vG=[{value:"light",icon:"sun",name:"浅色",desc:"始终使用明亮界面"},{value:"dark",icon:"moon",name:"深色",desc:"始终使用暗色界面"},{value:"system",icon:"monitor",name:"跟随系统",desc:"随操作系统外观自动切换"}];function Z8({id:Z,label:J,children:Q}){return $("div",{class:"set-group",id:Z,children:[$("div",{class:"set-group-label",children:J},void 0,!1,void 0,this),$("div",{class:"set-panel",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var w9={appearance:"appearance",quicknote:"quicknote",sync:"sync",storage:"storage",devices:"devices"},TG=[{id:w9.appearance,label:"外观",icon:"sun",show:()=>!0},{id:w9.quicknote,label:"快速笔记",icon:"pin",show:()=>typeof window<"u"&&!!window.metahubDesktop?.quicknote},{id:w9.sync,label:"同步",icon:"cloudCheck",show:()=>!0},{id:w9.storage,label:"存储",icon:"database",show:()=>!0},{id:w9.devices,label:"设备与授权",icon:"monitor",show:()=>!U9()}];function kG({sections:Z}){let[J,Q]=R(Z[0]?.id??""),X=W0(null),z=W0(0),W=Z.map((q)=>q.id).join("|");o(()=>{let q=document.querySelector(".content"),H=0,Y=()=>{if(Date.now()<z.current)return;if(q?q.scrollTop+q.clientHeight>=q.scrollHeight-2:window.innerHeight+window.scrollY>=document.documentElement.scrollHeight-2){Q(Z[Z.length-1].id);return}let U=Math.max(q?q.getBoundingClientRect().top:0,0)+72,O=Z[0].id;for(let C of Z){let f=document.getElementById(C.id);if(!f)continue;if(f.getBoundingClientRect().top-U<=1)O=C.id;else break}Q(O)},F=()=>{if(H)return;H=requestAnimationFrame(()=>{H=0,Y()})};Y();let K=new IntersectionObserver(Y,{root:q,rootMargin:"-72px 0px -70% 0px",threshold:[0,1]});for(let N of Z){let U=document.getElementById(N.id);if(U)K.observe(U)}return q?.addEventListener("scroll",F,{passive:!0}),window.addEventListener("scroll",F,{passive:!0}),()=>{if(K.disconnect(),q?.removeEventListener("scroll",F),window.removeEventListener("scroll",F),H)cancelAnimationFrame(H)}},[W]),o(()=>{let q=X.current;if(!q)return;let H=q.querySelector(`.set-rail-row[data-sec="${J}"]`);if(!H)return;q.style.setProperty("--mark-y",`${H.offsetTop}px`),q.style.setProperty("--mark-h",`${H.offsetHeight}px`)},[J,W]);let G=(q)=>{z.current=Date.now()+600,Q(q),document.getElementById(q)?.scrollIntoView({behavior:"smooth",block:"start"})};return $("div",{class:"set-rail-slot",children:$("nav",{class:"set-rail",ref:X,"aria-label":"设置区块",children:[$("span",{class:"set-rail-mark"},void 0,!1,void 0,this),Z.map((q)=>$("button",{"data-sec":q.id,class:"set-rail-row"+(q.id===J?" active":""),"aria-current":q.id===J?"true":void 0,onClick:()=>G(q.id),children:[$("span",{class:"set-rail-ico",children:$(g,{name:q.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"set-rail-label",children:q.label},void 0,!1,void 0,this)]},q.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function L3({onUpdatePending:Z}={}){let[J,Q]=R(x1()),X=(W)=>{W3(W),Q(W)},z=TG.filter((W)=>W.show());return $("div",{class:"set-shell",children:$("div",{class:"set-page",children:[z.length>=2&&$(kG,{sections:z},void 0,!1,void 0,this),$("div",{class:"set-title",children:"设置"},void 0,!1,void 0,this),$("div",{class:"set-sub",children:"个性化你的 Metahub 工作区。"},void 0,!1,void 0,this),$(Z8,{id:w9.appearance,label:"外观",children:$("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"颜色主题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择界面的明暗外观。"},void 0,!1,void 0,this),$("div",{class:"theme-grid",children:vG.map((W)=>$("button",{class:"theme-card"+(J===W.value?" sel":""),"aria-pressed":J===W.value,onClick:()=>X(W.value),children:[$("span",{class:"tc-check",children:$(g,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(g,{name:W.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-name",children:W.name},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:W.desc},void 0,!1,void 0,this)]},W.value,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),typeof window<"u"&&window.metahubDesktop?.quicknote&&$(Z8,{id:w9.quicknote,label:"快速笔记",children:$(oG,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(Z8,{id:w9.sync,label:"同步",children:[!U3()&&$(hG,{},void 0,!1,void 0,this),$(xG,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(Z8,{id:w9.storage,label:"存储",children:$(RG,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!U9()&&$(Z8,{id:w9.devices,label:"设备与授权",children:[$(tG,{},void 0,!1,void 0,this),$(sG,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(lG,{onUpdatePending:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function RG(){let Z=Y3(I9()).filter((W)=>W.kind!=="bucket"),[J,Q]=R(Z[0]?.id??"server"),X=Z.find((W)=>W.id===J)??Z[0],z=Z.length>1;return $(r,{children:[$("div",{class:"set-block",children:[z&&$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"管理哪里的存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(K3,{scopes:Z,value:X.id,onChange:Q,sub:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X.kind==="local"?$(gG,{scope:X},void 0,!1,void 0,this):$(fG,{scope:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function a0(Z){if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(1)} KB`;if(Z<1073741824)return`${(Z/1024/1024).toFixed(1)} MB`;return`${(Z/1024/1024/1024).toFixed(2)} GB`}function IG(Z){let J=Math.max(0,Math.round((Date.now()-Z)/1000));if(J<60)return"刚刚";let Q=Math.round(J/60);if(Q<60)return`${Q} 分钟前`;let X=Math.round(Q/60);if(X<24)return`${X} 小时前`;return`${Math.round(X/24)} 天前`}var SG=300000,VG=()=>typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function P3(Z,J=600){let[Q,X]=R(Z),z=W0(Z);return o(()=>{if(VG()){z.current=Z,X(Z);return}let W=z.current,G=performance.now(),q=0,H=(Y)=>{let F=Math.min(1,(Y-G)/J),K=1-Math.pow(1-F,3);if(X(Math.round(W+(Z-W)*K)),F<1)q=requestAnimationFrame(H);else z.current=Z};return q=requestAnimationFrame(H),()=>cancelAnimationFrame(q)},[Z]),Q}function fG({scope:Z}){let[J,Q]=R(null),[X,z]=R(null),[W,G]=R(!1),[q,H]=R(!1),Y=()=>{d.blobCache().then((e)=>{Q(e),z(null)}).catch((e)=>z(e.message))},F=async(e=!1)=>{H(!0);try{Q(await d.verifyBlobCache()),z(null)}catch(P0){if(e)s(P0.message)}finally{H(!1)}};o(()=>{Y(),F()},[]);let[K,N]=R(!1);o(()=>{let e=requestAnimationFrame(()=>N(!0));return()=>cancelAnimationFrame(e)},[]);let U=P3(J?.stats.clearableBytes??0);if(X||!J)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:X?`无法读取缓存信息:${X}`:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{stats:O,policy:C,nodes:f,buckets:h,quotaBytes:_,pinnedBytes:M}=J,k=[...h,...C.fullNodes.filter((e)=>e.startsWith("s3://")&&!h.some((P0)=>P0.url===e)).map((e)=>({url:e,label:null,bucket:null}))],T=async(e)=>{G(!0);try{await d.setBlobPolicy({full_nodes:e}),await F()}catch(P0){s(P0.message)}finally{G(!1)}},L=(e)=>{let P0=new Set(C.fullNodes);if(P0.has(e))P0.delete(e);else P0.add(e);T([...P0])},P=async(e)=>{G(!0);try{await d.setBlobPolicy({redundancy:e}),await F()}catch(P0){s(P0.message)}finally{G(!1)}},w=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${a0(O.clearableBytes)}。只删别处已备份的副本,文件不会丢,用到时自动取回。`,confirmLabel:"清理"}))return;G(!0);try{let P0=await d.clearBlobCache();s(P0.cleared?`已腾出 ${a0(P0.freedBytes)}(${P0.cleared} 项)`:"暂时没有可清理的"),Y()}catch(P0){s(P0.message)}finally{G(!1)}},A=Math.max(1,O.totalBytes),y=Math.max(0,O.retainedBytes-M),S=(e)=>e/A*100,p=S(O.clearableBytes),n=S(y),$0=S(M),Q0=O.clearableBytes>0,x=C.fullNodes.length===0,b=f.find((e)=>e.self),u=!!b&&C.fullNodes.includes(b.nodeId),V=!x&&!u&&J.lastVerifiedAt==null,i=u?"self-full":x?"no-anchor":V?"unverified":Q0?"free":"safe",Z0=J.lastVerifiedAt==null||Date.now()-J.lastVerifiedAt>SG,G0=_>0&&O.totalBytes>_&&(J.unreachableAnchors.length>0||Z0),J0=(e)=>K?e:0;return $("div",{class:"set-block blob-pane",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"图片和大文件会先存在这台设备上,打开快。只要别处留了一份长期备份,这里随时能清——文件不会丢,需要时自动取回。"},void 0,!1,void 0,this),$("div",{class:"blob-hero",children:[$("div",{class:"blob-hero-main",children:[$("div",{class:"blob-legend",children:[$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot free"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"可释放"},void 0,!1,void 0,this),$("b",{children:a0(O.clearableBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot keep"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"保留中"},void 0,!1,void 0,this),$("b",{children:a0(y)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M>0&&$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot pin"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"已固定"},void 0,!1,void 0,this),$("b",{children:a0(M)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-total",children:["共 ",O.count," 项 · ",a0(O.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:W||q||!Q0,onClick:()=>void w(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),Q0?`清理腾出 ${a0(O.clearableBytes)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-verify-btn",disabled:W||q,onClick:()=>void F(!0),children:[$(g,{name:"history",cls:"ico sm"+(q?" spin":"")},void 0,!1,void 0,this),q?"检查中…":"重新检查"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-manage-btn",onClick:()=>p1(Z),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),"Blob 管理"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-verify-at",children:q?"":J.lastVerifiedAt!=null?`${IG(J.lastVerifiedAt)}检查过`:"未检查"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-ring"+(i==="free"?" has-free":i==="safe"?" all-safe":" locked"),children:[$("svg",{viewBox:"0 0 100 100",class:"blob-ring-svg","aria-hidden":"true",children:$("g",{transform:"rotate(-90 50 50)",children:[$("circle",{class:"blob-ring-track",cx:"50",cy:"50",r:"42",pathLength:100},void 0,!1,void 0,this),$0>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${J0($0)} ${100-J0($0)}`,"stroke-dashoffset":-(p+n)},void 0,!1,void 0,this),$("circle",{class:"blob-seg keep",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${J0(n)} ${100-J0(n)}`,"stroke-dashoffset":-p},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${J0(p)} ${100-J0(p)}`,"stroke-dashoffset":0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-center",children:[i==="free"&&$(r,{children:[$("div",{class:"blob-ring-big",children:a0(U)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="safe"&&$(r,{children:[$("div",{class:"blob-ring-check",children:$(g,{name:"check",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"都备份好了"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"暂时无需清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="no-anchor"&&$(r,{children:[$("div",{class:"blob-ring-lock",children:$(g,{name:"lock",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"未设置长期备份"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"指定后才能清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="unverified"&&$(r,{children:[$("div",{class:"blob-ring-lock",children:$(g,{name:"history",cls:"ico"+(q?" spin":"")},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:q?"检查中…":"未检查"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"检查后才知道"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="self-full"&&$(r,{children:[$("div",{class:"blob-ring-lock",children:$(g,{name:"database",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"本机长期备份库"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"保留全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-anchors",children:[$("div",{class:"blob-sub-title",children:"长期备份保存在"},void 0,!1,void 0,this),f.map((e)=>{let P0=C.fullNodes.includes(e.nodeId);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(g,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[e.label||e.nodeId,e.self?" · 本机":""]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:P0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(P0?" on":""),role:"switch","aria-checked":P0,disabled:W,onClick:()=>L(e.nodeId),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},e.nodeId,!0,void 0,this)}),k.map((e)=>{let P0=C.fullNodes.includes(e.url);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(g,{name:"database",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[e.label||e.bucket||e.url," · 云端"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:P0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(P0?" on":""),role:"switch","aria-checked":P0,disabled:W,onClick:()=>L(e.url),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},e.url,!0,void 0,this)}),x&&$("div",{class:"blob-hint",children:"还没设置长期备份。先指定一处,之后就能放心清理这台设备。"},void 0,!1,void 0,this),C.fullNodes.length>1&&$("div",{class:"blob-strategy",children:[$("div",{class:"blob-sub-title",children:"清理前先确认"},void 0,!1,void 0,this),$("div",{class:"seg",children:[$("button",{class:"seg-opt"+(C.redundancy==="any"?" on":""),disabled:W||q,onClick:()=>void P("any"),children:[$("span",{class:"seg-opt-t",children:"有一处备份就行"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更省空间"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"seg-opt"+(C.redundancy==="all"?" on":""),disabled:W||q,onClick:()=>void P("all"),children:[$("span",{class:"seg-opt-t",children:"每处都备份好"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更稳妥"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),J.unreachableAnchors.length>0&&$("div",{class:"blob-hint warn",children:"部分长期备份连不上,相关文件暂不清理。"},void 0,!1,void 0,this),G0&&$("div",{class:"blob-hint warn",children:"空间超了,但备份暂时离线,先没清理。"},void 0,!1,void 0,this),_>0&&$("div",{class:"blob-foot",children:["缓存超过 ",a0(_)," 时,自动清理最久没用、已有备份的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function gG({scope:Z}){let[J,Q]=R(null),[X,z]=R({count:0,bytes:0}),[W,G]=R(null),[q,H]=R(null),[Y,F]=R(!1),K=async()=>{try{let[A,y]=await Promise.all([rJ(),fZ()]);Q(A),z({count:y.length,bytes:y.reduce((S,p)=>S+p.bytes.byteLength,0)})}catch{}if(navigator.storage?.estimate)try{let A=await navigator.storage.estimate();if(A.usage!=null)G(A.usage)}catch{}if(navigator.storage?.persisted)try{H(await navigator.storage.persisted())}catch{}};o(()=>{K()},[]);let[N,U]=R(!1);o(()=>{let A=requestAnimationFrame(()=>U(!0));return()=>cancelAnimationFrame(A)},[]);let O=J?Math.max(0,J.totalBytes-J.pinnedBytes):0,C=P3(O);if(!J)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let f=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${a0(O)}。只清本机缓存,文件已存在云桶,用到时自动取回。待上传的内容不会动。`,confirmLabel:"清理"}))return;F(!0);try{let y=await oJ();s(y.cleared?`已腾出 ${a0(y.freedBytes)}(${y.cleared} 项)`:"暂时没有可清理的"),await K()}catch(y){s(y.message)}finally{F(!1)}},h=async()=>{if(!navigator.storage?.persist)return;F(!0);try{let A=await navigator.storage.persist();H(A),s(A?"已设为常驻,系统不会自动清理":"浏览器暂未授予常驻")}catch(A){s(A.message)}finally{F(!1)}},_=Math.max(1,J.totalBytes),M=(A)=>A/_*100,k=M(O),T=M(J.pinnedBytes),L=(A)=>N?A:0,P=O>0,w=P?"free":"safe";return $("div",{class:"set-block blob-pane",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"图片和大文件会先缓存在这台设备上,打开快。云桶里始终有一份,所以这里随时能清——文件不会丢,需要时自动取回。"},void 0,!1,void 0,this),$("div",{class:"blob-hero",children:[$("div",{class:"blob-hero-main",children:[$("div",{class:"blob-legend",children:[$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot free"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"可释放"},void 0,!1,void 0,this),$("b",{children:a0(O)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J.pinnedBytes>0&&$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot pin"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"已固定"},void 0,!1,void 0,this),$("b",{children:a0(J.pinnedBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-total",children:["共 ",J.count," 项 · ",a0(J.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:Y||!P,onClick:()=>void f(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),P?`清理腾出 ${a0(O)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-manage-btn",onClick:()=>p1(Z),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),"Blob 管理"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-ring"+(w==="free"?" has-free":" all-safe"),children:[$("svg",{viewBox:"0 0 100 100",class:"blob-ring-svg","aria-hidden":"true",children:$("g",{transform:"rotate(-90 50 50)",children:[$("circle",{class:"blob-ring-track",cx:"50",cy:"50",r:"42",pathLength:100},void 0,!1,void 0,this),T>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${L(T)} ${100-L(T)}`,"stroke-dashoffset":-k},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${L(k)} ${100-L(k)}`,"stroke-dashoffset":0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-center",children:w==="free"?$(r,{children:[$("div",{class:"blob-ring-big",children:a0(C)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$(r,{children:[$("div",{class:"blob-ring-check",children:$(g,{name:"check",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"已是最省"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"暂无缓存可清"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-anchors",children:[X.count>0&&$("div",{class:"blob-hint warn",children:[X.count," 项(约 ",a0(X.bytes),")还没上传到云桶,仅存在这台设备上。建议先「立即同步」再清理——清理不会动这些待上传的内容。"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(g,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:["常驻存储",q==null?"":q?" · 已开启":" · 未开启"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:q?"系统空间紧张时不会自动清掉本地数据。":"开启后,系统空间紧张时也不会自动清掉本地数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q!==!0&&$("button",{class:"btn btn-ghost",disabled:Y||!navigator.storage?.persist,onClick:()=>void h(),children:"请求常驻"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W!=null&&$("div",{class:"blob-foot",children:["此浏览器为本工作区共占用约 ",a0(W),"(含本地数据库与缓存)。缓存超过 ",a0(pJ)," 时自动清理最久没用、已在云桶的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function bG(){if(typeof Worker>"u"||typeof navigator>"u")return"此浏览器不支持 Web Worker。";if(!window.isSecureContext)return"需要 HTTPS(安全上下文)。当前是 http:// 访问,浏览器不开放离线所需的 OPFS 与 Service Worker——给服务器配置 TLS(--tls-cert/--tls-key,或 Caddy / Tailscale Serve 反代;iPhone 需要受信任的证书),或在本机用 localhost 访问。";if(!navigator.storage?.getDirectory)return"此浏览器不支持 OPFS 本地存储(需要 Safari 17+ / Chrome / Firefox 较新版本)。";return null}function jG({kind:Z,noOrigin:J,hasServerBucket:Q,deviceDirect:X}){let z=Z==="trusted",W=!J,G=W&&Q,q=X,H=G||q,Y=q&&W&&H;return $("span",{class:"md-graph"+(z?" trusted":" light")+(Y?" has-direct":""),"aria-hidden":"true",children:[$("span",{class:"md-node self",children:[$("span",{class:"md-node-ico",children:$(g,{name:"monitor",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"本设备"},void 0,!1,void 0,this),$("span",{class:"md-node-tag",children:z?"存一份":"不留存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W&&$(r,{children:[$("span",{class:"md-wire bi"},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(g,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"服务器"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),H&&$(r,{children:[$("span",{class:"md-wire "+(W?"to":"bi")},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(g,{name:"cube",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"云桶"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y&&$("span",{class:"md-direct","data-label":"直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hG(){let Z=bG(),[J,Q]=R(q9()),[X,z]=R(IZ()),[W,G]=R(!1),[q,H]=R(null),Y=U9(),[F,K]=R(!1),[N,U]=R(!1);o(()=>{let P=!0,w=async()=>{let y=q9()?(await b0("listStoragePeers").catch(()=>[])).length>0:!1,S=Y?!1:(await d.listServerS3Peers().catch(()=>[])).length>0;if(!P)return;U(y),K(S)};w();let A=F9(w);return()=>{P=!1,A()}},[Y]);let[O,C]=R(null),f=(P,w)=>{let A=w.currentTarget,y=A?.closest(".set-panel"),S=A?.closest(".sync-holds");if(!y||!S)return;let p=y.getBoundingClientRect(),n=248,$0=28;if(window.innerWidth-p.right<n+$0)return C(null);(async()=>{let Q0=q9()?(await b0("listStoragePeers").catch(()=>[])).length>0:!1,x=Y?!1:(await d.listServerS3Peers().catch(()=>[])).length>0;U(Q0),K(x)})(),C({kind:P,left:p.right+$0,top:S.getBoundingClientRect().top})},h=()=>C(null);o(()=>F9((P)=>z({...P})),[]),o(()=>{if(!J||!navigator.storage?.estimate)return;let P=!0,w=()=>navigator.storage.estimate().then((y)=>{if(P&&y.usage!=null)H((y.usage/1024/1024).toFixed(1))});w();let A=F9(()=>void w());return()=>{P=!1,A()}},[J]);let _=async()=>{if(!await R0({title:"重置本地副本",message:"将删除此浏览器里的全部本地数据(服务器数据不受影响),并停用离线副本。未同步的本地修改会丢失——建议先「立即同步」。",confirmLabel:"删除并重置",danger:!0}))return;G(!0);try{await uJ(),Q(!1),s("本地副本已重置")}catch(w){s(`重置失败:${w.message}`)}finally{G(!1)}},M=async()=>{G(!0);try{await DJ(),Q(!0),s("离线副本已启用,正在下载数据…")}catch(P){s(`启用失败:${P.message}`)}finally{G(!1)}},k=async()=>{if(!await R0({title:"停用离线副本",message:"此浏览器将恢复纯在线模式。已下载的本地数据保留在浏览器里,重新启用后从断点续传。",confirmLabel:"停用",danger:!0}))return;let w=typeof navigator<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.controller!=null;G(!0);try{if(await mJ(),Q(!1),s("已停用离线副本"),w)location.reload()}finally{G(!1)}},T=()=>{if(!J)return"轻量模式 · 仅在线读写,断网不可用。";if(X.state==="error")return`副本异常(已自动回退在线模式):${X.error??"未知错误"}`;if(X.state==="hydrating")return`正在下载数据… 已接收 ${X.hydrated??0} 条变更`;if(X.lastSync){let P=yZ(X.lastSync.at);return X.lastSync.ok?`本地优先已生效 · 上次同步 ${P}(推送 ${X.lastSync.pushed} / 拉取 ${X.lastSync.pulled})`:`上次同步失败(${P}):${X.lastSync.error??""} — 本地读写不受影响,恢复网络后自动重试`}return"等待首次同步…"};if(Z)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"这台设备为轻量模式:仅在线读写,不在本机保存。"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["⚠ 此设备无法「信任并本机保存」:",Z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let L=(P)=>$(jG,{kind:P,noOrigin:Y,hasServerBucket:F,deviceDirect:P==="trusted"&&N},void 0,!1,void 0,this);return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择这台设备如何使用工作区,之后可随时修改。"},void 0,!1,void 0,this),$("div",{class:"theme-grid sync-holds",children:[$("button",{class:"theme-card mode-card"+(!J?" sel":""),"aria-pressed":!J,disabled:W,onClick:()=>J&&k(),onMouseEnter:(P)=>f("light",P),onMouseLeave:h,onFocus:(P)=>f("light",P),onBlur:h,children:[$("span",{class:"tc-check",children:$(g,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(g,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"轻量模式"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:"仅在线使用"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"theme-card mode-card"+(J?" sel":""),"aria-pressed":J,disabled:W,onClick:()=>!J&&M(),onMouseEnter:(P)=>f("trusted",P),onMouseLeave:h,onFocus:(P)=>f("trusted",P),onBlur:h,children:[$("span",{class:"tc-check",children:$(g,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(g,{name:"lock"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"信任此设备"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:W&&!J?"启用中…":"本机保存,支持同步"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O&&$("div",{class:"mode-aside",style:{top:O.top+"px",left:O.left+"px"},children:$("div",{class:"mp-show",children:[L(O.kind),$("span",{class:"mp-cap",children:O.kind==="trusted"?"本机存一份 · 离线也能读写":"仅在线读写 · 不在本机保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),J&&$("div",{class:"peer-actions",style:{marginTop:12},children:[$("button",{class:"btn btn-secondary",disabled:W,onClick:()=>E9(),children:[$(g,{name:"share",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",disabled:W,onClick:_,children:"重置本地副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:[T(),J&&X.node?` · 节点 ${X.node}`:"",J&&q?` · 本地占用 ${q} MB`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function $6(Z){try{return new URL(Z).host}catch{return Z}}function DG(Z){return Z.length<=8?Z.slice(0,2)+"…":Z.slice(0,4)+"…"+Z.slice(-4)}function xG(){let Z=U9(),J=U3(),[Q,X]=R(q9()),[z,W]=R(null),[G,q]=R(null),H=()=>{if(q9())b0("listStoragePeers").then(q).catch(()=>{});else q(null)},Y=()=>{if(H(),!Z)d.listServerS3Peers().then(W).catch((L)=>s(`加载失败:${L.message}`))};o(()=>{return Y(),F9(()=>{X(q9()),H()})},[]);let F=new Set((G??[]).map((L)=>L.url)),K=!J&&Q,N=()=>z9($(nG,{toServer:!Z,alsoReplica:!Z&&K,onDone:()=>{p0(),Y()}},void 0,!1,void 0,this)),U=(L)=>z9($(mG,{peer:L,onDone:()=>{p0(),Y()}},void 0,!1,void 0,this)),O=async()=>{try{if(Z)await b0("sync");else if(await Promise.all((z??[]).map((L)=>d.syncPeer(L.url))),K)await b0("sync").catch(()=>{});s("已触发同步"),Y()}catch(L){s(`同步失败:${L.message}`)}},C=async(L,P)=>{if(!await R0({title:"移除存储桶",message:`确定移除 ${P}?将停止与该存储桶同步(桶内数据不受影响)。`,confirmLabel:"移除",danger:!0}))return;if(Z)await b0("removeStorageReplica",L).catch((A)=>s(A.message));else if(await d.removePeer(L).catch((A)=>s(A.message)),K)await b0("removeStorageReplica",L).catch(()=>{});Y()},f=async(L,P)=>{if(!await R0({title:"取消本设备直连",message:`这台设备将不再直连 ${P}(存储桶仍在服务器上;本设备在线时照常经服务器同步)。`,confirmLabel:"取消直连",danger:!0}))return;await b0("removeStorageReplica",L).catch((A)=>s(A.message)),Y()},h=(L)=>Z?b0("storagePeerConfig",L):d.serverS3Config(L),_=((Z?G:z)??[]).map((L)=>({url:L.url,name:L.label||L.bucket||L.url})),M=()=>z9($(iG,{buckets:_,getConfig:h,server:!Z,onPaired:()=>{p0(),Y()}},void 0,!1,void 0,this)),k=(L,P,w)=>_0(L,(A)=>$(r,{children:[w&&$(z0,{icon:"link",label:"取消本设备直连",onClick:()=>{A(),f(P.url,P.label||P.bucket||P.url)}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"移除存储桶",danger:!0,onClick:()=>{A(),C(P.url,P.label||P.bucket||P.url)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),T=(Z?G:z)?.length?!0:!1;return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"在所有设备间同步"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"连一个云端存储桶,手机、电脑就保持同步——不必开公网服务器,对方离线也收得到,内容端到端加密。"},void 0,!1,void 0,this),$("div",{class:"set-meta",children:$("span",{class:"set-meta-item",children:[$(g,{name:J||!Z?"globe":"cube",cls:"ico sm"},void 0,!1,void 0,this),J?"连一个云端存储桶,这台设备就和你的手机、其他电脑自动保持同步。":Z?"这台设备就是工作区的家,其他设备扫码加入即可一起同步。":"存储桶连在服务器上,所有设备自动共享;信任本设备后,它离线、在外时也能直接同步。"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("details",{class:"set-disclosure",children:[$("summary",{children:"它是怎么工作的"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:['存储桶只当"哑"中转:每台设备把自己的变更加密上传、再拉取别人的——谁都不必同时在线,也不需要公网 IP。',J?"这台设备把自己的变更发布到桶,其他设备从桶拉取;新设备扫码加入即可一起同步。":Z?"这台设备把整个工作区发布到桶,新设备扫码加入后从桶秒恢复。":"密钥只存在服务器,不会同步到浏览器;信任的设备重输一次密钥即可直接同步,离线、在外也不中断。添加时会自动为本站点开通桶的访问权限(CORS)。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z&&!Q?$("div",{class:"peer-sub",style:"margin-top:12px",children:"⚠ 请先在上方把这台设备设为「信任此设备」,再连接存储桶。"},void 0,!1,void 0,this):$(r,{children:[$("div",{class:"peer-actions",style:{marginTop:14},children:[$("button",{class:"btn btn-primary",onClick:N,children:[$(g,{name:"cube",cls:"ico sm"},void 0,!1,void 0,this)," 连接存储桶"]},void 0,!0,void 0,this),(!Z||_.length>0)&&$("button",{class:"btn btn-secondary",onClick:M,children:[$(g,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)," 添加设备"]},void 0,!0,void 0,this),T&&$("button",{class:"btn btn-secondary",onClick:O,children:[$(g,{name:"cloudUp",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-list flush",children:J?z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能保持同步。"},void 0,!1,void 0,this):z.map((L)=>{let P=L.label||L.bucket||L.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(L.enabled?L.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:P},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[L.endpoint?$6(L.endpoint)+" · ":"","最近同步 ",yZ(L.lastSyncAt),L.status==="error"&&L.error?` · 错误:${L.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>C(L.url,P),children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L.url,!0,void 0,this)}):Z?G==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,手机、电脑就能免公网服务器互通。"},void 0,!1,void 0,this):G.map((L)=>{let P=L.label||L.bucket||L.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(L.enabled?L.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:P},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:$("span",{class:"peer-tag",children:[$(g,{name:"upload",cls:"ico"},void 0,!1,void 0,this)," 本机发布"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[L.endpoint?$6(L.endpoint)+" · ":"","最近同步 ",yZ(L.lastSyncAt),L.status==="error"&&L.error?` · 错误:${L.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>C(L.url,P),children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L.url,!0,void 0,this)}):z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能免公网服务器互通。"},void 0,!1,void 0,this):z.map((L)=>{let P=L.label||L.bucket||L.url,w=Q&&F.has(L.url);return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(L.enabled?L.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:P},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:[$("span",{class:"peer-tag",children:[$(g,{name:"globe",cls:"ico"},void 0,!1,void 0,this)," 服务器同步"]},void 0,!0,void 0,this),Q?w?$("span",{class:"peer-tag ok",children:[$(g,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 本机已直连"]},void 0,!0,void 0,this):$("button",{class:"peer-tag act",onClick:()=>U(L),children:[$(g,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 让本机直接同步"]},void 0,!0,void 0,this):$("span",{class:"peer-tag muted",children:"信任本设备后可直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",children:[L.endpoint?$6(L.endpoint)+" · ":"","最近同步 ",yZ(L.lastSyncAt),L.status==="error"&&L.error?` · 错误:${L.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"更多",onClick:(A)=>k(A,L,w),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L.url,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function mG({peer:Z,onDone:J}){let[Q,X]=R(""),[z,W]=R(""),[G,q]=R(!1),H=Z.endpoint?$6(Z.endpoint):"",Y=async()=>{if(!Q.trim())return s("密钥必填");if(Z.encrypt&&!z)return s("加密口令必填");if(!Z.endpoint||!Z.bucket||!Z.accessKeyId)return s("服务器未提供该桶的完整配置,无法在本设备激活");q(!0);try{let F={endpoint:Z.endpoint,region:Z.region||"auto",bucket:Z.bucket,prefix:Z.prefix||"metahub",accessKeyId:Z.accessKeyId,secretAccessKey:Q.trim(),encrypt:Z.encrypt,...Z.virtualHostedStyle!=null?{virtualHostedStyle:Z.virtualHostedStyle}:{},publish:!1};await b0("addStorageReplica",F,z),s("已让本机直连存储桶 · 离线、在外也能直接同步"),J()}catch(F){let K=F.message;s(O3(K)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`启用失败:${K}`),q(!1)}};return $(G9,{title:"在本设备启用直连",sub:"服务器已配置这个存储桶。为保护密钥,服务器不会把它同步到浏览器——再输入一次密钥,这台设备就能与桶直接同步(离线、在外也不中断)。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,disabled:G,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:Y,disabled:G,children:G?"连接中…":"启用直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"activate-id",children:[$("div",{class:"activate-id-row",children:[$("span",{children:"存储桶"},void 0,!1,void 0,this),$("b",{children:Z.bucket},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H&&$("div",{class:"activate-id-row",children:[$("span",{children:"服务地址"},void 0,!1,void 0,this),$("b",{children:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.accessKeyId&&$("div",{class:"activate-id-row",children:[$("span",{children:"访问密钥 ID"},void 0,!1,void 0,this),$("b",{children:DG(Z.accessKeyId)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:!0,placeholder:"重新输入该桶的密钥",value:Q,onInput:(F)=>X(F.target.value),onKeyDown:(F)=>!Z.encrypt&&F.key==="Enter"&&Y()},void 0,!1,void 0,this),Z.encrypt&&$(r,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"与其它设备相同的加密口令",value:z,onInput:(F)=>W(F.target.value),onKeyDown:(F)=>F.key==="Enter"&&Y()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"跨设备共用的那把加密钥——用它解开桶里别人的数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var c1="mh_shell_base";function uG(Z,J){return`${(Z||location.origin).replace(/\/+$/,"")}/#enroll=${R6(J)}`}function B3({data:Z}){let J=z3(0,"H");J.addData(Z),J.make();let Q=J.getModuleCount(),X=2,z=Q/2,W=Math.max(5,Math.floor(Q*0.22)),G=W/2,q=(U,O)=>U<7&&O<7||U<7&&O>=Q-7||U>=Q-7&&O<7,H=(U,O)=>Math.abs(U+0.5-z)<G&&Math.abs(O+0.5-z)<G,Y=[];for(let U=0;U<Q;U++)for(let O=0;O<Q;O++){if(!J.isDark(U,O)||q(U,O)||H(U,O))continue;Y.push($("circle",{cx:O+0.5,cy:U+0.5,r:0.45,fill:"var(--qr-fg)"},U*Q+O,!1,void 0,this))}let F=(U,O)=>$(r,{children:[$("rect",{x:O+0.5,y:U+0.5,width:6,height:6,rx:2,ry:2,fill:"none",stroke:"var(--qr-fg)","stroke-width":1},void 0,!1,void 0,this),$("rect",{x:O+2,y:U+2,width:3,height:3,rx:1,fill:"var(--qr-fg)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K=W+0.6,N=W*0.62/24;return $("div",{class:"qr-box",children:$("svg",{viewBox:`${-X} ${-X} ${Q+X*2} ${Q+X*2}`,"shape-rendering":"geometricPrecision",children:[Y,F(0,0),F(0,Q-7),F(Q-7,0),$("rect",{x:z-K/2,y:z-K/2,width:K,height:K,rx:K*0.26,ry:K*0.26,fill:"var(--qr-bg)"},void 0,!1,void 0,this),$("g",{class:"qr-cube",transform:`translate(${z} ${z}) scale(${N}) translate(-12 -12)`,fill:"none",stroke:"var(--qr-fg)","stroke-width":1.6,"stroke-linejoin":"round","stroke-linecap":"round",children:[$("path",{class:"qr-cube-edge qr-cube-outer",pathLength:1,d:I6},void 0,!1,void 0,this),$("path",{class:"qr-cube-edge qr-cube-inner",pathLength:1,d:S6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:I6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:S6},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function $8({text:Z,label:J,done:Q,primary:X}){return $("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),style:{width:"100%",marginTop:10},onClick:()=>{navigator.clipboard?.writeText(Z),s(Q)},children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)," ",J]},void 0,!0,void 0,this)}function EG({config:Z}){let[J,Q]=R(()=>{try{return localStorage.getItem(c1)||location.origin}catch{return location.origin}}),X=uG(J,Z),z=(W)=>{Q(W);try{W?localStorage.setItem(c1,W):localStorage.removeItem(c1)}catch{}};return $(r,{children:[$(B3,{data:X},void 0,!1,void 0,this),$("div",{class:"field-label",children:"壳地址(手机访问的静态站点域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:J,onInput:(W)=>z(W.target.value)},void 0,!1,void 0,this),$($8,{text:X,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"手机相机扫码打开,输入加密口令即可同步。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function pG({config:Z}){let J=R6(Z),Q=`mh config peer add --s3 --enroll ${J}`;return $(r,{children:[$("div",{class:"field-label",children:"在另一台电脑的终端运行"},void 0,!1,void 0,this),$("div",{class:"enroll-cmd",children:Q},void 0,!1,void 0,this),$($8,{text:Q,label:"复制命令",done:"已复制命令",primary:!0},void 0,!1,void 0,this),$($8,{text:J,label:"复制接入码",done:"已复制接入码"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["对方运行后会提示输入加密口令。也可在 ",$("code",{children:"mh config"},void 0,!1,void 0,this)," 向导选「粘贴接入码加入存储」。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function cG({code:Z,exp:J}){let[Q,X]=R(Math.max(0,Math.round((J-Date.now())/1000)));o(()=>{let G=setInterval(()=>X(Math.max(0,Math.round((J-Date.now())/1000))),1000);return()=>clearInterval(G)},[J]);let z=Math.floor(Q/60),W=String(Q%60).padStart(2,"0");return $(r,{children:[$("div",{class:"pair-code",children:Z},void 0,!1,void 0,this),$("div",{class:"muted",style:{textAlign:"center",marginTop:8},children:Q>0?`${z}:${W} 后过期`:"已过期,请重新生成"},void 0,!1,void 0,this),$($8,{text:Z,label:"复制配对码",done:"已复制配对码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dG({onPaired:Z}){let[J,Q]=R(null),[X,z]=R(!1),W=async()=>{z(!0);try{Q(await d.newPairingCode())}catch(M){s(`生成失败:${M.message}`)}finally{z(!1)}},[G,q]=R(""),[H,Y]=R(""),[F,K]=R(location.origin),[N,U]=R(!1),O=async()=>{if(!G.trim()||!H.trim())return s("地址和配对码必填");U(!0);try{let M=await d.addPeerByPairing({url:G.trim(),code:H.trim(),self_url:F.trim()||void 0});await d.syncPeer(M.url).catch(()=>{}),s(`已配对 ${M.url}`),Z()}catch(M){s(`配对失败:${M.message}`),U(!1)}},[C,f]=R(()=>{try{return localStorage.getItem(d1)||location.origin}catch{return location.origin}}),h=(M)=>{f(M);try{M?localStorage.setItem(d1,M):localStorage.removeItem(d1)}catch{}},_=aG(C,z5());return $(r,{children:[$("div",{class:"enroll-section",children:"邀请另一台服务器配对"},void 0,!1,void 0,this),J?$(cG,{code:J.code,exp:J.exp},void 0,!1,void 0,this):$("button",{class:"btn btn-secondary",style:{width:"100%"},disabled:X,onClick:W,children:[$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)," ",X?"生成中…":"生成本机配对码"]},void 0,!0,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"已有对方的配对码?"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"对方服务器地址"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"http://192.168.1.10:7777",value:G,onInput:(M)=>q(M.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"配对码"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"对方「生成本机配对码」得到的码",value:H,onInput:(M)=>Y(M.target.value),onKeyDown:(M)=>M.key==="Enter"&&O()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"本机可达地址(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"留空则仅本机主动同步",value:F,onInput:(M)=>K(M.target.value)},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",style:{width:"100%",marginTop:10},disabled:N,onClick:O,children:N?"配对中…":"配对"},void 0,!1,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"在手机上打开本服务器"},void 0,!1,void 0,this),$(B3,{data:_},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务器地址(手机访问的域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:C,onInput:(M)=>h(M.target.value)},void 0,!1,void 0,this),$($8,{text:_,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 含访问令牌,请勿公开分享。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function iG({buckets:Z,getConfig:J,server:Q,onPaired:X}){let z=Z.length>0,W=[...z?[{id:"phone",label:"手机扫码"},{id:"cli",label:"电脑 / 命令行"}]:[],...Q?[{id:"server",label:"高级:服务器配对"}]:[]],[G,q]=R(W[0]?.id??"server"),[H,Y]=R(Z[0]?.url??""),[F,K]=R(null),[N,U]=R("");return o(()=>{if(!z||!H)return;let O=!0;return K(null),U(""),J(H).then((C)=>{if(!O)return;C?K(C):U("找不到该存储的配置")}).catch((C)=>O&&U(C.message)),()=>{O=!1}},[H]),$(G9,{title:"添加设备",sub:"让另一台设备加入同一个工作区——手机扫码,或在电脑上粘贴接入码。",footer:$("button",{class:"btn btn-primary",onClick:p0,children:"完成"},void 0,!1,void 0,this),width:420,children:[W.length>1&&$("div",{class:"add-tabs",children:W.map((O)=>$("button",{class:"add-tab"+(G===O.id?" on":""),onClick:()=>q(O.id),children:O.label},O.id,!1,void 0,this))},void 0,!1,void 0,this),(G==="phone"||G==="cli")&&$(r,{children:[Z.length>1&&$(r,{children:[$("div",{class:"field-label",children:"存储桶"},void 0,!1,void 0,this),$("select",{class:"text-input",value:H,onChange:(O)=>Y(O.target.value),children:Z.map((O)=>$("option",{value:O.url,children:O.name},O.url,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),N?$("div",{class:"enroll-err",children:N},void 0,!1,void 0,this):!F?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G==="phone"?$(EG,{config:F},void 0,!1,void 0,this):$(pG,{config:F},void 0,!1,void 0,this),F&&$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 接入码含桶访问密钥,请勿公开分享;不含加密口令——新设备需另输口令。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G==="server"&&$(dG,{onPaired:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function O3(Z){return/failed to fetch|load failed|networkerror|cors/i.test(Z)}var d1="mh_server_base";function aG(Z,J){let Q=(Z||location.origin).replace(/\/+$/,"");return J?`${Q}/?token=${encodeURIComponent(J)}`:Q}var J8=[{id:"r2",name:"Cloudflare R2",region:"auto",ph:"https://<账户ID>.r2.cloudflarestorage.com",hint:"R2 控制台 → 管理 R2 API 令牌,创建 S3 凭据;区域填 auto。免费额度 10GB。"},{id:"s3",name:"Amazon S3",region:"us-east-1",ph:"https://s3.<区域>.amazonaws.com",hint:"IAM 用户的访问密钥;区域如 us-east-1。"},{id:"minio",name:"MinIO",region:"us-east-1",ph:"https://minio.你的域名",hint:"自建 MinIO 的访问地址与 access / secret key。"},{id:"cos",name:"腾讯云 COS",region:"ap-shanghai",ph:"https://<桶名-APPID>.cos.<区域>.myqcloud.com",hint:"桶名须含 APPID,用虚拟主机风格地址(host 以桶名开头)。"},{id:"custom",name:"自定义",region:"auto",ph:"https://s3.example.com",hint:"任何 S3 兼容对象存储。"}];function nG({onDone:Z,toServer:J,alsoReplica:Q}){let[X,z]=R(""),[W,G]=R(""),[q,H]=R("auto"),[Y,F]=R(""),[K,N]=R(""),[U,O]=R("metahub"),[C,f]=R(!0),[h,_]=R(""),[M,k]=R(!1),[T,L]=R("r2"),P=J8.find((y)=>y.id===T)??J8[4],w=(y)=>{L(y);let S=J8.find((p)=>p.id===y);if(S&&J8.some((p)=>p.region===q))H(S.region)},A=async()=>{if(!X.trim()||!W.trim()||!Y.trim()||!K.trim()){s("服务地址、桶名称、访问密钥 ID、密钥都要填");return}if(C&&!h){s("加密口令必填(或关闭加密)");return}k(!0);try{let y={endpoint:X.trim(),region:q.trim()||"auto",bucket:W.trim(),prefix:U.trim()||"metahub",accessKeyId:Y.trim(),secretAccessKey:K.trim(),encrypt:C};if(J){if(await d.addServerS3Peer({...y,passphrase:h,corsOrigins:[location.origin]}),Q)await b0("addStorageReplica",{...y,publish:!1},h)}else await b0("addStorageReplica",y,h);s(J?Q?"已连接存储桶 · 服务器开始同步到桶,这台设备也直接同步":"已连接存储桶 · 服务器开始同步到桶":"已连接存储桶 · 这台设备开始同步到桶"),Z()}catch(y){let S=y.message;s(O3(S)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE(R2 控制台一条规则即可)。":`添加失败:${S}`),k(!1)}};return $(G9,{title:"连接存储桶",sub:"连接一个 S3 兼容存储桶,所有设备就能同步——不需要公网服务器。新桶自动初始化;已有桶用相同加密口令即可加入。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,disabled:M,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:A,disabled:M,children:M?"连接中…":"连接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"set-hint",style:{marginTop:0,marginBottom:12},children:J?"连接后,云端工作区负责把整库同步到这个桶;这台设备和其他设备都从它同步。":"连接后,这台设备(本机)把整库同步到这个桶;新设备扫码加入即可一起用。"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"存储服务商"},void 0,!1,void 0,this),$("div",{class:"provider-grid",children:J8.map((y)=>$("button",{class:"provider-chip"+(T===y.id?" sel":""),"aria-pressed":T===y.id,onClick:()=>w(y.id),children:y.name},y.id,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"set-hint",children:P.hint},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务地址"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:P.ph,value:X,onInput:(y)=>z(y.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"桶名称"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"my-metahub",value:W,onInput:(y)=>G(y.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"访问密钥 ID"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"Access Key ID",value:Y,onInput:(y)=>F(y.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"Secret Access Key",value:K,onInput:(y)=>N(y.target.value)},void 0,!1,void 0,this),$("label",{class:"set-check-row",style:{marginTop:14},children:[$("input",{type:"checkbox",checked:C,onChange:(y)=>f(y.target.checked)},void 0,!1,void 0,this),$("span",{children:"端到端加密(强烈建议;关闭后文件以明文存放,仅限完全信任的存储)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),C&&$(r,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"新桶以此创建;其它设备用同一口令加入",value:h,onInput:(y)=>_(y.target.value),onKeyDown:(y)=>y.key==="Enter"&&A()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"这是跨设备共用的一把加密钥——记牢它,换设备 / 加入已有桶时都要用它解开数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("details",{class:"set-disclosure",style:{marginTop:14},children:[$("summary",{children:"进阶"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:[$("div",{class:"field-label",style:{marginTop:0},children:"区域"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:P.region,value:q,onInput:(y)=>H(y.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"大多按服务商默认即可(R2 用 auto)。"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"metahub",value:U,onInput:(y)=>O(y.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"同一个桶里隔离多个工作区时用;默认 metahub。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function lG({onUpdatePending:Z}){let J=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0,[Q,X]=R(null),[z,W]=R(null),[G,q]=R(null),[H,Y]=R(null),[F,K]=R("idle"),[N,U]=R(""),[O,C]=R(null);o(()=>{d.version().then((P)=>W(P.version)).catch(()=>W(null)),(typeof window<"u"?window.metahubDesktop:void 0)?.appVersion?.().then(X).catch(()=>X(null)),J?.installedVersion().then(q).catch(()=>q(null))},[]),o(()=>{if(F==="idle"&&z&&G&&JZ(G,z)>0)K("staged"),Z?.(!0)},[z,G]);let f=()=>{if(z&&G)return JZ(G,z)>0?G:z;return G??z},h=()=>!!(z&&G&&JZ(G,z)>0),_=async()=>{K("checking"),U("");try{let{latest:L}=await J.check();if(!L){U("无法获取最新版本(网络不可用或 GitHub API 受限)"),K("error");return}let P=f();if(!P||JZ(L,P)>0)Y(L),K("available"),Z?.(!0);else s("已是最新版本"),K(h()?"staged":"idle")}catch(L){U(L.message),K("error")}},M=async()=>{K("downloading"),C(null),U("");let L=J.onDownloadProgress?.((P)=>C(P));try{let P=await J.download();if(P)q(P),K("staged"),Z?.(!0),s(`已下载 v${P}`);else s("已是最新版本"),K(h()?"staged":"idle")}catch(P){U(P.message),K("error")}finally{L?.()}},k=null;if(J)switch(F){case"checking":k=$("span",{class:"ver-act","aria-disabled":"true",children:"检查中…"},void 0,!1,void 0,this);break;case"downloading":{let L=O&&O.total>0?Math.min(100,Math.round(O.received/O.total*100)):null;k=$("span",{class:"ver-up ver-dl",children:[$("span",{class:`ver-bar${L==null?" indet":""}`,children:$("span",{class:"ver-bar-fill",style:L!=null?{width:`${L}%`}:void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"ver-num",children:L!=null?`${L}%`:"下载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break}case"available":k=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:["新版本 ",$("span",{class:"ver-num",children:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:M,title:`下载并更新到 v${H}`,children:"下载"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"staged":k=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:[$("span",{class:"ver-num",children:G},void 0,!1,void 0,this)," 待重启"]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:()=>void J.restart(),title:`重启应用以更新到 v${G}`,children:"重启"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"error":k=$("span",{class:"ver-up err",children:[$("span",{class:"ver-msg",children:"检查失败"},void 0,!1,void 0,this),$("button",{class:"ver-act",onClick:_,title:N||"重试",children:"重试"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;default:k=$("button",{class:"ver-act",onClick:_,children:"检查更新"},void 0,!1,void 0,this)}let T=!Q&&!z&&u1;return $("div",{class:"set-footer",children:[Q&&$("span",{children:["App ",$("span",{class:"ver-num",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Q&&z&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),z&&$("span",{children:["Core ",$("span",{class:"ver-num",children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),T&&$("span",{class:"ver-num",children:["v",u1]},void 0,!0,void 0,this),k&&(z||Q||T)&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),k]},void 0,!0,void 0,this)}var i1="CommandOrControl+Shift+Space";function rG(Z){if(["Control","Meta","Alt","Shift"].includes(Z.key))return null;let J=[];if(Z.metaKey||Z.ctrlKey)J.push("CommandOrControl");if(Z.altKey)J.push("Alt");if(Z.shiftKey)J.push("Shift");let Q=Z.key;if(Q===" ")Q="Space";else if(Q.startsWith("Arrow"))Q=Q.slice(5);else if(Q.length===1)Q=Q.toUpperCase();if(J.length===0)return null;return J.push(Q),J.join("+")}function F3(Z){let J=typeof window<"u"&&window.metahubDesktop?.platform==="darwin";return Z.replace("CommandOrControl",J?"⌘":"Ctrl").replace("Alt",J?"⌥":"Alt").replace("Shift",J?"⇧":"Shift").split("+").join(J?" ":"+")}function oG(){let Z=window.metahubDesktop.quicknote,[J,Q]=R(i1),[X,z]=R(!1),[W,G]=R(!1);o(()=>{Z.getSettings().then((F)=>{Q(F.shortcut),z(F.alwaysOnTop)}).catch((F)=>s(`加载失败:${F.message}`))},[]);let q=async(F)=>{try{let K=await Z.setShortcut(F);Q(K.shortcut),s(`快捷键已设为 ${F3(K.shortcut)}`)}catch(K){s(`设置失败:${K.message}`)}},H=(F)=>{if(F.preventDefault(),F.key==="Escape"){G(!1);return}let K=rG(F);if(!K)return;G(!1),q(K)},Y=async()=>{let F=!X;z(F);try{z(await Z.setAlwaysOnTop(F))}catch(K){z(!F),s(`设置失败:${K.message}`)}};return $("div",{class:"set-block",children:[$("div",{class:"set-block-desc",children:"用全局快捷键随时唤起小窗记录想法。小窗也可从菜单栏图标打开。"},void 0,!1,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"唤起快捷键"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"点击下方按钮,然后按下你想用的组合键。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary qn-shortcut"+(W?" capturing":""),onClick:()=>G(!0),onBlur:()=>G(!1),onKeyDown:W?H:void 0,children:W?"按下组合键…":F3(J)},void 0,!1,void 0,this),J!==i1&&$("button",{class:"btn btn-ghost",title:"重置默认",onClick:()=>void q(i1),children:"重置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"默认始终置顶"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"小窗浮在其他窗口之上;也可在小窗内用 \uD83D\uDCCC 按钮切换。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),"aria-pressed":X,onClick:()=>void Y(),children:X?"已开启":"已关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function yZ(Z){if(!Z)return"从未";return new Date(Z).toLocaleString()}function tG(){let[Z,J]=R(null),Q=()=>d.listPeers().then(J).catch((q)=>s(`加载失败:${q.message}`));o(()=>{Q()},[]);let X=async(q)=>{try{let H=await d.syncPeer(q.url);s(H.ok?`已同步:推送 ${H.pushed},拉取 ${H.pulled}`:`同步失败:${H.error}`),Q()}catch(H){s(`同步失败:${H.message}`)}},z=async(q)=>{await d.updatePeer(q.url,{enabled:!q.enabled}).catch((H)=>s(H.message)),Q()},W=async(q)=>{if(!await R0({title:"移除同步设备",message:`确定移除 ${q.url}?将停止与该设备的数据同步。`,confirmLabel:"移除",danger:!0}))return;await d.removePeer(q.url).catch((Y)=>s(Y.message)),Q()},G=(q,H)=>_0(q,(Y)=>$(r,{children:[$(z0,{icon:"share",label:"立即同步",onClick:()=>{Y(),X(H)}},void 0,!1,void 0,this),$(z0,{icon:H.enabled?"eyeOff":"check",label:H.enabled?"禁用":"启用",onClick:()=>{Y(),z(H)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"移除",danger:!0,onClick:()=>{Y(),W(H)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"同步设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"已直接配对的设备(服务器 HTTP 双向同步)。新增请用上方「同步 → 添加设备 → 高级:服务器配对」。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有配对的设备。"},void 0,!1,void 0,this):Z.map((q)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(q.enabled?q.last_status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:q.label||q.url},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[q.enabled?"已启用":"已禁用"," · 最近同步 ",yZ(q.last_success_at),q.last_status==="error"&&q.last_error?` · 错误:${q.last_error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",onClick:(H)=>G(H,q),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},q.url,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sG(){let[Z,J]=R(null),Q=()=>d.listGrants().then(J).catch((z)=>s(`加载失败:${z.message}`));o(()=>{Q()},[]);let X=async(z)=>{if(!await R0({title:"吊销凭据",message:`吊销后,持有此凭据的设备${z.peer_url?`(${z.peer_url})`:""}将无法再同步进本机。`,confirmLabel:"吊销",danger:!0}))return;await d.revokeGrant(z.token).catch((G)=>s(G.message)),Q()};return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"已授权设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"本机签发、允许其他设备同步进来的凭据。吊销即断开对方的入站访问。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有签发任何凭据。"},void 0,!1,void 0,this):Z.map((z)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot on"},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:z.peer_url||"(未知地址)"},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[z.token.slice(0,8),"… · 签发于 ",yZ(z.created_at)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"吊销",onClick:()=>X(z),children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},z.token,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Q6=(Z)=>location.origin+"/sites/"+Z+"/",N3=(Z)=>"/"+Z+"/",eG=(Z)=>(/\.([a-z0-9]+)$/i.exec(Z)?.[1]??"").toLowerCase(),w3=(Z)=>Z.startsWith("image/");function C3(Z){let J=Number(Z.split("-")[0]);if(!Number.isFinite(J)||J<=0)return"—";return new Date(J).toISOString().slice(0,10)}function Zq(Z){let J=eG(Z.path);if(["html","htm","js","mjs","css","json","xml"].includes(J))return"code";if(w3(Z.content_type))return"file";if(["md","txt"].includes(J))return"text";return"file"}function Q8(Z){navigator.clipboard?.writeText(Z).catch(()=>{}),s("已复制")}function M3(){let[Z,J]=R(null),[Q,X]=R(null),[z,W]=R(null),G=KZ(),q=()=>d.listSites().then((F)=>{J(F),X((K)=>K?F.find((N)=>N.id===K.id)??null:null)}).catch((F)=>s(`加载失败:${F.message}`));o(()=>{q()},[]);let H=()=>z9($(Jq,{onCreated:(F)=>{q(),X(F)}},void 0,!1,void 0,this)),Y=(F,K,N)=>{_0(F,(U)=>$(r,{children:[$(z0,{icon:"externalLink",label:"复制访问地址",onClick:()=>{U(),Q8(Q6(K.name))}},void 0,!1,void 0,this),$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{U(),A9({kind:"site",ref:K.id,title:K.title??K.name})}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"修改标题…",onClick:async()=>{U();let O=await H9({title:"修改标题",label:"标题",value:K.title??K.name});if(O==null)return;try{await d.updateSite(K.id,{title:O})}catch(C){return s(C.message)}q()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除站点",danger:!0,onClick:async()=>{if(U(),!await R0({title:"删除站点?",message:`「${K.name}」及其 ${K.file_count} 个文件将被删除。`,confirmLabel:"删除",danger:!0}))return;try{await d.deleteSite(K.id)}catch(C){return s(C.message)}if(N)X(null);q()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"db sites-page",children:[$("div",{class:"db-head",children:[$("div",{children:[$("div",{class:"db-title",children:"站点管理"},void 0,!1,void 0,this),$("div",{class:"db-desc",children:"发布静态站点,生成可分享的访问链接。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-primary site-new",onClick:H,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z==null?$("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"site-empty",children:[$("div",{class:"ei",children:$(g,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"et",children:"还没有站点"},void 0,!1,void 0,this),$("div",{class:"ed",children:"站点是一个命名文件桶,发布后可通过 /sites/<name>/ 直接访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:H,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$(r,{children:[$("div",{class:"sites-grid",children:Z.map((F,K)=>$("div",{class:"site-card",style:`--i:${K}`,onClick:()=>X(F),children:[$("div",{class:"site-card-head",children:[$("span",{class:"si",children:$(g,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"site-card-id",children:[$("div",{class:"slug",children:F.name},void 0,!1,void 0,this),$("div",{class:"ttl"+(F.title?"":" muted"),children:F.title||"未命名站点"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G.has(F.id)&&$("span",{class:"share-badge",title:"已分享 · 管理分享",style:{marginLeft:"auto"},onClick:(N)=>{N.stopPropagation(),A9({kind:"site",ref:F.id,title:F.title??F.name})},children:$(g,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"site-addr",title:"点击复制访问地址",onClick:(N)=>{N.stopPropagation(),Q8(Q6(F.name))},children:[$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:N3(F.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-meta",children:[$("span",{children:[$("b",{children:F.file_count},void 0,!1,void 0,this)," 文件"]},void 0,!0,void 0,this),$("span",{class:"dot",children:"·"},void 0,!1,void 0,this),$("span",{children:C3(F.created_hlc)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-foot",children:[$("button",{class:"btn btn-secondary",style:{flex:1},onClick:(N)=>{N.stopPropagation(),W(F)},children:[$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),"访问"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(N)=>{N.stopPropagation(),Y(N,F)},children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},F.id,!0,void 0,this))},void 0,!1,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",Z.length," 个站点"]},void 0,!0,void 0,this),$("span",{children:[Z.reduce((F,K)=>F+K.file_count,0)," 个文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Q&&$($q,{site:Q,onClose:()=>X(null),onVisit:()=>W(Q),onMenu:(F)=>Y(F,Q,!0),onChanged:q},void 0,!1,void 0,this),z&&$(Qq,{site:z,onClose:()=>W(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Jq({onCreated:Z}){let[J,Q]=R(""),[X,z]=R(""),W=async()=>{let G=J.trim().toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"");if(!G)return s("请填写站点名称");try{let q=await d.createSite({name:G,title:X.trim()||void 0});p0(),s(`已创建站点「${G}」`),Z(q)}catch(q){s(q.message)}};return $(G9,{title:"新建站点",sub:"创建一个命名文件桶,随同步无冲突复制。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:W,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称(slug)"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:J,placeholder:"例如:docs、demo、status",onInput:(G)=>Q(G.target.value),onKeyDown:(G)=>{if(G.key==="Enter")W()}},void 0,!1,void 0,this),$("div",{class:"field-label",children:"标题(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",value:X,placeholder:"人类可读的标题",onInput:(G)=>z(G.target.value),onKeyDown:(G)=>{if(G.key==="Enter")W()}},void 0,!1,void 0,this),$("div",{class:"muted",style:{fontSize:12,marginTop:10},children:["将通过 ",$("span",{style:{fontFamily:"var(--mono)"},children:"/sites/<名称>/"},void 0,!1,void 0,this)," 对外提供。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function $q({site:Z,onClose:J,onVisit:Q,onMenu:X,onChanged:z}){let[W,G]=R(null),q=W0(null),{open:H,close:Y}=i9(J),F=()=>d.listSiteFiles(Z.id).then(G).catch((C)=>s(C.message));o(()=>{let C=!1;return G(null),d.listSiteFiles(Z.id).then((f)=>!C&&G(f)).catch((f)=>!C&&s(f.message)),()=>{C=!0}},[Z.id]);let K=async(C)=>{let f=C.target,h=Array.from(f.files??[]);if(f.value="",!h.length)return;let _=0;try{for(let M of h)await d.uploadSiteFile(Z.id,M.name,M),_++;s(`已上传 ${_} 个文件`)}catch(M){s(`已上传 ${_}/${h.length} 个,其余失败:${M.message}`)}finally{F(),z()}},N=async(C)=>{if(!await R0({title:"删除文件?",message:`「${C.path}」将从站点「${Z.name}」中删除。`,confirmLabel:"删除",danger:!0}))return;try{await d.deleteSiteFile(Z.id,C.path)}catch(h){return s(h.message)}F(),z()},U=Q6(Z.name),O=N3(Z.name);return $(r,{children:[$("div",{class:"scrim"+(H?" open":""),onClick:Y},void 0,!1,void 0,this),$("div",{class:"peek"+(H?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:Y,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1,display:"flex",alignItems:"center",gap:8,minWidth:0,fontWeight:600,fontSize:14},children:[$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),$("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(g,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(C)=>X(C),children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("input",{ref:q,type:"file",multiple:!0,style:{display:"none"},onChange:K},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:[$("h2",{style:{margin:"0 0 20px"},children:Z.title||Z.name},void 0,!1,void 0,this),$("div",{class:"acc-link",children:[$("span",{class:"url",children:O},void 0,!1,void 0,this),$("button",{title:"复制地址",onClick:()=>Q8(U),children:$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"accent",title:"访问站点",onClick:Q,children:$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-meta",children:[$("span",{children:[$("b",{children:W?.length??Z.file_count},void 0,!1,void 0,this)," 个文件"]},void 0,!0,void 0,this),$("span",{children:["创建于 ",C3(Z.created_hlc)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"files-head",children:[$("span",{children:"文件"},void 0,!1,void 0,this),$("span",{children:W?.length??""},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):W.length===0?$("div",{class:"site-empty",style:{marginTop:4},children:[$("div",{class:"ei",children:"\uD83D\uDCC1"},void 0,!1,void 0,this),$("div",{class:"et",children:"站点还没有文件"},void 0,!1,void 0,this),$("div",{class:"ed",children:"上传文件后即可通过站点地址访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(g,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$("div",{children:W.map((C)=>$("div",{class:"filerow",onClick:()=>z9($(A3,{site:Z,file:C},void 0,!1,void 0,this)),children:[$("span",{class:"fi",children:$(g,{name:Zq(C),cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"fpath",children:C.path},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(C.encoding==="blob"?" blob":""),children:C.encoding},void 0,!1,void 0,this),$("div",{class:"facts",children:[$("button",{title:"预览",onClick:(f)=>{f.stopPropagation(),z9($(A3,{site:Z,file:C},void 0,!1,void 0,this))},children:$(g,{name:"eye",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"复制路径",onClick:(f)=>{f.stopPropagation(),Q8("/sites/"+Z.name+"/"+C.path)},children:$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"del",title:"删除",onClick:(f)=>{f.stopPropagation(),N(C)},children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},C.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function A3({site:Z,file:J}){let Q="/sites/"+Z.name+"/"+J.path,[X,z]=R(null),W=w3(J.content_type),G=!W&&(J.encoding==="utf8"||/text\/|json|javascript|xml/.test(J.content_type));return o(()=>{if(!G)return;fetch(Q).then((q)=>q.text()).then(z).catch(()=>z("(无法加载内容)"))},[Q]),$(G9,{title:J.path,sub:Q,width:680,footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Q8(Q),children:"复制路径"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:p0,children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center",color:"var(--muted)",fontSize:12,marginBottom:12},children:[$("span",{children:J.content_type},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(J.encoding==="blob"?" blob":""),children:J.encoding},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W?$("img",{src:Q,style:{maxWidth:"100%",borderRadius:"var(--radius)",border:"1px solid var(--line)"}},void 0,!1,void 0,this):G?X==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):$("div",{class:"preview-box",children:X},void 0,!1,void 0,this):$("div",{class:"preview-bin",children:[$("div",{class:"pi",children:"\uD83D\uDCE6"},void 0,!1,void 0,this),$("div",{class:"pt",children:"二进制文件 · 在新标签打开查看"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Qq({site:Z,onClose:J}){o(()=>{let X=(z)=>{if(z.key==="Escape")J()};return addEventListener("keydown",X),()=>removeEventListener("keydown",X)},[]);let Q="/sites/"+Z.name+"/";return $("div",{class:"spv-scrim open",onClick:(X)=>{if(X.target===X.currentTarget)J()},children:$("div",{class:"spv",children:[$("div",{class:"spv-chrome",children:[$("div",{class:"spv-dots",children:[$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"spv-url",children:[$(g,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:Q6(Z.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"spv-btn",title:"在新标签打开",onClick:()=>window.open(Q,"_blank"),children:[$(g,{name:"externalLink",cls:"ico sm"},void 0,!1,void 0,this),"新标签"]},void 0,!0,void 0,this),$("button",{class:"spv-btn icon",title:"关闭",onClick:J,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("iframe",{class:"spv-frame",src:Q,sandbox:"allow-scripts allow-same-origin"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var Xq={doc:"file",database:"database",site:"globe"};function zq(Z){if(Z==null)return{text:"永久",warn:!1,dead:!1};let J=Z-Date.now();if(J<=0)return{text:"已过期",warn:!0,dead:!0};let Q=Math.floor(J/86400000),X=Math.floor(J/3600000);if(Q>=1)return{text:`${Q} 天后过期`,warn:Q<=2,dead:!1};if(X>=1)return{text:`${X} 小时后过期`,warn:!0,dead:!1};return{text:"即将过期",warn:!0,dead:!1}}function y3({onNavigate:Z}){let[J,Q]=R(null),[X,z]=R("all"),[W,G]=R(""),q=()=>d.listShares().then(Q).catch((U)=>s(`加载失败:${U.message}`));o(()=>{return q(),document.addEventListener(YZ,q),()=>document.removeEventListener(YZ,q)},[]);let{copyShare:H,revoke:Y,renew:F}=E6(q,s,s),K=M9(()=>{let U=J??[],O=W.trim().toLowerCase();return U.filter((C)=>(X==="all"||C.transport===X)&&(!O||C.title.toLowerCase().includes(O)||C.source.toLowerCase().includes(O)))},[J,X,W]),N=(U)=>{if(U.kind==="doc")Z({kind:"doc",id:U.target_id});else if(U.kind==="database")Z({kind:"db",id:U.target_id});else Z({kind:"sites"})};return $("div",{class:"db shares-page",children:[$("div",{class:"db-head",children:[$("div",{children:[$("div",{class:"db-title",children:"分享"},void 0,!1,void 0,this),$("div",{class:"db-desc",children:"通过服务器或对象存储对外分享的文档、表格与站点。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-tools",children:[$("div",{class:"shv-seg",role:"tablist",children:["all","server","s3"].map((U)=>$("button",{class:"shv-seg-btn"+(X===U?" active":""),onClick:()=>z(U),children:U==="all"?"全部":U==="server"?"服务器":"对象存储"},U,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"shv-search",children:[$(g,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{placeholder:"搜索标题 / 来源…",value:W,onInput:(U)=>G(U.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),J==null?$("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):K.length===0?$("div",{class:"site-empty",children:[$("div",{class:"ei",children:$(g,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"et",children:J.length===0?"还没有公开分享":"没有匹配的分享"},void 0,!1,void 0,this),$("div",{class:"ed",children:"在文档、表格或站点里点「通过设备分享」即可创建——可经服务器(支持可编辑)或对象存储(只读、端到端加密)。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("ul",{class:"shv-list",children:K.map((U)=>{let O=zq(U.expiresAt);return $("li",{class:"shv-row",children:[$("span",{class:"shv-ico k-"+U.kind,children:$(g,{name:Xq[U.kind]??"file"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"shv-main",children:[$("div",{class:"shv-titleline",children:[$("button",{class:"shv-title",onClick:()=>N(U),title:"打开对象",children:U.title},void 0,!1,void 0,this),$("span",{class:"shv-pill t-"+U.transport,children:U.transport==="s3"?"对象存储":"服务器"},void 0,!1,void 0,this),$("span",{class:"shv-pill p-"+U.permission,children:U.permission==="edit"?"可编辑":"只读"},void 0,!1,void 0,this),U.hasPassword&&$("span",{class:"shv-lock",title:"口令保护",children:"\uD83D\uDD12"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-meta",children:["经 ",U.source,$("span",{class:"shv-exp"+(O.warn?" warn":"")+(O.dead?" dead":""),children:["· ",O.text]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-actions",children:[$("button",{class:"btn btn-secondary",onClick:()=>H(U),children:"复制链接"},void 0,!1,void 0,this),U.transport==="s3"&&$("button",{class:"btn btn-secondary",onClick:()=>F(U),children:"续期"},void 0,!1,void 0,this),U.url&&$("a",{class:"btn btn-secondary",href:U.url,target:"_blank",rel:"noreferrer",children:"打开"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>Y(U),children:"撤销"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},U.slug,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function a1(Z){switch(Z.kind){case"db":return`#/db/${encodeURIComponent(Z.id)}`;case"doc":return`#/doc/${encodeURIComponent(Z.id)}`;case"search":return`#/search?q=${encodeURIComponent(Z.q)}`;case"settings":return"#/settings";case"sites":return"#/sites";case"shares":return"#/shares";case"empty":return"#/"}}function n1(Z){if(!Z.startsWith("#/"))return{kind:"empty"};let[J="",Q=""]=Z.slice(2).split("?",2),[X,z=""]=J.split("/",2);try{if(X==="db"&&z)return{kind:"db",id:decodeURIComponent(z)};if(X==="doc"&&z)return{kind:"doc",id:decodeURIComponent(z)};if(X==="search"){let W=new URLSearchParams(Q).get("q");if(W)return{kind:"search",q:W}}if(X==="settings")return{kind:"settings"};if(X==="sites")return{kind:"sites"};if(X==="shares")return{kind:"shares"}}catch{}return{kind:"empty"}}var _3="mh-quicknote-last",v3="mh-quicknote-parent",T3="Quick Notes";function Wq(Z,J){return(J.created_hlc??"").localeCompare(Z.created_hlc??"")}async function Gq(){let Z=localStorage.getItem(v3);if(Z)try{return await d.getDocument(Z),Z}catch{}let X=(await d.listDocuments()).find((z)=>z.parent_id==null&&z.title===T3)?.id??(await d.createDocument({title:T3})).id;return localStorage.setItem(v3,X),X}function k3(){let[Z,J]=R(null),[Q,X]=R([]),[z,W]=R(null),[G,q]=R(""),[H,Y]=R(!1),F=W0(null),K=typeof window<"u"?window.metahubDesktop?.quicknote:void 0,N=x9(async(M)=>{let k=(await d.listDocumentsByParent(M)).sort(Wq);return X(k),k},[]);o(()=>{if(!Z)return;let M,k=()=>{clearTimeout(M),M=setTimeout(()=>void N(Z),80)};return document.addEventListener(L9,k),()=>{clearTimeout(M),document.removeEventListener(L9,k)}},[Z,N]);let U=x9(async(M)=>{let k=await d.createDocument({title:"",parent_id:M});return await N(M),k.id},[N]);o(()=>{(async()=>{try{let M=await Gq();J(M);let k=await N(M),T=localStorage.getItem(_3),L=T&&k.some((P)=>P.id===T)&&T||k[0]?.id||await U(M);W(L)}catch(M){q(String(M.message))}})()},[N,U]),o(()=>{if(z)localStorage.setItem(_3,z)},[z]),o(()=>{K?.getAlwaysOnTop().then(Y).catch(()=>{})},[K]),o(()=>{if(!K)return;let M=(k)=>{if(k.key==="Escape")K.hide()};return addEventListener("keydown",M),()=>removeEventListener("keydown",M)},[K]);let O=async()=>{if(!Z)return;try{W(await U(Z))}catch(M){q(String(M.message))}},C=async()=>{if(!K)return;let M=!H;Y(M);try{Y(await K.setAlwaysOnTop(M))}catch{Y(!M)}},f=async()=>{if(!z||!Z)return;if(!await R0({title:"删除笔记?",message:"该快速笔记将被删除。",confirmLabel:"删除",danger:!0}))return;await d.deleteDocument(z);let k=await N(Z);W(k[0]?.id??await U(Z))},h=(M)=>{_0(M,(k)=>$(r,{children:[$(h0,{children:"快速笔记"},void 0,!1,void 0,this),Q.length===0&&$("div",{class:"lbl",children:"还没有笔记"},void 0,!1,void 0,this),Q.map((T)=>$(z0,{icon:"file",label:T.title||"无标题",checked:T.id===z,onClick:()=>{k(),W(T.id)}},T.id,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"新建笔记",onClick:()=>{k(),O()}},void 0,!1,void 0,this),z&&$(z0,{icon:"trash",label:"删除当前笔记",danger:!0,onClick:()=>{k(),f()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),{minWidth:220})},_=Q.find((M)=>M.id===z)?.title;return $("div",{class:"qn",children:[$("div",{class:"qn-bar",children:[$("span",{class:"qn-brand",children:_||"快速笔记"},void 0,!1,void 0,this),$("div",{class:"qn-actions",children:[$("button",{class:"iconbtn",title:"新建笔记",onClick:()=>void O(),children:$(g,{name:"plus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"笔记列表",onClick:h,children:$(g,{name:"list"},void 0,!1,void 0,this)},void 0,!1,void 0,this),K&&$("button",{class:"iconbtn"+(H?" active":""),title:H?"取消置顶":"始终置顶",onClick:()=>void C(),children:$(g,{name:"pin"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),G&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",G,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"qn-body",children:z?$(s8,{docId:z,onError:q,onHandle:(M)=>F.current=M},z,!1,void 0,this):$("div",{class:"empty",children:$("div",{children:"加载中…"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(k8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function qq(){let Z=typeof location<"u"?location.hash:"",J=Z.includes("?")?Z.slice(Z.indexOf("?")+1):"",Q=new URLSearchParams(J);return{src:Q.get("src")||"",name:Q.get("name")||void 0,blockId:Q.get("bid")||""}}function R3(){let Z=qq(),[J,Q]=R(Z.src),X=async(z)=>{try{let W=await d.uploadDocBlob(new File([z],"annotated.png",{type:"image/png"}));try{let G=new BroadcastChannel("mh-doc-image");G.postMessage({action:"replace",blockId:Z.blockId,url:W.url}),G.close()}catch{}Q(W.url)}catch(W){s(`保存失败:${W.message}`)}};return $("div",{class:"lightbox preview-win",children:$(k1,{src:J,name:Z.name,draggableBar:!0,onClose:()=>window.close(),onReplace:X},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Hq=/[",\r\n]/;function Yq(Z){return Hq.test(Z)?`"${Z.replace(/"/g,'""')}"`:Z}function I3(Z){return Z.map((J)=>J.map(Yq).join(",")).join(`
|
|
147
|
+
`)}function l1(Z,J){let Q=J.startsWith(".")?J:"."+J,X=Z.trim().replace(/[\\/:*?"<>|\x00-\x1f]/g,"-").replace(/\s+/g," ").replace(/^\.+$/,"").slice(0,90)||"untitled";return X.toLowerCase().endsWith(Q.toLowerCase())?X:X+Q}function r1(Z,J,Q){let X=URL.createObjectURL(new Blob([J],{type:Q})),z=document.createElement("a");z.href=X,z.download=Z,document.body.appendChild(z),z.click(),z.remove(),setTimeout(()=>URL.revokeObjectURL(X),0)}function S3(Z,J){let Q=["id",...Z.map((z)=>z.name)],X=J.map((z)=>[z.id,...Z.map((W)=>Kq(z.cells[W.id]))]);return I3([Q,...X])}function Kq(Z){if(Z==null)return"";if(typeof Z==="boolean")return Z?"true":"false";if(typeof Z==="object")return JSON.stringify(Z);return String(Z)}function Fq(){let[Z,J]=R(()=>typeof window<"u"&&window.matchMedia(v8).matches);return o(()=>{let Q=window.matchMedia(v8),X=()=>J(Q.matches);return Q.addEventListener("change",X),()=>Q.removeEventListener("change",X)},[]),Z}function Uq(){let[Z,J]=R([]),[Q,X]=R([]),[z,W]=R(()=>n1(location.hash)),[G,q]=R(""),[H,Y]=R(!1),[F,K]=R(268),[N,U]=R("blocks"),[O,C]=R(!1),[f,h]=R(!1),[_,M]=R(!1),[k,T]=R(!1),[L,P]=R(()=>IZ()),[w,A]=R(!1),[y,S]=R(!1),p=W0(null),n=W0(!1),$0=W0(null),Q0=Fq(),x=x9((I)=>q(I),[]),b=x9((I)=>{p.current=I},[]),u=x9(async()=>{let[I,E]=await Promise.all([d.listDatabases(),d.listDocuments()]);J(I),X(E),C(!0)},[]);o(()=>{u().catch((I)=>x(String(I.message)))},[u]),o(()=>{let I,E=()=>{clearTimeout(I),I=setTimeout(()=>u().catch((a)=>x(String(a.message))),80)};return document.addEventListener(L9,E),()=>{clearTimeout(I),document.removeEventListener(L9,E)}},[u,x]),o(()=>{if(I9().surface==="desktop")return;EJ()},[]),o(()=>F9((I)=>P({...I})),[]),o(()=>{if(Boolean(L.bucketDirty||L.bucketSyncing)){n.current=!0,A(!1);return}if(!n.current||L.bucketError)return;n.current=!1,A(!0);let E=setTimeout(()=>A(!1),900);return()=>clearTimeout(E)},[L.bucketDirty,L.bucketSyncing,L.bucketError]),o(()=>{N6().then(()=>C8())},[]);let[V,i]=R(typeof navigator<"u"&&!navigator.onLine);o(()=>{let I=()=>i(!1),E=()=>i(!0);return window.addEventListener("online",I),window.addEventListener("offline",E),()=>{window.removeEventListener("online",I),window.removeEventListener("offline",E)}},[]),o(()=>{let I=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0;if(!I)return;Promise.all([d.version().then((E)=>E.version).catch(()=>null),I.installedVersion().catch(()=>null)]).then(([E,a])=>{if(E&&a&&JZ(a,E)>0)h(!0)})},[]);let Z0=(I,E)=>{let a=a1(I);if(location.hash!==a)history[E?.replace?"replaceState":"pushState"](null,"",a);W(I)};o(()=>{if(location.hash&&!location.hash.startsWith("#/"))history.replaceState(null,"","#/");let I=()=>W(n1(location.hash));return window.addEventListener("hashchange",I),()=>window.removeEventListener("hashchange",I)},[]);let G0=()=>d.createDocument({title:""}).then((I)=>Z0({kind:"doc",id:I.id})).catch((I)=>x(String(I.message))),J0=z.kind==="db"?Z.find((I)=>I.id===z.id):void 0,e=z.kind==="doc"?Q.find((I)=>I.id===z.id):void 0,P0=z.kind==="doc"?z.id:null,l0=z.kind==="db"?z.id:null;o(()=>{U("blocks"),M(!1)},[P0]),o(()=>{T(!1)},[l0]);let c0=z.kind!=="empty",d0=W0(0);o(()=>{let I=Q0&&c0;if(I&&!document.body.classList.contains("mobile-content"))d0.current=window.scrollY;if(document.body.classList.toggle("mobile",Q0),document.body.classList.toggle("mobile-content",I),e8(),Q0)window.scrollTo(0,I?0:d0.current)},[Q0,c0,z]),o(()=>{let I=(E)=>{if((E.metaKey||E.ctrlKey)&&E.key.toLowerCase()==="k"){E.preventDefault(),document.querySelector(".sb-search input")?.focus();return}if((E.metaKey||E.ctrlKey)&&E.key.toLowerCase()==="s"){if($0.current?.())E.preventDefault()}};return window.addEventListener("keydown",I),()=>window.removeEventListener("keydown",I)},[]),o(()=>{let I=window.matchMedia("(prefers-color-scheme: dark)"),E=()=>{m1(),e8()};return I.addEventListener("change",E),()=>I.removeEventListener("change",E)},[]);let n0=(I)=>{let E=p.current?.snapshotMarkdown();p.current?.flushSave(),(E==null?d.getDocument(I.id).then((F0)=>F0.body??""):Promise.resolve(E)).then((F0)=>r1(l1(I.title||I.id,".md"),F0,"text/markdown;charset=utf-8")).catch((F0)=>x(String(F0.message)))},E0=(I)=>{Promise.all([d.listProperties(I.id),d.listRecords(I.id)]).then(([E,a])=>r1(l1(I.name||I.id,".csv"),S3(E,a),"text/csv;charset=utf-8")).catch((E)=>x(String(E.message)))},N0=(I)=>{_0(I,(E)=>$(r,{children:[$(z0,{icon:"link",label:"复制链接",onClick:()=>{E(),navigator.clipboard.writeText(location.origin+location.pathname+a1(z)).then(()=>s("链接已复制")).catch((a)=>x(String(a.message)))}},void 0,!1,void 0,this),z.kind==="doc"&&e&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{E(),A9({kind:"doc",ref:e.id,title:e.title})}},void 0,!1,void 0,this),z.kind==="db"&&J0&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{E(),A9({kind:"database",ref:J0.id,title:J0.name})}},void 0,!1,void 0,this),z.kind==="doc"&&e&&$(z0,{icon:"download",label:"导出 Markdown",onClick:()=>{E(),n0(e)}},void 0,!1,void 0,this),z.kind==="db"&&J0&&$(z0,{icon:"download",label:"导出 CSV",onClick:()=>{E(),E0(J0)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},v0=e0()&&(L.bucketDirty||L.bucketSyncing||L.bucketError||w)?L.bucketSyncing?"saving":w?"saved":L.bucketError?"error":"dirty":"share",O0=v0==="saving"?"保存中…":v0==="saved"?"已保存":v0==="share"?"分享":"保存",j0=v0==="share"?"share":v0==="saved"?"cloudCheck":v0==="saving"?"spinner":v0==="error"?"cloudOff":"cloudUp",i0=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform),o0=v0==="share"?"分享":v0==="error"?`保存到云端失败:${L.bucketError??""}`:`保存到云端${Q0?"":i0?" · ⌘S":" · Ctrl+S"}`,K0=async()=>{try{await p.current?.flushSave(),await hJ();let I=IZ();if(I.bucketError)throw Error(I.bucketError);if(I.bucketDirty)throw Error("仍有改动尚未保存到云端")}catch(I){s(`保存失败:${I.message}`)}},q0=()=>{S(!0),window.setTimeout(()=>S(!1),320)},A0=(I)=>{if(v0==="share"){N0(I);return}if(v0==="saving"||v0==="saved")return;K0()};$0.current=()=>{if(z.kind!=="doc"&&z.kind!=="db")return!1;if(v0==="saving"||v0==="saved")return!0;if(v0==="dirty"||v0==="error")K0(),q0();else if(e0())s("已是最新"),q0();return!0};let j=(I)=>{if(z.kind==="doc"&&e)_0(I,(E)=>$(r,{children:[$(z0,{icon:"code",label:N==="source"?"块方式显示":"代码方式显示",checked:N==="source",onClick:()=>{E(),p.current?.setMode(N==="source"?"blocks":"source")}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{E(),p.current?.flushSave();try{let a=await d.duplicateDocument(e.id,{title:`${e.title||"无标题"} 副本`});Z0({kind:"doc",id:a.id}),s("已创建副本")}catch(a){x(String(a.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"版本历史",onClick:()=>{E(),p.current?.flushSave(),M(!0)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{E();let a=await H9({title:"重命名文档",value:e.title});if(a)await d.updateDocument(e.id,{title:a})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除文档",danger:!0,onClick:async()=>{if(E(),await R0({title:"删除文档?",message:`「${e.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))await d.deleteDocument(e.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));else if(z.kind==="db"&&J0)_0(I,(E)=>$(r,{children:[$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{E();try{let a=await d.duplicateDatabase(J0.id,{name:`${J0.name} 副本`});Z0({kind:"db",id:a.id}),s("已创建副本")}catch(a){x(String(a.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"最近动态",onClick:()=>{E(),T(!0)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{E();let a=await H9({title:"重命名数据库",value:J0.name});if(a&&a!==J0.name)await d.updateDatabase(J0.id,{name:a})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(E(),await R0({title:"删除数据库?",message:`「${J0.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))await d.deleteDatabase(J0.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $(r,{children:[$(L5,{databases:Z,docs:Q,view:z,navigate:Z0,width:F,collapsed:H,onResize:K,onCollapse:()=>Y(!0),updatePending:f,onError:x},void 0,!1,void 0,this),$("div",{class:"main",children:[$("div",{class:"topbar"+(z.kind==="empty"?" bare":""),children:[$("button",{class:"iconbtn hamburger"+(H?" show-collapsed":""),title:Q0?"返回":H?"展开侧栏":"菜单",onClick:()=>Q0?Z0({kind:"empty"}):Y(!1),children:$(g,{name:Q0?"arrowLeft":"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"crumb",children:[z.kind==="doc"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:e?.title||"无标题"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="db"&&$(r,{children:[$("span",{class:"emoji",children:J0?.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{children:J0?.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="search"&&$("span",{children:["搜索:“",z.q,"”"]},void 0,!0,void 0,this),z.kind==="settings"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"设置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="sites"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"站点管理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="shares"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"分享"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(z.kind==="doc"||z.kind==="db")&&$(r,{children:[$("button",{class:`btn share-save share-save-${v0}${y?" share-save-kbd":""}`,title:o0,disabled:v0==="saving"||v0==="saved",onClick:A0,children:[$("span",{class:"share-save-ico",children:$(g,{name:j0,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"share-save-label",children:O0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",onClick:j,children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),V&&$("div",{class:"offline-bar",children:e0()?"⚡ 离线 — 本地副本模式:可正常查看和编辑全部内容,恢复连接后自动同步":"⚡ 离线 — 可浏览已缓存的内容,修改会失败;恢复网络后自动恢复"},void 0,!1,void 0,this),G&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",G,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"content",children:[z.kind==="empty"&&$(Lq,{onNewDoc:G0},void 0,!1,void 0,this),z.kind==="db"&&J0&&$(g5,{db:J0,onError:x},J0.id,!1,void 0,this),z.kind==="db"&&!J0&&$("div",{class:"empty",children:O?"数据库不存在或已被删除。":"加载中…"},void 0,!1,void 0,this),z.kind==="doc"&&$(s8,{docId:z.id,onError:x,onModeChange:U,onHandle:b},z.id,!1,void 0,this),z.kind==="search"&&$(Bq,{q:z.q,onOpenDoc:(I)=>Z0({kind:"doc",id:I}),onOpenDb:(I)=>Z0({kind:"db",id:I})},void 0,!1,void 0,this),z.kind==="settings"&&$(L3,{onUpdatePending:h},void 0,!1,void 0,this),z.kind==="sites"&&$(M3,{},void 0,!1,void 0,this),z.kind==="shares"&&$(y3,{onNavigate:Z0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),_&&z.kind==="doc"&&$(y5,{docId:z.id,onClose:()=>M(!1),onReverted:()=>p.current?.reload()},void 0,!1,void 0,this),k&&z.kind==="db"&&$(_5,{dbId:z.id,onClose:()=>T(!1)},void 0,!1,void 0,this),$(k8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Lq({onNewDoc:Z}){return $("div",{class:"empty",children:[$("svg",{class:"estate-art",viewBox:"0 0 220 190",fill:"none","aria-hidden":"true",children:[$("ellipse",{class:"kg-ground ground",cx:"110",cy:"176",rx:"62",ry:"8"},void 0,!1,void 0,this),$("circle",{class:"kg-glow fill-soft",cx:"116",cy:"88",r:"42"},void 0,!1,void 0,this),$("g",{class:"kg-plant",children:[$("path",{class:"kg-stem stroke-a draw",pathLength:"100",d:"M110 134 C110 117 108 106 113 92 C116 83 122 77 128 72"},void 0,!1,void 0,this),$("g",{class:"kg-leaf l1",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M108 108 C90 100 86 88 88 80 C102 80 111 90 108 108 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l2",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M118 90 C133 83 144 86 150 94 C139 105 125 104 118 90 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l3",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M128 72 C128 57 136 48 146 45 C150 58 144 69 128 72 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("rect",{class:"kg-cardB fill-soft",x:"76",y:"124",width:"68",height:"44",rx:"8",transform:"rotate(7 110 146)"},void 0,!1,void 0,this),$("g",{class:"kg-cardA",children:[$("rect",{class:"fill-surface stroke",x:"66",y:"128",width:"76",height:"46",rx:"9",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-a",x:"74",y:"136",width:"18",height:"18",rx:"5",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"139",width:"34",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"150",width:"24",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("circle",{class:"kg-particle p1 fill-a",cx:"44",cy:"62",r:"2.6"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p2 fill-soft",cx:"178",cy:"74",r:"3"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p3 fill-a",cx:"40",cy:"120",r:"2"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p4 fill-soft",cx:"182",cy:"126",r:"2.4"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p5 fill-a",cx:"150",cy:"44",r:"2.2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("p",{class:"estate-title",children:"空空如也"},void 0,!1,void 0,this),$("p",{class:"estate-hint",children:"从左侧选择一个数据库或文档,或新建一个开始。"},void 0,!1,void 0,this),$("button",{class:"estate-link",onClick:Z,children:"+ 新建文档"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Pq({text:Z}){let J=Z.split(/\[([^\[\]]*)\]/g);return $(r,{children:J.map((Q,X)=>X%2?$("mark",{children:Q},X,!1,void 0,this):Q)},void 0,!1,void 0,this)}function Bq({q:Z,onOpenDoc:J,onOpenDb:Q}){let[X,z]=R(null);return o(()=>{z(null),d.search(Z).then(z).catch(()=>z([]))},[Z]),$("div",{class:"db",children:[$("div",{class:"db-title",style:{marginBottom:14},children:["搜索:“",Z,"”"]},void 0,!0,void 0,this),X===null&&$("p",{class:"muted",children:"搜索中…"},void 0,!1,void 0,this),X?.length===0&&$("p",{class:"muted",children:"没有匹配结果。"},void 0,!1,void 0,this),X?.map((W)=>$("div",{class:"search-hit",onClick:()=>W.type==="document"?J(W.id):W.database_id&&Q(W.database_id),children:[$("strong",{children:W.title||W.id},void 0,!1,void 0,this)," ",$("span",{class:"muted",children:W.type==="document"?"文档":"记录"},void 0,!1,void 0,this),$("div",{class:"muted",children:$(Pq,{text:W.snippet},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},W.id,!0,void 0,this))]},void 0,!0,void 0,this)}function V3({text:Z}){return $("div",{class:"enroll-splash",children:[$("div",{class:"enroll-spinner"},void 0,!1,void 0,this),$("div",{class:"muted",children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Oq(){let Z=/[#&]enroll=([^&]+)/.exec(location.hash);if(!Z)return null;try{return q5(Z[1])}catch{return null}}function Aq({onDone:Z}){let J=Oq(),[Q,X]=R(J?.endpoint??""),[z,W]=R(J?.bucket??""),[G,q]=R(J?.region??"auto"),[H,Y]=R(J?.accessKeyId??""),[F,K]=R(J?.secretAccessKey??""),[N,U]=R(J?.prefix??"metahub"),[O,C]=R(J?.encrypt??!0),[f,h]=R(""),[_,M]=R(!1),[k,T]=R(""),L=J!=null,P=async()=>{if(!Q.trim()||!z.trim()||!H.trim()||!F.trim()){T("endpoint、bucket、access key、secret key 必填");return}if(O&&!f){T("加密口令必填");return}M(!0),T("");try{await xJ({endpoint:Q.trim(),region:G.trim()||"auto",bucket:z.trim(),prefix:N.trim()||"metahub",accessKeyId:H.trim(),secretAccessKey:F.trim(),encrypt:O,virtualHostedStyle:J?.virtualHostedStyle},f),Z()}catch(w){let A=w.message;T(/failed to fetch|load failed|networkerror|cors/i.test(A)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`连接失败:${A}`),M(!1)}};return $("div",{class:"enroll",children:$("div",{class:"enroll-card",children:[$("div",{class:"enroll-title",children:"连接你的存储桶"},void 0,!1,void 0,this),$("div",{class:"enroll-sub",children:L?"已从二维码读取桶信息,输入加密口令即可同步你的数据。":"填入 S3 兼容存储桶(R2/COS/MinIO/S3)的连接信息;数据上传前端到端加密。"},void 0,!1,void 0,this),!L&&$(r,{children:[$("div",{class:"field-label",children:"Endpoint"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"https://<bucket>.cos.<region>.myqcloud.com",value:Q,onInput:(w)=>X(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Bucket"},void 0,!1,void 0,this),$("input",{class:"text-input",value:z,onInput:(w)=>W(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Region"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"auto",value:G,onInput:(w)=>q(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Access Key ID"},void 0,!1,void 0,this),$("input",{class:"text-input",value:H,onInput:(w)=>Y(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Secret Access Key"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",value:F,onInput:(w)=>K(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",value:N,onInput:(w)=>U(w.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L&&$("div",{class:"enroll-bucket muted",children:["桶:",z]},void 0,!0,void 0,this),O&&$(r,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:L,placeholder:"与其他设备相同的口令",value:f,onInput:(w)=>h(w.target.value),onKeyDown:(w)=>w.key==="Enter"&&P()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k&&$("div",{class:"enroll-err",children:k},void 0,!1,void 0,this),$("button",{class:"btn btn-primary enroll-go",disabled:_,onClick:P,children:_?"连接中…":"连接并同步"},void 0,!1,void 0,this),$("div",{class:"enroll-hint muted",children:"提示:iPhone 请用 Safari 的「分享 → 添加到主屏」装成 App,离线与持久存储才生效。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Nq(){let[Z,J]=R("detecting");if(o(()=>{N6().then((Q)=>{if(Q==="server")return J("app");if(!q9())return J("enroll");SZ(),J(e0()?"app":"hydrating")})},[]),o(()=>{if(Z!=="hydrating")return;if(e0())return J("app");return F9(()=>{if(e0())J("app")})},[Z]),Z==="detecting")return $(V3,{text:"加载中…"},void 0,!1,void 0,this);if(Z==="enroll")return $(Aq,{onDone:()=>J(e0()?"app":"hydrating")},void 0,!1,void 0,this);if(Z==="hydrating")return $(V3,{text:"正在从云端水合本地副本…"},void 0,!1,void 0,this);return $(Uq,{},void 0,!1,void 0,this)}if(typeof window<"u"&&window.metahubDesktop){if(document.body.classList.add("desktop"),window.metahubDesktop.platform==="darwin")document.body.classList.add("desktop-mac")}if(location.hash.startsWith("#preview"))document.body.classList.add("preview-window"),D9($(R3,{},void 0,!1,void 0,this),document.getElementById("app"));else if(location.hash==="#quick"&&I9().surface==="desktop")document.body.classList.add("quicknote"),D9($(k3,{},void 0,!1,void 0,this),document.getElementById("app"));else D9($(Nq,{},void 0,!1,void 0,this),document.getElementById("app"));
|