@tensorix/metahub 0.2.0 → 0.2.2
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 +18498 -16193
- 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 +19597 -17598
- 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 +85 -58
- package/package.json +2 -1
package/dist/webui.js
CHANGED
|
@@ -1,60 +1,89 @@
|
|
|
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("(?!",v
|
|
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 L2=Object.create;var{getPrototypeOf:P2,defineProperty:PJ,getOwnPropertyNames:B2}=Object;var O2=Object.prototype.hasOwnProperty;function A2(Z){return this[Z]}var N2,w2,M2=(Z,J,Q)=>{var X=Z!=null&&typeof Z==="object";if(X){var z=J?N2??=new WeakMap:w2??=new WeakMap,W=z.get(Z);if(W)return W}Q=Z!=null?L2(P2(Z)):{};let G=J||!Z||!Z.__esModule?PJ(Q,"default",{value:Z,enumerable:!0}):Q;for(let q of B2(Z))if(!O2.call(G,q))PJ(G,q,{get:A2.bind(Z,q),enumerable:!0});if(X)z.set(Z,G);return G};var C0=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var B7=C0((wY,P7)=>{function Z7(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))Z7(Q)}),Z}class z1{constructor(Z){if(Z.data===void 0)Z.data={};this.data=Z.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function J7(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function b9(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 pQ="</span>",l5=(Z)=>{return!!Z.scope},dQ=(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 $7{constructor(Z,J){this.buffer="",this.classPrefix=J.classPrefix,Z.walk(this)}addText(Z){this.buffer+=J7(Z)}openNode(Z){if(!l5(Z))return;let J=dQ(Z.scope,{prefix:this.classPrefix});this.span(J)}closeNode(Z){if(!l5(Z))return;this.buffer+=pQ}value(){return this.buffer}span(Z){this.buffer+=`<span class="${Z}">`}}var r5=(Z={})=>{let J={children:[]};return Object.assign(J,Z),J};class W1{constructor(){this.rootNode=r5(),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=r5({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)=>{W1._collapse(J)})}}class Q7 extends W1{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 $7(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function iZ(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function X7(Z){return XZ("(?=",Z,")")}function cQ(Z){return XZ("(?:",Z,")*")}function iQ(Z){return XZ("(?:",Z,")?")}function XZ(...Z){return Z.map((Q)=>iZ(Q)).join("")}function aQ(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 G1(...Z){return"("+(aQ(Z).capture?"":"?:")+Z.map((X)=>iZ(X)).join("|")+")"}function z7(Z){return new RegExp(Z.toString()+"|").exec("").length-1}function nQ(Z,J){let Q=Z&&Z.exec(J);return Q&&Q.index===0}var lQ=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function q1(Z,{joinWith:J}){let Q=0;return Z.map((X)=>{Q+=1;let z=Q,W=iZ(X),G="";while(W.length>0){let q=lQ.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 rQ=/\b\B/,W7="[a-zA-Z]\\w*",H1="[a-zA-Z_]\\w*",G7="\\b\\d+(\\.\\d+)?",q7="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",H7="\\b(0b[01]+)",oQ="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",tQ=(Z={})=>{let J=/^#![ ]*\//;if(Z.binary)Z.begin=XZ(J,/.*\b/,Z.binary,/\b.*/);return b9({scope:"meta",begin:J,end:/$/,relevance:0,"on:begin":(Q,X)=>{if(Q.index!==0)X.ignoreMatch()}},Z)},aZ={begin:"\\\\[\\s\\S]",relevance:0},sQ={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[aZ]},eQ={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[aZ]},ZX={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/},p8=function(Z,J,Q={}){let X=b9({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=G1("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:XZ(/[ ]+/,"(",z,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),X},JX=p8("//","$"),$X=p8("/\\*","\\*/"),QX=p8("#","$"),XX={scope:"number",begin:G7,relevance:0},zX={scope:"number",begin:q7,relevance:0},WX={scope:"number",begin:H7,relevance:0},GX={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[aZ,{begin:/\[/,end:/\]/,relevance:0,contains:[aZ]}]},qX={scope:"title",begin:W7,relevance:0},HX={scope:"title",begin:H1,relevance:0},YX={begin:"\\.\\s*"+H1,relevance:0},KX=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()}})},u8=Object.freeze({__proto__:null,APOS_STRING_MODE:sQ,BACKSLASH_ESCAPE:aZ,BINARY_NUMBER_MODE:WX,BINARY_NUMBER_RE:H7,COMMENT:p8,C_BLOCK_COMMENT_MODE:$X,C_LINE_COMMENT_MODE:JX,C_NUMBER_MODE:zX,C_NUMBER_RE:q7,END_SAME_AS_BEGIN:KX,HASH_COMMENT_MODE:QX,IDENT_RE:W7,MATCH_NOTHING_RE:rQ,METHOD_GUARD:YX,NUMBER_MODE:XX,NUMBER_RE:G7,PHRASAL_WORDS_MODE:ZX,QUOTE_STRING_MODE:eQ,REGEXP_MODE:GX,RE_STARTERS_RE:oQ,SHEBANG:tQ,TITLE_MODE:qX,UNDERSCORE_IDENT_RE:H1,UNDERSCORE_TITLE_MODE:HX});function FX(Z,J){if(Z.input[Z.index-1]===".")J.ignoreMatch()}function UX(Z,J){if(Z.className!==void 0)Z.scope=Z.className,delete Z.className}function LX(Z,J){if(!J)return;if(!Z.beginKeywords)return;if(Z.begin="\\b("+Z.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Z.__beforeBegin=FX,Z.keywords=Z.keywords||Z.beginKeywords,delete Z.beginKeywords,Z.relevance===void 0)Z.relevance=0}function PX(Z,J){if(!Array.isArray(Z.illegal))return;Z.illegal=G1(...Z.illegal)}function BX(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 OX(Z,J){if(Z.relevance===void 0)Z.relevance=1}var AX=(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=XZ(Q.beforeMatch,X7(Q.begin)),Z.starts={relevance:0,contains:[Object.assign(Q,{endsParent:!0})]},Z.relevance=0,delete Q.beforeMatch},NX=["of","and","for","in","not","or","if","then","parent","list","value"],wX="keyword";function Y7(Z,J,Q=wX){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,Y7(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,MX(H[0],H[1])]})}}function MX(Z,J){if(J)return Number(J);return CX(Z)?0:1}function CX(Z){return NX.includes(Z.toLowerCase())}var o5={},QZ=(Z)=>{console.error(Z)},t5=(Z,...J)=>{console.log(`WARN: ${Z}`,...J)},wZ=(Z,J)=>{if(o5[`${Z}/${J}`])return;console.log(`Deprecated as of ${Z}. ${J}`),o5[`${Z}/${J}`]=!0},E8=Error();function K7(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+=z7(J[q-1]);Z[Q]=G,Z[Q]._emit=W,Z[Q]._multi=!0}function yX(Z){if(!Array.isArray(Z.begin))return;if(Z.skip||Z.excludeBegin||Z.returnBegin)throw QZ("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),E8;if(typeof Z.beginScope!=="object"||Z.beginScope===null)throw QZ("beginScope must be object"),E8;K7(Z,Z.begin,{key:"beginScope"}),Z.begin=q1(Z.begin,{joinWith:""})}function _X(Z){if(!Array.isArray(Z.end))return;if(Z.skip||Z.excludeEnd||Z.returnEnd)throw QZ("skip, excludeEnd, returnEnd not compatible with endScope: {}"),E8;if(typeof Z.endScope!=="object"||Z.endScope===null)throw QZ("endScope must be object"),E8;K7(Z,Z.end,{key:"endScope"}),Z.end=q1(Z.end,{joinWith:""})}function vX(Z){if(Z.scope&&typeof Z.scope==="object"&&Z.scope!==null)Z.beginScope=Z.scope,delete Z.scope}function TX(Z){if(vX(Z),typeof Z.beginScope==="string")Z.beginScope={_wrap:Z.beginScope};if(typeof Z.endScope==="string")Z.endScope={_wrap:Z.endScope};yX(Z),_X(Z)}function RX(Z){function J(G,q){return new RegExp(iZ(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+=z7(G)+1}compile(){if(this.regexes.length===0)this.exec=()=>null;let G=this.regexes.map((q)=>q[1]);this.matcherRe=J(q1(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;[UX,BX,TX,AX].forEach((F)=>F(G,q)),Z.compilerExtensions.forEach((F)=>F(G,q)),G.__beforeBegin=null,[LX,PX,OX].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=Y7(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=iZ(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=b9(Z.classNameAliases||{}),W(Z)}function F7(Z){if(!Z)return!1;return Z.endsWithParent||F7(Z.starts)}function kX(Z){if(Z.variants&&!Z.cachedVariants)Z.cachedVariants=Z.variants.map(function(J){return b9(Z,{variants:null},J)});if(Z.cachedVariants)return Z.cachedVariants;if(F7(Z))return b9(Z,{starts:Z.starts?b9(Z.starts):null});if(Object.isFrozen(Z))return b9(Z);return Z}var IX="11.11.1";class U7 extends Error{constructor(Z,J){super(Z);this.name="HTMLInjectionError",this.html=J}}var X1=J7,s5=b9,e5=Symbol("nomatch"),SX=7,L7=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:Q7};function H(m){return q.noHighlightRe.test(m)}function Y(m){let g=m.className+" ";g+=m.parentNode?m.parentNode.className:"";let u=q.languageDetectRe.exec(g);if(u){let I=L(u[1]);if(!I)t5(W.replace("{}",u[1])),t5("Falling back to no-highlight mode for this block.",m);return I?u[1]:"no-highlight"}return g.split(/\s+/).find((I)=>H(I)||L(I))}function F(m,g,u){let I="",n="";if(typeof g==="object")I=m,u=g.ignoreIllegals,n=g.language;else wZ("10.7.0","highlight(lang, code, ...args) has been deprecated."),wZ("10.7.0",`Please use highlight(code, options) instead.
|
|
2
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),n=m,I=g;if(u===void 0)u=!0;let Z0={code:I,language:n};r("before:highlight",Z0);let q0=Z0.result?Z0.result:K(Z0.language,Z0.code,u);return q0.code=Z0.code,r("after:highlight",q0),q0}function K(m,g,u,I){let n=Object.create(null);function Z0(t,e){return t.keywords[e]}function q0(){if(!K0.keywords){w0.addText(h);return}let t=0;K0.keywordPatternRe.lastIndex=0;let e=K0.keywordPatternRe.exec(h),X0="";while(e){X0+=h.substring(t,e.index);let L0=u0.case_insensitive?e[0].toLowerCase():e[0],v0=Z0(K0,L0);if(v0){let[V0,F6]=v0;if(w0.addText(X0),X0="",n[L0]=(n[L0]||0)+1,n[L0]<=SX)T+=F6;if(V0.startsWith("_"))X0+=e[0];else{let U6=u0.classNameAliases[V0]||V0;B0(e[0],U6)}}else X0+=e[0];t=K0.keywordPatternRe.lastIndex,e=K0.keywordPatternRe.exec(h)}X0+=h.substring(t),w0.addText(X0)}function Q0(){if(h==="")return;let t=null;if(typeof K0.subLanguage==="string"){if(!J[K0.subLanguage]){w0.addText(h);return}t=K(K0.subLanguage,h,!0,l0[K0.subLanguage]),l0[K0.subLanguage]=t._top}else t=P(h,K0.subLanguage.length?K0.subLanguage:null);if(K0.relevance>0)T+=t.relevance;w0.__addSublanguage(t._emitter,t.language)}function J0(){if(K0.subLanguage!=null)Q0();else q0();h=""}function B0(t,e){if(t==="")return;w0.startScope(e),w0.addText(t),w0.endScope()}function p0(t,e){let X0=1,L0=e.length-1;while(X0<=L0){if(!t._emit[X0]){X0++;continue}let v0=u0.classNameAliases[t[X0]]||t[X0],V0=e[X0];if(v0)B0(V0,v0);else h=V0,q0(),h="";X0++}}function i0(t,e){if(t.scope&&typeof t.scope==="string")w0.openNode(u0.classNameAliases[t.scope]||t.scope);if(t.beginScope){if(t.beginScope._wrap)B0(h,u0.classNameAliases[t.beginScope._wrap]||t.beginScope._wrap),h="";else if(t.beginScope._multi)p0(t.beginScope,e),h=""}return K0=Object.create(t,{parent:{value:K0}}),K0}function m0(t,e,X0){let L0=nQ(t.endRe,X0);if(L0){if(t["on:end"]){let v0=new z1(t);if(t["on:end"](e,v0),v0.isMatchIgnored)L0=!1}if(L0){while(t.endsParent&&t.parent)t=t.parent;return t}}if(t.endsWithParent)return m0(t.parent,e,X0)}function d0(t){if(K0.matcher.regexIndex===0)return h+=t[0],1;else return F0=!0,0}function g0(t){let e=t[0],X0=t.rule,L0=new z1(X0),v0=[X0.__beforeBegin,X0["on:begin"]];for(let V0 of v0){if(!V0)continue;if(V0(t,L0),L0.isMatchIgnored)return d0(e)}if(X0.skip)h+=e;else{if(X0.excludeBegin)h+=e;if(J0(),!X0.returnBegin&&!X0.excludeBegin)h=e}return i0(X0,t),X0.returnBegin?0:e.length}function h0(t){let e=t[0],X0=g.substring(t.index),L0=m0(K0,t,X0);if(!L0)return e5;let v0=K0;if(K0.endScope&&K0.endScope._wrap)J0(),B0(e,K0.endScope._wrap);else if(K0.endScope&&K0.endScope._multi)J0(),p0(K0.endScope,t);else if(v0.skip)h+=e;else{if(!(v0.returnEnd||v0.excludeEnd))h+=e;if(J0(),v0.excludeEnd)h=e}do{if(K0.scope)w0.closeNode();if(!K0.skip&&!K0.subLanguage)T+=K0.relevance;K0=K0.parent}while(K0!==L0.parent);if(L0.starts)i0(L0.starts,t);return v0.returnEnd?0:e.length}function _0(){let t=[];for(let e=K0;e!==u0;e=e.parent)if(e.scope)t.unshift(e.scope);t.forEach((e)=>w0.openNode(e))}let a0={};function O0(t,e){let X0=e&&e[0];if(h+=t,X0==null)return J0(),0;if(a0.type==="begin"&&e.type==="end"&&a0.index===e.index&&X0===""){if(h+=g.slice(e.index,e.index+1),!z){let L0=Error(`0 width match regex (${m})`);throw L0.languageName=m,L0.badRule=a0.rule,L0}return 1}if(a0=e,e.type==="begin")return g0(e);else if(e.type==="illegal"&&!u){let L0=Error('Illegal lexeme "'+X0+'" for mode "'+(K0.scope||"<unnamed>")+'"');throw L0.mode=K0,L0}else if(e.type==="end"){let L0=h0(e);if(L0!==e5)return L0}if(e.type==="illegal"&&X0==="")return h+=`
|
|
3
|
+
`,1;if(i>1e5&&i>e.index*3)throw Error("potential infinite loop, way more iterations than matches");return h+=X0,X0.length}let u0=L(m);if(!u0)throw QZ(W.replace("{}",m)),Error('Unknown language: "'+m+'"');let Y0=RX(u0),r0="",K0=I||Y0,l0={},w0=new q.__emitter(q);_0();let h="",T=0,p=0,i=0,F0=!1;try{if(!u0.__emitTokens){K0.matcher.considerAll();for(;;){if(i++,F0)F0=!1;else K0.matcher.considerAll();K0.matcher.lastIndex=p;let t=K0.matcher.exec(g);if(!t)break;let e=g.substring(p,t.index),X0=O0(e,t);p=t.index+X0}O0(g.substring(p))}else u0.__emitTokens(g,w0);return w0.finalize(),r0=w0.toHTML(),{language:m,value:r0,relevance:T,illegal:!1,_emitter:w0,_top:K0}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:m,value:X1(g),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:p,context:g.slice(p-100,p+100),mode:t.mode,resultSoFar:r0},_emitter:w0};else if(z)return{language:m,value:X1(g),illegal:!1,relevance:0,errorRaised:t,_emitter:w0,_top:K0};else throw t}}function w(m){let g={value:X1(m),illegal:!1,relevance:0,_top:G,_emitter:new q.__emitter(q)};return g._emitter.addText(m),g}function P(m,g){g=g||q.languages||Object.keys(J);let u=w(m),I=g.filter(L).filter(M).map((J0)=>K(J0,m,!1));I.unshift(u);let n=I.sort((J0,B0)=>{if(J0.relevance!==B0.relevance)return B0.relevance-J0.relevance;if(J0.language&&B0.language){if(L(J0.language).supersetOf===B0.language)return 1;else if(L(B0.language).supersetOf===J0.language)return-1}return 0}),[Z0,q0]=n,Q0=Z0;return Q0.secondBest=q0,Q0}function A(m,g,u){let I=g&&Q[g]||u;m.classList.add("hljs"),m.classList.add(`language-${I}`)}function _(m){let g=null,u=Y(m);if(H(u))return;if(r("before:highlightElement",{el:m,language:u}),m.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",m);return}if(m.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(m);if(q.throwUnescapedHTML)throw new U7("One of your code blocks includes unescaped HTML.",m.innerHTML)}g=m;let I=g.textContent,n=u?F(I,{language:u,ignoreIllegals:!0}):P(I);if(m.innerHTML=n.value,m.dataset.highlighted="yes",A(m,u,n.language),m.result={language:n.language,re:n.relevance,relevance:n.relevance},n.secondBest)m.secondBest={language:n.secondBest.language,relevance:n.secondBest.relevance};r("after:highlightElement",{el:m,result:n,text:I})}function V(m){q=s5(q,m)}let D=()=>{x(),wZ("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function v(){x(),wZ("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let R=!1;function x(){function m(){x()}if(document.readyState==="loading"){if(!R)window.addEventListener("DOMContentLoaded",m,!1);R=!0;return}document.querySelectorAll(q.cssSelector).forEach(_)}function S(m,g){let u=null;try{u=g(Z)}catch(I){if(QZ("Language definition for '{}' could not be registered.".replace("{}",m)),!z)throw I;else QZ(I);u=G}if(!u.name)u.name=m;if(J[m]=u,u.rawDefinition=g.bind(null,Z),u.aliases)B(u.aliases,{languageName:m})}function O(m){delete J[m];for(let g of Object.keys(Q))if(Q[g]===m)delete Q[g]}function N(){return Object.keys(J)}function L(m){return m=(m||"").toLowerCase(),J[m]||J[Q[m]]}function B(m,{languageName:g}){if(typeof m==="string")m=[m];m.forEach((u)=>{Q[u.toLowerCase()]=g})}function M(m){let g=L(m);return g&&!g.disableAutodetect}function y(m){if(m["before:highlightBlock"]&&!m["before:highlightElement"])m["before:highlightElement"]=(g)=>{m["before:highlightBlock"](Object.assign({block:g.el},g))};if(m["after:highlightBlock"]&&!m["after:highlightElement"])m["after:highlightElement"]=(g)=>{m["after:highlightBlock"](Object.assign({block:g.el},g))}}function E(m){y(m),X.push(m)}function c(m){let g=X.indexOf(m);if(g!==-1)X.splice(g,1)}function r(m,g){let u=m;X.forEach(function(I){if(I[u])I[u](g)})}function $0(m){return wZ("10.7.0","highlightBlock will be removed entirely in v12.0"),wZ("10.7.0","Please use highlightElement now."),_(m)}Object.assign(Z,{highlight:F,highlightAuto:P,highlightAll:x,highlightElement:_,highlightBlock:$0,configure:V,initHighlighting:D,initHighlightingOnLoad:v,registerLanguage:S,unregisterLanguage:O,listLanguages:N,getLanguage:L,registerAliases:B,autoDetection:M,inherit:s5,addPlugin:E,removePlugin:c}),Z.debugMode=function(){z=!1},Z.safeMode=function(){z=!0},Z.versionString=IX,Z.regex={concat:XZ,lookahead:X7,either:G1,optional:iQ,anyNumberOfTimes:cQ};for(let m in u8)if(typeof u8[m]==="object")Z7(u8[m]);return Object.assign(Z,u8),Z},MZ=L7({});MZ.newInstance=()=>L7({});P7.exports=MZ;MZ.HighlightJS=MZ;MZ.default=MZ});var A7=C0((MY,O7)=>{function VX(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}]}]}}O7.exports=VX});var w7=C0((CY,N7)=>{function fX(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]},w=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],P=Z.SHEBANG({binary:`(${w.join("|")})`,relevance:10}),A={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[Z.inherit(Z.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},_=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],V=["true","false"],D={match:/(\/[a-z._-]+)+/},v=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],R=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],x=["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"],S=["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:_,literal:V,built_in:[...v,...R,"set","shopt",...x,...S]},contains:[P,Z.SHEBANG(),A,K,W,G,D,q,H,Y,F,Q]}}N7.exports=fX});var C7=C0((yY,M7)=>{function gX(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]},w={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},P=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"},D=[K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],v={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:V,contains:D.concat([{begin:/\(/,end:/\)/,keywords:V,contains:D.concat(["self"]),relevance:0}]),relevance:0},R={begin:"("+G+"[\\*&\\s]+)+"+P,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:V,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:V,relevance:0},{begin:P,returnBegin:!0,contains:[Z.inherit(w,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:V,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:V,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:V,disableAutodetect:!0,illegal:"</",contains:[].concat(v,R,D,[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:Y,keywords:V}}}M7.exports=gX});var _7=C0((_Y,y7)=>{function bX(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]},w={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},P=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",A=["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"],_=["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"],D=["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"],x={type:_,keyword:A,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:V},S={className:"function.dispatch",relevance:0,keywords:{_hint:D},begin:J.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,Z.IDENT_RE,J.lookahead(/(<[^<>]+>|)\s*\(/))},O=[S,K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],N={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:x,contains:O.concat([{begin:/\(/,end:/\)/,keywords:x,contains:O.concat(["self"]),relevance:0}]),relevance:0},L={className:"function",begin:"("+G+"[\\*&\\s]+)+"+P,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:x,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:x,relevance:0},{begin:P,returnBegin:!0,contains:[w],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[Y,F]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:x,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:x,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:x,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(N,L,S,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:x,contains:["self",q]},{begin:Z.IDENT_RE+"::",keywords:x},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}y7.exports=bX});var T7=C0((vY,v7)=>{function jX(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/}),w={className:"subst",begin:/\{/,end:/\}/,keywords:G},P=Z.inherit(w,{illegal:/\n/}),A={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},Z.BACKSLASH_ESCAPE,P]},_={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},w]},V=Z.inherit(_,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},P]});w.contains=[_,A,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.C_BLOCK_COMMENT_MODE],P.contains=[V,A,K,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.inherit(Z.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let D={variants:[Y,_,A,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},v={begin:"<",end:">",contains:[{beginKeywords:"in out"},q]},R=Z.IDENT_RE+"(<"+Z.IDENT_RE+"(\\s*,\\s*"+Z.IDENT_RE+")*>)?(\\[\\])?",x={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"}},D,H,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},q,v,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,v,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:"("+R+"\\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,v],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:G,relevance:0,contains:[D,H,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},x]}}v7.exports=jX});var k7=C0((TY,R7)=>{var hX=(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"],xX=["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=[...DX,...xX],uX=["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(),EX=["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(),pX=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),dX=["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 cX(Z){let J=Z.regex,Q=hX(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:":("+EX.join("|")+")"},{begin:":(:)?("+pX.join("|")+")"}]},Q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+dX.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:uX.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...q,Q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+mX.join("|")+")\\b"}]}}R7.exports=cX});var S7=C0((RY,I7)=>{function iX(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:[]}),w=Z.inherit(F,{contains:[]});Y.contains.push(w),F.contains.push(K);let P=[Q,H];return[Y,F,K,w].forEach((D)=>{D.contains=D.contains.concat(P)}),P=P.concat(Y,F),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:P},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:P}]}]},Q,W,Y,F,{className:"quote",begin:"^>\\s+",contains:P,end:"$"},z,X,H,G,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}I7.exports=iX});var f7=C0((kY,V7)=>{function aX(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:/$/}]}}V7.exports=aX});var b7=C0((IY,g7)=>{function nX(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]})]}]},w="[1-9](_?[0-9])*|0",P="[0-9](_?[0-9])*",A={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"}]},_={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:G}]},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: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:[_]},{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},A,{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=O,_.contains=O;let N="[>?]>",L="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",B="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",M=[{begin:/^\s*=>/,starts:{end:"$",contains:O}},{className:"meta.prompt",begin:"^("+N+"|"+L+"|"+B+")(?=[ ])",starts:{end:"$",keywords:G,contains:O}}];return Y.unshift(H),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:G,illegal:/\/\*/,contains:[Z.SHEBANG({binary:"ruby"})].concat(M).concat(Y).concat(O)}}g7.exports=nX});var h7=C0((SY,j7)=>{function lX(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:/["']/}]}]}}j7.exports=lX});var x7=C0((VY,D7)=>{function rX(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/]}}D7.exports=rX});var u7=C0((fY,m7)=>{function oX(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),w=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:w,className:"attr",starts:{end:/$/,contains:[X,q,W,z,G,Q]}}]}}m7.exports=oX});var c7=C0((gY,d7)=>{var CZ="[0-9](_*[0-9])*",d8=`\\.(${CZ})`,c8="[0-9a-fA-F](_*[0-9a-fA-F])*",E7={className:"number",variants:[{begin:`(\\b(${CZ})((${d8})|\\.)?|(${d8}))[eE][+-]?(${CZ})[fFdD]?\\b`},{begin:`\\b(${CZ})((${d8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${d8})[fFdD]?\\b`},{begin:`\\b(${CZ})[fFdD]\\b`},{begin:`\\b0[xX]((${c8})\\.?|(${c8})?\\.(${c8}))[pP][+-]?(${CZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${c8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function p7(Z,J,Q){if(Q===-1)return"";return Z.replace(J,(X)=>{return p7(Z,J,Q-1)})}function tX(Z){let J=Z.regex,Q="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",X="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+p7("(?:<"+"[À-ʸ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,E7,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},E7,Y]}}d7.exports=tX});var r7=C0((bY,l7)=>{var sX=["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"],eX=["true","false","null","undefined","NaN","Infinity"],i7=["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"],a7=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],n7=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Zz=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Jz=[].concat(n7,i7,a7);function $z(Z){let J=Z.regex,Q=(u,{after:I})=>{let n="</"+u[0].slice(1);return u.input.indexOf(n,I)!==-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,I)=>{let n=u[0].length+u.index,Z0=u.input[n];if(Z0==="<"||Z0===","){I.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:n}))I.ignoreMatch()}let q0,Q0=u.input.substring(n);if(q0=Q0.match(/^\s*=/)){I.ignoreMatch();return}if(q0=Q0.match(/^\s+extends\s+/)){if(q0.index===0){I.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:sX,literal:eX,built_in:Jz,"variable.language":Zz},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},w={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},P={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"xml"}},A={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"css"}},_={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"graphql"}},V={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,w]},v={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]},R=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,{match:/\$\d+/},K];w.contains=R.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(R)});let x=[].concat(v,w.contains),S=x.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(x)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:S},N={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"}}]},L={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:{_:[...i7,...a7]}},B={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={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:/%/},y={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function E(u){return J.concat("(?!",u.join("|"),")")}let c={match:J.concat(/\b/,E([...n7,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},r={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]},m="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(m)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:S,CLASS_REFERENCE:L},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),B,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,v,{match:/\$\d+/},K,L,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},g,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,Z.REGEXP_MODE,{className:"function",begin:m,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:S}]}]},{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"]}]}]},M,{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},r,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},c,y,N,$0,{match:/\$[(.]/}]}}l7.exports=$z});var t7=C0((jY,o7)=>{function Qz(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"}}o7.exports=Qz});var e7=C0((hY,s7)=>{var yZ="[0-9](_*[0-9])*",i8=`\\.(${yZ})`,a8="[0-9a-fA-F](_*[0-9a-fA-F])*",Xz={className:"number",variants:[{begin:`(\\b(${yZ})((${i8})|\\.)?|(${i8}))[eE][+-]?(${yZ})[fFdD]?\\b`},{begin:`\\b(${yZ})((${i8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${i8})[fFdD]?\\b`},{begin:`\\b(${yZ})[fFdD]\\b`},{begin:`\\b0[xX]((${a8})\\.?|(${a8})?\\.(${a8}))[pP][+-]?(${yZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function zz(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=Xz,F=Z.COMMENT("/\\*","\\*/",{contains:[Z.C_BLOCK_COMMENT_MODE]}),K={variants:[{className:"type",begin:Z.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},w=K;return w.variants[1].contains=[K],K.variants[1].contains=[w],{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]}}s7.exports=zz});var Q4=C0((DY,$4)=>{var Wz=(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_-]*/}}},Gz=["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"],qz=["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"],Hz=[...Gz,...qz],Yz=["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(),Z4=["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(),J4=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Kz=["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(),Fz=Z4.concat(J4).sort().reverse();function Uz(Z){let J=Wz(Z),Q=Fz,X="and or not only",z="[\\w-]+",W="([\\w-]+|@\\{[\\w-]+\\})",G=[],q=[],H=function(R){return{className:"string",begin:"~?"+R+".*?"+R}},Y=function(R,x,S){return{className:R,begin:x,relevance:S}},F={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Yz.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 w=q.concat({begin:/\{/,end:/\}/,contains:G}),P={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(q)},A={begin:W+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Kz.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:q}}]},_={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:w}},D={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:W,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,P,Y("keyword","all\\b"),Y("variable","@\\{[\\w-]+\\}"),{begin:"\\b("+Hz.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:":("+Z4.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+J4.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:w},{begin:"!important"},J.FUNCTION_DISPATCH]},v={begin:`[\\w-]+:(:)?(${Q.join("|")})`,returnBegin:!0,contains:[D]};return G.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,_,V,v,A,D,P,J.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:G}}$4.exports=Uz});var z4=C0((xY,X4)=>{function Lz(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}])}}X4.exports=Lz});var G4=C0((mY,W4)=>{function Pz(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]}}W4.exports=Pz});var H4=C0((uY,q4)=>{function Bz(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=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],w=(_,V,D="\\1")=>{let v=D==="\\1"?D:J.concat(D,V);return J.concat(J.concat("(?:",_,")"),V,/(?:\\.|[^\\\/])*?/,v,/(?:\\.|[^\\\/])*?/,D,X)},P=(_,V,D)=>{return J.concat(J.concat("(?:",_,")"),V,/(?:\\.|[^\\\/])*?/,D,X)},A=[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:w("s|tr|y",J.either(...K,{capture:!0}))},{begin:w("s|tr|y","\\(","\\)")},{begin:w("s|tr|y","\\[","\\]")},{begin:w("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:P("(?:m|qr)?",/\//,/\//)},{begin:P("m|qr",J.either(...K,{capture:!0}),/\1/)},{begin:P("m|qr",/\(/,/\)/)},{begin:P("m|qr",/\[/,/\]/)},{begin:P("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=A,G.contains=A,{name:"Perl",aliases:["pl","pm"],keywords:z,contains:A}}q4.exports=Bz});var K4=C0((EY,Y4)=>{function Oz(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}]}}Y4.exports=Oz});var U4=C0((pY,F4)=>{function Az(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":(r,$0)=>{$0.data._beginMatch=r[1]||r[2]},"on:end":(r,$0)=>{if($0.data._beginMatch!==r[1])$0.ignoreMatch()}},w=Z.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),P=`[
|
|
5
|
+
]`,A={scope:"string",variants:[F,Y,K,w]},_={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},V=["false","null","true"],D=["__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"],v=["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"],x={keyword:D,literal:((r)=>{let $0=[];return r.forEach((m)=>{if($0.push(m),m.toLowerCase()===m)$0.push(m.toUpperCase());else $0.push(m.toLowerCase())}),$0})(V),built_in:v},S=(r)=>{return r.map(($0)=>{return $0.replace(/\|\d+$/,"")})},O={variants:[{match:[/new/,J.concat(`[
|
|
6
|
+
]`,"+"),J.concat("(?!",S(v).join("\\b|"),"\\b)"),z],scope:{1:"keyword",4:"title.class"}}]},N=J.concat(X,"\\b(?!\\()"),L={variants:[{match:[J.concat(/::/,J.lookahead(/(?!class\b)/)),N],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[z,J.concat(/::/,J.lookahead(/(?!class\b)/)),N],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"}}]},B={scope:"attr",match:J.concat(X,J.lookahead(":"),J.lookahead(/(?!::)/))},M={relevance:0,begin:/\(/,end:/\)/,keywords:x,contains:[B,G,L,Z.C_BLOCK_COMMENT_MODE,A,_,O]},y={relevance:0,match:[/\b/,J.concat("(?!fn\\b|function\\b|",S(D).join("\\b|"),"|",S(v).join("\\b|"),"\\b)"),X,J.concat(`[
|
|
7
|
+
]`,"*"),J.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[M]};M.contains.push(y);let E=[B,L,Z.C_BLOCK_COMMENT_MODE,A,_,O],c={begin:J.concat(/#\[\s*\\?/,J.either(z,W)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:V,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:V,keyword:["new","array"]},contains:["self",...E]},...E,{scope:"meta",variants:[{match:z},{match:W}]}]};return{case_insensitive:!1,keywords:x,contains:[c,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,y,L,{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:x,contains:["self",c,G,L,Z.C_BLOCK_COMMENT_MODE,A,_]}]},{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]},A,_]}}F4.exports=Az});var P4=C0((dY,L4)=>{function Nz(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})]}]}}L4.exports=Nz});var O4=C0((cY,B4)=>{function wz(Z){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}B4.exports=wz});var N4=C0((iY,A4)=>{function Mz(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]},w="[0-9](_?[0-9])*",P="(\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.",A=`\\b|${X.join("|")}`,_={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]?(?=${A})`},{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]?(?=${A})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${A})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${A})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${A})`},{begin:`\\b([0-9](_?[0-9])*)[jJ](?=${A})`}]},V={className:"comment",begin:J.lookahead(/# type:/),end:/$/,keywords:q,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},D={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:["self",H,_,K,Z.HASH_COMMENT_MODE]}]};return Y.contains=[K,_,H],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:q,illegal:/(<\/|\?)|=>/,contains:[H,_,{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:[D]},{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:[_,D,K]}]}}A4.exports=Mz});var M4=C0((aY,w4)=>{function Cz(Z){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}w4.exports=Cz});var y4=C0((nY,C4)=>{function yz(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:/\\./}]}]}}C4.exports=yz});var v4=C0((lY,_4)=>{function _z(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]}}_4.exports=_z});var R4=C0((rY,T4)=>{var vz=(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_-]*/}}},Tz=["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"],Rz=["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=[...Tz,...Rz],Iz=["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(),Sz=["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(),Vz=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),fz=["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 gz(Z){let J=vz(Z),Q=Vz,X=Sz,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("+fz.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:Iz.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]}}T4.exports=gz});var I4=C0((oY,k4)=>{function bz(Z){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}k4.exports=bz});var V4=C0((tY,S4)=>{function jz(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"],w=["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"],P=F,A=[...Y,...H].filter((S)=>{return!F.includes(S)}),_={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},V={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},D={match:J.concat(/\b/,J.either(...P),/\s*\(/),relevance:0,keywords:{built_in:P}};function v(S){return J.concat(/\b/,J.either(...S.map((O)=>{return O.replace(/\s+/,"\\s+")})),/\b/)}let R={scope:"keyword",match:v(w),relevance:0};function x(S,{exceptions:O,when:N}={}){let L=N;return O=O||[],S.map((B)=>{if(B.match(/\|\d+$/)||O.includes(B))return B;else if(L(B))return`${B}|0`;else return B})}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:x(A,{when:(S)=>S.length<3}),literal:W,type:q,built_in:K},contains:[{scope:"type",match:v(G)},R,D,_,X,z,Z.C_NUMBER_MODE,Z.C_BLOCK_COMMENT_MODE,Q,V]}}S4.exports=jz});var u4=C0((sY,m4)=>{function j4(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function nZ(Z){return I0("(?=",Z,")")}function I0(...Z){return Z.map((Q)=>j4(Q)).join("")}function hz(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"("+(hz(Z).capture?"":"?:")+Z.map((X)=>j4(X)).join("|")+")"}var F1=(Z)=>I0(/\b/,Z,/\w$/.test(Z)?/\b/:/\B/),Dz=["Protocol","Type"].map(F1),f4=["init","self"].map(F1),xz=["Any","Self"],Y1=["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"],g4=["false","nil","true"],mz=["assignment","associativity","higherThan","left","lowerThan","none","right"],uz=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],b4=["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"],h4=$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]/),D4=$9(h4,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),K1=I0(h4,D4,"*"),x4=$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]/),l8=$9(x4,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w9=I0(x4,l8,"*"),n8=I0(/[A-Z]/,l8,"*"),Ez=["attached","autoclosure",I0(/convention\(/,$9("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",I0(/objc\(/,w9,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],pz=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function dz(Z){let J={match:/\s+/,relevance:0},Q=Z.COMMENT("/\\*","\\*/",{contains:["self"]}),X=[Z.C_LINE_COMMENT_MODE,Q],z={match:[/\./,$9(...Dz,...f4)],className:{2:"keyword"}},W={match:I0(/\./,$9(...Y1)),relevance:0},G=Y1.filter((Y0)=>typeof Y0==="string").concat(["_|0"]),q=Y1.filter((Y0)=>typeof Y0!=="string").concat(xz).map(F1),H={variants:[{className:"keyword",match:$9(...q,...f4)}]},Y={$pattern:$9(/\b\w+/,/#\w+/),keyword:G.concat(uz),literal:g4},F=[z,W,H],K={match:I0(/\./,$9(...b4)),relevance:0},w={className:"built_in",match:I0(/\b/,$9(...b4),/(?=\()/)},P=[K,w],A={match:/->/,relevance:0},_={className:"operator",relevance:0,variants:[{match:K1},{match:`\\.(\\.|${D4})+`}]},V=[A,_],D="([0-9]_*)+",v="([0-9a-fA-F]_*)+",R={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/}]},x=(Y0="")=>({className:"subst",variants:[{match:I0(/\\/,Y0,/[0\\tnr"']/)},{match:I0(/\\/,Y0,/u\{[0-9a-fA-F]{1,8}\}/)}]}),S=(Y0="")=>({className:"subst",match:I0(/\\/,Y0,/[\t ]*(?:[\r\n]|\r\n)/)}),O=(Y0="")=>({className:"subst",label:"interpol",begin:I0(/\\/,Y0,/\(/),end:/\)/}),N=(Y0="")=>({begin:I0(Y0,/"""/),end:I0(/"""/,Y0),contains:[x(Y0),S(Y0),O(Y0)]}),L=(Y0="")=>({begin:I0(Y0,/"/),end:I0(/"/,Y0),contains:[x(Y0),O(Y0)]}),B={className:"string",variants:[N(),N("#"),N("##"),N("###"),L(),L("#"),L("##"),L("###")]},M=[Z.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[Z.BACKSLASH_ESCAPE]}],y={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:M},E=(Y0)=>{let r0=I0(Y0,/\//),K0=I0(/\//,Y0);return{begin:r0,end:K0,contains:[...M,{scope:"comment",begin:`#(?!.*${K0})`,end:/$/}]}},c={scope:"regexp",variants:[E("###"),E("##"),E("#"),y]},r={match:I0(/`/,w9,/`/)},$0={className:"variable",match:/\$\d+/},m={className:"variable",match:`\\$${l8}+`},g=[r,$0,m],u={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:pz,contains:[...V,R,B]}]}},I={scope:"keyword",match:I0(/@/,$9(...Ez),nZ($9(/\(/,/\s+/)))},n={scope:"meta",match:I0(/@/,w9)},Z0=[u,I,n],q0={match:nZ(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:I0(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,l8,"+")},{className:"type",match:n8,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:I0(/\s+&\s+/,nZ(n8)),relevance:0}]},Q0={begin:/</,end:/>/,keywords:Y,contains:[...X,...F,...Z0,A,q0]};q0.contains.push(Q0);let J0={match:I0(w9,/\s*:/),keywords:"_|0",relevance:0},B0={begin:/\(/,end:/\)/,relevance:0,keywords:Y,contains:["self",J0,...X,c,...F,...P,...V,R,B,...g,...Z0,q0]},p0={begin:/</,end:/>/,keywords:"repeat each",contains:[...X,q0]},i0={begin:$9(nZ(I0(w9,/\s*:/)),nZ(I0(w9,/\s+/,w9,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:w9}]},m0={begin:/\(/,end:/\)/,keywords:Y,contains:[i0,...X,...F,...V,R,B,...Z0,q0,B0],endsParent:!0,illegal:/["']/},d0={match:[/(func|macro)/,/\s+/,$9(r.match,w9,K1)],className:{1:"keyword",3:"title.function"},contains:[p0,m0,J],illegal:[/\[/,/%/]},g0={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[p0,m0,J],illegal:/\[|%/},h0={match:[/operator/,/\s+/,K1],className:{1:"keyword",3:"title"}},_0={begin:[/precedencegroup/,/\s+/,n8],className:{1:"keyword",3:"title"},contains:[q0],keywords:[...mz,...g4],end:/}/},a0={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},O0={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},u0={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,w9,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:Y,contains:[p0,...F,{begin:/:/,end:/\{/,keywords:Y,contains:[{scope:"title.class.inherited",match:n8},...F],relevance:0}]};for(let Y0 of B.variants){let r0=Y0.contains.find((l0)=>l0.label==="interpol");r0.keywords=Y;let K0=[...F,...P,...V,R,B,...g];r0.contains=[...K0,{begin:/\(/,end:/\)/,contains:["self",...K0]}]}return{name:"Swift",keywords:Y,contains:[...X,d0,g0,a0,O0,u0,h0,_0,{beginKeywords:"import",end:/$/,contains:[...X],relevance:0},c,...F,...P,...V,R,B,...g,...Z0,q0,B0]}}m4.exports=dz});var p4=C0((eY,E4)=>{function cz(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])?)?",w={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"},P={end:",",endsWithParent:!0,excludeEnd:!0,keywords:"true false yes no null",relevance:0},A={begin:/\{/,end:/\}/,contains:[P],illegal:"\\n",relevance:0},_={begin:"\\[",end:"\\]",contains:[P],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"}},w,{className:"number",begin:Z.C_NUMBER_RE+"\\b",relevance:0},A,_,W,G],D=[...V];return D.pop(),D.push(q),P.contains=D,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:V}}E4.exports=cz});var t4=C0((ZK,o4)=>{var d4=["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"],c4=["true","false","null","undefined","NaN","Infinity"],i4=["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"],a4=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],n4=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],l4=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],r4=[].concat(n4,i4,a4);function iz(Z){let J=Z.regex,Q=(u,{after:I})=>{let n="</"+u[0].slice(1);return u.input.indexOf(n,I)!==-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,I)=>{let n=u[0].length+u.index,Z0=u.input[n];if(Z0==="<"||Z0===","){I.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:n}))I.ignoreMatch()}let q0,Q0=u.input.substring(n);if(q0=Q0.match(/^\s*=/)){I.ignoreMatch();return}if(q0=Q0.match(/^\s+extends\s+/)){if(q0.index===0){I.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:d4,literal:c4,built_in:r4,"variable.language":l4},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},w={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},P={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"xml"}},A={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"css"}},_={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"graphql"}},V={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,w]},v={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]},R=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,{match:/\$\d+/},K];w.contains=R.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(R)});let x=[].concat(v,w.contains),S=x.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(x)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:S},N={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"}}]},L={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:{_:[...i4,...a4]}},B={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={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:/%/},y={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function E(u){return J.concat("(?!",u.join("|"),")")}let c={match:J.concat(/\b/,E([...n4,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},r={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]},m="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(m)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:S,CLASS_REFERENCE:L},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),B,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,v,{match:/\$\d+/},K,L,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},g,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,Z.REGEXP_MODE,{className:"function",begin:m,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:S}]}]},{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"]}]}]},M,{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},r,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},c,y,N,$0,{match:/\$[(.]/}]}}function az(Z){let J=Z.regex,Q=iz(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:d4.concat(H),literal:c4,built_in:r4.concat(z),"variable.language":l4},F={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},K=(_,V,D)=>{let v=_.contains.findIndex((R)=>R.label===V);if(v===-1)throw Error("can not find mode to replace");_.contains.splice(v,1,D)};Object.assign(Q.keywords,Y),Q.exports.PARAMS_CONTAINS.push(F);let w=Q.contains.find((_)=>_.scope==="attr"),P=Object.assign({},w,{match:J.concat("[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\?:/))});Q.exports.PARAMS_CONTAINS.push([Q.exports.CLASS_REFERENCE,w,P]),Q.contains=Q.contains.concat([F,W,G,P]),K(Q,"shebang",Z.SHEBANG()),K(Q,"use_strict",q);let A=Q.contains.find((_)=>_.label==="func.def");return A.relevance=0,Object.assign(Q,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),Q}o4.exports=az});var e4=C0((JK,s4)=>{function nz(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:/>/}]}),w=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,w,{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:[w]}]}}s4.exports=nz});var J$=C0(($K,Z$)=>{function lz(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]}}Z$.exports=lz});var Q$=C0((QK,$$)=>{var N0=B7();N0.registerLanguage("xml",A7());N0.registerLanguage("bash",w7());N0.registerLanguage("c",C7());N0.registerLanguage("cpp",_7());N0.registerLanguage("csharp",T7());N0.registerLanguage("css",k7());N0.registerLanguage("markdown",S7());N0.registerLanguage("diff",f7());N0.registerLanguage("ruby",b7());N0.registerLanguage("go",h7());N0.registerLanguage("graphql",x7());N0.registerLanguage("ini",u7());N0.registerLanguage("java",c7());N0.registerLanguage("javascript",r7());N0.registerLanguage("json",t7());N0.registerLanguage("kotlin",e7());N0.registerLanguage("less",Q4());N0.registerLanguage("lua",z4());N0.registerLanguage("makefile",G4());N0.registerLanguage("perl",H4());N0.registerLanguage("objectivec",K4());N0.registerLanguage("php",U4());N0.registerLanguage("php-template",P4());N0.registerLanguage("plaintext",O4());N0.registerLanguage("python",N4());N0.registerLanguage("python-repl",M4());N0.registerLanguage("r",y4());N0.registerLanguage("rust",v4());N0.registerLanguage("scss",R4());N0.registerLanguage("shell",I4());N0.registerLanguage("sql",V4());N0.registerLanguage("swift",u4());N0.registerLanguage("yaml",p4());N0.registerLanguage("typescript",t4());N0.registerLanguage("vbnet",e4());N0.registerLanguage("wasm",J$());N0.HighlightJS=N0;N0.default=N0;$$.exports=N0});var M8,k0,wJ,C2,S9,BJ,MJ,CJ,B6,P8,VZ,yJ,w6,O6,A6,y2,A8={},N8=[],_2=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,C8=Array.isArray;function y9(Z,J){for(var Q in J)Z[Q]=J[Q];return Z}function M6(Z){Z&&Z.parentNode&&Z.parentNode.removeChild(Z)}function v2(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?M8.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 B8(Z,G,X,z,null)}function B8(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?++wJ:z,__i:-1,__u:0};return z==null&&k0.vnode!=null&&k0.vnode(W),W}function o(Z){return Z.children}function O8(Z,J){this.props=Z,this.context=J}function YZ(Z,J){if(J==null)return Z.__?YZ(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"?YZ(Z):null}function T2(Z){if(Z.__P&&Z.__d){var J=Z.__v,Q=J.__e,X=[],z=[],W=y9({},J);W.__v=J.__v+1,k0.vnode&&k0.vnode(W),C6(Z.__P,W,J,Z.__n,Z.__P.namespaceURI,32&J.__u?[Q]:null,X,Q==null?YZ(J):Q,!!(32&J.__u),z),W.__v=J.__v,W.__.__k[W.__i]=W,RJ(X,W,z),J.__e=J.__=null,W.__e!=Q&&_J(W)}}function _J(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}),_J(Z)}function OJ(Z){(!Z.__d&&(Z.__d=!0)&&S9.push(Z)&&!w8.__r++||BJ!=k0.debounceRendering)&&((BJ=k0.debounceRendering)||MJ)(w8)}function w8(){try{for(var Z,J=1;S9.length;)S9.length>J&&S9.sort(CJ),Z=S9.shift(),J=S9.length,T2(Z)}finally{S9.length=w8.__r=0}}function vJ(Z,J,Q,X,z,W,G,q,H,Y,F){var K,w,P,A,_,V,D,v=X&&X.__k||N8,R=J.length;for(H=R2(Q,J,v,H,R),K=0;K<R;K++)(P=Q.__k[K])!=null&&(w=P.__i!=-1&&v[P.__i]||A8,P.__i=K,V=C6(Z,P,w,z,W,G,q,H,Y,F),A=P.__e,P.ref&&w.ref!=P.ref&&(w.ref&&y6(w.ref,null,P),F.push(P.ref,P.__c||A,P)),_==null&&A!=null&&(_=A),(D=!!(4&P.__u))||w.__k===P.__k?(H=TJ(P,H,Z,D),D&&w.__e&&(w.__e=null)):typeof P.type=="function"&&V!==void 0?H=V:A&&(H=A.nextSibling),P.__u&=-7);return Q.__e=_,H}function R2(Z,J,Q,X,z){var W,G,q,H,Y,F=Q.length,K=F,w=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]=B8(null,G,null,null,null):C8(G)?G=Z.__k[W]=B8(o,{children:G},null,null,null):G.constructor===void 0&&G.__b>0?G=Z.__k[W]=B8(G.type,G.props,G.key,G.ref?G.ref:null,G.__v):Z.__k[W]=G,H=W+w,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?w--:z<F&&w++),typeof G.type!="function"&&(G.__u|=4)):Y!=H&&(Y==H-1?w--:Y==H+1?w++:(Y>H?w--:w++,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=YZ(q)),IJ(q,q));return X}function TJ(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=TJ(z[W],J,Q,X));return J}Z.__e!=J&&(X&&(J&&Z.type&&!J.parentNode&&(J=YZ(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 AJ(Z,J,Q){J[0]=="-"?Z.setProperty(J,Q==null?"":Q):Z[J]=Q==null?"":typeof Q!="number"||_2.test(J)?Q:Q+"px"}function L8(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||AJ(Z.style,J,"");if(Q)for(J in Q)X&&Q[J]==X[J]||AJ(Z.style,J,Q[J])}else if(J[0]=="o"&&J[1]=="n")W=J!=(J=J.replace(yJ,"$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]=w6,Z.addEventListener(J,W?A6:O6,W)):Z.removeEventListener(J,W?A6:O6,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 NJ(Z){return function(J){if(this.l){var Q=this.l[J.type+Z];if(J[P8]==null)J[P8]=w6++;else if(J[P8]<Q[VZ])return;return Q(k0.event?k0.event(J):J)}}}function C6(Z,J,Q,X,z,W,G,q,H,Y){var F,K,w,P,A,_,V,D,v,R,x,S,O,N,L,B=J.type;if(J.constructor!==void 0)return null;128&Q.__u&&(H=!!(32&Q.__u),W=[q=J.__e=Q.__e]),(F=k0.__b)&&F(J);Z:if(typeof B=="function")try{if(D=J.props,v=B.prototype&&B.prototype.render,R=(F=B.contextType)&&X[F.__c],x=F?R?R.props.value:F.__:X,Q.__c?V=(K=J.__c=Q.__c).__=K.__E:(v?J.__c=K=new B(D,x):(J.__c=K=new O8(D,x),K.constructor=B,K.render=S2),R&&R.sub(K),K.state||(K.state={}),K.__n=X,w=K.__d=!0,K.__h=[],K._sb=[]),v&&K.__s==null&&(K.__s=K.state),v&&B.getDerivedStateFromProps!=null&&(K.__s==K.state&&(K.__s=y9({},K.__s)),y9(K.__s,B.getDerivedStateFromProps(D,K.__s))),P=K.props,A=K.state,K.__v=J,w)v&&B.getDerivedStateFromProps==null&&K.componentWillMount!=null&&K.componentWillMount(),v&&K.componentDidMount!=null&&K.__h.push(K.componentDidMount);else{if(v&&B.getDerivedStateFromProps==null&&D!==P&&K.componentWillReceiveProps!=null&&K.componentWillReceiveProps(D,x),J.__v==Q.__v||!K.__e&&K.shouldComponentUpdate!=null&&K.shouldComponentUpdate(D,K.__s,x)===!1){J.__v!=Q.__v&&(K.props=D,K.state=K.__s,K.__d=!1),J.__e=Q.__e,J.__k=Q.__k,J.__k.some(function(M){M&&(M.__=J)}),N8.push.apply(K.__h,K._sb),K._sb=[],K.__h.length&&G.push(K);break Z}K.componentWillUpdate!=null&&K.componentWillUpdate(D,K.__s,x),v&&K.componentDidUpdate!=null&&K.__h.push(function(){K.componentDidUpdate(P,A,_)})}if(K.context=x,K.props=D,K.__P=Z,K.__e=!1,S=k0.__r,O=0,v)K.state=K.__s,K.__d=!1,S&&S(J),F=K.render(K.props,K.state,K.context),N8.push.apply(K.__h,K._sb),K._sb=[];else do K.__d=!1,S&&S(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=y9(y9({},X),K.getChildContext())),v&&!w&&K.getSnapshotBeforeUpdate!=null&&(_=K.getSnapshotBeforeUpdate(P,A)),N=F!=null&&F.type===o&&F.key==null?kJ(F.props.children):F,q=vJ(Z,C8(N)?N:[N],J,Q,X,z,W,G,q,H,Y),K.base=J.__e,J.__u&=-161,K.__h.length&&G.push(K),V&&(K.__E=K.__=null)}catch(M){if(J.__v=null,H||W!=null)if(M.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(L=W.length;L--;)M6(W[L]);N6(J)}else J.__e=Q.__e,J.__k=Q.__k,M.then||N6(J);k0.__e(M,J,Q)}else W==null&&J.__v==Q.__v?(J.__k=Q.__k,J.__e=Q.__e):q=J.__e=I2(Q.__e,J,Q,X,z,W,G,H,Y);return(F=k0.diffed)&&F(J),128&J.__u?void 0:q}function N6(Z){Z&&(Z.__c&&(Z.__c.__e=!0),Z.__k&&Z.__k.some(N6))}function RJ(Z,J,Q){for(var X=0;X<Q.length;X++)y6(Q[X],Q[++X],Q[++X]);k0.__c&&k0.__c(J,Z),Z.some(function(z){try{Z=z.__h,z.__h=[],Z.some(function(W){W.call(z)})}catch(W){k0.__e(W,z.__v)}})}function kJ(Z){return typeof Z!="object"||Z==null||Z.__b>0?Z:C8(Z)?Z.map(kJ):Z.constructor!==void 0?null:y9({},Z)}function I2(Z,J,Q,X,z,W,G,q,H){var Y,F,K,w,P,A,_,V=Q.props||A8,D=J.props,v=J.type;if(v=="svg"?z="http://www.w3.org/2000/svg":v=="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((P=W[Y])&&"setAttribute"in P==!!v&&(v?P.localName==v:P.nodeType==3)){Z=P,W[Y]=null;break}}if(Z==null){if(v==null)return document.createTextNode(D);Z=document.createElementNS(z,v,D.is&&D),q&&(k0.__m&&k0.__m(J,W),q=!1),W=null}if(v==null)V===D||q&&Z.data==D||(Z.data=D);else{if(W=v=="textarea"&&D.defaultValue!=null?null:W&&M8.call(Z.childNodes),!q&&W!=null)for(V={},Y=0;Y<Z.attributes.length;Y++)V[(P=Z.attributes[Y]).name]=P.value;for(Y in V)P=V[Y],Y=="dangerouslySetInnerHTML"?K=P:Y=="children"||(Y in D)||Y=="value"&&("defaultValue"in D)||Y=="checked"&&("defaultChecked"in D)||L8(Z,Y,null,P,z);for(Y in D)P=D[Y],Y=="children"?w=P:Y=="dangerouslySetInnerHTML"?F=P:Y=="value"?A=P:Y=="checked"?_=P:q&&typeof P!="function"||V[Y]===P||L8(Z,Y,P,V[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=""),vJ(J.type=="template"?Z.content:Z,C8(w)?w:[w],J,Q,X,v=="foreignObject"?"http://www.w3.org/1999/xhtml":z,W,G,W?W[0]:Q.__k&&YZ(Q,0),q,H),W!=null)for(Y=W.length;Y--;)M6(W[Y]);q&&v!="textarea"||(Y="value",v=="progress"&&A==null?Z.removeAttribute("value"):A!=null&&(A!==Z[Y]||v=="progress"&&!A||v=="option"&&A!=V[Y])&&L8(Z,Y,A,V[Y],z),Y="checked",_!=null&&_!=Z[Y]&&L8(Z,Y,_,V[Y],z))}return Z}function y6(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){k0.__e(z,Q)}}function IJ(Z,J,Q){var X,z;if(k0.unmount&&k0.unmount(Z),(X=Z.ref)&&(X.current&&X.current!=Z.__e||y6(X,null,J)),(X=Z.__c)!=null){if(X.componentWillUnmount)try{X.componentWillUnmount()}catch(W){k0.__e(W,J)}X.base=X.__P=null}if(X=Z.__k)for(z=0;z<X.length;z++)X[z]&&IJ(X[z],J,Q||typeof Z.type!="function");Q||M6(Z.__e),Z.__c=Z.__=Z.__e=void 0}function S2(Z,J,Q){return this.constructor(Z,Q)}function a9(Z,J,Q){var X,z,W,G;J==document&&(J=document.documentElement),k0.__&&k0.__(Z,J),z=(X=typeof Q=="function")?null:Q&&Q.__k||J.__k,W=[],G=[],C6(J,Z=(!X&&Q||J).__k=v2(o,null,[Z]),z||A8,A8,J.namespaceURI,!X&&Q?[Q]:z?null:J.firstChild?M8.call(J.childNodes):null,W,!X&&Q?Q:z?z.__e:J.firstChild,X,G),RJ(W,Z,G)}M8=N8.slice,k0={__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}},wJ=0,C2=function(Z){return Z!=null&&Z.constructor===void 0},O8.prototype.setState=function(Z,J){var Q;Q=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=y9({},this.state),typeof Z=="function"&&(Z=Z(y9({},Q),this.props)),Z&&y9(Q,Z),Z!=null&&this.__v&&(J&&this._sb.push(J),OJ(this))},O8.prototype.forceUpdate=function(Z){this.__v&&(this.__e=!0,Z&&this.__h.push(Z),OJ(this))},O8.prototype.render=o,S9=[],MJ=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,CJ=function(Z,J){return Z.__v.__b-J.__v.__b},w8.__r=0,B6=Math.random().toString(8),P8="__d"+B6,VZ="__a"+B6,yJ=/(PointerCapture)$|Capture$/i,w6=0,O6=NJ(!1),A6=NJ(!0),y2=0;var KZ,D0,_6,SJ,fZ=0,xJ=[],E0=k0,VJ=E0.__b,fJ=E0.__r,gJ=E0.diffed,bJ=E0.__c,jJ=E0.unmount,hJ=E0.__;function _8(Z,J){E0.__h&&E0.__h(D0,Z,fZ||J),fZ=0;var Q=D0.__H||(D0.__H={__:[],__h:[]});return Z>=Q.__.length&&Q.__.push({}),Q.__[Z]}function k(Z){return fZ=1,V2(uJ,Z)}function V2(Z,J,Q){var X=_8(KZ++,2);if(X.t=Z,!X.__c&&(X.__=[Q?Q(J):uJ(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=D0,!D0.__f)){var z=function(q,H,Y){if(!X.__c.__H)return!0;var F=X.__c.__H.__.filter(function(w){return w.__c});if(F.every(function(w){return!w.__N}))return!W||W.call(this,q,H,Y);var K=X.__c.props!==q;return F.some(function(w){if(w.__N){var P=w.__[0];w.__=w.__N,w.__N=void 0,P!==w.__[0]&&(K=!0)}}),W&&W.call(this,q,H,Y)||K};D0.__f=!0;var{shouldComponentUpdate:W,componentWillUpdate:G}=D0;D0.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)},D0.shouldComponentUpdate=z}return X.__N||X.__}function l(Z,J){var Q=_8(KZ++,3);!E0.__s&&T6(Q.__H,J)&&(Q.__=Z,Q.u=J,D0.__H.__h.push(Q))}function mJ(Z,J){var Q=_8(KZ++,4);!E0.__s&&T6(Q.__H,J)&&(Q.__=Z,Q.u=J,D0.__h.push(Q))}function W0(Z){return fZ=5,_9(function(){return{current:Z}},[])}function _9(Z,J){var Q=_8(KZ++,7);return T6(Q.__H,J)&&(Q.__=Z(),Q.__H=J,Q.__h=Z),Q.__}function n9(Z,J){return fZ=8,_9(function(){return Z},J)}function f2(){for(var Z;Z=xJ.shift();){var J=Z.__H;if(Z.__P&&J)try{J.__h.some(y8),J.__h.some(v6),J.__h=[]}catch(Q){J.__h=[],E0.__e(Q,Z.__v)}}}E0.__b=function(Z){D0=null,VJ&&VJ(Z)},E0.__=function(Z,J){Z&&J.__k&&J.__k.__m&&(Z.__m=J.__k.__m),hJ&&hJ(Z,J)},E0.__r=function(Z){fJ&&fJ(Z),KZ=0;var J=(D0=Z.__c).__H;J&&(_6===D0?(J.__h=[],D0.__h=[],J.__.some(function(Q){Q.__N&&(Q.__=Q.__N),Q.u=Q.__N=void 0})):(J.__h.some(y8),J.__h.some(v6),J.__h=[],KZ=0)),_6=D0},E0.diffed=function(Z){gJ&&gJ(Z);var J=Z.__c;J&&J.__H&&(J.__H.__h.length&&(xJ.push(J)!==1&&SJ===E0.requestAnimationFrame||((SJ=E0.requestAnimationFrame)||g2)(f2)),J.__H.__.some(function(Q){Q.u&&(Q.__H=Q.u),Q.u=void 0})),_6=D0=null},E0.__c=function(Z,J){J.some(function(Q){try{Q.__h.some(y8),Q.__h=Q.__h.filter(function(X){return!X.__||v6(X)})}catch(X){J.some(function(z){z.__h&&(z.__h=[])}),J=[],E0.__e(X,Q.__v)}}),bJ&&bJ(Z,J)},E0.unmount=function(Z){jJ&&jJ(Z);var J,Q=Z.__c;Q&&Q.__H&&(Q.__H.__.some(function(X){try{y8(X)}catch(z){J=z}}),Q.__H=void 0,J&&E0.__e(J,Q.__v))};var DJ=typeof requestAnimationFrame=="function";function g2(Z){var J,Q=function(){clearTimeout(X),DJ&&cancelAnimationFrame(J),setTimeout(Z)},X=setTimeout(Q,35);DJ&&(J=requestAnimationFrame(Q))}function y8(Z){var J=D0,Q=Z.__c;typeof Q=="function"&&(Z.__c=void 0,Q()),D0=J}function v6(Z){var J=D0;Z.__c=Z.__(),D0=J}function T6(Z,J){return!Z||Z.length!==J.length||J.some(function(Q,X){return Q!==Z[X]})}function uJ(Z,J){return typeof J=="function"?J(Z):J}class l9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="BusError"}}class EJ{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 l9(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 l9("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 l9(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 l9("replica stopped",void 0))),this.localPending.clear()}}function v8(){let Z=globalThis;return Z.__mhReplicaBus??=new EJ}function b2(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 pJ(){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 b2(Z,J)}var t9="mh-synced",bZ="mh_replica",gZ="mh_replica_hydrated",iJ="mh_origin_mode";class T9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="ReplicaError"}}var R9=!1,v9={state:"booting",paired:!1,node:null},T8=new Set;function jZ(){return v9}function F9(Z){return T8.add(Z),()=>T8.delete(Z)}function R6(Z){try{return localStorage.getItem(Z)==="1"}catch{return!1}}function r9(Z,J){try{J?localStorage.setItem(Z,"1"):localStorage.removeItem(Z)}catch{}}function H9(){return R6(bZ)}function e0(){return H9()&&R6(gZ)&&R9&&v9.state!=="error"}var FZ=(()=>{try{let Z=localStorage.getItem(iJ);return Z==="server"||Z==="none"?Z:null}catch{return null}})();function U9(){return FZ==="none"}function V9(){let Z=U9();return{surface:typeof window<"u"&&window.metahubDesktop?"desktop":"web",dataHome:Z?"local":"server",hold:Z||H9()?"replica":"window"}}async function k6(){if(FZ)return FZ;let Z=await pJ();if(Z==="unknown")return"server";FZ=Z;try{localStorage.setItem(iJ,FZ)}catch{}return FZ}function dJ(Z){if(Z.event==="status"){if(v9=Z.status,v9.lastSync?.ok&&!R6(gZ))r9(gZ,!0),navigator.storage?.persist?.().catch(()=>{});for(let J of T8)J(v9);return}if(Z.event==="synced"){if(document.dispatchEvent(new CustomEvent(t9,{detail:Z})),Z.datasets.some((J)=>J==="databases"||J==="documents"))document.dispatchEvent(new CustomEvent(L9))}}function hZ(){if(R9||typeof Worker>"u")return;R9=!0;let Z=v8();Z.onEvent(dJ),Z.start(),Z.call("status").then((J)=>dJ({event:"status",status:J})).catch(()=>{}),j2(),window.addEventListener("online",o9),document.addEventListener("visibilitychange",o9)}function f0(Z,...J){if(!R9)return Promise.reject(new T9("replica not running",void 0));return v8().call(Z,...J).catch((Q)=>{throw Q instanceof l9?new T9(Q.message,Q.code):Q})}function o9(){if(R9)f0("sync").catch(()=>{})}function aJ(){if(!R9)return Promise.reject(new T9("replica not running",void 0));return f0("sync")}function I6(Z=30000){if(v9.state==="ready")return Promise.resolve();return new Promise((J,Q)=>{let X=setTimeout(()=>{z(),Q(new T9("本地副本启动超时",void 0))},Z),z=F9((W)=>{if(W.state==="ready")clearTimeout(X),z(),J();else if(W.state==="error")clearTimeout(X),z(),Q(new T9(W.error??"本地副本启动失败",void 0))})})}async function nJ(){if(hZ(),await I6(),!v9.paired){let Z=await DZ("/api/pair/new",{method:"POST"});if(!Z.ok)throw new T9(`无法获取配对码: ${Z.status}`,void 0);let{code:J}=await Z.json();await f0("pair",J)}r9(bZ,!0),R8(),o9()}async function lJ(Z,J){hZ(),await I6();let Q=await f0("addStorageReplica",Z,J);return r9(bZ,!0),R8(),o9(),Q}async function rJ(){r9(bZ,!1),r9(gZ,!1);try{if(R9)await f0("unpair")}catch{}await S6()}async function oJ(){r9(bZ,!1),r9(gZ,!1);try{if(R9)await f0("unpair").catch(()=>{}),await f0("reset")}finally{v8().stopWorker(),S6(),R9=!1,v9={state:"booting",paired:!1,node:null};for(let Z of T8)Z(v9)}}function tJ(){if(H9())hZ(),I6().then(()=>o9()).catch(()=>{})}function j2(){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}f0(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 cJ=!1;async function S6(){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 R8(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return;if(typeof window>"u"||!window.isSecureContext)return;if(V9().surface==="desktop"||V9().hold!=="replica"){S6();return}if(navigator.serviceWorker.register("/sw.js").catch((Q)=>{console.warn("[webui] service worker registration failed —",Q)}),cJ)return;cJ=!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 h2={invalid_input:400,not_found:404,ambiguous:400,stale:409,conflict:409,auth:401,network:502};function D2(Z){return/^(create|update|delete|move|duplicate|revert)(Database|Document)/.test(Z)}async function M0(Z,...J){try{let Q=await f0(Z,...J);if(D2(Z))document.dispatchEvent(new CustomEvent(L9));return Q}catch(Q){if(Q instanceof T9)throw new f9(Q.message,Q.code,Q.code?h2[Q.code]??400:0);throw Q}}var V6={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)},f6={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 sJ=209715200,x2=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 u2(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 eJ(Z){return(await u2(Z)).slice(0,32)}var E2={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 Z5(Z){let J=Z.toLowerCase().split(";")[0].trim();for(let[Q,X]of Object.entries(E2))if(X===J&&Q!=="jpeg")return Q;return""}var k8=null;function p2(){if(k8)return k8;return k8=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)}),k8}function Z9(Z,J,Q){return p2().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 J5(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 xZ(){return(await Z9("spool","readonly",(J)=>J.getAll())??[]).filter((J)=>!J.durable)}async function $5(Z){await Z9("spool","readwrite",(J)=>J.delete(Z))}var mZ=(Z)=>`/blob/${Z}`;async function d2(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 Q5(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 X5(Z,J,Q){await(await caches.open("mh-blob-v1")).put(mZ(Z),new Response(J,{headers:{"content-type":Q,"cache-control":"public, max-age=31536000, immutable"}})),await d2(Z,J.byteLength,Q),await c2()}async function c2(){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<=x2)break;await Q.delete(mZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),J-=z.size}}async function z5(){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 W5(){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(mZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),Q++,X+=z.size}return{cleared:Q,freedBytes:X}}async function G5(){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(mZ(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 xZ()){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 g6(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(mZ(z)),await Z9("meta","readwrite",(G)=>G.delete(z)),Q++,X+=W.size}return{cleared:Q,freedBytes:X}}async function q5(Z){let{cleared:J,freedBytes:Q}=await g6(Z);return{removed:J,freedBytes:Q}}class f9 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 i2(Z,J){return Z!=="GET"&&(J.startsWith("/api/database")||J.startsWith("/api/document"))}var j6="mh_token",U5="/auth/token";function h6(){try{return localStorage.getItem(j6)}catch{return null}}function L5(Z){try{localStorage.setItem(j6,Z)}catch{}document.cookie=`${j6}=${encodeURIComponent(Z)}; path=/; SameSite=Strict; Max-Age=31536000`}function P5(){return h6()}async function DZ(Z,J={}){let Q=h6(),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(U5,{headers:{authorization:`Bearer ${Q}`}}).catch(()=>null);if(!W?.ok)return z;let G=await W.json().catch(()=>null);if(!G?.token)return z;return L5(G.token),X.set("authorization",`Bearer ${G.token}`),fetch(Z,{...J,headers:X})}function H5(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 a2(Z,J,Q,X){let z=h6(),W=await H5(Z,J,z,Q,X);if(W.status===401&&z){let G=await fetch(U5,{headers:{authorization:`Bearer ${z}`}}).catch(()=>null),q=G?.ok?await G.json().catch(()=>null):null;if(q?.token)L5(q.token),W=await H5(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 H0(Z,J,Q){let X=await DZ(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 f9(z&&z.error||`${X.status} ${X.statusText}`,z?.code,X.status);if(i2(Z,J))document.dispatchEvent(new CustomEvent(L9));return z}var A0=(Z)=>encodeURIComponent(Z),b6=!1;async function B5(){if(b6||U9())return;b6=!0;try{for(let Z of await xZ()){let J;try{J=await DZ("/api/blob",{method:"POST",headers:{"content-type":Z.content_type},body:Z.bytes})}catch{break}if(!J.ok)break;await X5(Z.hash,Z.bytes,Z.content_type).catch(()=>{}),await $5(Z.hash).catch(()=>{})}}finally{b6=!1}}if(typeof window<"u")window.addEventListener("online",()=>void B5());var O5={image:26214400,video:104857600,audio:104857600,file:104857600};function Y5(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 K5(Z,J,Q,X){let z=Y5(J)||Y5(X)||Z5(Q);return`/blob/${Z}${z?"."+z:""}`}async function F5(Z,J){let Q=Z.type||"application/octet-stream",X=Z.name||"";try{let z=await a2("/api/blob",Z,Q,J);B5();let W=z;return{...W,url:K5(W.hash,W.url,Q,X)}}catch(z){if(!(e0()||U9()))throw z;let W=await Z.arrayBuffer(),G=await eJ(W);return await J5(G,W,Q),J?.(W.byteLength,W.byteLength),{hash:G,size:W.byteLength,content_type:Q,url:K5(G,"",Q,X)}}}var n2={listDatabases:()=>H0("GET","/api/databases"),createDatabase:(Z)=>H0("POST","/api/databases",Z),updateDatabase:(Z,J)=>H0("PATCH",`/api/database?id=${A0(Z)}`,J),duplicateDatabase:(Z,J)=>H0("POST",`/api/database/duplicate?id=${A0(Z)}`,J??{}),deleteDatabase:(Z)=>H0("DELETE",`/api/database?id=${A0(Z)}`),listProperties:(Z)=>H0("GET",`/api/properties?db=${A0(Z)}`),createProperty:(Z)=>H0("POST","/api/properties",Z),updateProperty:(Z,J)=>H0("PATCH",`/api/property?id=${A0(Z)}`,J),setColumnWidth:(Z,J)=>H0("PATCH",`/api/property/width?id=${A0(Z)}`,{width:J}),deleteProperty:(Z)=>H0("DELETE",`/api/property?id=${A0(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 H0("GET",`/api/records?${Q}`)},createRecord:(Z,J)=>H0("POST",`/api/records?db=${A0(Z)}`,J),getRecord:(Z)=>H0("GET",`/api/record?id=${A0(Z)}`),updateRecord:(Z,J)=>H0("PATCH",`/api/record?id=${A0(Z)}`,J),moveRecord:(Z,J,Q)=>H0("PATCH",`/api/record/order?id=${A0(Z)}`,{target:J,where:Q}),deleteRecord:(Z)=>H0("DELETE",`/api/record?id=${A0(Z)}`),listDocuments:(Z)=>H0("GET",Z?`/api/documents?db=${A0(Z)}`:"/api/documents"),listDocumentsByParent:(Z)=>H0("GET",`/api/documents?parent=${A0(Z)}`),createDocument:(Z)=>H0("POST","/api/documents",Z),getDocument:(Z)=>H0("GET",`/api/document?id=${A0(Z)}`),updateDocument:(Z,J)=>H0("PATCH",`/api/document?id=${A0(Z)}`,J),moveDocument:(Z,J,Q)=>H0("PATCH",`/api/document/move?id=${A0(Z)}`,{target:J,where:Q}),duplicateDocument:(Z,J)=>H0("POST",`/api/document/duplicate?id=${A0(Z)}`,J??{}),deleteDocument:(Z)=>H0("DELETE",`/api/document?id=${A0(Z)}`),documentHistory:(Z)=>H0("GET",`/api/document/history?id=${A0(Z)}`),documentAt:(Z,J)=>H0("GET",`/api/document/at?id=${A0(Z)}&version=${A0(J)}`),revertDocument:(Z,J)=>H0("POST",`/api/document/revert?id=${A0(Z)}`,J),recordHistory:(Z)=>H0("GET",`/api/record/history?id=${A0(Z)}`),databaseActivity:(Z,J)=>H0("GET",`/api/database/activity?db=${A0(Z)}${J!=null?`&limit=${J}`:""}`),recordAt:(Z,J)=>H0("GET",`/api/record/at?id=${A0(Z)}&version=${A0(J)}`),revertRecord:(Z,J)=>H0("POST",`/api/record/revert?id=${A0(Z)}`,{to:J}),nodes:()=>H0("GET","/api/nodes"),search:(Z,J)=>{let Q=new URLSearchParams({q:Z});if(J!=null)Q.set("limit",String(J));return H0("GET",`/api/search?${Q}`)},listPeers:()=>H0("GET","/api/peers"),newPairingCode:()=>H0("POST","/api/pair/new"),addPeerByPairing:(Z)=>H0("POST","/api/peers/pair",Z),updatePeer:(Z,J)=>H0("PATCH",`/api/peer?url=${A0(Z)}`,J),removePeer:(Z)=>H0("DELETE",`/api/peer?url=${A0(Z)}`),syncPeer:(Z)=>H0("POST",`/api/peer/sync?url=${A0(Z)}`),listServerS3Peers:()=>H0("GET","/api/peers/s3"),addServerS3Peer:(Z)=>H0("POST","/api/peer/s3",Z),serverS3Config:(Z)=>H0("GET",`/api/peer/s3/config?url=${A0(Z)}`),listGrants:()=>H0("GET","/api/grants"),revokeGrant:(Z)=>H0("DELETE",`/api/grant?token=${A0(Z)}`),listSites:()=>H0("GET","/api/sites"),listSiteFiles:(Z)=>H0("GET",`/api/site/files?site=${A0(Z)}`),createSite:(Z)=>H0("POST","/api/sites",Z),updateSite:(Z,J)=>H0("PATCH",`/api/site?id=${A0(Z)}`,J),deleteSite:(Z)=>H0("DELETE",`/api/site?id=${A0(Z)}`),deleteSiteFile:(Z,J)=>H0("DELETE",`/api/site/file?site=${A0(Z)}&path=${A0(J)}`),uploadSiteFile:async(Z,J,Q)=>{let X=await DZ(`/api/site/file?site=${A0(Z)}&path=${A0(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:F5,uploadDocImage:F5,listShareServers:()=>H0("GET","/api/share/servers"),listShareBuckets:()=>H0("GET","/api/share/buckets"),listShares:(Z={})=>H0("GET",`/api/shares${Z.target?`?target=${A0(Z.target)}`:""}`),createShare:(Z)=>H0("POST","/api/share",Z),revokeShare:(Z)=>H0("DELETE",`/api/share?slug=${A0(Z)}`),renewShare:(Z)=>H0("POST",`/api/share/renew?slug=${A0(Z)}`),blobCache:()=>H0("GET","/api/blob-cache"),verifyBlobCache:()=>H0("POST","/api/blob-cache/verify"),clearBlobCache:()=>H0("POST","/api/blob-cache/clear"),setBlobPolicy:(Z)=>H0("POST","/api/blob-policy",Z),pinBlob:(Z,J)=>H0("POST","/api/blob-cache/pin",{hash:Z,pinned:J}),blobs:()=>H0("GET","/api/blobs"),clearBlobs:(Z)=>H0("POST","/api/blobs/clear",{hashes:Z}),deleteBlobs:(Z)=>H0("POST","/api/blobs/delete",{hashes:Z}),version:()=>H0("GET","/api/version")},a=new Proxy(n2,{get(Z,J,Q){if(e0()){if(J in V6)return V6[J];if(U9()&&J in f6)return f6[J]}return Reflect.get(Z,J,Q)}}),UZ={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 LZ extends Error{code;constructor(Z,J){super(J);this.code=Z;this.name="MhError"}}function l2(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 r2(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 D6(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 l2(JSON.stringify(J))}function A5(Z){let J=(Z??"").trim();if(!J)throw new LZ("invalid_input","empty enroll code");let Q=/(?:[#&?]|^)enroll=([^&\s]+)/.exec(J),X=Q?Q[1]:J,z;try{z=JSON.parse(r2(X))}catch{throw new LZ("invalid_input","invalid enroll code (could not decode)")}if(!z||typeof z!=="object")throw new LZ("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 LZ("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 o2=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:--o2,__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 k0.vnode&&k0.vnode(Y),Y}var x6="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z",m6="m3 7.5 9 5.5 9-5.5M12 22v-9";var t2={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 f({name:Z,cls:J="ico"}){return $("svg",{class:J,viewBox:"0 0 24 24",dangerouslySetInnerHTML:{__html:t2[Z]??""}},void 0,!1,void 0,this)}var z9={text:"text",number:"hash",select:"select",multi_select:"multi",checkbox:"checkbox",date:"calendar",url:"link",relation:"relation"};function P9(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 A9(){document.querySelectorAll(".drop-into,.drop-before,.drop-after").forEach((Z)=>Z.classList.remove("drop-into","drop-before","drop-after"))}function I8(Z,J,Q){A9();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 u6(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 uZ(Z,J,Q){if(!Z)return;Z.style.transform=`translate3d(${Math.round(J)}px, ${Math.round(Q)}px, 0)`}function N5(Z,J){let Q=J.source.getBoundingClientRect(),X=Z.clientX-Q.left,z=Z.clientY-Q.top,W=null,G=null,q="before";P9(Z,{onStart:()=>{W=u6(J.ghostCls,Q,J.ghostText),J.source.classList.add("drag-source"),document.body.classList.add("table-dragging"),J.onActivate?.()},onMove:(H)=>{uZ(W,H.clientX-X,H.clientY-z);let Y=document.elementFromPoint(H.clientX,H.clientY)?.closest?.(J.targetSelector);if(!Y||J.isSelf(Y)){A9(),G=null;return}G=Y,q=I8(Y,H,J.axis)},onEnd:(H,Y)=>{if(W?.remove(),J.source.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),A9(),Y&&G)J.onDrop(G,q);J.onFinish?.(Y)}})}function S8(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");P9(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 f8(Z){let J=Z,Q=new Set;return{get:()=>J,set:(X)=>{J=X,Q.forEach((z)=>z(X))},use(){let[X,z]=k(J);return l(()=>{return Q.add(z),()=>void Q.delete(z)},[]),X}}}var EZ=f8([]),s2=0;function s(Z){let J=++s2;EZ.set([...EZ.get(),{id:J,msg:Z}]),setTimeout(()=>EZ.set(EZ.get().filter((Q)=>Q.id!==J)),2600)}var s9=f8([]),e2=0;function E6(Z,J){s9.set(s9.get().map((Q)=>Q.id===Z?{...Q,...J}:Q))}function p6(Z){s9.set(s9.get().filter((J)=>J.id!==Z))}function M5(Z){let J=++e2;return s9.set([...s9.get(),{id:J,name:Z,loaded:0,total:0}]),J}function C5(Z,J,Q){E6(Z,{loaded:J,total:Q})}function d6(Z,J,Q){if(J)E6(Z,{loaded:1,total:1}),setTimeout(()=>p6(Z),900);else E6(Z,{failed:!0,retry:Q})}function ZQ(){let Z=s9.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?.(),p6(J.id)},children:"重试"},void 0,!1,void 0,this),$("button",{class:"up-x",title:"移除",onClick:()=>p6(J.id),children:$(f,{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 c6=f8(null);function y0(Z,J,Q={}){c6.set({render:J,anchor:Z,minWidth:Q.minWidth})}function w5(){c6.set(null)}function JQ(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 $Q(){let Z=c6.use(),J=W0(null),[Q,X]=k(null),z=matchMedia(V8).matches;if(mJ(()=>{if(!Z||!J.current||z)return X(null);let{x:W,y:G}=JQ(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&&w5(),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(w5)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function j0({children:Z}){return $("div",{class:"lbl",children:Z},void 0,!1,void 0,this)}function S0(){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:$(f,{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:$(f,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function e9(Z,J=240){let[Q,X]=k(!1);return l(()=>{let W=requestAnimationFrame(()=>X(!0));return()=>cancelAnimationFrame(W)},[]),{open:Q,close:()=>{X(!1),setTimeout(Z,J)}}}var i6=f8(null);function W9(Z){i6.set(Z)}function c0(){i6.set(null)}function q9({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 QQ(){let Z=i6.use();return l(()=>{if(!Z)return;let J=(Q)=>Q.key==="Escape"&&c0();return addEventListener("keydown",J),()=>removeEventListener("keydown",J)},[Z]),$("div",{class:"modal-scrim"+(Z?" open":""),onMouseDown:(J)=>J.target===J.currentTarget&&c0(),children:Z},void 0,!1,void 0,this)}function R0(Z){return new Promise((J)=>{let Q=(X)=>{c0(),J(X)};W9($(q9,{title:Z.title,footer:$(o,{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 Y9(Z){return new Promise((J)=>{let Q=Z.value??"",X=(z)=>{c0(),J(z)};W9($(q9,{title:Z.title,footer:$(o,{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=EZ.use();return $(o,{children:[$($Q,{},void 0,!1,void 0,this),$(QQ,{},void 0,!1,void 0,this),$("div",{class:"toasts",children:Z.map((J)=>$("div",{class:"toast",children:[$(f,{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),$(ZQ,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var a6=null,XQ=/mac/i.test(navigator.userAgentData?.platform??navigator.platform);function _5(Z){let{view:J,navigate:Q}=Z,[X,z]=k(new Set),[W,G]=k(""),[q,H]=k(!1),Y=W0(null),[F,K]=k(null),w=GQ(Z.onResize);l(()=>{a.version().then((S)=>K(S.version)).catch(()=>K(null))},[]),l(()=>{if(q)Y.current?.focus()},[q]);let P=(S)=>{let O=new Set(X);O.has(S)?O.delete(S):O.add(S),z(O)},A=(S)=>S().catch((O)=>Z.onError(String(O.message))),_=(S)=>{if("id"in J&&J.id===S)Q({kind:"empty"},{replace:!0})},V=(S)=>A(async()=>{let O=await a.createDocument({title:"",...S?{parent_id:S}:{}});if(S)X.add(S);Q({kind:"doc",id:O.id})}),D=(S,O,N)=>A(async()=>{if(S===O.id)return;if(WQ(Z.docs,S,O.id))return;if(await a.moveDocument(S,O.id,N),N==="into")X.add(O.id)}),v=(S,O)=>{S.stopPropagation(),y0(S,(N)=>$(o,{children:[$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{N(),navigator.clipboard?.writeText(O.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{N();let L=await Y9({title:"重命名数据库",value:O.name});if(L&&L!==O.name)A(async()=>{await a.updateDatabase(O.id,{name:L})})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(N(),await R0({title:"删除数据库?",message:`「${O.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))A(async()=>{await a.deleteDatabase(O.id),_(O.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},R=(S,O)=>{S.stopPropagation();let N=Z.docs.filter((L)=>L.parent_id===O.id).length;y0(S,(L)=>$(o,{children:[$(z0,{icon:"plus",label:"新建子页",onClick:()=>{L(),V(O.id)}},void 0,!1,void 0,this),$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{L(),navigator.clipboard?.writeText(O.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{L();let B=await Y9({title:"重命名文档",value:O.title});if(B)A(async()=>{await a.updateDocument(O.id,{title:B})})}},void 0,!1,void 0,this),O.parent_id&&$(z0,{icon:"cornerUpRight",label:"移到顶层",onClick:()=>{L(),A(async()=>{await a.updateDocument(O.id,{parent_id:null})})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除",danger:!0,onClick:async()=>{if(L(),await R0({title:"删除文档?",message:N?`「${O.title||"无标题"}」及其 ${N} 个子页将被删除。`:`「${O.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))A(async()=>{await T5(Z.docs,O.id),_(O.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},x=(S,O=0)=>{return Z.docs.filter((L)=>L.parent_id===S).map((L)=>{let B=Z.docs.filter((y)=>y.parent_id===L.id),M=B.length>0&&X.has(L.id);return $("div",{class:O?"navchildren":"",children:[$("div",{class:"navitem"+(J.kind==="doc"&&J.id===L.id?" active":""),draggable:!0,onClick:()=>Q({kind:"doc",id:L.id}),onDragStart:(y)=>{y.stopPropagation(),a6=L.id,y.currentTarget.classList.add("dragging")},onDragEnd:(y)=>{y.currentTarget.classList.remove("dragging"),n6()},onDragOver:(y)=>{y.preventDefault(),y.stopPropagation(),zQ(y.currentTarget,y)},onDrop:(y)=>{y.preventDefault(),y.stopPropagation();let E=v5(y.currentTarget,y),c=a6;if(a6=null,n6(),c)D(c,L,E)},children:[$("span",{class:"tw"+(M?" open":""),onClick:(y)=>{if(y.stopPropagation(),B.length)P(L.id)},children:B.length>0&&$(f,{name:"chevron",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"emoji",children:$(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"label",children:L.title||"无标题"},void 0,!1,void 0,this),$("span",{class:"acts",children:[$("button",{title:"新建子页",onClick:(y)=>{y.stopPropagation(),V(L.id)},children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"更多",onClick:(y)=>R(y,L),children:$(f,{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),M&&x(L.id,O+1)]},L.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:$(f,{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((S)=>!S),children:$(f,{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:$(f,{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:$(f,{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:[$(f,{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:$(f,{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:(S)=>S.currentTarget.querySelector("input")?.focus(),children:[$(f,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{ref:Y,placeholder:"搜索…",value:W,onInput:(S)=>G(S.target.value),onKeyDown:(S)=>{if(S.key==="Enter"&&W.trim())Q({kind:"search",q:W.trim()},{replace:J.kind==="search"})}},void 0,!1,void 0,this),$("kbd",{children:XQ?"⌘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:()=>qQ((S)=>Q({kind:"db",id:S}),Z.onError),children:$(f,{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((S)=>$("div",{class:"navitem"+(J.kind==="db"&&J.id===S.id?" active":""),onClick:()=>Q({kind:"db",id:S.id}),children:[$("span",{class:"emoji",children:S.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{class:"label",children:S.name},void 0,!1,void 0,this),$("span",{class:"acts",children:$("button",{title:"更多",onClick:(O)=>v(O,S),children:$(f,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},S.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:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x(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:[$(f,{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:$(f,{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:$(f,{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:w},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var n6=A9;function v5(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 zQ(Z,J){n6(),Z.classList.add("drop-"+v5(Z,J))}function WQ(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 T5(Z,J){for(let Q of Z.filter((X)=>X.parent_id===J))await T5(Z,Q.id);await a.deleteDocument(J)}function GQ(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 y5={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 qQ(Z,J){W9($(HQ,{onOpenDb:Z,onError:J},void 0,!1,void 0,this))}function HQ(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]=k(""),[W,G]=k(J[0]),[q,H]=k("blank"),Y=W0(!1),F=async()=>{if(Y.current)return;Y.current=!0;try{let K=await a.createDatabase({name:X.trim()||"未命名数据库",icon:W});for(let w of y5[q]??y5.blank)await a.createProperty({db:K.id,name:w.name,type:w.type,config:w.config});c0(),Z.onOpenDb(K.id),s(`已创建数据库「${K.name}」`)}catch(K){Z.onError(String(K.message))}finally{Y.current=!1}};return $(q9,{title:"新建数据库",sub:"创建一个带属性列的结构化数据表。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,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,w,P])=>$("button",{class:K===q?"sel":"",onClick:()=>H(K),children:[$("div",{class:"tt",children:w},void 0,!1,void 0,this),$("div",{class:"td",children:P},void 0,!1,void 0,this)]},K,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function l6(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 r6(Z,J){if(Z.routeOp.via==="bucket")return Z.routeOp.url;if(Z.id.startsWith("server:"))return Z.id.slice(7);return J}var PZ="mh-shares-changed";function b8(){document.dispatchEvent(new Event(PZ))}function BZ(){let[Z,J]=k(()=>new Set);return l(()=>{let Q=!0,X=()=>a.listShares().then((z)=>Q&&J(new Set(z.map((W)=>W.target_id)))).catch(()=>{return});return X(),document.addEventListener(PZ,X),()=>{Q=!1,document.removeEventListener(PZ,X)}},[]),Z}function o6(Z,J,Q){return{copyShare:async(G)=>{if(G.url){j8(G.url),J("链接已复制");return}try{let q=await a.renewShare(G.slug);j8(q.url),J("已重新生成并复制链接"),b8(),Z()}catch(q){Q(q.message)}},revoke:async(G)=>{if(!confirm(`撤销这个分享?(${G.source})`))return;try{await a.revokeShare(G.slug),J("已撤销"),b8(),Z()}catch(q){Q(q.message)}},renew:async(G)=>{try{let q=await a.renewShare(G.slug);j8(q.url),J("已续期 7 天,新链接已复制"),b8(),Z()}catch(q){Q(q.message)}}}}function N9(Z){UQ();let J=document.createElement("div");document.body.appendChild(J),a9($(KQ,{target:Z,onClose:()=>{a9(null,J),J.remove()}},void 0,!1,void 0,this),J)}var R5=[{label:"永不过期",ms:null},{label:"1 小时",ms:3600000},{label:"24 小时",ms:86400000},{label:"7 天",ms:604800000},{label:"30 天",ms:2592000000}];function YQ(){let[Z,J]=k(()=>l6([],[],location.origin));return l(()=>{let Q=!0,X=()=>Promise.all([a.listShareServers().catch(()=>[]),a.listShareBuckets().catch(()=>[])]).then(([W,G])=>{if(Q)J(l6(W,G,location.origin))});X();let z=F9(()=>X());return()=>{Q=!1,z()}},[]),Z}function j8(Z){navigator.clipboard?.writeText(Z).catch(()=>{return})}function KQ({target:Z,onClose:J}){let Q=YQ(),[X,z]=k("server"),[W,G]=k("view"),[q,H]=k(""),[Y,F]=k(0),[K,w]=k(!1),[P,A]=k(""),[_,V]=k([]),[D,v]=k("");l(()=>{R()},[]);function R(){a.listShares({target:Z.ref}).then(V).catch(()=>{return})}let x=Q.find((M)=>M.id===X)??Q[0],S=x.kind==="bucket",O=Z.kind==="site";l(()=>{if(S&&W==="edit")G("view")},[S]);let N=S?R5.filter((M)=>M.ms==null||M.ms<=604800000):R5,L=Math.min(Y,N.length-1);async function B(){if(S&&O){A("站点不支持对象存储分享,请选服务器。");return}w(!0),A("");try{let M={kind:Z.kind,ref:Z.ref,transport:S?"s3":"server",permission:W,password:q||null,expiresMs:N[L]?.ms??null,server:S?null:r6(x,location.origin),bucketUrl:S?r6(x,location.origin):null},y=await a.createShare(M);j8(y.url),v(`已通过「${y.source}」创建,链接已复制`),H(""),b8(),R()}catch(M){A(M.message||"创建失败")}finally{w(!1)}}return $("div",{class:"mhshare-overlay",onClick:(M)=>M.target===M.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:x.id,onChange:(M)=>z(M.currentTarget.value),children:Q.map((M)=>$("option",{value:M.id,disabled:M.kind==="bucket"&&O,children:[M.label," — ",M.subtitle,M.kind==="bucket"&&O?"(站点不支持)":""]},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:S,onChange:(M)=>G(M.currentTarget.value),children:[$("option",{value:"view",children:"只读"},void 0,!1,void 0,this),$("option",{value:"edit",children:["可编辑",S?"(仅服务器)":""]},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:(M)=>H(M.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(L),onChange:(M)=>F(Number(M.currentTarget.value)),children:N.map((M,y)=>$("option",{value:String(y),children:M.label},void 0,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P&&$("p",{class:"mhshare-err",children:P},void 0,!1,void 0,this),D&&$("p",{class:"mhshare-ok",children:D},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:B,children:K?"创建中…":"创建并复制链接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-section",children:["已有分享(",_.length,")"]},void 0,!0,void 0,this),$(FQ,{shares:_,reload:R,onFlash:v,onError:A,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 FQ({shares:Z,reload:J,onFlash:Q,onError:X,empty:z}){let{copyShare:W,revoke:G,renew:q}=o6(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 k5=!1;function UQ(){if(k5)return;k5=!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 I5=[4,28,45,130,165,200,220,255,290,330];function t6(Z){let J=0;for(let Q=0;Q<Z.length;Q++)J=J*31+Z.charCodeAt(Q)>>>0;return`hsl(${I5[J%I5.length]} 65% 45%)`}function ZZ({text:Z}){return $("span",{class:"chip",style:{["--c"]:t6(Z)},children:Z},void 0,!1,void 0,this)}function OZ({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 $(ZZ,{text:String(J)},void 0,!1,void 0,this);if(Z.type==="multi_select"||Z.type==="relation")return $(o,{children:J.map((Q)=>$(ZZ,{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 S5(Z,J){if(Z==="relation")return J.split(",").map((Q)=>Q.trim()).filter(Boolean);return J}function V5(Z,J){if(J==null)return"";if(Array.isArray(J))return J.join(", ");return String(J)}var LQ={user:"",repair:"修复",revert:"回滚"};function e6(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 Z1(){let[Z,J]=k([]);return l(()=>{a.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 J1({kind:Z}){if(Z==="user")return null;return $("span",{class:"hist-kind "+Z,children:LQ[Z]},void 0,!1,void 0,this)}function PQ(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 BQ=(Z)=>Z?Z.split(/\n{2,}/):[],f5=(Z)=>Z?Z.split(`
|
|
36
|
+
`).filter((J)=>J.trim()!==""):[];function OQ(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 AQ(Z,J){let Q=f5(Z),X=f5(J),z=PQ(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(OQ(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 NQ(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 g5({docId:Z,onClose:J,onReverted:Q}){let{open:X,close:z}=e9(J),[W,G]=k(null),[q,H]=k(null),[Y,F]=k(null),[K,w]=k(null),[P,A]=k(!1),[_,V]=k(!1),[D,v]=k(!1),R=Z1(),x=()=>Promise.all([a.documentHistory(Z),a.getDocument(Z)]).then(([L,B])=>{G(L),H(B),F((M)=>M??L[0]?.version??null)}).catch((L)=>s(String(L.message)));l(()=>{x()},[Z]),l(()=>{if(!Y)return w(null);a.documentAt(Z,Y).then(w).catch(()=>w(null))},[Z,Y]);let S=_9(()=>(W??[]).filter((L)=>P||L.kind!=="repair"),[W,P]),O=Y!=null&&W?.[0]?.version===Y,N=async()=>{if(!Y||!K)return;if(!await R0({title:"恢复到此版本?",message:`标题和正文将恢复到 ${new Date(K.version?wQ(K.version):Date.now()).toLocaleString()} 的状态。此操作会作为一次新修订记录,任何版本都仍可从历史找回。`,confirmLabel:"恢复"}))return;v(!0);try{await a.revertDocument(Z,{to:Y,if_match:q?.version}),s("已恢复"),Q(),z()}catch(B){if(B instanceof f9&&B.code==="stale")s("文档刚被其他端修改,已刷新,请重试"),await x();else s(String(B.message))}finally{v(!1)}};return $(o,{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:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(f,{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:_,onInput:()=>V(!_)},void 0,!1,void 0,this),"对比当前"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:P,onInput:()=>A(!P)},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),S.map((L)=>$("div",{class:"hist-item"+(Y===L.version?" sel":""),onClick:()=>F(L.version),children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(L.at).toLocaleString(),children:e6(L.at)},void 0,!1,void 0,this),$(J1,{kind:L.kind},void 0,!1,void 0,this),W?.[0]?.version===L.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:R(L.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:NQ(L)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},L.version,!0,void 0,this))]},void 0,!0,void 0,this),$("div",{class:"hist-preview",children:[K&&$(o,{children:[$("div",{class:"hist-doc-title",children:K.title||"无标题"},void 0,!1,void 0,this),_&&!O?AQ(q?.body??"",K.body).map((L,B)=>$("div",{class:"hist-line "+L.kind,children:L.seg?$(o,{children:[L.seg[0],$("span",{class:"seg",children:L.seg[1]},void 0,!1,void 0,this),L.seg[2]]},void 0,!0,void 0,this):L.text},B,!1,void 0,this)):BQ(K.body).map((L,B)=>$("div",{class:"hist-block",children:L},B,!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||O||D,onClick:N,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 wQ(Z){return Number(Z.slice(0,15))||Date.now()}function MQ(Z){if(Z.deleted)return"已删除";if(Z.created)return"创建";if(Z.moved&&!Z.diffs.length)return"调整排序";return""}var s6=3;function b5({dbId:Z,onClose:J}){let{open:Q,close:X}=e9(J),[z,W]=k(null),[G,q]=k(new Map),[H,Y]=k(!1),[F,K]=k(new Set),w=Z1();l(()=>{Promise.all([a.databaseActivity(Z),a.listProperties(Z)]).then(([A,_])=>{W(A),q(new Map(_.map((V)=>[V.id,V.name])))}).catch((A)=>s(String(A.message)))},[Z]);let P=(z??[]).filter((A)=>H||A.kind!=="repair");return $(o,{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:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(f,{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&&P.length===0&&$("div",{class:"muted pad",children:"暂无动态。"},void 0,!1,void 0,this),P.map((A)=>{let _=A.record_id+A.version,V=F.has(_),D=V?A.diffs:A.diffs.slice(0,s6),v=MQ(A);return $("div",{class:"hist-item static",children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(A.at).toLocaleString(),children:e6(A.at)},void 0,!1,void 0,this),$(J1,{kind:A.kind},void 0,!1,void 0,this),$("span",{class:"hist-recname",children:A.record_title||A.record_id},void 0,!1,void 0,this),v&&$("span",{class:"hist-status",children:v},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:$("span",{class:"who",children:w(A.node_id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),D.length>0&&$("div",{class:"hist-fields",children:[D.map((R)=>$("div",{class:"hist-field",children:[$("span",{class:"fname",children:G.get(R.prop)??"(已删字段)"},void 0,!1,void 0,this),!A.created&&$("span",{class:"old",title:AZ(R.before),children:AZ(R.before)},void 0,!1,void 0,this),!A.created&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",title:AZ(R.after),children:AZ(R.after)},void 0,!1,void 0,this)]},R.prop,!0,void 0,this)),A.diffs.length>s6&&!V&&$("button",{class:"hist-more",onClick:()=>K(new Set(F).add(_)),children:["…还有 ",A.diffs.length-s6," 项"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},_,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function CQ(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 AZ(Z){if(Z===void 0)return"(空)";if(Z===null)return"(空)";if(typeof Z==="string")return Z===""?"(空)":Z;return JSON.stringify(Z)}function j5({rec:Z,props:J,onReverted:Q}){let[X,z]=k(null),[W,G]=k(null),[q,H]=k(!1),Y=W0(new Map),[,F]=k(0),K=Z1(),w=_9(()=>new Map(J.map((v)=>[v.id,v.name])),[J]),P=()=>a.recordHistory(Z.id).then(z).catch((v)=>s(String(v.message)));l(()=>{P()},[Z.id]);let A=async(v)=>{let R=Y.current.get(v);if(R)return R;let x=await a.recordAt(Z.id,v);return Y.current.set(v,x),F((S)=>S+1),x},_=(v,R)=>{if(W===v.version)return G(null);if(G(v.version),A(v.version),R)A(R.version)},V=async(v)=>{if(!await R0({title:"恢复到此版本?",message:"记录字段将恢复到该修订时的值。此操作会作为一次新修订记录。",confirmLabel:"恢复"}))return;try{await a.revertRecord(Z.id,v.version),s("已恢复"),Y.current.clear(),Q(),await P()}catch(x){s(String(x.message))}},D=(X??[]).filter((v)=>q||v.kind!=="repair");return $("div",{class:"hist-rec",children:[$("div",{class:"hist-rec-head",children:[$("span",{class:"hist-title",children:[$(f,{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&&D.length===0&&$("div",{class:"muted pad",children:"暂无历史。"},void 0,!1,void 0,this),D.map((v,R)=>{let x=D[R+1],S=Y.current.get(v.version),O=x?Y.current.get(x.version):void 0,N=v.created&&S?Object.keys(S.data):v.fields;return $("div",{class:"hist-item static",children:[$("div",{class:"row1",onClick:()=>_(v,x),children:[$("span",{class:"when",title:new Date(v.at).toLocaleString(),children:e6(v.at)},void 0,!1,void 0,this),$(J1,{kind:v.kind},void 0,!1,void 0,this),R===0&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$(f,{name:W===v.version?"chevronDown":"chevron",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",onClick:()=>_(v,x),children:[$("span",{class:"who",children:K(v.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:CQ(v,w)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W===v.version&&$("div",{class:"hist-fields",children:[!S&&$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this),S&&N.map((L)=>{let B=O?O.data[L]:void 0,M=S.data[L];return $("div",{class:"hist-field",children:[$("span",{class:"fname",children:w.get(L)??"(已删字段)"},void 0,!1,void 0,this),x&&$("span",{class:"old",children:AZ(B)},void 0,!1,void 0,this),x&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",children:AZ(M)},void 0,!1,void 0,this)]},L,!0,void 0,this)}),S&&R!==0&&$("button",{class:"btn btn-secondary hist-restore",onClick:()=>V(v),children:"恢复到此版本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},v.version,!0,void 0,this)})]},void 0,!0,void 0,this)}var JZ="\x00__ungrouped__";function h5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z,onMove:W}){let G=Z.filter((v)=>v.type==="select"||v.type==="multi_select"),[q,H]=k(null),Y=Z.find((v)=>v.id===q)??G.find((v)=>v.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",w=Y.config?.options??[],P=(v)=>{let R=v.cells[Y.id];if(K){let S=(Array.isArray(R)?R:[]).map(String).filter((O)=>w.includes(O));return S.length?S:[JZ]}let x=R==null?"":String(R);return x&&w.includes(x)?[x]:[JZ]},A=new Map;for(let v of w)A.set(v,[]);A.set(JZ,[]);for(let v of J)for(let R of P(v))A.get(R)?.push(v);let _=[...w];if((A.get(JZ)?.length??0)>0)_.push(JZ);let V=(v,R)=>{if(v.button!==0)return;if(v.target.closest("button,a,input"))return;let x=v.currentTarget.closest(".kcard");if(!x)return;let S=x.getBoundingClientRect();v.preventDefault();let O=v.clientX-S.left,N=v.clientY-S.top,L=null;P9(v,{onStart:()=>{L=x.cloneNode(!0),L.classList.add("dragging-ghost"),L.style.width=`${S.width}px`,document.body.appendChild(L),x.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(B)=>{uZ(L,B.clientX-O,B.clientY-N),A9(),document.elementFromPoint(B.clientX,B.clientY)?.closest?.(".board-col")?.classList.add("drop-into")},onEnd:(B,M)=>{if(L?.remove(),x.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),A9(),!M){z(R.id);return}let y=document.elementFromPoint(B.clientX,B.clientY)?.closest?.(".board-col");if(!y)return;if(!K){let r=y.dataset.colKey,$0=String(R.cells[Y.id]??""),m=r===JZ?null:r;if(String(m??"")!==$0)Q(R,Y,m)}let E=document.elementFromPoint(B.clientX,B.clientY)?.closest?.(".kcard"),c=E?.dataset.recId;if(c&&c!==R.id){let r=E.getBoundingClientRect();W(R.id,c,B.clientY<r.top+r.height/2?"before":"after")}}})};return $("div",{class:"board-wrap",children:[$("div",{class:"board-bar",children:[$("button",{class:"tbtn",onClick:(v)=>y0(v,(R)=>$(o,{children:[$(j0,{children:"按属性分组"},void 0,!1,void 0,this),G.map((x)=>$(z0,{icon:z9[x.type],label:x.name,onClick:()=>{H(x.id),R()}},x.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(f,{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:_.map((v)=>{let R=A.get(v)??[],x=v===JZ;return $("div",{class:"board-col","data-col-key":v,children:[$("div",{class:"board-col-head",children:[x?$("span",{class:"muted",style:{fontWeight:600},children:"未分组"},void 0,!1,void 0,this):$(ZZ,{text:v},void 0,!1,void 0,this),$("span",{class:"board-count",children:R.length},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),$("button",{class:"iconbtn sm",title:"新建记录",onClick:()=>X(x?{}:{[Y.id]:v}),children:$(f,{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:[R.map((S)=>$("div",{class:"kcard","data-rec-id":S.id,onPointerDown:(O)=>V(O,S),children:[$("div",{class:"kcard-title",children:yQ(S,F)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z.filter((O)=>O!==F&&O.id!==Y.id&&!_Q(S.cells[O.id])).slice(0,4).map((O)=>$("div",{class:"kcard-field",children:[$(f,{name:z9[O.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$(OZ,{prop:O,val:S.cells[O.id]},void 0,!1,void 0,this)]},O.id,!0,void 0,this))]},S.id,!0,void 0,this)),$("button",{class:"board-add",onClick:()=>X(x?{}:{[Y.id]:v}),children:[$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},v,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function yQ(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function _Q(Z){return Z==null||Z===""||Array.isArray(Z)&&Z.length===0}function pZ(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 B9(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 o0(Z,J){return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()+J)}function $1(Z,J){return Z.getFullYear()===J.getFullYear()&&Z.getMonth()===J.getMonth()&&Z.getDate()===J.getDate()}function vQ(Z,J){return new Date(Z,J,1)}function TQ(Z,J){return new Date(Z,J+1,0)}function NZ(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 h8(){let Z=new Date;return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate())}function RQ(Z){let J=(Z.getDay()+6)%7;return o0(Z,-J)}function D5(Z,J){let Q=RQ(vQ(Z,J)),X=TQ(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(o0(W,q));if(z.push(G),W=o0(W,7),z.length>=6)break}return z}var kQ=["一","二","三","四","五","六","日"],Q1=3;function x5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z}){let W=Z.filter((O)=>O.type==="date"),[G,q]=k(null),H=Z.find((O)=>O.id===G)??W[0]??null,Y=h8(),[F,K]=k({y:Y.getFullYear(),m:Y.getMonth()}),w=W0(null);if(!H)return $("div",{class:"view-placeholder",children:"日历视图需要一个「日期」属性。请在表格视图中添加一个日期列后再切换到日历。"},void 0,!1,void 0,this);let P=Z[0],A=D5(F.y,F.m),_=J.map((O)=>({rec:O,date:pZ(O.cells[H.id])})).filter((O)=>O.date!=null),V=(O)=>_.filter((N)=>$1(N.date,O)),D=(O)=>{let N=F.m+O;K({y:F.y+Math.floor(N/12),m:(N%12+12)%12})},v=()=>K({y:Y.getFullYear(),m:Y.getMonth()}),R=()=>document.querySelectorAll(".cal-day.drop-into").forEach((O)=>O.classList.remove("drop-into")),x=(O,N)=>{if(O.button!==0)return;O.preventDefault(),O.stopPropagation(),w.current={id:N.id,pointerId:O.pointerId,startX:O.clientX,startY:O.clientY,active:!1,ghost:null};let L=(M)=>{let y=w.current;if(!y||y.pointerId!==M.pointerId)return;if(!y.active){if(Math.hypot(M.clientX-y.startX,M.clientY-y.startY)<4)return;y.active=!0,y.ghost=IQ(D8(N,P)),document.body.classList.add("table-dragging")}if(M.preventDefault(),y.ghost)y.ghost.style.transform=`translate3d(${Math.round(M.clientX+8)}px, ${Math.round(M.clientY+8)}px, 0)`;R(),document.elementFromPoint(M.clientX,M.clientY)?.closest?.(".cal-day")?.classList.add("drop-into")},B=(M)=>{let y=w.current;if(!y||y.pointerId!==M.pointerId)return;if(removeEventListener("pointermove",L),removeEventListener("pointerup",B),removeEventListener("pointercancel",B),y.ghost?.remove(),document.body.classList.remove("table-dragging"),R(),w.current=null,!y.active){z(N.id);return}let c=document.elementFromPoint(M.clientX,M.clientY)?.closest?.(".cal-day")?.dataset.iso;if(c&&c!==String(N.cells[H.id]??""))Q(N,H,c)};addEventListener("pointermove",L,{passive:!1}),addEventListener("pointerup",B),addEventListener("pointercancel",B)},S=(O)=>y0(O,(N)=>$(o,{children:[$(j0,{children:"按日期属性"},void 0,!1,void 0,this),W.map((L)=>$(z0,{icon:z9[L.type],label:L.name,onClick:()=>{q(L.id),N()}},L.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:()=>D(-1),children:$(f,{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:()=>D(1),children:$(f,{name:"chevron",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"tbtn",onClick:v,children:"今天"},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),W.length>1&&$("button",{class:"tbtn",onClick:S,children:[$(f,{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((O)=>$("div",{class:"cal-wd",children:O},O,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"cal-body",children:A.map((O,N)=>$("div",{class:"cal-grid cal-week",children:O.map((L)=>{let B=L.getMonth()!==F.m,M=$1(L,Y),y=V(L),E=B9(L);return $("div",{class:"cal-day"+(B?" dim":"")+(M?" today":""),"data-iso":E,onClick:(c)=>{if(c.target.closest(".cal-ev,.cal-add,.cal-more"))return;X({[H.id]:E})},children:[$("div",{class:"cal-daynum",children:[$("span",{children:L.getDate()},void 0,!1,void 0,this),$("button",{class:"cal-add",title:"新建记录",onClick:(c)=>{c.stopPropagation(),X({[H.id]:E})},children:$(f,{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:[y.slice(0,Q1).map(({rec:c})=>$("div",{class:"cal-ev",style:{["--c"]:t6(D8(c,P)||c.id)},onPointerDown:(r)=>x(r,c),children:D8(c,P)||"无标题"},c.id,!1,void 0,this)),y.length>Q1&&$("button",{class:"cal-more",onClick:(c)=>{c.stopPropagation(),y0(c,(r)=>$(o,{children:[$(j0,{children:[E," · ",y.length," 条记录"]},void 0,!0,void 0,this),y.map(({rec:$0})=>$(z0,{label:D8($0,P)||"无标题",onClick:()=>{r(),z($0.id)}},$0.id,!1,void 0,this))]},void 0,!0,void 0,this))},children:["+",y.length-Q1," 更多"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},E,!0,void 0,this)})},N,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function D8(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function IQ(Z){let J=document.createElement("div");return J.className="drag-ghost",J.textContent=Z||"移动记录",document.body.appendChild(J),J}var g9=200,dZ=36,cZ=44,J9=28,m5=3;function E5({props:Z,records:J,onCommitValue:Q,onOpenRecord:X}){let z=Z.filter((g)=>g.type==="date"),[W,G]=k(null),[q,H]=k(null),Y=Z.find((g)=>g.id===W)??z[0]??null,F=q==="none"?null:Z.find((g)=>g.id===q)??z.find((g)=>g!==Y)??null,K=W0(null),w=W0(null);if(!Y)return $("div",{class:"view-placeholder",children:"时间轴视图需要一个「日期」属性作为开始日期。请在表格视图中添加一个日期列后再切换到时间轴。"},void 0,!1,void 0,this);let P=Z[0],A=h8(),_=J.map((g)=>{let u=pZ(g.cells[Y.id]),I=F?pZ(g.cells[F.id]):null;return{rec:g,s:u,e:I&&u&&I<u?u:I}}),V=_.filter((g)=>g.s),D=A,v=A;if(V.length){D=V[0].s,v=V[0].s;for(let g of V){if(g.s<D)D=g.s;let u=g.e??g.s;if(u>v)v=u}}else D=o0(A,-10),v=o0(A,14);let R=o0(D,-m5),x=o0(v,m5),S=NZ(R,x)+1,O=g9+S*J9,N=(g)=>g9+g*J9,L=NZ(R,A),B=[];for(let g=0;g<S;g++)B.push(o0(R,g));let M=(g,u,I,n,Z0)=>{if(Z0===0)return;if(n==="move"){if(u)Q(g,Y,B9(o0(u,Z0)));if(F&&I)Q(g,F,B9(o0(I,Z0)))}else if(n==="l"&&u){let q0=o0(u,Z0);Q(g,Y,B9(I&&q0>I?I:q0))}else if(n==="r"&&F&&I){let q0=o0(I,Z0);Q(g,F,B9(u&&q0<u?u:q0))}},y=(g,u)=>{let I=w.current;if(!I)return;I.style.left=g+"px",I.style.display="block";let n=I.firstElementChild;if(n)n.textContent=u},E=()=>{if(w.current)w.current.style.display="none"},c=(g,u,I,n,Z0,q0)=>{if(g.button!==0||!I)return;g.preventDefault(),g.stopPropagation();let{offsetLeft:Q0,offsetWidth:J0}=q0,B0=!1,p0=Z0==="move"?null:g.currentTarget;p0?.classList.add("dragging"),K.current={pointerId:g.pointerId,startX:g.clientX};let i0=(d0)=>{let g0=K.current;if(!g0||g0.pointerId!==d0.pointerId)return;let h0=Math.round((d0.clientX-g0.startX)/J9);if(Math.abs(d0.clientX-g0.startX)>3)B0=!0;let _0,a0;if(Z0==="move"){let O0=Q0+h0*J9;q0.style.left=O0+"px",_0=O0,a0=o0(I,h0)}else if(Z0==="l"){let O0=Q0+h0*J9;q0.style.left=O0+"px",q0.style.width=Math.max(J9,J0-h0*J9)+"px",_0=O0,a0=o0(I,h0)}else{let O0=Math.max(J9,J0+h0*J9);q0.style.width=O0+"px",_0=Q0+O0,a0=o0(I,Math.round(O0/J9)-1)}y(_0,B9(a0))},m0=(d0)=>{let g0=K.current;if(!g0||g0.pointerId!==d0.pointerId)return;removeEventListener("pointermove",i0),removeEventListener("pointerup",m0),removeEventListener("pointercancel",m0),K.current=null,p0?.classList.remove("dragging"),E();let h0=Math.round((d0.clientX-g0.startX)/J9);if(!B0){X(u.id);return}M(u,I,n,Z0,h0)};addEventListener("pointermove",i0,{passive:!1}),addEventListener("pointerup",m0),addEventListener("pointercancel",m0)},r=(g,u)=>{if(Q(g,Y,B9(u)),F)Q(g,F,B9(u))},$0=(g,u)=>{let I=g.currentTarget.closest(".tl-row");if(!I)return;let n=g.clientX-I.getBoundingClientRect().left;if(n<g9)return;let Z0=Math.max(0,Math.min(S-1,Math.round((n-g9)/J9)));r(u,o0(R,Z0))};return $("div",{class:"tl",children:[$("div",{class:"tl-toolbar",children:$("button",{class:"tbtn",onClick:(g)=>y0(g,(u)=>$(o,{children:[$(j0,{children:"开始日期"},void 0,!1,void 0,this),z.map((I)=>$(z0,{icon:z9[I.type],label:I.name,checked:I===Y,onClick:()=>{G(I.id),u()}},I.id,!1,void 0,this)),$(S0,{},void 0,!1,void 0,this),$(j0,{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((I)=>$(z0,{icon:z9[I.type],label:I.name,checked:I===F,onClick:()=>{H(I.id),u()}},I.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(f,{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:O,height:cZ+_.length*dZ+8},children:[$("div",{class:"tl-axis",style:{height:cZ},children:[$("div",{class:"tl-corner",style:{width:g9},children:"记录"},void 0,!1,void 0,this),B.map((g,u)=>{let I=g.getDate()===1;return $("div",{class:"tl-tick"+(I?" mstart":"")+(NZ(g,A)===0?" today":""),style:{left:N(u),width:J9},children:[I&&$("span",{class:"tl-month",children:[g.getMonth()+1,"月"]},void 0,!0,void 0,this),$("span",{class:"tl-dnum",children:g.getDate()},void 0,!1,void 0,this)]},u,!0,void 0,this)})]},void 0,!0,void 0,this),_.map(({rec:g,s:u,e:I},n)=>{let Z0=u?NZ(R,u):0,q0=u&&I?NZ(u,I)+1:1;return $("div",{class:"tl-row",style:{top:cZ+n*dZ,height:dZ},children:[$("div",{class:"tl-rowlabel",style:{width:g9},children:u5(g,P)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!u?$("div",{class:"tl-track-empty",style:{left:g9},onClick:(Q0)=>$0(Q0,g),title:"点击空白处排期",children:$("button",{class:"tl-schedule",style:{left:g9+8},onClick:(Q0)=>{Q0.stopPropagation(),r(g,A)},children:"未排期 · 排到今天"},void 0,!1,void 0,this)},void 0,!1,void 0,this):I?$("div",{class:"tl-item",style:{left:N(Z0),width:q0*J9},onPointerDown:(Q0)=>c(Q0,g,u,I,"move",Q0.currentTarget),children:[$("span",{class:"tl-h l",onPointerDown:(Q0)=>c(Q0,g,u,I,"l",Q0.currentTarget.parentElement)},void 0,!1,void 0,this),$("span",{class:"tl-label",children:u5(g,P)},void 0,!1,void 0,this),$("span",{class:"tl-h r",onPointerDown:(Q0)=>c(Q0,g,u,I,"r",Q0.currentTarget.parentElement)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("div",{class:"tl-milestone",style:{left:N(Z0)},title:B9(u),onPointerDown:(Q0)=>c(Q0,g,u,null,"move",Q0.currentTarget)},void 0,!1,void 0,this)]},g.id,!0,void 0,this)}),L>=0&&L<S&&$("div",{class:"tl-today",style:{left:N(L)+J9/2,height:cZ+_.length*dZ}},void 0,!1,void 0,this),$("div",{class:"tl-guide",ref:w,style:{display:"none",height:cZ+_.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 u5(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function $Z(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 x8(Z,J,Q){return J>=Z.r0&&J<=Z.r1&&Q>=Z.c0&&Q<=Z.c1}function m8(Z,J,Q){if(!x8(Z,J,Q))return;let X=[];if(J===Z.r0)X.push("inset 0 2px 0 0 var(--accent)");if(J===Z.r1)X.push("inset 0 -2px 0 0 var(--accent)");if(Q===Z.c0)X.push("inset 2px 0 0 0 var(--accent)");if(Q===Z.c1)X.push("inset -2px 0 0 0 var(--accent)");return X.join(",")||void 0}function p5(Z,J){let Q=[];for(let X=J.r0;X<=J.r1;X++){let z=Z[X]??[],W=[];for(let G=J.c0;G<=J.c1;G++)W.push(z[G]??"");Q.push(W.join("\t"))}return Q.join(`
|
|
37
|
+
`)}var SQ=[["表格","list"],["看板","group"],["日历","calendar"],["时间轴","timeline"]];function c5({db:Z,onError:J}){let[Q,X]=k([]),[z,W]=k([]),G=BZ(),[q,H]=k(0),[Y,F]=k(new Set),[K,w]=k(null),[P,A]=k(null),_=W0(P);_.current=P;let[V,D]=k(null),[v,R]=k(null),x=(h)=>h.config?.width??180,S=W0(!1),O=W0(null),N=W0(null),[L,B]=k(null),[M,y]=k(null),E=W0(null),c=(h)=>{if(document.body.classList.contains("table-dragging"))return;let T=N.current,p=O.current;if(!T||!p)return;let i=L&&p.querySelector(`tbody tr[data-row-id="${L.id}"]`);if(i){let t=i.getBoundingClientRect();if(h>=t.top&&h<t.bottom)return}let F0=T.getBoundingClientRect().top;for(let t of Array.from(p.querySelectorAll("tbody tr[data-row-id]"))){let e=t.getBoundingClientRect();if(h>=e.top&&h<e.bottom){B({id:t.dataset.rowId,top:e.top-F0,height:e.height});return}}if(L)B(null)},r=(h)=>h().catch((T)=>J(String(T.message))),$0=async()=>{let[h,T]=await Promise.all([a.listProperties(Z.id),a.listRecords(Z.id)]);X(h),W(T)};l(()=>{F(new Set),D(null),H(0),R(null),A(null),$0().catch((h)=>J(String(h.message)))},[Z.id]),l(()=>{let h=(T)=>{if(!T.detail?.datasets?.some((i)=>i==="records"||i==="properties"))return;if(_.current)return;$0().catch(()=>{})};return document.addEventListener(t9,h),()=>document.removeEventListener(t9,h)},[Z.id]);let m=(h,T,p)=>{A(null),W((i)=>i.map((F0)=>F0.id===h.id?{...F0,cells:{...F0.cells,[T.id]:p},values:{...F0.values,[T.name]:p}}:F0)),a.updateRecord(h.id,{[T.id]:p}).then((i)=>W((F0)=>F0.map((t)=>t.id===i.id?i:t))).catch((i)=>{J(String(i.message)),$0().catch((F0)=>J(String(F0.message)))})},g=(h)=>r(async()=>{let T=await a.createRecord(Z.id,h);W((p)=>[...p,T])}),u=()=>g({}),I=(h)=>r(async()=>{if(await Promise.all(h.map((T)=>a.deleteRecord(T))),W((T)=>T.filter((p)=>!h.includes(p.id))),F(new Set),V&&h.includes(V))D(null)}),n=(h)=>r(async()=>{let T=await a.createRecord(Z.id,h.cells);W((p)=>{let i=p.findIndex((F0)=>F0.id===h.id);return[...p.slice(0,i+1),T,...p.slice(i+1)]})}),Z0=(h,T,p)=>{if(h===T||K)return;W((i)=>d5(i,h,T,p))},q0=(h,T,p)=>{if(h===T||K)return;Z0(h,T,p),a.moveRecord(h,T,p).catch((i)=>{J(String(i.message)),$0().catch((F0)=>J(String(F0.message)))})},Q0=(h,T,p)=>{if(h===T)return;X((i)=>{let F0=d5(i,h,T,p).map((X0,L0)=>({...X0,position:L0+1})),t=new Map(i.map((X0)=>[X0.id,X0.position])),e=F0.filter((X0)=>t.get(X0.id)!==X0.position);if(e.length)Promise.all(e.map((X0)=>a.updateProperty(X0.id,{position:X0.position}))).catch((X0)=>{J(String(X0.message)),$0().catch((L0)=>J(String(L0.message)))});return F0})},J0=(h,T)=>{let p=N.current,i=O.current;if(!p||!i)return null;let F0=Array.from(i.querySelectorAll("tbody tr[data-row-id]"));if(!F0.length)return null;let t=p.getBoundingClientRect().top,e=F0[F0.length-1],X0="after";for(let v0 of F0){let V0=v0.getBoundingClientRect();if(h<V0.top+V0.height/2){e=v0,X0="before";break}if(h<=V0.bottom){e=v0,X0="after";break}}if(e.dataset.rowId===T)return null;let L0=e.getBoundingClientRect();return{id:e.dataset.rowId,where:X0,y:(X0==="before"?L0.top:L0.bottom)-t}},B0=(h,T)=>{if(K||h.button!==0)return;let p=O.current?.querySelector(`tr[data-row-id="${T}"]`);if(!p)return;h.preventDefault();let i=p.getBoundingClientRect(),F0=h.clientX-i.left,t=h.clientY-i.top,e=null;P9(h,{onStart:()=>{e=u6("row-ghost",i,fQ(p)),p.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(X0)=>{uZ(e,X0.clientX-F0,X0.clientY-t);let L0=J0(X0.clientY,T);E.current=L0,y(L0?L0.y:null)},onEnd:(X0,L0)=>{e?.remove(),p.classList.remove("drag-source"),document.body.classList.remove("table-dragging");let v0=E.current;if(E.current=null,y(null),L0&&v0)q0(T,v0.id,v0.where)}})},p0=(h,T)=>{if(h.button!==0)return;let p=h.currentTarget.closest("th");if(!p)return;N5(h,{source:p,axis:"x",ghostCls:"col-ghost",ghostText:p.textContent?.trim()||"移动属性",targetSelector:"th[data-col-id]",isSelf:(i)=>i.dataset.colId===T.id,onActivate:()=>{S.current=!0},onDrop:(i,F0)=>Q0(T.id,i.dataset.colId,F0),onFinish:(i)=>{if(i)setTimeout(()=>{S.current=!1},0)}})},i0=(h,T,p)=>{if(h.button!==0)return;if(h.target.closest("input,button,a"))return;let i=h.shiftKey&&v?v.a:{r:T,c:p};R({a:i,b:{r:T,c:p}}),P9(h,{onStart:()=>document.body.classList.add("cell-selecting"),onMove:(F0)=>{let t=document.elementFromPoint(F0.clientX,F0.clientY)?.closest?.("td.cell-td");if(!t||t.dataset.r==null)return;R({a:i,b:{r:Number(t.dataset.r),c:Number(t.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},m0=(h)=>h!=="checkbox"&&h!=="select"&&h!=="multi_select",d0=(h,T,p)=>Math.max(T,Math.min(p,h)),g0=(h,T)=>requestAnimationFrame(()=>{document.querySelector(`td.cell-td[data-r="${h}"][data-c="${T}"]`)?.scrollIntoView({block:"nearest",inline:"nearest"})}),h0=(h,T)=>{R({a:{r:h,c:T},b:{r:h,c:T}}),g0(h,T)},_0=(h,T,p)=>{let i=K0[h],F0=Q[T];if(!i||!F0)return;if(h0(h,T),m0(F0.type))A({rec:i.id,prop:F0.id,seed:p})},a0=(h,T,p)=>{let i=T+p;if(i<0||i>=Q.length){h0(h,T);return}_0(h,i)},O0=(h)=>r(async()=>{if(!v)return;let{r0:T,r1:p,c0:i,c1:F0}=$Z(v),t=Q.slice(i,F0+1),e=K0.slice(T,p+1),X0=await Promise.all(e.map((L0)=>{let v0={};for(let V0 of t)v0[V0.id]=h(V0);return a.updateRecord(L0.id,v0)}));W((L0)=>L0.map((v0)=>X0.find((V0)=>V0.id===v0.id)??v0))}),u0=async()=>{if(!v)return;let{r0:h,r1:T,c0:p,c1:i}=$Z(v),F0=Q.slice(p,i+1),t=K0.slice(h,T+1).map((e)=>F0.map((X0)=>V5(X0,e.cells[X0.id])).join("\t")).join(`
|
|
38
|
+
`);try{await navigator.clipboard.writeText(t)}catch{}},Y0=K?Q.find((h)=>h.id===K.id):void 0,r0=(h)=>{let T=h==null||h===""?NaN:Number(h);return Number.isFinite(T)?T:Number.NEGATIVE_INFINITY},K0=K?[...z].sort((h,T)=>{let p=h.cells[K.id],i=T.cells[K.id],F0=Y0?.type==="number"?r0(p)-r0(i):String(p??"").localeCompare(String(i??""),"zh");return(K.desc?-1:1)*F0}):z,l0=z.find((h)=>h.id===V)??null,w0=v?$Z(v):null;return l(()=>{let h=(T)=>{if(!v||P)return;let p=document.activeElement,i=(p?.tagName||"").toLowerCase();if(i==="input"||i==="textarea"||p?.isContentEditable)return;let F0=v.a.r===v.b.r&&v.a.c===v.b.c,{r:t,c:e}=v.b,X0={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(T.key in X0){T.preventDefault();let[L0,v0]=X0[T.key],V0={r:d0(t+L0,0,K0.length-1),c:d0(e+v0,0,Q.length-1)};R(T.shiftKey?{a:v.a,b:V0}:{a:V0,b:V0}),g0(V0.r,V0.c)}else if((T.metaKey||T.ctrlKey)&&T.key.toLowerCase()==="c")T.preventDefault(),u0();else if(T.key==="Escape")R(null);else if(T.key==="Delete"||T.key==="Backspace")T.preventDefault(),O0(()=>null);else if(F0&&(T.key==="Enter"||T.key==="F2"))T.preventDefault(),_0(t,e);else if(F0&&T.key.length===1&&!T.metaKey&&!T.ctrlKey&&!T.altKey&&!T.isComposing&&T.keyCode!==229){let L0=Q[e];if(!L0||!m0(L0.type)||L0.type==="date")return;if(L0.type==="number"&&!/[0-9.+-]/.test(T.key))return;T.preventDefault(),_0(t,e,T.key)}};return addEventListener("keydown",h),()=>removeEventListener("keydown",h)},[v,P,z,Q,K]),$("div",{class:"db",onPointerDown:(h)=>{if(!h.target.closest("td.cell-td, .cellselbar"))R(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:(h)=>{let T=h.target.textContent?.trim()||Z.name;if(T!==Z.name)r(async()=>{await a.updateDatabase(Z.id,{name:T})})},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:()=>N9({kind:"database",ref:Z.id,title:Z.name}),children:$(f,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"views",children:[SQ.map(([h,T],p)=>$("div",{class:"view-tab"+(p===q?" active":""),onClick:()=>H(p),children:[$(f,{name:T},void 0,!1,void 0,this),h]},h,!0,void 0,this)),$("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:u,children:[$(f,{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:(h)=>xQ(h,Q,K,w),children:[$(f,{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?$(h5,{props:Q,records:z,onCommitValue:m,onCreate:g,onOpenRecord:D,onMove:q0},void 0,!1,void 0,this):q===2?$(x5,{props:Q,records:z,onCommitValue:m,onCreate:g,onOpenRecord:D},void 0,!1,void 0,this):q===3?$(E5,{props:Q,records:z,onCommitValue:m,onCreate:g,onOpenRecord:D},void 0,!1,void 0,this):$("div",{class:"gridhost",ref:N,onMouseMove:(h)=>c(h.clientY),onMouseLeave:()=>{if(!document.body.classList.contains("table-dragging"))B(null)},children:[L&&$("button",{class:"rowgrip-ext"+(K?" is-disabled":""),style:{top:L.top+L.height/2},title:K?"清除排序后可拖拽移动":"拖拽移动","aria-disabled":K?"true":void 0,onPointerDown:(h)=>B0(h,L.id),children:$(f,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M!=null&&$("div",{class:"rowdrop",style:{top:M}},void 0,!1,void 0,this),$("div",{class:"tablewrap",children:[$("div",{class:"tablescroll",children:$("table",{class:"grid",ref:O,children:[$("colgroup",{children:[$("col",{style:{width:38}},void 0,!1,void 0,this),Q.map((h)=>$("col",{"data-col-id":h.id,style:{width:x(h)}},h.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:(h)=>F(h.target.checked?new Set(z.map((T)=>T.id)):new Set)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((h)=>$("th",{"data-col-id":h.id,children:[$("div",{class:"colhead",onPointerDown:(T)=>p0(T,h),onClick:(T)=>{if(S.current){S.current=!1,T.preventDefault(),T.stopPropagation();return}jQ(T,h,Z.id,$0,Q)},children:[$("span",{class:"ti",children:$(f,{name:z9[h.type]??"text",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"nm",children:h.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(gQ,{colId:h.id,startWidth:x(h),onCommit:(T)=>{X((p)=>p.map((i)=>i.id===h.id?{...i,config:{...i.config??{},width:T}}:i)),a.setColumnWidth(h.id,T).catch((p)=>{J(String(p.message)),$0().catch(()=>{})})}},void 0,!1,void 0,this)]},h.id,!0,void 0,this)),$("th",{class:"addcol",children:$("div",{class:"colhead",title:"新建属性",onClick:(h)=>DQ(h,Z.id,Q,$0),children:$(f,{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((h,T)=>$("tr",{"data-row-id":h.id,class:Y.has(h.id)?"sel":"",children:[$("td",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.has(h.id),onChange:()=>F((p)=>{let i=new Set(p);return i.has(h.id)?i.delete(h.id):i.add(h.id),i})},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((p,i)=>{let F0=w0!=null&&T>=w0.r0&&T<=w0.r1&&i>=w0.c0&&i<=w0.c1,t=w0?m8(w0,T,i):void 0;return $("td",{class:"cell-td"+(F0?" cellsel":""),"data-r":T,"data-c":i,style:t?{boxShadow:t}:void 0,onPointerDown:(e)=>i0(e,T,i),children:$(VQ,{rec:h,prop:p,first:i===0,editing:P?.rec===h.id&&P?.prop===p.id,seed:P?.rec===h.id&&P?.prop===p.id?P.seed:void 0,onEdit:()=>{h0(T,i),A({rec:h.id,prop:p.id})},onCommit:(e)=>m(h,p,e),onDone:(e)=>{if(A(null),e.reason!=="cancel"&&e.changed)m(h,p,e.value);if(e.reason==="tab")a0(T,i,1);else if(e.reason==="shifttab")a0(T,i,-1);else if(e.reason==="enter")h0(d0(T+1,0,K0.length-1),i)},onOpen:()=>D(h.id),onRowMenu:(e)=>mQ(e,h,()=>D(h.id),()=>n(h),()=>I([h.id]))},void 0,!1,void 0,this)},p.id,!1,void 0,this)}),$("td",{class:"filler"},void 0,!1,void 0,this)]},h.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:[$(f,{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:()=>r(async()=>{for(let h of Y)await n(z.find((T)=>T.id===h))}),children:[$(f,{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}))I([...Y])},children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除"]},void 0,!0,void 0,this),$("button",{onClick:()=>F(new Set),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w0&&(w0.r0!==w0.r1||w0.c0!==w0.c1)&&$("div",{class:"selbar cellselbar",children:[$("span",{class:"cnt",children:[(w0.r1-w0.r0+1)*(w0.c1-w0.c0+1)," 个单元格"]},void 0,!0,void 0,this),$("button",{onClick:u0,children:[$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{onClick:()=>O0((h)=>K0[w0.r0].cells[h.id]??null),children:[$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"填充"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:()=>O0(()=>null),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清空"]},void 0,!0,void 0,this),$("button",{onClick:()=>R(null),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),l0&&$(uQ,{db:Z,props:Q,rec:l0,onClose:()=>D(null),onCommit:(h,T)=>m(l0,h,T),onDelete:()=>I([l0.id]),onDuplicate:()=>n(l0),onReverted:()=>$0().catch((h)=>J(String(h.message)))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function i5({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);l(()=>{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:S5(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 VQ({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=(A)=>{if(J.type==="select"||J.type==="multi_select")a5(A,J,F,G);else W()},w=$(OZ,{prop:J,val:F},void 0,!1,void 0,this);return $(o,{children:[Q?$("div",{class:"cell",onDblClick:K,onContextMenu:(A)=>{A.preventDefault(),Y(A)},children:$("div",{class:"firstcell",children:[w,$("div",{class:"rowactions",children:$("button",{class:"rowopen",title:"打开",onClick:(A)=>{A.stopPropagation(),H()},children:$(f,{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:w},void 0,!1,void 0,this),X&&J.type!=="select"&&J.type!=="multi_select"&&$("div",{class:"celledit",children:$(i5,{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 d5(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 fQ(Z){return Array.from(Z.querySelectorAll("td")).map((Q)=>(Q.textContent??"").trim()).filter(Boolean).join(" ")||"移动记录"}function gQ({colId:Z,startWidth:J,onCommit:Q}){return $("div",{class:"col-resizer",onPointerDown:(z)=>{z.preventDefault(),z.stopPropagation(),S8(z,{col:document.querySelector(`col[data-col-id="${CSS.escape(Z)}"]`),startWidth:J,min:80,onDone:Q})}},void 0,!1,void 0,this)}function a5(Z,J,Q,X){Z.stopPropagation();let z=J.type==="multi_select",W=J.config?.options??[];y0(Z,(G)=>$(bQ,{multi:z,options:W,value:Q,onPick:(q)=>{if(X(q),!z)G()}},void 0,!1,void 0,this))}function bQ({multi:Z,options:J,value:Q,onPick:X}){let[z,W]=k(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 $(o,{children:[$(j0,{children:Z?"多选 — 点选切换":"单选"},void 0,!1,void 0,this),J.map((H)=>$("button",{class:"item",onClick:()=>q(H),children:[$(ZZ,{text:H},void 0,!1,void 0,this),G(H)&&$("span",{class:"chk",children:$(f,{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&&$(o,{children:[$(S0,{},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 jQ(Z,J,Q,X,z){Z.stopPropagation(),y0(Z,(W)=>$(hQ,{prop:J,dbId:Q,reload:X,close:W,allProps:z},void 0,!1,void 0,this),{minWidth:252})}function hQ({prop:Z,dbId:J,reload:Q,close:X,allProps:z}){let[W,G]=k(Z.name),[q,H]=k(Z.type),[Y,F]=k(Z.config?.options??[]),K=(A)=>a.updateProperty(Z.id,A).then(Q).catch((_)=>s(`更新属性失败:${_.message}`)),w=(A)=>{H(A);let _=Y;if((A==="select"||A==="multi_select")&&_.length===0)_=["选项 1","选项 2"],F(_);K({type:A,...A==="select"||A==="multi_select"?{config:{options:_}}:{}})},P=(A)=>{F(A),K({config:{options:A}})};return $(o,{children:[$("input",{class:"field",value:W,onInput:(A)=>G(A.target.value),onBlur:()=>W&&W!==Z.name&&K({name:W}),onKeyDown:(A)=>{if(A.key==="Enter")A.target.blur(),X()}},void 0,!1,void 0,this),$(j0,{children:"属性类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(UZ).map((A)=>$("button",{class:"item"+(A===q?" sel":""),onClick:()=>w(A),children:[$("span",{class:"lico",children:$(f,{name:z9[A],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:UZ[A].t},void 0,!1,void 0,this)]},A,!0,void 0,this))},void 0,!1,void 0,this),(q==="select"||q==="multi_select")&&$(o,{children:[$(S0,{},void 0,!1,void 0,this),$(j0,{children:"选项"},void 0,!1,void 0,this),Y.map((A,_)=>$("div",{class:"optrow",children:[$(ZZ,{text:A},void 0,!1,void 0,this),$("button",{class:"x",onClick:()=>P(Y.filter((V,D)=>D!==_)),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},A+_,!0,void 0,this)),$(z0,{icon:"plus",label:"添加选项",onClick:()=>P([...Y,"选项 "+(Y.length+1)])},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{X(),a.createProperty({db:J,name:n5("新属性",z),type:"text"}).then(Q).catch((A)=>s(`新建属性失败:${A.message}`))}},void 0,!1,void 0,this),$(S0,{},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}))a.deleteProperty(Z.id).then(Q)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function n5(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 DQ(Z,J,Q,X){Z.stopPropagation(),y0(Z,(z)=>$(o,{children:[$(j0,{children:"新建属性 · 选择类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(UZ).map((W)=>$("button",{class:"item",onClick:()=>{z();let G=W==="select"||W==="multi_select"?{options:["选项 1","选项 2"]}:void 0;a.createProperty({db:J,name:n5(UZ[W].t,Q),type:W,config:G}).then(X).catch((q)=>s(`新建属性失败:${q.message}`))},children:[$("span",{class:"lico",children:$(f,{name:z9[W],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:UZ[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 xQ(Z,J,Q,X){y0(Z,(z)=>$(o,{children:[$(j0,{children:"排序依据"},void 0,!1,void 0,this),J.map((W)=>$(z0,{icon:z9[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&&$(o,{children:[$(S0,{},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(),y0(Z,(W)=>$(o,{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),$(S0,{},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 uQ({db:Z,props:J,rec:Q,onClose:X,onCommit:z,onDelete:W,onDuplicate:G,onReverted:q}){let[H,Y]=k(null),[F,K]=k(!1),{open:w,close:P}=e9(X),A=J[0];return $(o,{children:[$("div",{class:"scrim"+(w?" open":""),onClick:P},void 0,!1,void 0,this),$("div",{class:"peek"+(w?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:P,children:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("button",{class:"iconbtn",title:"返回字段",onClick:()=>K(!1),children:$(f,{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:(_)=>y0(_,(V)=>$(o,{children:[$(z0,{icon:"history",label:"版本历史",checked:F,onClick:()=>{V(),K(!F)}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"复制记录",onClick:()=>{V(),G()}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(V(),await R0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))W()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),children:$(f,{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?$(j5,{rec:Q,props:J,onReverted:q},void 0,!1,void 0,this):$(o,{children:[$("h2",{contentEditable:!0,onBlur:(_)=>A&&z(A,_.target.textContent??""),children:A?String(Q.cells[A.id]??"无标题"):"无标题"},void 0,!1,void 0,this),J.map((_)=>$("div",{class:"proprow",children:[$("div",{class:"k",children:[$(f,{name:z9[_.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:_.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(EQ,{prop:_,rec:Q,editing:H===_.id,onEdit:()=>Y(_.id),onCommit:(V)=>{z(_,V),Y(null)},onCloseEdit:()=>Y(null)},void 0,!1,void 0,this)]},_.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 EQ({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)=>a5(q,Z,G,z),children:$(OZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Q)return $("div",{class:"v",children:$(i5,{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:$(OZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var X$=M2(Q$(),1);var r8=X$.default;function rz(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 B1(Z,J){return Array(J+1).join(Z)}function G$(Z){return Z.replace(/^\n*/,"")}function q$(Z){var J=Z.length;while(J>0&&Z[J-1]===`
|
|
39
|
+
`)J--;return Z.substring(0,J)}function H$(Z){return q$(G$(Z))}var oz=["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 O1(Z){return A1(Z,oz)}var Y$=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function K$(Z){return A1(Z,Y$)}function tz(Z){return U$(Z,Y$)}var F$=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function sz(Z){return A1(Z,F$)}function ez(Z){return U$(Z,F$)}function A1(Z,J){return J.indexOf(Z.nodeName)>=0}function U$(Z,J){return Z.getElementsByTagName&&J.some(function(Q){return Z.getElementsByTagName(Q).length})}var ZW=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function L$(Z){return ZW.reduce(function(J,Q){return J.replace(Q[0],Q[1])},Z)}var t0={};t0.paragraph={filter:"p",replacement:function(Z){return`
|
|
11
40
|
|
|
12
41
|
`+Z+`
|
|
13
42
|
|
|
14
|
-
`}};
|
|
15
|
-
`}};
|
|
43
|
+
`}};t0.lineBreak={filter:"br",replacement:function(Z,J,Q){return Q.br+`
|
|
44
|
+
`}};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=B1(X===1?"=":"-",Z.length);return`
|
|
16
45
|
|
|
17
46
|
`+Z+`
|
|
18
47
|
`+z+`
|
|
19
48
|
|
|
20
49
|
`}else return`
|
|
21
50
|
|
|
22
|
-
`+
|
|
51
|
+
`+B1("#",X)+" "+Z+`
|
|
23
52
|
|
|
24
|
-
`}};
|
|
53
|
+
`}};t0.blockquote={filter:"blockquote",replacement:function(Z){return Z=H$(Z).replace(/^/gm,"> "),`
|
|
25
54
|
|
|
26
55
|
`+Z+`
|
|
27
56
|
|
|
28
|
-
`}};
|
|
57
|
+
`}};t0.list={filter:["ul","ol"],replacement:function(Z,J){var Q=J.parentNode;if(Q.nodeName==="LI"&&Q.lastElementChild===J)return`
|
|
29
58
|
`+Z;else return`
|
|
30
59
|
|
|
31
60
|
`+Z+`
|
|
32
61
|
|
|
33
|
-
`}};
|
|
62
|
+
`}};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=H$(Z)+(q?`
|
|
34
63
|
`:""),Z=Z.replace(/\n/gm,`
|
|
35
64
|
`+" ".repeat(X.length)),X+Z+(J.nextSibling?`
|
|
36
|
-
`:"")}};
|
|
65
|
+
`:"")}};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
66
|
|
|
38
67
|
`+J.firstChild.textContent.replace(/\n/g,`
|
|
39
68
|
`)+`
|
|
40
69
|
|
|
41
|
-
`}};
|
|
70
|
+
`}};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=B1(G,q);return`
|
|
42
71
|
|
|
43
72
|
`+F+z+`
|
|
44
|
-
`+
|
|
73
|
+
`+W.replace(/\n$/,"")+`
|
|
45
74
|
`+F+`
|
|
46
75
|
|
|
47
|
-
`}};
|
|
76
|
+
`}};t0.horizontalRule={filter:"hr",replacement:function(Z,J,Q){return`
|
|
48
77
|
|
|
49
78
|
`+Q.hr+`
|
|
50
79
|
|
|
51
|
-
`}};
|
|
80
|
+
`}};t0.inlineLink={filter:function(Z,J){return J.linkStyle==="inlined"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J){var Q=N1(J.getAttribute("href")),X=w1(o8(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=N1(J.getAttribute("href")),z=o8(J.getAttribute("title"));if(z)z=' "'+w1(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
81
|
|
|
53
82
|
`+this.references.join(`
|
|
54
83
|
`)+`
|
|
55
84
|
|
|
56
|
-
`,this.references=[];return J}};
|
|
57
|
-
`):""}function
|
|
85
|
+
`,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=L$(o8(J.getAttribute("alt"))),X=N1(J.getAttribute("src")||""),z=o8(J.getAttribute("title")),W=z?' "'+w1(z)+'"':"";return X?"":""}};function o8(Z){return Z?Z.replace(/(\n+\s*)+/g,`
|
|
86
|
+
`):""}function N1(Z){var J=Z.replace(/([<>()])/g,"\\$1");return J.indexOf(" ")>=0?"<"+J+">":J}function w1(Z){return Z.replace(/"/g,"\\\"")}function P$(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])}P$.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=U1(this.array,Z,this.options))return J;if(J=U1(this._keep,Z,this.options))return J;if(J=U1(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 U1(Z,J,Q){for(var X=0;X<Z.length;X++){var z=Z[X];if(JW(z,J,Q))return z}return}function JW(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 $W(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=z$(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=L1(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=L1(H);continue}var F=z$(q,H,z);q=H,H=F}if(W){if(W.data=W.data.replace(/ $/,""),!W.data)L1(W)}}function L1(Z){var J=Z.nextSibling||Z.parentNode;return Z.parentNode.removeChild(Z),J}function z$(Z,J,Q){if(Z&&Z.parentNode===J||Q(J))return J.nextSibling||J.parentNode;return J.firstChild||J.nextSibling||J.parentNode}var M1=typeof window<"u"?window:{};function QW(){var Z=M1.DOMParser,J=!1;try{if(new Z().parseFromString("","text/html"))J=!0}catch(Q){}return J}function XW(){var Z=function(){};if(zW())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 zW(){var Z=!1;try{document.implementation.createHTMLDocument("").open()}catch(J){if(M1.ActiveXObject)Z=!0}return Z}var WW=QW()?M1.DOMParser:XW();function GW(Z,J){var Q;if(typeof Z==="string"){var X=qW().parseFromString('<x-turndown id="turndown-root">'+Z+"</x-turndown>","text/html");Q=X.getElementById("turndown-root")}else Q=Z.cloneNode(!0);return $W({element:Q,isBlock:O1,isVoid:K$,isPre:J.preformattedCode?HW:null}),Q}var P1;function qW(){return P1=P1||new WW,P1}function HW(Z){return Z.nodeName==="PRE"||Z.nodeName==="CODE"}function YW(Z,J){return Z.isBlock=O1(Z),Z.isCode=Z.nodeName==="CODE"||Z.parentNode.isCode,Z.isBlank=KW(Z),Z.flankingWhitespace=FW(Z,J),Z}function KW(Z){return!K$(Z)&&!sz(Z)&&/^\s*$/i.test(Z.textContent)&&!tz(Z)&&!ez(Z)}function FW(Z,J){if(Z.isBlock||J.preformattedCode&&Z.isCode)return{leading:"",trailing:""};var Q=UW(Z.textContent);if(Q.leadingAscii&&W$("left",Z,J))Q.leading=Q.leadingNonAscii;if(Q.trailingAscii&&W$("right",Z,J))Q.trailing=Q.trailingNonAscii;return{leading:Q.leading,trailing:Q.trailing}}function UW(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 W$(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&&!O1(X))W=z.test(X.textContent)}return W}var LW=Array.prototype.reduce;function lZ(Z){if(!(this instanceof lZ))return new lZ(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
87
|
|
|
59
88
|
`:""},keepReplacement:function(Q,X){return X.isBlock?`
|
|
60
89
|
|
|
@@ -64,58 +93,56 @@ https://github.com/highlightjs/highlight.js/issues/2277`),z0=g,m=I;if(h===void 0
|
|
|
64
93
|
|
|
65
94
|
`+Q+`
|
|
66
95
|
|
|
67
|
-
`:Q}};this.options=
|
|
96
|
+
`:Q}};this.options=rz({},J,Z),this.rules=new P$(this.options)}lZ.prototype={turndown:function(Z){if(!OW(Z))throw TypeError(Z+" is not a string, or an element/document/fragment node.");if(Z==="")return"";var J=B$.call(this,new GW(Z,this.options));return PW.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 L$(Z)}};function B$(Z){var J=this;return LW.call(Z.childNodes,function(Q,X){X=new YW(X,J.options);var z="";if(X.nodeType===3)z=X.isCode?X.nodeValue:J.escape(X.nodeValue);else if(X.nodeType===1)z=BW.call(J,X);return O$(Q,z)},"")}function PW(Z){var J=this;return this.rules.forEach(function(Q){if(typeof Q.append==="function")Z=O$(Z,Q.append(J.options))}),Z.replace(/^[\t\r\n]+/,"").replace(/[\t\r\n\s]+$/,"")}function BW(Z){var J=this.rules.forNode(Z),Q=B$.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 O$(Z,J){var Q=q$(Z),X=G$(J),z=Math.max(Z.length-Q.length,J.length-X.length),W=`
|
|
68
97
|
|
|
69
|
-
`.substring(0,z);return Q+
|
|
98
|
+
`.substring(0,z);return Q+W+X}function OW(Z){return Z!=null&&(typeof Z==="string"||Z.nodeType&&(Z.nodeType===1||Z.nodeType===9||Z.nodeType===11))}var A$=/highlight-(?:text|source)-([a-z0-9]+)/;function AW(Z){Z.addRule("highlightedCodeBlock",{filter:function(J){var Q=J.firstChild;return J.nodeName==="DIV"&&A$.test(J.className)&&Q&&Q.nodeName==="PRE"},replacement:function(J,Q,X){var z=Q.className||"",W=(z.match(A$)||[null,""])[1];return`
|
|
70
99
|
|
|
71
|
-
`+X.fence+
|
|
100
|
+
`+X.fence+W+`
|
|
72
101
|
`+Q.firstChild.textContent+`
|
|
73
102
|
`+X.fence+`
|
|
74
103
|
|
|
75
|
-
`}})}function
|
|
104
|
+
`}})}function NW(Z){Z.addRule("strikethrough",{filter:["del","s","strike"],replacement:function(J){return"~"+J+"~"}})}var wW=Array.prototype.indexOf,MW=Array.prototype.every,_Z={};_Z.tableCell={filter:["th","td"],replacement:function(Z,J){return N$(Z,J)}};_Z.tableRow={filter:"tr",replacement:function(Z,J){var Q="",X={left:":--",right:"--:",center:":-:"};if(C1(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+=N$(W,J.childNodes[z])}return`
|
|
76
105
|
`+Z+(Q?`
|
|
77
|
-
`+Q:"")}};
|
|
106
|
+
`+Q:"")}};_Z.table={filter:function(Z){return Z.nodeName==="TABLE"&&C1(Z.rows[0])},replacement:function(Z){return Z=Z.replace(`
|
|
78
107
|
|
|
79
108
|
`,`
|
|
80
109
|
`),`
|
|
81
110
|
|
|
82
111
|
`+Z+`
|
|
83
112
|
|
|
84
|
-
`}};
|
|
113
|
+
`}};_Z.tableSection={filter:["thead","tbody","tfoot"],replacement:function(Z){return Z}};function C1(Z){var J=Z.parentNode;return J.nodeName==="THEAD"||J.firstChild===Z&&(J.nodeName==="TABLE"||CW(J))&&MW.call(Z.childNodes,function(Q){return Q.nodeName==="TH"})}function CW(Z){var J=Z.previousSibling;return Z.nodeName==="TBODY"&&(!J||J.nodeName==="THEAD"&&/^\s*$/i.test(J.textContent))}function N$(Z,J){var Q=wW.call(J.parentNode.childNodes,J),X=" ";if(Q===0)X="| ";return X+Z+" |"}function yW(Z){Z.keep(function(Q){return Q.nodeName==="TABLE"&&!C1(Q.rows[0])});for(var J in _Z)Z.addRule(J,_Z[J])}function _W(Z){Z.addRule("taskListItems",{filter:function(J){return J.type==="checkbox"&&J.parentNode.nodeName==="LI"},replacement:function(J,Q){return(Q.checked?"[x]":"[ ]")+" "}})}function w$(Z){Z.use([AW,NW,yW,_W])}function vW(Z){let J=Z.match(/(?:language|lang)-(\S+)/);return J?J[1]:""}function TW(){let Z=new lZ({codeBlockStyle:"fenced",headingStyle:"atx",bulletListMarker:"-",emDelimiter:"*",strongDelimiter:"**"});return Z.use(w$),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?vW(X.className):"",G="```";return`
|
|
85
114
|
|
|
86
|
-
\`\`\`${
|
|
115
|
+
\`\`\`${W}
|
|
87
116
|
${z}
|
|
88
117
|
\`\`\`
|
|
89
118
|
|
|
90
|
-
`}}),Z}var $
|
|
119
|
+
`}}),Z}var M$=null;function C$(Z){return M$??=TW(),M$.turndown(Z)}var RW=new Set(["mp4","webm","mov","m4v","ogv","mkv","ogg"]),kW=new Set(["mp3","wav","m4a","aac","flac","opus","oga","weba"]);function _1(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 IW(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 SW(Z){if(RW.has(Z))return"video";if(kW.has(Z))return"audio";return"image"}function VW(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 fW(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 y$(Z){return Z.replace(/[[\]()]/g,"").trim()}function gW(Z){let J=Z.trim(),Q=J.match(/^!\[([^\]]*)\]\(([^\s)]+)\)$/);if(Q){let{src:X,width:z}=VW(Q[2]),W=SW(IW(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 _$(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}var bW=0;function G9(){return`blk_${Date.now().toString(36)}_${(bW++).toString(36)}`}var jW=new Set(["bullet","numbered","todo"]),hW=new Set(["h1","h2","h3","h4","h5","h6"]),k9={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 jW.has(Z)}function vZ(Z){return hW.has(Z)}function DW(){return[["",""],["",""]]}function v1(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]):DW(),Z.align=Q.align?[...Q.align]:Array(Z.rows[0].length).fill(null);else delete Z.rows,delete Z.align;if(_$(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 D9(Z,J={}){let Q={id:G9(),type:Z,content:""};if(v1(Q,Z,J),Q9(Z)&&J.children?.length)Q.children=J.children;return Q}function v$(Z){let J=s8(Z.filter((Q)=>!j9(Q)));return Z.map((Q)=>b$(Q,0,J.get(Q.id)??1).join(`
|
|
91
120
|
`)).join(`
|
|
92
|
-
`)}function
|
|
121
|
+
`)}function rZ(Z){let J=(Z??"").replace(/\r\n?/g,`
|
|
93
122
|
`),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
|
-
|
|
123
|
+
`):[],X=S$(Q,0,0).blocks;T$(X);let z=J.length-J.replace(/\n+$/,"").length;for(let W=1;W<z;W++)X.push({id:G9(),type:"p",content:""});return X}function j9(Z){return Z.type==="p"&&Z.content.trim()===""&&!Z.children?.length}function s8(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 T$(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)T$(Q.children)}}function R$(Z){return k$(Z,0,!0).join(`
|
|
124
|
+
`)}function k$(Z,J,Q){let X=s8(Z.filter((q)=>!j9(q))),z=[],W=null,G=0;for(let q of Z){if(j9(q)){if(z.length)G++;continue}if(!j$(q))continue;if(z.length){let H=sW(W,q)||G>0?1:0;for(let Y=0;Y<H+G;Y++)z.push("")}z.push(...b$(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 T1(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:R1(Q[1]??"")};return null}function I$(Z){let J=Z.match(/^\[([ xX])\]$/);return J?{checked:J[1].toLowerCase()==="x"}:null}function S$(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||h9(Z[H])<Q)break;W+=H-z,z=H;continue}if(h9(G)<Q)break;if(X.length&&W>1)for(let H=1;H<W;H++)X.push({id:G9(),type:"p",content:""});W=0;let q=xW(Z,z,Q)??cW(Z,z,Q)??mW(Z,z,Q);X.push(q.block),z=q.next}return{blocks:X,next:z}}function xW(Z,J,Q){let X=g$(Z[J],Q);if(!X)return null;let z={id:G9(),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=S$(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=O9(Z[J],Q),z=X.match(k9.fenceOpen);if(z){let q=uW(Z,J,Q,z);if(q)return q}if(k9.divider.test(X.trim()))return{block:{id:G9(),type:"divider",content:""},next:J+1};let W=X.match(k9.h);if(W)return{block:{id:G9(),type:`h${W[1].length}`,content:W[2]},next:J+1};if(k9.quote.test(X))return EW(Z,J,Q);let G=gW(X);if(G)return{block:{id:G9(),...G},next:J+1};return rW(Z,J,Q)}function uW(Z,J,Q,X){let z=X[1],W=[],G=J+1,q=!1;for(;G<Z.length;G++){let Y=Z[G],F=O9(Y,Q);if(eW(F,z[0],z.length)){q=!0,G++;break}W.push(F)}if(!q)return null;let H=R1(X[2]??"");if(H==="mh-html")return{block:{id:G9(),type:"html",content:W.join(`
|
|
125
|
+
`)},next:G};return{block:{id:G9(),type:"code",content:W.join(`
|
|
126
|
+
`),lang:H},next:G}}function EW(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||h9(W)<Q)break;let G=O9(W,Q).match(k9.quote);if(!G)break;X.push(G[1]??"")}return{block:{id:G9(),type:"quote",content:X.join(`
|
|
127
|
+
`)},next:z}}var pW=/^\s*:?-+:?\s*$/;function V$(Z,J,Q){let X=Z[J],z=Z[J+1];if(X==null||z==null)return!1;if(h9(X)<Q||h9(z)<Q)return!1;let W=O9(X,Q),G=O9(z,Q);if(!W.includes("|")||!G.includes("|"))return!1;let q=t8(G);return q.length>0&&q.every((H)=>pW.test(H))}function t8(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 dW(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 y1(Z,J){let Q=Z.slice(0,J);while(Q.length<J)Q.push("");return Q}function cW(Z,J,Q){if(!V$(Z,J,Q))return null;let X=t8(O9(Z[J],Q)),z=Math.max(1,X.length),W=t8(O9(Z[J+1],Q)).map(dW),G=[y1(X,z)],q=J+2;for(;q<Z.length;q++){let H=Z[q];if(H.trim()===""||h9(H)<Q)break;let Y=O9(H,Q);if(!Y.includes("|"))break;G.push(y1(t8(Y),z))}while(W.length<z)W.push(null);return W.length=z,{block:{id:G9(),type:"table",content:"",rows:G,align:W},next:q}}function iW(Z){switch(Z){case"left":return":---";case"center":return":---:";case"right":return"---:";default:return"---"}}function aW(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}| ${y1(F,z).map(G).join(" | ")} |`,H=`${Q}| ${Array.from({length:z},(F,K)=>iW(W[K]??null)).join(" | ")} |`,Y=X[0]??Array.from({length:z},()=>"");return[q(Y),H,...X.slice(1).map(q)]}var f$=/^\\*(?:`{3,}|~{3,})/;function nW(Z){return f$.test(Z)?`\\${Z}`:Z}function lW(Z){return Z.startsWith("\\")&&f$.test(Z.slice(1))?Z.slice(1):Z}function rW(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||h9(W)<Q)break;if(X.length&&(oW(W,Q)||V$(Z,z,Q)))break;X.push(lW(O9(W,Q)))}return{block:{id:G9(),type:"p",content:X.join(`
|
|
128
|
+
`)},next:z}}function oW(Z,J){if(g$(Z,J))return!0;let Q=O9(Z,J);return!!Q.match(k9.fenceOpen)||!!Q.match(k9.h)||k9.divider.test(Q.trim())||k9.quote.test(Q)}function g$(Z,J){let Q=h9(Z);if(Q<J)return null;let X=O9(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 b$(Z,J,Q){let X=" ".repeat(J);if(vZ(Z.type))return[`${X}${"#".repeat(Number(Z.type.slice(1)))} ${Z.content}`];switch(Z.type){case"bullet":case"numbered":case"todo":return tW(Z,J,Q);case"quote":return Z.content.split(`
|
|
129
|
+
`).map((z)=>`${X}>${z?` ${z}`:""}`);case"code":{let z=`${X}\`\`\`${Z.lang?R1(Z.lang):""}`,W=Z.content.split(`
|
|
130
|
+
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"table":return aW(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}[${y$(Z.name??"文件")}](${Z.src??""}${z})`]}case"html":{let z=`${X}\`\`\`mh-html`,W=Z.content.split(`
|
|
131
|
+
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"uploading":return[];default:return Z.content.split(`
|
|
132
|
+
`).map((z)=>`${X}${nW(z)}`)}}function tW(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)=>!j9(H)&&j$(H));if(q){if(!Q9(q.type)&&Z.content.trim()!=="")W.push("");W.push(...k$(G,J+2,!1))}return W}function sW(Z,J){if(!Z)return!1;return!(Q9(Z.type)&&Q9(J.type))}function j$(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(_$(Z.type))return!!Z.src;if(Z.type==="html")return Z.content.trim()!=="";return Z.content.trim()!==""}function h9(Z){let J=0;for(let Q of Z)if(Q===" ")J++;else if(Q==="\t")J+=4;else break;return J}function O9(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 eW(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 R1(Z){return Z.trim().replace(/[^A-Za-z0-9_+.#-]/g,"")}var k1=[{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"}],I1=[{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 oZ(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}function ZG(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 S1({icon:Z,name:J,onRetry:Q}){return $("div",{class:"void-block void-unavailable",children:[$(f,{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:[$(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this)," 重试"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function h$({block:Z}){return $("div",{class:"void-block void-uploading",children:[$(f,{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 D$({block:Z,selected:J,onResize:Q,onPreview:X}){let z=W0(null),W=W0(null),[G,q]=k(Z.width),H=W0(Z.width),[Y,F]=k(!1),[K,w]=k(0);l(()=>{q(Z.width),H.current=Z.width},[Z.width]),l(()=>F(!1),[Z.src]);let P=(A,_)=>{A.preventDefault(),A.stopPropagation();let V=W.current;if(!V)return;let D=A.clientX,v=V.offsetWidth,R=z.current?.closest(".doc")?.clientWidth??1200,x=(O)=>{let N=O.clientX-D,L=Math.max(60,Math.min(_==="r"?v+N:v-N,R));H.current=Math.round(L),q(H.current)},S=()=>{window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",S),Q(H.current)};window.addEventListener("mousemove",x),window.addEventListener("mouseup",S)};if(Y)return $(S1,{icon:"image",name:Z.name,onRetry:()=>{w((A)=>A+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:(A)=>A.stopPropagation(),children:$(f,{name:"maximize",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),J&&$(o,{children:[$("span",{class:"img-handle h-l",onMouseDown:(A)=>P(A,"l")},void 0,!1,void 0,this),$("span",{class:"img-handle h-r",onMouseDown:(A)=>P(A,"r")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function x$({block:Z}){let[J,Q]=k(!1),[X,z]=k(0);if(l(()=>Q(!1),[Z.src]),J)return $(S1,{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 m$({block:Z}){let[J,Q]=k(!1),[X,z]=k(0);if(l(()=>Q(!1),[Z.src]),J)return $(S1,{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 u$({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:[$(f,{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:ZG(Z.size)||"下载文件"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"file-dl",children:$(f,{name:"download",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var JG="<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 $G(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}${JG}</body></html>`}function E$({block:Z,selected:J,onChange:Q}){let[X,z]=k(!Z.content.trim()),[W,G]=k(120),q=W0(null),H=W0(null);return l(()=>{if(X)H.current?.focus()},[X]),l(()=>{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:[$(f,{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:[$(f,{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:$G(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 p$=["#ef4444","#f59e0b","#22c55e","#3b82f6","#111827","#ffffff"],V1=3,QG=20;function f1(Z,J,Q){if(Z.strokeStyle=J.color,Z.fillStyle=J.color,Z.lineWidth=V1*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,V1*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 ${QG*Q}px system-ui, -apple-system, sans-serif`,Z.textBaseline="top",Z.lineWidth=Math.max(2,V1*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 d$({src:Z,onCancel:J,onSave:Q}){let X=W0(null),z=W0(null),[W,G]=k("rect"),[q,H]=k(p$[0]),[Y,F]=k([]),[K,w]=k(!1),P=W0(null),A=W0(!1),_=()=>{let O=X.current,N=z.current;if(!O||!N)return;N.width=O.clientWidth,N.height=O.clientHeight,V()},V=()=>{let O=z.current;if(!O)return;let N=O.getContext("2d");if(!N)return;N.clearRect(0,0,O.width,O.height);for(let L of Y)f1(N,L,1);if(P.current)f1(N,P.current,1)};l(V,[Y]),l(()=>{let O=()=>_();return window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[]);let D=(O)=>{let N=z.current.getBoundingClientRect();return{x:O.clientX-N.left,y:O.clientY-N.top}},v=async(O)=>{O.preventDefault();let N=D(O);if(W==="text"){let L=await Y9({title:"添加文字标注",placeholder:"输入文字…",confirmLabel:"添加"});if(L&&L.trim())F((B)=>[...B,{tool:"text",x1:N.x,y1:N.y,x2:N.x,y2:N.y,color:q,text:L.trim()}]);return}A.current=!0,P.current={tool:W,x1:N.x,y1:N.y,x2:N.x,y2:N.y,color:q},V()},R=(O)=>{if(!A.current||!P.current)return;let N=D(O);P.current={...P.current,x2:N.x,y2:N.y},V()},x=()=>{if(!A.current)return;A.current=!1;let O=P.current;if(P.current=null,O&&(Math.abs(O.x2-O.x1)>3||Math.abs(O.y2-O.y1)>3))F((N)=>[...N,O]);else V()},S=()=>{let O=X.current;if(!O)return;w(!0);let N=document.createElement("canvas");N.width=O.naturalWidth||O.clientWidth,N.height=O.naturalHeight||O.clientHeight;let L=N.getContext("2d");if(!L){w(!1);return}L.drawImage(O,0,0,N.width,N.height);let B=N.width/(z.current?.width||O.clientWidth||1);for(let M of Y)f1(L,M,B);N.toBlob((M)=>{if(w(!1),M)Q(M)},"image/png")};return $("div",{class:"annot",onMouseDown:(O)=>O.stopPropagation(),children:[$("div",{class:"annot-toolbar",children:[$("div",{class:"annot-tools",children:[$("button",{class:"annot-tool"+(W==="rect"?" on":""),title:"矩形框选",onClick:()=>G("rect"),children:$(f,{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:$(f,{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:$(f,{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:p$.map((O)=>$("button",{class:"annot-swatch"+(O===q?" on":""),style:{background:O},title:O,onClick:()=>H(O)},O,!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((O)=>O.slice(0,-1)),children:$(f,{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:S,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:_},void 0,!1,void 0,this),$("canvas",{ref:z,class:"annot-canvas tool-"+W,onMouseDown:(O)=>void v(O),onMouseMove:(O)=>R(O),onMouseUp:x,onMouseLeave:x},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 g1=0.2,b1=8;function j1({src:Z,name:J,onClose:Q,onReplace:X,draggableBar:z}){let[W,G]=k(1),[q,H]=k(0),[Y,F]=k(0),[K,w]=k(!1),P=W0(null),A=W0(null),_=()=>{G(1),H(0),F(0)};l(()=>{let v=(R)=>{if(R.key==="Escape")R.stopPropagation(),K?w(!1):Q();else if((R.key==="+"||R.key==="=")&&!K)G((x)=>Math.min(b1,x*1.2));else if(R.key==="-"&&!K)G((x)=>Math.max(g1,x/1.2));else if(R.key==="0"&&!K)_()};return document.addEventListener("keydown",v,!0),()=>document.removeEventListener("keydown",v,!0)},[K,Q]);let V=(v)=>{v.preventDefault();let R=P.current?.getBoundingClientRect(),x=R?v.clientX-R.left-R.width/2:0,S=R?v.clientY-R.top-R.height/2:0,O=v.deltaY<0?1.12:0.8928571428571428;G((N)=>{let L=Math.max(g1,Math.min(b1,N*O)),B=L/N;return H((M)=>x-(x-M)*B),F((M)=>S-(S-M)*B),L})},D=(v)=>{A.current={x:v.clientX,y:v.clientY,tx:q,ty:Y}};return l(()=>{let v=(x)=>{let S=A.current;if(!S)return;H(S.tx+(x.clientX-S.x)),F(S.ty+(x.clientY-S.y))},R=()=>{A.current=null};return window.addEventListener("mousemove",v),window.addEventListener("mouseup",R),()=>{window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",R)}},[]),$(o,{children:[$("div",{class:"lightbox-toolbar"+(z?" app-drag":""),onMouseDown:(v)=>v.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&&$(o,{children:[$("button",{title:"缩小",onClick:()=>G((v)=>Math.max(g1,v/1.2)),children:$(f,{name:"zoomOut",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"lightbox-pct",title:"重置",onClick:_,children:[Math.round(W*100),"%"]},void 0,!0,void 0,this),$("button",{title:"放大",onClick:()=>G((v)=>Math.min(b1,v*1.2)),children:$(f,{name:"zoomIn",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"标注 / 编辑",onClick:()=>{_(),w(!0)},children:$(f,{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?w(!1):Q(),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K?$(d$,{src:Z,onCancel:()=>w(!1),onSave:(v)=>{X(v),w(!1)}},void 0,!1,void 0,this):$("div",{ref:P,class:"lightbox-stage",onMouseDown:(v)=>{v.stopPropagation(),D(v)},onWheel:(v)=>V(v),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 c$(Z){return $("div",{class:"lightbox",onMouseDown:()=>Z.onClose(),children:$(j1,{...Z},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function T0(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?T0(z.children,J,z):null;if(W)return W}return null}function h1(Z){let J=0;for(let Q of Z)J+=1+h1(Q.children??[]);return J}function e8(Z){return{...Z,id:G9(),children:Z.children?.map(e8)}}function D1(Z,J){for(let Q of Z??[])if(Q.id===J||D1(Q.children,J))return!0;return!1}function tZ(Z){return Q9(Z.type)&&Z.content.trim()===""&&Z.children?.[0]?.type==="code"}function K9(Z,J=[]){for(let Q of Z)if(J.push(Q),Q.children)K9(Q.children,J);return J}function x9(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 sZ(Z,J){let Q=K9(Z),X=Q.findIndex((z)=>z.id===J);return X>=0&&X+1<Q.length?Q[X+1]:null}function eZ(Z,J){let Q=T0(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 i$(Z,J,Q,X){if(J===Q)return!1;let z=T0(Z,J),W=T0(Z,Q);if(!z||!W||D1(z.block.children,Q))return!1;let G=z.parent.splice(z.index,1)[0],q=T0(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 x1(Z,J){let Q=T0(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 m1(Z,J){let Q=T0(Z,J);if(!Q?.parentBlock)return!1;let X=T0(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 I9(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 u1(Z,J,Q,X={}){let W=T0(Z,J)?.block;if(!W)return!1;let G=Q9(Q)?W.children:void 0;if(v1(W,Q,X),G?.length)W.children=G;else delete W.children;return!0}function a$(Z,J,Q){let X=K9(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 n$(Z,J){if(!J.length)return null;let Q=new Set(J),X=K9(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 I9(Z,J))eZ(Z,G);if(W&&!T0(Z,W))W=null;return W??K9(Z)[0]?.id??null}function l$(Z,J){let Q=I9(Z,J);if(!Q.length)return[];let X=[];for(let W of Q){let G=T0(Z,W);if(G)X.push(e8(G.block))}let z=T0(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 r$(Z,J,Q,X){let z=I9(Z,J);if(!z.length||z.includes(Q))return!1;for(let q of z){let H=T0(Z,q);if(H&&D1(H.block.children,Q))return!1}let W=[];for(let q of z){let H=eZ(Z,q);if(H)W.push(H)}let G=T0(Z,Q);if(!G)return Z.push(...W),!1;return G.parent.splice(G.index+(X==="after"?1:0),0,...W),!0}function o$(Z,J){let Q=I9(Z,J).map((X)=>T0(Z,X)?.block).filter((X)=>!!X);return v$(Q)}function t$(Z,J){let Q=[];for(let X of I9(Z,J))if(x1(Z,X))Q.push(X);return Q}function s$(Z,J){let Q=[];for(let X of I9(Z,J))if(m1(Z,X))Q.push(X);return Q}function Z8(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var e$=String.fromCharCode(57344),Z3=String.fromCharCode(57345),XG=new RegExp(e$+"(\\d+)"+Z3,"g");function J8(Z){let J=[],Q=Z.replace(/`([^`]+)`/g,(X,z)=>{return J.push(z),e$+(J.length-1)+Z3});return Q=Z8(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(XG,(X,z)=>`<code>${Z8(J[+z]??"")}</code>`),Q}function zZ(Z){let J=document.createElement("div");return J.innerHTML=Z,J3(J).replace(/\n{3,}/g,`
|
|
133
|
+
|
|
134
|
+
`).replace(/\n$/,"")}function J3(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=J3(Q);if(X==="br")J+=`
|
|
135
|
+
`;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
136
|
`)?`
|
|
106
|
-
`:"")+z;else J+=z}),J}function
|
|
137
|
+
`:"")+z;else J+=z}),J}function Q3(){return typeof CSS<"u"&&!!CSS.highlights&&typeof globalThis.Highlight==="function"}function Z6(Z){return/[A-Za-z0-9_]/.test(Z)}function zG(Z,J,Q){let X=Z[J]??"",z=Z[Q-1]??"",W=J>0?Z[J-1]:"",G=Q<Z.length?Z[Q]:"",q=!Z6(X)||!Z6(W),H=!Z6(z)||!Z6(G);return q&&H}function E1(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||zG(Z,q,H))X.push([q,H]);G=H>q?H:q+1}return X}function $3(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 X3(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,w]of E1(Y,J,Q)){let P=$3(G,F,K),A=$3(G,F,w);if(!P||!A)continue;let _=document.createRange();_.setStart(P.node,P.offset),_.setEnd(A.node,A.offset),X.push(_)}}return X}function z3(Z,J){if(!Q3())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 J6(){if(!Q3())return;let Z=CSS.highlights;Z.delete("mh-find-all"),Z.delete("mh-find-current")}function WG(Z,J){let Q;try{Q=J&&r8.getLanguage(J)?r8.highlight(Z,{language:J,ignoreIllegals:!0}).value:r8.highlightAuto(Z).value}catch{Q=Z8(Z)}return Z.endsWith(`
|
|
107
138
|
`)?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"));
|
|
139
|
+
`:Q}function GG(Z){return Z.replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/(\*|_)([^*_]+)\1/g,"$2").replace(/~~([^~]+)~~/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").trim()}function qG({blocks:Z}){let J=K9(Z).filter((G)=>vZ(G.type)).map((G)=>({id:G.id,level:Number(G.type.slice(1)),text:GG(G.content)||"无标题"})),[Q,X]=k(null),z=J.map((G)=>G.id).join("|");if(l(()=>{if(!J.length)return;let G=document.querySelector(".content"),q=0,H=()=>{let K=Math.max(G?G.getBoundingClientRect().top:0,0)+100,w=J[0].id;for(let P of J){let A=document.querySelector(`.block[data-bid="${P.id}"]`);if(!A)continue;if(A.getBoundingClientRect().top-K<=1)w=P.id;else break}X(w)},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 w=document.querySelector(`.block[data-bid="${K.id}"]`);if(w)F.observe(w)}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 W6({docId:Z,onError:J,onModeChange:Q,onHandle:X}){let z=W0([]),W=W0(""),G=W0(null),q=W0(""),H=BZ(),[Y,F]=k("blocks"),[K,w]=k(0),[P,A]=k(!0),[_,V]=k(null),D=W0(null),[v,R]=k(null),[x,S]=k(null),[O,N]=k(null),L=W0(O);L.current=O;let[B,M]=k(null),y=W0(),E=W0(null),c=W0(!1),r=W0(0),$0=W0(Promise.resolve()),[m,g]=k(!1),u=W0(null),[I,n]=k(null),[Z0,q0]=k(0),[Q0,J0]=k(0),B0=W0(0),p0=W0([]),i0=W0([]),m0=W0({past:[],future:[],present:null,lastKey:null,lastTime:0}),d0=()=>({blocks:structuredClone(z.current),title:q.current,focusId:G3()}),g0=(U)=>{let C=m0.current;if(!C.present){C.present=d0(),C.lastKey=U,C.lastTime=Date.now();return}let j=Date.now();if(U&&U===C.lastKey&&j-C.lastTime<600){C.present=d0(),C.lastTime=j;return}if(C.past.push(C.present),C.past.length>200)C.past.shift();C.present=d0(),C.future=[],C.lastKey=U,C.lastTime=j},h0=(U)=>{if(z.current=structuredClone(U.blocks),q.current=U.title,S(null),N(null),w((C)=>C+1),Y0(),U.focusId)requestAnimationFrame(()=>x0(U.focusId,!0))},_0=()=>{let U=m0.current;if(!U.past.length)return;if(U.present)U.future.push(U.present);let C=U.past.pop();U.present=C,U.lastKey=null,h0(C)},a0=()=>{let U=m0.current;if(!U.future.length)return;if(U.present)U.past.push(U.present);let C=U.future.pop();U.present=C,U.lastKey=null,h0(C)},O0=()=>{g0(null),w((U)=>U+1)},u0=()=>{A(!0),V(null),g(!1),m0.current={past:[],future:[],present:null,lastKey:null,lastTime:0},a.getDocument(Z).then((U)=>{q.current=U.title??"",W.current=U.body??"",z.current=rZ(U.body),E.current=U.version??null,c.current=!1,A(!1),O0()}).catch((U)=>J(String(U.message)))};l(()=>{return u0(),()=>clearTimeout(y.current)},[Z]),l(()=>{let U=(C)=>{if(!c.current)return;C.preventDefault(),C.returnValue=""};return window.addEventListener("beforeunload",U),()=>window.removeEventListener("beforeunload",U)},[]),l(()=>{let U=(C)=>{if(!C.detail?.datasets?.some((b)=>b==="documents"||b==="doc_blocks"))return;(async()=>{try{if(c.current)await w0();let b=await a.getDocument(Z);if(b.version!=null&&b.version===E.current)return;let d=G3(),G0=d?K9(z.current).findIndex((U0)=>U0.id===d):-1,P0=d?Q6(d):null;if(q.current=b.title??"",W.current=b.body??"",z.current=rZ(b.body),E.current=b.version??null,c.current=!1,g(!1),w((U0)=>U0+1),G0>=0)requestAnimationFrame(()=>{let U0=K9(z.current),b0=U0[Math.min(G0,U0.length-1)];if(b0)X6(b0.id,P0??0)});s("已合并其他设备的修改")}catch{}})()};return document.addEventListener(t9,U),()=>document.removeEventListener(t9,U)},[Z]);let Y0=()=>{c.current=!0,clearTimeout(y.current),y.current=setTimeout(l0,700)},r0=()=>{if(Y==="source")return W.current=G.current?.value??W.current,W.current;return WZ(z.current),R$(z.current)},K0=(U={})=>a.updateDocument(Z,{title:q.current,body:r0(),...U.force||E.current==null||e0()?{}:{if_match:E.current}}).then((C)=>{E.current=C.version??null,c.current=!1,r.current=0,g(!1)}).catch((C)=>{if(C instanceof f9&&C.code==="stale"){g(!0);return}J(String(C.message)),r.current=Math.min(Math.max(r.current*2,1000),30000),clearTimeout(y.current),y.current=setTimeout(l0,r.current)}),l0=(U={})=>$0.current=$0.current.then(()=>K0(U)),w0=async()=>{clearTimeout(y.current),await l0()},h=(U)=>{if(U===Y)return;if(U==="source"){W.current=r0(),V(null),R(null),S(null),F("source"),Q?.("source"),requestAnimationFrame(()=>{if(G.current)G.current.value=W.current,Y3(G.current),G.current.focus()});return}W.current=G.current?.value??W.current,z.current=rZ(W.current),F("blocks"),Q?.("blocks"),w((C)=>C+1),requestAnimationFrame(()=>{let C=K9(z.current)[0];if(C)x0(C.id)})};l(()=>{return X?.({getMode:()=>Y,setMode:h,snapshotMarkdown:r0,flushSave:w0,reload:u0}),()=>X?.(null)},[X,Y]);let T=z.current,p=x?a$(T,x.anchorId,x.focusId):[],i=(U,C="p",j={})=>{let b=D9(C,j);if(!U)T.push(b);else{let d=T0(T,U);if(d)d.parent.splice(d.index+1,0,b);else T.push(b)}return O0(),requestAnimationFrame(()=>x0(b.id)),Y0(),b},F0=(U,C=!1)=>{let j=U;while(j&&tZ(j))j=j.children?.[0]??null;if(j)x0(j.id,C)},t=(U="p",C={})=>{let j=D9(U,C);return T.unshift(j),O0(),requestAnimationFrame(()=>x0(j.id)),Y0(),j},e=()=>{let U=document.querySelector(".doc-title");if(!U)return;U.focus();let C=document.createRange();C.selectNodeContents(U),C.collapse(!1);let j=getSelection();j?.removeAllRanges(),j?.addRange(C)},X0=(U,C,j={})=>{let b=T0(T,U)?.block;if(!b)return;let d=j.content===void 0||j.content===b.content?Q6(U):null;if(!u1(T,U,C,j))return;if(O0(),C!=="divider"&&C!=="table")requestAnimationFrame(()=>d!=null?X6(U,d):x0(U));Y0()},L0=(U)=>{if(!eZ(T,U))return;O0(),Y0()},v0=(U,C)=>{U.content=$8(U,C),g0("text:"+U.id);let j=C.textContent??"";if(j.startsWith("/")){let b=yG();V((d)=>({blockId:U.id,x:b.x,y:b.y,query:j.slice(1),idx:d?.blockId===U.id?d.idx:0}))}else if(_)V(null);Y0()},V0=(U,C,j)=>{let b=W3(U.clipboardData);if(b.length){U.preventDefault(),c3(C,j,b);return}let d=U.clipboardData?.getData("text/html"),P0=(d?C$(d):U.clipboardData?.getData("text/plain")??"").replace(/\r\n?/g,`
|
|
140
|
+
`);if(!P0.trim())return;U.preventDefault();let U0=rZ(P0);if(!U0.length)return;let b0=T0(T,C.id);if(!b0)return;let{before:X9,after:C9}=z6(j);if(U0.length===1&&U0[0].type==="p"&&(X9.trim()!==""||C9.trim()!=="")){C.content=X9+U0[0].content+C9;let c9=H3(X9+U0[0].content);O0(),Y0(),requestAnimationFrame(()=>i1(C.id,c9));return}let p9=[...U0],d9=C9.trim()!==""?D9("p",{content:C9}):null;if(d9)p9.push(d9);if(X9.trim()===""&&!b0.block.children?.length)b0.parent.splice(b0.index,1,...p9);else C.content=X9,b0.parent.splice(b0.index+1,0,...p9);O0(),Y0();let U8=d9??p9[p9.length-1];requestAnimationFrame(()=>x0(U8.id,!d9))},F6=(U)=>{let C=[];for(let j of U){let b=O5[_1(j.type)];if(j.size>b)s(`${j.name||"文件"} 超过 ${Math.round(b/1024/1024)}MB 上限`);else C.push(j)}return C},U6=(U,C)=>{let j=M5(U.name||"文件"),b=_1(U.type);a.uploadDocBlob(U,(d,G0)=>C5(j,d,G0)).then((d)=>{let G0=D9(b,{src:d.url,name:U.name||void 0,size:b==="file"?d.size:void 0}),P0=T0(z.current,C);if(P0)P0.parent.splice(P0.index,1,G0);else z.current.push(G0);d6(j,!0)}).catch((d)=>{eZ(z.current,C),d6(j,!1,()=>IZ([U],{mode:"append"})),s(`上传失败:${d.message}`)}).finally(()=>{O0(),Y0()})},IZ=(U,C)=>{let j=F6(U);if(!j.length)return;let b=j.map((d)=>D9("uploading",{name:d.name||void 0}));if(C.mode==="caret"){let d=T0(z.current,C.block.id);if(!d)return;let{before:G0,after:P0}=z6(C.el),U0=[...b];if(P0.trim()!=="")U0.push(D9("p",{content:P0}));if(G0.trim()===""&&!d.block.children?.length)d.parent.splice(d.index,1,...U0);else C.block.content=G0,d.parent.splice(d.index+1,0,...U0)}else if(C.mode==="at"){let d=T0(z.current,C.targetId);if(!d)return;d.parent.splice(d.index+(C.where==="after"?1:0),0,...b)}else if(C.mode==="append")z.current.push(...b);else{let d=T0(z.current,C.blockId);if(!d)z.current.push(...b);else if(d.block.type==="p"&&!d.block.content.trim()&&!d.block.children?.length)d.parent.splice(d.index,1,...b);else d.parent.splice(d.index+1,0,...b)}O0(),Y0(),j.forEach((d,G0)=>U6(d,b[G0].id))},c3=(U,C,j)=>IZ(j,{mode:"caret",block:U,el:C}),i3=(U,C,j)=>IZ(j,{mode:"at",targetId:U,where:C}),a3=(U)=>IZ(U,{mode:"append"}),n3=(U,C)=>{let j=document.createElement("input");j.type="file",j.multiple=!0,j.accept=U==="image"?"image/*":U==="video"?"video/*":U==="audio"?"audio/*":"",j.onchange=()=>{let b=Array.from(j.files??[]);if(b.length)IZ(b,{mode:"slot",blockId:C})},j.click()},XJ=(U,C)=>{let j=T0(T,U);if(!j)return;if(Object.assign(j.block,C),"width"in C&&!C.width)delete j.block.width;g0("void:"+U),O0(),Y0()},l3=(U,C)=>{if(U.target.closest("textarea, input, select, video, audio"))return;if(U.key==="Backspace"||U.key==="Delete"){U.preventDefault();let j=x9(T,C.id),b=sZ(T,C.id);L0(C.id),requestAnimationFrame(()=>j?x0(j.id,!0):b?x0(b.id):void 0)}else if(U.key==="Enter")U.preventDefault(),i(C.id);else if(U.key==="ArrowUp"){let j=x9(T,C.id);if(j)U.preventDefault(),x0(j.id,!0)}else if(U.key==="ArrowDown"){let j=sZ(T,C.id);if(j)U.preventDefault(),x0(j.id)}},r3=async(U,C)=>{try{let j=await a.uploadDocBlob(new File([C],"annotated.png",{type:"image/png"}));XJ(U,{src:j.url}),M((b)=>b&&b.id===U?{...b,src:j.url}:b)}catch(j){s(`保存失败:${j.message}`)}},o3=(U)=>{let C=U.src??"";if(typeof window<"u"&&window.metahubDesktop?.preview)window.metahubDesktop.preview.open({src:C,name:U.name,blockId:U.id});else M({id:U.id,src:C,name:U.name})};l(()=>{let U=null;try{U=new BroadcastChannel("mh-doc-image")}catch{return}return U.onmessage=(C)=>{let j=C.data;if(!j||j.action!=="replace"||!j.blockId||!j.url)return;let b=T0(z.current,j.blockId);if(!b)return;b.block.src=j.url,O0(),Y0()},()=>U?.close()},[]);let K8=_?I1.filter((U)=>(U.t+U.type+U.d).toLowerCase().includes(_.query.toLowerCase())):[],zJ=(U)=>{if(!_)return;let C=_.blockId;if(V(null),oZ(U.type))n3(U.type,C);else X0(C,U.type)},WJ=(U,C)=>{X0(U.id,C.type,C),V(null)},t3=(U,C)=>{U.content="",U.children??=[];let j=D9(C.type,C);U.children.unshift(j),V(null),O0(),requestAnimationFrame(()=>x0(j.id)),Y0()},s3=(U)=>{WZ(T);let C=Q6(U);if(!x1(T,U))return;O0(),requestAnimationFrame(()=>C!=null?X6(U,C):x0(U)),Y0()},GJ=(U)=>{WZ(T);let C=Q6(U);if(!m1(T,U))return;O0(),requestAnimationFrame(()=>C!=null?X6(U,C):x0(U)),Y0()},e3=async(U)=>{if(U==="createLink"){let C=getSelection(),j=C&&C.rangeCount?C.getRangeAt(0).cloneRange():null;if(!j||j.collapsed)return;R(null);let b=(await Y9({title:"插入链接",label:"链接地址",placeholder:"https://…"}))?.trim();if(!b)return;j.startContainer.parentElement?.closest?.(".editable")?.focus();let G0=getSelection();G0?.removeAllRanges(),G0?.addRange(j),document.execCommand("createLink",!1,b)}else if(U==="code")OG();else document.execCommand(U,!1,void 0);wG(T),Y0(),p1(R)},HZ=()=>S(null),qJ=()=>{let U=K9(T);if(!U.length)return;$6(),S({anchorId:U[0].id,focusId:U[U.length-1].id})},L6=(U)=>{WZ(T);let C=n$(T,U);if(HZ(),O0(),C)requestAnimationFrame(()=>x0(C,!0));Y0()},Z2=(U,C)=>{if(WZ(T),!(C==="indent"?t$(T,U):s$(T,U)).length)return;O0(),Y0()},HJ=(U)=>{WZ(T);let C=l$(T,U);if(C.length)S({anchorId:C[0],focusId:C[C.length-1]});O0(),Y0()},J2=(U)=>{let C=o$(T,U);if(C)navigator.clipboard?.writeText(C).catch(()=>{})},$2=(U,C)=>{WZ(T);let j=!1;for(let b of I9(T,U)){let d=T0(T,b)?.block;if(!d||oZ(d.type)||d.type==="uploading")continue;if(u1(T,b,C,{content:d.content}))j=!0}if(!j)return;O0(),Y0()},YJ=(U)=>{if(U.target?.closest?.(".doc-source"))return;let j=U.metaKey||U.ctrlKey;if(j&&(U.key==="z"||U.key==="Z")){if(U.preventDefault(),U.shiftKey)a0();else _0();return}if(j&&U.key==="y"){U.preventDefault(),a0();return}if(L.current)return;if(!x)return;let b=p;if(!b.length)return;if(U.key==="Escape"){U.preventDefault();let d=x.anchorId;HZ(),x0(d,!0);return}if(U.key==="Tab"){U.preventDefault(),Z2(b,U.shiftKey?"outdent":"indent");return}if(U.key==="Backspace"||U.key==="Delete"){U.preventDefault(),L6(b);return}if(j&&U.key==="d"){U.preventDefault(),HJ(b);return}if(j&&(U.key==="c"||U.key==="x")){if(U.preventDefault(),J2(b),U.key==="x")L6(b);return}if(j&&U.key==="a"){U.preventDefault(),qJ();return}if(U.key==="ArrowDown"||U.key==="ArrowUp"){U.preventDefault();let d=K9(T),G0=d.findIndex((P0)=>P0.id===x.focusId);if(G0<0)return;if(U.shiftKey){let P0=U.key==="ArrowDown"?Math.min(G0+1,d.length-1):Math.max(G0-1,0);S({anchorId:x.anchorId,focusId:d[P0].id})}else{let P0=U.key==="ArrowDown"?b[b.length-1]:b[0];HZ(),x0(P0,U.key==="ArrowDown")}return}if(U.key.length===1&&!j){let d=b[b.length-1];HZ(),x0(d,!0)}},F8=W0(null),Q2=(U)=>{if(U.button!==0)return;let C=U.target;if(C.closest(".gutter")||C.closest(".pop")||C.closest(".doc-col-resizer")||C.closest("input, button, select, a")||C.closest("video, audio, iframe, textarea, .img-handle"))return;let b=NG(U.target)?.getAttribute("data-bid")??null;if(!b){let G0=C.classList.contains("doc")?C:null;if(Y==="blocks"&&G0){let P0=G0.querySelectorAll(".block"),U0=P0.length?P0[P0.length-1]:G0.querySelector(".doc-meta"),b0=U0?U0.getBoundingClientRect().bottom:0;if(U.clientY>b0){U.preventDefault();let X9=T[T.length-1];if(X9&&j9(X9))x0(X9.id,!0);else i(null);return}}HZ();return}if(U.shiftKey&&x){U.preventDefault(),$6(),S({anchorId:x.anchorId,focusId:b});return}if(!!C.closest(".editable, .code-input, .doc-td")){if(F8.current={anchorId:b,started:!1,sx:U.clientX,sy:U.clientY,mode:"text"},x)HZ()}else U.preventDefault(),$6(),S({anchorId:b,focusId:b}),F8.current={anchorId:b,started:!0,sx:U.clientX,sy:U.clientY,mode:"block"}};l(()=>{let U=(j)=>{let b=F8.current;if(!b)return;let G0=document.elementFromPoint(j.clientX,j.clientY)?.closest(".block[data-bid]")?.getAttribute("data-bid")??null;if(b.mode==="text"){if(G0&&G0!==b.anchorId)b.mode="block",$6(),S({anchorId:b.anchorId,focusId:G0});return}if(!b.started&&Math.abs(j.clientX-b.sx)+Math.abs(j.clientY-b.sy)<4)return;if(b.started=!0,c1(!0),G0)S({anchorId:b.anchorId,focusId:G0})},C=()=>{F8.current=null,c1(!1)};return window.addEventListener("mousemove",U),window.addEventListener("mouseup",C),()=>{window.removeEventListener("mousemove",U),window.removeEventListener("mouseup",C)}},[]);let KJ=W0(YJ);KJ.current=YJ,l(()=>{let U=(C)=>KJ.current(C);return document.addEventListener("keydown",U,!0),()=>document.removeEventListener("keydown",U,!0)},[]);let FJ=(U,C,j)=>document.querySelector(`.block[data-bid="${U}"] .doc-td[data-r="${C}"][data-c="${j}"]`),X2=(U,C,j)=>{N(null),requestAnimationFrame(()=>{let b=FJ(U,C,j);if(!b)return;b.focus();let d=document.createRange();d.selectNodeContents(b),d.collapse(!1);let G0=getSelection();G0?.removeAllRanges(),G0?.addRange(d)})},z2=(U)=>{let C=document.querySelector(`.block[data-bid="${U}"] table.doc-table`);if(!C)return;C.classList.remove("copied"),C.offsetWidth,C.classList.add("copied"),setTimeout(()=>C.classList.remove("copied"),260)};l(()=>{if(!O)return;let U=(C)=>{let j=L.current;if(!j)return;let b=document.activeElement;if(b?.isContentEditable||b?.tagName==="INPUT"||b?.tagName==="TEXTAREA")return;let d=T0(z.current,j.blockId)?.block,G0=d?.rows;if(!G0)return;let P0=G0.length,U0=G0[0]?.length??0,b0=$Z(j.sel),{r:X9,c:C9}=j.sel.b,p9=j.sel.a.r===j.sel.b.r&&j.sel.a.c===j.sel.b.c,d9=(c9,SZ)=>Math.max(0,Math.min(SZ,c9)),U8={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(C.key in U8){C.preventDefault();let[c9,SZ]=U8[C.key],i9={r:d9(X9+c9,P0-1),c:d9(C9+SZ,U0-1)};N({blockId:j.blockId,sel:C.shiftKey?{a:j.sel.a,b:i9}:{a:i9,b:i9}}),requestAnimationFrame(()=>FJ(j.blockId,i9.r,i9.c)?.scrollIntoView({block:"nearest",inline:"nearest"}))}else if((C.metaKey||C.ctrlKey)&&C.key.toLowerCase()==="c")C.preventDefault(),navigator.clipboard?.writeText(p5(G0,b0)).catch(()=>{}),z2(j.blockId);else if(C.key==="Escape")N(null);else if(C.key==="Delete"||C.key==="Backspace")C.preventDefault(),d.rows=G0.map((c9,SZ)=>c9.map((i9,U2)=>x8(b0,SZ,U2)?"":i9)),O0(),Y0();else if(p9&&(C.key==="Enter"||C.key==="F2"))C.preventDefault(),X2(j.blockId,X9,C9)};return addEventListener("keydown",U),()=>removeEventListener("keydown",U)},[O]),l(()=>{if(!O)return;let U=(C)=>{if(!C.target?.closest?.(`.block[data-bid="${O.blockId}"]`))N(null)};return addEventListener("pointerdown",U,!0),()=>removeEventListener("pointerdown",U,!0)},[O]),l(()=>{if(!_)return;D.current?.querySelector(".item.sel")?.scrollIntoView({block:"nearest"})},[_?.idx,_?.blockId]),l(()=>{if(!_)return;let U=()=>V(null);return document.addEventListener("focusout",U),()=>document.removeEventListener("focusout",U)},[!!_]);let W2=(U,C,j)=>{if(U.isComposing||U.keyCode===229)return;if(_&&_.blockId===C.id){if(U.key==="ArrowDown"){U.preventDefault(),V({..._,idx:Math.min(_.idx+1,K8.length-1)});return}if(U.key==="ArrowUp"){U.preventDefault(),V({..._,idx:Math.max(_.idx-1,0)});return}if(U.key==="Enter"){U.preventDefault();let b=K8[_.idx];if(b)zJ(b);return}if(U.key==="Escape"){V(null);return}}if((U.metaKey||U.ctrlKey)&&(U.key==="a"||U.key==="A")){if(_G(j))U.preventDefault(),qJ();return}if(U.key==="Tab"){U.preventDefault(),(U.shiftKey?GJ:s3)(C.id);return}if((U.key==="ArrowUp"||U.key==="ArrowDown")&&!U.shiftKey&&!d1()){let b=q3(j);if(U.key==="ArrowUp"&&b.first){U.preventDefault();let d=x9(T,C.id);if(d)F0(d,!0);else e();return}else if(U.key==="ArrowDown"&&b.last){let d=sZ(T,C.id);if(d){U.preventDefault(),F0(d);return}}}if(U.key===" "&&!d1()&&(C.type==="p"||vZ(C.type)||C.type==="bullet")){let{before:b,after:d}=z6(j);if(C.type==="p"||vZ(C.type)){let G0=T1(b+" "," ");if(G0&&(C.type==="p"||vZ(G0.type))){U.preventDefault(),WJ(C,{...G0,content:d});return}}else{let G0=I$(b);if(G0){U.preventDefault(),X0(C.id,"todo",{content:d,checked:G0.checked});return}}}if(U.key==="Enter"&&!U.shiftKey&&C.type!=="code"){let b=T1((j.textContent??"").trim(),"Enter");if(b){if(U.preventDefault(),Q9(C.type)&&b.type==="code"){t3(C,b);return}WJ(C,b);return}U.preventDefault();let d=(j.textContent??"").trim()==="";if(Q9(C.type)&&d&&!(C.children??[]).length){X0(C.id,"p");return}let{before:G0,after:P0}=z6(j);C.content=G0,i(C.id,Q9(C.type)?C.type:"p",{content:P0})}else if(U.key==="Backspace"){if((j.textContent??"")==="")if(U.preventDefault(),C.type!=="p")X0(C.id,"p");else{let b=x9(T,C.id);if(b)L0(C.id),requestAnimationFrame(()=>x0(b.id,!0))}else if(!d1()&&CG(j))if(Q9(C.type))U.preventDefault(),X0(C.id,"p",{content:$8(C,j)});else{let b=x9(T,C.id);if(b&&b.type!=="code"&&b.type!=="table"&&b.type!=="divider"){U.preventDefault();let d=H3(b.content);b.content+=$8(C,j),L0(C.id),requestAnimationFrame(()=>{let G0=document.querySelector(`.block[data-bid="${b.id}"] .editable`);if(G0){let P0=J8(b.content);if(G0.innerHTML!==P0)G0.innerHTML=P0}i1(b.id,d)})}}}},G2=(U,C,j)=>{if(U.isComposing||U.keyCode===229)return;let{value:b,selectionStart:d,selectionEnd:G0}=j;if(U.key==="Tab"){if(U.preventDefault(),U.shiftKey){GJ(C.id);return}document.execCommand("insertText",!1," ");return}if(U.key==="ArrowDown"&&d===G0&&b.indexOf(`
|
|
141
|
+
`,d)===-1){U.preventDefault();let P0=sZ(T,C.id);if(P0){F0(P0);return}let U0=T0(T,C.id)?.parentBlock;if(U0&&tZ(U0)&&U0.children?.[0]?.id===C.id)i(U0.id,"p");else i(C.id,"p");return}if(U.key==="ArrowUp"&&d===G0&&b.lastIndexOf(`
|
|
142
|
+
`,d-1)===-1){U.preventDefault();let P0=T0(T,C.id)?.parentBlock,U0=P0&&tZ(P0)&&P0.children?.[0]?.id===C.id?x9(T,P0.id):x9(T,C.id);if(U0)F0(U0,!0);else e();return}if(U.key==="Backspace"&&b===""){U.preventDefault();let P0=T0(T,C.id),U0=P0?.parentBlock;if(P0&&U0&&Q9(U0.type)&&U0.content.trim()===""){if(P0.parent.splice(P0.index,1),P0.parent.length===0)delete U0.children;O0(),requestAnimationFrame(()=>x0(U0.id)),Y0();return}X0(C.id,"p")}},q2=(U,C)=>{U.stopPropagation();let j=p,b=j.length>1&&j.includes(C.id),d=b?I9(T,j).length:1,G0=b||!oZ(C.type)&&C.type!=="uploading";y0(U,(P0)=>$(o,{children:[G0&&$(o,{children:[$(j0,{children:b?`转换为(${d} 个块)`:"转换为"},void 0,!1,void 0,this),I1.filter((U0)=>U0.type!=="divider"&&!oZ(U0.type)&&(!b||U0.type!=="table")).map((U0)=>$(z0,{icon:U0.ic,label:U0.t,checked:!b&&C.type===U0.type,onClick:()=>{b?$2(j,U0.type):X0(C.id,U0.type,{content:C.content}),P0()}},U0.type,!1,void 0,this)),$(S0,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(z0,{icon:"copy",label:b?"复制块组":"复制块",onClick:()=>{if(b)HJ(j);else{let U0=T0(T,C.id);if(U0)U0.parent.splice(U0.index+1,0,e8(C));O0(),Y0()}P0()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:b?"删除块组":"删除块",danger:!0,onClick:()=>{if(b)L6(j);else L0(C.id);P0()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},P6=W0(null),H2=(U)=>{let C=U.parentElement;while(C){let j=getComputedStyle(C).overflowY;if((j==="auto"||j==="scroll")&&C.scrollHeight>C.clientHeight)return C;C=C.parentElement}return null},UJ=(U)=>{if(Y==="source"){let C=G.current,j=i0.current[U];if(!C||!j)return;C.setSelectionRange(j[0],j[1]);let b=C.value.slice(0,j[0]).split(`
|
|
143
|
+
`).length-1,d=getComputedStyle(C),G0=parseFloat(d.lineHeight)||20,P0=(parseFloat(d.paddingTop)||0)+b*G0,U0=H2(C);if(U0){let b0=C.getBoundingClientRect().top-U0.getBoundingClientRect().top+U0.scrollTop;U0.scrollTo({top:Math.max(0,b0+P0-U0.clientHeight/2),behavior:"smooth"})}else{let b0=C.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,b0+P0-innerHeight/2),behavior:"smooth"})}}else{let C=p0.current,j=C[U]??null;if(z3(C,j),j){let b=j.startContainer;(b.nodeType===3?b.parentElement:b)?.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"})}}};l(()=>{if(!I){J6(),p0.current=[],i0.current=[],J0(0);return}let U={caseSensitive:I.caseSensitive,wholeWord:I.wholeWord},C=setTimeout(()=>{let j;if(Y==="source"){let d=G.current?.value??W.current;i0.current=E1(d,I.term,U),p0.current=[],J6(),j=i0.current.length}else{let d=u.current;p0.current=d?X3(d,I.term,U):[],i0.current=[],j=p0.current.length}let b=j?Math.min(B0.current,j-1):0;B0.current=b,q0(b),J0(j),UJ(b)},110);return()=>clearTimeout(C)},[I,K,Y]),l(()=>()=>J6(),[]),l(()=>{let U=(C)=>{if((C.metaKey||C.ctrlKey)&&!C.altKey&&C.key.toLowerCase()==="f")C.preventDefault(),n((j)=>j??{term:"",caseSensitive:!1,wholeWord:!1}),requestAnimationFrame(()=>{let j=u.current?.parentElement?.querySelector(".find-bar input")??document.querySelector(".find-bar input");j?.focus(),j?.select()})};return window.addEventListener("keydown",U),()=>window.removeEventListener("keydown",U)},[]);let Y2=(U)=>{let C=Y==="source"?i0.current.length:p0.current.length;if(!C)return;let j=(B0.current+U+C)%C;B0.current=j,q0(j),UJ(j)},K2=()=>n(null);if(P)return $("div",{class:"empty",children:"加载中…"},void 0,!1,void 0,this);let F2=new Set(p),LJ=(U,C=0)=>{let j=s8(U.filter((b)=>!j9(b)));return U.map((b)=>$(HG,{renderKey:K,block:b,depth:C,selected:F2.has(b.id),number:b.type==="numbered"?j.get(b.id)??1:0,onInput:(d)=>v0(b,d),onPaste:(d,G0)=>V0(d,b,G0),onLangInput:(d)=>{b.lang=d,O0(),Y0()},onKeyDown:(d,G0)=>W2(d,b,G0),onCodeInput:(d)=>{b.content=d,g0("text:"+b.id),Y0()},onCodeKeyDown:(d,G0)=>G2(d,b,G0),onCellInput:(d,G0,P0)=>{if(!b.rows?.[d])return;b.rows[d][G0]=P0,g0("table:"+b.id+":"+d+":"+G0),Y0()},onTableChange:()=>{O0(),Y0()},cellSel:O?.blockId===b.id?O.sel:null,onCellSel:(d)=>N(d?{blockId:b.id,sel:d}:null),onAdd:()=>i(b.id),onMenu:(d)=>q2(d,b),onToggle:()=>{b.checked=!b.checked,O0(),Y0()},onVoidChange:(d)=>XJ(b.id,d),onVoidKey:(d)=>l3(d,b),onPreview:()=>o3(b),dragRef:P6,onReorder:(d,G0)=>{let P0=p;if(P0.length>1&&P0.includes(d)?r$(T,P0,b.id,G0):i$(T,d,b.id,G0))O0(),Y0()},children:b.children?.length?LJ(b.children,C+1):null},b.id,!1,void 0,this))};return $(o,{children:[Y==="blocks"&&$(qG,{blocks:T},K,!1,void 0,this),I&&$(PG,{term:I.term,caseSensitive:I.caseSensitive,wholeWord:I.wholeWord,idx:Z0,total:Q0,onTerm:(U)=>{B0.current=0,n((C)=>C?{...C,term:U}:C)},onToggleCase:()=>n((U)=>U?{...U,caseSensitive:!U.caseSensitive}:U),onToggleWord:()=>n((U)=>U?{...U,wholeWord:!U.wholeWord}:U),onStep:Y2,onClose:K2},void 0,!1,void 0,this),$("div",{ref:u,class:"doc"+(Y==="source"?" source-mode":""),onMouseDown:(U)=>Q2(U),onMouseUp:()=>p1(R),onKeyUp:(U)=>{if(U.shiftKey||U.key.startsWith("Arrow"))p1(R)},onDragOver:(U)=>{if(P6.current||Y==="source")return;if(!Array.from(U.dataTransfer?.items??[]).some((j)=>j.kind==="file"))return;if(U.preventDefault(),U.dataTransfer)U.dataTransfer.dropEffect="copy";let C=K3(u.current,U.clientY);if(C)U3(C,U);else TZ()},onDragLeave:(U)=>{if(!U.relatedTarget||!u.current?.contains(U.relatedTarget))TZ()},onDrop:(U)=>{if(P6.current||Y==="source")return;let C=W3(U.dataTransfer);if(!C.length)return;U.preventDefault();let j=K3(u.current,U.clientY);if(j?.dataset.bid){let b=I8(j,U,"y");TZ(),i3(j.dataset.bid,b,C)}else TZ(),a3(C)},children:[m&&$("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:()=>u0(),children:"载入最新(弃本地改动)"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>void l0({force:!0}),children:"用本地版本覆盖"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"doc-title",contentEditable:!0,onInput:(U)=>{q.current=U.target.textContent??"",g0("title"),Y0()},onKeyDown:(U)=>{if(U.isComposing||U.keyCode===229)return;if(U.key==="Enter"){U.preventDefault();let C=T[0];if(C&&j9(C))x0(C.id);else t("p");return}if(U.key==="ArrowDown"&&q3(U.currentTarget).last&&T[0])U.preventDefault(),F0(T[0])},dangerouslySetInnerHTML:{__html:q.current}},void 0,!1,void 0,this),$("div",{class:"doc-meta",children:[$("span",{children:[$(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this),h1(T)," 个块"]},void 0,!0,void 0,this),$("span",{children:"实时同步"},void 0,!1,void 0,this),H.has(Z)&&$("button",{class:"doc-shared",title:"已分享 · 管理分享",onClick:()=>N9({kind:"doc",ref:Z,title:q.current}),children:[$(f,{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:(U)=>{let C=U.currentTarget;W.current=C.value,Y3(C),Y0()}},void 0,!1,void 0,this):LJ(T),Y==="blocks"&&T.length===0&&$("div",{class:"editable",style:{color:"var(--muted)",cursor:"text"},onClick:()=>i(null),children:"点此书写,或输入 “/” 选择块类型…"},void 0,!1,void 0,this),_&&K8.length>0&&(()=>{let j=innerHeight-(_.y+22)-8,b=_.y-8,d=j>=240||j>=b,G0=Math.min(_.x,innerWidth-270),P0=Math.min(d?j:b,Math.round(innerHeight*0.7)),U0=d?{left:G0,top:_.y+22,maxHeight:P0,minWidth:260}:{left:G0,bottom:innerHeight-_.y+6,maxHeight:P0,minWidth:260};return $("div",{class:"pop",style:U0,ref:D,children:[$(j0,{children:"基础块"},void 0,!1,void 0,this),K8.map((b0,X9)=>$("button",{class:"item"+(X9===_.idx?" sel":""),onMouseDown:(C9)=>{C9.preventDefault(),zJ(b0)},children:[$("span",{class:"lico",children:$(f,{name:b0.ic,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:b0.t},void 0,!1,void 0,this),$("span",{class:"d",children:b0.d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},b0.type,!0,void 0,this))]},void 0,!0,void 0,this)})(),v&&!x&&$(BG,{x:v.x,y:v.y,onCommand:e3},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B&&$(c$,{src:B.src,name:B.name,onClose:()=>M(null),onReplace:(U)=>void r3(B.id,U)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function W3(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 HG({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:w,cellSel:P,onCellSel:A,onAdd:_,onMenu:V,onToggle:D,onVoidChange:v,onVoidKey:R,onPreview:x,dragRef:S,onReorder:O,children:N}){let L=W0(null);l(()=>{let y=L.current;if(y&&Z.type!=="code"){let E=J8(Z.content);if(y.innerHTML!==E&&zZ(y.innerHTML)!==Z.content)y.innerHTML=E}},[X,Z.type]);let B=tZ(Z),M="block b-"+Z.type+(Z.type==="todo"&&Z.checked?" b-done":"")+(B?" list-code-host":"")+(z?" selected":"");return $("div",{class:"block-wrap"+(Q?" nested":""),children:[$("div",{class:M,"data-bid":Z.id,onDragOver:(y)=>{if(S.current&&S.current!==Z.id){if(y.preventDefault(),y.dataTransfer)y.dataTransfer.dropEffect="move";U3(y.currentTarget,y)}},onDrop:(y)=>{if(S.current){y.preventDefault(),y.stopPropagation();let E=y.currentTarget.classList.contains("drop-after")?"after":"before",c=S.current;S.current=null,TZ(),O(c,E)}},children:[$("div",{class:"gutter",children:[$("button",{title:"在下方插入",onClick:_,children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"grip",title:"拖拽移动 · 点击菜单",draggable:!0,onClick:V,onDragStart:(y)=>{if(S.current=Z.id,y.dataTransfer)y.dataTransfer.effectAllowed="move",y.dataTransfer.setData("text/plain",Z.id);y.currentTarget.closest(".block").classList.add("dragging")},onDragEnd:(y)=>{y.currentTarget.closest(".block").classList.remove("dragging"),TZ()},children:$(f,{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"?$(UG,{block:Z,renderKey:X,onCellInput:K,onTableChange:w,cellSel:P,onCellSel:A},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:(y)=>R(y),children:Z.type==="image"?$(D$,{block:Z,selected:z,onResize:(y)=>v({width:y}),onPreview:x},void 0,!1,void 0,this):Z.type==="video"?$(x$,{block:Z},void 0,!1,void 0,this):Z.type==="audio"?$(m$,{block:Z},void 0,!1,void 0,this):Z.type==="file"?$(u$,{block:Z},void 0,!1,void 0,this):Z.type==="uploading"?$(h$,{block:Z},void 0,!1,void 0,this):$(E$,{block:Z,selected:z,onChange:(y)=>v({content:y})},void 0,!1,void 0,this)},void 0,!1,void 0,this):$(o,{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:D},void 0,!1,void 0,this)},void 0,!1,void 0,this),B?null:Z.type==="code"?$(FG,{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":YG(Z.type),"data-ph-hint":KG(Z.type)?"slash":"kind",onInput:(y)=>W(y.currentTarget),onPaste:(y)=>G(y,y.currentTarget),onKeyDown:(y)=>H(y,y.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 F3={h1:"标题 1",h2:"标题 2",h3:"标题 3",code:"输入代码…",quote:"引用"};function YG(Z){return F3[Z]??"输入文本,“/” 唤出命令"}function KG(Z){return!(Z in F3)}function FG({block:Z,renderKey:J,onInput:Q,onLangChange:X,onKeyDown:z}){let W=W0(null),G=W0(null),q=W0(null),[H,Y]=k(!1),F=(P)=>{if(G.current)G.current.innerHTML=WG(P,Z.lang);if(q.current){let _=P.split(`
|
|
144
|
+
`).length,V="1";for(let D=2;D<=_;D++)V+=`
|
|
145
|
+
`+D;q.current.textContent=V}let A=W.current;if(A)A.style.height="auto",A.style.height=A.scrollHeight+"px"};l(()=>{let P=W.current;if(P&&P.value!==Z.content)P.value=Z.content;F(Z.content)},[J,Z.lang]);let K=Z.lang??"",w=k1.some((P)=>P.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:(P)=>{let A=P.currentTarget;Q(A.value),F(A.value)},onKeyDown:(P)=>z(P,P.currentTarget),onScroll:(P)=>{let A=G.current?.parentElement;if(A)A.scrollLeft=P.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:(P)=>X(P.currentTarget.value),children:[!w&&$("option",{value:K,children:K||"纯文本"},void 0,!1,void 0,this),k1.map((P)=>$("option",{value:P.id,children:P.label},P.id,!1,void 0,this))]},void 0,!0,void 0,this),$(f,{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 P=W.current?.value??Z.content;navigator.clipboard?.writeText(P).then(()=>{Y(!0),setTimeout(()=>Y(!1),1400)}).catch(()=>{})},children:[$(f,{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 UG({block:Z,renderKey:J,onCellInput:Q,onTableChange:X,cellSel:z,onCellSel:W}){let G=Z.rows??[],q=G[0]?.length??0,H=Z.align??[],Y=W0(null),F=z?$Z(z):null,K=W0([]);if(K.current.length!==q)K.current=Array.from({length:q},(L,B)=>K.current[B]??160);let w=()=>{Z.rows=[...G,Array(q).fill("")],X()},P=()=>{Z.rows=G.map((L)=>[...L,""]),Z.align=[...H,null],X()},A=(L)=>{Z.rows=G.map((M)=>{let y=[...M];return y.splice(L,0,""),y});let B=[...H];B.splice(L,0,null),Z.align=B,X()},_=(L)=>{if(q<=1)return;Z.rows=G.map((B)=>B.filter((M,y)=>y!==L)),Z.align=H.filter((B,M)=>M!==L),X()},V=(L)=>{if(L===0||G.length<=2)return;Z.rows=G.filter((B,M)=>M!==L),X()},D=(L,B)=>{let M=Array.from({length:q},(y,E)=>H[E]??null);M[L]=B,Z.align=M,X()},v=(L,B)=>{let M=Y.current?.querySelector(`.doc-td[data-r="${L}"][data-c="${B}"]`);if(!M)return!1;M.focus();let y=document.createRange();y.selectNodeContents(M),y.collapse(!1);let E=getSelection();return E?.removeAllRanges(),E?.addRange(y),!0},R=(L,B,M)=>{if(L.isComposing||L.keyCode===229)return;if(L.key==="Tab"){if(L.preventDefault(),L.shiftKey){if(M>0)v(B,M-1);else if(B>0)v(B-1,q-1)}else if(M<q-1)v(B,M+1);else if(B<G.length-1)v(B+1,0);else w(),requestAnimationFrame(()=>v(G.length,0));return}if(L.key==="Enter"){if(L.preventDefault(),B<G.length-1)v(B+1,M);else w(),requestAnimationFrame(()=>v(G.length,M));return}},x=(L,B,M)=>{if(L.button!==0)return;if(L.target.closest("button,a,.doc-col-resizer"))return;let y=()=>{document.activeElement?.blur?.(),getSelection()?.removeAllRanges()};if(L.shiftKey&&z){L.preventDefault(),y();let r=z.a;W({a:r,b:{r:B,c:M}}),P9(L,{onMove:($0)=>{let m=document.elementFromPoint($0.clientX,$0.clientY)?.closest?.(".doc-td");if(!m||m.dataset.r==null)return;W({a:r,b:{r:Number(m.dataset.r),c:Number(m.dataset.c)}})}});return}let E={r:B,c:M},c=!1;if(P9(L,{onMove:(r)=>{let $0=document.elementFromPoint(r.clientX,r.clientY)?.closest?.(".doc-td");if(!$0||$0.dataset.r==null)return;let m=Number($0.dataset.r),g=Number($0.dataset.c);if(!c){if(m===E.r&&g===E.c)return;c=!0,y(),document.body.classList.add("cell-selecting")}W({a:E,b:{r:m,c:g}})},onEnd:()=>document.body.classList.remove("cell-selecting")}),z)W(null)},S=(L)=>{if(!F)return;L.preventDefault(),L.stopPropagation();let B={r:F.r0,c:F.c0};document.activeElement?.blur?.(),getSelection()?.removeAllRanges(),P9(L,{threshold:0,onStart:()=>document.body.classList.add("cell-selecting"),onMove:(M)=>{let y=document.elementFromPoint(M.clientX,M.clientY)?.closest?.(".doc-td");if(!y||y.dataset.r==null)return;W({a:B,b:{r:Number(y.dataset.r),c:Number(y.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},O=(L,B)=>{L.preventDefault(),L.stopPropagation(),S8(L,{col:Y.current?.querySelector(`col[data-tcol="${B}"]`)??null,startWidth:K.current[B]??160,min:60,onDone:(M)=>{K.current[B]=M}})},N=(L,B)=>{L.preventDefault(),L.stopPropagation(),y0(L,(M)=>$(o,{children:[$(j0,{children:"对齐方式"},void 0,!1,void 0,this),$(z0,{icon:"alignLeft",label:"左对齐",checked:(H[B]??null)===null||H[B]==="left",onClick:()=>{D(B,"left"),M()}},void 0,!1,void 0,this),$(z0,{icon:"alignCenter",label:"居中",checked:H[B]==="center",onClick:()=>{D(B,"center"),M()}},void 0,!1,void 0,this),$(z0,{icon:"alignRight",label:"右对齐",checked:H[B]==="right",onClick:()=>{D(B,"right"),M()}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"在左侧插入列",onClick:()=>{A(B),M()}},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{A(B+1),M()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除列",danger:!0,onClick:()=>{_(B),M()}},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:Y,class:"doc-table"+(F?" cells-active":""),children:[$("colgroup",{children:Array.from({length:q},(L,B)=>$("col",{"data-tcol":B,style:{width:K.current[B]}},B,!1,void 0,this))},void 0,!1,void 0,this),$("tbody",{children:G.map((L,B)=>$("tr",{children:L.map((M,y)=>{let E=F!=null&&x8(F,B,y),c=F!=null&&B===F.r1&&y===F.c1;return $("td",{class:(B===0?"doc-th":"")+(E?" cellsel":""),style:F?{boxShadow:m8(F,B,y)}:void 0,onPointerDown:(r)=>x(r,B,y),children:[$(LG,{value:M,renderKey:J,r:B,c:y,align:H[y]??null,onInput:(r)=>Q(B,y,r),onKeyDown:(r)=>R(r,B,y)},void 0,!1,void 0,this),c&&$("div",{class:"doc-cell-handle",onPointerDown:(r)=>S(r)},void 0,!1,void 0,this),B===0&&$(o,{children:[$("button",{class:"doc-col-menu",title:"列选项",onMouseDown:(r)=>N(r,y),children:$(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"doc-col-resizer",onPointerDown:(r)=>O(r,y)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y===0&&B>0&&G.length>2&&$("button",{class:"doc-row-del",title:"删除行",onMouseDown:(r)=>{r.preventDefault(),r.stopPropagation(),V(B)},children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},y,!0,void 0,this)})},B,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addcol",title:"新增列",onMouseDown:(L)=>{L.preventDefault(),P()},children:$(f,{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:(L)=>{L.preventDefault(),w()},children:$(f,{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 LG({value:Z,renderKey:J,r:Q,c:X,align:z,onInput:W,onKeyDown:G}){let q=W0(null);return l(()=>{let H=q.current;if(H){let Y=J8(Z);if(H.innerHTML!==Y&&zZ(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(zZ(H.currentTarget.innerHTML)),onKeyDown:(H)=>G(H)},void 0,!1,void 0,this)}function PG({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:[$(f,{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:$(f,{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:$(f,{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:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function BG({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:$(f,{name:W,cls:"ico sm"},void 0,!1,void 0,this)},z,!1,void 0,this))},void 0,!1,void 0,this)}function OG(){let Z=getSelection();if(!Z||Z.isCollapsed)return;document.execCommand("insertHTML",!1,`<code>${Z8(Z.toString())}</code>`)}function WZ(Z){document.querySelectorAll(".doc .block[data-bid]").forEach((J)=>AG(Z,J))}function AG(Z,J){let Q=J.matches(".block[data-bid]")?J:J.closest(".block[data-bid]"),X=Q?.getAttribute("data-bid"),z=X?T0(Z,X)?.block:null;if(!z||!Q)return;let W=Q.querySelector(".editable"),G=Q.querySelector(".code-input");if(W)z.content=$8(z,W);else if(G)z.content=G.value}function NG(Z){return(Z instanceof HTMLElement?Z:Z.parentElement)?.closest(".block[data-bid]")??null}function G3(){return document.activeElement?.closest?.(".doc .block[data-bid]")?.getAttribute("data-bid")??null}function c1(Z){document.querySelector(".doc")?.classList.toggle("selecting",Z)}function $6(){getSelection()?.removeAllRanges(),document.activeElement?.blur?.(),c1(!0)}function p1(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 wG(Z){let J=getSelection()?.anchorNode?.parentElement?.closest?.(".editable"),X=J?.closest(".block")?.getAttribute("data-bid"),z=X?T0(Z,X)?.block:null;if(z&&J)z.content=$8(z,J)}function $8(Z,J){return zZ(J.innerHTML)}function d1(){let Z=getSelection();return!!Z&&!Z.isCollapsed}function MG(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 Q6(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?MG(X):null}function X6(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}i1(Z,J)}function CG(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 yG(){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 q3(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 _G(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 z6(Z){let J=getSelection();if(!J||!J.rangeCount||!Z.contains(J.getRangeAt(0).startContainer))return{before:zZ(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()),zZ(G.innerHTML)};return{before:X((z)=>z.setEnd(Q.startContainer,Q.startOffset)),after:X((z)=>z.setStart(Q.endContainer,Q.endOffset))}}function H3(Z){let J=document.createElement("div");return J.innerHTML=J8(Z),(J.textContent??"").length}function i1(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 x0(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 Y3(Z){Z.style.height="auto",Z.style.height=Z.scrollHeight+"px"}var TZ=A9;function U3(Z,J){I8(Z,J,"y")}function K3(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 RZ=function(Z,J){let z=Z,W=Q8[J],G=null,q=0,H=null,Y=[],F={},K=function(N,L){if(q=z*4+17,G=function(B){let M=Array(B);for(let y=0;y<B;y+=1){M[y]=Array(B);for(let E=0;E<B;E+=1)M[y][E]=null}return M}(q),w(0,0),w(q-7,0),w(0,q-7),_(),A(),D(N,L),z>=7)V(N);if(H==null)H=x(z,W,Y);v(H,L)},w=function(N,L){for(let B=-1;B<=7;B+=1){if(N+B<=-1||q<=N+B)continue;for(let M=-1;M<=7;M+=1){if(L+M<=-1||q<=L+M)continue;if(0<=B&&B<=6&&(M==0||M==6)||0<=M&&M<=6&&(B==0||B==6)||2<=B&&B<=4&&2<=M&&M<=4)G[N+B][L+M]=!0;else G[N+B][L+M]=!1}}},P=function(){let N=0,L=0;for(let B=0;B<8;B+=1){K(!0,B);let M=u9.getLostPoint(F);if(B==0||N>M)N=M,L=B}return L},A=function(){for(let N=8;N<q-8;N+=1){if(G[N][6]!=null)continue;G[N][6]=N%2==0}for(let N=8;N<q-8;N+=1){if(G[6][N]!=null)continue;G[6][N]=N%2==0}},_=function(){let N=u9.getPatternPosition(z);for(let L=0;L<N.length;L+=1)for(let B=0;B<N.length;B+=1){let M=N[L],y=N[B];if(G[M][y]!=null)continue;for(let E=-2;E<=2;E+=1)for(let c=-2;c<=2;c+=1)if(E==-2||E==2||c==-2||c==2||E==0&&c==0)G[M+E][y+c]=!0;else G[M+E][y+c]=!1}},V=function(N){let L=u9.getBCHTypeNumber(z);for(let B=0;B<18;B+=1){let M=!N&&(L>>B&1)==1;G[Math.floor(B/3)][B%3+q-8-3]=M}for(let B=0;B<18;B+=1){let M=!N&&(L>>B&1)==1;G[B%3+q-8-3][Math.floor(B/3)]=M}},D=function(N,L){let B=W<<3|L,M=u9.getBCHTypeInfo(B);for(let y=0;y<15;y+=1){let E=!N&&(M>>y&1)==1;if(y<6)G[y][8]=E;else if(y<8)G[y+1][8]=E;else G[q-15+y][8]=E}for(let y=0;y<15;y+=1){let E=!N&&(M>>y&1)==1;if(y<8)G[8][q-y-1]=E;else if(y<9)G[8][15-y-1+1]=E;else G[8][15-y-1]=E}G[q-8][8]=!N},v=function(N,L){let B=-1,M=q-1,y=7,E=0,c=u9.getMaskFunction(L);for(let r=q-1;r>0;r-=2){if(r==6)r-=1;while(!0){for(let $0=0;$0<2;$0+=1)if(G[M][r-$0]==null){let m=!1;if(E<N.length)m=(N[E]>>>y&1)==1;if(c(M,r-$0))m=!m;if(G[M][r-$0]=m,y-=1,y==-1)E+=1,y=7}if(M+=B,M<0||q<=M){M-=B,B=-B;break}}}},R=function(N,L){let B=0,M=0,y=0,E=Array(L.length),c=Array(L.length);for(let g=0;g<L.length;g+=1){let u=L[g].dataCount,I=L[g].totalCount-u;M=Math.max(M,u),y=Math.max(y,I),E[g]=Array(u);for(let Q0=0;Q0<E[g].length;Q0+=1)E[g][Q0]=255&N.getBuffer()[Q0+B];B+=u;let n=u9.getErrorCorrectPolynomial(I),q0=X8(E[g],n.getLength()-1).mod(n);c[g]=Array(n.getLength()-1);for(let Q0=0;Q0<c[g].length;Q0+=1){let J0=Q0+q0.getLength()-c[g].length;c[g][Q0]=J0>=0?q0.getAt(J0):0}}let r=0;for(let g=0;g<L.length;g+=1)r+=L[g].totalCount;let $0=Array(r),m=0;for(let g=0;g<M;g+=1)for(let u=0;u<L.length;u+=1)if(g<E[u].length)$0[m]=E[u][g],m+=1;for(let g=0;g<y;g+=1)for(let u=0;u<L.length;u+=1)if(g<c[u].length)$0[m]=c[u][g],m+=1;return $0},x=function(N,L,B){let M=L3.getRSBlocks(N,L),y=P3();for(let c=0;c<B.length;c+=1){let r=B[c];y.put(r.getMode(),4),y.put(r.getLength(),u9.getLengthInBits(r.getMode(),N)),r.write(y)}let E=0;for(let c=0;c<M.length;c+=1)E+=M[c].dataCount;if(y.getLengthInBits()>E*8)throw"code length overflow. ("+y.getLengthInBits()+">"+E*8+")";if(y.getLengthInBits()+4<=E*8)y.put(0,4);while(y.getLengthInBits()%8!=0)y.putBit(!1);while(!0){if(y.getLengthInBits()>=E*8)break;if(y.put(236,8),y.getLengthInBits()>=E*8)break;y.put(17,8)}return R(y,M)};F.addData=function(N,L){L=L||"Byte";let B=null;switch(L){case"Numeric":B=vG(N);break;case"Alphanumeric":B=TG(N);break;case"Byte":B=RG(N);break;case"Kanji":B=kG(N);break;default:throw"mode:"+L}Y.push(B),H=null},F.isDark=function(N,L){if(N<0||q<=N||L<0||q<=L)throw N+","+L;return G[N][L]},F.getModuleCount=function(){return q},F.make=function(){if(z<1){let N=1;for(;N<40;N++){let L=L3.getRSBlocks(N,W),B=P3();for(let y=0;y<Y.length;y++){let E=Y[y];B.put(E.getMode(),4),B.put(E.getLength(),u9.getLengthInBits(E.getMode(),N)),E.write(B)}let M=0;for(let y=0;y<L.length;y++)M+=L[y].dataCount;if(B.getLengthInBits()<=M*8)break}z=N}K(!1,P())},F.createTableTag=function(N,L){N=N||2,L=typeof L>"u"?N*4:L;let B="";B+='<table style="',B+=" border-width: 0px; border-style: none;",B+=" border-collapse: collapse;",B+=" padding: 0px; margin: "+L+"px;",B+='">',B+="<tbody>";for(let M=0;M<F.getModuleCount();M+=1){B+="<tr>";for(let y=0;y<F.getModuleCount();y+=1)B+='<td style="',B+=" border-width: 0px; border-style: none;",B+=" border-collapse: collapse;",B+=" padding: 0px; margin: 0px;",B+=" width: "+N+"px;",B+=" height: "+N+"px;",B+=" background-color: ",B+=F.isDark(M,y)?"#000000":"#ffffff",B+=";",B+='"/>';B+="</tr>"}return B+="</tbody>",B+="</table>",B},F.createSvgTag=function(N,L,B,M){let y={};if(typeof arguments[0]=="object")y=arguments[0],N=y.cellSize,L=y.margin,B=y.alt,M=y.title;N=N||2,L=typeof L>"u"?N*4:L,B=typeof B==="string"?{text:B}:B||{},B.text=B.text||null,B.id=B.text?B.id||"qrcode-description":null,M=typeof M==="string"?{text:M}:M||{},M.text=M.text||null,M.id=M.text?M.id||"qrcode-title":null;let E=F.getModuleCount()*N+L*2,c,r,$0,m,g="",u;u="l"+N+",0 0,"+N+" -"+N+",0 0,-"+N+"z ",g+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',g+=!y.scalable?' width="'+E+'px" height="'+E+'px"':"",g+=' viewBox="0 0 '+E+" "+E+'" ',g+=' preserveAspectRatio="xMinYMin meet"',g+=M.text||B.text?' role="img" aria-labelledby="'+S([M.id,B.id].join(" ").trim())+'"':"",g+=">",g+=M.text?'<title id="'+S(M.id)+'">'+S(M.text)+"</title>":"",g+=B.text?'<description id="'+S(B.id)+'">'+S(B.text)+"</description>":"",g+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',g+='<path d="';for($0=0;$0<F.getModuleCount();$0+=1){m=$0*N+L;for(c=0;c<F.getModuleCount();c+=1)if(F.isDark($0,c))r=c*N+L,g+="M"+r+","+m+u}return g+='" stroke="transparent" fill="black"/>',g+="</svg>",g},F.createDataURL=function(N,L){N=N||2,L=typeof L>"u"?N*4:L;let B=F.getModuleCount()*N+L*2,M=L,y=B-L;return fG(B,B,function(E,c){if(M<=E&&E<y&&M<=c&&c<y){let r=Math.floor((E-M)/N),$0=Math.floor((c-M)/N);return F.isDark($0,r)?0:1}else return 1})},F.createImgTag=function(N,L,B){N=N||2,L=typeof L>"u"?N*4:L;let M=F.getModuleCount()*N+L*2,y="";if(y+="<img",y+=' src="',y+=F.createDataURL(N,L),y+='"',y+=' width="',y+=M,y+='"',y+=' height="',y+=M,y+='"',B)y+=' alt="',y+=S(B),y+='"';return y+="/>",y};let S=function(N){let L="";for(let B=0;B<N.length;B+=1){let M=N.charAt(B);switch(M){case"<":L+="<";break;case">":L+=">";break;case"&":L+="&";break;case'"':L+=""";break;default:L+=M;break}}return L},O=function(N){N=typeof N>"u"?2:N;let B=F.getModuleCount()*1+N*2,M=N,y=B-N,E,c,r,$0,m,g={"██":"█","█ ":"▀"," █":"▄"," ":" "},u={"██":"▀","█ ":"▀"," █":" "," ":" "},I="";for(E=0;E<B;E+=2){r=Math.floor((E-M)/1),$0=Math.floor((E+1-M)/1);for(c=0;c<B;c+=1){if(m="█",M<=c&&c<y&&M<=E&&E<y&&F.isDark(r,Math.floor((c-M)/1)))m=" ";if(M<=c&&c<y&&M<=E+1&&E+1<y&&F.isDark($0,Math.floor((c-M)/1)))m+=" ";else m+="█";I+=N<1&&E+1>=y?u[m]:g[m]}I+=`
|
|
146
|
+
`}if(B%2&&N>0)return I.substring(0,I.length-B-1)+Array(B+1).join("▀");return I.substring(0,I.length-1)};return F.createASCII=function(N,L){if(N=N||1,N<2)return O(L);N-=1,L=typeof L>"u"?N*2:L;let B=F.getModuleCount()*N+L*2,M=L,y=B-L,E,c,r,$0,m=Array(N+1).join("██"),g=Array(N+1).join(" "),u="",I="";for(E=0;E<B;E+=1){r=Math.floor((E-M)/N),I="";for(c=0;c<B;c+=1){if($0=1,M<=c&&c<y&&M<=E&&E<y&&F.isDark(r,Math.floor((c-M)/N)))$0=0;I+=$0?m:g}for(r=0;r<N;r+=1)u+=I+`
|
|
147
|
+
`}return u.substring(0,u.length-1)},F.renderTo2dContext=function(N,L){L=L||2;let B=F.getModuleCount();for(let M=0;M<B;M++)for(let y=0;y<B;y++)N.fillStyle=F.isDark(M,y)?"black":"white",N.fillRect(y*L,M*L,L,L)},F};RZ.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};RZ.createStringToBytes=function(Z,J){let Q=function(){let z=SG(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(),w=String.fromCharCode(H<<8|Y),P=F<<8|K;q[w]=P,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},Q8={L:1,M:0,Q:3,H:2},m9={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},u9=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 m9.PATTERN000:return function(q,H){return(q+H)%2==0};case m9.PATTERN001:return function(q,H){return q%2==0};case m9.PATTERN010:return function(q,H){return H%3==0};case m9.PATTERN011:return function(q,H){return(q+H)%3==0};case m9.PATTERN100:return function(q,H){return(Math.floor(q/2)+Math.floor(H/3))%2==0};case m9.PATTERN101:return function(q,H){return q*H%2+q*H%3==0};case m9.PATTERN110:return function(q,H){return(q*H%2+q*H%3)%2==0};case m9.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=X8([1],0);for(let H=0;H<G;H+=1)q=q.multiply(X8([1,E9.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 w=0;w<q;w+=1){let P=0,A=G.isDark(K,w);for(let _=-1;_<=1;_+=1){if(K+_<0||q<=K+_)continue;for(let V=-1;V<=1;V+=1){if(w+V<0||q<=w+V)continue;if(_==0&&V==0)continue;if(A==G.isDark(K+_,w+V))P+=1}}if(P>5)H+=3+P-5}for(let K=0;K<q-1;K+=1)for(let w=0;w<q-1;w+=1){let P=0;if(G.isDark(K,w))P+=1;if(G.isDark(K+1,w))P+=1;if(G.isDark(K,w+1))P+=1;if(G.isDark(K+1,w+1))P+=1;if(P==0||P==4)H+=3}for(let K=0;K<q;K+=1)for(let w=0;w<q-6;w+=1)if(G.isDark(K,w)&&!G.isDark(K,w+1)&&G.isDark(K,w+2)&&G.isDark(K,w+3)&&G.isDark(K,w+4)&&!G.isDark(K,w+5)&&G.isDark(K,w+6))H+=40;for(let K=0;K<q;K+=1)for(let w=0;w<q-6;w+=1)if(G.isDark(w,K)&&!G.isDark(w+1,K)&&G.isDark(w+2,K)&&G.isDark(w+3,K)&&G.isDark(w+4,K)&&!G.isDark(w+5,K)&&G.isDark(w+6,K))H+=40;let Y=0;for(let K=0;K<q;K+=1)for(let w=0;w<q;w+=1)if(G.isDark(w,K))Y+=1;let F=Math.abs(100*Y/q/q-50)/5;return H+=F*10,H},z}(),E9=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}(),X8=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]^=E9.gexp(E9.glog(X.getAt(G))+E9.glog(z.getAt(q)));return X8(W,0)},X.mod=function(z){if(X.getLength()-z.getLength()<0)return X;let W=E9.glog(X.getAt(0))-E9.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]^=E9.gexp(E9.glog(z.getAt(q))+W);return X8(G,0).mod(z)},X},L3=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 Q8.L:return Z[(z-1)*4+0];case Q8.M:return Z[(z-1)*4+1];case Q8.Q:return Z[(z-1)*4+2];case Q8.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],w=G[Y*3+2];for(let P=0;P<F;P+=1)H.push(J(K,w))}return H},Q}(),P3=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},vG=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},TG=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},RG=function(Z){let J=s0.MODE_8BIT_BYTE,Q=Z,X=RZ.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},kG=function(Z){let J=s0.MODE_KANJI,Q=Z,X=RZ.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},B3=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},IG=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},SG=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},VG=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 w=0;while(K.length-w>255)Y.writeByte(255),Y.writeBytes(K,w,255),w+=255;Y.writeByte(K.length-w),Y.writeBytes(K,w,K.length-w),Y.writeByte(0),Y.writeString(";")};let G=function(Y){let F=Y,K=0,w=0,P={};return P.write=function(A,_){if(A>>>_!=0)throw"length over";while(K+_>=8)F.writeByte(255&(A<<K|w)),_-=8-K,A>>>=8-K,w=0,K=0;w=A<<K|w,K=K+_},P.flush=function(){if(K>0)F.writeByte(w)},P},q=function(Y){let F=1<<Y,K=(1<<Y)+1,w=Y+1,P=H();for(let v=0;v<F;v+=1)P.add(String.fromCharCode(v));P.add(String.fromCharCode(F)),P.add(String.fromCharCode(K));let A=B3(),_=G(A);_.write(F,w);let V=0,D=String.fromCharCode(z[V]);V+=1;while(V<z.length){let v=String.fromCharCode(z[V]);if(V+=1,P.contains(D+v))D=D+v;else{if(_.write(P.indexOf(D),w),P.size()<4095){if(P.size()==1<<w)w+=1;P.add(D+v)}D=v}}return _.write(P.indexOf(D),w),_.write(K,w),_.flush(),A.toByteArray()},H=function(){let Y={},F=0,K={};return K.add=function(w){if(K.contains(w))throw"dup key:"+w;Y[w]=F,F+=1},K.size=function(){return F},K.indexOf=function(w){return Y[w]},K.contains=function(w){return typeof Y[w]<"u"},K};return W},fG=function(Z,J,Q){let X=VG(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=B3();X.write(z);let W=IG(),G=z.toByteArray();for(let q=0;q<G.length;q+=1)W.writeByte(G[q]);return W.flush(),"data:image/gif;base64,"+W},O3=RZ,sK=RZ.stringToBytes;function a1(){let Z=localStorage.getItem("mh-theme");return Z==="light"||Z==="dark"||Z==="system"?Z:"system"}function n1(){let Z=a1(),J=Z==="dark"||Z!=="light"&&matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.resolved=J?"dark":"light"}function A3(Z){localStorage.setItem("mh-theme",Z),n1(),G6()}function G6(){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 l1="__MH_WEBUI_VERSION__".startsWith("__MH_")?null:"__MH_WEBUI_VERSION__";function GZ(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 gG(Z){if(Z.kind==="local")return{title:"Blob 管理",subtitle:"已下载到这台设备的图片和大文件。清理只删本机副本,需要时从云端重新取回;桶里的原件始终不动。",deleteSemantics:"evict",list:async()=>{let[J,Q]=await Promise.all([G5(),f0("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)=>g6(J),remove:(J)=>q5(J),pin:async(J,Q)=>{await Q5(J,Q)}};return{title:"Blob 管理",subtitle:"图片和大文件的本机副本。可清理项随时能腾空间(用时自动取回);没被任何文档或站点引用的孤儿可彻底删除。",deleteSemantics:"purge",list:()=>a.blobs(),clear:(J)=>a.clearBlobs(J),remove:(J)=>a.deleteBlobs(J),pin:async(J,Q)=>{await a.pinBlob(J,Q)}}}function o1(Z){W9($(mG,{source:gG(Z)},void 0,!1,void 0,this))}function qZ(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 bG(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 q6={image:"图片",video:"视频",audio:"音频",file:"文件",other:"其他"},jG={image:"image",video:"video",audio:"audio",file:"file",other:"file"};function z8(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 hG(Z){if(Z.pending)return"pending";if(Z.pinned)return"pinned";if(!Z.referenced)return"orphan";if(Z.clearable)return"clearable";return"retained"}var DG={pending:"待上传",pinned:"已固定",orphan:"孤儿",clearable:"可清理",retained:"保留"},r1={size:"大小",type:"类型",access:"最近使用"},N3=[{key:"all",label:"全部类型"},{key:"image",label:"图片"},{key:"video",label:"视频"},{key:"audio",label:"音频"},{key:"file",label:"文件"},{key:"other",label:"其他"}],w3=[{key:"all",label:"全部状态"},{key:"clearable",label:"可清理"},{key:"retained",label:"保留中"},{key:"pinned",label:"已固定"},{key:"pending",label:"待上传"},{key:"orphan",label:"孤儿"}];function xG({row:Z}){let J=z8(Z.contentType),[Q,X]=k(!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:$(f,{name:jG[J],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function mG({source:Z}){let[J,Q]=k(null),[X,z]=k(null),[W,G]=k(!1),[q,H]=k(""),[Y,F]=k("all"),[K,w]=k("all"),[P,A]=k({key:"size",desc:!0}),[_,V]=k(new Set),D=async()=>{try{let I=await Z.list();Q(I),z(null),V((n)=>new Set([...n].filter((Z0)=>I.some((q0)=>q0.hash===Z0))))}catch(I){z(I.message)}};l(()=>{D()},[]);let v=(I,n)=>{if(n==="all")return!0;if(n==="clearable")return I.clearable&&!I.pinned;if(n==="retained")return!I.clearable&&!I.pending&&I.referenced;if(n==="pinned")return I.pinned;if(n==="pending")return I.pending;if(n==="orphan")return!I.referenced;return!0},R=_9(()=>{let I=q.trim().toLowerCase(),n=(J??[]).filter((q0)=>{let Q0=z8(q0.contentType);if(Y!=="all"&&Q0!==Y)return!1;if(!v(q0,K))return!1;if(I){if(!`${q0.hash} ${q0.contentType??""} ${q6[Q0]}`.toLowerCase().includes(I))return!1}return!0}),Z0=P.desc?-1:1;return[...n].sort((q0,Q0)=>{let J0=0;if(P.key==="size")J0=q0.size-Q0.size;else if(P.key==="access")J0=(q0.lastAccess??0)-(Q0.lastAccess??0);else J0=q6[z8(q0.contentType)].localeCompare(q6[z8(Q0.contentType)],"zh")||q0.size-Q0.size;return Z0*J0})},[J,q,Y,K,P]),x=(I)=>V((n)=>{let Z0=new Set(n);if(Z0.has(I))Z0.delete(I);else Z0.add(I);return Z0}),S=R.length>0&&R.every((I)=>_.has(I.hash)),O=()=>V((I)=>{if(R.every((n)=>I.has(n.hash))){let n=new Set(I);for(let Z0 of R)n.delete(Z0.hash);return n}return new Set([...I,...R.map((n)=>n.hash)])}),N=(J??[]).filter((I)=>_.has(I.hash)),L=N.filter((I)=>I.clearable&&!I.pinned),B=N.filter((I)=>!I.referenced),M=N.reduce((I,n)=>I+n.size,0),y=async(I)=>{G(!0);try{await Z.pin(I.hash,!I.pinned),await D()}catch(n){s(n.message)}finally{G(!1)}},E=async()=>{let I=L.map((n)=>n.hash);if(!I.length)return;G(!0);try{let n=await Z.clear(I);s(n.cleared?`已清理 ${n.cleared} 项 · 腾出 ${qZ(n.freedBytes)}`:"没有可清理的项"),await D()}catch(n){s(n.message)}finally{G(!1)}},c=async()=>{let I=B;if(!I.length)return;let n=I.reduce((Q0,J0)=>Q0+J0.size,0),Z0=Z.deleteSemantics==="evict";if(!await R0({title:"删除孤儿 blob",message:Z0?`将从这台设备移除 ${I.length} 个未被任何文档/站点引用的 blob,约 ${qZ(n)}。桶里的原件不动,需要时仍可重新下载。`:`将永久删除 ${I.length} 个未被任何文档/站点引用的 blob,约 ${qZ(n)}。此操作不可恢复。`,confirmLabel:"删除",danger:!0}))return;G(!0);try{let Q0=await Z.remove(I.map((J0)=>J0.hash));s(Q0.removed?`已删除 ${Q0.removed} 项 · 腾出 ${qZ(Q0.freedBytes)}`:"没有可删除的孤儿"),await D()}catch(Q0){s(Q0.message)}finally{G(!1)}},r=(I)=>y0(I,(n)=>$(o,{children:[$(j0,{children:"排序依据"},void 0,!1,void 0,this),Object.keys(r1).map((Z0)=>$(z0,{label:r1[Z0]+(P.key===Z0?P.desc?" ↓":" ↑":""),checked:P.key===Z0,onClick:()=>{A((q0)=>({key:Z0,desc:q0.key===Z0?!q0.desc:!0})),n()}},Z0,!1,void 0,this))]},void 0,!0,void 0,this)),$0=(I)=>y0(I,(n)=>$(o,{children:[$(j0,{children:"按类型"},void 0,!1,void 0,this),N3.map((Z0)=>$(z0,{label:Z0.label,checked:Y===Z0.key,onClick:()=>{F(Z0.key),n()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),m=(I)=>y0(I,(n)=>$(o,{children:[$(j0,{children:"按状态"},void 0,!1,void 0,this),w3.map((Z0)=>$(z0,{label:Z0.label,checked:K===Z0.key,onClick:()=>{w(Z0.key),n()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),g=N3.find((I)=>I.key===Y).label,u=w3.find((I)=>I.key===K).label;return $(q9,{title:Z.title,sub:Z.subtitle,width:760,footer:$(o,{children:[$("div",{class:"blob-mgr-selsum",children:_.size>0?$(o,{children:["已选 ",$("b",{children:_.size},void 0,!1,void 0,this)," 项 · ",qZ(M)]},void 0,!0,void 0,this):J?$(o,{children:["共 ",J.length," 项 · ",qZ(J.reduce((I,n)=>I+n.size,0))]},void 0,!0,void 0,this):""},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",disabled:W||!L.length,onClick:()=>void E(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清理所选",L.length?`(${L.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-danger",disabled:W||!B.length,onClick:()=>void c(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除孤儿",B.length?`(${B.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",onClick:()=>c0(),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:[$(f,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{class:"blob-mgr-search-in",placeholder:"搜索 hash 或类型…",value:q,onInput:(I)=>H(I.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:(I)=>$0(I),children:[$(f,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),g]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn"+(K!=="all"?" on":""),onClick:(I)=>m(I),children:[$(f,{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:(I)=>r(I),children:[$(f,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),r1[P.key],P.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):R.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:S,onChange:O},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),R.map((I)=>{let n=z8(I.contentType),Z0=hG(I);return $("div",{class:"blob-mgr-row"+(_.has(I.hash)?" sel":""),children:[$("label",{class:"blob-mgr-check",children:$("input",{type:"checkbox",checked:_.has(I.hash),onChange:()=>x(I.hash)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(xG,{row:I},void 0,!1,void 0,this),$("div",{class:"blob-mgr-name",children:[$("span",{class:"blob-mgr-hash",children:I.hash.slice(0,12)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-type",children:I.contentType??q6[n]},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"blob-mgr-r blob-mgr-size",children:qZ(I.size)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-badge s-"+Z0,children:DG[Z0]},void 0,!1,void 0,this),$("span",{class:"blob-mgr-age",children:bG(I.lastAccess)},void 0,!1,void 0,this),$("button",{class:"blob-mgr-pin"+(I.pinned?" on":""),disabled:W||I.pending,title:I.pinned?"取消固定":"固定(不被自动清理)",onClick:()=>void y(I),children:$(f,{name:"pin",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},I.hash,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var W8={localDevice:{label:"本机",subtitle:"这台设备上的副本",icon:"monitor"},cloudWorkspace:{label:"云端工作区",subtitle:"你常用的在线工作区",icon:"globe"},localWorkspace:{label:"本机工作区",subtitle:"这台电脑上的工作区",icon:"monitor"}};function M3(){return{id:"local",kind:"local",label:W8.localDevice.label,subtitle:W8.localDevice.subtitle,icon:W8.localDevice.icon,isDefault:!1,routeOp:{via:"replica"},deleteSemantics:"evict"}}function H6(Z){let J=Z==="desktop"?W8.localWorkspace:W8.cloudWorkspace;return{id:"server",kind:"server",label:J.label,subtitle:J.subtitle,icon:J.icon,isDefault:!1,routeOp:{via:"http"},deleteSemantics:"purge"}}function uG(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 C3(Z){let J=uG(Z),Q;switch(J){case"thin":Q=[H6(Z.surface)];break;case"offline-replica":Q=[M3(),H6(Z.surface)];break;case"bucket-replica":Q=[M3()];break;case"sidecar":Q=[H6(Z.surface)];break;case"cli":Q=[H6(Z.surface)];break;default:throw Error(`scopesFor: unhandled cell ${J}`)}return Q.map((X,z)=>({...X,isDefault:z===0}))}function y3({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:[$(f,{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)=>y0(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:[$(f,{name:W.icon},void 0,!1,void 0,this),W.label,$(f,{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:[$(f,{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 v3=()=>V9().surface==="desktop",EG=[{value:"light",icon:"sun",name:"浅色",desc:"始终使用明亮界面"},{value:"dark",icon:"moon",name:"深色",desc:"始终使用暗色界面"},{value:"system",icon:"monitor",name:"跟随系统",desc:"随操作系统外观自动切换"}];function G8({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 M9={appearance:"appearance",quicknote:"quicknote",sync:"sync",storage:"storage",devices:"devices"},pG=[{id:M9.appearance,label:"外观",icon:"sun",show:()=>!0},{id:M9.quicknote,label:"快速笔记",icon:"pin",show:()=>typeof window<"u"&&!!window.metahubDesktop?.quicknote},{id:M9.sync,label:"同步",icon:"cloudCheck",show:()=>!0},{id:M9.storage,label:"存储",icon:"database",show:()=>!0},{id:M9.devices,label:"设备与授权",icon:"monitor",show:()=>!U9()}];function dG({sections:Z}){let[J,Q]=k(Z[0]?.id??""),X=W0(null),z=W0(0),W=Z.map((q)=>q.id).join("|");l(()=>{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 P=Math.max(q?q.getBoundingClientRect().top:0,0)+72,A=Z[0].id;for(let _ of Z){let V=document.getElementById(_.id);if(!V)continue;if(V.getBoundingClientRect().top-P<=1)A=_.id;else break}Q(A)},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 w of Z){let P=document.getElementById(w.id);if(P)K.observe(P)}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]),l(()=>{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:$(f,{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 T3({onUpdatePending:Z}={}){let[J,Q]=k(a1()),X=(W)=>{A3(W),Q(W)},z=pG.filter((W)=>W.show());return $("div",{class:"set-shell",children:$("div",{class:"set-page",children:[z.length>=2&&$(dG,{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),$(G8,{id:M9.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:EG.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:$(f,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(f,{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&&$(G8,{id:M9.quicknote,label:"快速笔记",children:$(Fq,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(G8,{id:M9.sync,label:"同步",children:[!v3()&&$(sG,{},void 0,!1,void 0,this),$(Zq,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(G8,{id:M9.storage,label:"存储",children:$(cG,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!U9()&&$(G8,{id:M9.devices,label:"设备与授权",children:[$(Uq,{},void 0,!1,void 0,this),$(Lq,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(Yq,{onUpdatePending:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function cG(){let Z=C3(V9()).filter((W)=>W.kind!=="bucket"),[J,Q]=k(Z[0]?.id??"server"),X=Z.find((W)=>W.id===J)??Z[0],z=Z.length>1;return $(o,{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),$(y3,{scopes:Z,value:X.id,onChange:Q,sub:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X.kind==="local"?$(rG,{scope:X},void 0,!1,void 0,this):$(lG,{scope:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function n0(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 aG=300000,nG=()=>typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function R3(Z,J=600){let[Q,X]=k(Z),z=W0(Z);return l(()=>{if(nG()){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 lG({scope:Z}){let[J,Q]=k(null),[X,z]=k(null),[W,G]=k(!1),[q,H]=k(!1),Y=()=>{a.blobCache().then((J0)=>{Q(J0),z(null)}).catch((J0)=>z(J0.message))},F=async(J0=!1)=>{H(!0);try{Q(await a.verifyBlobCache()),z(null)}catch(B0){if(J0)s(B0.message)}finally{H(!1)}};l(()=>{Y(),F()},[]);let[K,w]=k(!1);l(()=>{let J0=requestAnimationFrame(()=>w(!0));return()=>cancelAnimationFrame(J0)},[]);let P=R3(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:A,policy:_,nodes:V,buckets:D,quotaBytes:v,pinnedBytes:R}=J,x=[...D,..._.fullNodes.filter((J0)=>J0.startsWith("s3://")&&!D.some((B0)=>B0.url===J0)).map((J0)=>({url:J0,label:null,bucket:null}))],S=async(J0)=>{G(!0);try{await a.setBlobPolicy({full_nodes:J0}),await F()}catch(B0){s(B0.message)}finally{G(!1)}},O=(J0)=>{let B0=new Set(_.fullNodes);if(B0.has(J0))B0.delete(J0);else B0.add(J0);S([...B0])},N=async(J0)=>{G(!0);try{await a.setBlobPolicy({redundancy:J0}),await F()}catch(B0){s(B0.message)}finally{G(!1)}},L=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${n0(A.clearableBytes)}。只删别处已备份的副本,文件不会丢,用到时自动取回。`,confirmLabel:"清理"}))return;G(!0);try{let B0=await a.clearBlobCache();s(B0.cleared?`已腾出 ${n0(B0.freedBytes)}(${B0.cleared} 项)`:"暂时没有可清理的"),Y()}catch(B0){s(B0.message)}finally{G(!1)}},B=Math.max(1,A.totalBytes),M=Math.max(0,A.retainedBytes-R),y=(J0)=>J0/B*100,E=y(A.clearableBytes),c=y(M),r=y(R),$0=A.clearableBytes>0,m=_.fullNodes.length===0,g=V.find((J0)=>J0.self),u=!!g&&_.fullNodes.includes(g.nodeId),I=!m&&!u&&J.lastVerifiedAt==null,n=u?"self-full":m?"no-anchor":I?"unverified":$0?"free":"safe",Z0=J.lastVerifiedAt==null||Date.now()-J.lastVerifiedAt>aG,q0=v>0&&A.totalBytes>v&&(J.unreachableAnchors.length>0||Z0),Q0=(J0)=>K?J0: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:n0(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:n0(M)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R>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:n0(R)},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," 项 · ",n0(A.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:W||q||!$0,onClick:()=>void L(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),$0?`清理腾出 ${n0(A.clearableBytes)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-verify-btn",disabled:W||q,onClick:()=>void F(!0),children:[$(f,{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:()=>o1(Z),children:[$(f,{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"+(n==="free"?" has-free":n==="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),r>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Q0(r)} ${100-Q0(r)}`,"stroke-dashoffset":-(E+c)},void 0,!1,void 0,this),$("circle",{class:"blob-seg keep",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Q0(c)} ${100-Q0(c)}`,"stroke-dashoffset":-E},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Q0(E)} ${100-Q0(E)}`,"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:[n==="free"&&$(o,{children:[$("div",{class:"blob-ring-big",children:n0(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),n==="safe"&&$(o,{children:[$("div",{class:"blob-ring-check",children:$(f,{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),n==="no-anchor"&&$(o,{children:[$("div",{class:"blob-ring-lock",children:$(f,{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),n==="unverified"&&$(o,{children:[$("div",{class:"blob-ring-lock",children:$(f,{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),n==="self-full"&&$(o,{children:[$("div",{class:"blob-ring-lock",children:$(f,{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),V.map((J0)=>{let B0=_.fullNodes.includes(J0.nodeId);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(f,{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:[J0.label||J0.nodeId,J0.self?" · 本机":""]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:B0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(B0?" on":""),role:"switch","aria-checked":B0,disabled:W,onClick:()=>O(J0.nodeId),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},J0.nodeId,!0,void 0,this)}),x.map((J0)=>{let B0=_.fullNodes.includes(J0.url);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(f,{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:[J0.label||J0.bucket||J0.url," · 云端"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:B0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(B0?" on":""),role:"switch","aria-checked":B0,disabled:W,onClick:()=>O(J0.url),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},J0.url,!0,void 0,this)}),m&&$("div",{class:"blob-hint",children:"还没设置长期备份。先指定一处,之后就能放心清理这台设备。"},void 0,!1,void 0,this),_.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"+(_.redundancy==="any"?" on":""),disabled:W||q,onClick:()=>void N("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"+(_.redundancy==="all"?" on":""),disabled:W||q,onClick:()=>void N("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),q0&&$("div",{class:"blob-hint warn",children:"空间超了,但备份暂时离线,先没清理。"},void 0,!1,void 0,this),v>0&&$("div",{class:"blob-foot",children:["缓存超过 ",n0(v)," 时,自动清理最久没用、已有备份的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function rG({scope:Z}){let[J,Q]=k(null),[X,z]=k({count:0,bytes:0}),[W,G]=k(null),[q,H]=k(null),[Y,F]=k(!1),K=async()=>{try{let[B,M]=await Promise.all([z5(),xZ()]);Q(B),z({count:M.length,bytes:M.reduce((y,E)=>y+E.bytes.byteLength,0)})}catch{}if(navigator.storage?.estimate)try{let B=await navigator.storage.estimate();if(B.usage!=null)G(B.usage)}catch{}if(navigator.storage?.persisted)try{H(await navigator.storage.persisted())}catch{}};l(()=>{K()},[]);let[w,P]=k(!1);l(()=>{let B=requestAnimationFrame(()=>P(!0));return()=>cancelAnimationFrame(B)},[]);let A=J?Math.max(0,J.totalBytes-J.pinnedBytes):0,_=R3(A);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 V=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${n0(A)}。只清本机缓存,文件已存在云桶,用到时自动取回。待上传的内容不会动。`,confirmLabel:"清理"}))return;F(!0);try{let M=await W5();s(M.cleared?`已腾出 ${n0(M.freedBytes)}(${M.cleared} 项)`:"暂时没有可清理的"),await K()}catch(M){s(M.message)}finally{F(!1)}},D=async()=>{if(!navigator.storage?.persist)return;F(!0);try{let B=await navigator.storage.persist();H(B),s(B?"已设为常驻,系统不会自动清理":"浏览器暂未授予常驻")}catch(B){s(B.message)}finally{F(!1)}},v=Math.max(1,J.totalBytes),R=(B)=>B/v*100,x=R(A),S=R(J.pinnedBytes),O=(B)=>w?B:0,N=A>0,L=N?"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:n0(A)},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:n0(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," 项 · ",n0(J.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:Y||!N,onClick:()=>void V(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),N?`清理腾出 ${n0(A)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-manage-btn",onClick:()=>o1(Z),children:[$(f,{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"+(L==="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),S>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${O(S)} ${100-O(S)}`,"stroke-dashoffset":-x},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${O(x)} ${100-O(x)}`,"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:L==="free"?$(o,{children:[$("div",{class:"blob-ring-big",children:n0(_)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$(o,{children:[$("div",{class:"blob-ring-check",children:$(f,{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," 项(约 ",n0(X.bytes),")还没上传到云桶,仅存在这台设备上。建议先「立即同步」再清理——清理不会动这些待上传的内容。"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(f,{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 D(),children:"请求常驻"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W!=null&&$("div",{class:"blob-foot",children:["此浏览器为本工作区共占用约 ",n0(W),"(含本地数据库与缓存)。缓存超过 ",n0(sJ)," 时自动清理最久没用、已在云桶的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function oG(){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 tG({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:$(f,{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&&$(o,{children:[$("span",{class:"md-wire bi"},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(f,{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&&$(o,{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:$(f,{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 sG(){let Z=oG(),[J,Q]=k(H9()),[X,z]=k(jZ()),[W,G]=k(!1),[q,H]=k(null),Y=U9(),[F,K]=k(!1),[w,P]=k(!1);l(()=>{let N=!0,L=async()=>{let M=H9()?(await f0("listStoragePeers").catch(()=>[])).length>0:!1,y=Y?!1:(await a.listServerS3Peers().catch(()=>[])).length>0;if(!N)return;P(M),K(y)};L();let B=F9(L);return()=>{N=!1,B()}},[Y]);let[A,_]=k(null),V=(N,L)=>{let B=L.currentTarget,M=B?.closest(".set-panel"),y=B?.closest(".sync-holds");if(!M||!y)return;let E=M.getBoundingClientRect(),c=248,r=28;if(window.innerWidth-E.right<c+r)return _(null);(async()=>{let $0=H9()?(await f0("listStoragePeers").catch(()=>[])).length>0:!1,m=Y?!1:(await a.listServerS3Peers().catch(()=>[])).length>0;P($0),K(m)})(),_({kind:N,left:E.right+r,top:y.getBoundingClientRect().top})},D=()=>_(null);l(()=>F9((N)=>z({...N})),[]),l(()=>{if(!J||!navigator.storage?.estimate)return;let N=!0,L=()=>navigator.storage.estimate().then((M)=>{if(N&&M.usage!=null)H((M.usage/1024/1024).toFixed(1))});L();let B=F9(()=>void L());return()=>{N=!1,B()}},[J]);let v=async()=>{if(!await R0({title:"重置本地副本",message:"将删除此浏览器里的全部本地数据(服务器数据不受影响),并停用离线副本。未同步的本地修改会丢失——建议先「立即同步」。",confirmLabel:"删除并重置",danger:!0}))return;G(!0);try{await oJ(),Q(!1),s("本地副本已重置")}catch(L){s(`重置失败:${L.message}`)}finally{G(!1)}},R=async()=>{G(!0);try{await nJ(),Q(!0),s("离线副本已启用,正在下载数据…")}catch(N){s(`启用失败:${N.message}`)}finally{G(!1)}},x=async()=>{if(!await R0({title:"停用离线副本",message:"此浏览器将恢复纯在线模式。已下载的本地数据保留在浏览器里,重新启用后从断点续传。",confirmLabel:"停用",danger:!0}))return;let L=typeof navigator<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.controller!=null;G(!0);try{if(await rJ(),Q(!1),s("已停用离线副本"),L)location.reload()}finally{G(!1)}},S=()=>{if(!J)return"轻量模式 · 仅在线读写,断网不可用。";if(X.state==="error")return`副本异常(已自动回退在线模式):${X.error??"未知错误"}`;if(X.state==="hydrating")return`正在下载数据… 已接收 ${X.hydrated??0} 条变更`;if(X.lastSync){let N=kZ(X.lastSync.at);return X.lastSync.ok?`本地优先已生效 · 上次同步 ${N}(推送 ${X.lastSync.pushed} / 拉取 ${X.lastSync.pulled})`:`上次同步失败(${N}):${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=(N)=>$(tG,{kind:N,noOrigin:Y,hasServerBucket:F,deviceDirect:N==="trusted"&&w},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&&x(),onMouseEnter:(N)=>V("light",N),onMouseLeave:D,onFocus:(N)=>V("light",N),onBlur:D,children:[$("span",{class:"tc-check",children:$(f,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(f,{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&&R(),onMouseEnter:(N)=>V("trusted",N),onMouseLeave:D,onFocus:(N)=>V("trusted",N),onBlur:D,children:[$("span",{class:"tc-check",children:$(f,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(f,{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),A&&$("div",{class:"mode-aside",style:{top:A.top+"px",left:A.left+"px"},children:$("div",{class:"mp-show",children:[O(A.kind),$("span",{class:"mp-cap",children:A.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:()=>o9(),children:[$(f,{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:v,children:"重置本地副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:[S(),J&&X.node?` · 节点 ${X.node}`:"",J&&q?` · 本地占用 ${q} MB`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Y6(Z){try{return new URL(Z).host}catch{return Z}}function eG(Z){return Z.length<=8?Z.slice(0,2)+"…":Z.slice(0,4)+"…"+Z.slice(-4)}function Zq(){let Z=U9(),J=v3(),[Q,X]=k(H9()),[z,W]=k(null),[G,q]=k(null),H=()=>{if(H9())f0("listStoragePeers").then(q).catch(()=>{});else q(null)},Y=()=>{if(H(),!Z)a.listServerS3Peers().then(W).catch((O)=>s(`加载失败:${O.message}`))};l(()=>{return Y(),F9(()=>{X(H9()),H()})},[]);let F=new Set((G??[]).map((O)=>O.url)),K=!J&&Q,w=()=>W9($(Hq,{toServer:!Z,alsoReplica:!Z&&K,onDone:()=>{c0(),Y()}},void 0,!1,void 0,this)),P=(O)=>W9($(Jq,{peer:O,onDone:()=>{c0(),Y()}},void 0,!1,void 0,this)),A=async()=>{try{if(Z)await f0("sync");else if(await Promise.all((z??[]).map((O)=>a.syncPeer(O.url))),K)await f0("sync").catch(()=>{});s("已触发同步"),Y()}catch(O){s(`同步失败:${O.message}`)}},_=async(O,N)=>{if(!await R0({title:"移除存储桶",message:`确定移除 ${N}?将停止与该存储桶同步(桶内数据不受影响)。`,confirmLabel:"移除",danger:!0}))return;if(Z)await f0("removeStorageReplica",O).catch((B)=>s(B.message));else if(await a.removePeer(O).catch((B)=>s(B.message)),K)await f0("removeStorageReplica",O).catch(()=>{});Y()},V=async(O,N)=>{if(!await R0({title:"取消本设备直连",message:`这台设备将不再直连 ${N}(存储桶仍在服务器上;本设备在线时照常经服务器同步)。`,confirmLabel:"取消直连",danger:!0}))return;await f0("removeStorageReplica",O).catch((B)=>s(B.message)),Y()},D=(O)=>Z?f0("storagePeerConfig",O):a.serverS3Config(O),v=((Z?G:z)??[]).map((O)=>({url:O.url,name:O.label||O.bucket||O.url})),R=()=>W9($(Gq,{buckets:v,getConfig:D,server:!Z,onPaired:()=>{c0(),Y()}},void 0,!1,void 0,this)),x=(O,N,L)=>y0(O,(B)=>$(o,{children:[L&&$(z0,{icon:"link",label:"取消本设备直连",onClick:()=>{B(),V(N.url,N.label||N.bucket||N.url)}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"移除存储桶",danger:!0,onClick:()=>{B(),_(N.url,N.label||N.bucket||N.url)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),S=(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:[$(f,{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):$(o,{children:[$("div",{class:"peer-actions",style:{marginTop:14},children:[$("button",{class:"btn btn-primary",onClick:w,children:[$(f,{name:"cube",cls:"ico sm"},void 0,!1,void 0,this)," 连接存储桶"]},void 0,!0,void 0,this),(!Z||v.length>0)&&$("button",{class:"btn btn-secondary",onClick:R,children:[$(f,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)," 添加设备"]},void 0,!0,void 0,this),S&&$("button",{class:"btn btn-secondary",onClick:A,children:[$(f,{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 N=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:N},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[O.endpoint?Y6(O.endpoint)+" · ":"","最近同步 ",kZ(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:()=>_(O.url,N),children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O.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((O)=>{let N=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:N},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:$("span",{class:"peer-tag",children:[$(f,{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?Y6(O.endpoint)+" · ":"","最近同步 ",kZ(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:()=>_(O.url,N),children:$(f,{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 N=O.label||O.bucket||O.url,L=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:N},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:[$("span",{class:"peer-tag",children:[$(f,{name:"globe",cls:"ico"},void 0,!1,void 0,this)," 服务器同步"]},void 0,!0,void 0,this),Q?L?$("span",{class:"peer-tag ok",children:[$(f,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 本机已直连"]},void 0,!0,void 0,this):$("button",{class:"peer-tag act",onClick:()=>P(O),children:[$(f,{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?Y6(O.endpoint)+" · ":"","最近同步 ",kZ(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:(B)=>x(B,O,L),children:$(f,{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 Jq({peer:Z,onDone:J}){let[Q,X]=k(""),[z,W]=k(""),[G,q]=k(!1),H=Z.endpoint?Y6(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 f0("addStorageReplica",F,z),s("已让本机直连存储桶 · 离线、在外也能直接同步"),J()}catch(F){let K=F.message;s(I3(K)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`启用失败:${K}`),q(!1)}};return $(q9,{title:"在本设备启用直连",sub:"服务器已配置这个存储桶。为保护密钥,服务器不会把它同步到浏览器——再输入一次密钥,这台设备就能与桶直接同步(离线、在外也不中断)。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,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:eG(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&&$(o,{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 t1="mh_shell_base";function $q(Z,J){return`${(Z||location.origin).replace(/\/+$/,"")}/#enroll=${D6(J)}`}function k3({data:Z}){let J=O3(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=(P,A)=>P<7&&A<7||P<7&&A>=Q-7||P>=Q-7&&A<7,H=(P,A)=>Math.abs(P+0.5-z)<G&&Math.abs(A+0.5-z)<G,Y=[];for(let P=0;P<Q;P++)for(let A=0;A<Q;A++){if(!J.isDark(P,A)||q(P,A)||H(P,A))continue;Y.push($("circle",{cx:A+0.5,cy:P+0.5,r:0.45,fill:"var(--qr-fg)"},P*Q+A,!1,void 0,this))}let F=(P,A)=>$(o,{children:[$("rect",{x:A+0.5,y:P+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:A+2,y:P+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,w=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(${w}) 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:x6},void 0,!1,void 0,this),$("path",{class:"qr-cube-edge qr-cube-inner",pathLength:1,d:m6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:x6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:m6},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 H8({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:[$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)," ",J]},void 0,!0,void 0,this)}function Qq({config:Z}){let[J,Q]=k(()=>{try{return localStorage.getItem(t1)||location.origin}catch{return location.origin}}),X=$q(J,Z),z=(W)=>{Q(W);try{W?localStorage.setItem(t1,W):localStorage.removeItem(t1)}catch{}};return $(o,{children:[$(k3,{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),$(H8,{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 Xq({config:Z}){let J=D6(Z),Q=`mh config peer add --s3 --enroll ${J}`;return $(o,{children:[$("div",{class:"field-label",children:"在另一台电脑的终端运行"},void 0,!1,void 0,this),$("div",{class:"enroll-cmd",children:Q},void 0,!1,void 0,this),$(H8,{text:Q,label:"复制命令",done:"已复制命令",primary:!0},void 0,!1,void 0,this),$(H8,{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 zq({code:Z,exp:J}){let[Q,X]=k(Math.max(0,Math.round((J-Date.now())/1000)));l(()=>{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 $(o,{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),$(H8,{text:Z,label:"复制配对码",done:"已复制配对码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Wq({onPaired:Z}){let[J,Q]=k(null),[X,z]=k(!1),W=async()=>{z(!0);try{Q(await a.newPairingCode())}catch(R){s(`生成失败:${R.message}`)}finally{z(!1)}},[G,q]=k(""),[H,Y]=k(""),[F,K]=k(location.origin),[w,P]=k(!1),A=async()=>{if(!G.trim()||!H.trim())return s("地址和配对码必填");P(!0);try{let R=await a.addPeerByPairing({url:G.trim(),code:H.trim(),self_url:F.trim()||void 0});await a.syncPeer(R.url).catch(()=>{}),s(`已配对 ${R.url}`),Z()}catch(R){s(`配对失败:${R.message}`),P(!1)}},[_,V]=k(()=>{try{return localStorage.getItem(s1)||location.origin}catch{return location.origin}}),D=(R)=>{V(R);try{R?localStorage.setItem(s1,R):localStorage.removeItem(s1)}catch{}},v=qq(_,P5());return $(o,{children:[$("div",{class:"enroll-section",children:"邀请另一台服务器配对"},void 0,!1,void 0,this),J?$(zq,{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:[$(f,{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:(R)=>q(R.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:(R)=>Y(R.target.value),onKeyDown:(R)=>R.key==="Enter"&&A()},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:(R)=>K(R.target.value)},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",style:{width:"100%",marginTop:10},disabled:w,onClick:A,children:w?"配对中…":"配对"},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),$(k3,{data:v},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:_,onInput:(R)=>D(R.target.value)},void 0,!1,void 0,this),$(H8,{text:v,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 Gq({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]=k(W[0]?.id??"server"),[H,Y]=k(Z[0]?.url??""),[F,K]=k(null),[w,P]=k("");return l(()=>{if(!z||!H)return;let A=!0;return K(null),P(""),J(H).then((_)=>{if(!A)return;_?K(_):P("找不到该存储的配置")}).catch((_)=>A&&P(_.message)),()=>{A=!1}},[H]),$(q9,{title:"添加设备",sub:"让另一台设备加入同一个工作区——手机扫码,或在电脑上粘贴接入码。",footer:$("button",{class:"btn btn-primary",onClick:c0,children:"完成"},void 0,!1,void 0,this),width:420,children:[W.length>1&&$("div",{class:"add-tabs",children:W.map((A)=>$("button",{class:"add-tab"+(G===A.id?" on":""),onClick:()=>q(A.id),children:A.label},A.id,!1,void 0,this))},void 0,!1,void 0,this),(G==="phone"||G==="cli")&&$(o,{children:[Z.length>1&&$(o,{children:[$("div",{class:"field-label",children:"存储桶"},void 0,!1,void 0,this),$("select",{class:"text-input",value:H,onChange:(A)=>Y(A.target.value),children:Z.map((A)=>$("option",{value:A.url,children:A.name},A.url,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w?$("div",{class:"enroll-err",children:w},void 0,!1,void 0,this):!F?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G==="phone"?$(Qq,{config:F},void 0,!1,void 0,this):$(Xq,{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"&&$(Wq,{onPaired:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function I3(Z){return/failed to fetch|load failed|networkerror|cors/i.test(Z)}var s1="mh_server_base";function qq(Z,J){let Q=(Z||location.origin).replace(/\/+$/,"");return J?`${Q}/?token=${encodeURIComponent(J)}`:Q}var q8=[{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 Hq({onDone:Z,toServer:J,alsoReplica:Q}){let[X,z]=k(""),[W,G]=k(""),[q,H]=k("auto"),[Y,F]=k(""),[K,w]=k(""),[P,A]=k("metahub"),[_,V]=k(!0),[D,v]=k(""),[R,x]=k(!1),[S,O]=k("r2"),N=q8.find((M)=>M.id===S)??q8[4],L=(M)=>{O(M);let y=q8.find((E)=>E.id===M);if(y&&q8.some((E)=>E.region===q))H(y.region)},B=async()=>{if(!X.trim()||!W.trim()||!Y.trim()||!K.trim()){s("服务地址、桶名称、访问密钥 ID、密钥都要填");return}if(_&&!D){s("加密口令必填(或关闭加密)");return}x(!0);try{let M={endpoint:X.trim(),region:q.trim()||"auto",bucket:W.trim(),prefix:P.trim()||"metahub",accessKeyId:Y.trim(),secretAccessKey:K.trim(),encrypt:_};if(J){if(await a.addServerS3Peer({...M,passphrase:D,corsOrigins:[location.origin]}),Q)await f0("addStorageReplica",{...M,publish:!1},D)}else await f0("addStorageReplica",M,D);s(J?Q?"已连接存储桶 · 服务器开始同步到桶,这台设备也直接同步":"已连接存储桶 · 服务器开始同步到桶":"已连接存储桶 · 这台设备开始同步到桶"),Z()}catch(M){let y=M.message;s(I3(y)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE(R2 控制台一条规则即可)。":`添加失败:${y}`),x(!1)}};return $(q9,{title:"连接存储桶",sub:"连接一个 S3 兼容存储桶,所有设备就能同步——不需要公网服务器。新桶自动初始化;已有桶用相同加密口令即可加入。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,disabled:R,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:B,disabled:R,children:R?"连接中…":"连接"},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:q8.map((M)=>$("button",{class:"provider-chip"+(S===M.id?" sel":""),"aria-pressed":S===M.id,onClick:()=>L(M.id),children:M.name},M.id,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"set-hint",children:N.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:N.ph,value:X,onInput:(M)=>z(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:"my-metahub",value:W,onInput:(M)=>G(M.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:(M)=>F(M.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:(M)=>w(M.target.value)},void 0,!1,void 0,this),$("label",{class:"set-check-row",style:{marginTop:14},children:[$("input",{type:"checkbox",checked:_,onChange:(M)=>V(M.target.checked)},void 0,!1,void 0,this),$("span",{children:"端到端加密(强烈建议;关闭后文件以明文存放,仅限完全信任的存储)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_&&$(o,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"新桶以此创建;其它设备用同一口令加入",value:D,onInput:(M)=>v(M.target.value),onKeyDown:(M)=>M.key==="Enter"&&B()},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:N.region,value:q,onInput:(M)=>H(M.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:P,onInput:(M)=>A(M.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 Yq({onUpdatePending:Z}){let J=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0,[Q,X]=k(null),[z,W]=k(null),[G,q]=k(null),[H,Y]=k(null),[F,K]=k("idle"),[w,P]=k(""),[A,_]=k(null);l(()=>{a.version().then((N)=>W(N.version)).catch(()=>W(null)),(typeof window<"u"?window.metahubDesktop:void 0)?.appVersion?.().then(X).catch(()=>X(null)),J?.installedVersion().then(q).catch(()=>q(null))},[]),l(()=>{if(F==="idle"&&z&&G&&GZ(G,z)>0)K("staged"),Z?.(!0)},[z,G]);let V=()=>{if(z&&G)return GZ(G,z)>0?G:z;return G??z},D=()=>!!(z&&G&&GZ(G,z)>0),v=async()=>{K("checking"),P("");try{let{latest:O}=await J.check();if(!O){P("无法获取最新版本(网络不可用或 GitHub API 受限)"),K("error");return}let N=V();if(!N||GZ(O,N)>0)Y(O),K("available"),Z?.(!0);else s("已是最新版本"),K(D()?"staged":"idle")}catch(O){P(O.message),K("error")}},R=async()=>{K("downloading"),_(null),P("");let O=J.onDownloadProgress?.((N)=>_(N));try{let N=await J.download();if(N)q(N),K("staged"),Z?.(!0),s(`已下载 v${N}`);else s("已是最新版本"),K(D()?"staged":"idle")}catch(N){P(N.message),K("error")}finally{O?.()}},x=null;if(J)switch(F){case"checking":x=$("span",{class:"ver-act","aria-disabled":"true",children:"检查中…"},void 0,!1,void 0,this);break;case"downloading":{let O=A&&A.total>0?Math.min(100,Math.round(A.received/A.total*100)):null;x=$("span",{class:"ver-up ver-dl",children:[$("span",{class:`ver-bar${O==null?" indet":""}`,children:$("span",{class:"ver-bar-fill",style:O!=null?{width:`${O}%`}:void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"ver-num",children:O!=null?`${O}%`:"下载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break}case"available":x=$("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:R,title:`下载并更新到 v${H}`,children:"下载"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"staged":x=$("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":x=$("span",{class:"ver-up err",children:[$("span",{class:"ver-msg",children:"检查失败"},void 0,!1,void 0,this),$("button",{class:"ver-act",onClick:v,title:w||"重试",children:"重试"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;default:x=$("button",{class:"ver-act",onClick:v,children:"检查更新"},void 0,!1,void 0,this)}let S=!Q&&!z&&l1;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),S&&$("span",{class:"ver-num",children:["v",l1]},void 0,!0,void 0,this),x&&(z||Q||S)&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),x]},void 0,!0,void 0,this)}var e1="CommandOrControl+Shift+Space";function Kq(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 _3(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 Fq(){let Z=window.metahubDesktop.quicknote,[J,Q]=k(e1),[X,z]=k(!1),[W,G]=k(!1);l(()=>{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(`快捷键已设为 ${_3(K.shortcut)}`)}catch(K){s(`设置失败:${K.message}`)}},H=(F)=>{if(F.preventDefault(),F.key==="Escape"){G(!1);return}let K=Kq(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?"按下组合键…":_3(J)},void 0,!1,void 0,this),J!==e1&&$("button",{class:"btn btn-ghost",title:"重置默认",onClick:()=>void q(e1),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 kZ(Z){if(!Z)return"从未";return new Date(Z).toLocaleString()}function Uq(){let[Z,J]=k(null),Q=()=>a.listPeers().then(J).catch((q)=>s(`加载失败:${q.message}`));l(()=>{Q()},[]);let X=async(q)=>{try{let H=await a.syncPeer(q.url);s(H.ok?`已同步:推送 ${H.pushed},拉取 ${H.pulled}`:`同步失败:${H.error}`),Q()}catch(H){s(`同步失败:${H.message}`)}},z=async(q)=>{await a.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 a.removePeer(q.url).catch((Y)=>s(Y.message)),Q()},G=(q,H)=>y0(q,(Y)=>$(o,{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),$(S0,{},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?"已启用":"已禁用"," · 最近同步 ",kZ(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:$(f,{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 Lq(){let[Z,J]=k(null),Q=()=>a.listGrants().then(J).catch((z)=>s(`加载失败:${z.message}`));l(()=>{Q()},[]);let X=async(z)=>{if(!await R0({title:"吊销凭据",message:`吊销后,持有此凭据的设备${z.peer_url?`(${z.peer_url})`:""}将无法再同步进本机。`,confirmLabel:"吊销",danger:!0}))return;await a.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),"… · 签发于 ",kZ(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:$(f,{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 K6=(Z)=>location.origin+"/sites/"+Z+"/",V3=(Z)=>"/"+Z+"/",Pq=(Z)=>(/\.([a-z0-9]+)$/i.exec(Z)?.[1]??"").toLowerCase(),f3=(Z)=>Z.startsWith("image/");function g3(Z){let J=Number(Z.split("-")[0]);if(!Number.isFinite(J)||J<=0)return"—";return new Date(J).toISOString().slice(0,10)}function Bq(Z){let J=Pq(Z.path);if(["html","htm","js","mjs","css","json","xml"].includes(J))return"code";if(f3(Z.content_type))return"file";if(["md","txt"].includes(J))return"text";return"file"}function Y8(Z){navigator.clipboard?.writeText(Z).catch(()=>{}),s("已复制")}function b3(){let[Z,J]=k(null),[Q,X]=k(null),[z,W]=k(null),G=BZ(),q=()=>a.listSites().then((F)=>{J(F),X((K)=>K?F.find((w)=>w.id===K.id)??null:null)}).catch((F)=>s(`加载失败:${F.message}`));l(()=>{q()},[]);let H=()=>W9($(Oq,{onCreated:(F)=>{q(),X(F)}},void 0,!1,void 0,this)),Y=(F,K,w)=>{y0(F,(P)=>$(o,{children:[$(z0,{icon:"externalLink",label:"复制访问地址",onClick:()=>{P(),Y8(K6(K.name))}},void 0,!1,void 0,this),$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{P(),N9({kind:"site",ref:K.id,title:K.title??K.name})}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"修改标题…",onClick:async()=>{P();let A=await Y9({title:"修改标题",label:"标题",value:K.title??K.name});if(A==null)return;try{await a.updateSite(K.id,{title:A})}catch(_){return s(_.message)}q()}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除站点",danger:!0,onClick:async()=>{if(P(),!await R0({title:"删除站点?",message:`「${K.name}」及其 ${K.file_count} 个文件将被删除。`,confirmLabel:"删除",danger:!0}))return;try{await a.deleteSite(K.id)}catch(_){return s(_.message)}if(w)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:[$(f,{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:$(f,{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:[$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$(o,{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:$(f,{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:(w)=>{w.stopPropagation(),N9({kind:"site",ref:F.id,title:F.title??F.name})},children:$(f,{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:(w)=>{w.stopPropagation(),Y8(K6(F.name))},children:[$(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:V3(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:g3(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:(w)=>{w.stopPropagation(),W(F)},children:[$(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),"访问"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(w)=>{w.stopPropagation(),Y(w,F)},children:$(f,{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&&$(Aq,{site:Q,onClose:()=>X(null),onVisit:()=>W(Q),onMenu:(F)=>Y(F,Q,!0),onChanged:q},void 0,!1,void 0,this),z&&$(Nq,{site:z,onClose:()=>W(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Oq({onCreated:Z}){let[J,Q]=k(""),[X,z]=k(""),W=async()=>{let G=J.trim().toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"");if(!G)return s("请填写站点名称");try{let q=await a.createSite({name:G,title:X.trim()||void 0});c0(),s(`已创建站点「${G}」`),Z(q)}catch(q){s(q.message)}};return $(q9,{title:"新建站点",sub:"创建一个命名文件桶,随同步无冲突复制。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,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 Aq({site:Z,onClose:J,onVisit:Q,onMenu:X,onChanged:z}){let[W,G]=k(null),q=W0(null),{open:H,close:Y}=e9(J),F=()=>a.listSiteFiles(Z.id).then(G).catch((_)=>s(_.message));l(()=>{let _=!1;return G(null),a.listSiteFiles(Z.id).then((V)=>!_&&G(V)).catch((V)=>!_&&s(V.message)),()=>{_=!0}},[Z.id]);let K=async(_)=>{let V=_.target,D=Array.from(V.files??[]);if(V.value="",!D.length)return;let v=0;try{for(let R of D)await a.uploadSiteFile(Z.id,R.name,R),v++;s(`已上传 ${v} 个文件`)}catch(R){s(`已上传 ${v}/${D.length} 个,其余失败:${R.message}`)}finally{F(),z()}},w=async(_)=>{if(!await R0({title:"删除文件?",message:`「${_.path}」将从站点「${Z.name}」中删除。`,confirmLabel:"删除",danger:!0}))return;try{await a.deleteSiteFile(Z.id,_.path)}catch(D){return s(D.message)}F(),z()},P=K6(Z.name),A=V3(Z.name);return $(o,{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:$(f,{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:[$(f,{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:[$(f,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(_)=>X(_),children:$(f,{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:()=>Y8(P),children:$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"accent",title:"访问站点",onClick:Q,children:$(f,{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:["创建于 ",g3(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:[$(f,{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((_)=>$("div",{class:"filerow",onClick:()=>W9($(S3,{site:Z,file:_},void 0,!1,void 0,this)),children:[$("span",{class:"fi",children:$(f,{name:Bq(_),cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"fpath",children:_.path},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(_.encoding==="blob"?" blob":""),children:_.encoding},void 0,!1,void 0,this),$("div",{class:"facts",children:[$("button",{title:"预览",onClick:(V)=>{V.stopPropagation(),W9($(S3,{site:Z,file:_},void 0,!1,void 0,this))},children:$(f,{name:"eye",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"复制路径",onClick:(V)=>{V.stopPropagation(),Y8("/sites/"+Z.name+"/"+_.path)},children:$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"del",title:"删除",onClick:(V)=>{V.stopPropagation(),w(_)},children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},_.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 S3({site:Z,file:J}){let Q="/sites/"+Z.name+"/"+J.path,[X,z]=k(null),W=f3(J.content_type),G=!W&&(J.encoding==="utf8"||/text\/|json|javascript|xml/.test(J.content_type));return l(()=>{if(!G)return;fetch(Q).then((q)=>q.text()).then(z).catch(()=>z("(无法加载内容)"))},[Q]),$(q9,{title:J.path,sub:Q,width:680,footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Y8(Q),children:"复制路径"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:c0,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 Nq({site:Z,onClose:J}){l(()=>{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:[$(f,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:K6(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:[$(f,{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:$(f,{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 wq={doc:"file",database:"database",site:"globe"};function Mq(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 j3({onNavigate:Z}){let[J,Q]=k(null),[X,z]=k("all"),[W,G]=k(""),q=()=>a.listShares().then(Q).catch((P)=>s(`加载失败:${P.message}`));l(()=>{return q(),document.addEventListener(PZ,q),()=>document.removeEventListener(PZ,q)},[]);let{copyShare:H,revoke:Y,renew:F}=o6(q,s,s),K=_9(()=>{let P=J??[],A=W.trim().toLowerCase();return P.filter((_)=>(X==="all"||_.transport===X)&&(!A||_.title.toLowerCase().includes(A)||_.source.toLowerCase().includes(A)))},[J,X,W]),w=(P)=>{if(P.kind==="doc")Z({kind:"doc",id:P.target_id});else if(P.kind==="database")Z({kind:"db",id:P.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((P)=>$("button",{class:"shv-seg-btn"+(X===P?" active":""),onClick:()=>z(P),children:P==="all"?"全部":P==="server"?"服务器":"对象存储"},P,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"shv-search",children:[$(f,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{placeholder:"搜索标题 / 来源…",value:W,onInput:(P)=>G(P.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:$(f,{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((P)=>{let A=Mq(P.expiresAt);return $("li",{class:"shv-row",children:[$("span",{class:"shv-ico k-"+P.kind,children:$(f,{name:wq[P.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:()=>w(P),title:"打开对象",children:P.title},void 0,!1,void 0,this),$("span",{class:"shv-pill t-"+P.transport,children:P.transport==="s3"?"对象存储":"服务器"},void 0,!1,void 0,this),$("span",{class:"shv-pill p-"+P.permission,children:P.permission==="edit"?"可编辑":"只读"},void 0,!1,void 0,this),P.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:["经 ",P.source,$("span",{class:"shv-exp"+(A.warn?" warn":"")+(A.dead?" dead":""),children:["· ",A.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(P),children:"复制链接"},void 0,!1,void 0,this),P.transport==="s3"&&$("button",{class:"btn btn-secondary",onClick:()=>F(P),children:"续期"},void 0,!1,void 0,this),P.url&&$("a",{class:"btn btn-secondary",href:P.url,target:"_blank",rel:"noreferrer",children:"打开"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>Y(P),children:"撤销"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},P.slug,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ZJ(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 JJ(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 h3="mh-quicknote-last",D3="mh-quicknote-parent",x3="Quick Notes";function Cq(Z,J){return(J.created_hlc??"").localeCompare(Z.created_hlc??"")}async function yq(){let Z=localStorage.getItem(D3);if(Z)try{return await a.getDocument(Z),Z}catch{}let X=(await a.listDocuments()).find((z)=>z.parent_id==null&&z.title===x3)?.id??(await a.createDocument({title:x3})).id;return localStorage.setItem(D3,X),X}function m3(){let[Z,J]=k(null),[Q,X]=k([]),[z,W]=k(null),[G,q]=k(""),[H,Y]=k(!1),F=W0(null),K=typeof window<"u"?window.metahubDesktop?.quicknote:void 0,w=n9(async(R)=>{let x=(await a.listDocumentsByParent(R)).sort(Cq);return X(x),x},[]);l(()=>{if(!Z)return;let R,x=()=>{clearTimeout(R),R=setTimeout(()=>void w(Z),80)};return document.addEventListener(L9,x),()=>{clearTimeout(R),document.removeEventListener(L9,x)}},[Z,w]);let P=n9(async(R)=>{let x=await a.createDocument({title:"",parent_id:R});return await w(R),x.id},[w]);l(()=>{(async()=>{try{let R=await yq();J(R);let x=await w(R),S=localStorage.getItem(h3),O=S&&x.some((N)=>N.id===S)&&S||x[0]?.id||await P(R);W(O)}catch(R){q(String(R.message))}})()},[w,P]),l(()=>{if(z)localStorage.setItem(h3,z)},[z]),l(()=>{K?.getAlwaysOnTop().then(Y).catch(()=>{})},[K]),l(()=>{if(!K)return;let R=(x)=>{if(x.key==="Escape")K.hide()};return addEventListener("keydown",R),()=>removeEventListener("keydown",R)},[K]);let A=async()=>{if(!Z)return;try{W(await P(Z))}catch(R){q(String(R.message))}},_=async()=>{if(!K)return;let R=!H;Y(R);try{Y(await K.setAlwaysOnTop(R))}catch{Y(!R)}},V=async()=>{if(!z||!Z)return;if(!await R0({title:"删除笔记?",message:"该快速笔记将被删除。",confirmLabel:"删除",danger:!0}))return;await a.deleteDocument(z);let x=await w(Z);W(x[0]?.id??await P(Z))},D=(R)=>{y0(R,(x)=>$(o,{children:[$(j0,{children:"快速笔记"},void 0,!1,void 0,this),Q.length===0&&$("div",{class:"lbl",children:"还没有笔记"},void 0,!1,void 0,this),Q.map((S)=>$(z0,{icon:"file",label:S.title||"无标题",checked:S.id===z,onClick:()=>{x(),W(S.id)}},S.id,!1,void 0,this)),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"新建笔记",onClick:()=>{x(),A()}},void 0,!1,void 0,this),z&&$(z0,{icon:"trash",label:"删除当前笔记",danger:!0,onClick:()=>{x(),V()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),{minWidth:220})},v=Q.find((R)=>R.id===z)?.title;return $("div",{class:"qn",children:[$("div",{class:"qn-bar",children:[$("span",{class:"qn-brand",children:v||"快速笔记"},void 0,!1,void 0,this),$("div",{class:"qn-actions",children:[$("button",{class:"iconbtn",title:"新建笔记",onClick:()=>void A(),children:$(f,{name:"plus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"笔记列表",onClick:D,children:$(f,{name:"list"},void 0,!1,void 0,this)},void 0,!1,void 0,this),K&&$("button",{class:"iconbtn"+(H?" active":""),title:H?"取消置顶":"始终置顶",onClick:()=>void _(),children:$(f,{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?$(W6,{docId:z,onError:q,onHandle:(R)=>F.current=R},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)}function _q(){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 u3(){let Z=_q(),[J,Q]=k(Z.src),X=async(z)=>{try{let W=await a.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:$(j1,{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 vq=/[",\r\n]/;function Tq(Z){return vq.test(Z)?`"${Z.replace(/"/g,'""')}"`:Z}function E3(Z){return Z.map((J)=>J.map(Tq).join(",")).join(`
|
|
148
|
+
`)}function $J(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 QJ(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 p3(Z,J){let Q=["id",...Z.map((z)=>z.name)],X=J.map((z)=>[z.id,...Z.map((W)=>Rq(z.cells[W.id]))]);return E3([Q,...X])}function Rq(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 kq(){let[Z,J]=k(()=>typeof window<"u"&&window.matchMedia(V8).matches);return l(()=>{let Q=window.matchMedia(V8),X=()=>J(Q.matches);return Q.addEventListener("change",X),()=>Q.removeEventListener("change",X)},[]),Z}function Iq(){let[Z,J]=k([]),[Q,X]=k([]),[z,W]=k(()=>JJ(location.hash)),[G,q]=k(""),[H,Y]=k(!1),[F,K]=k(268),[w,P]=k("blocks"),[A,_]=k(!1),[V,D]=k(!1),[v,R]=k(!1),[x,S]=k(!1),[O,N]=k(()=>jZ()),[L,B]=k(!1),[M,y]=k(!1),E=W0(null),c=W0(!1),r=W0(null),$0=kq(),m=n9((T)=>q(T),[]),g=n9((T)=>{E.current=T},[]),u=n9(async()=>{let[T,p]=await Promise.all([a.listDatabases(),a.listDocuments()]);J(T),X(p),_(!0)},[]);l(()=>{u().catch((T)=>m(String(T.message)))},[u]),l(()=>{let T,p=()=>{clearTimeout(T),T=setTimeout(()=>u().catch((i)=>m(String(i.message))),80)};return document.addEventListener(L9,p),()=>{clearTimeout(T),document.removeEventListener(L9,p)}},[u,m]),l(()=>{if(V9().surface==="desktop")return;tJ()},[]),l(()=>F9((T)=>N({...T})),[]),l(()=>{if(Boolean(O.bucketDirty||O.bucketSyncing)){c.current=!0,B(!1);return}if(!c.current||O.bucketError)return;c.current=!1,B(!0);let p=setTimeout(()=>B(!1),900);return()=>clearTimeout(p)},[O.bucketDirty,O.bucketSyncing,O.bucketError]),l(()=>{k6().then(()=>R8())},[]);let[I,n]=k(typeof navigator<"u"&&!navigator.onLine);l(()=>{let T=()=>n(!1),p=()=>n(!0);return window.addEventListener("online",T),window.addEventListener("offline",p),()=>{window.removeEventListener("online",T),window.removeEventListener("offline",p)}},[]),l(()=>{let T=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0;if(!T)return;Promise.all([a.version().then((p)=>p.version).catch(()=>null),T.installedVersion().catch(()=>null)]).then(([p,i])=>{if(p&&i&&GZ(i,p)>0)D(!0)})},[]);let Z0=(T,p)=>{let i=ZJ(T);if(location.hash!==i)history[p?.replace?"replaceState":"pushState"](null,"",i);W(T)};l(()=>{if(location.hash&&!location.hash.startsWith("#/"))history.replaceState(null,"","#/");let T=()=>W(JJ(location.hash));return window.addEventListener("hashchange",T),()=>window.removeEventListener("hashchange",T)},[]);let q0=()=>a.createDocument({title:""}).then((T)=>Z0({kind:"doc",id:T.id})).catch((T)=>m(String(T.message))),Q0=z.kind==="db"?Z.find((T)=>T.id===z.id):void 0,J0=z.kind==="doc"?Q.find((T)=>T.id===z.id):void 0,B0=z.kind==="doc"?z.id:null,p0=z.kind==="db"?z.id:null;l(()=>{P("blocks"),R(!1)},[B0]),l(()=>{S(!1)},[p0]);let i0=z.kind!=="empty",m0=W0(0);l(()=>{let T=$0&&i0;if(T&&!document.body.classList.contains("mobile-content"))m0.current=window.scrollY;if(document.body.classList.toggle("mobile",$0),document.body.classList.toggle("mobile-content",T),G6(),$0)window.scrollTo(0,T?0:m0.current)},[$0,i0,z]),l(()=>{let T=(p)=>{if((p.metaKey||p.ctrlKey)&&p.key.toLowerCase()==="k"){p.preventDefault(),document.querySelector(".sb-search input")?.focus();return}if((p.metaKey||p.ctrlKey)&&p.key.toLowerCase()==="s"){if(r.current?.())p.preventDefault()}};return window.addEventListener("keydown",T),()=>window.removeEventListener("keydown",T)},[]),l(()=>{let T=window.matchMedia("(prefers-color-scheme: dark)"),p=()=>{n1(),G6()};return T.addEventListener("change",p),()=>T.removeEventListener("change",p)},[]);let d0=(T)=>{let p=E.current?.snapshotMarkdown();E.current?.flushSave(),(p==null?a.getDocument(T.id).then((F0)=>F0.body??""):Promise.resolve(p)).then((F0)=>QJ($J(T.title||T.id,".md"),F0,"text/markdown;charset=utf-8")).catch((F0)=>m(String(F0.message)))},g0=(T)=>{Promise.all([a.listProperties(T.id),a.listRecords(T.id)]).then(([p,i])=>QJ($J(T.name||T.id,".csv"),p3(p,i),"text/csv;charset=utf-8")).catch((p)=>m(String(p.message)))},h0=(T)=>{y0(T,(p)=>$(o,{children:[$(z0,{icon:"link",label:"复制链接",onClick:()=>{p(),navigator.clipboard.writeText(location.origin+location.pathname+ZJ(z)).then(()=>s("链接已复制")).catch((i)=>m(String(i.message)))}},void 0,!1,void 0,this),z.kind==="doc"&&J0&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{p(),N9({kind:"doc",ref:J0.id,title:J0.title})}},void 0,!1,void 0,this),z.kind==="db"&&Q0&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{p(),N9({kind:"database",ref:Q0.id,title:Q0.name})}},void 0,!1,void 0,this),z.kind==="doc"&&J0&&$(z0,{icon:"download",label:"导出 Markdown",onClick:()=>{p(),d0(J0)}},void 0,!1,void 0,this),z.kind==="db"&&Q0&&$(z0,{icon:"download",label:"导出 CSV",onClick:()=>{p(),g0(Q0)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},_0=e0()&&(O.bucketDirty||O.bucketSyncing||O.bucketError||L)?O.bucketSyncing?"saving":L?"saved":O.bucketError?"error":"dirty":"share",a0=_0==="saving"?"保存中…":_0==="saved"?"已保存":_0==="share"?"分享":"保存",O0=_0==="share"?"share":_0==="saved"?"cloudCheck":_0==="saving"?"spinner":_0==="error"?"cloudOff":"cloudUp",u0=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform),r0=_0==="share"?"分享":_0==="error"?`保存到云端失败:${O.bucketError??""}`:`保存到云端${$0?"":u0?" · ⌘S":" · Ctrl+S"}`,K0=async()=>{try{await E.current?.flushSave(),await aJ();let T=jZ();if(T.bucketError)throw Error(T.bucketError);if(T.bucketDirty)throw Error("仍有改动尚未保存到云端")}catch(T){s(`保存失败:${T.message}`)}},l0=()=>{y(!0),window.setTimeout(()=>y(!1),320)},w0=(T)=>{if(_0==="share"){h0(T);return}if(_0==="saving"||_0==="saved")return;K0()};r.current=()=>{if(z.kind!=="doc"&&z.kind!=="db")return!1;if(_0==="saving"||_0==="saved")return!0;if(_0==="dirty"||_0==="error")K0(),l0();else if(e0())s("已是最新"),l0();return!0};let h=(T)=>{if(z.kind==="doc"&&J0)y0(T,(p)=>$(o,{children:[$(z0,{icon:"code",label:w==="source"?"块方式显示":"代码方式显示",checked:w==="source",onClick:()=>{p(),E.current?.setMode(w==="source"?"blocks":"source")}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{p(),E.current?.flushSave();try{let i=await a.duplicateDocument(J0.id,{title:`${J0.title||"无标题"} 副本`});Z0({kind:"doc",id:i.id}),s("已创建副本")}catch(i){m(String(i.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"版本历史",onClick:()=>{p(),E.current?.flushSave(),R(!0)}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{p(),navigator.clipboard?.writeText(J0.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{p();let i=await Y9({title:"重命名文档",value:J0.title});if(i)await a.updateDocument(J0.id,{title:i})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除文档",danger:!0,onClick:async()=>{if(p(),await R0({title:"删除文档?",message:`「${J0.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))await a.deleteDocument(J0.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));else if(z.kind==="db"&&Q0)y0(T,(p)=>$(o,{children:[$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{p();try{let i=await a.duplicateDatabase(Q0.id,{name:`${Q0.name} 副本`});Z0({kind:"db",id:i.id}),s("已创建副本")}catch(i){m(String(i.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"最近动态",onClick:()=>{p(),S(!0)}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{p(),navigator.clipboard?.writeText(Q0.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{p();let i=await Y9({title:"重命名数据库",value:Q0.name});if(i&&i!==Q0.name)await a.updateDatabase(Q0.id,{name:i})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(p(),await R0({title:"删除数据库?",message:`「${Q0.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))await a.deleteDatabase(Q0.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $(o,{children:[$(_5,{databases:Z,docs:Q,view:z,navigate:Z0,width:F,collapsed:H,onResize:K,onCollapse:()=>Y(!0),updatePending:V,onError:m},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:$0?"返回":H?"展开侧栏":"菜单",onClick:()=>$0?Z0({kind:"empty"}):Y(!1),children:$(f,{name:$0?"arrowLeft":"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"crumb",children:[z.kind==="doc"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:J0?.title||"无标题"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="db"&&$(o,{children:[$("span",{class:"emoji",children:Q0?.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{children:Q0?.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"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{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"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{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"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{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")&&$(o,{children:[$("button",{class:`btn share-save share-save-${_0}${M?" share-save-kbd":""}`,title:r0,disabled:_0==="saving"||_0==="saved",onClick:w0,children:[$("span",{class:"share-save-ico",children:$(f,{name:O0,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"share-save-label",children:a0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",onClick:h,children:$(f,{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),I&&$("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"&&$(Sq,{onNewDoc:q0},void 0,!1,void 0,this),z.kind==="db"&&Q0&&$(c5,{db:Q0,onError:m},Q0.id,!1,void 0,this),z.kind==="db"&&!Q0&&$("div",{class:"empty",children:A?"数据库不存在或已被删除。":"加载中…"},void 0,!1,void 0,this),z.kind==="doc"&&$(W6,{docId:z.id,onError:m,onModeChange:P,onHandle:g},z.id,!1,void 0,this),z.kind==="search"&&$(fq,{q:z.q,onOpenDoc:(T)=>Z0({kind:"doc",id:T}),onOpenDb:(T)=>Z0({kind:"db",id:T})},void 0,!1,void 0,this),z.kind==="settings"&&$(T3,{onUpdatePending:D},void 0,!1,void 0,this),z.kind==="sites"&&$(b3,{},void 0,!1,void 0,this),z.kind==="shares"&&$(j3,{onNavigate:Z0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),v&&z.kind==="doc"&&$(g5,{docId:z.id,onClose:()=>R(!1),onReverted:()=>E.current?.reload()},void 0,!1,void 0,this),x&&z.kind==="db"&&$(b5,{dbId:z.id,onClose:()=>S(!1)},void 0,!1,void 0,this),$(g8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Sq({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 Vq({text:Z}){let J=Z.split(/\[([^\[\]]*)\]/g);return $(o,{children:J.map((Q,X)=>X%2?$("mark",{children:Q},X,!1,void 0,this):Q)},void 0,!1,void 0,this)}function fq({q:Z,onOpenDoc:J,onOpenDb:Q}){let[X,z]=k(null);return l(()=>{z(null),a.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:$(Vq,{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 d3({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 gq(){let Z=/[#&]enroll=([^&]+)/.exec(location.hash);if(!Z)return null;try{return A5(Z[1])}catch{return null}}function bq({onDone:Z}){let J=gq(),[Q,X]=k(J?.endpoint??""),[z,W]=k(J?.bucket??""),[G,q]=k(J?.region??"auto"),[H,Y]=k(J?.accessKeyId??""),[F,K]=k(J?.secretAccessKey??""),[w,P]=k(J?.prefix??"metahub"),[A,_]=k(J?.encrypt??!0),[V,D]=k(""),[v,R]=k(!1),[x,S]=k(""),O=J!=null,N=async()=>{if(!Q.trim()||!z.trim()||!H.trim()||!F.trim()){S("endpoint、bucket、access key、secret key 必填");return}if(A&&!V){S("加密口令必填");return}R(!0),S("");try{await lJ({endpoint:Q.trim(),region:G.trim()||"auto",bucket:z.trim(),prefix:w.trim()||"metahub",accessKeyId:H.trim(),secretAccessKey:F.trim(),encrypt:A,virtualHostedStyle:J?.virtualHostedStyle},V),Z()}catch(L){let B=L.message;S(/failed to fetch|load failed|networkerror|cors/i.test(B)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`连接失败:${B}`),R(!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&&$(o,{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:(L)=>X(L.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:(L)=>W(L.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:(L)=>q(L.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:(L)=>Y(L.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:(L)=>K(L.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",value:w,onInput:(L)=>P(L.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),A&&$(o,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:O,placeholder:"与其他设备相同的口令",value:V,onInput:(L)=>D(L.target.value),onKeyDown:(L)=>L.key==="Enter"&&N()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x&&$("div",{class:"enroll-err",children:x},void 0,!1,void 0,this),$("button",{class:"btn btn-primary enroll-go",disabled:v,onClick:N,children:v?"连接中…":"连接并同步"},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 jq(){let[Z,J]=k("detecting");if(l(()=>{k6().then((Q)=>{if(Q==="server")return J("app");if(!H9())return J("enroll");hZ(),J(e0()?"app":"hydrating")})},[]),l(()=>{if(Z!=="hydrating")return;if(e0())return J("app");return F9(()=>{if(e0())J("app")})},[Z]),Z==="detecting")return $(d3,{text:"加载中…"},void 0,!1,void 0,this);if(Z==="enroll")return $(bq,{onDone:()=>J(e0()?"app":"hydrating")},void 0,!1,void 0,this);if(Z==="hydrating")return $(d3,{text:"正在从云端水合本地副本…"},void 0,!1,void 0,this);return $(Iq,{},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"),a9($(u3,{},void 0,!1,void 0,this),document.getElementById("app"));else if(location.hash==="#quick"&&V9().surface==="desktop")document.body.classList.add("quicknote"),a9($(m3,{},void 0,!1,void 0,this),document.getElementById("app"));else a9($(jq,{},void 0,!1,void 0,this),document.getElementById("app"));
|