@tensorix/metahub 0.1.11 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +23711 -17899
- package/dist/cli.js.map +84 -59
- package/dist/core/blobs-core.d.ts +106 -0
- package/dist/core/blobs-core.d.ts.map +1 -0
- package/dist/core/blobs.d.ts +110 -0
- package/dist/core/blobs.d.ts.map +1 -0
- package/dist/core/cache.d.ts +23 -1
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/compact.d.ts +4 -3
- package/dist/core/compact.d.ts.map +1 -1
- package/dist/core/config.d.ts +7 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/crdt.d.ts +32 -2
- package/dist/core/crdt.d.ts.map +1 -1
- package/dist/core/schema-init.d.ts +62 -2
- 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 +35 -0
- package/dist/core/sites-core.d.ts.map +1 -1
- package/dist/core/sites.d.ts +4 -13
- 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 +12 -0
- package/dist/core/sync/blob-routes.d.ts.map +1 -0
- package/dist/core/sync/client.d.ts +7 -0
- package/dist/core/sync/client.d.ts.map +1 -1
- package/dist/core/sync/e2ee.d.ts +31 -0
- package/dist/core/sync/e2ee.d.ts.map +1 -0
- package/dist/core/sync/enroll.d.ts +21 -0
- package/dist/core/sync/enroll.d.ts.map +1 -0
- package/dist/core/sync/peers-routes.d.ts.map +1 -1
- package/dist/core/sync/peers.d.ts +74 -2
- package/dist/core/sync/peers.d.ts.map +1 -1
- package/dist/core/sync/publisher-lease.d.ts +8 -0
- package/dist/core/sync/publisher-lease.d.ts.map +1 -0
- package/dist/core/sync/routes.d.ts.map +1 -1
- package/dist/core/sync/server.d.ts +1 -0
- 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/sites-serve.d.ts.map +1 -1
- package/dist/core/sync/storage-s3-bun.d.ts +35 -0
- package/dist/core/sync/storage-s3-bun.d.ts.map +1 -0
- package/dist/core/sync/storage-url.d.ts +18 -0
- package/dist/core/sync/storage-url.d.ts.map +1 -0
- package/dist/core/sync/storage.d.ts +170 -0
- package/dist/core/sync/storage.d.ts.map +1 -0
- package/dist/db-worker.js +212 -66
- package/dist/index.js +13546 -8960
- package/dist/index.js.map +46 -27
- 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 +93 -61
- package/package.json +5 -1
package/dist/webui.js
CHANGED
|
@@ -1,115 +1,147 @@
|
|
|
1
|
-
var wJ=Object.create;var{getPrototypeOf:CJ,defineProperty:j8,getOwnPropertyNames:OJ}=Object;var _J=Object.prototype.hasOwnProperty;function AJ(Z){return this[Z]}var MJ,NJ,vJ=(Z,J,Q)=>{var $=Z!=null&&typeof Z==="object";if($){var X=J?MJ??=new WeakMap:NJ??=new WeakMap,q=X.get(Z);if(q)return q}Q=Z!=null?wJ(CJ(Z)):{};let W=J||!Z||!Z.__esModule?j8(Q,"default",{value:Z,enumerable:!0}):Q;for(let G of OJ(Z))if(!_J.call(W,G))j8(W,G,{get:AJ.bind(Z,G),enumerable:!0});if($)X.set(Z,W);return W};var _0=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var G5=_0((tX,W5)=>{function a4(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],$=typeof Q;if(($==="object"||$==="function")&&!Object.isFrozen(Q))a4(Q)}),Z}class p1{constructor(Z){if(Z.data===void 0)Z.data={};this.data=Z.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function l4(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function P9(Z,...J){let Q=Object.create(null);for(let $ in Z)Q[$]=Z[$];return J.forEach(function($){for(let X in $)Q[X]=$[X]}),Q}var b3="</span>",u4=(Z)=>{return!!Z.scope},g3=(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)=>`${$}${"_".repeat(X+1)}`)].join(" ")}return`${J}${Z}`};class n4{constructor(Z,J){this.buffer="",this.classPrefix=J.classPrefix,Z.walk(this)}addText(Z){this.buffer+=l4(Z)}openNode(Z){if(!u4(Z))return;let J=g3(Z.scope,{prefix:this.classPrefix});this.span(J)}closeNode(Z){if(!u4(Z))return;this.buffer+=b3}value(){return this.buffer}span(Z){this.buffer+=`<span class="${Z}">`}}var E4=(Z={})=>{let J={children:[]};return Object.assign(J,Z),J};class c1{constructor(){this.rootNode=E4(),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=E4({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)=>{c1._collapse(J)})}}class r4 extends c1{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 n4(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function XZ(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function o4(Z){return T9("(?=",Z,")")}function x3(Z){return T9("(?:",Z,")*")}function j3(Z){return T9("(?:",Z,")?")}function T9(...Z){return Z.map((Q)=>XZ(Q)).join("")}function D3(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 i1(...Z){return"("+(D3(Z).capture?"":"?:")+Z.map(($)=>XZ($)).join("|")+")"}function t4(Z){return new RegExp(Z.toString()+"|").exec("").length-1}function h3(Z,J){let Q=Z&&Z.exec(J);return Q&&Q.index===0}var m3=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function d1(Z,{joinWith:J}){let Q=0;return Z.map(($)=>{Q+=1;let X=Q,q=XZ($),W="";while(q.length>0){let G=m3.exec(q);if(!G){W+=q;break}if(W+=q.substring(0,G.index),q=q.substring(G.index+G[0].length),G[0][0]==="\\"&&G[1])W+="\\"+String(Number(G[1])+X);else if(W+=G[0],G[0]==="(")Q++}return W}).map(($)=>`(${$})`).join(J)}var u3=/\b\B/,s4="[a-zA-Z]\\w*",a1="[a-zA-Z_]\\w*",e4="\\b\\d+(\\.\\d+)?",Z5="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",J5="\\b(0b[01]+)",E3="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",p3=(Z={})=>{let J=/^#![ ]*\//;if(Z.binary)Z.begin=T9(J,/.*\b/,Z.binary,/\b.*/);return P9({scope:"meta",begin:J,end:/$/,relevance:0,"on:begin":(Q,$)=>{if(Q.index!==0)$.ignoreMatch()}},Z)},qZ={begin:"\\\\[\\s\\S]",relevance:0},c3={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[qZ]},i3={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[qZ]},d3={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/},pZ=function(Z,J,Q={}){let $=P9({scope:"comment",begin:Z,end:J,contains:[]},Q);$.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 X=i1("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 $.contains.push({begin:T9(/[ ]+/,"(",X,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),$},a3=pZ("//","$"),l3=pZ("/\\*","\\*/"),n3=pZ("#","$"),r3={scope:"number",begin:e4,relevance:0},o3={scope:"number",begin:Z5,relevance:0},t3={scope:"number",begin:J5,relevance:0},s3={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[qZ,{begin:/\[/,end:/\]/,relevance:0,contains:[qZ]}]},e3={scope:"title",begin:s4,relevance:0},ZQ={scope:"title",begin:a1,relevance:0},JQ={begin:"\\.\\s*"+a1,relevance:0},QQ=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()}})},uZ=Object.freeze({__proto__:null,APOS_STRING_MODE:c3,BACKSLASH_ESCAPE:qZ,BINARY_NUMBER_MODE:t3,BINARY_NUMBER_RE:J5,COMMENT:pZ,C_BLOCK_COMMENT_MODE:l3,C_LINE_COMMENT_MODE:a3,C_NUMBER_MODE:o3,C_NUMBER_RE:Z5,END_SAME_AS_BEGIN:QQ,HASH_COMMENT_MODE:n3,IDENT_RE:s4,MATCH_NOTHING_RE:u3,METHOD_GUARD:JQ,NUMBER_MODE:r3,NUMBER_RE:e4,PHRASAL_WORDS_MODE:d3,QUOTE_STRING_MODE:i3,REGEXP_MODE:s3,RE_STARTERS_RE:E3,SHEBANG:p3,TITLE_MODE:e3,UNDERSCORE_IDENT_RE:a1,UNDERSCORE_TITLE_MODE:ZQ});function zQ(Z,J){if(Z.input[Z.index-1]===".")J.ignoreMatch()}function $Q(Z,J){if(Z.className!==void 0)Z.scope=Z.className,delete Z.className}function XQ(Z,J){if(!J)return;if(!Z.beginKeywords)return;if(Z.begin="\\b("+Z.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Z.__beforeBegin=zQ,Z.keywords=Z.keywords||Z.beginKeywords,delete Z.beginKeywords,Z.relevance===void 0)Z.relevance=0}function qQ(Z,J){if(!Array.isArray(Z.illegal))return;Z.illegal=i1(...Z.illegal)}function WQ(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 GQ(Z,J){if(Z.relevance===void 0)Z.relevance=1}var HQ=(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(($)=>{delete Z[$]}),Z.keywords=Q.keywords,Z.begin=T9(Q.beforeMatch,o4(Q.begin)),Z.starts={relevance:0,contains:[Object.assign(Q,{endsParent:!0})]},Z.relevance=0,delete Q.beforeMatch},KQ=["of","and","for","in","not","or","if","then","parent","list","value"],FQ="keyword";function Q5(Z,J,Q=FQ){let $=Object.create(null);if(typeof Z==="string")X(Q,Z.split(" "));else if(Array.isArray(Z))X(Q,Z);else Object.keys(Z).forEach(function(q){Object.assign($,Q5(Z[q],J,q))});return $;function X(q,W){if(J)W=W.map((G)=>G.toLowerCase());W.forEach(function(G){let K=G.split("|");$[K[0]]=[q,YQ(K[0],K[1])]})}}function YQ(Z,J){if(J)return Number(J);return UQ(Z)?0:1}function UQ(Z){return KQ.includes(Z.toLowerCase())}var p4={},R9=(Z)=>{console.error(Z)},c4=(Z,...J)=>{console.log(`WARN: ${Z}`,...J)},c9=(Z,J)=>{if(p4[`${Z}/${J}`])return;console.log(`Deprecated as of ${Z}. ${J}`),p4[`${Z}/${J}`]=!0},EZ=Error();function z5(Z,J,{key:Q}){let $=0,X=Z[Q],q={},W={};for(let G=1;G<=J.length;G++)W[G+$]=X[G],q[G+$]=!0,$+=t4(J[G-1]);Z[Q]=W,Z[Q]._emit=q,Z[Q]._multi=!0}function BQ(Z){if(!Array.isArray(Z.begin))return;if(Z.skip||Z.excludeBegin||Z.returnBegin)throw R9("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),EZ;if(typeof Z.beginScope!=="object"||Z.beginScope===null)throw R9("beginScope must be object"),EZ;z5(Z,Z.begin,{key:"beginScope"}),Z.begin=d1(Z.begin,{joinWith:""})}function LQ(Z){if(!Array.isArray(Z.end))return;if(Z.skip||Z.excludeEnd||Z.returnEnd)throw R9("skip, excludeEnd, returnEnd not compatible with endScope: {}"),EZ;if(typeof Z.endScope!=="object"||Z.endScope===null)throw R9("endScope must be object"),EZ;z5(Z,Z.end,{key:"endScope"}),Z.end=d1(Z.end,{joinWith:""})}function yQ(Z){if(Z.scope&&typeof Z.scope==="object"&&Z.scope!==null)Z.beginScope=Z.scope,delete Z.scope}function PQ(Z){if(yQ(Z),typeof Z.beginScope==="string")Z.beginScope={_wrap:Z.beginScope};if(typeof Z.endScope==="string")Z.endScope={_wrap:Z.endScope};BQ(Z),LQ(Z)}function wQ(Z){function J(W,G){return new RegExp(XZ(W),"m"+(Z.case_insensitive?"i":"")+(Z.unicodeRegex?"u":"")+(G?"g":""))}class Q{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(W,G){G.position=this.position++,this.matchIndexes[this.matchAt]=G,this.regexes.push([G,W]),this.matchAt+=t4(W)+1}compile(){if(this.regexes.length===0)this.exec=()=>null;let W=this.regexes.map((G)=>G[1]);this.matcherRe=J(d1(W,{joinWith:"|"}),!0),this.lastIndex=0}exec(W){this.matcherRe.lastIndex=this.lastIndex;let G=this.matcherRe.exec(W);if(!G)return null;let K=G.findIndex((F,Y)=>Y>0&&F!==void 0),H=this.matchIndexes[K];return G.splice(0,K),Object.assign(G,H)}}class ${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 G=new Q;return this.rules.slice(W).forEach(([K,H])=>G.addRule(K,H)),G.compile(),this.multiRegexes[W]=G,G}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(W,G){if(this.rules.push([W,G]),G.type==="begin")this.count++}exec(W){let G=this.getMatcher(this.regexIndex);G.lastIndex=this.lastIndex;let K=G.exec(W);if(this.resumingScanAtSamePosition())if(K&&K.index===this.lastIndex);else{let H=this.getMatcher(0);H.lastIndex=this.lastIndex+1,K=H.exec(W)}if(K){if(this.regexIndex+=K.position+1,this.regexIndex===this.count)this.considerAll()}return K}}function X(W){let G=new $;if(W.contains.forEach((K)=>G.addRule(K.begin,{rule:K,type:"begin"})),W.terminatorEnd)G.addRule(W.terminatorEnd,{type:"end"});if(W.illegal)G.addRule(W.illegal,{type:"illegal"});return G}function q(W,G){let K=W;if(W.isCompiled)return K;[$Q,WQ,PQ,HQ].forEach((F)=>F(W,G)),Z.compilerExtensions.forEach((F)=>F(W,G)),W.__beforeBegin=null,[XQ,qQ,GQ].forEach((F)=>F(W,G)),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=Q5(W.keywords,Z.case_insensitive);if(K.keywordPatternRe=J(H,!0),G){if(!W.begin)W.begin=/\B|\b/;if(K.beginRe=J(K.begin),!W.end&&!W.endsWithParent)W.end=/\B|\b/;if(W.end)K.endRe=J(K.end);if(K.terminatorEnd=XZ(K.end)||"",W.endsWithParent&&G.terminatorEnd)K.terminatorEnd+=(W.end?"|":"")+G.terminatorEnd}if(W.illegal)K.illegalRe=J(W.illegal);if(!W.contains)W.contains=[];if(W.contains=[].concat(...W.contains.map(function(F){return CQ(F==="self"?W:F)})),W.contains.forEach(function(F){q(F,K)}),W.starts)q(W.starts,G);return K.matcher=X(K),K}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=P9(Z.classNameAliases||{}),q(Z)}function $5(Z){if(!Z)return!1;return Z.endsWithParent||$5(Z.starts)}function CQ(Z){if(Z.variants&&!Z.cachedVariants)Z.cachedVariants=Z.variants.map(function(J){return P9(Z,{variants:null},J)});if(Z.cachedVariants)return Z.cachedVariants;if($5(Z))return P9(Z,{starts:Z.starts?P9(Z.starts):null});if(Object.isFrozen(Z))return P9(Z);return Z}var OQ="11.11.1";class X5 extends Error{constructor(Z,J){super(Z);this.name="HTMLInjectionError",this.html=J}}var E1=l4,i4=P9,d4=Symbol("nomatch"),_Q=7,q5=function(Z){let J=Object.create(null),Q=Object.create(null),$=[],X=!0,q="Could not find the language '{}', did you forget to load/include a language module?",W={disableAutodetect:!0,name:"Plain text",contains:[]},G={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:r4};function K(I){return G.noHighlightRe.test(I)}function H(I){let V=I.className+" ";V+=I.parentNode?I.parentNode.className:"";let g=G.languageDetectRe.exec(V);if(g){let j=v(g[1]);if(!j)c4(q.replace("{}",g[1])),c4("Falling back to no-highlight mode for this block.",I);return j?g[1]:"no-highlight"}return V.split(/\s+/).find((j)=>K(j)||v(j))}function F(I,V,g){let j="",e="";if(typeof V==="object")j=I,g=V.ignoreIllegals,e=V.language;else c9("10.7.0","highlight(lang, code, ...args) has been deprecated."),c9("10.7.0",`Please use highlight(code, options) instead.
|
|
2
|
-
https://github.com/highlightjs/highlight.js/issues/2277`),
|
|
3
|
-
`,1;if(f9>1e5&&f9>Q0.index*3)throw Error("potential infinite loop, way more iterations than matches");return C0+=y0,y0.length}let q0=v(I);if(!q0)throw R9(q.replace("{}",I)),Error('Unknown language: "'+I+'"');let D=wQ(q0),L0="",d=j||D,S0={},T0=new G.__emitter(G);S();let C0="",I9=0,r0=0,f9=0,b9=!1;try{if(!q0.__emitTokens){d.matcher.considerAll();for(;;){if(f9++,b9)b9=!1;else d.matcher.considerAll();d.matcher.lastIndex=r0;let a=d.matcher.exec(V);if(!a)break;let Q0=V.substring(r0,a.index),y0=h(Q0,a);r0=a.index+y0}h(V.substring(r0))}else q0.__emitTokens(V,T0);return T0.finalize(),L0=T0.toHTML(),{language:I,value:L0,relevance:I9,illegal:!1,_emitter:T0,_top:d}}catch(a){if(a.message&&a.message.includes("Illegal"))return{language:I,value:E1(V),illegal:!0,relevance:0,_illegalBy:{message:a.message,index:r0,context:V.slice(r0-100,r0+100),mode:a.mode,resultSoFar:L0},_emitter:T0};else if(X)return{language:I,value:E1(V),illegal:!1,relevance:0,errorRaised:a,_emitter:T0,_top:d};else throw a}}function C(I){let V={value:E1(I),illegal:!1,relevance:0,_top:W,_emitter:new G.__emitter(G)};return V._emitter.addText(I),V}function L(I,V){V=V||G.languages||Object.keys(J);let g=C(I),j=V.filter(v).filter(J0).map((k0)=>Y(k0,I,!1));j.unshift(g);let e=j.sort((k0,p)=>{if(k0.relevance!==p.relevance)return p.relevance-k0.relevance;if(k0.language&&p.language){if(v(k0.language).supersetOf===p.language)return 1;else if(v(p.language).supersetOf===k0.language)return-1}return 0}),[X0,W0]=e,P0=X0;return P0.secondBest=W0,P0}function B(I,V,g){let j=V&&Q[V]||g;I.classList.add("hljs"),I.classList.add(`language-${j}`)}function M(I){let V=null,g=H(I);if(K(g))return;if(B0("before:highlightElement",{el:I,language:g}),I.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",I);return}if(I.children.length>0){if(!G.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(I);if(G.throwUnescapedHTML)throw new X5("One of your code blocks includes unescaped HTML.",I.innerHTML)}V=I;let j=V.textContent,e=g?F(j,{language:g,ignoreIllegals:!0}):L(j);if(I.innerHTML=e.value,I.dataset.highlighted="yes",B(I,g,e.language),I.result={language:e.language,re:e.relevance,relevance:e.relevance},e.secondBest)I.secondBest={language:e.secondBest.language,relevance:e.secondBest.relevance};B0("after:highlightElement",{el:I,result:e,text:j})}function k(I){G=i4(G,I)}let T=()=>{_(),c9("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function O(){_(),c9("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let P=!1;function _(){function I(){_()}if(document.readyState==="loading"){if(!P)window.addEventListener("DOMContentLoaded",I,!1);P=!0;return}document.querySelectorAll(G.cssSelector).forEach(M)}function A(I,V){let g=null;try{g=V(Z)}catch(j){if(R9("Language definition for '{}' could not be registered.".replace("{}",I)),!X)throw j;else R9(j);g=W}if(!g.name)g.name=I;if(J[I]=g,g.rawDefinition=V.bind(null,Z),g.aliases)E(g.aliases,{languageName:I})}function y(I){delete J[I];for(let V of Object.keys(Q))if(Q[V]===I)delete Q[V]}function x(){return Object.keys(J)}function v(I){return I=(I||"").toLowerCase(),J[I]||J[Q[I]]}function E(I,{languageName:V}){if(typeof I==="string")I=[I];I.forEach((g)=>{Q[g.toLowerCase()]=V})}function J0(I){let V=v(I);return V&&!V.disableAutodetect}function l(I){if(I["before:highlightBlock"]&&!I["before:highlightElement"])I["before:highlightElement"]=(V)=>{I["before:highlightBlock"](Object.assign({block:V.el},V))};if(I["after:highlightBlock"]&&!I["after:highlightElement"])I["after:highlightElement"]=(V)=>{I["after:highlightBlock"](Object.assign({block:V.el},V))}}function A0(I){l(I),$.push(I)}function o(I){let V=$.indexOf(I);if(V!==-1)$.splice(V,1)}function B0(I,V){let g=I;$.forEach(function(j){if(j[g])j[g](V)})}function K0(I){return c9("10.7.0","highlightBlock will be removed entirely in v12.0"),c9("10.7.0","Please use highlightElement now."),M(I)}Object.assign(Z,{highlight:F,highlightAuto:L,highlightAll:_,highlightElement:M,highlightBlock:K0,configure:k,initHighlighting:T,initHighlightingOnLoad:O,registerLanguage:A,unregisterLanguage:y,listLanguages:x,getLanguage:v,registerAliases:E,autoDetection:J0,inherit:i4,addPlugin:A0,removePlugin:o}),Z.debugMode=function(){X=!1},Z.safeMode=function(){X=!0},Z.versionString=OQ,Z.regex={concat:T9,lookahead:o4,either:i1,optional:j3,anyNumberOfTimes:x3};for(let I in uZ)if(typeof uZ[I]==="object")a4(uZ[I]);return Object.assign(Z,uZ),Z},i9=q5({});i9.newInstance=()=>q5({});W5.exports=i9;i9.HighlightJS=i9;i9.default=i9});var K5=_0((sX,H5)=>{function AQ(Z){let J=Z.regex,Q=J.concat(/[\p{L}_]/u,J.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),$=/[\p{L}0-9._:-]+/u,X={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},q={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},W=Z.inherit(q,{begin:/\(/,end:/\)/}),G=Z.inherit(Z.APOS_STRING_MODE,{className:"string"}),K=Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),H={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:$,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[X]},{begin:/'/,end:/'/,contains:[X]},{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:[q,K,G,W,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[q,W,K,G]}]}]},Z.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},X,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[K]},{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}]}]}}H5.exports=AQ});var Y5=_0((eX,F5)=>{function MQ(Z){let J=Z.regex,Q={},$={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[Q]}]};Object.assign(Q,{className:"variable",variants:[{begin:J.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},$]});let X={className:"subst",begin:/\$\(/,end:/\)/,contains:[Z.BACKSLASH_ESCAPE]},q=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"})]}},G={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,Q,X]};X.contains.push(G);let K={match:/\\"/},H={className:"string",begin:/'/,end:/'/},F={match:/\\'/},Y={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},Z.NUMBER_MODE,Q]},C=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],L=Z.SHEBANG({binary:`(${C.join("|")})`,relevance:10}),B={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[Z.inherit(Z.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},M=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],k=["true","false"],T={match:/(\/[a-z._-]+)+/},O=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],P=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],_=["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"],A=["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:M,literal:k,built_in:[...O,...P,"set","shopt",..._,...A]},contains:[L,Z.SHEBANG(),B,Y,q,W,T,G,K,H,F,Q]}}F5.exports=MQ});var B5=_0((Zq,U5)=>{function NQ(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),$="decltype\\(auto\\)",X="[a-zA-Z_]\\w*::",q="<[^<>]+>",W="(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",G={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},K="\\\\(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},Y={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]},C={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},L=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",k={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"},T=[Y,G,Q,Z.C_BLOCK_COMMENT_MODE,F,H],O={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:T.concat([{begin:/\(/,end:/\)/,keywords:k,contains:T.concat(["self"]),relevance:0}]),relevance:0},P={begin:"("+W+"[\\*&\\s]+)+"+L,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:k,relevance:0},{begin:L,returnBegin:!0,contains:[Z.inherit(C,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,H,F,G,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,H,F,G]}]},G,Q,Z.C_BLOCK_COMMENT_MODE,Y]};return{name:"C",aliases:["h"],keywords:k,disableAutodetect:!0,illegal:"</",contains:[].concat(O,P,T,[Y,{begin:Z.IDENT_RE+"::",keywords:k},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},Z.TITLE_MODE]}]),exports:{preprocessor:Y,strings:H,keywords:k}}}U5.exports=NQ});var y5=_0((Jq,L5)=>{function vQ(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),$="decltype\\(auto\\)",X="[a-zA-Z_]\\w*::",q="<[^<>]+>",W="(?!struct)(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",G={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},K="\\\\(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},Y={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]},C={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},L=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",B=["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"],M=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],k=["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"],T=["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"],_={type:M,keyword:B,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:k},A={className:"function.dispatch",relevance:0,keywords:{_hint:T},begin:J.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,Z.IDENT_RE,J.lookahead(/(<[^<>]+>|)\s*\(/))},y=[A,Y,G,Q,Z.C_BLOCK_COMMENT_MODE,F,H],x={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:_,contains:y.concat([{begin:/\(/,end:/\)/,keywords:_,contains:y.concat(["self"]),relevance:0}]),relevance:0},v={className:"function",begin:"("+W+"[\\*&\\s]+)+"+L,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:_,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:_,relevance:0},{begin:L,returnBegin:!0,contains:[C],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[H,F]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:_,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,H,F,G,{begin:/\(/,end:/\)/,keywords:_,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,H,F,G]}]},G,Q,Z.C_BLOCK_COMMENT_MODE,Y]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:_,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(x,v,A,y,[Y,{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:_,contains:["self",G]},{begin:Z.IDENT_RE+"::",keywords:_},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}L5.exports=vQ});var w5=_0((Qq,P5)=>{function kQ(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"],$=["default","false","null","true"],X=["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"],q=["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:X.concat(q),built_in:J,literal:$},G=Z.inherit(Z.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),K={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:'""'}]},Y=Z.inherit(F,{illegal:/\n/}),C={className:"subst",begin:/\{/,end:/\}/,keywords:W},L=Z.inherit(C,{illegal:/\n/}),B={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},Z.BACKSLASH_ESCAPE,L]},M={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},C]},k=Z.inherit(M,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},L]});C.contains=[M,B,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,K,Z.C_BLOCK_COMMENT_MODE],L.contains=[k,B,Y,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,K,Z.inherit(Z.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let T={variants:[H,M,B,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},O={begin:"<",end:">",contains:[{beginKeywords:"in out"},G]},P=Z.IDENT_RE+"(<"+Z.IDENT_RE+"(\\s*,\\s*"+Z.IDENT_RE+")*>)?(\\[\\])?",_={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"}},T,K,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},G,O,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[G,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[G,O,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:"("+P+"\\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,O],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:W,relevance:0,contains:[T,K,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},_]}}P5.exports=kQ});var O5=_0((zq,C5)=>{var RQ=(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"],VQ=["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"],SQ=[...TQ,...VQ],IQ=["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(),fQ=["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(),bQ=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),gQ=["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 xQ(Z){let J=Z.regex,Q=RQ(Z),$={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},X="and or not only",q=/@-?\w[\w]*(-\w+)*/,W="[a-zA-Z-][a-zA-Z0-9_-]*",G=[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,$,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:":("+fQ.join("|")+")"},{begin:":(:)?("+bQ.join("|")+")"}]},Q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+gQ.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[Q.BLOCK_COMMENT,Q.HEXCOLOR,Q.IMPORTANT,Q.CSS_NUMBER_MODE,...G,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...G,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},Q.FUNCTION_DISPATCH]},{begin:J.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:q},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:IQ.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...G,Q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+SQ.join("|")+")\\b"}]}}C5.exports=xQ});var A5=_0(($q,_5)=>{function jQ(Z){let J=Z.regex,Q={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},$={begin:"^[-\\*]{3,}",end:"$"},X={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}]},q={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}]},G=/[A-Za-z][A-Za-z0-9+.-]*/,K={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:J.concat(/\[.+?\]\(/,G,/:\/\/.*?\)/),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}]},Y=Z.inherit(H,{contains:[]}),C=Z.inherit(F,{contains:[]});H.contains.push(C),F.contains.push(Y);let L=[Q,K];return[H,F,Y,C].forEach((T)=>{T.contains=T.contains.concat(L)}),L=L.concat(H,F),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:L},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:L}]}]},Q,q,H,F,{className:"quote",begin:"^>\\s+",contains:L,end:"$"},X,$,K,W,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}_5.exports=jQ});var N5=_0((Xq,M5)=>{function DQ(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:/$/}]}}M5.exports=DQ});var k5=_0((qq,v5)=>{function hQ(Z){let J=Z.regex,Q="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",$=J.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),X=J.concat($,/(::\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"]},G={className:"doctag",begin:"@[A-Za-z]+"},K={begin:"#<",end:">"},H=[Z.COMMENT("#","$",{contains:[G]}),Z.COMMENT("^=begin","^=end",{contains:[G],relevance:10}),Z.COMMENT("^__END__",Z.MATCH_NOTHING_RE)],F={className:"subst",begin:/#\{/,end:/\}/,keywords:W},Y={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]})]}]},C="[1-9](_?[0-9])*|0",L="[0-9](_?[0-9])*",B={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"}]},M={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:W}]},y=[Y,{variants:[{match:[/class\s+/,X,/\s+<\s+/,X]},{match:[/\b(class|module)\s+/,X]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:W},{match:[/(include|extend)\s+/,X],scope:{2:"title.class"},keywords:W},{relevance:0,match:[X,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:$,scope:"title.class"},{match:[/def/,/\s+/,"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"],scope:{1:"keyword",3:"title.function"},contains:[M]},{begin:Z.IDENT_RE+"::"},{className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[Y,{begin:"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"}],relevance:0},B,{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(K,H),relevance:0}].concat(K,H);F.contains=y,M.contains=y;let x="[>?]>",v="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",E="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",J0=[{begin:/^\s*=>/,starts:{end:"$",contains:y}},{className:"meta.prompt",begin:"^("+x+"|"+v+"|"+E+")(?=[ ])",starts:{end:"$",keywords:W,contains:y}}];return H.unshift(K),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:W,illegal:/\/\*/,contains:[Z.SHEBANG({binary:"ruby"})].concat(J0).concat(H).concat(y)}}v5.exports=hQ});var T5=_0((Wq,R5)=>{function mQ(Z){let q={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:q,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:q,illegal:/["']/}]}]}}R5.exports=mQ});var S5=_0((Gq,V5)=>{function uQ(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/]}}V5.exports=uQ});var f5=_0((Hq,I5)=>{function EQ(Z){let J=Z.regex,Q={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:Z.NUMBER_RE}]},$=Z.COMMENT();$.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let X={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},q={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:"'"}]},G={begin:/\[/,end:/\]/,contains:[$,q,X,W,Q,"self"],relevance:0},K=/[A-Za-z0-9_-]+/,H=/"(\\"|[^"])*"/,F=/'[^']*'/,Y=J.either(K,H,F),C=J.concat(Y,"(\\s*\\.\\s*",Y,")*",J.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[$,{className:"section",begin:/\[+/,end:/\]+/},{begin:C,className:"attr",starts:{end:/$/,contains:[$,G,q,X,W,Q]}}]}}I5.exports=EQ});var j5=_0((Kq,x5)=>{var d9="[0-9](_*[0-9])*",cZ=`\\.(${d9})`,iZ="[0-9a-fA-F](_*[0-9a-fA-F])*",b5={className:"number",variants:[{begin:`(\\b(${d9})((${cZ})|\\.)?|(${cZ}))[eE][+-]?(${d9})[fFdD]?\\b`},{begin:`\\b(${d9})((${cZ})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${cZ})[fFdD]?\\b`},{begin:`\\b(${d9})[fFdD]\\b`},{begin:`\\b0[xX]((${iZ})\\.?|(${iZ})?\\.(${iZ}))[pP][+-]?(${d9})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${iZ})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function g5(Z,J,Q){if(Q===-1)return"";return Z.replace(J,($)=>{return g5(Z,J,Q-1)})}function pQ(Z){let J=Z.regex,Q="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",$="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+g5("(?:<"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~(?:\\s*,\\s*"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~)*>)?",/~~~/g,2),K={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:K,relevance:0,contains:[Z.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:K,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:["(?:"+$+"\\s+)",Z.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:K,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:K,relevance:0,contains:[H,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,b5,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},b5,H]}}x5.exports=pQ});var E5=_0((Fq,u5)=>{var cQ=["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"],iQ=["true","false","null","undefined","NaN","Infinity"],D5=["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"],h5=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],m5=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],dQ=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],aQ=[].concat(m5,D5,h5);function lQ(Z){let J=Z.regex,Q=(g,{after:j})=>{let e="</"+g[0].slice(1);return g.input.indexOf(e,j)!==-1},$="[A-Za-z$_][0-9A-Za-z$_]*",X={begin:"<>",end:"</>"},q=/<[A-Za-z0-9\\._:-]+\s*\/>/,W={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(g,j)=>{let e=g[0].length+g.index,X0=g.input[e];if(X0==="<"||X0===","){j.ignoreMatch();return}if(X0===">"){if(!Q(g,{after:e}))j.ignoreMatch()}let W0,P0=g.input.substring(e);if(W0=P0.match(/^\s*=/)){j.ignoreMatch();return}if(W0=P0.match(/^\s+extends\s+/)){if(W0.index===0){j.ignoreMatch();return}}}},G={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:cQ,literal:iQ,built_in:aQ,"variable.language":dQ},K="[0-9](_?[0-9])*",H="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",Y={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},C={className:"subst",begin:"\\$\\{",end:"\\}",keywords:G,contains:[]},L={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,C],subLanguage:"xml"}},B={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,C],subLanguage:"css"}},M={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,C],subLanguage:"graphql"}},k={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,C]},O={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]},P=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,L,B,M,k,{match:/\$\d+/},Y];C.contains=P.concat({begin:/\{/,end:/\}/,keywords:G,contains:["self"].concat(P)});let _=[].concat(O,C.contains),A=_.concat([{begin:/(\s*)\(/,end:/\)/,keywords:G,contains:["self"].concat(_)}]),y={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:G,contains:A},x={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"}}]},v={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:{_:[...D5,...h5]}},E={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},J0={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:[y],illegal:/%/},l={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function A0(g){return J.concat("(?!",g.join("|"),")")}let o={match:J.concat(/\b/,A0([...m5,"super","import"].map((g)=>`${g}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},B0={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},K0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},y]},I="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",V={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(I)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[y]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:G,exports:{PARAMS_CONTAINS:A,CLASS_REFERENCE:v},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),E,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,L,B,M,k,O,{match:/\$\d+/},Y,v,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},V,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[O,Z.REGEXP_MODE,{className:"function",begin:I,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:G,contains:A}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:X.begin,end:X.end},{match:q},{begin:W.begin,"on:begin":W.isTrulyOpeningTag,end:W.end}],subLanguage:"xml",contains:[{begin:W.begin,end:W.end,skip:!0,contains:["self"]}]}]},J0,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[y,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},B0,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[y]},o,l,x,K0,{match:/\$[(.]/}]}}u5.exports=lQ});var c5=_0((Yq,p5)=>{function nQ(Z){let J={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},Q={match:/[{}[\],:]/,className:"punctuation",relevance:0},$=["true","false","null"],X={scope:"literal",beginKeywords:$.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:$},contains:[J,Q,Z.QUOTE_STRING_MODE,X,Z.C_NUMBER_MODE,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}p5.exports=nQ});var d5=_0((Uq,i5)=>{var a9="[0-9](_*[0-9])*",dZ=`\\.(${a9})`,aZ="[0-9a-fA-F](_*[0-9a-fA-F])*",rQ={className:"number",variants:[{begin:`(\\b(${a9})((${dZ})|\\.)?|(${dZ}))[eE][+-]?(${a9})[fFdD]?\\b`},{begin:`\\b(${a9})((${dZ})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${dZ})[fFdD]?\\b`},{begin:`\\b(${a9})[fFdD]\\b`},{begin:`\\b0[xX]((${aZ})\\.?|(${aZ})?\\.(${aZ}))[pP][+-]?(${a9})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${aZ})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function oQ(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+/}]}},$={className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"@"},X={className:"subst",begin:/\$\{/,end:/\}/,contains:[Z.C_NUMBER_MODE]},q={className:"variable",begin:"\\$"+Z.UNDERSCORE_IDENT_RE},W={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[q,X]},{begin:"'",end:"'",illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE,q,X]}]};X.contains.push(W);let G={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+Z.UNDERSCORE_IDENT_RE+")?"},K={className:"meta",begin:"@"+Z.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[Z.inherit(W,{className:"string"}),"self"]}]},H=rQ,F=Z.COMMENT("/\\*","\\*/",{contains:[Z.C_BLOCK_COMMENT_MODE]}),Y={variants:[{className:"type",begin:Z.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},C=Y;return C.variants[1].contains=[Y],Y.variants[1].contains=[C],{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,$,G,K,{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:[Y,Z.C_LINE_COMMENT_MODE,F],relevance:0},Z.C_LINE_COMMENT_MODE,F,G,K,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},G,K]},W,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4
|
-
`},H]}}i5.exports=oQ});var r5=_0((Bq,n5)=>{var tQ=(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_-]*/}}},sQ=["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"],eQ=["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"],Zz=[...sQ,...eQ],Jz=["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(),a5=["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(),l5=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Qz=["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(),zz=a5.concat(l5).sort().reverse();function $z(Z){let J=tQ(Z),Q=zz,$="and or not only",X="[\\w-]+",q="([\\w-]+|@\\{[\\w-]+\\})",W=[],G=[],K=function(P){return{className:"string",begin:"~?"+P+".*?"+P}},H=function(P,_,A){return{className:P,begin:_,relevance:A}},F={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Jz.join(" ")},Y={begin:"\\(",end:"\\)",contains:G,keywords:F,relevance:0};G.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,K("'"),K('"'),J.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},J.HEXCOLOR,Y,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 C=G.concat({begin:/\{/,end:/\}/,contains:W}),L={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(G)},B={begin:q+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Qz.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:G}}]},M={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:G,relevance:0}},k={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:C}},T={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:q,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,L,H("keyword","all\\b"),H("variable","@\\{[\\w-]+\\}"),{begin:"\\b("+Zz.join("|")+")\\b",className:"selector-tag"},J.CSS_NUMBER_MODE,H("selector-tag",q,0),H("selector-id","#"+q),H("selector-class","\\."+q,0),H("selector-tag","&",0),J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+a5.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+l5.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:C},{begin:"!important"},J.FUNCTION_DISPATCH]},O={begin:`[\\w-]+:(:)?(${Q.join("|")})`,returnBegin:!0,contains:[T]};return W.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,M,k,O,B,T,L,J.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:W}}n5.exports=$z});var t5=_0((Lq,o5)=>{function Xz(Z){let $={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},X=[Z.COMMENT("--(?!\\[=*\\[)","$"),Z.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[$],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:X.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:X}].concat(X)},Z.C_NUMBER_MODE,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[$],relevance:5}])}}o5.exports=Xz});var e5=_0((yq,s5)=>{function qz(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]},$={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]},X={begin:"^"+Z.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},q={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,q,W]}}s5.exports=qz});var J6=_0((Pq,Z6)=>{function Wz(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"],$=/[dualxmsipngr]{0,12}/,X={$pattern:/[\w.]+/,keyword:Q.join(" ")},q={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:X},W={begin:/->\{/,end:/\}/},G={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},K={scope:"variable",variants:[{begin:/\$\d/},{begin:J.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[G]},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,q,K],Y=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],C=(M,k,T="\\1")=>{let O=T==="\\1"?T:J.concat(T,k);return J.concat(J.concat("(?:",M,")"),k,/(?:\\.|[^\\\/])*?/,O,/(?:\\.|[^\\\/])*?/,T,$)},L=(M,k,T)=>{return J.concat(J.concat("(?:",M,")"),k,/(?:\\.|[^\\\/])*?/,T,$)},B=[K,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:C("s|tr|y",J.either(...Y,{capture:!0}))},{begin:C("s|tr|y","\\(","\\)")},{begin:C("s|tr|y","\\[","\\]")},{begin:C("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:L("(?:m|qr)?",/\//,/\//)},{begin:L("m|qr",J.either(...Y,{capture:!0}),/\1/)},{begin:L("m|qr",/\(/,/\)/)},{begin:L("m|qr",/\[/,/\]/)},{begin:L("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,G]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,G,H]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return q.contains=B,W.contains=B,{name:"Perl",aliases:["pl","pm"],keywords:X,contains:B}}Z6.exports=Wz});var z6=_0((wq,Q6)=>{function Gz(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_]*/,G={"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"]},K={$pattern:Q,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:G,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:"("+K.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:K,contains:[Z.UNDERSCORE_TITLE_MODE]},{begin:"\\."+Z.UNDERSCORE_IDENT_RE,relevance:0}]}}Q6.exports=Gz});var X6=_0((Cq,$6)=>{function Hz(Z){let J=Z.regex,Q=/(?![A-Za-z0-9])(?![$])/,$=J.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,Q),X=J.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,Q),q=J.concat(/[A-Z]+/,Q),W={scope:"variable",match:"\\$+"+$},G={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:0.1},{begin:/\?>/}]},K={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(K)}),Y={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:Z.QUOTE_STRING_MODE.contains.concat(K),"on:begin":(B0,K0)=>{K0.data._beginMatch=B0[1]||B0[2]},"on:end":(B0,K0)=>{if(K0.data._beginMatch!==B0[1])K0.ignoreMatch()}},C=Z.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),L=`[
|
|
5
|
-
]`,
|
|
6
|
-
]`,"+"),J.concat("(?!",
|
|
7
|
-
]`,"*"),J.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[J0]};J0.contains.push(l);let A0=[E,v,Z.C_BLOCK_COMMENT_MODE,B,M,y],o={begin:J.concat(/#\[\s*\\?/,J.either(X,q)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:k,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:k,keyword:["new","array"]},contains:["self",...A0]},...A0,{scope:"meta",variants:[{match:X},{match:q}]}]};return{case_insensitive:!1,keywords:_,contains:[o,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}]}},G,{scope:"variable.language",match:/\$this\b/},W,l,v,{match:[/const/,/\s/,$],scope:{1:"keyword",3:"variable.constant"}},y,{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:_,contains:["self",o,W,v,Z.C_BLOCK_COMMENT_MODE,B,M]}]},{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]},B,M]}}$6.exports=Hz});var W6=_0((Oq,q6)=>{function Kz(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})]}]}}q6.exports=Kz});var H6=_0((_q,G6)=>{function Fz(Z){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}G6.exports=Fz});var F6=_0((Aq,K6)=>{function Yz(Z){let J=Z.regex,Q=/[\p{XID_Start}_]\p{XID_Continue}*/u,$=["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"],G={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:$,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"]},K={className:"meta",begin:/^(>>>|\.\.\.) /},H={className:"subst",begin:/\{/,end:/\}/,keywords:G,illegal:/#/},F={begin:/\{\{/,relevance:0},Y={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,K],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,K],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,K,F,H]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,K,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]},C="[0-9](_?[0-9])*",L="(\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.",B=`\\b|${$.join("|")}`,M={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]?(?=${B})`},{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]?(?=${B})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${B})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${B})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${B})`},{begin:`\\b([0-9](_?[0-9])*)[jJ](?=${B})`}]},k={className:"comment",begin:J.lookahead(/# type:/),end:/$/,keywords:G,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},T={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:G,contains:["self",K,M,Y,Z.HASH_COMMENT_MODE]}]};return H.contains=[Y,M,K],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:G,illegal:/(<\/|\?)|=>/,contains:[K,M,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},Y,k,Z.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,Q],scope:{1:"keyword",3:"title.function"},contains:[T]},{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:[M,T,Y]}]}}K6.exports=Yz});var U6=_0((Mq,Y6)=>{function Uz(Z){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}Y6.exports=Uz});var L6=_0((Nq,B6)=>{function Bz(Z){let J=Z.regex,Q=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,$=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]?/),X=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,q=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:[X,$]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,$]},{scope:{1:"punctuation",2:"number"},match:[q,$]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,$]}]},{scope:{3:"operator"},match:[Q,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:X},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:q},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}B6.exports=Bz});var P6=_0((vq,y6)=>{function Lz(Z){let J=Z.regex,Q=/(r#)?/,$=J.concat(Q,Z.UNDERSCORE_IDENT_RE),X=J.concat(Q,Z.IDENT_RE),q={className:"title.function.invoke",relevance:0,begin:J.concat(/\b/,/(?!let|for|while|if|else|match\b)/,X,J.lookahead(/\s*\(/))},W="([ui](8|16|32|64|128|size)|f(32|64))?",G=["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"],K=["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:G,literal:K,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+/,$],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,$],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,$,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,$],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,$],className:{1:"keyword",3:"title.class"}},{begin:Z.IDENT_RE+"::",keywords:{keyword:"Self",built_in:H,type:F}},{className:"punctuation",begin:"->"},q]}}y6.exports=Lz});var C6=_0((kq,w6)=>{var yz=(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_-]*/}}},Pz=["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"],wz=["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"],Cz=[...Pz,...wz],Oz=["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(),_z=["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(),Az=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Mz=["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 Nz(Z){let J=yz(Z),Q=Az,$=_z,X="@[a-z-]+",q="and or not only",W="[a-zA-Z-][a-zA-Z0-9_-]*",G={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("+Cz.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+$.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+Q.join("|")+")"},G,{begin:/\(/,end:/\)/,contains:[J.CSS_NUMBER_MODE]},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Mz.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,G,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:Oz.join(" ")},contains:[{begin:"@[a-z-]+",className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},G,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.HEXCOLOR,J.CSS_NUMBER_MODE]},J.FUNCTION_DISPATCH]}}w6.exports=Nz});var _6=_0((Rq,O6)=>{function vz(Z){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}O6.exports=vz});var M6=_0((Tq,A6)=>{function kz(Z){let J=Z.regex,Q=Z.COMMENT("--","$"),$={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},X={begin:/"/,end:/"/,contains:[{match:/""/}]},q=["true","false","unknown"],W=["double precision","large object","with timezone","without timezone"],G=["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"],K=["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"],Y=["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"],C=["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"],L=F,B=[...H,...K].filter((A)=>{return!F.includes(A)}),M={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},k={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},T={match:J.concat(/\b/,J.either(...L),/\s*\(/),relevance:0,keywords:{built_in:L}};function O(A){return J.concat(/\b/,J.either(...A.map((y)=>{return y.replace(/\s+/,"\\s+")})),/\b/)}let P={scope:"keyword",match:O(C),relevance:0};function _(A,{exceptions:y,when:x}={}){let v=x;return y=y||[],A.map((E)=>{if(E.match(/\|\d+$/)||y.includes(E))return E;else if(v(E))return`${E}|0`;else return E})}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:_(B,{when:(A)=>A.length<3}),literal:q,type:G,built_in:Y},contains:[{scope:"type",match:O(W)},P,T,M,$,X,Z.C_NUMBER_MODE,Z.C_BLOCK_COMMENT_MODE,Q,k]}}A6.exports=kz});var f6=_0((Vq,I6)=>{function R6(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function WZ(Z){return I0("(?=",Z,")")}function I0(...Z){return Z.map((Q)=>R6(Q)).join("")}function Rz(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 a0(...Z){return"("+(Rz(Z).capture?"":"?:")+Z.map(($)=>R6($)).join("|")+")"}var r1=(Z)=>I0(/\b/,Z,/\w$/.test(Z)?/\b/:/\B/),Tz=["Protocol","Type"].map(r1),N6=["init","self"].map(r1),Vz=["Any","Self"],l1=["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"],v6=["false","nil","true"],Sz=["assignment","associativity","higherThan","left","lowerThan","none","right"],Iz=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],k6=["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"],T6=a0(/[/=\-+!*%<>&|^~?]/,/[\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]/),V6=a0(T6,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),n1=I0(T6,V6,"*"),S6=a0(/[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]/),nZ=a0(S6,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),W9=I0(S6,nZ,"*"),lZ=I0(/[A-Z]/,nZ,"*"),fz=["attached","autoclosure",I0(/convention\(/,a0("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"],bz=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function gz(Z){let J={match:/\s+/,relevance:0},Q=Z.COMMENT("/\\*","\\*/",{contains:["self"]}),$=[Z.C_LINE_COMMENT_MODE,Q],X={match:[/\./,a0(...Tz,...N6)],className:{2:"keyword"}},q={match:I0(/\./,a0(...l1)),relevance:0},W=l1.filter((D)=>typeof D==="string").concat(["_|0"]),G=l1.filter((D)=>typeof D!=="string").concat(Vz).map(r1),K={variants:[{className:"keyword",match:a0(...G,...N6)}]},H={$pattern:a0(/\b\w+/,/#\w+/),keyword:W.concat(Iz),literal:v6},F=[X,q,K],Y={match:I0(/\./,a0(...k6)),relevance:0},C={className:"built_in",match:I0(/\b/,a0(...k6),/(?=\()/)},L=[Y,C],B={match:/->/,relevance:0},M={className:"operator",relevance:0,variants:[{match:n1},{match:`\\.(\\.|${V6})+`}]},k=[B,M],T="([0-9]_*)+",O="([0-9a-fA-F]_*)+",P={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/}]},_=(D="")=>({className:"subst",variants:[{match:I0(/\\/,D,/[0\\tnr"']/)},{match:I0(/\\/,D,/u\{[0-9a-fA-F]{1,8}\}/)}]}),A=(D="")=>({className:"subst",match:I0(/\\/,D,/[\t ]*(?:[\r\n]|\r\n)/)}),y=(D="")=>({className:"subst",label:"interpol",begin:I0(/\\/,D,/\(/),end:/\)/}),x=(D="")=>({begin:I0(D,/"""/),end:I0(/"""/,D),contains:[_(D),A(D),y(D)]}),v=(D="")=>({begin:I0(D,/"/),end:I0(/"/,D),contains:[_(D),y(D)]}),E={className:"string",variants:[x(),x("#"),x("##"),x("###"),v(),v("#"),v("##"),v("###")]},J0=[Z.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[Z.BACKSLASH_ESCAPE]}],l={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:J0},A0=(D)=>{let L0=I0(D,/\//),d=I0(/\//,D);return{begin:L0,end:d,contains:[...J0,{scope:"comment",begin:`#(?!.*${d})`,end:/$/}]}},o={scope:"regexp",variants:[A0("###"),A0("##"),A0("#"),l]},B0={match:I0(/`/,W9,/`/)},K0={className:"variable",match:/\$\d+/},I={className:"variable",match:`\\$${nZ}+`},V=[B0,K0,I],g={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:bz,contains:[...k,P,E]}]}},j={scope:"keyword",match:I0(/@/,a0(...fz),WZ(a0(/\(/,/\s+/)))},e={scope:"meta",match:I0(/@/,W9)},X0=[g,j,e],W0={match:WZ(/\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)/,nZ,"+")},{className:"type",match:lZ,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:I0(/\s+&\s+/,WZ(lZ)),relevance:0}]},P0={begin:/</,end:/>/,keywords:H,contains:[...$,...F,...X0,B,W0]};W0.contains.push(P0);let k0={match:I0(W9,/\s*:/),keywords:"_|0",relevance:0},p={begin:/\(/,end:/\)/,relevance:0,keywords:H,contains:["self",k0,...$,o,...F,...L,...k,P,E,...V,...X0,W0]},s={begin:/</,end:/>/,keywords:"repeat each",contains:[...$,W0]},Y0={begin:a0(WZ(I0(W9,/\s*:/)),WZ(I0(W9,/\s+/,W9,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:W9}]},U0={begin:/\(/,end:/\)/,keywords:H,contains:[Y0,...$,...F,...k,P,E,...X0,W0,p],endsParent:!0,illegal:/["']/},h0={match:[/(func|macro)/,/\s+/,a0(B0.match,W9,n1)],className:{1:"keyword",3:"title.function"},contains:[s,U0,J],illegal:[/\[/,/%/]},z0={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[s,U0,J],illegal:/\[|%/},N={match:[/operator/,/\s+/,n1],className:{1:"keyword",3:"title"}},S={begin:[/precedencegroup/,/\s+/,lZ],className:{1:"keyword",3:"title"},contains:[W0],keywords:[...Sz,...v6],end:/}/},c={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},h={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},q0={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,W9,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:H,contains:[s,...F,{begin:/:/,end:/\{/,keywords:H,contains:[{scope:"title.class.inherited",match:lZ},...F],relevance:0}]};for(let D of E.variants){let L0=D.contains.find((S0)=>S0.label==="interpol");L0.keywords=H;let d=[...F,...L,...k,P,E,...V];L0.contains=[...d,{begin:/\(/,end:/\)/,contains:["self",...d]}]}return{name:"Swift",keywords:H,contains:[...$,h0,z0,c,h,q0,N,S,{beginKeywords:"import",end:/$/,contains:[...$],relevance:0},o,...F,...L,...k,P,E,...V,...X0,W0,p]}}I6.exports=gz});var g6=_0((Sq,b6)=>{function xz(Z){let $={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},X={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},q={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,X]},G=Z.inherit(W,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),K="[0-9]{4}(-[0-9][0-9]){0,2}",H="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",F="(\\.[0-9]*)?",Y="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",C={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"},L={end:",",endsWithParent:!0,excludeEnd:!0,keywords:"true false yes no null",relevance:0},B={begin:/\{/,end:/\}/,contains:[L],illegal:"\\n",relevance:0},M={begin:"\\[",end:"\\]",contains:[L],illegal:"\\n",relevance:0},k=[$,{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"}},C,{className:"number",begin:Z.C_NUMBER_RE+"\\b",relevance:0},B,M,q,W],T=[...k];return T.pop(),T.push(G),L.contains=T,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:k}}b6.exports=xz});var c6=_0((Iq,p6)=>{var x6=["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"],j6=["true","false","null","undefined","NaN","Infinity"],D6=["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"],h6=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],m6=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],u6=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],E6=[].concat(m6,D6,h6);function jz(Z){let J=Z.regex,Q=(g,{after:j})=>{let e="</"+g[0].slice(1);return g.input.indexOf(e,j)!==-1},$="[A-Za-z$_][0-9A-Za-z$_]*",X={begin:"<>",end:"</>"},q=/<[A-Za-z0-9\\._:-]+\s*\/>/,W={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(g,j)=>{let e=g[0].length+g.index,X0=g.input[e];if(X0==="<"||X0===","){j.ignoreMatch();return}if(X0===">"){if(!Q(g,{after:e}))j.ignoreMatch()}let W0,P0=g.input.substring(e);if(W0=P0.match(/^\s*=/)){j.ignoreMatch();return}if(W0=P0.match(/^\s+extends\s+/)){if(W0.index===0){j.ignoreMatch();return}}}},G={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:x6,literal:j6,built_in:E6,"variable.language":u6},K="[0-9](_?[0-9])*",H="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",Y={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},C={className:"subst",begin:"\\$\\{",end:"\\}",keywords:G,contains:[]},L={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,C],subLanguage:"xml"}},B={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,C],subLanguage:"css"}},M={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,C],subLanguage:"graphql"}},k={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,C]},O={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]},P=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,L,B,M,k,{match:/\$\d+/},Y];C.contains=P.concat({begin:/\{/,end:/\}/,keywords:G,contains:["self"].concat(P)});let _=[].concat(O,C.contains),A=_.concat([{begin:/(\s*)\(/,end:/\)/,keywords:G,contains:["self"].concat(_)}]),y={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:G,contains:A},x={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"}}]},v={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:{_:[...D6,...h6]}},E={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},J0={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:[y],illegal:/%/},l={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function A0(g){return J.concat("(?!",g.join("|"),")")}let o={match:J.concat(/\b/,A0([...m6,"super","import"].map((g)=>`${g}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},B0={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},K0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},y]},I="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",V={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(I)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[y]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:G,exports:{PARAMS_CONTAINS:A,CLASS_REFERENCE:v},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),E,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,L,B,M,k,O,{match:/\$\d+/},Y,v,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},V,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[O,Z.REGEXP_MODE,{className:"function",begin:I,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:G,contains:A}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:X.begin,end:X.end},{match:q},{begin:W.begin,"on:begin":W.isTrulyOpeningTag,end:W.end}],subLanguage:"xml",contains:[{begin:W.begin,end:W.end,skip:!0,contains:["self"]}]}]},J0,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[y,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},B0,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[y]},o,l,x,K0,{match:/\$[(.]/}]}}function Dz(Z){let J=Z.regex,Q=jz(Z),$="[A-Za-z$_][0-9A-Za-z$_]*",X=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],q={begin:[/namespace/,/\s+/,Z.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},W={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:X},contains:[Q.exports.CLASS_REFERENCE]},G={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},K=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],H={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:x6.concat(K),literal:j6,built_in:E6.concat(X),"variable.language":u6},F={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},Y=(M,k,T)=>{let O=M.contains.findIndex((P)=>P.label===k);if(O===-1)throw Error("can not find mode to replace");M.contains.splice(O,1,T)};Object.assign(Q.keywords,H),Q.exports.PARAMS_CONTAINS.push(F);let C=Q.contains.find((M)=>M.scope==="attr"),L=Object.assign({},C,{match:J.concat("[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\?:/))});Q.exports.PARAMS_CONTAINS.push([Q.exports.CLASS_REFERENCE,C,L]),Q.contains=Q.contains.concat([F,q,W,L]),Y(Q,"shebang",Z.SHEBANG()),Y(Q,"use_strict",G);let B=Q.contains.find((M)=>M.label==="func.def");return B.relevance=0,Object.assign(Q,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),Q}p6.exports=Dz});var d6=_0((fq,i6)=>{function hz(Z){let J=Z.regex,Q={className:"string",begin:/"(""|[^/n])"C\b/},$={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},X=/\d{1,2}\/\d{1,2}\/\d{4}/,q=/\d{4}-\d{1,2}-\d{1,2}/,W=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,G=/\d{1,2}(:\d{1,2}){1,2}/,K={className:"literal",variants:[{begin:J.concat(/# */,J.either(q,X),/ *#/)},{begin:J.concat(/# */,G,/ *#/)},{begin:J.concat(/# */,W,/ *#/)},{begin:J.concat(/# */,J.either(q,X),/ +/,J.either(W,G),/ *#/)}]},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+:/},Y=Z.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),C=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,$,K,H,F,Y,C,{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:[C]}]}}i6.exports=hz});var l6=_0((bq,a6)=>{function mz(Z){Z.regex;let J=Z.COMMENT(/\(;/,/;\)/);J.contains.push("self");let Q=Z.COMMENT(/;;/,/$/),$=["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"],X={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},q={className:"variable",begin:/\$[\w_]+/},W={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},G={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/},K={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:$},contains:[Q,J,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},q,W,X,Z.QUOTE_STRING_MODE,K,H,G]}}a6.exports=mz});var r6=_0((gq,n6)=>{var w0=G5();w0.registerLanguage("xml",K5());w0.registerLanguage("bash",Y5());w0.registerLanguage("c",B5());w0.registerLanguage("cpp",y5());w0.registerLanguage("csharp",w5());w0.registerLanguage("css",O5());w0.registerLanguage("markdown",A5());w0.registerLanguage("diff",N5());w0.registerLanguage("ruby",k5());w0.registerLanguage("go",T5());w0.registerLanguage("graphql",S5());w0.registerLanguage("ini",f5());w0.registerLanguage("java",j5());w0.registerLanguage("javascript",E5());w0.registerLanguage("json",c5());w0.registerLanguage("kotlin",d5());w0.registerLanguage("less",r5());w0.registerLanguage("lua",t5());w0.registerLanguage("makefile",e5());w0.registerLanguage("perl",J6());w0.registerLanguage("objectivec",z6());w0.registerLanguage("php",X6());w0.registerLanguage("php-template",W6());w0.registerLanguage("plaintext",H6());w0.registerLanguage("python",F6());w0.registerLanguage("python-repl",U6());w0.registerLanguage("r",L6());w0.registerLanguage("rust",P6());w0.registerLanguage("scss",C6());w0.registerLanguage("shell",_6());w0.registerLanguage("sql",M6());w0.registerLanguage("swift",f6());w0.registerLanguage("yaml",g6());w0.registerLanguage("typescript",c6());w0.registerLanguage("vbnet",d6());w0.registerLanguage("wasm",l6());w0.HighlightJS=w0;w0.default=w0;n6.exports=w0});var kZ,V0,E8,kJ,K9,D8,p8,c8,H1,OZ,t9,i8,U1,K1,F1,RJ,MZ={},NZ=[],TJ=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,RZ=Array.isArray;function G9(Z,J){for(var Q in J)Z[Q]=J[Q];return Z}function B1(Z){Z&&Z.parentNode&&Z.parentNode.removeChild(Z)}function VJ(Z,J,Q){var $,X,q,W={};for(q in J)q=="key"?$=J[q]:q=="ref"?X=J[q]:W[q]=J[q];if(arguments.length>2&&(W.children=arguments.length>3?kZ.call(arguments,2):Q),typeof Z=="function"&&Z.defaultProps!=null)for(q in Z.defaultProps)W[q]===void 0&&(W[q]=Z.defaultProps[q]);return _Z(Z,W,$,X,null)}function _Z(Z,J,Q,$,X){var q={type:Z,props:J,key:Q,ref:$,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:X==null?++E8:X,__i:-1,__u:0};return X==null&&V0.vnode!=null&&V0.vnode(q),q}function n(Z){return Z.children}function AZ(Z,J){this.props=Z,this.context=J}function g9(Z,J){if(J==null)return Z.__?g9(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"?g9(Z):null}function SJ(Z){if(Z.__P&&Z.__d){var J=Z.__v,Q=J.__e,$=[],X=[],q=G9({},J);q.__v=J.__v+1,V0.vnode&&V0.vnode(q),L1(Z.__P,q,J,Z.__n,Z.__P.namespaceURI,32&J.__u?[Q]:null,$,Q==null?g9(J):Q,!!(32&J.__u),X),q.__v=J.__v,q.__.__k[q.__i]=q,n8($,q,X),J.__e=J.__=null,q.__e!=Q&&d8(q)}}function d8(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}),d8(Z)}function h8(Z){(!Z.__d&&(Z.__d=!0)&&K9.push(Z)&&!vZ.__r++||D8!=V0.debounceRendering)&&((D8=V0.debounceRendering)||p8)(vZ)}function vZ(){try{for(var Z,J=1;K9.length;)K9.length>J&&K9.sort(c8),Z=K9.shift(),J=K9.length,SJ(Z)}finally{K9.length=vZ.__r=0}}function a8(Z,J,Q,$,X,q,W,G,K,H,F){var Y,C,L,B,M,k,T,O=$&&$.__k||NZ,P=J.length;for(K=IJ(Q,J,O,K,P),Y=0;Y<P;Y++)(L=Q.__k[Y])!=null&&(C=L.__i!=-1&&O[L.__i]||MZ,L.__i=Y,k=L1(Z,L,C,X,q,W,G,K,H,F),B=L.__e,L.ref&&C.ref!=L.ref&&(C.ref&&y1(C.ref,null,L),F.push(L.ref,L.__c||B,L)),M==null&&B!=null&&(M=B),(T=!!(4&L.__u))||C.__k===L.__k?(K=l8(L,K,Z,T),T&&C.__e&&(C.__e=null)):typeof L.type=="function"&&k!==void 0?K=k:B&&(K=B.nextSibling),L.__u&=-7);return Q.__e=M,K}function IJ(Z,J,Q,$,X){var q,W,G,K,H,F=Q.length,Y=F,C=0;for(Z.__k=Array(X),q=0;q<X;q++)(W=J[q])!=null&&typeof W!="boolean"&&typeof W!="function"?(typeof W=="string"||typeof W=="number"||typeof W=="bigint"||W.constructor==String?W=Z.__k[q]=_Z(null,W,null,null,null):RZ(W)?W=Z.__k[q]=_Z(n,{children:W},null,null,null):W.constructor===void 0&&W.__b>0?W=Z.__k[q]=_Z(W.type,W.props,W.key,W.ref?W.ref:null,W.__v):Z.__k[q]=W,K=q+C,W.__=Z,W.__b=Z.__b+1,G=null,(H=W.__i=fJ(W,Q,K,Y))!=-1&&(Y--,(G=Q[H])&&(G.__u|=2)),G==null||G.__v==null?(H==-1&&(X>F?C--:X<F&&C++),typeof W.type!="function"&&(W.__u|=4)):H!=K&&(H==K-1?C--:H==K+1?C++:(H>K?C--:C++,W.__u|=4))):Z.__k[q]=null;if(Y)for(q=0;q<F;q++)(G=Q[q])!=null&&(2&G.__u)==0&&(G.__e==$&&($=g9(G)),o8(G,G));return $}function l8(Z,J,Q,$){var X,q;if(typeof Z.type=="function"){for(X=Z.__k,q=0;X&&q<X.length;q++)X[q]&&(X[q].__=Z,J=l8(X[q],J,Q,$));return J}Z.__e!=J&&($&&(J&&Z.type&&!J.parentNode&&(J=g9(Z)),Q.insertBefore(Z.__e,J||null)),J=Z.__e);do J=J&&J.nextSibling;while(J!=null&&J.nodeType==8);return J}function fJ(Z,J,Q,$){var X,q,W,G=Z.key,K=Z.type,H=J[Q],F=H!=null&&(2&H.__u)==0;if(H===null&&G==null||F&&G==H.key&&K==H.type)return Q;if($>(F?1:0)){for(X=Q-1,q=Q+1;X>=0||q<J.length;)if((H=J[W=X>=0?X--:q++])!=null&&(2&H.__u)==0&&G==H.key&&K==H.type)return W}return-1}function m8(Z,J,Q){J[0]=="-"?Z.setProperty(J,Q==null?"":Q):Z[J]=Q==null?"":typeof Q!="number"||TJ.test(J)?Q:Q+"px"}function CZ(Z,J,Q,$,X){var q,W;Z:if(J=="style")if(typeof Q=="string")Z.style.cssText=Q;else{if(typeof $=="string"&&(Z.style.cssText=$=""),$)for(J in $)Q&&J in Q||m8(Z.style,J,"");if(Q)for(J in Q)$&&Q[J]==$[J]||m8(Z.style,J,Q[J])}else if(J[0]=="o"&&J[1]=="n")q=J!=(J=J.replace(i8,"$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+q]=Q,Q?$?Q[t9]=$[t9]:(Q[t9]=U1,Z.addEventListener(J,q?F1:K1,q)):Z.removeEventListener(J,q?F1:K1,q);else{if(X=="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(G){}typeof Q=="function"||(Q==null||Q===!1&&J[4]!="-"?Z.removeAttribute(J):Z.setAttribute(J,J=="popover"&&Q==1?"":Q))}}function u8(Z){return function(J){if(this.l){var Q=this.l[J.type+Z];if(J[OZ]==null)J[OZ]=U1++;else if(J[OZ]<Q[t9])return;return Q(V0.event?V0.event(J):J)}}}function L1(Z,J,Q,$,X,q,W,G,K,H){var F,Y,C,L,B,M,k,T,O,P,_,A,y,x,v,E=J.type;if(J.constructor!==void 0)return null;128&Q.__u&&(K=!!(32&Q.__u),q=[G=J.__e=Q.__e]),(F=V0.__b)&&F(J);Z:if(typeof E=="function")try{if(T=J.props,O=E.prototype&&E.prototype.render,P=(F=E.contextType)&&$[F.__c],_=F?P?P.props.value:F.__:$,Q.__c?k=(Y=J.__c=Q.__c).__=Y.__E:(O?J.__c=Y=new E(T,_):(J.__c=Y=new AZ(T,_),Y.constructor=E,Y.render=gJ),P&&P.sub(Y),Y.state||(Y.state={}),Y.__n=$,C=Y.__d=!0,Y.__h=[],Y._sb=[]),O&&Y.__s==null&&(Y.__s=Y.state),O&&E.getDerivedStateFromProps!=null&&(Y.__s==Y.state&&(Y.__s=G9({},Y.__s)),G9(Y.__s,E.getDerivedStateFromProps(T,Y.__s))),L=Y.props,B=Y.state,Y.__v=J,C)O&&E.getDerivedStateFromProps==null&&Y.componentWillMount!=null&&Y.componentWillMount(),O&&Y.componentDidMount!=null&&Y.__h.push(Y.componentDidMount);else{if(O&&E.getDerivedStateFromProps==null&&T!==L&&Y.componentWillReceiveProps!=null&&Y.componentWillReceiveProps(T,_),J.__v==Q.__v||!Y.__e&&Y.shouldComponentUpdate!=null&&Y.shouldComponentUpdate(T,Y.__s,_)===!1){J.__v!=Q.__v&&(Y.props=T,Y.state=Y.__s,Y.__d=!1),J.__e=Q.__e,J.__k=Q.__k,J.__k.some(function(J0){J0&&(J0.__=J)}),NZ.push.apply(Y.__h,Y._sb),Y._sb=[],Y.__h.length&&W.push(Y);break Z}Y.componentWillUpdate!=null&&Y.componentWillUpdate(T,Y.__s,_),O&&Y.componentDidUpdate!=null&&Y.__h.push(function(){Y.componentDidUpdate(L,B,M)})}if(Y.context=_,Y.props=T,Y.__P=Z,Y.__e=!1,A=V0.__r,y=0,O)Y.state=Y.__s,Y.__d=!1,A&&A(J),F=Y.render(Y.props,Y.state,Y.context),NZ.push.apply(Y.__h,Y._sb),Y._sb=[];else do Y.__d=!1,A&&A(J),F=Y.render(Y.props,Y.state,Y.context),Y.state=Y.__s;while(Y.__d&&++y<25);Y.state=Y.__s,Y.getChildContext!=null&&($=G9(G9({},$),Y.getChildContext())),O&&!C&&Y.getSnapshotBeforeUpdate!=null&&(M=Y.getSnapshotBeforeUpdate(L,B)),x=F!=null&&F.type===n&&F.key==null?r8(F.props.children):F,G=a8(Z,RZ(x)?x:[x],J,Q,$,X,q,W,G,K,H),Y.base=J.__e,J.__u&=-161,Y.__h.length&&W.push(Y),k&&(Y.__E=Y.__=null)}catch(J0){if(J.__v=null,K||q!=null)if(J0.then){for(J.__u|=K?160:128;G&&G.nodeType==8&&G.nextSibling;)G=G.nextSibling;q[q.indexOf(G)]=null,J.__e=G}else{for(v=q.length;v--;)B1(q[v]);Y1(J)}else J.__e=Q.__e,J.__k=Q.__k,J0.then||Y1(J);V0.__e(J0,J,Q)}else q==null&&J.__v==Q.__v?(J.__k=Q.__k,J.__e=Q.__e):G=J.__e=bJ(Q.__e,J,Q,$,X,q,W,K,H);return(F=V0.diffed)&&F(J),128&J.__u?void 0:G}function Y1(Z){Z&&(Z.__c&&(Z.__c.__e=!0),Z.__k&&Z.__k.some(Y1))}function n8(Z,J,Q){for(var $=0;$<Q.length;$++)y1(Q[$],Q[++$],Q[++$]);V0.__c&&V0.__c(J,Z),Z.some(function(X){try{Z=X.__h,X.__h=[],Z.some(function(q){q.call(X)})}catch(q){V0.__e(q,X.__v)}})}function r8(Z){return typeof Z!="object"||Z==null||Z.__b>0?Z:RZ(Z)?Z.map(r8):Z.constructor!==void 0?null:G9({},Z)}function bJ(Z,J,Q,$,X,q,W,G,K){var H,F,Y,C,L,B,M,k=Q.props||MZ,T=J.props,O=J.type;if(O=="svg"?X="http://www.w3.org/2000/svg":O=="math"?X="http://www.w3.org/1998/Math/MathML":X||(X="http://www.w3.org/1999/xhtml"),q!=null){for(H=0;H<q.length;H++)if((L=q[H])&&"setAttribute"in L==!!O&&(O?L.localName==O:L.nodeType==3)){Z=L,q[H]=null;break}}if(Z==null){if(O==null)return document.createTextNode(T);Z=document.createElementNS(X,O,T.is&&T),G&&(V0.__m&&V0.__m(J,q),G=!1),q=null}if(O==null)k===T||G&&Z.data==T||(Z.data=T);else{if(q=O=="textarea"&&T.defaultValue!=null?null:q&&kZ.call(Z.childNodes),!G&&q!=null)for(k={},H=0;H<Z.attributes.length;H++)k[(L=Z.attributes[H]).name]=L.value;for(H in k)L=k[H],H=="dangerouslySetInnerHTML"?Y=L:H=="children"||(H in T)||H=="value"&&("defaultValue"in T)||H=="checked"&&("defaultChecked"in T)||CZ(Z,H,null,L,X);for(H in T)L=T[H],H=="children"?C=L:H=="dangerouslySetInnerHTML"?F=L:H=="value"?B=L:H=="checked"?M=L:G&&typeof L!="function"||k[H]===L||CZ(Z,H,L,k[H],X);if(F)G||Y&&(F.__html==Y.__html||F.__html==Z.innerHTML)||(Z.innerHTML=F.__html),J.__k=[];else if(Y&&(Z.innerHTML=""),a8(J.type=="template"?Z.content:Z,RZ(C)?C:[C],J,Q,$,O=="foreignObject"?"http://www.w3.org/1999/xhtml":X,q,W,q?q[0]:Q.__k&&g9(Q,0),G,K),q!=null)for(H=q.length;H--;)B1(q[H]);G&&O!="textarea"||(H="value",O=="progress"&&B==null?Z.removeAttribute("value"):B!=null&&(B!==Z[H]||O=="progress"&&!B||O=="option"&&B!=k[H])&&CZ(Z,H,B,k[H],X),H="checked",M!=null&&M!=Z[H]&&CZ(Z,H,M,k[H],X))}return Z}function y1(Z,J,Q){try{if(typeof Z=="function"){var $=typeof Z.__u=="function";$&&Z.__u(),$&&J==null||(Z.__u=Z(J))}else Z.current=J}catch(X){V0.__e(X,Q)}}function o8(Z,J,Q){var $,X;if(V0.unmount&&V0.unmount(Z),($=Z.ref)&&($.current&&$.current!=Z.__e||y1($,null,J)),($=Z.__c)!=null){if($.componentWillUnmount)try{$.componentWillUnmount()}catch(q){V0.__e(q,J)}$.base=$.__P=null}if($=Z.__k)for(X=0;X<$.length;X++)$[X]&&o8($[X],J,Q||typeof Z.type!="function");Q||B1(Z.__e),Z.__c=Z.__=Z.__e=void 0}function gJ(Z,J,Q){return this.constructor(Z,Q)}function P1(Z,J,Q){var $,X,q,W;J==document&&(J=document.documentElement),V0.__&&V0.__(Z,J),X=($=typeof Q=="function")?null:Q&&Q.__k||J.__k,q=[],W=[],L1(J,Z=(!$&&Q||J).__k=VJ(n,null,[Z]),X||MZ,MZ,J.namespaceURI,!$&&Q?[Q]:X?null:J.firstChild?kZ.call(J.childNodes):null,q,!$&&Q?Q:X?X.__e:J.firstChild,$,W),n8(q,Z,W)}kZ=NZ.slice,V0={__e:function(Z,J,Q,$){for(var X,q,W;J=J.__;)if((X=J.__c)&&!X.__)try{if((q=X.constructor)&&q.getDerivedStateFromError!=null&&(X.setState(q.getDerivedStateFromError(Z)),W=X.__d),X.componentDidCatch!=null&&(X.componentDidCatch(Z,$||{}),W=X.__d),W)return X.__E=X}catch(G){Z=G}throw Z}},E8=0,kJ=function(Z){return Z!=null&&Z.constructor===void 0},AZ.prototype.setState=function(Z,J){var Q;Q=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=G9({},this.state),typeof Z=="function"&&(Z=Z(G9({},Q),this.props)),Z&&G9(Q,Z),Z!=null&&this.__v&&(J&&this._sb.push(J),h8(this))},AZ.prototype.forceUpdate=function(Z){this.__v&&(this.__e=!0,Z&&this.__h.push(Z),h8(this))},AZ.prototype.render=n,K9=[],p8=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,c8=function(Z,J){return Z.__v.__b-J.__v.__b},vZ.__r=0,H1=Math.random().toString(8),OZ="__d"+H1,t9="__a"+H1,i8=/(PointerCapture)$|Capture$/i,U1=0,K1=u8(!1),F1=u8(!0),RJ=0;var x9,x0,w1,t8,s9=0,X4=[],D0=V0,s8=D0.__b,e8=D0.__r,Z4=D0.diffed,J4=D0.__c,Q4=D0.unmount,z4=D0.__;function VZ(Z,J){D0.__h&&D0.__h(x0,Z,s9||J),s9=0;var Q=x0.__H||(x0.__H={__:[],__h:[]});return Z>=Q.__.length&&Q.__.push({}),Q.__[Z]}function b(Z){return s9=1,xJ(W4,Z)}function xJ(Z,J,Q){var $=VZ(x9++,2);if($.t=Z,!$.__c&&($.__=[Q?Q(J):W4(void 0,J),function(G){var K=$.__N?$.__N[0]:$.__[0],H=$.t(K,G);K!==H&&($.__N=[H,$.__[1]],$.__c.setState({}))}],$.__c=x0,!x0.__f)){var X=function(G,K,H){if(!$.__c.__H)return!0;var F=$.__c.__H.__.filter(function(C){return C.__c});if(F.every(function(C){return!C.__N}))return!q||q.call(this,G,K,H);var Y=$.__c.props!==G;return F.some(function(C){if(C.__N){var L=C.__[0];C.__=C.__N,C.__N=void 0,L!==C.__[0]&&(Y=!0)}}),q&&q.call(this,G,K,H)||Y};x0.__f=!0;var{shouldComponentUpdate:q,componentWillUpdate:W}=x0;x0.componentWillUpdate=function(G,K,H){if(this.__e){var F=q;q=void 0,X(G,K,H),q=F}W&&W.call(this,G,K,H)},x0.shouldComponentUpdate=X}return $.__N||$.__}function r(Z,J){var Q=VZ(x9++,3);!D0.__s&&O1(Q.__H,J)&&(Q.__=Z,Q.u=J,x0.__H.__h.push(Q))}function q4(Z,J){var Q=VZ(x9++,4);!D0.__s&&O1(Q.__H,J)&&(Q.__=Z,Q.u=J,x0.__h.push(Q))}function H0(Z){return s9=5,e9(function(){return{current:Z}},[])}function e9(Z,J){var Q=VZ(x9++,7);return O1(Q.__H,J)&&(Q.__=Z(),Q.__H=J,Q.__h=Z),Q.__}function O9(Z,J){return s9=8,e9(function(){return Z},J)}function jJ(){for(var Z;Z=X4.shift();){var J=Z.__H;if(Z.__P&&J)try{J.__h.some(TZ),J.__h.some(C1),J.__h=[]}catch(Q){J.__h=[],D0.__e(Q,Z.__v)}}}D0.__b=function(Z){x0=null,s8&&s8(Z)},D0.__=function(Z,J){Z&&J.__k&&J.__k.__m&&(Z.__m=J.__k.__m),z4&&z4(Z,J)},D0.__r=function(Z){e8&&e8(Z),x9=0;var J=(x0=Z.__c).__H;J&&(w1===x0?(J.__h=[],x0.__h=[],J.__.some(function(Q){Q.__N&&(Q.__=Q.__N),Q.u=Q.__N=void 0})):(J.__h.some(TZ),J.__h.some(C1),J.__h=[],x9=0)),w1=x0},D0.diffed=function(Z){Z4&&Z4(Z);var J=Z.__c;J&&J.__H&&(J.__H.__h.length&&(X4.push(J)!==1&&t8===D0.requestAnimationFrame||((t8=D0.requestAnimationFrame)||DJ)(jJ)),J.__H.__.some(function(Q){Q.u&&(Q.__H=Q.u),Q.u=void 0})),w1=x0=null},D0.__c=function(Z,J){J.some(function(Q){try{Q.__h.some(TZ),Q.__h=Q.__h.filter(function($){return!$.__||C1($)})}catch($){J.some(function(X){X.__h&&(X.__h=[])}),J=[],D0.__e($,Q.__v)}}),J4&&J4(Z,J)},D0.unmount=function(Z){Q4&&Q4(Z);var J,Q=Z.__c;Q&&Q.__H&&(Q.__H.__.some(function($){try{TZ($)}catch(X){J=X}}),Q.__H=void 0,J&&D0.__e(J,Q.__v))};var $4=typeof requestAnimationFrame=="function";function DJ(Z){var J,Q=function(){clearTimeout($),$4&&cancelAnimationFrame(J),setTimeout(Z)},$=setTimeout(Q,35);$4&&(J=requestAnimationFrame(Q))}function TZ(Z){var J=x0,Q=Z.__c;typeof Q=="function"&&(Z.__c=void 0,Q()),x0=J}function C1(Z){var J=x0;Z.__c=Z.__(),x0=J}function O1(Z,J){return!Z||Z.length!==J.length||J.some(function(Q,$){return Q!==Z[$]})}function W4(Z,J){return typeof J=="function"?J(Z):J}class _9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="BusError"}}class G4{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 _9(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)=>{this.localPending.set(Q,{resolve:$,reject:X}),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)=>{let q=setTimeout(()=>{if(this.remotePending.delete(Q),this.leader){this.workerCall(Z,J).then($,X);return}X(new _9("replica leader unavailable","network"))},1e4);this.remotePending.set(Q,{resolve:$,reject:X,timer:q,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 _9(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 _9("replica stopped",void 0))),this.localPending.clear()}}function SZ(){let Z=globalThis;return Z.__mhReplicaBus??=new G4}var M9="mh-synced",IZ="mh_replica",ZZ="mh_replica_hydrated";class Y9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="ReplicaError"}}var A9=!1,F9={state:"booting",paired:!1,node:null},_1=new Set;function K4(){return F9}function fZ(Z){return _1.add(Z),()=>_1.delete(Z)}function A1(Z){try{return localStorage.getItem(Z)==="1"}catch{return!1}}function j9(Z,J){try{J?localStorage.setItem(Z,"1"):localStorage.removeItem(Z)}catch{}}function bZ(){return A1(IZ)}function B9(){return bZ()&&A1(ZZ)&&A9&&F9.state!=="error"}function H4(Z){if(Z.event==="status"){if(F9=Z.status,F9.lastSync?.ok&&!A1(ZZ))j9(ZZ,!0),navigator.storage?.persist?.().catch(()=>{});for(let J of _1)J(F9);return}if(Z.event==="synced"){if(document.dispatchEvent(new CustomEvent(M9,{detail:Z})),Z.datasets.some((J)=>J==="databases"||J==="documents"))document.dispatchEvent(new CustomEvent(e0))}}function F4(){if(A9||typeof Worker>"u")return;A9=!0;let Z=SZ();Z.onEvent(H4),Z.start(),Z.call("status").then((J)=>H4({event:"status",status:J})).catch(()=>{}),hJ(),window.addEventListener("online",D9),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")D9()})}function U9(Z,...J){if(!A9)return Promise.reject(new Y9("replica not running",void 0));return SZ().call(Z,...J).catch((Q)=>{throw Q instanceof _9?new Y9(Q.message,Q.code):Q})}function D9(){if(A9&&F9.paired)U9("sync").catch(()=>{})}function Y4(Z=30000){if(F9.state==="ready")return Promise.resolve();return new Promise((J,Q)=>{let $=setTimeout(()=>{X(),Q(new Y9("本地副本启动超时",void 0))},Z),X=fZ((q)=>{if(q.state==="ready")clearTimeout($),X(),J();else if(q.state==="error")clearTimeout($),X(),Q(new Y9(q.error??"本地副本启动失败",void 0))})})}async function U4(){if(F4(),await Y4(),!F9.paired){let Z=await gZ("/api/pair/new",{method:"POST"});if(!Z.ok)throw new Y9(`无法获取配对码: ${Z.status}`,void 0);let{code:J}=await Z.json();await U9("pair",J)}j9(IZ,!0),D9()}async function B4(){j9(IZ,!1),j9(ZZ,!1);try{if(A9)await U9("unpair")}catch{}}async function L4(){j9(IZ,!1),j9(ZZ,!1);try{if(A9)await U9("unpair").catch(()=>{}),await U9("reset")}finally{SZ().stopWorker()}}function y4(){if(bZ())F4(),Y4().then(()=>D9()).catch(()=>{})}function hJ(){let Z=globalThis;if(Z.__mhSwBridge||!("serviceWorker"in navigator))return;Z.__mhSwBridge=!0,navigator.serviceWorker.addEventListener("message",(J)=>{let Q=J.data,$=J.ports?.[0];if(!Q||Q.kind!=="mh-rpc"||!$||!Q.op)return;if(!B9()){$.postMessage({ok:!1,error:{message:"replica unavailable",code:"unavailable"}});return}U9(Q.op,...Q.args??[]).then((X)=>$.postMessage({ok:!0,result:X}),(X)=>$.postMessage({ok:!1,error:{message:X.message,code:X.code}}))})}var mJ={invalid_input:400,not_found:404,ambiguous:400,stale:409,conflict:409,auth:401,network:502};function uJ(Z){return/^(create|update|delete|move|duplicate|revert)(Database|Document)/.test(Z)}async function M0(Z,...J){try{let Q=await U9(Z,...J);if(uJ(Z))document.dispatchEvent(new CustomEvent(e0));return Q}catch(Q){if(Q instanceof Y9)throw new L9(Q.message,Q.code,Q.code?mJ[Q.code]??400:0);throw Q}}var M1={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,...$}=J;return M0("updateDocument",Z,$,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)};class L9 extends Error{code;status;constructor(Z,J,Q){super(Z);this.code=J;this.status=Q;this.name="ApiError"}}var e0="mh-nav-invalidate";function EJ(Z,J){return Z!=="GET"&&(J.startsWith("/api/database")||J.startsWith("/api/document"))}var N1="mh_token",pJ="/auth/token";function cJ(){try{return localStorage.getItem(N1)}catch{return null}}function iJ(Z){try{localStorage.setItem(N1,Z)}catch{}document.cookie=`${N1}=${encodeURIComponent(Z)}; path=/; SameSite=Strict; Max-Age=31536000`}async function gZ(Z,J={}){let Q=cJ(),$=new Headers(J.headers);if(Q&&!$.has("authorization"))$.set("authorization",`Bearer ${Q}`);let X=await fetch(Z,{...J,headers:$});if(X.status!==401||!Q)return X;let q=await fetch(pJ,{headers:{authorization:`Bearer ${Q}`}}).catch(()=>null);if(!q?.ok)return X;let W=await q.json().catch(()=>null);if(!W?.token)return X;return iJ(W.token),$.set("authorization",`Bearer ${W.token}`),fetch(Z,{...J,headers:$})}async function F0(Z,J,Q){let $=await gZ(J,{method:Z,headers:Q!==void 0?{"content-type":"application/json"}:void 0,body:Q!==void 0?JSON.stringify(Q):void 0}),X=await $.json().catch(()=>null);if(!$.ok||X&&X.error)throw new L9(X&&X.error||`${$.status} ${$.statusText}`,X?.code,$.status);if(EJ(Z,J))document.dispatchEvent(new CustomEvent(e0));return X}var O0=(Z)=>encodeURIComponent(Z),dJ={listDatabases:()=>F0("GET","/api/databases"),createDatabase:(Z)=>F0("POST","/api/databases",Z),updateDatabase:(Z,J)=>F0("PATCH",`/api/database?id=${O0(Z)}`,J),duplicateDatabase:(Z,J)=>F0("POST",`/api/database/duplicate?id=${O0(Z)}`,J??{}),deleteDatabase:(Z)=>F0("DELETE",`/api/database?id=${O0(Z)}`),listProperties:(Z)=>F0("GET",`/api/properties?db=${O0(Z)}`),createProperty:(Z)=>F0("POST","/api/properties",Z),updateProperty:(Z,J)=>F0("PATCH",`/api/property?id=${O0(Z)}`,J),setColumnWidth:(Z,J)=>F0("PATCH",`/api/property/width?id=${O0(Z)}`,{width:J}),deleteProperty:(Z)=>F0("DELETE",`/api/property?id=${O0(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 F0("GET",`/api/records?${Q}`)},createRecord:(Z,J)=>F0("POST",`/api/records?db=${O0(Z)}`,J),getRecord:(Z)=>F0("GET",`/api/record?id=${O0(Z)}`),updateRecord:(Z,J)=>F0("PATCH",`/api/record?id=${O0(Z)}`,J),moveRecord:(Z,J,Q)=>F0("PATCH",`/api/record/order?id=${O0(Z)}`,{target:J,where:Q}),deleteRecord:(Z)=>F0("DELETE",`/api/record?id=${O0(Z)}`),listDocuments:(Z)=>F0("GET",Z?`/api/documents?db=${O0(Z)}`:"/api/documents"),listDocumentsByParent:(Z)=>F0("GET",`/api/documents?parent=${O0(Z)}`),createDocument:(Z)=>F0("POST","/api/documents",Z),getDocument:(Z)=>F0("GET",`/api/document?id=${O0(Z)}`),updateDocument:(Z,J)=>F0("PATCH",`/api/document?id=${O0(Z)}`,J),moveDocument:(Z,J,Q)=>F0("PATCH",`/api/document/move?id=${O0(Z)}`,{target:J,where:Q}),duplicateDocument:(Z,J)=>F0("POST",`/api/document/duplicate?id=${O0(Z)}`,J??{}),deleteDocument:(Z)=>F0("DELETE",`/api/document?id=${O0(Z)}`),documentHistory:(Z)=>F0("GET",`/api/document/history?id=${O0(Z)}`),documentAt:(Z,J)=>F0("GET",`/api/document/at?id=${O0(Z)}&version=${O0(J)}`),revertDocument:(Z,J)=>F0("POST",`/api/document/revert?id=${O0(Z)}`,J),recordHistory:(Z)=>F0("GET",`/api/record/history?id=${O0(Z)}`),databaseActivity:(Z,J)=>F0("GET",`/api/database/activity?db=${O0(Z)}${J!=null?`&limit=${J}`:""}`),recordAt:(Z,J)=>F0("GET",`/api/record/at?id=${O0(Z)}&version=${O0(J)}`),revertRecord:(Z,J)=>F0("POST",`/api/record/revert?id=${O0(Z)}`,{to:J}),nodes:()=>F0("GET","/api/nodes"),search:(Z,J)=>{let Q=new URLSearchParams({q:Z});if(J!=null)Q.set("limit",String(J));return F0("GET",`/api/search?${Q}`)},listPeers:()=>F0("GET","/api/peers"),newPairingCode:()=>F0("POST","/api/pair/new"),addPeerByPairing:(Z)=>F0("POST","/api/peers/pair",Z),updatePeer:(Z,J)=>F0("PATCH",`/api/peer?url=${O0(Z)}`,J),removePeer:(Z)=>F0("DELETE",`/api/peer?url=${O0(Z)}`),syncPeer:(Z)=>F0("POST",`/api/peer/sync?url=${O0(Z)}`),listGrants:()=>F0("GET","/api/grants"),revokeGrant:(Z)=>F0("DELETE",`/api/grant?token=${O0(Z)}`),listSites:()=>F0("GET","/api/sites"),listSiteFiles:(Z)=>F0("GET",`/api/site/files?site=${O0(Z)}`),createSite:(Z)=>F0("POST","/api/sites",Z),updateSite:(Z,J)=>F0("PATCH",`/api/site?id=${O0(Z)}`,J),deleteSite:(Z)=>F0("DELETE",`/api/site?id=${O0(Z)}`),deleteSiteFile:(Z,J)=>F0("DELETE",`/api/site/file?site=${O0(Z)}&path=${O0(J)}`),uploadSiteFile:async(Z,J,Q)=>{let $=await gZ(`/api/site/file?site=${O0(Z)}&path=${O0(J)}`,{method:"POST",headers:{"content-type":Q.type||"application/octet-stream"},body:Q}),X=await $.json().catch(()=>null);if(!$.ok||X&&X.error)throw Error(X&&X.error||`${$.status} ${$.statusText}`);return X},version:()=>F0("GET","/api/version")},u=new Proxy(dJ,{get(Z,J,Q){if(B9()&&J in M1)return M1[J];return Reflect.get(Z,J,Q)}}),h9={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:"关联"}};var aJ=0;function z(Z,J,Q,$,X,q){J||(J={});var W,G,K=J;if("ref"in K)for(G in K={},J)G=="ref"?W=J[G]:K[G]=J[G];var H={type:Z,props:K,key:Q,ref:W,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--aJ,__i:-1,__u:0,__source:X,__self:q};if(typeof Z=="function"&&(W=Z.defaultProps))for(G in W)K[G]===void 0&&(K[G]=W[G]);return V0.vnode&&V0.vnode(H),H}var lJ={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"/>',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 f({name:Z,cls:J="ico"}){return z("svg",{class:J,viewBox:"0 0 24 24",dangerouslySetInnerHTML:{__html:lJ[Z]??""}},void 0,!1,void 0,this)}var n0={text:"text",number:"hash",select:"select",multi_select:"multi",checkbox:"checkbox",date:"calendar",url:"link",relation:"relation"};function m9(Z,J){let Q=J.threshold??4,$=Q===0,X=(W)=>{if(W.pointerId!==Z.pointerId)return;if(!$){if(Math.hypot(W.clientX-Z.clientX,W.clientY-Z.clientY)<Q)return;$=!0,J.onStart?.(W)}W.preventDefault(),J.onMove(W)},q=(W)=>{if(W.pointerId!==Z.pointerId)return;removeEventListener("pointermove",X),removeEventListener("pointerup",q),removeEventListener("pointercancel",q),J.onEnd?.(W,$)};addEventListener("pointermove",X,{passive:!1}),addEventListener("pointerup",q),addEventListener("pointercancel",q)}function $9(){document.querySelectorAll(".drop-into,.drop-before,.drop-after").forEach((Z)=>Z.classList.remove("drop-into","drop-before","drop-after"))}function v1(Z,J,Q){$9();let $=Z.getBoundingClientRect(),X=Q==="y"?J.clientY<$.top+$.height/2?"before":"after":J.clientX<$.left+$.width/2?"before":"after";return Z.classList.add("drop-"+X),X}function nJ(Z,J,Q){let $=document.createElement("div");return $.className="drag-ghost "+Z,$.style.width=`${J.width}px`,$.style.height=`${J.height}px`,$.textContent=Q,document.body.appendChild($),$}function k1(Z,J,Q){if(!Z)return;Z.style.transform=`translate3d(${Math.round(J)}px, ${Math.round(Q)}px, 0)`}function R1(Z,J){let Q=J.source.getBoundingClientRect(),$=Z.clientX-Q.left,X=Z.clientY-Q.top,q=null,W=null,G="before";m9(Z,{onStart:()=>{q=nJ(J.ghostCls,Q,J.ghostText),J.source.classList.add("drag-source"),document.body.classList.add("table-dragging"),J.onActivate?.()},onMove:(K)=>{k1(q,K.clientX-$,K.clientY-X);let H=document.elementFromPoint(K.clientX,K.clientY)?.closest?.(J.targetSelector);if(!H||J.isSelf(H)){$9(),W=null;return}W=H,G=v1(H,K,J.axis)},onEnd:(K,H)=>{if(q?.remove(),J.source.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),$9(),H&&W)J.onDrop(W,G);J.onFinish?.(H)}})}function xZ(Z,J){let Q=Z.currentTarget,$=J.startWidth,X=0;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let q=Q.closest("table");if(q)Q.style.setProperty("--rz-guide-h",q.offsetHeight+"px");m9(Z,{threshold:0,onMove:(W)=>{if($=Math.max(J.min,J.startWidth+W.clientX-Z.clientX),!X)X=requestAnimationFrame(()=>{if(X=0,J.col)J.col.style.width=$+"px"})},onEnd:()=>{if(X)cancelAnimationFrame(X);if(J.col)J.col.style.width=$+"px";Q.classList.remove("dragging"),Q.style.removeProperty("--rz-guide-h"),document.body.classList.remove("col-resizing"),J.onDone($)}})}var jZ="(max-width: 768px) and (pointer: coarse)";function T1(Z){let J=Z,Q=new Set;return{get:()=>J,set:($)=>{J=$,Q.forEach((X)=>X($))},use(){let[$,X]=b(J);return r(()=>{return Q.add(X),()=>void Q.delete(X)},[]),$}}}var JZ=T1([]),rJ=0;function Z0(Z){let J=++rJ;JZ.set([...JZ.get(),{id:J,msg:Z}]),setTimeout(()=>JZ.set(JZ.get().filter((Q)=>Q.id!==J)),2600)}var V1=T1(null);function R0(Z,J,Q={}){V1.set({render:J,anchor:Z,minWidth:Q.minWidth})}function P4(){V1.set(null)}function oJ(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 tJ(){let Z=V1.use(),J=H0(null),[Q,$]=b(null),X=matchMedia(jZ).matches;if(q4(()=>{if(!Z||!J.current||X)return $(null);let{x:q,y:W}=oJ(Z.anchor),G=J.current.getBoundingClientRect();$({left:Math.min(q,innerWidth-G.width-10),top:Math.min(W+4,innerHeight-G.height-10)})},[Z,X]),!Z)return null;return z("div",{class:"menu-layer",onMouseDown:(q)=>q.target===q.currentTarget&&P4(),children:z("div",{ref:J,class:"pop"+(X?" sheet":""),style:X?void 0:{left:Q?.left??-9999,top:Q?.top??-9999,minWidth:Z.minWidth},onMouseDown:(q)=>q.stopPropagation(),children:Z.render(P4)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function u0({children:Z}){return z("div",{class:"lbl",children:Z},void 0,!1,void 0,this)}function f0(){return z("div",{class:"sep"},void 0,!1,void 0,this)}function t({icon:Z,label:J,sublabel:Q,danger:$,checked:X,onClick:q}){return z("button",{class:"item"+($?" danger":""),onClick:q,children:[Z&&z("span",{class:"lico plain",children:z(f,{name:Z,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"meta",children:[z("span",{class:"t",children:J},void 0,!1,void 0,this),Q&&z("span",{class:"d",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&z("span",{class:"chk",children:z(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 N9(Z,J=240){let[Q,$]=b(!1);return r(()=>{let q=requestAnimationFrame(()=>$(!0));return()=>cancelAnimationFrame(q)},[]),{open:Q,close:()=>{$(!1),setTimeout(Z,J)}}}var S1=T1(null);function Z9(Z){S1.set(Z)}function i0(){S1.set(null)}function X9({title:Z,sub:J,children:Q,footer:$,width:X}){return z("div",{class:"modal",style:{width:X},onMouseDown:(q)=>q.stopPropagation(),children:[z("div",{class:"modal-head",children:[z("h3",{children:Z},void 0,!1,void 0,this),J&&z("p",{children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"modal-body",children:Q},void 0,!1,void 0,this),$&&z("div",{class:"modal-foot",children:$},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sJ(){let Z=S1.use();return r(()=>{if(!Z)return;let J=(Q)=>Q.key==="Escape"&&i0();return addEventListener("keydown",J),()=>removeEventListener("keydown",J)},[Z]),z("div",{class:"modal-scrim"+(Z?" open":""),onMouseDown:(J)=>J.target===J.currentTarget&&i0(),children:Z},void 0,!1,void 0,this)}function b0(Z){return new Promise((J)=>{let Q=($)=>{i0(),J($)};Z9(z(X9,{title:Z.title,footer:z(n,{children:[z("button",{class:"btn btn-secondary",onClick:()=>Q(!1),children:"取消"},void 0,!1,void 0,this),z("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:z("div",{class:"muted",children:Z.message},void 0,!1,void 0,this)},void 0,!1,void 0,this))})}function q9(Z){return new Promise((J)=>{let Q=Z.value??"",$=(X)=>{i0(),J(X)};Z9(z(X9,{title:Z.title,footer:z(n,{children:[z("button",{class:"btn btn-secondary",onClick:()=>$(null),children:"取消"},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:()=>$(Q.trim()||(Z.value??"")),children:Z.confirmLabel??"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[Z.label&&z("div",{class:"field-label",children:Z.label},void 0,!1,void 0,this),z("input",{class:"text-input",autofocus:!0,value:Z.value??"",placeholder:Z.placeholder,onInput:(X)=>Q=X.target.value,onKeyDown:(X)=>{if(X.key==="Enter")$(Q.trim()||(Z.value??""))}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))})}function DZ(){let Z=JZ.use();return z(n,{children:[z(tJ,{},void 0,!1,void 0,this),z(sJ,{},void 0,!1,void 0,this),z("div",{class:"toasts",children:Z.map((J)=>z("div",{class:"toast",children:[z(f,{name:"check",cls:"ico sm"},void 0,!1,void 0,this),z("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 I1=null,eJ=/mac/i.test(navigator.userAgentData?.platform??navigator.platform);function C4(Z){let{view:J,navigate:Q}=Z,[$,X]=b(new Set),[q,W]=b(""),[G,K]=b(!1),H=H0(null),[F,Y]=b(null),C=Q3(Z.onResize);r(()=>{u.version().then((A)=>Y(A.version)).catch(()=>Y(null))},[]),r(()=>{if(G)H.current?.focus()},[G]);let L=(A)=>{let y=new Set($);y.has(A)?y.delete(A):y.add(A),X(y)},B=(A)=>A().catch((y)=>Z.onError(String(y.message))),M=(A)=>{if("id"in J&&J.id===A)Q({kind:"empty"},{replace:!0})},k=(A)=>B(async()=>{let y=await u.createDocument({title:"",...A?{parent_id:A}:{}});if(A)$.add(A);Q({kind:"doc",id:y.id})}),T=(A,y,x)=>B(async()=>{if(A===y.id)return;if(J3(Z.docs,A,y.id))return;if(await u.moveDocument(A,y.id,x),x==="into")$.add(y.id)}),O=(A,y)=>{A.stopPropagation(),R0(A,(x)=>z(n,{children:[z(t,{icon:"settings",label:"重命名…",onClick:async()=>{x();let v=await q9({title:"重命名数据库",value:y.name});if(v&&v!==y.name)B(async()=>{await u.updateDatabase(y.id,{name:v})})}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(x(),await b0({title:"删除数据库?",message:`「${y.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))B(async()=>{await u.deleteDatabase(y.id),M(y.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},P=(A,y)=>{A.stopPropagation();let x=Z.docs.filter((v)=>v.parent_id===y.id).length;R0(A,(v)=>z(n,{children:[z(t,{icon:"plus",label:"新建子页",onClick:()=>{v(),k(y.id)}},void 0,!1,void 0,this),z(t,{icon:"settings",label:"重命名…",onClick:async()=>{v();let E=await q9({title:"重命名文档",value:y.title});if(E)B(async()=>{await u.updateDocument(y.id,{title:E})})}},void 0,!1,void 0,this),y.parent_id&&z(t,{icon:"cornerUpRight",label:"移到顶层",onClick:()=>{v(),B(async()=>{await u.updateDocument(y.id,{parent_id:null})})}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除",danger:!0,onClick:async()=>{if(v(),await b0({title:"删除文档?",message:x?`「${y.title||"无标题"}」及其 ${x} 个子页将被删除。`:`「${y.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))B(async()=>{await _4(Z.docs,y.id),M(y.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},_=(A,y=0)=>{return Z.docs.filter((v)=>v.parent_id===A).map((v)=>{let E=Z.docs.filter((l)=>l.parent_id===v.id),J0=E.length>0&&$.has(v.id);return z("div",{class:y?"navchildren":"",children:[z("div",{class:"navitem"+(J.kind==="doc"&&J.id===v.id?" active":""),draggable:!0,onClick:()=>Q({kind:"doc",id:v.id}),onDragStart:(l)=>{l.stopPropagation(),I1=v.id,l.currentTarget.classList.add("dragging")},onDragEnd:(l)=>{l.currentTarget.classList.remove("dragging"),f1()},onDragOver:(l)=>{l.preventDefault(),l.stopPropagation(),Z3(l.currentTarget,l)},onDrop:(l)=>{l.preventDefault(),l.stopPropagation();let A0=O4(l.currentTarget,l),o=I1;if(I1=null,f1(),o)T(o,v,A0)},children:[z("span",{class:"tw"+(J0?" open":""),onClick:(l)=>{if(l.stopPropagation(),E.length)L(v.id)},children:E.length>0&&z(f,{name:"chevron",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"emoji",children:z(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"label",children:v.title||"无标题"},void 0,!1,void 0,this),z("span",{class:"acts",children:[z("button",{title:"新建子页",onClick:(l)=>{l.stopPropagation(),k(v.id)},children:z(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{title:"更多",onClick:(l)=>P(l,v),children:z(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),J0&&_(v.id,y+1)]},v.id,!0,void 0,this)})};return z("div",{class:"sidebar"+(Z.collapsed?" collapsed":""),style:{width:Z.width,marginLeft:Z.collapsed?-Z.width:void 0},children:[z("div",{class:"sb-head",children:[z("div",{class:"brand",children:[z("span",{class:"mark",children:z(f,{name:"cube"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Metahub"]},void 0,!0,void 0,this),z("button",{class:"sb-act"+(G?" active":""),title:"搜索","aria-label":"搜索",onClick:()=>K((A)=>!A),children:z(f,{name:"search",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:z(f,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[z(f,{name:"settings",cls:"ico"},void 0,!1,void 0,this),Z.updatePending&&z("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"iconbtn",title:"收起侧栏",onClick:Z.onCollapse,children:z(f,{name:"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"sb-search"+(G?" open":""),onClick:(A)=>A.currentTarget.querySelector("input")?.focus(),children:[z(f,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),z("input",{ref:H,placeholder:"搜索…",value:q,onInput:(A)=>W(A.target.value),onKeyDown:(A)=>{if(A.key==="Enter"&&q.trim())Q({kind:"search",q:q.trim()},{replace:J.kind==="search"})}},void 0,!1,void 0,this),z("kbd",{children:eJ?"⌘K":"Ctrl K"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"sb-scroll",children:[z("div",{class:"sb-section",children:[z("div",{class:"sb-section-head",children:[z("span",{children:"数据库"},void 0,!1,void 0,this),z("button",{class:"add",title:"新建数据库",onClick:()=>z3((A)=>Q({kind:"db",id:A}),Z.onError),children:z(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((A)=>z("div",{class:"navitem"+(J.kind==="db"&&J.id===A.id?" active":""),onClick:()=>Q({kind:"db",id:A.id}),children:[z("span",{class:"emoji",children:A.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),z("span",{class:"label",children:A.name},void 0,!1,void 0,this),z("span",{class:"acts",children:z("button",{title:"更多",onClick:(y)=>O(y,A),children:z(f,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},A.id,!0,void 0,this)),Z.databases.length===0&&z("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"sb-section",children:[z("div",{class:"sb-section-head",children:[z("span",{children:"文档"},void 0,!1,void 0,this),z("button",{class:"add",title:"新建文档",onClick:()=>k(null),children:z(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_(null),Z.docs.length===0&&z("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"sb-footer",children:[z("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[z(f,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this),Z.updatePending&&z("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:z(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&z("span",{class:"sbf-ver",title:`Metahub Core v${F}`,children:["v",F]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"sb-resizer",onMouseDown:C},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var f1=$9;function O4(Z,J){let Q=Z.getBoundingClientRect(),$=J.clientY-Q.top;return $<Q.height*0.28?"before":$>Q.height*0.72?"after":"into"}function Z3(Z,J){f1(),Z.classList.add("drop-"+O4(Z,J))}function J3(Z,J,Q){let $=Z.find((X)=>X.id===Q);while($){if($.parent_id===J)return!0;$=Z.find((X)=>X.id===$.parent_id)}return!1}async function _4(Z,J){for(let Q of Z.filter(($)=>$.parent_id===J))await _4(Z,Q.id);await u.deleteDocument(J)}function Q3(Z){return(J)=>{J.preventDefault();let Q=J.currentTarget;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let $=(q)=>Z(Math.max(210,Math.min(460,q.clientX))),X=()=>{Q.classList.remove("dragging"),document.body.classList.remove("col-resizing"),removeEventListener("mousemove",$),removeEventListener("mouseup",X)};addEventListener("mousemove",$),addEventListener("mouseup",X)}}var w4={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 z3(Z,J){Z9(z($3,{onOpenDb:Z,onError:J},void 0,!1,void 0,this))}function $3(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]=b(""),[q,W]=b(J[0]),[G,K]=b("blank"),H=H0(!1),F=async()=>{if(H.current)return;H.current=!0;try{let Y=await u.createDatabase({name:$.trim()||"未命名数据库",icon:q});for(let C of w4[G]??w4.blank)await u.createProperty({db:Y.id,name:C.name,type:C.type,config:C.config});i0(),Z.onOpenDb(Y.id),Z0(`已创建数据库「${Y.name}」`)}catch(Y){Z.onError(String(Y.message))}finally{H.current=!1}};return z(X9,{title:"新建数据库",sub:"创建一个带属性列的结构化数据表。",footer:z(n,{children:[z("button",{class:"btn btn-secondary",onClick:i0,children:"取消"},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:F,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[z("div",{class:"field-label",children:"名称"},void 0,!1,void 0,this),z("input",{class:"text-input",autofocus:!0,placeholder:"例如:项目、客户、库存…",value:$,onInput:(Y)=>X(Y.target.value),onKeyDown:(Y)=>Y.key==="Enter"&&F()},void 0,!1,void 0,this),z("div",{class:"field-label",children:"图标"},void 0,!1,void 0,this),z("div",{class:"icon-pick",children:J.map((Y)=>z("button",{class:Y===q?"sel":"",onClick:()=>W(Y),children:Y},Y,!1,void 0,this))},void 0,!1,void 0,this),z("div",{class:"field-label",children:"模板"},void 0,!1,void 0,this),z("div",{class:"tmpl",children:Q.map(([Y,C,L])=>z("button",{class:Y===G?"sel":"",onClick:()=>K(Y),children:[z("div",{class:"tt",children:C},void 0,!1,void 0,this),z("div",{class:"td",children:L},void 0,!1,void 0,this)]},Y,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var A4=[4,28,45,130,165,200,220,255,290,330];function b1(Z){let J=0;for(let Q=0;Q<Z.length;Q++)J=J*31+Z.charCodeAt(Q)>>>0;return`hsl(${A4[J%A4.length]} 65% 45%)`}function v9({text:Z}){return z("span",{class:"chip",style:{["--c"]:b1(Z)},children:Z},void 0,!1,void 0,this)}function u9({prop:Z,val:J}){if(J==null||J===""||Array.isArray(J)&&J.length===0)return z("span",{class:"muted",children:" "},void 0,!1,void 0,this);if(Z.type==="select")return z(v9,{text:String(J)},void 0,!1,void 0,this);if(Z.type==="multi_select"||Z.type==="relation")return z(n,{children:J.map((Q)=>z(v9,{text:String(Q)},String(Q),!1,void 0,this))},void 0,!1,void 0,this);if(Z.type==="url")return z("a",{href:String(J),target:"_blank",rel:"noreferrer",onClick:(Q)=>Q.stopPropagation(),children:String(J)},void 0,!1,void 0,this);return z("span",{children:String(J)},void 0,!1,void 0,this)}function M4(Z,J){if(Z==="relation")return J.split(",").map((Q)=>Q.trim()).filter(Boolean);return J}function N4(Z,J){if(J==null)return"";if(Array.isArray(J))return J.join(", ");return String(J)}var X3={user:"",repair:"修复",revert:"回滚"};function x1(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 j1(){let[Z,J]=b([]);return r(()=>{u.nodes().then(J).catch(()=>{})},[]),(Q)=>{let $=Z.find((X)=>X.node_id===Q);if($?.self)return"本设备";return $?.label||Q.slice(0,8)}}function D1({kind:Z}){if(Z==="user")return null;return z("span",{class:"hist-kind "+Z,children:X3[Z]},void 0,!1,void 0,this)}function q3(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 G=J.length-1;G>=0;G--)Q[W][G]=Z[W]===J[G]?Q[W+1][G+1]+1:Math.max(Q[W+1][G],Q[W][G+1]);let $=[],X=0,q=0;while(X<Z.length&&q<J.length)if(Z[X]===J[q])$.push([X,q]),X++,q++;else if(Q[X+1][q]>=Q[X][q+1])X++;else q++;return $}var W3=(Z)=>Z?Z.split(/\n{2,}/):[],v4=(Z)=>Z?Z.split(`
|
|
8
|
-
`).filter((J)=>J.trim()!==""):[];function G3(Z,J){for(let Q=0;Q<Math.min(Z.length,J.length);Q++){let $=Z[Q].text,X=J[Q].text,q=0;while(q<$.length&&q<X.length&&$[q]===X[q])q++;let W=0;while(W<$.length-q&&W<X.length-q&&$[$.length-1-W]===X[X.length-1-W])W++;if(q+W<Math.max($.length,X.length)*0.3)continue;Z[Q].seg=[$.slice(0,q),$.slice(q,$.length-W),$.slice($.length-W)],J[Q].seg=[X.slice(0,q),X.slice(q,X.length-W),X.slice(X.length-W)]}}function H3(Z,J){let Q=v4(Z),$=v4(J),X=q3(Q,$),q=[],W=0,G=0;for(let[K,H]of[...X,[Q.length,$.length]]){let F=[],Y=[];for(;W<K;W++)F.push({kind:"del",text:Q[W]});for(;G<H;G++)Y.push({kind:"add",text:$[G]});if(G3(F,Y),q.push(...F,...Y),K<Q.length)q.push({kind:"same",text:Q[K]});W=K+1,G=H+1}return q}function K3(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 k4({docId:Z,onClose:J,onReverted:Q}){let{open:$,close:X}=N9(J),[q,W]=b(null),[G,K]=b(null),[H,F]=b(null),[Y,C]=b(null),[L,B]=b(!1),[M,k]=b(!1),[T,O]=b(!1),P=j1(),_=()=>Promise.all([u.documentHistory(Z),u.getDocument(Z)]).then(([v,E])=>{W(v),K(E),F((J0)=>J0??v[0]?.version??null)}).catch((v)=>Z0(String(v.message)));r(()=>{_()},[Z]),r(()=>{if(!H)return C(null);u.documentAt(Z,H).then(C).catch(()=>C(null))},[Z,H]);let A=e9(()=>(q??[]).filter((v)=>L||v.kind!=="repair"),[q,L]),y=H!=null&&q?.[0]?.version===H,x=async()=>{if(!H||!Y)return;if(!await b0({title:"恢复到此版本?",message:`标题和正文将恢复到 ${new Date(Y.version?F3(Y.version):Date.now()).toLocaleString()} 的状态。此操作会作为一次新修订记录,任何版本都仍可从历史找回。`,confirmLabel:"恢复"}))return;O(!0);try{await u.revertDocument(Z,{to:H,if_match:G?.version}),Z0("已恢复"),Q(),X()}catch(E){if(E instanceof L9&&E.code==="stale")Z0("文档刚被其他端修改,已刷新,请重试"),await _();else Z0(String(E.message))}finally{O(!1)}};return z(n,{children:[z("div",{class:"scrim"+($?" open":""),onClick:X},void 0,!1,void 0,this),z("div",{class:"peek hist-peek"+($?" open":""),children:[z("div",{class:"peek-head",children:[z("button",{class:"iconbtn",onClick:X,children:z(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"hist-title",children:[z(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"版本历史"]},void 0,!0,void 0,this),z("div",{style:{flex:1}},void 0,!1,void 0,this),z("label",{class:"hist-toggle",children:[z("input",{type:"checkbox",checked:M,onInput:()=>k(!M)},void 0,!1,void 0,this),"对比当前"]},void 0,!0,void 0,this),z("label",{class:"hist-toggle",children:[z("input",{type:"checkbox",checked:L,onInput:()=>B(!L)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"hist-split",children:[z("div",{class:"hist-list",children:[q===null&&z("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),A.map((v)=>z("div",{class:"hist-item"+(H===v.version?" sel":""),onClick:()=>F(v.version),children:[z("div",{class:"row1",children:[z("span",{class:"when",title:new Date(v.at).toLocaleString(),children:x1(v.at)},void 0,!1,void 0,this),z(D1,{kind:v.kind},void 0,!1,void 0,this),q?.[0]?.version===v.version&&z("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"row2",children:[z("span",{class:"who",children:P(v.node_id)},void 0,!1,void 0,this),z("span",{class:"what",children:K3(v)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},v.version,!0,void 0,this))]},void 0,!0,void 0,this),z("div",{class:"hist-preview",children:[Y&&z(n,{children:[z("div",{class:"hist-doc-title",children:Y.title||"无标题"},void 0,!1,void 0,this),M&&!y?H3(G?.body??"",Y.body).map((v,E)=>z("div",{class:"hist-line "+v.kind,children:v.seg?z(n,{children:[v.seg[0],z("span",{class:"seg",children:v.seg[1]},void 0,!1,void 0,this),v.seg[2]]},void 0,!0,void 0,this):v.text},E,!1,void 0,this)):W3(Y.body).map((v,E)=>z("div",{class:"hist-block",children:v},E,!1,void 0,this)),!Y.body&&z("div",{class:"muted",children:"(空文档)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!Y&&H&&z("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"hist-foot",children:z("button",{class:"btn btn-primary",disabled:!H||y||T,onClick:x,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 F3(Z){return Number(Z.slice(0,15))||Date.now()}function Y3(Z){if(Z.deleted)return"已删除";if(Z.created)return"创建";if(Z.moved&&!Z.diffs.length)return"调整排序";return""}var g1=3;function R4({dbId:Z,onClose:J}){let{open:Q,close:$}=N9(J),[X,q]=b(null),[W,G]=b(new Map),[K,H]=b(!1),[F,Y]=b(new Set),C=j1();r(()=>{Promise.all([u.databaseActivity(Z),u.listProperties(Z)]).then(([B,M])=>{q(B),G(new Map(M.map((k)=>[k.id,k.name])))}).catch((B)=>Z0(String(B.message)))},[Z]);let L=(X??[]).filter((B)=>K||B.kind!=="repair");return z(n,{children:[z("div",{class:"scrim"+(Q?" open":""),onClick:$},void 0,!1,void 0,this),z("div",{class:"peek"+(Q?" open":""),children:[z("div",{class:"peek-head",children:[z("button",{class:"iconbtn",onClick:$,children:z(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"hist-title",children:[z(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"最近动态"]},void 0,!0,void 0,this),z("div",{style:{flex:1}},void 0,!1,void 0,this),z("label",{class:"hist-toggle",children:[z("input",{type:"checkbox",checked:K,onInput:()=>H(!K)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"peek-body hist-feed",children:[X===null&&z("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),X!==null&&L.length===0&&z("div",{class:"muted pad",children:"暂无动态。"},void 0,!1,void 0,this),L.map((B)=>{let M=B.record_id+B.version,k=F.has(M),T=k?B.diffs:B.diffs.slice(0,g1),O=Y3(B);return z("div",{class:"hist-item static",children:[z("div",{class:"row1",children:[z("span",{class:"when",title:new Date(B.at).toLocaleString(),children:x1(B.at)},void 0,!1,void 0,this),z(D1,{kind:B.kind},void 0,!1,void 0,this),z("span",{class:"hist-recname",children:B.record_title||B.record_id},void 0,!1,void 0,this),O&&z("span",{class:"hist-status",children:O},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"row2",children:z("span",{class:"who",children:C(B.node_id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),T.length>0&&z("div",{class:"hist-fields",children:[T.map((P)=>z("div",{class:"hist-field",children:[z("span",{class:"fname",children:W.get(P.prop)??"(已删字段)"},void 0,!1,void 0,this),!B.created&&z("span",{class:"old",title:E9(P.before),children:E9(P.before)},void 0,!1,void 0,this),!B.created&&z("span",{class:"arr",children:"→"},void 0,!1,void 0,this),z("span",{class:"new",title:E9(P.after),children:E9(P.after)},void 0,!1,void 0,this)]},P.prop,!0,void 0,this)),B.diffs.length>g1&&!k&&z("button",{class:"hist-more",onClick:()=>Y(new Set(F).add(M)),children:["…还有 ",B.diffs.length-g1," 项"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},M,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function U3(Z,J){let Q=[];if(Z.created)Q.push("创建");if(Z.deleted)Q.push("删除");if(Z.fields.length)Q.push(Z.fields.map(($)=>J.get($)??"(已删字段)").join("、"));if(Z.moved&&!Q.length)Q.push("排序");return Q.join(";")||"元数据"}function E9(Z){if(Z===void 0)return"(空)";if(Z===null)return"(空)";if(typeof Z==="string")return Z===""?"(空)":Z;return JSON.stringify(Z)}function T4({rec:Z,props:J,onReverted:Q}){let[$,X]=b(null),[q,W]=b(null),[G,K]=b(!1),H=H0(new Map),[,F]=b(0),Y=j1(),C=e9(()=>new Map(J.map((O)=>[O.id,O.name])),[J]),L=()=>u.recordHistory(Z.id).then(X).catch((O)=>Z0(String(O.message)));r(()=>{L()},[Z.id]);let B=async(O)=>{let P=H.current.get(O);if(P)return P;let _=await u.recordAt(Z.id,O);return H.current.set(O,_),F((A)=>A+1),_},M=(O,P)=>{if(q===O.version)return W(null);if(W(O.version),B(O.version),P)B(P.version)},k=async(O)=>{if(!await b0({title:"恢复到此版本?",message:"记录字段将恢复到该修订时的值。此操作会作为一次新修订记录。",confirmLabel:"恢复"}))return;try{await u.revertRecord(Z.id,O.version),Z0("已恢复"),H.current.clear(),Q(),await L()}catch(_){Z0(String(_.message))}},T=($??[]).filter((O)=>G||O.kind!=="repair");return z("div",{class:"hist-rec",children:[z("div",{class:"hist-rec-head",children:[z("span",{class:"hist-title",children:[z(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"修改历史"]},void 0,!0,void 0,this),z("label",{class:"hist-toggle",children:[z("input",{type:"checkbox",checked:G,onInput:()=>K(!G)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$===null&&z("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),$!==null&&T.length===0&&z("div",{class:"muted pad",children:"暂无历史。"},void 0,!1,void 0,this),T.map((O,P)=>{let _=T[P+1],A=H.current.get(O.version),y=_?H.current.get(_.version):void 0,x=O.created&&A?Object.keys(A.data):O.fields;return z("div",{class:"hist-item static",children:[z("div",{class:"row1",onClick:()=>M(O,_),children:[z("span",{class:"when",title:new Date(O.at).toLocaleString(),children:x1(O.at)},void 0,!1,void 0,this),z(D1,{kind:O.kind},void 0,!1,void 0,this),P===0&&z("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this),z("div",{style:{flex:1}},void 0,!1,void 0,this),z(f,{name:q===O.version?"chevronDown":"chevron",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"row2",onClick:()=>M(O,_),children:[z("span",{class:"who",children:Y(O.node_id)},void 0,!1,void 0,this),z("span",{class:"what",children:U3(O,C)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q===O.version&&z("div",{class:"hist-fields",children:[!A&&z("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this),A&&x.map((v)=>{let E=y?y.data[v]:void 0,J0=A.data[v];return z("div",{class:"hist-field",children:[z("span",{class:"fname",children:C.get(v)??"(已删字段)"},void 0,!1,void 0,this),_&&z("span",{class:"old",children:E9(E)},void 0,!1,void 0,this),_&&z("span",{class:"arr",children:"→"},void 0,!1,void 0,this),z("span",{class:"new",children:E9(J0)},void 0,!1,void 0,this)]},v,!0,void 0,this)}),A&&P!==0&&z("button",{class:"btn btn-secondary hist-restore",onClick:()=>k(O),children:"恢复到此版本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},O.version,!0,void 0,this)})]},void 0,!0,void 0,this)}var k9="\x00__ungrouped__";function V4({props:Z,records:J,onCommitValue:Q,onCreate:$,onOpenRecord:X,onMove:q}){let W=Z.filter((O)=>O.type==="select"||O.type==="multi_select"),[G,K]=b(null),H=Z.find((O)=>O.id===G)??W.find((O)=>O.type==="select")??W[0]??null;if(!H)return z("div",{class:"view-placeholder",children:"看板视图需要一个「单选」或「多选」属性来分组。请在表格视图中添加一个单选列后再切换到看板。"},void 0,!1,void 0,this);let F=Z[0],Y=H.type==="multi_select",C=H.config?.options??[],L=(O)=>{let P=O.cells[H.id];if(Y){let A=(Array.isArray(P)?P:[]).map(String).filter((y)=>C.includes(y));return A.length?A:[k9]}let _=P==null?"":String(P);return _&&C.includes(_)?[_]:[k9]},B=new Map;for(let O of C)B.set(O,[]);B.set(k9,[]);for(let O of J)for(let P of L(O))B.get(P)?.push(O);let M=[...C];if((B.get(k9)?.length??0)>0)M.push(k9);let k=(O,P)=>{if(O.button!==0)return;if(O.target.closest("button,a,input"))return;let _=O.currentTarget.closest(".kcard");if(!_)return;let A=_.getBoundingClientRect();O.preventDefault();let y=O.clientX-A.left,x=O.clientY-A.top,v=null;m9(O,{onStart:()=>{v=_.cloneNode(!0),v.classList.add("dragging-ghost"),v.style.width=`${A.width}px`,document.body.appendChild(v),_.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(E)=>{k1(v,E.clientX-y,E.clientY-x),$9(),document.elementFromPoint(E.clientX,E.clientY)?.closest?.(".board-col")?.classList.add("drop-into")},onEnd:(E,J0)=>{if(v?.remove(),_.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),$9(),!J0){X(P.id);return}let l=document.elementFromPoint(E.clientX,E.clientY)?.closest?.(".board-col");if(!l)return;if(!Y){let B0=l.dataset.colKey,K0=String(P.cells[H.id]??""),I=B0===k9?null:B0;if(String(I??"")!==K0)Q(P,H,I)}let A0=document.elementFromPoint(E.clientX,E.clientY)?.closest?.(".kcard"),o=A0?.dataset.recId;if(o&&o!==P.id){let B0=A0.getBoundingClientRect();q(P.id,o,E.clientY<B0.top+B0.height/2?"before":"after")}}})};return z("div",{class:"board-wrap",children:[z("div",{class:"board-bar",children:[z("button",{class:"tbtn",onClick:(O)=>R0(O,(P)=>z(n,{children:[z(u0,{children:"按属性分组"},void 0,!1,void 0,this),W.map((_)=>z(t,{icon:n0[_.type],label:_.name,onClick:()=>{K(_.id),P()}},_.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[z(f,{name:"group",cls:"ico sm"},void 0,!1,void 0,this),"分组:",H.name]},void 0,!0,void 0,this),Y&&z("span",{class:"muted",style:{fontSize:12},children:"多选分组不支持拖拽改值"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"board",children:M.map((O)=>{let P=B.get(O)??[],_=O===k9;return z("div",{class:"board-col","data-col-key":O,children:[z("div",{class:"board-col-head",children:[_?z("span",{class:"muted",style:{fontWeight:600},children:"未分组"},void 0,!1,void 0,this):z(v9,{text:O},void 0,!1,void 0,this),z("span",{class:"board-count",children:P.length},void 0,!1,void 0,this),z("div",{class:"spacer"},void 0,!1,void 0,this),z("button",{class:"iconbtn sm",title:"新建记录",onClick:()=>$(_?{}:{[H.id]:O}),children:z(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("div",{class:"board-col-body",children:[P.map((A)=>z("div",{class:"kcard","data-rec-id":A.id,onPointerDown:(y)=>k(y,A),children:[z("div",{class:"kcard-title",children:B3(A,F)||z("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z.filter((y)=>y!==F&&y.id!==H.id&&!L3(A.cells[y.id])).slice(0,4).map((y)=>z("div",{class:"kcard-field",children:[z(f,{name:n0[y.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),z(u9,{prop:y,val:A.cells[y.id]},void 0,!1,void 0,this)]},y.id,!0,void 0,this))]},A.id,!0,void 0,this)),z("button",{class:"board-add",onClick:()=>$(_?{}:{[H.id]:O}),children:[z(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,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function B3(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function L3(Z){return Z==null||Z===""||Array.isArray(Z)&&Z.length===0}function QZ(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 $=new Date(J);return Number.isNaN($.getTime())?null:new Date($.getFullYear(),$.getMonth(),$.getDate())}function J9(Z){let J=Z.getFullYear(),Q=String(Z.getMonth()+1).padStart(2,"0"),$=String(Z.getDate()).padStart(2,"0");return`${J}-${Q}-${$}`}function p0(Z,J){return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()+J)}function h1(Z,J){return Z.getFullYear()===J.getFullYear()&&Z.getMonth()===J.getMonth()&&Z.getDate()===J.getDate()}function y3(Z,J){return new Date(Z,J,1)}function P3(Z,J){return new Date(Z,J+1,0)}function p9(Z,J){let Q=Date.UTC(Z.getFullYear(),Z.getMonth(),Z.getDate()),$=Date.UTC(J.getFullYear(),J.getMonth(),J.getDate());return Math.round(($-Q)/86400000)}function hZ(){let Z=new Date;return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate())}function w3(Z){let J=(Z.getDay()+6)%7;return p0(Z,-J)}function S4(Z,J){let Q=w3(y3(Z,J)),$=P3(Z,J),X=[],q=Q;while(q<=$||X.length===0||q.getDay()!==1){let W=[];for(let G=0;G<7;G++)W.push(p0(q,G));if(X.push(W),q=p0(q,7),X.length>=6)break}return X}var C3=["一","二","三","四","五","六","日"],m1=3;function I4({props:Z,records:J,onCommitValue:Q,onCreate:$,onOpenRecord:X}){let q=Z.filter((y)=>y.type==="date"),[W,G]=b(null),K=Z.find((y)=>y.id===W)??q[0]??null,H=hZ(),[F,Y]=b({y:H.getFullYear(),m:H.getMonth()}),C=H0(null);if(!K)return z("div",{class:"view-placeholder",children:"日历视图需要一个「日期」属性。请在表格视图中添加一个日期列后再切换到日历。"},void 0,!1,void 0,this);let L=Z[0],B=S4(F.y,F.m),M=J.map((y)=>({rec:y,date:QZ(y.cells[K.id])})).filter((y)=>y.date!=null),k=(y)=>M.filter((x)=>h1(x.date,y)),T=(y)=>{let x=F.m+y;Y({y:F.y+Math.floor(x/12),m:(x%12+12)%12})},O=()=>Y({y:H.getFullYear(),m:H.getMonth()}),P=()=>document.querySelectorAll(".cal-day.drop-into").forEach((y)=>y.classList.remove("drop-into")),_=(y,x)=>{if(y.button!==0)return;y.preventDefault(),y.stopPropagation(),C.current={id:x.id,pointerId:y.pointerId,startX:y.clientX,startY:y.clientY,active:!1,ghost:null};let v=(J0)=>{let l=C.current;if(!l||l.pointerId!==J0.pointerId)return;if(!l.active){if(Math.hypot(J0.clientX-l.startX,J0.clientY-l.startY)<4)return;l.active=!0,l.ghost=O3(mZ(x,L)),document.body.classList.add("table-dragging")}if(J0.preventDefault(),l.ghost)l.ghost.style.transform=`translate3d(${Math.round(J0.clientX+8)}px, ${Math.round(J0.clientY+8)}px, 0)`;P(),document.elementFromPoint(J0.clientX,J0.clientY)?.closest?.(".cal-day")?.classList.add("drop-into")},E=(J0)=>{let l=C.current;if(!l||l.pointerId!==J0.pointerId)return;if(removeEventListener("pointermove",v),removeEventListener("pointerup",E),removeEventListener("pointercancel",E),l.ghost?.remove(),document.body.classList.remove("table-dragging"),P(),C.current=null,!l.active){X(x.id);return}let o=document.elementFromPoint(J0.clientX,J0.clientY)?.closest?.(".cal-day")?.dataset.iso;if(o&&o!==String(x.cells[K.id]??""))Q(x,K,o)};addEventListener("pointermove",v,{passive:!1}),addEventListener("pointerup",E),addEventListener("pointercancel",E)},A=(y)=>R0(y,(x)=>z(n,{children:[z(u0,{children:"按日期属性"},void 0,!1,void 0,this),q.map((v)=>z(t,{icon:n0[v.type],label:v.name,onClick:()=>{G(v.id),x()}},v.id,!1,void 0,this))]},void 0,!0,void 0,this));return z("div",{class:"cal",children:[z("div",{class:"cal-nav",children:[z("button",{class:"iconbtn",title:"上个月",onClick:()=>T(-1),children:z(f,{name:"chevron",cls:"ico flip"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("div",{class:"cal-title",children:[F.y," 年 ",F.m+1," 月"]},void 0,!0,void 0,this),z("button",{class:"iconbtn",title:"下个月",onClick:()=>T(1),children:z(f,{name:"chevron",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"tbtn",onClick:O,children:"今天"},void 0,!1,void 0,this),z("div",{class:"spacer"},void 0,!1,void 0,this),q.length>1&&z("button",{class:"tbtn",onClick:A,children:[z(f,{name:"calendar",cls:"ico sm"},void 0,!1,void 0,this),K.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"cal-grid cal-head",children:C3.map((y)=>z("div",{class:"cal-wd",children:y},y,!1,void 0,this))},void 0,!1,void 0,this),z("div",{class:"cal-body",children:B.map((y,x)=>z("div",{class:"cal-grid cal-week",children:y.map((v)=>{let E=v.getMonth()!==F.m,J0=h1(v,H),l=k(v),A0=J9(v);return z("div",{class:"cal-day"+(E?" dim":"")+(J0?" today":""),"data-iso":A0,onClick:(o)=>{if(o.target.closest(".cal-ev,.cal-add,.cal-more"))return;$({[K.id]:A0})},children:[z("div",{class:"cal-daynum",children:[z("span",{children:v.getDate()},void 0,!1,void 0,this),z("button",{class:"cal-add",title:"新建记录",onClick:(o)=>{o.stopPropagation(),$({[K.id]:A0})},children:z(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("div",{class:"cal-events",children:[l.slice(0,m1).map(({rec:o})=>z("div",{class:"cal-ev",style:{["--c"]:b1(mZ(o,L)||o.id)},onPointerDown:(B0)=>_(B0,o),children:mZ(o,L)||"无标题"},o.id,!1,void 0,this)),l.length>m1&&z("button",{class:"cal-more",onClick:(o)=>{o.stopPropagation(),R0(o,(B0)=>z(n,{children:[z(u0,{children:[A0," · ",l.length," 条记录"]},void 0,!0,void 0,this),l.map(({rec:K0})=>z(t,{label:mZ(K0,L)||"无标题",onClick:()=>{B0(),X(K0.id)}},K0.id,!1,void 0,this))]},void 0,!0,void 0,this))},children:["+",l.length-m1," 更多"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},A0,!0,void 0,this)})},x,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function mZ(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function O3(Z){let J=document.createElement("div");return J.className="drag-ghost",J.textContent=Z||"移动记录",document.body.appendChild(J),J}var y9=200,zZ=36,$Z=44,d0=28,f4=3;function g4({props:Z,records:J,onCommitValue:Q,onOpenRecord:$}){let X=Z.filter((V)=>V.type==="date"),[q,W]=b(null),[G,K]=b(null),H=Z.find((V)=>V.id===q)??X[0]??null,F=G==="none"?null:Z.find((V)=>V.id===G)??X.find((V)=>V!==H)??null,Y=H0(null),C=H0(null);if(!H)return z("div",{class:"view-placeholder",children:"时间轴视图需要一个「日期」属性作为开始日期。请在表格视图中添加一个日期列后再切换到时间轴。"},void 0,!1,void 0,this);let L=Z[0],B=hZ(),M=J.map((V)=>{let g=QZ(V.cells[H.id]),j=F?QZ(V.cells[F.id]):null;return{rec:V,s:g,e:j&&g&&j<g?g:j}}),k=M.filter((V)=>V.s),T=B,O=B;if(k.length){T=k[0].s,O=k[0].s;for(let V of k){if(V.s<T)T=V.s;let g=V.e??V.s;if(g>O)O=g}}else T=p0(B,-10),O=p0(B,14);let P=p0(T,-f4),_=p0(O,f4),A=p9(P,_)+1,y=y9+A*d0,x=(V)=>y9+V*d0,v=p9(P,B),E=[];for(let V=0;V<A;V++)E.push(p0(P,V));let J0=(V,g,j,e,X0)=>{if(X0===0)return;if(e==="move"){if(g)Q(V,H,J9(p0(g,X0)));if(F&&j)Q(V,F,J9(p0(j,X0)))}else if(e==="l"&&g){let W0=p0(g,X0);Q(V,H,J9(j&&W0>j?j:W0))}else if(e==="r"&&F&&j){let W0=p0(j,X0);Q(V,F,J9(g&&W0<g?g:W0))}},l=(V,g)=>{let j=C.current;if(!j)return;j.style.left=V+"px",j.style.display="block";let e=j.firstElementChild;if(e)e.textContent=g},A0=()=>{if(C.current)C.current.style.display="none"},o=(V,g,j,e,X0,W0)=>{if(V.button!==0||!j)return;V.preventDefault(),V.stopPropagation();let{offsetLeft:P0,offsetWidth:k0}=W0,p=!1,s=X0==="move"?null:V.currentTarget;s?.classList.add("dragging"),Y.current={pointerId:V.pointerId,startX:V.clientX};let Y0=(h0)=>{let z0=Y.current;if(!z0||z0.pointerId!==h0.pointerId)return;let N=Math.round((h0.clientX-z0.startX)/d0);if(Math.abs(h0.clientX-z0.startX)>3)p=!0;let S,c;if(X0==="move"){let h=P0+N*d0;W0.style.left=h+"px",S=h,c=p0(j,N)}else if(X0==="l"){let h=P0+N*d0;W0.style.left=h+"px",W0.style.width=Math.max(d0,k0-N*d0)+"px",S=h,c=p0(j,N)}else{let h=Math.max(d0,k0+N*d0);W0.style.width=h+"px",S=P0+h,c=p0(j,Math.round(h/d0)-1)}l(S,J9(c))},U0=(h0)=>{let z0=Y.current;if(!z0||z0.pointerId!==h0.pointerId)return;removeEventListener("pointermove",Y0),removeEventListener("pointerup",U0),removeEventListener("pointercancel",U0),Y.current=null,s?.classList.remove("dragging"),A0();let N=Math.round((h0.clientX-z0.startX)/d0);if(!p){$(g.id);return}J0(g,j,e,X0,N)};addEventListener("pointermove",Y0,{passive:!1}),addEventListener("pointerup",U0),addEventListener("pointercancel",U0)},B0=(V,g)=>{if(Q(V,H,J9(g)),F)Q(V,F,J9(g))},K0=(V,g)=>{let j=V.currentTarget.closest(".tl-row");if(!j)return;let e=V.clientX-j.getBoundingClientRect().left;if(e<y9)return;let X0=Math.max(0,Math.min(A-1,Math.round((e-y9)/d0)));B0(g,p0(P,X0))};return z("div",{class:"tl",children:[z("div",{class:"tl-toolbar",children:z("button",{class:"tbtn",onClick:(V)=>R0(V,(g)=>z(n,{children:[z(u0,{children:"开始日期"},void 0,!1,void 0,this),X.map((j)=>z(t,{icon:n0[j.type],label:j.name,checked:j===H,onClick:()=>{W(j.id),g()}},j.id,!1,void 0,this)),z(f0,{},void 0,!1,void 0,this),z(u0,{children:"结束日期(可选)"},void 0,!1,void 0,this),z(t,{icon:"x",label:"无(里程碑)",checked:!F,onClick:()=>{K("none"),g()}},void 0,!1,void 0,this),X.map((j)=>z(t,{icon:n0[j.type],label:j.name,checked:j===F,onClick:()=>{K(j.id),g()}},j.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[z(f,{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),z("div",{class:"tl-scroll",children:z("div",{class:"tl-canvas",style:{width:y,height:$Z+M.length*zZ+8},children:[z("div",{class:"tl-axis",style:{height:$Z},children:[z("div",{class:"tl-corner",style:{width:y9},children:"记录"},void 0,!1,void 0,this),E.map((V,g)=>{let j=V.getDate()===1;return z("div",{class:"tl-tick"+(j?" mstart":"")+(p9(V,B)===0?" today":""),style:{left:x(g),width:d0},children:[j&&z("span",{class:"tl-month",children:[V.getMonth()+1,"月"]},void 0,!0,void 0,this),z("span",{class:"tl-dnum",children:V.getDate()},void 0,!1,void 0,this)]},g,!0,void 0,this)})]},void 0,!0,void 0,this),M.map(({rec:V,s:g,e:j},e)=>{let X0=g?p9(P,g):0,W0=g&&j?p9(g,j)+1:1;return z("div",{class:"tl-row",style:{top:$Z+e*zZ,height:zZ},children:[z("div",{class:"tl-rowlabel",style:{width:y9},children:b4(V,L)||z("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!g?z("div",{class:"tl-track-empty",style:{left:y9},onClick:(P0)=>K0(P0,V),title:"点击空白处排期",children:z("button",{class:"tl-schedule",style:{left:y9+8},onClick:(P0)=>{P0.stopPropagation(),B0(V,B)},children:"未排期 · 排到今天"},void 0,!1,void 0,this)},void 0,!1,void 0,this):j?z("div",{class:"tl-item",style:{left:x(X0),width:W0*d0},onPointerDown:(P0)=>o(P0,V,g,j,"move",P0.currentTarget),children:[z("span",{class:"tl-h l",onPointerDown:(P0)=>o(P0,V,g,j,"l",P0.currentTarget.parentElement)},void 0,!1,void 0,this),z("span",{class:"tl-label",children:b4(V,L)},void 0,!1,void 0,this),z("span",{class:"tl-h r",onPointerDown:(P0)=>o(P0,V,g,j,"r",P0.currentTarget.parentElement)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):z("div",{class:"tl-milestone",style:{left:x(X0)},title:J9(g),onPointerDown:(P0)=>o(P0,V,g,null,"move",P0.currentTarget)},void 0,!1,void 0,this)]},V.id,!0,void 0,this)}),v>=0&&v<A&&z("div",{class:"tl-today",style:{left:x(v)+d0/2,height:$Z+M.length*zZ}},void 0,!1,void 0,this),z("div",{class:"tl-guide",ref:C,style:{display:"none",height:$Z+M.length*zZ},children:z("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 b4(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}var _3=[["表格","list"],["看板","group"],["日历","calendar"],["时间轴","timeline"]];function u1(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 j4({db:Z,onError:J}){let[Q,$]=b([]),[X,q]=b([]),[W,G]=b(0),[K,H]=b(new Set),[F,Y]=b(null),[C,L]=b(null),B=H0(C);B.current=C;let[M,k]=b(null),[T,O]=b(null),P=(N)=>N.config?.width??180,_=H0(!1),A=(N)=>N().catch((S)=>J(String(S.message))),y=async()=>{let[N,S]=await Promise.all([u.listProperties(Z.id),u.listRecords(Z.id)]);$(N),q(S)};r(()=>{H(new Set),k(null),G(0),O(null),L(null),y().catch((N)=>J(String(N.message)))},[Z.id]),r(()=>{let N=(S)=>{if(!S.detail?.datasets?.some((h)=>h==="records"||h==="properties"))return;if(B.current)return;y().catch(()=>{})};return document.addEventListener(M9,N),()=>document.removeEventListener(M9,N)},[Z.id]);let x=(N,S,c)=>{L(null),q((h)=>h.map((q0)=>q0.id===N.id?{...q0,cells:{...q0.cells,[S.id]:c},values:{...q0.values,[S.name]:c}}:q0)),u.updateRecord(N.id,{[S.id]:c}).then((h)=>q((q0)=>q0.map((D)=>D.id===h.id?h:D))).catch((h)=>{J(String(h.message)),y().catch((q0)=>J(String(q0.message)))})},v=(N)=>A(async()=>{let S=await u.createRecord(Z.id,N);q((c)=>[...c,S])}),E=()=>v({}),J0=(N)=>A(async()=>{if(await Promise.all(N.map((S)=>u.deleteRecord(S))),q((S)=>S.filter((c)=>!N.includes(c.id))),H(new Set),M&&N.includes(M))k(null)}),l=(N)=>A(async()=>{let S=await u.createRecord(Z.id,N.cells);q((c)=>{let h=c.findIndex((q0)=>q0.id===N.id);return[...c.slice(0,h+1),S,...c.slice(h+1)]})}),A0=(N,S,c)=>{if(N===S||F)return;q((h)=>x4(h,N,S,c))},o=(N,S,c)=>{if(N===S||F)return;A0(N,S,c),u.moveRecord(N,S,c).catch((h)=>{J(String(h.message)),y().catch((q0)=>J(String(q0.message)))})},B0=(N,S,c)=>{if(N===S)return;$((h)=>{let q0=x4(h,N,S,c).map((d,S0)=>({...d,position:S0+1})),D=new Map(h.map((d)=>[d.id,d.position])),L0=q0.filter((d)=>D.get(d.id)!==d.position);if(L0.length)Promise.all(L0.map((d)=>u.updateProperty(d.id,{position:d.position}))).catch((d)=>{J(String(d.message)),y().catch((S0)=>J(String(S0.message)))});return q0})},K0=(N,S)=>{if(F||N.button!==0)return;let c=N.currentTarget.closest("tr");if(!c)return;N.preventDefault(),R1(N,{source:c,axis:"y",ghostCls:"row-ghost",ghostText:M3(c),targetSelector:"tr[data-row-id]",isSelf:(h)=>h.dataset.rowId===S.id,onDrop:(h,q0)=>o(S.id,h.dataset.rowId,q0)})},I=(N,S)=>{if(N.button!==0)return;let c=N.currentTarget.closest("th");if(!c)return;R1(N,{source:c,axis:"x",ghostCls:"col-ghost",ghostText:c.textContent?.trim()||"移动属性",targetSelector:"th[data-col-id]",isSelf:(h)=>h.dataset.colId===S.id,onActivate:()=>{_.current=!0},onDrop:(h,q0)=>B0(S.id,h.dataset.colId,q0),onFinish:(h)=>{if(h)setTimeout(()=>{_.current=!1},0)}})},V=(N,S,c)=>{if(N.button!==0)return;if(N.target.closest("input,button,a"))return;let h=N.shiftKey&&T?T.a:{r:S,c};O({a:h,b:{r:S,c}}),m9(N,{onStart:()=>document.body.classList.add("cell-selecting"),onMove:(q0)=>{let D=document.elementFromPoint(q0.clientX,q0.clientY)?.closest?.("td.cell-td");if(!D||D.dataset.r==null)return;O({a:h,b:{r:Number(D.dataset.r),c:Number(D.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},g=(N)=>N!=="checkbox"&&N!=="select"&&N!=="multi_select",j=(N,S,c)=>Math.max(S,Math.min(c,N)),e=(N,S)=>requestAnimationFrame(()=>{document.querySelector(`td.cell-td[data-r="${N}"][data-c="${S}"]`)?.scrollIntoView({block:"nearest",inline:"nearest"})}),X0=(N,S)=>{O({a:{r:N,c:S},b:{r:N,c:S}}),e(N,S)},W0=(N,S,c)=>{let h=U0[N],q0=Q[S];if(!h||!q0)return;if(X0(N,S),g(q0.type))L({rec:h.id,prop:q0.id,seed:c})},P0=(N,S,c)=>{let h=S+c;if(h<0||h>=Q.length){X0(N,S);return}W0(N,h)},k0=(N)=>A(async()=>{if(!T)return;let{r0:S,r1:c,c0:h,c1:q0}=u1(T),D=Q.slice(h,q0+1),L0=U0.slice(S,c+1),d=await Promise.all(L0.map((S0)=>{let T0={};for(let C0 of D)T0[C0.id]=N(C0);return u.updateRecord(S0.id,T0)}));q((S0)=>S0.map((T0)=>d.find((C0)=>C0.id===T0.id)??T0))}),p=async()=>{if(!T)return;let{r0:N,r1:S,c0:c,c1:h}=u1(T),q0=Q.slice(c,h+1),D=U0.slice(N,S+1).map((L0)=>q0.map((d)=>N4(d,L0.cells[d.id])).join("\t")).join(`
|
|
9
|
-
`);try{await navigator.clipboard.writeText(D)}catch{}},s=F?Q.find((N)=>N.id===F.id):void 0,Y0=(N)=>{let S=N==null||N===""?NaN:Number(N);return Number.isFinite(S)?S:Number.NEGATIVE_INFINITY},U0=F?[...X].sort((N,S)=>{let c=N.cells[F.id],h=S.cells[F.id],q0=s?.type==="number"?Y0(c)-Y0(h):String(c??"").localeCompare(String(h??""),"zh");return(F.desc?-1:1)*q0}):X,h0=X.find((N)=>N.id===M)??null,z0=T?u1(T):null;return r(()=>{let N=(S)=>{if(!T||C)return;let c=document.activeElement,h=(c?.tagName||"").toLowerCase();if(h==="input"||h==="textarea"||c?.isContentEditable)return;let q0=T.a.r===T.b.r&&T.a.c===T.b.c,{r:D,c:L0}=T.b,d={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(S.key in d){S.preventDefault();let[S0,T0]=d[S.key],C0={r:j(D+S0,0,U0.length-1),c:j(L0+T0,0,Q.length-1)};O(S.shiftKey?{a:T.a,b:C0}:{a:C0,b:C0}),e(C0.r,C0.c)}else if((S.metaKey||S.ctrlKey)&&S.key.toLowerCase()==="c")S.preventDefault(),p();else if(S.key==="Escape")O(null);else if(S.key==="Delete"||S.key==="Backspace")S.preventDefault(),k0(()=>null);else if(q0&&(S.key==="Enter"||S.key==="F2"))S.preventDefault(),W0(D,L0);else if(q0&&S.key.length===1&&!S.metaKey&&!S.ctrlKey&&!S.altKey&&!S.isComposing&&S.keyCode!==229){let S0=Q[L0];if(!S0||!g(S0.type)||S0.type==="date")return;if(S0.type==="number"&&!/[0-9.+-]/.test(S.key))return;S.preventDefault(),W0(D,L0,S.key)}};return addEventListener("keydown",N),()=>removeEventListener("keydown",N)},[T,C,X,Q,F]),z("div",{class:"db",onPointerDown:(N)=>{if(!N.target.closest("td.cell-td, .cellselbar"))O(null)},children:[z("div",{class:"db-head",children:[z("div",{class:"db-icon",children:Z.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),z("div",{children:z("div",{class:"db-title",contentEditable:!0,onBlur:(N)=>{let S=N.target.textContent?.trim()||Z.name;if(S!==Z.name)A(async()=>{await u.updateDatabase(Z.id,{name:S})})},children:Z.name},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"views",children:[_3.map(([N,S],c)=>z("div",{class:"view-tab"+(c===W?" active":""),onClick:()=>G(c),children:[z(f,{name:S},void 0,!1,void 0,this),N]},N,!0,void 0,this)),z("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:E,children:[z(f,{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&&z("div",{class:"toolbar",children:z("button",{class:"tbtn",onClick:(N)=>V3(N,Q,F,Y),children:[z(f,{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?z(V4,{props:Q,records:X,onCommitValue:x,onCreate:v,onOpenRecord:k,onMove:o},void 0,!1,void 0,this):W===2?z(I4,{props:Q,records:X,onCommitValue:x,onCreate:v,onOpenRecord:k},void 0,!1,void 0,this):W===3?z(g4,{props:Q,records:X,onCommitValue:x,onCreate:v,onOpenRecord:k},void 0,!1,void 0,this):z("div",{class:"tablewrap",children:[z("div",{class:"tablescroll",children:z("table",{class:"grid",children:[z("colgroup",{children:[z("col",{style:{width:38}},void 0,!1,void 0,this),z("col",{style:{width:26}},void 0,!1,void 0,this),Q.map((N)=>z("col",{"data-col-id":N.id,style:{width:P(N)}},N.id,!1,void 0,this)),z("col",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("thead",{children:z("tr",{children:[z("th",{class:"selcell",children:z("input",{type:"checkbox",checked:K.size>0&&K.size===X.length,onChange:(N)=>H(N.target.checked?new Set(X.map((S)=>S.id)):new Set)},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("th",{class:"gripcol"},void 0,!1,void 0,this),Q.map((N)=>z("th",{"data-col-id":N.id,children:[z("div",{class:"colhead",onPointerDown:(S)=>I(S,N),onClick:(S)=>{if(_.current){_.current=!1,S.preventDefault(),S.stopPropagation();return}k3(S,N,Z.id,y,Q)},children:[z("span",{class:"ti",children:z(f,{name:n0[N.type]??"text",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"nm",children:N.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z(N3,{colId:N.id,startWidth:P(N),onCommit:(S)=>{$((c)=>c.map((h)=>h.id===N.id?{...h,config:{...h.config??{},width:S}}:h)),u.setColumnWidth(N.id,S).catch((c)=>{J(String(c.message)),y().catch(()=>{})})}},void 0,!1,void 0,this)]},N.id,!0,void 0,this)),z("th",{class:"addcol",children:z("div",{class:"colhead",title:"新建属性",onClick:(N)=>T3(N,Z.id,Q,y),children:z(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),z("tbody",{children:U0.map((N,S)=>z("tr",{"data-row-id":N.id,class:K.has(N.id)?"sel":"",children:[z("td",{class:"selcell",children:z("input",{type:"checkbox",checked:K.has(N.id),onChange:()=>H((c)=>{let h=new Set(c);return h.has(N.id)?h.delete(N.id):h.add(N.id),h})},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("td",{class:"rowgrip",title:F?"清除排序后可拖拽移动":"拖拽移动","aria-disabled":F?"true":void 0,onPointerDown:(c)=>K0(c,N),children:z(f,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((c,h)=>{let q0=z0!=null&&S>=z0.r0&&S<=z0.r1&&h>=z0.c0&&h<=z0.c1,D;if(q0&&z0){let L0=[];if(S===z0.r0)L0.push("inset 0 2px 0 0 var(--accent)");if(S===z0.r1)L0.push("inset 0 -2px 0 0 var(--accent)");if(h===z0.c0)L0.push("inset 2px 0 0 0 var(--accent)");if(h===z0.c1)L0.push("inset -2px 0 0 0 var(--accent)");D=L0.join(",")||void 0}return z("td",{class:"cell-td"+(q0?" cellsel":""),"data-r":S,"data-c":h,style:D?{boxShadow:D}:void 0,onPointerDown:(L0)=>V(L0,S,h),children:z(A3,{rec:N,prop:c,first:h===0,editing:C?.rec===N.id&&C?.prop===c.id,seed:C?.rec===N.id&&C?.prop===c.id?C.seed:void 0,onEdit:()=>{X0(S,h),L({rec:N.id,prop:c.id})},onCommit:(L0)=>x(N,c,L0),onDone:(L0)=>{if(L(null),L0.reason!=="cancel"&&L0.changed)x(N,c,L0.value);if(L0.reason==="tab")P0(S,h,1);else if(L0.reason==="shifttab")P0(S,h,-1);else if(L0.reason==="enter")X0(j(S+1,0,U0.length-1),h)},onOpen:()=>k(N.id),onRowMenu:(L0)=>S3(L0,N,()=>k(N.id),()=>l(N),()=>J0([N.id]))},void 0,!1,void 0,this)},c.id,!1,void 0,this)}),z("td",{class:"filler"},void 0,!1,void 0,this)]},N.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),z("div",{class:"addrow",onClick:E,children:[z(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("div",{class:"gridfoot",children:[z("span",{children:["共 ",X.length," 条记录"]},void 0,!0,void 0,this),z("span",{children:[Q.length," 个属性"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),K.size>0&&z("div",{class:"selbar",children:[z("span",{class:"cnt",children:[K.size," 已选"]},void 0,!0,void 0,this),z("button",{onClick:()=>A(async()=>{for(let N of K)await l(X.find((S)=>S.id===N))}),children:[z(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),z("button",{class:"del",onClick:async()=>{if(await b0({title:"删除记录?",message:`确定删除选中的 ${K.size} 条记录?`,confirmLabel:"删除",danger:!0}))J0([...K])},children:[z(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除"]},void 0,!0,void 0,this),z("button",{onClick:()=>H(new Set),children:z(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z0&&(z0.r0!==z0.r1||z0.c0!==z0.c1)&&z("div",{class:"selbar cellselbar",children:[z("span",{class:"cnt",children:[(z0.r1-z0.r0+1)*(z0.c1-z0.c0+1)," 个单元格"]},void 0,!0,void 0,this),z("button",{onClick:p,children:[z(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),z("button",{onClick:()=>k0((N)=>U0[z0.r0].cells[N.id]??null),children:[z(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"填充"]},void 0,!0,void 0,this),z("button",{class:"del",onClick:()=>k0(()=>null),children:[z(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清空"]},void 0,!0,void 0,this),z("button",{onClick:()=>O(null),children:z(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),h0&&z(I3,{db:Z,props:Q,rec:h0,onClose:()=>k(null),onCommit:(N,S)=>x(h0,N,S),onDelete:()=>J0([h0.id]),onDuplicate:()=>l(h0),onReverted:()=>y().catch((N)=>J(String(N.message)))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function D4({prop:Z,val:J,seed:Q,captureTab:$,onDone:X}){let q=Array.isArray(J)?J.join(", "):J==null?"":String(J),W=H0(null),G=H0(!1);r(()=>{let H=W.current;H.value=Q??q,H.focus();try{H.setSelectionRange(H.value.length,H.value.length)}catch{}},[]);let K=(H)=>{if(G.current)return;if(G.current=!0,H==="cancel")return X({reason:"cancel"});let F=W.current.value;X({reason:H,changed:F!==q,value:M4(Z.type,F)})};return z("input",{ref:W,class:"inlineedit",type:Z.type==="number"?"number":Z.type==="date"?"date":"text",onBlur:()=>K("blur"),onKeyDown:(H)=>{if(H.isComposing||H.keyCode===229)return;if(H.key==="Enter")H.preventDefault(),K("enter");else if(H.key==="Escape")H.preventDefault(),H.stopPropagation(),K("cancel");else if(H.key==="Tab"&&$)H.preventDefault(),K(H.shiftKey?"shifttab":"tab")}},void 0,!1,void 0,this)}function A3({rec:Z,prop:J,first:Q,editing:$,seed:X,onEdit:q,onCommit:W,onDone:G,onOpen:K,onRowMenu:H}){let F=Z.cells[J.id];if(J.type==="checkbox")return z("div",{class:"cell center",children:z("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 Y=(B)=>{if(J.type==="select"||J.type==="multi_select")h4(B,J,F,W);else q()},C=z(u9,{prop:J,val:F},void 0,!1,void 0,this);return z(n,{children:[Q?z("div",{class:"cell",onDblClick:Y,onContextMenu:(B)=>{B.preventDefault(),H(B)},children:z("div",{class:"firstcell",children:[C,z("div",{class:"rowactions",children:z("button",{class:"rowopen",title:"打开",onClick:(B)=>{B.stopPropagation(),K()},children:z(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):z("div",{class:"cell",onDblClick:Y,children:C},void 0,!1,void 0,this),$&&J.type!=="select"&&J.type!=="multi_select"&&z("div",{class:"celledit",children:z(D4,{prop:J,val:F,seed:X,captureTab:!0,onDone:G},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function x4(Z,J,Q,$){let X=[...Z],q=X.findIndex((K)=>K.id===J);if(q<0)return Z;let W=X.splice(q,1)[0],G=X.findIndex((K)=>K.id===Q);if(G<0)return Z;if($==="after")G+=1;return X.splice(G,0,W),X}function M3(Z){return Array.from(Z.querySelectorAll("td")).map((Q)=>(Q.textContent??"").trim()).filter(Boolean).join(" ")||"移动记录"}function N3({colId:Z,startWidth:J,onCommit:Q}){return z("div",{class:"col-resizer",onPointerDown:(X)=>{X.preventDefault(),X.stopPropagation(),xZ(X,{col:document.querySelector(`col[data-col-id="${CSS.escape(Z)}"]`),startWidth:J,min:80,onDone:Q})}},void 0,!1,void 0,this)}function h4(Z,J,Q,$){Z.stopPropagation();let X=J.type==="multi_select",q=J.config?.options??[];R0(Z,(W)=>z(v3,{multi:X,options:q,value:Q,onPick:(G)=>{if($(G),!X)W()}},void 0,!1,void 0,this))}function v3({multi:Z,options:J,value:Q,onPick:$}){let[X,q]=b(Q),W=(K)=>Z?Array.isArray(X)?X.includes(K):!1:X===K,G=(K)=>{if(Z){let H=new Set(Array.isArray(X)?X:[]);H.has(K)?H.delete(K):H.add(K);let F=[...H];q(F),$(F)}else q(K),$(K)};return z(n,{children:[z(u0,{children:Z?"多选 — 点选切换":"单选"},void 0,!1,void 0,this),J.map((K)=>z("button",{class:"item",onClick:()=>G(K),children:[z(v9,{text:K},void 0,!1,void 0,this),W(K)&&z("span",{class:"chk",children:z(f,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},K,!0,void 0,this)),Z&&Array.isArray(X)&&X.length>0&&z(n,{children:[z(f0,{},void 0,!1,void 0,this),z(t,{icon:"x",label:"清空",onClick:()=>{q([]),$([])}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function k3(Z,J,Q,$,X){Z.stopPropagation(),R0(Z,(q)=>z(R3,{prop:J,dbId:Q,reload:$,close:q,allProps:X},void 0,!1,void 0,this),{minWidth:252})}function R3({prop:Z,dbId:J,reload:Q,close:$,allProps:X}){let[q,W]=b(Z.name),[G,K]=b(Z.type),[H,F]=b(Z.config?.options??[]),Y=(B)=>u.updateProperty(Z.id,B).then(Q).catch((M)=>Z0(`更新属性失败:${M.message}`)),C=(B)=>{K(B);let M=H;if((B==="select"||B==="multi_select")&&M.length===0)M=["选项 1","选项 2"],F(M);Y({type:B,...B==="select"||B==="multi_select"?{config:{options:M}}:{}})},L=(B)=>{F(B),Y({config:{options:B}})};return z(n,{children:[z("input",{class:"field",value:q,onInput:(B)=>W(B.target.value),onBlur:()=>q&&q!==Z.name&&Y({name:q}),onKeyDown:(B)=>{if(B.key==="Enter")B.target.blur(),$()}},void 0,!1,void 0,this),z(u0,{children:"属性类型"},void 0,!1,void 0,this),z("div",{class:"typegrid",children:Object.keys(h9).map((B)=>z("button",{class:"item"+(B===G?" sel":""),onClick:()=>C(B),children:[z("span",{class:"lico",children:z(f,{name:n0[B],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"d",children:h9[B].t},void 0,!1,void 0,this)]},B,!0,void 0,this))},void 0,!1,void 0,this),(G==="select"||G==="multi_select")&&z(n,{children:[z(f0,{},void 0,!1,void 0,this),z(u0,{children:"选项"},void 0,!1,void 0,this),H.map((B,M)=>z("div",{class:"optrow",children:[z(v9,{text:B},void 0,!1,void 0,this),z("button",{class:"x",onClick:()=>L(H.filter((k,T)=>T!==M)),children:z(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},B+M,!0,void 0,this)),z(t,{icon:"plus",label:"添加选项",onClick:()=>L([...H,"选项 "+(H.length+1)])},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{$(),u.createProperty({db:J,name:m4("新属性",X),type:"text"}).then(Q).catch((B)=>Z0(`新建属性失败:${B.message}`))}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除属性",danger:!0,onClick:async()=>{if($(),await b0({title:"删除属性?",message:`「${Z.name}」及其所有单元格数据将被移除。`,confirmLabel:"删除",danger:!0}))u.deleteProperty(Z.id).then(Q)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function m4(Z,J){let Q=new Set(J.map(($)=>$.name.toLowerCase()));if(!Q.has(Z.toLowerCase()))return Z;for(let $=2;;$++){let X=`${Z} ${$}`;if(!Q.has(X.toLowerCase()))return X}}function T3(Z,J,Q,$){Z.stopPropagation(),R0(Z,(X)=>z(n,{children:[z(u0,{children:"新建属性 · 选择类型"},void 0,!1,void 0,this),z("div",{class:"typegrid",children:Object.keys(h9).map((q)=>z("button",{class:"item",onClick:()=>{X();let W=q==="select"||q==="multi_select"?{options:["选项 1","选项 2"]}:void 0;u.createProperty({db:J,name:m4(h9[q].t,Q),type:q,config:W}).then($).catch((G)=>Z0(`新建属性失败:${G.message}`))},children:[z("span",{class:"lico",children:z(f,{name:n0[q],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"d",children:h9[q].t},void 0,!1,void 0,this)]},q,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function V3(Z,J,Q,$){R0(Z,(X)=>z(n,{children:[z(u0,{children:"排序依据"},void 0,!1,void 0,this),J.map((q)=>z(t,{icon:n0[q.type],label:q.name,onClick:()=>{$({id:q.id,desc:Q?.id===q.id?!Q.desc:!1}),X()}},q.id,!1,void 0,this)),Q&&z(n,{children:[z(f0,{},void 0,!1,void 0,this),z(t,{icon:"x",label:"清除排序",onClick:()=>{$(null),X()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function S3(Z,J,Q,$,X){Z.stopPropagation(),R0(Z,(q)=>z(n,{children:[z(t,{icon:"cornerUpRight",label:"打开记录",onClick:()=>{q(),Q()}},void 0,!1,void 0,this),z(t,{icon:"copy",label:"复制记录",onClick:()=>{q(),$()}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(q(),await b0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))X()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function I3({db:Z,props:J,rec:Q,onClose:$,onCommit:X,onDelete:q,onDuplicate:W,onReverted:G}){let[K,H]=b(null),[F,Y]=b(!1),{open:C,close:L}=N9($),B=J[0];return z(n,{children:[z("div",{class:"scrim"+(C?" open":""),onClick:L},void 0,!1,void 0,this),z("div",{class:"peek"+(C?" open":""),children:[z("div",{class:"peek-head",children:[z("button",{class:"iconbtn",onClick:L,children:z(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&z("button",{class:"iconbtn",title:"返回字段",onClick:()=>Y(!1),children:z(f,{name:"arrowLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("div",{style:{flex:1}},void 0,!1,void 0,this),z("button",{class:"iconbtn",title:"更多",onClick:(M)=>R0(M,(k)=>z(n,{children:[z(t,{icon:"history",label:"版本历史",checked:F,onClick:()=>{k(),Y(!F)}},void 0,!1,void 0,this),z(t,{icon:"copy",label:"复制记录",onClick:()=>{k(),W()}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(k(),await b0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))q()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),children:z(f,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"peek-body",children:F?z(T4,{rec:Q,props:J,onReverted:G},void 0,!1,void 0,this):z(n,{children:[z("h2",{contentEditable:!0,onBlur:(M)=>B&&X(B,M.target.textContent??""),children:B?String(Q.cells[B.id]??"无标题"):"无标题"},void 0,!1,void 0,this),J.map((M)=>z("div",{class:"proprow",children:[z("div",{class:"k",children:[z(f,{name:n0[M.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),z("span",{children:M.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z(f3,{prop:M,rec:Q,editing:K===M.id,onEdit:()=>H(M.id),onCommit:(k)=>{X(M,k),H(null)},onCloseEdit:()=>H(null)},void 0,!1,void 0,this)]},M.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 f3({prop:Z,rec:J,editing:Q,onEdit:$,onCommit:X,onCloseEdit:q}){let W=J.cells[Z.id];if(Z.type==="checkbox")return z("div",{class:"v",children:z("input",{type:"checkbox",checked:!!W,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>X(!W)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Z.type==="select"||Z.type==="multi_select")return z("div",{class:"v",onClick:(G)=>h4(G,Z,W,X),children:z(u9,{prop:Z,val:W},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Q)return z("div",{class:"v",children:z(D4,{prop:Z,val:W,onDone:(G)=>{if(G.reason!=="cancel"&&G.changed)X(G.value);else q()}},void 0,!1,void 0,this)},void 0,!1,void 0,this);return z("div",{class:"v",onClick:$,children:z(u9,{prop:Z,val:W},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var o6=vJ(r6(),1);var rZ=o6.default;function uz(Z){for(var J=1;J<arguments.length;J++){var Q=arguments[J];for(var $ in Q)if(Object.prototype.hasOwnProperty.call(Q,$))Z[$]=Q[$]}return Z}function e1(Z,J){return Array(J+1).join(Z)}function e6(Z){return Z.replace(/^\n*/,"")}function Z7(Z){var J=Z.length;while(J>0&&Z[J-1]===`
|
|
10
|
-
|
|
1
|
+
var t3=Object.create;var{getPrototypeOf:s3,defineProperty:zJ,getOwnPropertyNames:e3}=Object;var Z2=Object.prototype.hasOwnProperty;function J2(Z){return this[Z]}var $2,Q2,X2=(Z,J,Q)=>{var X=Z!=null&&typeof Z==="object";if(X){var z=J?$2??=new WeakMap:Q2??=new WeakMap,W=z.get(Z);if(W)return W}Q=Z!=null?t3(s3(Z)):{};let G=J||!Z||!Z.__esModule?zJ(Q,"default",{value:Z,enumerable:!0}):Q;for(let q of e3(Z))if(!Z2.call(G,q))zJ(G,q,{get:J2.bind(Z,q),enumerable:!0});if(X)z.set(Z,G);return G};var y0=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var z7=y0(($Y,X7)=>{function c5(Z){if(Z instanceof Map)Z.clear=Z.delete=Z.set=function(){throw Error("map is read-only")};else if(Z instanceof Set)Z.add=Z.clear=Z.delete=function(){throw Error("set is read-only")};return Object.freeze(Z),Object.getOwnPropertyNames(Z).forEach((J)=>{let Q=Z[J],X=typeof Q;if((X==="object"||X==="function")&&!Object.isFrozen(Q))c5(Q)}),Z}class t6{constructor(Z){if(Z.data===void 0)Z.data={};this.data=Z.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function d5(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function f9(Z,...J){let Q=Object.create(null);for(let X in Z)Q[X]=Z[X];return J.forEach(function(X){for(let z in X)Q[z]=X[z]}),Q}var vQ="</span>",D5=(Z)=>{return!!Z.scope},TQ=(Z,{prefix:J})=>{if(Z.startsWith("language:"))return Z.replace("language:","language-");if(Z.includes(".")){let Q=Z.split(".");return[`${J}${Q.shift()}`,...Q.map((X,z)=>`${X}${"_".repeat(z+1)}`)].join(" ")}return`${J}${Z}`};class i5{constructor(Z,J){this.buffer="",this.classPrefix=J.classPrefix,Z.walk(this)}addText(Z){this.buffer+=d5(Z)}openNode(Z){if(!D5(Z))return;let J=TQ(Z.scope,{prefix:this.classPrefix});this.span(J)}closeNode(Z){if(!D5(Z))return;this.buffer+=vQ}value(){return this.buffer}span(Z){this.buffer+=`<span class="${Z}">`}}var x5=(Z={})=>{let J={children:[]};return Object.assign(J,Z),J};class s6{constructor(){this.rootNode=x5(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(Z){this.top.children.push(Z)}openNode(Z){let J=x5({scope:Z});this.add(J),this.stack.push(J)}closeNode(){if(this.stack.length>1)return this.stack.pop();return}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(Z){return this.constructor._walk(Z,this.rootNode)}static _walk(Z,J){if(typeof J==="string")Z.addText(J);else if(J.children)Z.openNode(J),J.children.forEach((Q)=>this._walk(Z,Q)),Z.closeNode(J);return Z}static _collapse(Z){if(typeof Z==="string")return;if(!Z.children)return;if(Z.children.every((J)=>typeof J==="string"))Z.children=[Z.children.join("")];else Z.children.forEach((J)=>{s6._collapse(J)})}}class a5 extends s6{constructor(Z){super();this.options=Z}addText(Z){if(Z==="")return;this.add(Z)}startScope(Z){this.openNode(Z)}endScope(){this.closeNode()}__addSublanguage(Z,J){let Q=Z.root;if(J)Q.scope=`language:${J}`;this.add(Q)}toHTML(){return new i5(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function mZ(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function n5(Z){return r9("(?=",Z,")")}function kQ(Z){return r9("(?:",Z,")*")}function RQ(Z){return r9("(?:",Z,")?")}function r9(...Z){return Z.map((Q)=>mZ(Q)).join("")}function IQ(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function e6(...Z){return"("+(IQ(Z).capture?"":"?:")+Z.map((X)=>mZ(X)).join("|")+")"}function l5(Z){return new RegExp(Z.toString()+"|").exec("").length-1}function SQ(Z,J){let Q=Z&&Z.exec(J);return Q&&Q.index===0}var VQ=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Z1(Z,{joinWith:J}){let Q=0;return Z.map((X)=>{Q+=1;let z=Q,W=mZ(X),G="";while(W.length>0){let q=VQ.exec(W);if(!q){G+=W;break}if(G+=W.substring(0,q.index),W=W.substring(q.index+q[0].length),q[0][0]==="\\"&&q[1])G+="\\"+String(Number(q[1])+z);else if(G+=q[0],q[0]==="(")Q++}return G}).map((X)=>`(${X})`).join(J)}var fQ=/\b\B/,r5="[a-zA-Z]\\w*",J1="[a-zA-Z_]\\w*",o5="\\b\\d+(\\.\\d+)?",t5="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",s5="\\b(0b[01]+)",gQ="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",bQ=(Z={})=>{let J=/^#![ ]*\//;if(Z.binary)Z.begin=r9(J,/.*\b/,Z.binary,/\b.*/);return f9({scope:"meta",begin:J,end:/$/,relevance:0,"on:begin":(Q,X)=>{if(Q.index!==0)X.ignoreMatch()}},Z)},uZ={begin:"\\\\[\\s\\S]",relevance:0},jQ={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[uZ]},hQ={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[uZ]},DQ={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},b8=function(Z,J,Q={}){let X=f9({scope:"comment",begin:Z,end:J,contains:[]},Q);X.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let z=e6("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return X.contains.push({begin:r9(/[ ]+/,"(",z,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),X},xQ=b8("//","$"),mQ=b8("/\\*","\\*/"),uQ=b8("#","$"),EQ={scope:"number",begin:o5,relevance:0},pQ={scope:"number",begin:t5,relevance:0},cQ={scope:"number",begin:s5,relevance:0},dQ={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[uZ,{begin:/\[/,end:/\]/,relevance:0,contains:[uZ]}]},iQ={scope:"title",begin:r5,relevance:0},aQ={scope:"title",begin:J1,relevance:0},nQ={begin:"\\.\\s*"+J1,relevance:0},lQ=function(Z){return Object.assign(Z,{"on:begin":(J,Q)=>{Q.data._beginMatch=J[1]},"on:end":(J,Q)=>{if(Q.data._beginMatch!==J[1])Q.ignoreMatch()}})},f8=Object.freeze({__proto__:null,APOS_STRING_MODE:jQ,BACKSLASH_ESCAPE:uZ,BINARY_NUMBER_MODE:cQ,BINARY_NUMBER_RE:s5,COMMENT:b8,C_BLOCK_COMMENT_MODE:mQ,C_LINE_COMMENT_MODE:xQ,C_NUMBER_MODE:pQ,C_NUMBER_RE:t5,END_SAME_AS_BEGIN:lQ,HASH_COMMENT_MODE:uQ,IDENT_RE:r5,MATCH_NOTHING_RE:fQ,METHOD_GUARD:nQ,NUMBER_MODE:EQ,NUMBER_RE:o5,PHRASAL_WORDS_MODE:DQ,QUOTE_STRING_MODE:hQ,REGEXP_MODE:dQ,RE_STARTERS_RE:gQ,SHEBANG:bQ,TITLE_MODE:iQ,UNDERSCORE_IDENT_RE:J1,UNDERSCORE_TITLE_MODE:aQ});function rQ(Z,J){if(Z.input[Z.index-1]===".")J.ignoreMatch()}function oQ(Z,J){if(Z.className!==void 0)Z.scope=Z.className,delete Z.className}function tQ(Z,J){if(!J)return;if(!Z.beginKeywords)return;if(Z.begin="\\b("+Z.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Z.__beforeBegin=rQ,Z.keywords=Z.keywords||Z.beginKeywords,delete Z.beginKeywords,Z.relevance===void 0)Z.relevance=0}function sQ(Z,J){if(!Array.isArray(Z.illegal))return;Z.illegal=e6(...Z.illegal)}function eQ(Z,J){if(!Z.match)return;if(Z.begin||Z.end)throw Error("begin & end are not supported with match");Z.begin=Z.match,delete Z.match}function ZX(Z,J){if(Z.relevance===void 0)Z.relevance=1}var JX=(Z,J)=>{if(!Z.beforeMatch)return;if(Z.starts)throw Error("beforeMatch cannot be used with starts");let Q=Object.assign({},Z);Object.keys(Z).forEach((X)=>{delete Z[X]}),Z.keywords=Q.keywords,Z.begin=r9(Q.beforeMatch,n5(Q.begin)),Z.starts={relevance:0,contains:[Object.assign(Q,{endsParent:!0})]},Z.relevance=0,delete Q.beforeMatch},$X=["of","and","for","in","not","or","if","then","parent","list","value"],QX="keyword";function e5(Z,J,Q=QX){let X=Object.create(null);if(typeof Z==="string")z(Q,Z.split(" "));else if(Array.isArray(Z))z(Q,Z);else Object.keys(Z).forEach(function(W){Object.assign(X,e5(Z[W],J,W))});return X;function z(W,G){if(J)G=G.map((q)=>q.toLowerCase());G.forEach(function(q){let H=q.split("|");X[H[0]]=[W,XX(H[0],H[1])]})}}function XX(Z,J){if(J)return Number(J);return zX(Z)?0:1}function zX(Z){return $X.includes(Z.toLowerCase())}var m5={},l9=(Z)=>{console.error(Z)},u5=(Z,...J)=>{console.log(`WARN: ${Z}`,...J)},PZ=(Z,J)=>{if(m5[`${Z}/${J}`])return;console.log(`Deprecated as of ${Z}. ${J}`),m5[`${Z}/${J}`]=!0},g8=Error();function Z7(Z,J,{key:Q}){let X=0,z=Z[Q],W={},G={};for(let q=1;q<=J.length;q++)G[q+X]=z[q],W[q+X]=!0,X+=l5(J[q-1]);Z[Q]=G,Z[Q]._emit=W,Z[Q]._multi=!0}function WX(Z){if(!Array.isArray(Z.begin))return;if(Z.skip||Z.excludeBegin||Z.returnBegin)throw l9("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),g8;if(typeof Z.beginScope!=="object"||Z.beginScope===null)throw l9("beginScope must be object"),g8;Z7(Z,Z.begin,{key:"beginScope"}),Z.begin=Z1(Z.begin,{joinWith:""})}function GX(Z){if(!Array.isArray(Z.end))return;if(Z.skip||Z.excludeEnd||Z.returnEnd)throw l9("skip, excludeEnd, returnEnd not compatible with endScope: {}"),g8;if(typeof Z.endScope!=="object"||Z.endScope===null)throw l9("endScope must be object"),g8;Z7(Z,Z.end,{key:"endScope"}),Z.end=Z1(Z.end,{joinWith:""})}function qX(Z){if(Z.scope&&typeof Z.scope==="object"&&Z.scope!==null)Z.beginScope=Z.scope,delete Z.scope}function HX(Z){if(qX(Z),typeof Z.beginScope==="string")Z.beginScope={_wrap:Z.beginScope};if(typeof Z.endScope==="string")Z.endScope={_wrap:Z.endScope};WX(Z),GX(Z)}function YX(Z){function J(G,q){return new RegExp(mZ(G),"m"+(Z.case_insensitive?"i":"")+(Z.unicodeRegex?"u":"")+(q?"g":""))}class Q{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(G,q){q.position=this.position++,this.matchIndexes[this.matchAt]=q,this.regexes.push([q,G]),this.matchAt+=l5(G)+1}compile(){if(this.regexes.length===0)this.exec=()=>null;let G=this.regexes.map((q)=>q[1]);this.matcherRe=J(Z1(G,{joinWith:"|"}),!0),this.lastIndex=0}exec(G){this.matcherRe.lastIndex=this.lastIndex;let q=this.matcherRe.exec(G);if(!q)return null;let H=q.findIndex((F,K)=>K>0&&F!==void 0),Y=this.matchIndexes[H];return q.splice(0,H),Object.assign(q,Y)}}class X{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(G){if(this.multiRegexes[G])return this.multiRegexes[G];let q=new Q;return this.rules.slice(G).forEach(([H,Y])=>q.addRule(H,Y)),q.compile(),this.multiRegexes[G]=q,q}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(G,q){if(this.rules.push([G,q]),q.type==="begin")this.count++}exec(G){let q=this.getMatcher(this.regexIndex);q.lastIndex=this.lastIndex;let H=q.exec(G);if(this.resumingScanAtSamePosition())if(H&&H.index===this.lastIndex);else{let Y=this.getMatcher(0);Y.lastIndex=this.lastIndex+1,H=Y.exec(G)}if(H){if(this.regexIndex+=H.position+1,this.regexIndex===this.count)this.considerAll()}return H}}function z(G){let q=new X;if(G.contains.forEach((H)=>q.addRule(H.begin,{rule:H,type:"begin"})),G.terminatorEnd)q.addRule(G.terminatorEnd,{type:"end"});if(G.illegal)q.addRule(G.illegal,{type:"illegal"});return q}function W(G,q){let H=G;if(G.isCompiled)return H;[oQ,eQ,HX,JX].forEach((F)=>F(G,q)),Z.compilerExtensions.forEach((F)=>F(G,q)),G.__beforeBegin=null,[tQ,sQ,ZX].forEach((F)=>F(G,q)),G.isCompiled=!0;let Y=null;if(typeof G.keywords==="object"&&G.keywords.$pattern)G.keywords=Object.assign({},G.keywords),Y=G.keywords.$pattern,delete G.keywords.$pattern;if(Y=Y||/\w+/,G.keywords)G.keywords=e5(G.keywords,Z.case_insensitive);if(H.keywordPatternRe=J(Y,!0),q){if(!G.begin)G.begin=/\B|\b/;if(H.beginRe=J(H.begin),!G.end&&!G.endsWithParent)G.end=/\B|\b/;if(G.end)H.endRe=J(H.end);if(H.terminatorEnd=mZ(H.end)||"",G.endsWithParent&&q.terminatorEnd)H.terminatorEnd+=(G.end?"|":"")+q.terminatorEnd}if(G.illegal)H.illegalRe=J(G.illegal);if(!G.contains)G.contains=[];if(G.contains=[].concat(...G.contains.map(function(F){return KX(F==="self"?G:F)})),G.contains.forEach(function(F){W(F,H)}),G.starts)W(G.starts,q);return H.matcher=z(H),H}if(!Z.compilerExtensions)Z.compilerExtensions=[];if(Z.contains&&Z.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return Z.classNameAliases=f9(Z.classNameAliases||{}),W(Z)}function J7(Z){if(!Z)return!1;return Z.endsWithParent||J7(Z.starts)}function KX(Z){if(Z.variants&&!Z.cachedVariants)Z.cachedVariants=Z.variants.map(function(J){return f9(Z,{variants:null},J)});if(Z.cachedVariants)return Z.cachedVariants;if(J7(Z))return f9(Z,{starts:Z.starts?f9(Z.starts):null});if(Object.isFrozen(Z))return f9(Z);return Z}var FX="11.11.1";class $7 extends Error{constructor(Z,J){super(Z);this.name="HTMLInjectionError",this.html=J}}var o6=d5,E5=f9,p5=Symbol("nomatch"),UX=7,Q7=function(Z){let J=Object.create(null),Q=Object.create(null),X=[],z=!0,W="Could not find the language '{}', did you forget to load/include a language module?",G={disableAutodetect:!0,name:"Plain text",contains:[]},q={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:a5};function H(x){return q.noHighlightRe.test(x)}function Y(x){let b=x.className+" ";b+=x.parentNode?x.parentNode.className:"";let u=q.languageDetectRe.exec(b);if(u){let V=w(u[1]);if(!V)u5(W.replace("{}",u[1])),u5("Falling back to no-highlight mode for this block.",x);return V?u[1]:"no-highlight"}return b.split(/\s+/).find((V)=>H(V)||w(V))}function F(x,b,u){let V="",i="";if(typeof b==="object")V=x,u=b.ignoreIllegals,i=b.language;else PZ("10.7.0","highlight(lang, code, ...args) has been deprecated."),PZ("10.7.0",`Please use highlight(code, options) instead.
|
|
2
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),i=x,V=b;if(u===void 0)u=!0;let Z0={code:V,language:i};$0("before:highlight",Z0);let G0=Z0.result?Z0.result:K(Z0.language,Z0.code,u);return G0.code=Z0.code,$0("after:highlight",G0),G0}function K(x,b,u,V){let i=Object.create(null);function Z0(l,t){return l.keywords[t]}function G0(){if(!K0.keywords){A0.addText(j);return}let l=0;K0.keywordPatternRe.lastIndex=0;let t=K0.keywordPatternRe.exec(j),X0="";while(t){X0+=j.substring(l,t.index);let U0=i0.case_insensitive?t[0].toLowerCase():t[0],k0=Z0(K0,U0);if(k0){let[g0,X6]=k0;if(A0.addText(X0),X0="",i[U0]=(i[U0]||0)+1,i[U0]<=UX)I+=X6;if(g0.startsWith("_"))X0+=t[0];else{let X8=i0.classNameAliases[g0]||g0;P0(t[0],X8)}}else X0+=t[0];l=K0.keywordPatternRe.lastIndex,t=K0.keywordPatternRe.exec(j)}X0+=j.substring(l),A0.addText(X0)}function J0(){if(j==="")return;let l=null;if(typeof K0.subLanguage==="string"){if(!J[K0.subLanguage]){A0.addText(j);return}l=K(K0.subLanguage,j,!0,q0[K0.subLanguage]),q0[K0.subLanguage]=l._top}else l=U(j,K0.subLanguage.length?K0.subLanguage:null);if(K0.relevance>0)I+=l.relevance;A0.__addSublanguage(l._emitter,l.language)}function e(){if(K0.subLanguage!=null)J0();else G0();j=""}function P0(l,t){if(l==="")return;A0.startScope(t),A0.addText(l),A0.endScope()}function l0(l,t){let X0=1,U0=t.length-1;while(X0<=U0){if(!l._emit[X0]){X0++;continue}let k0=i0.classNameAliases[l[X0]]||l[X0],g0=t[X0];if(k0)P0(g0,k0);else j=g0,G0(),j="";X0++}}function c0(l,t){if(l.scope&&typeof l.scope==="string")A0.openNode(i0.classNameAliases[l.scope]||l.scope);if(l.beginScope){if(l.beginScope._wrap)P0(j,i0.classNameAliases[l.beginScope._wrap]||l.beginScope._wrap),j="";else if(l.beginScope._multi)l0(l.beginScope,t),j=""}return K0=Object.create(l,{parent:{value:K0}}),K0}function d0(l,t,X0){let U0=SQ(l.endRe,X0);if(U0){if(l["on:end"]){let k0=new t6(l);if(l["on:end"](t,k0),k0.isMatchIgnored)U0=!1}if(U0){while(l.endsParent&&l.parent)l=l.parent;return l}}if(l.endsWithParent)return d0(l.parent,t,X0)}function n0(l){if(K0.matcher.regexIndex===0)return j+=l[0],1;else return F0=!0,0}function E0(l){let t=l[0],X0=l.rule,U0=new t6(X0),k0=[X0.__beforeBegin,X0["on:begin"]];for(let g0 of k0){if(!g0)continue;if(g0(l,U0),U0.isMatchIgnored)return n0(t)}if(X0.skip)j+=t;else{if(X0.excludeBegin)j+=t;if(e(),!X0.returnBegin&&!X0.excludeBegin)j=t}return c0(X0,l),X0.returnBegin?0:t.length}function N0(l){let t=l[0],X0=b.substring(l.index),U0=d0(K0,l,X0);if(!U0)return p5;let k0=K0;if(K0.endScope&&K0.endScope._wrap)e(),P0(t,K0.endScope._wrap);else if(K0.endScope&&K0.endScope._multi)e(),l0(K0.endScope,l);else if(k0.skip)j+=t;else{if(!(k0.returnEnd||k0.excludeEnd))j+=t;if(e(),k0.excludeEnd)j=t}do{if(K0.scope)A0.closeNode();if(!K0.skip&&!K0.subLanguage)I+=K0.relevance;K0=K0.parent}while(K0!==U0.parent);if(U0.starts)c0(U0.starts,l);return k0.returnEnd?0:t.length}function v0(){let l=[];for(let t=K0;t!==i0;t=t.parent)if(t.scope)l.unshift(t.scope);l.forEach((t)=>A0.openNode(t))}let O0={};function j0(l,t){let X0=t&&t[0];if(j+=l,X0==null)return e(),0;if(O0.type==="begin"&&t.type==="end"&&O0.index===t.index&&X0===""){if(j+=b.slice(t.index,t.index+1),!z){let U0=Error(`0 width match regex (${x})`);throw U0.languageName=x,U0.badRule=O0.rule,U0}return 1}if(O0=t,t.type==="begin")return E0(t);else if(t.type==="illegal"&&!u){let U0=Error('Illegal lexeme "'+X0+'" for mode "'+(K0.scope||"<unnamed>")+'"');throw U0.mode=K0,U0}else if(t.type==="end"){let U0=N0(t);if(U0!==p5)return U0}if(t.type==="illegal"&&X0==="")return j+=`
|
|
3
|
+
`,1;if(a>1e5&&a>t.index*3)throw Error("potential infinite loop, way more iterations than matches");return j+=X0,X0.length}let i0=w(x);if(!i0)throw l9(W.replace("{}",x)),Error('Unknown language: "'+x+'"');let T0=YX(i0),o0="",K0=V||T0,q0={},A0=new q.__emitter(q);v0();let j="",I=0,E=0,a=0,F0=!1;try{if(!i0.__emitTokens){K0.matcher.considerAll();for(;;){if(a++,F0)F0=!1;else K0.matcher.considerAll();K0.matcher.lastIndex=E;let l=K0.matcher.exec(b);if(!l)break;let t=b.substring(E,l.index),X0=j0(t,l);E=l.index+X0}j0(b.substring(E))}else i0.__emitTokens(b,A0);return A0.finalize(),o0=A0.toHTML(),{language:x,value:o0,relevance:I,illegal:!1,_emitter:A0,_top:K0}}catch(l){if(l.message&&l.message.includes("Illegal"))return{language:x,value:o6(b),illegal:!0,relevance:0,_illegalBy:{message:l.message,index:E,context:b.slice(E-100,E+100),mode:l.mode,resultSoFar:o0},_emitter:A0};else if(z)return{language:x,value:o6(b),illegal:!1,relevance:0,errorRaised:l,_emitter:A0,_top:K0};else throw l}}function N(x){let b={value:o6(x),illegal:!1,relevance:0,_top:G,_emitter:new q.__emitter(q)};return b._emitter.addText(x),b}function U(x,b){b=b||q.languages||Object.keys(J);let u=N(x),V=b.filter(w).filter(y).map((e)=>K(e,x,!1));V.unshift(u);let i=V.sort((e,P0)=>{if(e.relevance!==P0.relevance)return P0.relevance-e.relevance;if(e.language&&P0.language){if(w(e.language).supersetOf===P0.language)return 1;else if(w(P0.language).supersetOf===e.language)return-1}return 0}),[Z0,G0]=i,J0=Z0;return J0.secondBest=G0,J0}function O(x,b,u){let V=b&&Q[b]||u;x.classList.add("hljs"),x.classList.add(`language-${V}`)}function C(x){let b=null,u=Y(x);if(H(u))return;if($0("before:highlightElement",{el:x,language:u}),x.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",x);return}if(x.children.length>0){if(!q.ignoreUnescapedHTML)console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(x);if(q.throwUnescapedHTML)throw new $7("One of your code blocks includes unescaped HTML.",x.innerHTML)}b=x;let V=b.textContent,i=u?F(V,{language:u,ignoreIllegals:!0}):U(V);if(x.innerHTML=i.value,x.dataset.highlighted="yes",O(x,u,i.language),x.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest)x.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance};$0("after:highlightElement",{el:x,result:i,text:V})}function f(x){q=E5(q,x)}let h=()=>{k(),PZ("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function _(){k(),PZ("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let M=!1;function k(){function x(){k()}if(document.readyState==="loading"){if(!M)window.addEventListener("DOMContentLoaded",x,!1);M=!0;return}document.querySelectorAll(q.cssSelector).forEach(C)}function T(x,b){let u=null;try{u=b(Z)}catch(V){if(l9("Language definition for '{}' could not be registered.".replace("{}",x)),!z)throw V;else l9(V);u=G}if(!u.name)u.name=x;if(J[x]=u,u.rawDefinition=b.bind(null,Z),u.aliases)A(u.aliases,{languageName:x})}function L(x){delete J[x];for(let b of Object.keys(Q))if(Q[b]===x)delete Q[b]}function P(){return Object.keys(J)}function w(x){return x=(x||"").toLowerCase(),J[x]||J[Q[x]]}function A(x,{languageName:b}){if(typeof x==="string")x=[x];x.forEach((u)=>{Q[u.toLowerCase()]=b})}function y(x){let b=w(x);return b&&!b.disableAutodetect}function S(x){if(x["before:highlightBlock"]&&!x["before:highlightElement"])x["before:highlightElement"]=(b)=>{x["before:highlightBlock"](Object.assign({block:b.el},b))};if(x["after:highlightBlock"]&&!x["after:highlightElement"])x["after:highlightElement"]=(b)=>{x["after:highlightBlock"](Object.assign({block:b.el},b))}}function p(x){S(x),X.push(x)}function n(x){let b=X.indexOf(x);if(b!==-1)X.splice(b,1)}function $0(x,b){let u=x;X.forEach(function(V){if(V[u])V[u](b)})}function Q0(x){return PZ("10.7.0","highlightBlock will be removed entirely in v12.0"),PZ("10.7.0","Please use highlightElement now."),C(x)}Object.assign(Z,{highlight:F,highlightAuto:U,highlightAll:k,highlightElement:C,highlightBlock:Q0,configure:f,initHighlighting:h,initHighlightingOnLoad:_,registerLanguage:T,unregisterLanguage:L,listLanguages:P,getLanguage:w,registerAliases:A,autoDetection:y,inherit:E5,addPlugin:p,removePlugin:n}),Z.debugMode=function(){z=!1},Z.safeMode=function(){z=!0},Z.versionString=FX,Z.regex={concat:r9,lookahead:n5,either:e6,optional:RQ,anyNumberOfTimes:kQ};for(let x in f8)if(typeof f8[x]==="object")c5(f8[x]);return Object.assign(Z,f8),Z},BZ=Q7({});BZ.newInstance=()=>Q7({});X7.exports=BZ;BZ.HighlightJS=BZ;BZ.default=BZ});var G7=y0((QY,W7)=>{function LX(Z){let J=Z.regex,Q=J.concat(/[\p{L}_]/u,J.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),X=/[\p{L}0-9._:-]+/u,z={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},W={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},G=Z.inherit(W,{begin:/\(/,end:/\)/}),q=Z.inherit(Z.APOS_STRING_MODE,{className:"string"}),H=Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),Y={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:X,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[z]},{begin:/'/,end:/'/,contains:[z]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[W,H,q,G,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[W,G,H,q]}]}]},Z.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},z,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[H]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[Y],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[Y],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:J.concat(/</,J.lookahead(J.concat(Q,J.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:Q,relevance:0,starts:Y}]},{className:"tag",begin:J.concat(/<\//,J.lookahead(J.concat(Q,/>/))),contains:[{className:"name",begin:Q,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}W7.exports=LX});var H7=y0((XY,q7)=>{function PX(Z){let J=Z.regex,Q={},X={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[Q]}]};Object.assign(Q,{className:"variable",variants:[{begin:J.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},X]});let z={className:"subst",begin:/\$\(/,end:/\)/,contains:[Z.BACKSLASH_ESCAPE]},W=Z.inherit(Z.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),G={begin:/<<-?\s*(?=\w+)/,starts:{contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,Q,z]};z.contains.push(q);let H={match:/\\"/},Y={className:"string",begin:/'/,end:/'/},F={match:/\\'/},K={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},Z.NUMBER_MODE,Q]},N=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],U=Z.SHEBANG({binary:`(${N.join("|")})`,relevance:10}),O={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[Z.inherit(Z.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},C=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],f=["true","false"],h={match:/(\/[a-z._-]+)+/},_=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],M=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],k=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],T=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:C,literal:f,built_in:[..._,...M,"set","shopt",...k,...T]},contains:[U,Z.SHEBANG(),O,K,W,G,h,q,H,Y,F,Q]}}q7.exports=PX});var K7=y0((zY,Y7)=>{function BX(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",W="<[^<>]+>",G="(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},H="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",Y={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Y,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},N={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},U=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",f={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},h=[K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],_={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:f,contains:h.concat([{begin:/\(/,end:/\)/,keywords:f,contains:h.concat(["self"]),relevance:0}]),relevance:0},M={begin:"("+G+"[\\*&\\s]+)+"+U,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:f,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:f,relevance:0},{begin:U,returnBegin:!0,contains:[Z.inherit(N,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C",aliases:["h"],keywords:f,disableAutodetect:!0,illegal:"</",contains:[].concat(_,M,h,[K,{begin:Z.IDENT_RE+"::",keywords:f},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},Z.TITLE_MODE]}]),exports:{preprocessor:K,strings:Y,keywords:f}}}Y7.exports=BX});var U7=y0((WY,F7)=>{function OX(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",W="<[^<>]+>",G="(?!struct)(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},H="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",Y={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Y,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},N={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},U=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",O=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],C=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],f=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],h=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],k={type:C,keyword:O,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:f},T={className:"function.dispatch",relevance:0,keywords:{_hint:h},begin:J.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,Z.IDENT_RE,J.lookahead(/(<[^<>]+>|)\s*\(/))},L=[T,K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],P={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:L.concat([{begin:/\(/,end:/\)/,keywords:k,contains:L.concat(["self"]),relevance:0}]),relevance:0},w={className:"function",begin:"("+G+"[\\*&\\s]+)+"+U,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:k,relevance:0},{begin:U,returnBegin:!0,contains:[N],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[Y,F]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:k,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(P,w,T,L,[K,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:k,contains:["self",q]},{begin:Z.IDENT_RE+"::",keywords:k},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}F7.exports=OX});var P7=y0((GY,L7)=>{function AX(Z){let J=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],Q=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],X=["default","false","null","true"],z=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],W=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],G={keyword:z.concat(W),built_in:J,literal:X},q=Z.inherit(Z.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),H={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},Y={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},F={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},K=Z.inherit(F,{illegal:/\n/}),N={className:"subst",begin:/\{/,end:/\}/,keywords:G},U=Z.inherit(N,{illegal:/\n/}),O={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},Z.BACKSLASH_ESCAPE,U]},C={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},N]},f=Z.inherit(C,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},U]});N.contains=[C,O,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.C_BLOCK_COMMENT_MODE],U.contains=[f,O,K,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.inherit(Z.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let h={variants:[Y,C,O,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},_={begin:"<",end:">",contains:[{beginKeywords:"in out"},q]},M=Z.IDENT_RE+"(<"+Z.IDENT_RE+"(\\s*,\\s*"+Z.IDENT_RE+")*>)?(\\[\\])?",k={begin:"@"+Z.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:G,illegal:/::/,contains:[Z.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},h,H,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},q,_,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,_,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+M+"\\s+)+"+Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:G,contains:[{beginKeywords:Q.join(" "),relevance:0},{begin:Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[Z.TITLE_MODE,_],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:G,relevance:0,contains:[h,H,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},k]}}L7.exports=AX});var O7=y0((qY,B7)=>{var NX=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},wX=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],CX=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],MX=[...wX,...CX],yX=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),_X=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),vX=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),TX=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function kX(Z){let J=Z.regex,Q=NX(Z),X={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},z="and or not only",W=/@-?\w[\w]*(-\w+)*/,G="[a-zA-Z-][a-zA-Z0-9_-]*",q=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[Q.BLOCK_COMMENT,X,Q.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},Q.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+_X.join("|")+")"},{begin:":(:)?("+vX.join("|")+")"}]},Q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+TX.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[Q.BLOCK_COMMENT,Q.HEXCOLOR,Q.IMPORTANT,Q.CSS_NUMBER_MODE,...q,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...q,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},Q.FUNCTION_DISPATCH]},{begin:J.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:W},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:yX.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...q,Q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+MX.join("|")+")\\b"}]}}B7.exports=kX});var N7=y0((HY,A7)=>{function RX(Z){let J=Z.regex,Q={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},X={begin:"^[-\\*]{3,}",end:"$"},z={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},W={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},G={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},q=/[A-Za-z][A-Za-z0-9+.-]*/,H={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:J.concat(/\[.+?\]\(/,q,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},Y={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},F={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},K=Z.inherit(Y,{contains:[]}),N=Z.inherit(F,{contains:[]});Y.contains.push(N),F.contains.push(K);let U=[Q,H];return[Y,F,K,N].forEach((h)=>{h.contains=h.contains.concat(U)}),U=U.concat(Y,F),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:U},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:U}]}]},Q,W,Y,F,{className:"quote",begin:"^>\\s+",contains:U,end:"$"},z,X,H,G,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}A7.exports=RX});var C7=y0((YY,w7)=>{function IX(Z){let J=Z.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:J.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:J.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}w7.exports=IX});var y7=y0((KY,M7)=>{function SX(Z){let J=Z.regex,Q="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",X=J.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),z=J.concat(X,/(::\w+)*/),G={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},q={className:"doctag",begin:"@[A-Za-z]+"},H={begin:"#<",end:">"},Y=[Z.COMMENT("#","$",{contains:[q]}),Z.COMMENT("^=begin","^=end",{contains:[q],relevance:10}),Z.COMMENT("^__END__",Z.MATCH_NOTHING_RE)],F={className:"subst",begin:/#\{/,end:/\}/,keywords:G},K={className:"string",contains:[Z.BACKSLASH_ESCAPE,F],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:J.concat(/<<[-~]?'?/,J.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[Z.BACKSLASH_ESCAPE,F]})]}]},N="[1-9](_?[0-9])*|0",U="[0-9](_?[0-9])*",O={className:"number",relevance:0,variants:[{begin:"\\b([1-9](_?[0-9])*|0)(\\.([0-9](_?[0-9])*))?([eE][+-]?([0-9](_?[0-9])*)|r)?i?\\b"},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},C={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:G}]},L=[K,{variants:[{match:[/class\s+/,z,/\s+<\s+/,z]},{match:[/\b(class|module)\s+/,z]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:G},{match:[/(include|extend)\s+/,z],scope:{2:"title.class"},keywords:G},{relevance:0,match:[z,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:X,scope:"title.class"},{match:[/def/,/\s+/,"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"],scope:{1:"keyword",3:"title.function"},contains:[C]},{begin:Z.IDENT_RE+"::"},{className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[K,{begin:"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"}],relevance:0},O,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:G},{begin:"("+Z.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[Z.BACKSLASH_ESCAPE,F],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(H,Y),relevance:0}].concat(H,Y);F.contains=L,C.contains=L;let P="[>?]>",w="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",A="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",y=[{begin:/^\s*=>/,starts:{end:"$",contains:L}},{className:"meta.prompt",begin:"^("+P+"|"+w+"|"+A+")(?=[ ])",starts:{end:"$",keywords:G,contains:L}}];return Y.unshift(H),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:G,illegal:/\/\*/,contains:[Z.SHEBANG({binary:"ruby"})].concat(y).concat(Y).concat(L)}}M7.exports=SX});var v7=y0((FY,_7)=>{function VX(Z){let W={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:W,illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"string",variants:[Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[Z.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:W,illegal:/["']/}]}]}}_7.exports=VX});var k7=y0((UY,T7)=>{function fX(Z){let J=Z.regex,Q=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[Z.HASH_COMMENT_MODE,Z.QUOTE_STRING_MODE,Z.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:J.concat(Q,J.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}T7.exports=fX});var I7=y0((LY,R7)=>{function gX(Z){let J=Z.regex,Q={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:Z.NUMBER_RE}]},X=Z.COMMENT();X.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let z={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},W={className:"literal",begin:/\bon|off|true|false|yes|no\b/},G={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},q={begin:/\[/,end:/\]/,contains:[X,W,z,G,Q,"self"],relevance:0},H=/[A-Za-z0-9_-]+/,Y=/"(\\"|[^"])*"/,F=/'[^']*'/,K=J.either(H,Y,F),N=J.concat(K,"(\\s*\\.\\s*",K,")*",J.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[X,{className:"section",begin:/\[+/,end:/\]+/},{begin:N,className:"attr",starts:{end:/$/,contains:[X,q,W,z,G,Q]}}]}}R7.exports=gX});var g7=y0((PY,f7)=>{var OZ="[0-9](_*[0-9])*",j8=`\\.(${OZ})`,h8="[0-9a-fA-F](_*[0-9a-fA-F])*",S7={className:"number",variants:[{begin:`(\\b(${OZ})((${j8})|\\.)?|(${j8}))[eE][+-]?(${OZ})[fFdD]?\\b`},{begin:`\\b(${OZ})((${j8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${j8})[fFdD]?\\b`},{begin:`\\b(${OZ})[fFdD]\\b`},{begin:`\\b0[xX]((${h8})\\.?|(${h8})?\\.(${h8}))[pP][+-]?(${OZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${h8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function V7(Z,J,Q){if(Q===-1)return"";return Z.replace(J,(X)=>{return V7(Z,J,Q-1)})}function bX(Z){let J=Z.regex,Q="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",X="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+V7("(?:<"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~(?:\\s*,\\s*"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~)*>)?",/~~~/g,2),H={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},Y={className:"meta",begin:"@"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},F={className:"params",begin:/\(/,end:/\)/,keywords:H,relevance:0,contains:[Z.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:H,illegal:/<\/|#/,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[Z.BACKSLASH_ESCAPE]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[J.concat(/(?!else)/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"),/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"},contains:[F,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+X+"\\s+)",Z.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:H,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:H,relevance:0,contains:[Y,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,S7,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},S7,Y]}}f7.exports=bX});var x7=y0((BY,D7)=>{var jX=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],hX=["true","false","null","undefined","NaN","Infinity"],b7=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],j7=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],h7=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],DX=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],xX=[].concat(h7,b7,j7);function mX(Z){let J=Z.regex,Q=(u,{after:V})=>{let i="</"+u[0].slice(1);return u.input.indexOf(i,V)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},W=/<[A-Za-z0-9\\._:-]+\s*\/>/,G={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(u,V)=>{let i=u[0].length+u.index,Z0=u.input[i];if(Z0==="<"||Z0===","){V.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:i}))V.ignoreMatch()}let G0,J0=u.input.substring(i);if(G0=J0.match(/^\s*=/)){V.ignoreMatch();return}if(G0=J0.match(/^\s+extends\s+/)){if(G0.index===0){V.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:jX,literal:hX,built_in:xX,"variable.language":DX},H="[0-9](_?[0-9])*",Y="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},N={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},U={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"css"}},C={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"graphql"}},f={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,N]},_={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},M=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,{match:/\$\d+/},K];N.contains=M.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(M)});let k=[].concat(_,N.contains),T=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(k)}]),L={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T},P={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...b7,...j7]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},y={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[L],illegal:/%/},S={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function p(u){return J.concat("(?!",u.join("|"),")")}let n={match:J.concat(/\b/,p([...h7,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},$0={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},L]},x="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",b={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(x)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[L]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:T,CLASS_REFERENCE:w},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,_,{match:/\$\d+/},K,w,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},b,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[_,Z.REGEXP_MODE,{className:"function",begin:x,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:W},{begin:G.begin,"on:begin":G.isTrulyOpeningTag,end:G.end}],subLanguage:"xml",contains:[{begin:G.begin,end:G.end,skip:!0,contains:["self"]}]}]},y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[L,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},$0,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[L]},n,S,P,Q0,{match:/\$[(.]/}]}}D7.exports=mX});var u7=y0((OY,m7)=>{function uX(Z){let J={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},Q={match:/[{}[\],:]/,className:"punctuation",relevance:0},X=["true","false","null"],z={scope:"literal",beginKeywords:X.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:X},contains:[J,Q,Z.QUOTE_STRING_MODE,z,Z.C_NUMBER_MODE,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}m7.exports=uX});var p7=y0((AY,E7)=>{var AZ="[0-9](_*[0-9])*",D8=`\\.(${AZ})`,x8="[0-9a-fA-F](_*[0-9a-fA-F])*",EX={className:"number",variants:[{begin:`(\\b(${AZ})((${D8})|\\.)?|(${D8}))[eE][+-]?(${AZ})[fFdD]?\\b`},{begin:`\\b(${AZ})((${D8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${D8})[fFdD]?\\b`},{begin:`\\b(${AZ})[fFdD]\\b`},{begin:`\\b0[xX]((${x8})\\.?|(${x8})?\\.(${x8}))[pP][+-]?(${AZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${x8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function pX(Z){let J={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},Q={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},X={className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"@"},z={className:"subst",begin:/\$\{/,end:/\}/,contains:[Z.C_NUMBER_MODE]},W={className:"variable",begin:"\\$"+Z.UNDERSCORE_IDENT_RE},G={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[W,z]},{begin:"'",end:"'",illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE,W,z]}]};z.contains.push(G);let q={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+Z.UNDERSCORE_IDENT_RE+")?"},H={className:"meta",begin:"@"+Z.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[Z.inherit(G,{className:"string"}),"self"]}]},Y=EX,F=Z.COMMENT("/\\*","\\*/",{contains:[Z.C_BLOCK_COMMENT_MODE]}),K={variants:[{className:"type",begin:Z.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},N=K;return N.variants[1].contains=[K],K.variants[1].contains=[N],{name:"Kotlin",aliases:["kt","kts"],keywords:J,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),Z.C_LINE_COMMENT_MODE,F,Q,X,q,H,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:J,relevance:5,contains:[{begin:Z.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[Z.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:J,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[K,Z.C_LINE_COMMENT_MODE,F],relevance:0},Z.C_LINE_COMMENT_MODE,F,q,H,G,Z.C_NUMBER_MODE]},F]},{begin:[/class|interface|trait/,/\s+/,Z.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},Z.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},q,H]},G,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4
|
+
`},Y]}}E7.exports=pX});var a7=y0((NY,i7)=>{var cX=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},dX=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],iX=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],aX=[...dX,...iX],nX=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),c7=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),d7=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),lX=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),rX=c7.concat(d7).sort().reverse();function oX(Z){let J=cX(Z),Q=rX,X="and or not only",z="[\\w-]+",W="([\\w-]+|@\\{[\\w-]+\\})",G=[],q=[],H=function(M){return{className:"string",begin:"~?"+M+".*?"+M}},Y=function(M,k,T){return{className:M,begin:k,relevance:T}},F={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:nX.join(" ")},K={begin:"\\(",end:"\\)",contains:q,keywords:F,relevance:0};q.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,H("'"),H('"'),J.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},J.HEXCOLOR,K,Y("variable","@@?[\\w-]+",10),Y("variable","@\\{[\\w-]+\\}"),Y("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},J.IMPORTANT,{beginKeywords:"and not"},J.FUNCTION_DISPATCH);let N=q.concat({begin:/\{/,end:/\}/,contains:G}),U={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(q)},O={begin:W+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+lX.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:q}}]},C={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:F,returnEnd:!0,contains:q,relevance:0}},f={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:N}},h={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:W,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,U,Y("keyword","all\\b"),Y("variable","@\\{[\\w-]+\\}"),{begin:"\\b("+aX.join("|")+")\\b",className:"selector-tag"},J.CSS_NUMBER_MODE,Y("selector-tag",W,0),Y("selector-id","#"+W),Y("selector-class","\\."+W,0),Y("selector-tag","&",0),J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+c7.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+d7.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:N},{begin:"!important"},J.FUNCTION_DISPATCH]},_={begin:`[\\w-]+:(:)?(${Q.join("|")})`,returnBegin:!0,contains:[h]};return G.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,C,f,_,O,h,U,J.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:G}}i7.exports=oX});var l7=y0((wY,n7)=>{function tX(Z){let X={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},z=[Z.COMMENT("--(?!\\[=*\\[)","$"),Z.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[X],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:Z.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:z.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[Z.inherit(Z.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:z}].concat(z)},Z.C_NUMBER_MODE,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[X],relevance:5}])}}n7.exports=tX});var o7=y0((CY,r7)=>{function sX(Z){let J={className:"variable",variants:[{begin:"\\$\\("+Z.UNDERSCORE_IDENT_RE+"\\)",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},Q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,J]},X={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[J,Q]},z={begin:"^"+Z.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},W={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},G={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[J]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[Z.HASH_COMMENT_MODE,J,Q,X,z,W,G]}}r7.exports=sX});var s7=y0((MY,t7)=>{function eX(Z){let J=Z.regex,Q=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],X=/[dualxmsipngr]{0,12}/,z={$pattern:/[\w.]+/,keyword:Q.join(" ")},W={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:z},G={begin:/->\{/,end:/\}/},q={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},H={scope:"variable",variants:[{begin:/\$\d/},{begin:J.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[q]},Y={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},F=[Z.BACKSLASH_ESCAPE,W,H],K=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],N=(C,f,h="\\1")=>{let _=h==="\\1"?h:J.concat(h,f);return J.concat(J.concat("(?:",C,")"),f,/(?:\\.|[^\\\/])*?/,_,/(?:\\.|[^\\\/])*?/,h,X)},U=(C,f,h)=>{return J.concat(J.concat("(?:",C,")"),f,/(?:\\.|[^\\\/])*?/,h,X)},O=[H,Z.HASH_COMMENT_MODE,Z.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),G,{className:"string",contains:F,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},Y,{begin:"(\\/\\/|"+Z.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[Z.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:N("s|tr|y",J.either(...K,{capture:!0}))},{begin:N("s|tr|y","\\(","\\)")},{begin:N("s|tr|y","\\[","\\]")},{begin:N("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:U("(?:m|qr)?",/\//,/\//)},{begin:U("m|qr",J.either(...K,{capture:!0}),/\1/)},{begin:U("m|qr",/\(/,/\)/)},{begin:U("m|qr",/\[/,/\]/)},{begin:U("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q,Y]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return W.contains=O,G.contains=O,{name:"Perl",aliases:["pl","pm"],keywords:z,contains:O}}t7.exports=eX});var Z4=y0((yY,e7)=>{function Zz(Z){let J={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},Q=/[a-zA-Z@][a-zA-Z0-9_]*/,q={"variable.language":["this","super"],$pattern:Q,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},H={$pattern:Q,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:q,illegal:"</",contains:[J,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,Z.C_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+H.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:H,contains:[Z.UNDERSCORE_TITLE_MODE]},{begin:"\\."+Z.UNDERSCORE_IDENT_RE,relevance:0}]}}e7.exports=Zz});var $4=y0((_Y,J4)=>{function Jz(Z){let J=Z.regex,Q=/(?![A-Za-z0-9])(?![$])/,X=J.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,Q),z=J.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,Q),W=J.concat(/[A-Z]+/,Q),G={scope:"variable",match:"\\$+"+X},q={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:0.1},{begin:/\?>/}]},H={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},Y=Z.inherit(Z.APOS_STRING_MODE,{illegal:null}),F=Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,contains:Z.QUOTE_STRING_MODE.contains.concat(H)}),K={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:Z.QUOTE_STRING_MODE.contains.concat(H),"on:begin":($0,Q0)=>{Q0.data._beginMatch=$0[1]||$0[2]},"on:end":($0,Q0)=>{if(Q0.data._beginMatch!==$0[1])Q0.ignoreMatch()}},N=Z.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),U=`[
|
|
5
|
+
]`,O={scope:"string",variants:[F,Y,K,N]},C={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},f=["false","null","true"],h=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],_=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],k={keyword:h,literal:(($0)=>{let Q0=[];return $0.forEach((x)=>{if(Q0.push(x),x.toLowerCase()===x)Q0.push(x.toUpperCase());else Q0.push(x.toLowerCase())}),Q0})(f),built_in:_},T=($0)=>{return $0.map((Q0)=>{return Q0.replace(/\|\d+$/,"")})},L={variants:[{match:[/new/,J.concat(`[
|
|
6
|
+
]`,"+"),J.concat("(?!",T(_).join("\\b|"),"\\b)"),z],scope:{1:"keyword",4:"title.class"}}]},P=J.concat(X,"\\b(?!\\()"),w={variants:[{match:[J.concat(/::/,J.lookahead(/(?!class\b)/)),P],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[z,J.concat(/::/,J.lookahead(/(?!class\b)/)),P],scope:{1:"title.class",3:"variable.constant"}},{match:[z,J.concat("::",J.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[z,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},A={scope:"attr",match:J.concat(X,J.lookahead(":"),J.lookahead(/(?!::)/))},y={relevance:0,begin:/\(/,end:/\)/,keywords:k,contains:[A,G,w,Z.C_BLOCK_COMMENT_MODE,O,C,L]},S={relevance:0,match:[/\b/,J.concat("(?!fn\\b|function\\b|",T(h).join("\\b|"),"|",T(_).join("\\b|"),"\\b)"),X,J.concat(`[
|
|
7
|
+
]`,"*"),J.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[y]};y.contains.push(S);let p=[A,w,Z.C_BLOCK_COMMENT_MODE,O,C,L],n={begin:J.concat(/#\[\s*\\?/,J.either(z,W)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:f,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:f,keyword:["new","array"]},contains:["self",...p]},...p,{scope:"meta",variants:[{match:z},{match:W}]}]};return{case_insensitive:!1,keywords:k,contains:[n,Z.HASH_COMMENT_MODE,Z.COMMENT("//","$"),Z.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:Z.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},q,{scope:"variable.language",match:/\$this\b/},G,S,w,{match:[/const/,/\s/,X],scope:{1:"keyword",3:"variable.constant"}},L,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},Z.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:k,contains:["self",n,G,w,Z.C_BLOCK_COMMENT_MODE,O,C]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},Z.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[Z.inherit(Z.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},Z.UNDERSCORE_TITLE_MODE]},O,C]}}J4.exports=Jz});var X4=y0((vY,Q4)=>{function $z(Z){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},Z.inherit(Z.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}Q4.exports=$z});var W4=y0((TY,z4)=>{function Qz(Z){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}z4.exports=Qz});var q4=y0((kY,G4)=>{function Xz(Z){let J=Z.regex,Q=/[\p{XID_Start}_]\p{XID_Continue}*/u,X=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],q={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:X,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},H={className:"meta",begin:/^(>>>|\.\.\.) /},Y={className:"subst",begin:/\{/,end:/\}/,keywords:q,illegal:/#/},F={begin:/\{\{/,relevance:0},K={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,H],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,H],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,H,F,Y]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,H,F,Y]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[Z.BACKSLASH_ESCAPE,F,Y]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,F,Y]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},N="[0-9](_?[0-9])*",U="(\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.",O=`\\b|${X.join("|")}`,C={className:"number",relevance:0,variants:[{begin:`(\\b([0-9](_?[0-9])*)|((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.))[eE][+-]?([0-9](_?[0-9])*)[jJ]?(?=${O})`},{begin:"((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.)[jJ]?"},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${O})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${O})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${O})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${O})`},{begin:`\\b([0-9](_?[0-9])*)[jJ](?=${O})`}]},f={className:"comment",begin:J.lookahead(/# type:/),end:/$/,keywords:q,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},h={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:["self",H,C,K,Z.HASH_COMMENT_MODE]}]};return Y.contains=[K,C,H],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:q,illegal:/(<\/|\?)|=>/,contains:[H,C,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},K,f,Z.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,Q],scope:{1:"keyword",3:"title.function"},contains:[h]},{variants:[{match:[/\bclass/,/\s+/,Q,/\s*/,/\(\s*/,Q,/\s*\)/]},{match:[/\bclass/,/\s+/,Q]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[C,h,K]}]}}G4.exports=Xz});var Y4=y0((RY,H4)=>{function zz(Z){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}H4.exports=zz});var F4=y0((IY,K4)=>{function Wz(Z){let J=Z.regex,Q=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,X=J.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),z=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,W=J.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:Q,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[Z.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:J.lookahead(J.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:Q},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),Z.HASH_COMMENT_MODE,{scope:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[z,X]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,X]},{scope:{1:"punctuation",2:"number"},match:[W,X]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,X]}]},{scope:{3:"operator"},match:[Q,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:z},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:W},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}K4.exports=Wz});var L4=y0((SY,U4)=>{function Gz(Z){let J=Z.regex,Q=/(r#)?/,X=J.concat(Q,Z.UNDERSCORE_IDENT_RE),z=J.concat(Q,Z.IDENT_RE),W={className:"title.function.invoke",relevance:0,begin:J.concat(/\b/,/(?!let|for|while|if|else|match\b)/,z,J.lookahead(/\s*\(/))},G="([ui](8|16|32|64|128|size)|f(32|64))?",q=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],H=["true","false","Some","None","Ok","Err"],Y=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],F=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:Z.IDENT_RE+"!?",type:F,keyword:q,literal:H,built_in:Y},illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.COMMENT("/\\*","\\*/",{contains:["self"]}),Z.inherit(Z.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?"}],relevance:0},{begin:[/fn/,/\s+/,X],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,X],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,X,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:Z.IDENT_RE+"::",keywords:{keyword:"Self",built_in:Y,type:F}},{className:"punctuation",begin:"->"},W]}}U4.exports=Gz});var B4=y0((VY,P4)=>{var qz=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},Hz=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Yz=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Kz=[...Hz,...Yz],Fz=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Uz=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Lz=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Pz=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Bz(Z){let J=qz(Z),Q=Lz,X=Uz,z="@[a-z-]+",W="and or not only",G="[a-zA-Z-][a-zA-Z0-9_-]*",q={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,J.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+Kz.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+X.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+Q.join("|")+")"},q,{begin:/\(/,end:/\)/,contains:[J.CSS_NUMBER_MODE]},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Pz.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[J.BLOCK_COMMENT,q,J.HEXCOLOR,J.CSS_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.IMPORTANT,J.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:"@[a-z-]+",keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Fz.join(" ")},contains:[{begin:"@[a-z-]+",className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},q,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.HEXCOLOR,J.CSS_NUMBER_MODE]},J.FUNCTION_DISPATCH]}}P4.exports=Bz});var A4=y0((fY,O4)=>{function Oz(Z){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}O4.exports=Oz});var w4=y0((gY,N4)=>{function Az(Z){let J=Z.regex,Q=Z.COMMENT("--","$"),X={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},z={begin:/"/,end:/"/,contains:[{match:/""/}]},W=["true","false","unknown"],G=["double precision","large object","with timezone","without timezone"],q=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],H=["add","asc","collation","desc","final","first","last","view"],Y=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],F=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],K=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],N=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],U=F,O=[...Y,...H].filter((T)=>{return!F.includes(T)}),C={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},f={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},h={match:J.concat(/\b/,J.either(...U),/\s*\(/),relevance:0,keywords:{built_in:U}};function _(T){return J.concat(/\b/,J.either(...T.map((L)=>{return L.replace(/\s+/,"\\s+")})),/\b/)}let M={scope:"keyword",match:_(N),relevance:0};function k(T,{exceptions:L,when:P}={}){let w=P;return L=L||[],T.map((A)=>{if(A.match(/\|\d+$/)||L.includes(A))return A;else if(w(A))return`${A}|0`;else return A})}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:k(O,{when:(T)=>T.length<3}),literal:W,type:q,built_in:K},contains:[{scope:"type",match:_(G)},M,h,C,X,z,Z.C_NUMBER_MODE,Z.C_BLOCK_COMMENT_MODE,Q,f]}}N4.exports=Az});var I4=y0((bY,R4)=>{function _4(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function EZ(Z){return V0("(?=",Z,")")}function V0(...Z){return Z.map((Q)=>_4(Q)).join("")}function Nz(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function $9(...Z){return"("+(Nz(Z).capture?"":"?:")+Z.map((X)=>_4(X)).join("|")+")"}var X1=(Z)=>V0(/\b/,Z,/\w$/.test(Z)?/\b/:/\B/),wz=["Protocol","Type"].map(X1),C4=["init","self"].map(X1),Cz=["Any","Self"],$1=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],M4=["false","nil","true"],Mz=["assignment","associativity","higherThan","left","lowerThan","none","right"],yz=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],y4=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],v4=$9(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),T4=$9(v4,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Q1=V0(v4,T4,"*"),k4=$9(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),u8=$9(k4,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),N9=V0(k4,u8,"*"),m8=V0(/[A-Z]/,u8,"*"),_z=["attached","autoclosure",V0(/convention\(/,$9("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",V0(/objc\(/,N9,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],vz=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function Tz(Z){let J={match:/\s+/,relevance:0},Q=Z.COMMENT("/\\*","\\*/",{contains:["self"]}),X=[Z.C_LINE_COMMENT_MODE,Q],z={match:[/\./,$9(...wz,...C4)],className:{2:"keyword"}},W={match:V0(/\./,$9(...$1)),relevance:0},G=$1.filter((T0)=>typeof T0==="string").concat(["_|0"]),q=$1.filter((T0)=>typeof T0!=="string").concat(Cz).map(X1),H={variants:[{className:"keyword",match:$9(...q,...C4)}]},Y={$pattern:$9(/\b\w+/,/#\w+/),keyword:G.concat(yz),literal:M4},F=[z,W,H],K={match:V0(/\./,$9(...y4)),relevance:0},N={className:"built_in",match:V0(/\b/,$9(...y4),/(?=\()/)},U=[K,N],O={match:/->/,relevance:0},C={className:"operator",relevance:0,variants:[{match:Q1},{match:`\\.(\\.|${T4})+`}]},f=[O,C],h="([0-9]_*)+",_="([0-9a-fA-F]_*)+",M={className:"number",relevance:0,variants:[{match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{match:"\\b0x(([0-9a-fA-F]_*)+)(\\.(([0-9a-fA-F]_*)+))?([pP][+-]?(([0-9]_*)+))?\\b"},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},k=(T0="")=>({className:"subst",variants:[{match:V0(/\\/,T0,/[0\\tnr"']/)},{match:V0(/\\/,T0,/u\{[0-9a-fA-F]{1,8}\}/)}]}),T=(T0="")=>({className:"subst",match:V0(/\\/,T0,/[\t ]*(?:[\r\n]|\r\n)/)}),L=(T0="")=>({className:"subst",label:"interpol",begin:V0(/\\/,T0,/\(/),end:/\)/}),P=(T0="")=>({begin:V0(T0,/"""/),end:V0(/"""/,T0),contains:[k(T0),T(T0),L(T0)]}),w=(T0="")=>({begin:V0(T0,/"/),end:V0(/"/,T0),contains:[k(T0),L(T0)]}),A={className:"string",variants:[P(),P("#"),P("##"),P("###"),w(),w("#"),w("##"),w("###")]},y=[Z.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[Z.BACKSLASH_ESCAPE]}],S={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:y},p=(T0)=>{let o0=V0(T0,/\//),K0=V0(/\//,T0);return{begin:o0,end:K0,contains:[...y,{scope:"comment",begin:`#(?!.*${K0})`,end:/$/}]}},n={scope:"regexp",variants:[p("###"),p("##"),p("#"),S]},$0={match:V0(/`/,N9,/`/)},Q0={className:"variable",match:/\$\d+/},x={className:"variable",match:`\\$${u8}+`},b=[$0,Q0,x],u={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:vz,contains:[...f,M,A]}]}},V={scope:"keyword",match:V0(/@/,$9(..._z),EZ($9(/\(/,/\s+/)))},i={scope:"meta",match:V0(/@/,N9)},Z0=[u,V,i],G0={match:EZ(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:V0(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,u8,"+")},{className:"type",match:m8,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:V0(/\s+&\s+/,EZ(m8)),relevance:0}]},J0={begin:/</,end:/>/,keywords:Y,contains:[...X,...F,...Z0,O,G0]};G0.contains.push(J0);let e={match:V0(N9,/\s*:/),keywords:"_|0",relevance:0},P0={begin:/\(/,end:/\)/,relevance:0,keywords:Y,contains:["self",e,...X,n,...F,...U,...f,M,A,...b,...Z0,G0]},l0={begin:/</,end:/>/,keywords:"repeat each",contains:[...X,G0]},c0={begin:$9(EZ(V0(N9,/\s*:/)),EZ(V0(N9,/\s+/,N9,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:N9}]},d0={begin:/\(/,end:/\)/,keywords:Y,contains:[c0,...X,...F,...f,M,A,...Z0,G0,P0],endsParent:!0,illegal:/["']/},n0={match:[/(func|macro)/,/\s+/,$9($0.match,N9,Q1)],className:{1:"keyword",3:"title.function"},contains:[l0,d0,J],illegal:[/\[/,/%/]},E0={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[l0,d0,J],illegal:/\[|%/},N0={match:[/operator/,/\s+/,Q1],className:{1:"keyword",3:"title"}},v0={begin:[/precedencegroup/,/\s+/,m8],className:{1:"keyword",3:"title"},contains:[G0],keywords:[...Mz,...M4],end:/}/},O0={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},j0={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},i0={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,N9,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:Y,contains:[l0,...F,{begin:/:/,end:/\{/,keywords:Y,contains:[{scope:"title.class.inherited",match:m8},...F],relevance:0}]};for(let T0 of A.variants){let o0=T0.contains.find((q0)=>q0.label==="interpol");o0.keywords=Y;let K0=[...F,...U,...f,M,A,...b];o0.contains=[...K0,{begin:/\(/,end:/\)/,contains:["self",...K0]}]}return{name:"Swift",keywords:Y,contains:[...X,n0,E0,O0,j0,i0,N0,v0,{beginKeywords:"import",end:/$/,contains:[...X],relevance:0},n,...F,...U,...f,M,A,...b,...Z0,G0,P0]}}R4.exports=Tz});var V4=y0((jY,S4)=>{function kz(Z){let X={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},z={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},W={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},G={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[Z.BACKSLASH_ESCAPE,z]},q=Z.inherit(G,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),H="[0-9]{4}(-[0-9][0-9]){0,2}",Y="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",F="(\\.[0-9]*)?",K="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",N={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},U={end:",",endsWithParent:!0,excludeEnd:!0,keywords:"true false yes no null",relevance:0},O={begin:/\{/,end:/\}/,contains:[U],illegal:"\\n",relevance:0},C={begin:"\\[",end:"\\]",contains:[U],illegal:"\\n",relevance:0},f=[X,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!<[\\w#;/?:@&=+$,.~*'()[\\]]+>"},{className:"type",begin:"![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"meta",begin:"&"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},Z.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},N,{className:"number",begin:Z.C_NUMBER_RE+"\\b",relevance:0},O,C,W,G],h=[...f];return h.pop(),h.push(q),U.contains=h,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:f}}S4.exports=kz});var u4=y0((hY,m4)=>{var f4=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],g4=["true","false","null","undefined","NaN","Infinity"],b4=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],j4=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],h4=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],D4=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],x4=[].concat(h4,b4,j4);function Rz(Z){let J=Z.regex,Q=(u,{after:V})=>{let i="</"+u[0].slice(1);return u.input.indexOf(i,V)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},W=/<[A-Za-z0-9\\._:-]+\s*\/>/,G={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(u,V)=>{let i=u[0].length+u.index,Z0=u.input[i];if(Z0==="<"||Z0===","){V.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:i}))V.ignoreMatch()}let G0,J0=u.input.substring(i);if(G0=J0.match(/^\s*=/)){V.ignoreMatch();return}if(G0=J0.match(/^\s+extends\s+/)){if(G0.index===0){V.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:f4,literal:g4,built_in:x4,"variable.language":D4},H="[0-9](_?[0-9])*",Y="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},N={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},U={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"css"}},C={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,N],subLanguage:"graphql"}},f={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,N]},_={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},M=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,{match:/\$\d+/},K];N.contains=M.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(M)});let k=[].concat(_,N.contains),T=k.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(k)}]),L={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T},P={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...b4,...j4]}},A={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},y={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[L],illegal:/%/},S={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function p(u){return J.concat("(?!",u.join("|"),")")}let n={match:J.concat(/\b/,p([...h4,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},$0={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Q0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},L]},x="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",b={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(x)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[L]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:T,CLASS_REFERENCE:w},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),A,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,U,O,C,f,_,{match:/\$\d+/},K,w,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},b,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[_,Z.REGEXP_MODE,{className:"function",begin:x,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:T}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:W},{begin:G.begin,"on:begin":G.isTrulyOpeningTag,end:G.end}],subLanguage:"xml",contains:[{begin:G.begin,end:G.end,skip:!0,contains:["self"]}]}]},y,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[L,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},$0,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[L]},n,S,P,Q0,{match:/\$[(.]/}]}}function Iz(Z){let J=Z.regex,Q=Rz(Z),X="[A-Za-z$_][0-9A-Za-z$_]*",z=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],W={begin:[/namespace/,/\s+/,Z.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},G={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:z},contains:[Q.exports.CLASS_REFERENCE]},q={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},H=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],Y={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:f4.concat(H),literal:g4,built_in:x4.concat(z),"variable.language":D4},F={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},K=(C,f,h)=>{let _=C.contains.findIndex((M)=>M.label===f);if(_===-1)throw Error("can not find mode to replace");C.contains.splice(_,1,h)};Object.assign(Q.keywords,Y),Q.exports.PARAMS_CONTAINS.push(F);let N=Q.contains.find((C)=>C.scope==="attr"),U=Object.assign({},N,{match:J.concat("[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\?:/))});Q.exports.PARAMS_CONTAINS.push([Q.exports.CLASS_REFERENCE,N,U]),Q.contains=Q.contains.concat([F,W,G,U]),K(Q,"shebang",Z.SHEBANG()),K(Q,"use_strict",q);let O=Q.contains.find((C)=>C.label==="func.def");return O.relevance=0,Object.assign(Q,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),Q}m4.exports=Iz});var p4=y0((DY,E4)=>{function Sz(Z){let J=Z.regex,Q={className:"string",begin:/"(""|[^/n])"C\b/},X={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},z=/\d{1,2}\/\d{1,2}\/\d{4}/,W=/\d{4}-\d{1,2}-\d{1,2}/,G=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,q=/\d{1,2}(:\d{1,2}){1,2}/,H={className:"literal",variants:[{begin:J.concat(/# */,J.either(W,z),/ *#/)},{begin:J.concat(/# */,q,/ *#/)},{begin:J.concat(/# */,G,/ *#/)},{begin:J.concat(/# */,J.either(W,z),/ +/,J.either(G,q),/ *#/)}]},Y={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},F={className:"label",begin:/^\w+:/},K=Z.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),N=Z.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[Q,X,H,Y,F,K,N,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[N]}]}}E4.exports=Sz});var d4=y0((xY,c4)=>{function Vz(Z){Z.regex;let J=Z.COMMENT(/\(;/,/;\)/);J.contains.push("self");let Q=Z.COMMENT(/;;/,/$/),X=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],z={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},W={className:"variable",begin:/\$[\w_]+/},G={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},q={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},H={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},Y={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:X},contains:[Q,J,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},W,G,z,Z.QUOTE_STRING_MODE,H,Y,q]}}c4.exports=Vz});var a4=y0((mY,i4)=>{var C0=z7();C0.registerLanguage("xml",G7());C0.registerLanguage("bash",H7());C0.registerLanguage("c",K7());C0.registerLanguage("cpp",U7());C0.registerLanguage("csharp",P7());C0.registerLanguage("css",O7());C0.registerLanguage("markdown",N7());C0.registerLanguage("diff",C7());C0.registerLanguage("ruby",y7());C0.registerLanguage("go",v7());C0.registerLanguage("graphql",k7());C0.registerLanguage("ini",I7());C0.registerLanguage("java",g7());C0.registerLanguage("javascript",x7());C0.registerLanguage("json",u7());C0.registerLanguage("kotlin",p7());C0.registerLanguage("less",a7());C0.registerLanguage("lua",l7());C0.registerLanguage("makefile",o7());C0.registerLanguage("perl",s7());C0.registerLanguage("objectivec",Z4());C0.registerLanguage("php",$4());C0.registerLanguage("php-template",X4());C0.registerLanguage("plaintext",W4());C0.registerLanguage("python",q4());C0.registerLanguage("python-repl",Y4());C0.registerLanguage("r",F4());C0.registerLanguage("rust",L4());C0.registerLanguage("scss",B4());C0.registerLanguage("shell",A4());C0.registerLanguage("sql",w4());C0.registerLanguage("swift",I4());C0.registerLanguage("yaml",V4());C0.registerLanguage("typescript",u4());C0.registerLanguage("vbnet",p4());C0.registerLanguage("wasm",d4());C0.HighlightJS=C0;C0.default=C0;i4.exports=C0});var P8,S0,YJ,z2,R9,WJ,KJ,FJ,G6,H8,vZ,UJ,K6,q6,H6,W2,F8={},U8=[],G2=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,B8=Array.isArray;function C9(Z,J){for(var Q in J)Z[Q]=J[Q];return Z}function F6(Z){Z&&Z.parentNode&&Z.parentNode.removeChild(Z)}function q2(Z,J,Q){var X,z,W,G={};for(W in J)W=="key"?X=J[W]:W=="ref"?z=J[W]:G[W]=J[W];if(arguments.length>2&&(G.children=arguments.length>3?P8.call(arguments,2):Q),typeof Z=="function"&&Z.defaultProps!=null)for(W in Z.defaultProps)G[W]===void 0&&(G[W]=Z.defaultProps[W]);return Y8(Z,G,X,z,null)}function Y8(Z,J,Q,X,z){var W={type:Z,props:J,key:Q,ref:X,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:z==null?++YJ:z,__i:-1,__u:0};return z==null&&S0.vnode!=null&&S0.vnode(W),W}function r(Z){return Z.children}function K8(Z,J){this.props=Z,this.context=J}function zZ(Z,J){if(J==null)return Z.__?zZ(Z.__,Z.__i+1):null;for(var Q;J<Z.__k.length;J++)if((Q=Z.__k[J])!=null&&Q.__e!=null)return Q.__e;return typeof Z.type=="function"?zZ(Z):null}function H2(Z){if(Z.__P&&Z.__d){var J=Z.__v,Q=J.__e,X=[],z=[],W=C9({},J);W.__v=J.__v+1,S0.vnode&&S0.vnode(W),U6(Z.__P,W,J,Z.__n,Z.__P.namespaceURI,32&J.__u?[Q]:null,X,Q==null?zZ(J):Q,!!(32&J.__u),z),W.__v=J.__v,W.__.__k[W.__i]=W,OJ(X,W,z),J.__e=J.__=null,W.__e!=Q&&LJ(W)}}function LJ(Z){if((Z=Z.__)!=null&&Z.__c!=null)return Z.__e=Z.__c.base=null,Z.__k.some(function(J){if(J!=null&&J.__e!=null)return Z.__e=Z.__c.base=J.__e}),LJ(Z)}function GJ(Z){(!Z.__d&&(Z.__d=!0)&&R9.push(Z)&&!L8.__r++||WJ!=S0.debounceRendering)&&((WJ=S0.debounceRendering)||KJ)(L8)}function L8(){try{for(var Z,J=1;R9.length;)R9.length>J&&R9.sort(FJ),Z=R9.shift(),J=R9.length,H2(Z)}finally{R9.length=L8.__r=0}}function PJ(Z,J,Q,X,z,W,G,q,H,Y,F){var K,N,U,O,C,f,h,_=X&&X.__k||U8,M=J.length;for(H=Y2(Q,J,_,H,M),K=0;K<M;K++)(U=Q.__k[K])!=null&&(N=U.__i!=-1&&_[U.__i]||F8,U.__i=K,f=U6(Z,U,N,z,W,G,q,H,Y,F),O=U.__e,U.ref&&N.ref!=U.ref&&(N.ref&&L6(N.ref,null,U),F.push(U.ref,U.__c||O,U)),C==null&&O!=null&&(C=O),(h=!!(4&U.__u))||N.__k===U.__k?(H=BJ(U,H,Z,h),h&&N.__e&&(N.__e=null)):typeof U.type=="function"&&f!==void 0?H=f:O&&(H=O.nextSibling),U.__u&=-7);return Q.__e=C,H}function Y2(Z,J,Q,X,z){var W,G,q,H,Y,F=Q.length,K=F,N=0;for(Z.__k=Array(z),W=0;W<z;W++)(G=J[W])!=null&&typeof G!="boolean"&&typeof G!="function"?(typeof G=="string"||typeof G=="number"||typeof G=="bigint"||G.constructor==String?G=Z.__k[W]=Y8(null,G,null,null,null):B8(G)?G=Z.__k[W]=Y8(r,{children:G},null,null,null):G.constructor===void 0&&G.__b>0?G=Z.__k[W]=Y8(G.type,G.props,G.key,G.ref?G.ref:null,G.__v):Z.__k[W]=G,H=W+N,G.__=Z,G.__b=Z.__b+1,q=null,(Y=G.__i=K2(G,Q,H,K))!=-1&&(K--,(q=Q[Y])&&(q.__u|=2)),q==null||q.__v==null?(Y==-1&&(z>F?N--:z<F&&N++),typeof G.type!="function"&&(G.__u|=4)):Y!=H&&(Y==H-1?N--:Y==H+1?N++:(Y>H?N--:N++,G.__u|=4))):Z.__k[W]=null;if(K)for(W=0;W<F;W++)(q=Q[W])!=null&&(2&q.__u)==0&&(q.__e==X&&(X=zZ(q)),NJ(q,q));return X}function BJ(Z,J,Q,X){var z,W;if(typeof Z.type=="function"){for(z=Z.__k,W=0;z&&W<z.length;W++)z[W]&&(z[W].__=Z,J=BJ(z[W],J,Q,X));return J}Z.__e!=J&&(X&&(J&&Z.type&&!J.parentNode&&(J=zZ(Z)),Q.insertBefore(Z.__e,J||null)),J=Z.__e);do J=J&&J.nextSibling;while(J!=null&&J.nodeType==8);return J}function K2(Z,J,Q,X){var z,W,G,q=Z.key,H=Z.type,Y=J[Q],F=Y!=null&&(2&Y.__u)==0;if(Y===null&&q==null||F&&q==Y.key&&H==Y.type)return Q;if(X>(F?1:0)){for(z=Q-1,W=Q+1;z>=0||W<J.length;)if((Y=J[G=z>=0?z--:W++])!=null&&(2&Y.__u)==0&&q==Y.key&&H==Y.type)return G}return-1}function qJ(Z,J,Q){J[0]=="-"?Z.setProperty(J,Q==null?"":Q):Z[J]=Q==null?"":typeof Q!="number"||G2.test(J)?Q:Q+"px"}function q8(Z,J,Q,X,z){var W,G;Z:if(J=="style")if(typeof Q=="string")Z.style.cssText=Q;else{if(typeof X=="string"&&(Z.style.cssText=X=""),X)for(J in X)Q&&J in Q||qJ(Z.style,J,"");if(Q)for(J in Q)X&&Q[J]==X[J]||qJ(Z.style,J,Q[J])}else if(J[0]=="o"&&J[1]=="n")W=J!=(J=J.replace(UJ,"$1")),G=J.toLowerCase(),J=G in Z||J=="onFocusOut"||J=="onFocusIn"?G.slice(2):J.slice(2),Z.l||(Z.l={}),Z.l[J+W]=Q,Q?X?Q[vZ]=X[vZ]:(Q[vZ]=K6,Z.addEventListener(J,W?H6:q6,W)):Z.removeEventListener(J,W?H6:q6,W);else{if(z=="http://www.w3.org/2000/svg")J=J.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(J!="width"&&J!="height"&&J!="href"&&J!="list"&&J!="form"&&J!="tabIndex"&&J!="download"&&J!="rowSpan"&&J!="colSpan"&&J!="role"&&J!="popover"&&J in Z)try{Z[J]=Q==null?"":Q;break Z}catch(q){}typeof Q=="function"||(Q==null||Q===!1&&J[4]!="-"?Z.removeAttribute(J):Z.setAttribute(J,J=="popover"&&Q==1?"":Q))}}function HJ(Z){return function(J){if(this.l){var Q=this.l[J.type+Z];if(J[H8]==null)J[H8]=K6++;else if(J[H8]<Q[vZ])return;return Q(S0.event?S0.event(J):J)}}}function U6(Z,J,Q,X,z,W,G,q,H,Y){var F,K,N,U,O,C,f,h,_,M,k,T,L,P,w,A=J.type;if(J.constructor!==void 0)return null;128&Q.__u&&(H=!!(32&Q.__u),W=[q=J.__e=Q.__e]),(F=S0.__b)&&F(J);Z:if(typeof A=="function")try{if(h=J.props,_=A.prototype&&A.prototype.render,M=(F=A.contextType)&&X[F.__c],k=F?M?M.props.value:F.__:X,Q.__c?f=(K=J.__c=Q.__c).__=K.__E:(_?J.__c=K=new A(h,k):(J.__c=K=new K8(h,k),K.constructor=A,K.render=U2),M&&M.sub(K),K.state||(K.state={}),K.__n=X,N=K.__d=!0,K.__h=[],K._sb=[]),_&&K.__s==null&&(K.__s=K.state),_&&A.getDerivedStateFromProps!=null&&(K.__s==K.state&&(K.__s=C9({},K.__s)),C9(K.__s,A.getDerivedStateFromProps(h,K.__s))),U=K.props,O=K.state,K.__v=J,N)_&&A.getDerivedStateFromProps==null&&K.componentWillMount!=null&&K.componentWillMount(),_&&K.componentDidMount!=null&&K.__h.push(K.componentDidMount);else{if(_&&A.getDerivedStateFromProps==null&&h!==U&&K.componentWillReceiveProps!=null&&K.componentWillReceiveProps(h,k),J.__v==Q.__v||!K.__e&&K.shouldComponentUpdate!=null&&K.shouldComponentUpdate(h,K.__s,k)===!1){J.__v!=Q.__v&&(K.props=h,K.state=K.__s,K.__d=!1),J.__e=Q.__e,J.__k=Q.__k,J.__k.some(function(y){y&&(y.__=J)}),U8.push.apply(K.__h,K._sb),K._sb=[],K.__h.length&&G.push(K);break Z}K.componentWillUpdate!=null&&K.componentWillUpdate(h,K.__s,k),_&&K.componentDidUpdate!=null&&K.__h.push(function(){K.componentDidUpdate(U,O,C)})}if(K.context=k,K.props=h,K.__P=Z,K.__e=!1,T=S0.__r,L=0,_)K.state=K.__s,K.__d=!1,T&&T(J),F=K.render(K.props,K.state,K.context),U8.push.apply(K.__h,K._sb),K._sb=[];else do K.__d=!1,T&&T(J),F=K.render(K.props,K.state,K.context),K.state=K.__s;while(K.__d&&++L<25);K.state=K.__s,K.getChildContext!=null&&(X=C9(C9({},X),K.getChildContext())),_&&!N&&K.getSnapshotBeforeUpdate!=null&&(C=K.getSnapshotBeforeUpdate(U,O)),P=F!=null&&F.type===r&&F.key==null?AJ(F.props.children):F,q=PJ(Z,B8(P)?P:[P],J,Q,X,z,W,G,q,H,Y),K.base=J.__e,J.__u&=-161,K.__h.length&&G.push(K),f&&(K.__E=K.__=null)}catch(y){if(J.__v=null,H||W!=null)if(y.then){for(J.__u|=H?160:128;q&&q.nodeType==8&&q.nextSibling;)q=q.nextSibling;W[W.indexOf(q)]=null,J.__e=q}else{for(w=W.length;w--;)F6(W[w]);Y6(J)}else J.__e=Q.__e,J.__k=Q.__k,y.then||Y6(J);S0.__e(y,J,Q)}else W==null&&J.__v==Q.__v?(J.__k=Q.__k,J.__e=Q.__e):q=J.__e=F2(Q.__e,J,Q,X,z,W,G,H,Y);return(F=S0.diffed)&&F(J),128&J.__u?void 0:q}function Y6(Z){Z&&(Z.__c&&(Z.__c.__e=!0),Z.__k&&Z.__k.some(Y6))}function OJ(Z,J,Q){for(var X=0;X<Q.length;X++)L6(Q[X],Q[++X],Q[++X]);S0.__c&&S0.__c(J,Z),Z.some(function(z){try{Z=z.__h,z.__h=[],Z.some(function(W){W.call(z)})}catch(W){S0.__e(W,z.__v)}})}function AJ(Z){return typeof Z!="object"||Z==null||Z.__b>0?Z:B8(Z)?Z.map(AJ):Z.constructor!==void 0?null:C9({},Z)}function F2(Z,J,Q,X,z,W,G,q,H){var Y,F,K,N,U,O,C,f=Q.props||F8,h=J.props,_=J.type;if(_=="svg"?z="http://www.w3.org/2000/svg":_=="math"?z="http://www.w3.org/1998/Math/MathML":z||(z="http://www.w3.org/1999/xhtml"),W!=null){for(Y=0;Y<W.length;Y++)if((U=W[Y])&&"setAttribute"in U==!!_&&(_?U.localName==_:U.nodeType==3)){Z=U,W[Y]=null;break}}if(Z==null){if(_==null)return document.createTextNode(h);Z=document.createElementNS(z,_,h.is&&h),q&&(S0.__m&&S0.__m(J,W),q=!1),W=null}if(_==null)f===h||q&&Z.data==h||(Z.data=h);else{if(W=_=="textarea"&&h.defaultValue!=null?null:W&&P8.call(Z.childNodes),!q&&W!=null)for(f={},Y=0;Y<Z.attributes.length;Y++)f[(U=Z.attributes[Y]).name]=U.value;for(Y in f)U=f[Y],Y=="dangerouslySetInnerHTML"?K=U:Y=="children"||(Y in h)||Y=="value"&&("defaultValue"in h)||Y=="checked"&&("defaultChecked"in h)||q8(Z,Y,null,U,z);for(Y in h)U=h[Y],Y=="children"?N=U:Y=="dangerouslySetInnerHTML"?F=U:Y=="value"?O=U:Y=="checked"?C=U:q&&typeof U!="function"||f[Y]===U||q8(Z,Y,U,f[Y],z);if(F)q||K&&(F.__html==K.__html||F.__html==Z.innerHTML)||(Z.innerHTML=F.__html),J.__k=[];else if(K&&(Z.innerHTML=""),PJ(J.type=="template"?Z.content:Z,B8(N)?N:[N],J,Q,X,_=="foreignObject"?"http://www.w3.org/1999/xhtml":z,W,G,W?W[0]:Q.__k&&zZ(Q,0),q,H),W!=null)for(Y=W.length;Y--;)F6(W[Y]);q&&_!="textarea"||(Y="value",_=="progress"&&O==null?Z.removeAttribute("value"):O!=null&&(O!==Z[Y]||_=="progress"&&!O||_=="option"&&O!=f[Y])&&q8(Z,Y,O,f[Y],z),Y="checked",C!=null&&C!=Z[Y]&&q8(Z,Y,C,f[Y],z))}return Z}function L6(Z,J,Q){try{if(typeof Z=="function"){var X=typeof Z.__u=="function";X&&Z.__u(),X&&J==null||(Z.__u=Z(J))}else Z.current=J}catch(z){S0.__e(z,Q)}}function NJ(Z,J,Q){var X,z;if(S0.unmount&&S0.unmount(Z),(X=Z.ref)&&(X.current&&X.current!=Z.__e||L6(X,null,J)),(X=Z.__c)!=null){if(X.componentWillUnmount)try{X.componentWillUnmount()}catch(W){S0.__e(W,J)}X.base=X.__P=null}if(X=Z.__k)for(z=0;z<X.length;z++)X[z]&&NJ(X[z],J,Q||typeof Z.type!="function");Q||F6(Z.__e),Z.__c=Z.__=Z.__e=void 0}function U2(Z,J,Q){return this.constructor(Z,Q)}function D9(Z,J,Q){var X,z,W,G;J==document&&(J=document.documentElement),S0.__&&S0.__(Z,J),z=(X=typeof Q=="function")?null:Q&&Q.__k||J.__k,W=[],G=[],U6(J,Z=(!X&&Q||J).__k=q2(r,null,[Z]),z||F8,F8,J.namespaceURI,!X&&Q?[Q]:z?null:J.firstChild?P8.call(J.childNodes):null,W,!X&&Q?Q:z?z.__e:J.firstChild,X,G),OJ(W,Z,G)}P8=U8.slice,S0={__e:function(Z,J,Q,X){for(var z,W,G;J=J.__;)if((z=J.__c)&&!z.__)try{if((W=z.constructor)&&W.getDerivedStateFromError!=null&&(z.setState(W.getDerivedStateFromError(Z)),G=z.__d),z.componentDidCatch!=null&&(z.componentDidCatch(Z,X||{}),G=z.__d),G)return z.__E=z}catch(q){Z=q}throw Z}},YJ=0,z2=function(Z){return Z!=null&&Z.constructor===void 0},K8.prototype.setState=function(Z,J){var Q;Q=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=C9({},this.state),typeof Z=="function"&&(Z=Z(C9({},Q),this.props)),Z&&C9(Q,Z),Z!=null&&this.__v&&(J&&this._sb.push(J),GJ(this))},K8.prototype.forceUpdate=function(Z){this.__v&&(this.__e=!0,Z&&this.__h.push(Z),GJ(this))},K8.prototype.render=r,R9=[],KJ=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,FJ=function(Z,J){return Z.__v.__b-J.__v.__b},L8.__r=0,G6=Math.random().toString(8),H8="__d"+G6,vZ="__a"+G6,UJ=/(PointerCapture)$|Capture$/i,K6=0,q6=HJ(!1),H6=HJ(!0),W2=0;var WZ,x0,P6,wJ,TZ=0,RJ=[],u0=S0,CJ=u0.__b,MJ=u0.__r,yJ=u0.diffed,_J=u0.__c,vJ=u0.unmount,TJ=u0.__;function A8(Z,J){u0.__h&&u0.__h(x0,Z,TZ||J),TZ=0;var Q=x0.__H||(x0.__H={__:[],__h:[]});return Z>=Q.__.length&&Q.__.push({}),Q.__[Z]}function R(Z){return TZ=1,L2(SJ,Z)}function L2(Z,J,Q){var X=A8(WZ++,2);if(X.t=Z,!X.__c&&(X.__=[Q?Q(J):SJ(void 0,J),function(q){var H=X.__N?X.__N[0]:X.__[0],Y=X.t(H,q);H!==Y&&(X.__N=[Y,X.__[1]],X.__c.setState({}))}],X.__c=x0,!x0.__f)){var z=function(q,H,Y){if(!X.__c.__H)return!0;var F=X.__c.__H.__.filter(function(N){return N.__c});if(F.every(function(N){return!N.__N}))return!W||W.call(this,q,H,Y);var K=X.__c.props!==q;return F.some(function(N){if(N.__N){var U=N.__[0];N.__=N.__N,N.__N=void 0,U!==N.__[0]&&(K=!0)}}),W&&W.call(this,q,H,Y)||K};x0.__f=!0;var{shouldComponentUpdate:W,componentWillUpdate:G}=x0;x0.componentWillUpdate=function(q,H,Y){if(this.__e){var F=W;W=void 0,z(q,H,Y),W=F}G&&G.call(this,q,H,Y)},x0.shouldComponentUpdate=z}return X.__N||X.__}function o(Z,J){var Q=A8(WZ++,3);!u0.__s&&O6(Q.__H,J)&&(Q.__=Z,Q.u=J,x0.__H.__h.push(Q))}function IJ(Z,J){var Q=A8(WZ++,4);!u0.__s&&O6(Q.__H,J)&&(Q.__=Z,Q.u=J,x0.__h.push(Q))}function W0(Z){return TZ=5,M9(function(){return{current:Z}},[])}function M9(Z,J){var Q=A8(WZ++,7);return O6(Q.__H,J)&&(Q.__=Z(),Q.__H=J,Q.__h=Z),Q.__}function x9(Z,J){return TZ=8,M9(function(){return Z},J)}function P2(){for(var Z;Z=RJ.shift();){var J=Z.__H;if(Z.__P&&J)try{J.__h.some(O8),J.__h.some(B6),J.__h=[]}catch(Q){J.__h=[],u0.__e(Q,Z.__v)}}}u0.__b=function(Z){x0=null,CJ&&CJ(Z)},u0.__=function(Z,J){Z&&J.__k&&J.__k.__m&&(Z.__m=J.__k.__m),TJ&&TJ(Z,J)},u0.__r=function(Z){MJ&&MJ(Z),WZ=0;var J=(x0=Z.__c).__H;J&&(P6===x0?(J.__h=[],x0.__h=[],J.__.some(function(Q){Q.__N&&(Q.__=Q.__N),Q.u=Q.__N=void 0})):(J.__h.some(O8),J.__h.some(B6),J.__h=[],WZ=0)),P6=x0},u0.diffed=function(Z){yJ&&yJ(Z);var J=Z.__c;J&&J.__H&&(J.__H.__h.length&&(RJ.push(J)!==1&&wJ===u0.requestAnimationFrame||((wJ=u0.requestAnimationFrame)||B2)(P2)),J.__H.__.some(function(Q){Q.u&&(Q.__H=Q.u),Q.u=void 0})),P6=x0=null},u0.__c=function(Z,J){J.some(function(Q){try{Q.__h.some(O8),Q.__h=Q.__h.filter(function(X){return!X.__||B6(X)})}catch(X){J.some(function(z){z.__h&&(z.__h=[])}),J=[],u0.__e(X,Q.__v)}}),_J&&_J(Z,J)},u0.unmount=function(Z){vJ&&vJ(Z);var J,Q=Z.__c;Q&&Q.__H&&(Q.__H.__.some(function(X){try{O8(X)}catch(z){J=z}}),Q.__H=void 0,J&&u0.__e(J,Q.__v))};var kJ=typeof requestAnimationFrame=="function";function B2(Z){var J,Q=function(){clearTimeout(X),kJ&&cancelAnimationFrame(J),setTimeout(Z)},X=setTimeout(Q,35);kJ&&(J=requestAnimationFrame(Q))}function O8(Z){var J=x0,Q=Z.__c;typeof Q=="function"&&(Z.__c=void 0,Q()),x0=J}function B6(Z){var J=x0;Z.__c=Z.__(),x0=J}function O6(Z,J){return!Z||Z.length!==J.length||J.some(function(Q,X){return Q!==Z[X]})}function SJ(Z,J){return typeof J=="function"?J(Z):J}class m9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="BusError"}}class VJ{ch=null;worker=null;started=!1;leader=!1;nextLocal=0;localPending=new Map;remotePending=new Map;listeners=new Set;start(){if(this.started)return;this.started=!0,this.ch=new BroadcastChannel("mh-replica-bus"),this.ch.onmessage=(J)=>this.onChannel(J.data);let Z=navigator.locks;if(Z)Z.request("mh-replica-leader",()=>{return this.becomeLeader(),new Promise(()=>{})}).catch(()=>{});else this.becomeLeader()}onEvent(Z){return this.listeners.add(Z),()=>this.listeners.delete(Z)}call(Z,...J){if(!this.started)this.start();if(this.leader)return this.workerCall(Z,J);return this.remoteCall(Z,J)}becomeLeader(){if(this.leader)return;this.leader=!0,this.spawnWorker();for(let[Z,J]of[...this.remotePending])this.remotePending.delete(Z),clearTimeout(J.timer),this.workerCall(J.op,J.args).then(J.resolve,J.reject)}spawnWorker(){if(this.worker)return;this.worker=new Worker("/db-worker.js",{type:"module"}),this.worker.onmessage=(Z)=>{let J=Z.data;if("id"in J){let Q=this.localPending.get(J.id);if(!Q)return;if(this.localPending.delete(J.id),J.ok)Q.resolve(J.result);else Q.reject(new m9(J.error.message,J.error.code));return}this.emit(J),this.ch?.postMessage({kind:"event",event:J})},this.worker.onerror=()=>{let Z={event:"status",status:{state:"error",paired:!1,node:null,error:"worker crashed"}};this.emit(Z),this.ch?.postMessage({kind:"event",event:Z})}}workerCall(Z,J){if(!this.worker)this.spawnWorker();let Q=++this.nextLocal;return new Promise((X,z)=>{this.localPending.set(Q,{resolve:X,reject:z}),this.worker.postMessage({id:Q,op:Z,args:J})})}remoteCall(Z,J){let Q=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;return new Promise((X,z)=>{let W=setTimeout(()=>{if(this.remotePending.delete(Q),this.leader){this.workerCall(Z,J).then(X,z);return}z(new m9("replica leader unavailable","network"))},1e4);this.remotePending.set(Q,{resolve:X,reject:z,timer:W,op:Z,args:J}),this.ch?.postMessage({kind:"req",id:Q,op:Z,args:J})})}onChannel(Z){if(Z.kind==="req"){if(!this.leader)return;this.workerCall(Z.op,Z.args).then((J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!0,result:J}),(J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!1,error:{message:J.message,code:J.code}}));return}if(Z.kind==="res"){let J=this.remotePending.get(Z.id);if(!J)return;if(this.remotePending.delete(Z.id),clearTimeout(J.timer),Z.ok)J.resolve(Z.result);else J.reject(new m9(Z.error?.message??"replica error",Z.error?.code));return}if(Z.kind==="event"&&!this.leader)this.emit(Z.event)}emit(Z){for(let J of this.listeners)J(Z)}stopWorker(){this.worker?.terminate(),this.worker=null,this.localPending.forEach((Z)=>Z.reject(new m9("replica stopped",void 0))),this.localPending.clear()}}function N8(){let Z=globalThis;return Z.__mhReplicaBus??=new VJ}function O2(Z,J){if(Z===null)return"unknown";if(Z.status>=500)return"unknown";if(Z.ok)return J?.ok===!0?"server":"none";return"none"}async function fJ(){let Z=null,J=null;try{Z=await fetch("/health",{cache:"no-store"}),J=Z.ok?await Z.json().catch(()=>null):null}catch{Z=null}return O2(Z,J)}var p9="mh-synced",RZ="mh_replica",kZ="mh_replica_hydrated",jJ="mh_origin_mode";class _9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="ReplicaError"}}var v9=!1,y9={state:"booting",paired:!1,node:null},w8=new Set;function IZ(){return y9}function F9(Z){return w8.add(Z),()=>w8.delete(Z)}function A6(Z){try{return localStorage.getItem(Z)==="1"}catch{return!1}}function u9(Z,J){try{J?localStorage.setItem(Z,"1"):localStorage.removeItem(Z)}catch{}}function q9(){return A6(RZ)}function e0(){return q9()&&A6(kZ)&&v9&&y9.state!=="error"}var GZ=(()=>{try{let Z=localStorage.getItem(jJ);return Z==="server"||Z==="none"?Z:null}catch{return null}})();function U9(){return GZ==="none"}function I9(){let Z=U9();return{surface:typeof window<"u"&&window.metahubDesktop?"desktop":"web",dataHome:Z?"local":"server",hold:Z||q9()?"replica":"window"}}async function N6(){if(GZ)return GZ;let Z=await fJ();if(Z==="unknown")return"server";GZ=Z;try{localStorage.setItem(jJ,GZ)}catch{}return GZ}function gJ(Z){if(Z.event==="status"){if(y9=Z.status,y9.lastSync?.ok&&!A6(kZ))u9(kZ,!0),navigator.storage?.persist?.().catch(()=>{});for(let J of w8)J(y9);return}if(Z.event==="synced"){if(document.dispatchEvent(new CustomEvent(p9,{detail:Z})),Z.datasets.some((J)=>J==="databases"||J==="documents"))document.dispatchEvent(new CustomEvent(L9))}}function SZ(){if(v9||typeof Worker>"u")return;v9=!0;let Z=N8();Z.onEvent(gJ),Z.start(),Z.call("status").then((J)=>gJ({event:"status",status:J})).catch(()=>{}),A2(),window.addEventListener("online",E9),document.addEventListener("visibilitychange",E9)}function b0(Z,...J){if(!v9)return Promise.reject(new _9("replica not running",void 0));return N8().call(Z,...J).catch((Q)=>{throw Q instanceof m9?new _9(Q.message,Q.code):Q})}function E9(){if(v9)b0("sync").catch(()=>{})}function hJ(){if(!v9)return Promise.reject(new _9("replica not running",void 0));return b0("sync")}function w6(Z=30000){if(y9.state==="ready")return Promise.resolve();return new Promise((J,Q)=>{let X=setTimeout(()=>{z(),Q(new _9("本地副本启动超时",void 0))},Z),z=F9((W)=>{if(W.state==="ready")clearTimeout(X),z(),J();else if(W.state==="error")clearTimeout(X),z(),Q(new _9(W.error??"本地副本启动失败",void 0))})})}async function DJ(){if(SZ(),await w6(),!y9.paired){let Z=await VZ("/api/pair/new",{method:"POST"});if(!Z.ok)throw new _9(`无法获取配对码: ${Z.status}`,void 0);let{code:J}=await Z.json();await b0("pair",J)}u9(RZ,!0),C8(),E9()}async function xJ(Z,J){SZ(),await w6();let Q=await b0("addStorageReplica",Z,J);return u9(RZ,!0),C8(),E9(),Q}async function mJ(){u9(RZ,!1),u9(kZ,!1);try{if(v9)await b0("unpair")}catch{}await C6()}async function uJ(){u9(RZ,!1),u9(kZ,!1);try{if(v9)await b0("unpair").catch(()=>{}),await b0("reset")}finally{N8().stopWorker(),C6(),v9=!1,y9={state:"booting",paired:!1,node:null};for(let Z of w8)Z(y9)}}function EJ(){if(q9())SZ(),w6().then(()=>E9()).catch(()=>{})}function A2(){let Z=globalThis;if(Z.__mhSwBridge||!("serviceWorker"in navigator))return;Z.__mhSwBridge=!0,navigator.serviceWorker.addEventListener("message",(J)=>{let Q=J.data,X=J.ports?.[0];if(!Q||Q.kind!=="mh-rpc"||!X||!Q.op)return;if(!e0()){X.postMessage({ok:!1,error:{message:"replica unavailable",code:"unavailable"}});return}b0(Q.op,...Q.args??[]).then((z)=>X.postMessage({ok:!0,result:z}),(z)=>X.postMessage({ok:!1,error:{message:z.message,code:z.code}}))})}var bJ=!1;async function C6(){try{if("serviceWorker"in navigator){let Z=await navigator.serviceWorker.getRegistrations();await Promise.all(Z.map((J)=>J.unregister().catch(()=>!1)))}}catch{}try{if("caches"in globalThis){for(let Z of await caches.keys())if(Z.startsWith("mh-shell-")||Z==="mh-api-v1"||Z==="mh-blob-v1")await caches.delete(Z)}}catch{}}function C8(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return;if(typeof window>"u"||!window.isSecureContext)return;if(I9().surface==="desktop"||I9().hold!=="replica"){C6();return}if(navigator.serviceWorker.register("/sw.js").catch((Q)=>{console.warn("[webui] service worker registration failed —",Q)}),bJ)return;bJ=!0;let Z=navigator.serviceWorker.controller!=null,J=!1;navigator.serviceWorker.addEventListener("controllerchange",()=>{if(!Z){Z=!0;return}if(J)return;J=!0,location.reload()})}var N2={invalid_input:400,not_found:404,ambiguous:400,stale:409,conflict:409,auth:401,network:502};function w2(Z){return/^(create|update|delete|move|duplicate|revert)(Database|Document)/.test(Z)}async function M0(Z,...J){try{let Q=await b0(Z,...J);if(w2(Z))document.dispatchEvent(new CustomEvent(L9));return Q}catch(Q){if(Q instanceof _9)throw new S9(Q.message,Q.code,Q.code?N2[Q.code]??400:0);throw Q}}var M6={listDatabases:()=>M0("listDatabases"),createDatabase:(Z)=>M0("createDatabase",Z),updateDatabase:(Z,J)=>M0("updateDatabase",Z,J),duplicateDatabase:(Z,J)=>M0("duplicateDatabase",Z,J),deleteDatabase:(Z)=>M0("deleteDatabase",Z),databaseActivity:(Z,J)=>M0("listDatabaseActivity",Z,J),listProperties:(Z)=>M0("listProperties",Z),createProperty:(Z)=>{let{db:J,...Q}=Z;return M0("addProperty",J,Q)},updateProperty:(Z,J)=>M0("updateProperty",Z,J),setColumnWidth:(Z,J)=>M0("setPropertyWidth",Z,J),deleteProperty:(Z)=>M0("removeProperty",Z),listRecords:(Z,J={})=>M0("listRecords",Z,J),createRecord:(Z,J)=>M0("createRecord",Z,J),getRecord:(Z)=>M0("getRecord",Z),updateRecord:(Z,J)=>M0("updateRecord",Z,J),moveRecord:(Z,J,Q)=>M0("moveRecord",Z,J,Q),deleteRecord:(Z)=>M0("deleteRecord",Z),recordHistory:(Z)=>M0("listRecordRevisions",Z),recordAt:(Z,J)=>M0("recordAtVersion",Z,J),revertRecord:(Z,J)=>M0("revertRecord",Z,J),listDocuments:(Z)=>M0("listDocuments",Z?{database_id:Z}:void 0),listDocumentsByParent:(Z)=>M0("listDocuments",{parent_id:Z}),createDocument:(Z)=>M0("createDocument",Z),getDocument:(Z)=>M0("getDocument",Z),updateDocument:(Z,J)=>{let{if_match:Q,...X}=J;return M0("updateDocument",Z,X,Q)},moveDocument:(Z,J,Q)=>M0("moveDocument",Z,J,Q),duplicateDocument:(Z,J)=>M0("duplicateDocument",Z,J),deleteDocument:(Z)=>M0("deleteDocument",Z),documentHistory:(Z)=>M0("listDocumentRevisions",Z),documentAt:(Z,J)=>M0("documentAtVersion",Z,J),revertDocument:(Z,J)=>M0("revertDocument",Z,J.to,J.if_match),nodes:()=>M0("nodes"),search:(Z,J)=>M0("search",Z,J)},y6={listSites:()=>M0("listSites"),listSiteFiles:(Z)=>M0("listSiteFiles",Z),createSite:(Z)=>M0("createSite",Z),updateSite:(Z,J)=>M0("updateSite",Z,J),deleteSite:(Z)=>M0("deleteSite",Z),deleteSiteFile:(Z,J)=>M0("deleteSiteFile",Z,J),uploadSiteFile:async(Z,J,Q)=>M0("putSiteFile",Z,J,await Q.arrayBuffer(),Q.type||void 0)};var pJ=209715200,C2=Math.floor(167772160);function M2(Z){if(Z instanceof ArrayBuffer)return Z;let J=new Uint8Array(Z.byteLength);return J.set(Z),J.buffer}async function y2(Z){let J=await crypto.subtle.digest("SHA-256",M2(Z));return[...new Uint8Array(J)].map((Q)=>Q.toString(16).padStart(2,"0")).join("")}async function cJ(Z){return(await y2(Z)).slice(0,32)}var _2={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",svg:"image/svg+xml",pdf:"application/pdf"};function dJ(Z){let J=Z.toLowerCase().split(";")[0].trim();for(let[Q,X]of Object.entries(_2))if(X===J&&Q!=="jpeg")return Q;return""}var M8=null;function v2(){if(M8)return M8;return M8=new Promise((Z,J)=>{let Q=indexedDB.open("mh-blobs",1);Q.onupgradeneeded=()=>{let X=Q.result;if(!X.objectStoreNames.contains("spool"))X.createObjectStore("spool",{keyPath:"hash"});if(!X.objectStoreNames.contains("meta"))X.createObjectStore("meta",{keyPath:"hash"})},Q.onsuccess=()=>Z(Q.result),Q.onerror=()=>J(Q.error)}),M8}function Z9(Z,J,Q){return v2().then((X)=>new Promise((z,W)=>{let G=Q(X.transaction(Z,J).objectStore(Z));G.onsuccess=()=>z(G.result),G.onerror=()=>W(G.error)}))}async function iJ(Z,J,Q){let X={hash:Z,bytes:J,content_type:Q,created:Date.now(),durable:0};await Z9("spool","readwrite",(z)=>z.put(X))}async function fZ(){return(await Z9("spool","readonly",(J)=>J.getAll())??[]).filter((J)=>!J.durable)}async function aJ(Z){await Z9("spool","readwrite",(J)=>J.delete(Z))}var gZ=(Z)=>`/blob/${Z}`;async function T2(Z,J,Q){let X=await Z9("meta","readonly",(W)=>W.get(Z)),z={hash:Z,size:J,accessed:Date.now(),pinned:X?.pinned??0,content_type:Q??X?.content_type};await Z9("meta","readwrite",(W)=>W.put(z))}async function nJ(Z,J){let Q=await Z9("meta","readonly",(X)=>X.get(Z));if(!Q)return!1;return Q.pinned=J?1:0,await Z9("meta","readwrite",(X)=>X.put(Q)),!0}async function lJ(Z,J,Q){await(await caches.open("mh-blob-v1")).put(gZ(Z),new Response(J,{headers:{"content-type":Q,"cache-control":"public, max-age=31536000, immutable"}})),await T2(Z,J.byteLength,Q),await k2()}async function k2(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=Z.reduce((z,W)=>z+W.size,0);if(J<=209715200)return;let Q=await caches.open("mh-blob-v1"),X=Z.filter((z)=>!z.pinned).sort((z,W)=>z.accessed-W.accessed);for(let z of X){if(J<=C2)break;await Q.delete(gZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),J-=z.size}}async function rJ(){let Z=await Z9("meta","readonly",(X)=>X.getAll())??[],J=0,Q=0;for(let X of Z)if(J+=X.size,X.pinned)Q+=X.size;return{count:Z.length,totalBytes:J,pinnedBytes:Q}}async function oJ(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=await caches.open("mh-blob-v1"),Q=0,X=0;for(let z of Z){if(z.pinned)continue;await J.delete(gZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),Q++,X+=z.size}return{cleared:Q,freedBytes:X}}async function tJ(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=await caches.open("mh-blob-v1"),Q=[],X=new Set;for(let z of Z){let W=z.content_type??null;if(!W)W=(await J.match(gZ(z.hash)))?.headers.get("content-type")??null;Q.push({hash:z.hash,size:z.size,content_type:W,accessed:z.accessed,pinned:!!z.pinned,pending:!1}),X.add(z.hash)}for(let z of await fZ()){if(X.has(z.hash))continue;Q.push({hash:z.hash,size:z.bytes.byteLength,content_type:z.content_type||null,accessed:z.created,pinned:!1,pending:!0})}return Q}async function _6(Z){let J=await caches.open("mh-blob-v1"),Q=0,X=0;for(let z of new Set(Z)){let W=await Z9("meta","readonly",(G)=>G.get(z));if(!W||W.pinned)continue;await J.delete(gZ(z)),await Z9("meta","readwrite",(G)=>G.delete(z)),Q++,X+=W.size}return{cleared:Q,freedBytes:X}}async function sJ(Z){let{cleared:J,freedBytes:Q}=await _6(Z);return{removed:J,freedBytes:Q}}class S9 extends Error{code;status;constructor(Z,J,Q){super(Z);this.code=J;this.status=Q;this.name="ApiError"}}var L9="mh-nav-invalidate";function R2(Z,J){return Z!=="GET"&&(J.startsWith("/api/database")||J.startsWith("/api/document"))}var T6="mh_token",Q5="/auth/token";function k6(){try{return localStorage.getItem(T6)}catch{return null}}function X5(Z){try{localStorage.setItem(T6,Z)}catch{}document.cookie=`${T6}=${encodeURIComponent(Z)}; path=/; SameSite=Strict; Max-Age=31536000`}function z5(){return k6()}async function VZ(Z,J={}){let Q=k6(),X=new Headers(J.headers);if(Q&&!X.has("authorization"))X.set("authorization",`Bearer ${Q}`);let z=await fetch(Z,{...J,headers:X});if(z.status!==401||!Q)return z;let W=await fetch(Q5,{headers:{authorization:`Bearer ${Q}`}}).catch(()=>null);if(!W?.ok)return z;let G=await W.json().catch(()=>null);if(!G?.token)return z;return X5(G.token),X.set("authorization",`Bearer ${G.token}`),fetch(Z,{...J,headers:X})}function eJ(Z,J,Q,X,z){return new Promise((W,G)=>{let q=new XMLHttpRequest;if(q.open("POST",Z),Q)q.setRequestHeader("authorization",`Bearer ${Q}`);if(q.setRequestHeader("content-type",X),z)q.upload.onprogress=(H)=>{if(H.lengthComputable)z(H.loaded,H.total)};q.onload=()=>{let H=null;try{H=JSON.parse(q.responseText)}catch{}W({status:q.status,data:H})},q.onerror=()=>G(Error("network error")),q.ontimeout=()=>G(Error("timeout")),q.send(J)})}async function I2(Z,J,Q,X){let z=k6(),W=await eJ(Z,J,z,Q,X);if(W.status===401&&z){let G=await fetch(Q5,{headers:{authorization:`Bearer ${z}`}}).catch(()=>null),q=G?.ok?await G.json().catch(()=>null):null;if(q?.token)X5(q.token),W=await eJ(Z,J,q.token,Q,X)}if(W.status>=200&&W.status<300&&W.data&&!W.data.error)return W.data;throw Error(W.data&&W.data.error||`${W.status}`)}async function Y0(Z,J,Q){let X=await VZ(J,{method:Z,headers:Q!==void 0?{"content-type":"application/json"}:void 0,body:Q!==void 0?JSON.stringify(Q):void 0}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw new S9(z&&z.error||`${X.status} ${X.statusText}`,z?.code,X.status);if(R2(Z,J))document.dispatchEvent(new CustomEvent(L9));return z}var w0=(Z)=>encodeURIComponent(Z),v6=!1;async function W5(){if(v6||U9())return;v6=!0;try{for(let Z of await fZ()){let J;try{J=await VZ("/api/blob",{method:"POST",headers:{"content-type":Z.content_type},body:Z.bytes})}catch{break}if(!J.ok)break;await lJ(Z.hash,Z.bytes,Z.content_type).catch(()=>{}),await aJ(Z.hash).catch(()=>{})}}finally{v6=!1}}if(typeof window<"u")window.addEventListener("online",()=>void W5());var G5={image:26214400,video:104857600,audio:104857600,file:104857600};function Z5(Z){let J=Z.split(/[?#]/,1)[0]??Z,Q=J.slice(J.lastIndexOf("/")+1),X=Q.lastIndexOf(".");return X>=0?Q.slice(X+1).toLowerCase():""}function J5(Z,J,Q,X){let z=Z5(J)||Z5(X)||dJ(Q);return`/blob/${Z}${z?"."+z:""}`}async function $5(Z,J){let Q=Z.type||"application/octet-stream",X=Z.name||"";try{let z=await I2("/api/blob",Z,Q,J);W5();let W=z;return{...W,url:J5(W.hash,W.url,Q,X)}}catch(z){if(!(e0()||U9()))throw z;let W=await Z.arrayBuffer(),G=await cJ(W);return await iJ(G,W,Q),J?.(W.byteLength,W.byteLength),{hash:G,size:W.byteLength,content_type:Q,url:J5(G,"",Q,X)}}}var S2={listDatabases:()=>Y0("GET","/api/databases"),createDatabase:(Z)=>Y0("POST","/api/databases",Z),updateDatabase:(Z,J)=>Y0("PATCH",`/api/database?id=${w0(Z)}`,J),duplicateDatabase:(Z,J)=>Y0("POST",`/api/database/duplicate?id=${w0(Z)}`,J??{}),deleteDatabase:(Z)=>Y0("DELETE",`/api/database?id=${w0(Z)}`),listProperties:(Z)=>Y0("GET",`/api/properties?db=${w0(Z)}`),createProperty:(Z)=>Y0("POST","/api/properties",Z),updateProperty:(Z,J)=>Y0("PATCH",`/api/property?id=${w0(Z)}`,J),setColumnWidth:(Z,J)=>Y0("PATCH",`/api/property/width?id=${w0(Z)}`,{width:J}),deleteProperty:(Z)=>Y0("DELETE",`/api/property?id=${w0(Z)}`),listRecords:(Z,J={})=>{let Q=new URLSearchParams({db:Z});if(J.sort)Q.set("sort",J.sort);if(J.limit!=null)Q.set("limit",String(J.limit));return Y0("GET",`/api/records?${Q}`)},createRecord:(Z,J)=>Y0("POST",`/api/records?db=${w0(Z)}`,J),getRecord:(Z)=>Y0("GET",`/api/record?id=${w0(Z)}`),updateRecord:(Z,J)=>Y0("PATCH",`/api/record?id=${w0(Z)}`,J),moveRecord:(Z,J,Q)=>Y0("PATCH",`/api/record/order?id=${w0(Z)}`,{target:J,where:Q}),deleteRecord:(Z)=>Y0("DELETE",`/api/record?id=${w0(Z)}`),listDocuments:(Z)=>Y0("GET",Z?`/api/documents?db=${w0(Z)}`:"/api/documents"),listDocumentsByParent:(Z)=>Y0("GET",`/api/documents?parent=${w0(Z)}`),createDocument:(Z)=>Y0("POST","/api/documents",Z),getDocument:(Z)=>Y0("GET",`/api/document?id=${w0(Z)}`),updateDocument:(Z,J)=>Y0("PATCH",`/api/document?id=${w0(Z)}`,J),moveDocument:(Z,J,Q)=>Y0("PATCH",`/api/document/move?id=${w0(Z)}`,{target:J,where:Q}),duplicateDocument:(Z,J)=>Y0("POST",`/api/document/duplicate?id=${w0(Z)}`,J??{}),deleteDocument:(Z)=>Y0("DELETE",`/api/document?id=${w0(Z)}`),documentHistory:(Z)=>Y0("GET",`/api/document/history?id=${w0(Z)}`),documentAt:(Z,J)=>Y0("GET",`/api/document/at?id=${w0(Z)}&version=${w0(J)}`),revertDocument:(Z,J)=>Y0("POST",`/api/document/revert?id=${w0(Z)}`,J),recordHistory:(Z)=>Y0("GET",`/api/record/history?id=${w0(Z)}`),databaseActivity:(Z,J)=>Y0("GET",`/api/database/activity?db=${w0(Z)}${J!=null?`&limit=${J}`:""}`),recordAt:(Z,J)=>Y0("GET",`/api/record/at?id=${w0(Z)}&version=${w0(J)}`),revertRecord:(Z,J)=>Y0("POST",`/api/record/revert?id=${w0(Z)}`,{to:J}),nodes:()=>Y0("GET","/api/nodes"),search:(Z,J)=>{let Q=new URLSearchParams({q:Z});if(J!=null)Q.set("limit",String(J));return Y0("GET",`/api/search?${Q}`)},listPeers:()=>Y0("GET","/api/peers"),newPairingCode:()=>Y0("POST","/api/pair/new"),addPeerByPairing:(Z)=>Y0("POST","/api/peers/pair",Z),updatePeer:(Z,J)=>Y0("PATCH",`/api/peer?url=${w0(Z)}`,J),removePeer:(Z)=>Y0("DELETE",`/api/peer?url=${w0(Z)}`),syncPeer:(Z)=>Y0("POST",`/api/peer/sync?url=${w0(Z)}`),listServerS3Peers:()=>Y0("GET","/api/peers/s3"),addServerS3Peer:(Z)=>Y0("POST","/api/peer/s3",Z),serverS3Config:(Z)=>Y0("GET",`/api/peer/s3/config?url=${w0(Z)}`),listGrants:()=>Y0("GET","/api/grants"),revokeGrant:(Z)=>Y0("DELETE",`/api/grant?token=${w0(Z)}`),listSites:()=>Y0("GET","/api/sites"),listSiteFiles:(Z)=>Y0("GET",`/api/site/files?site=${w0(Z)}`),createSite:(Z)=>Y0("POST","/api/sites",Z),updateSite:(Z,J)=>Y0("PATCH",`/api/site?id=${w0(Z)}`,J),deleteSite:(Z)=>Y0("DELETE",`/api/site?id=${w0(Z)}`),deleteSiteFile:(Z,J)=>Y0("DELETE",`/api/site/file?site=${w0(Z)}&path=${w0(J)}`),uploadSiteFile:async(Z,J,Q)=>{let X=await VZ(`/api/site/file?site=${w0(Z)}&path=${w0(J)}`,{method:"POST",headers:{"content-type":Q.type||"application/octet-stream"},body:Q}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw Error(z&&z.error||`${X.status} ${X.statusText}`);return z},uploadDocBlob:$5,uploadDocImage:$5,listShareServers:()=>Y0("GET","/api/share/servers"),listShareBuckets:()=>Y0("GET","/api/share/buckets"),listShares:(Z={})=>Y0("GET",`/api/shares${Z.target?`?target=${w0(Z.target)}`:""}`),createShare:(Z)=>Y0("POST","/api/share",Z),revokeShare:(Z)=>Y0("DELETE",`/api/share?slug=${w0(Z)}`),renewShare:(Z)=>Y0("POST",`/api/share/renew?slug=${w0(Z)}`),blobCache:()=>Y0("GET","/api/blob-cache"),verifyBlobCache:()=>Y0("POST","/api/blob-cache/verify"),clearBlobCache:()=>Y0("POST","/api/blob-cache/clear"),setBlobPolicy:(Z)=>Y0("POST","/api/blob-policy",Z),pinBlob:(Z,J)=>Y0("POST","/api/blob-cache/pin",{hash:Z,pinned:J}),blobs:()=>Y0("GET","/api/blobs"),clearBlobs:(Z)=>Y0("POST","/api/blobs/clear",{hashes:Z}),deleteBlobs:(Z)=>Y0("POST","/api/blobs/delete",{hashes:Z}),version:()=>Y0("GET","/api/version")},d=new Proxy(S2,{get(Z,J,Q){if(e0()){if(J in M6)return M6[J];if(U9()&&J in y6)return y6[J]}return Reflect.get(Z,J,Q)}}),qZ={text:{ic:"text",t:"文本"},number:{ic:"hash",t:"数字"},select:{ic:"select",t:"单选"},multi_select:{ic:"multi",t:"多选"},checkbox:{ic:"checkbox",t:"复选框"},date:{ic:"calendar",t:"日期"},url:{ic:"link",t:"链接"},relation:{ic:"relation",t:"关联"}};class HZ extends Error{code;constructor(Z,J){super(J);this.code=Z;this.name="MhError"}}function V2(Z){let J=new TextEncoder().encode(Z),Q="";for(let X=0;X<J.length;X++)Q+=String.fromCharCode(J[X]);return btoa(Q).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function f2(Z){let J=Z.replace(/-/g,"+").replace(/_/g,"/"),Q=atob(J),X=new Uint8Array(Q.length);for(let z=0;z<Q.length;z++)X[z]=Q.charCodeAt(z);return new TextDecoder().decode(X)}function R6(Z){let J={endpoint:Z.endpoint,region:Z.region,bucket:Z.bucket,prefix:Z.prefix,accessKeyId:Z.accessKeyId,secretAccessKey:Z.secretAccessKey,encrypt:Z.encrypt,virtualHostedStyle:Z.virtualHostedStyle};return V2(JSON.stringify(J))}function q5(Z){let J=(Z??"").trim();if(!J)throw new HZ("invalid_input","empty enroll code");let Q=/(?:[#&?]|^)enroll=([^&\s]+)/.exec(J),X=Q?Q[1]:J,z;try{z=JSON.parse(f2(X))}catch{throw new HZ("invalid_input","invalid enroll code (could not decode)")}if(!z||typeof z!=="object")throw new HZ("invalid_input","invalid enroll code (not an object)");let W=z,G=(q)=>{let H=W[q];if(typeof H!=="string"||H.trim()==="")throw new HZ("invalid_input",`enroll code missing '${q}'`);return H};return{endpoint:G("endpoint"),bucket:G("bucket"),accessKeyId:G("accessKeyId"),secretAccessKey:G("secretAccessKey"),region:typeof W.region==="string"?W.region:void 0,prefix:typeof W.prefix==="string"?W.prefix:void 0,encrypt:typeof W.encrypt==="boolean"?W.encrypt:void 0,virtualHostedStyle:typeof W.virtualHostedStyle==="boolean"?W.virtualHostedStyle:void 0}}var g2=0;function $(Z,J,Q,X,z,W){J||(J={});var G,q,H=J;if("ref"in H)for(q in H={},J)q=="ref"?G=J[q]:H[q]=J[q];var Y={type:Z,props:H,key:Q,ref:G,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--g2,__i:-1,__u:0,__source:z,__self:W};if(typeof Z=="function"&&(G=Z.defaultProps))for(q in G)H[q]===void 0&&(H[q]=G[q]);return S0.vnode&&S0.vnode(Y),Y}var I6="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z",S6="m3 7.5 9 5.5 9-5.5M12 22v-9";var b2={cube:'<path d="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z"/><path d="m3 7.5 9 5.5 9-5.5M12 22v-9"/>',chevron:'<path d="m9 6 6 6-6 6"/>',chevronDown:'<path d="m6 9 6 6 6-6"/>',arrowLeft:'<path d="M15 18l-6-6 6-6"/>',plus:'<path d="M12 5v14M5 12h14"/>',pin:'<path d="M9 4h6l-1 6 3 3v2H7v-2l3-3z"/><path d="M12 16v5"/>',search:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2"/>',dots:'<circle cx="5" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="19" cy="12" r="1.4" fill="currentColor" stroke="none"/>',grip:'<circle cx="9" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="18" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="18" r="1.3" fill="currentColor" stroke="none"/>',trash:'<path d="M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13M10 11v6M14 11v6"/>',filter:'<path d="M3 5h18l-7 8v6l-4-2v-4z"/>',sort:'<path d="M7 3v14M7 17l-3-3M7 17l3-3M17 21V7M17 7l-3 3M17 7l3 3"/>',group:'<rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/>',check:'<path d="M5 12.5 10 17l9-10"/>',x:'<path d="M6 6 18 18M18 6 6 18"/>',file:'<path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5"/>',database:'<ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.66 3.58 3 8 3s8-1.34 8-3V5"/><path d="M4 12c0 1.66 3.58 3 8 3s8-1.34 8-3"/>',table:'<rect x="3" y="4" width="18" height="16" rx="1.5"/><path d="M3 10h18M3 15h18M9 4v16M15 4v16"/>',alignLeft:'<path d="M4 6h16M4 12h10M4 18h13"/>',alignCenter:'<path d="M4 6h16M7 12h10M5 18h14"/>',alignRight:'<path d="M4 6h16M10 12h10M7 18h13"/>',share:'<path d="M4 12v7a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-7"/><path d="M12 3v13M8 7l4-4 4 4"/>',download:'<path d="M12 3v12M8 11l4 4 4-4"/><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',link:'<path d="M10 13a5 5 0 0 0 7 0l2-2a5 5 0 0 0-7-7l-1 1"/><path d="M14 11a5 5 0 0 0-7 0l-2 2a5 5 0 0 0 7 7l1-1"/>',calendar:'<rect x="3" y="4" width="18" height="17" rx="2"/><path d="M3 9h18M8 2v4M16 2v4"/>',timeline:'<rect x="3" y="5" width="9" height="3" rx="1.5"/><rect x="8" y="10.5" width="11" height="3" rx="1.5"/><rect x="5" y="16" width="7" height="3" rx="1.5"/>',hash:'<path d="M4 9h16M4 15h16M10 3 8 21M16 3l-2 18"/>',text:'<path d="M4 6h16M4 6v-.5M8 6v13M4 19h8"/><path d="M14 11h6M17 11v8M14 19h6"/>',list:'<path d="M9 6h11M9 12h11M9 18h11M4.5 6h.01M4.5 12h.01M4.5 18h.01"/>',numList:'<path d="M10 6h10M10 12h10M10 18h10M4 5h1v4M4 9h2M4 13.5c0-.8 2-.8 2 0 0 .8-2 1.2-2 2.5h2"/>',checkbox:'<rect x="4" y="4" width="16" height="16" rx="3"/><path d="m9 12 2 2 4-4"/>',select:'<circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="3" fill="currentColor" stroke="none"/>',multi:'<path d="M8 6h12M8 12h12M8 18h12M3 6h.01M3 12h.01M3 18h.01"/>',relation:'<path d="M7 7h4v4H7zM13 13h4v4h-4z"/><path d="M11 9h2a2 2 0 0 1 2 2v2"/>',quote:'<path d="M7 7c-2 1-3 3-3 6h3v4H4v-4M17 7c-2 1-3 3-3 6h3v4h-3v-4"/>',code:'<path d="m8 8-4 4 4 4M16 8l4 4-4 4M13 6l-2 12"/>',minus:'<path d="M5 12h14"/>',heading:'<path d="M6 4v16M18 4v16M6 12h12"/>',panelLeft:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M9 4v16"/>',cornerUpRight:'<path d="M5 19V11a4 4 0 0 1 4-4h10M15 3l4 4-4 4"/>',openPeek:'<rect x="3" y="5" width="18" height="14" rx="2.5"/><rect x="6" y="8" width="4" height="8" rx="1" fill="currentColor" stroke="none"/>',settings:'<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/>',eyeOff:'<path d="M4 4l16 16M9.5 9.5a3 3 0 0 0 4 4M6.5 6.7C4.5 8 3 10 2 12c2 4 6 7 10 7 1.6 0 3-.4 4.4-1.1M9.5 5.2A9.7 9.7 0 0 1 12 5c4 0 8 3 10 7-.6 1.3-1.5 2.5-2.5 3.5"/>',bold:'<path d="M6 4h7a4 4 0 0 1 0 8H6zM6 12h8a4 4 0 0 1 0 8H6z"/>',italic:'<path d="M19 4h-9M14 20H5M15 4 9 20"/>',underline:'<path d="M6 4v6a6 6 0 0 0 12 0V4M4 21h16"/>',strike:'<path d="M4 12h16M7 7a4 4 0 0 1 7-1M9 17a4 4 0 0 0 7-2"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/>',moon:'<path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/>',history:'<path d="M3 12a9 9 0 1 0 2.6-6.4L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l3.5 2"/>',monitor:'<rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8M12 17v4"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c2.4 2.5 3.7 5.7 3.7 9S14.4 18.5 12 21c-2.4-2.5-3.7-5.7-3.7-9S9.6 5.5 12 3z"/>',eye:'<path d="M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"/><circle cx="12" cy="12" r="3"/>',lock:'<rect x="4.5" y="11" width="15" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',upload:'<path d="M12 16V4M8 8l4-4 4 4M5 20h14"/>',spinner:'<path d="M21 12a9 9 0 1 1-6.219-8.56"/>',cloudUp:'<path d="M12 13v8"/><path d="m8 17 4-4 4 4"/><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"/>',cloudCheck:'<path d="M17 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 0 1 2.86 8"/><path d="m9 14 2 2 4-4"/>',cloudOff:'<path d="m2 2 20 20"/><path d="M5.78 5.78A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.3-.2"/><path d="M21.4 14.4A4.5 4.5 0 0 0 17.5 8h-1.8A7 7 0 0 0 9.4 4.6"/>',externalLink:'<path d="M14 4h6v6M20 4l-9 9M19 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h5"/>',image:'<rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.6"/><path d="m21 15-4.5-4.5L6 21"/>',video:'<rect x="2.5" y="6" width="13" height="12" rx="2"/><path d="m16 10 5.2-3a.5.5 0 0 1 .8.4v9.2a.5.5 0 0 1-.8.4L16 14z"/>',audio:'<path d="M9 18V5l11-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/>',htmlTag:'<path d="m9 8-4 4 4 4M15 8l4 4-4 4"/>',zoomIn:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2M11 8.5v5M8.5 11h5"/>',zoomOut:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2M8.5 11h5"/>',square:'<rect x="4" y="4" width="16" height="16" rx="1.5"/>',arrowUpRight:'<path d="M7 17 17 7M8 7h9v9"/>',type:'<path d="M4 7V5h16v2M9 19h6M12 5v14"/>',maximize:'<path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/>',pencil:'<path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"/>',undo:'<path d="M9 14 4 9l5-5"/><path d="M4 9h11a4 4 0 0 1 0 8h-2"/>'};function g({name:Z,cls:J="ico"}){return $("svg",{class:J,viewBox:"0 0 24 24",dangerouslySetInnerHTML:{__html:b2[Z]??""}},void 0,!1,void 0,this)}var X9={text:"text",number:"hash",select:"select",multi_select:"multi",checkbox:"checkbox",date:"calendar",url:"link",relation:"relation"};function c9(Z,J){let Q=J.threshold??4,X=Q===0,z=(G)=>{if(G.pointerId!==Z.pointerId)return;if(!X){if(Math.hypot(G.clientX-Z.clientX,G.clientY-Z.clientY)<Q)return;X=!0,J.onStart?.(G)}G.preventDefault(),J.onMove(G)},W=(G)=>{if(G.pointerId!==Z.pointerId)return;removeEventListener("pointermove",z),removeEventListener("pointerup",W),removeEventListener("pointercancel",W),J.onEnd?.(G,X)};addEventListener("pointermove",z,{passive:!1}),addEventListener("pointerup",W),addEventListener("pointercancel",W)}function O9(){document.querySelectorAll(".drop-into,.drop-before,.drop-after").forEach((Z)=>Z.classList.remove("drop-into","drop-before","drop-after"))}function y8(Z,J,Q){O9();let X=Z.getBoundingClientRect(),z=Q==="y"?J.clientY<X.top+X.height/2?"before":"after":J.clientX<X.left+X.width/2?"before":"after";return Z.classList.add("drop-"+z),z}function V6(Z,J,Q){let X=document.createElement("div");return X.className="drag-ghost "+Z,X.style.width=`${J.width}px`,X.style.height=`${J.height}px`,X.textContent=Q,document.body.appendChild(X),X}function bZ(Z,J,Q){if(!Z)return;Z.style.transform=`translate3d(${Math.round(J)}px, ${Math.round(Q)}px, 0)`}function H5(Z,J){let Q=J.source.getBoundingClientRect(),X=Z.clientX-Q.left,z=Z.clientY-Q.top,W=null,G=null,q="before";c9(Z,{onStart:()=>{W=V6(J.ghostCls,Q,J.ghostText),J.source.classList.add("drag-source"),document.body.classList.add("table-dragging"),J.onActivate?.()},onMove:(H)=>{bZ(W,H.clientX-X,H.clientY-z);let Y=document.elementFromPoint(H.clientX,H.clientY)?.closest?.(J.targetSelector);if(!Y||J.isSelf(Y)){O9(),G=null;return}G=Y,q=y8(Y,H,J.axis)},onEnd:(H,Y)=>{if(W?.remove(),J.source.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),O9(),Y&&G)J.onDrop(G,q);J.onFinish?.(Y)}})}function _8(Z,J){let Q=Z.currentTarget,X=J.startWidth,z=0;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let W=Q.closest("table");if(W)Q.style.setProperty("--rz-guide-h",W.offsetHeight+"px");c9(Z,{threshold:0,onMove:(G)=>{if(X=Math.max(J.min,J.startWidth+G.clientX-Z.clientX),!z)z=requestAnimationFrame(()=>{if(z=0,J.col)J.col.style.width=X+"px"})},onEnd:()=>{if(z)cancelAnimationFrame(z);if(J.col)J.col.style.width=X+"px";Q.classList.remove("dragging"),Q.style.removeProperty("--rz-guide-h"),document.body.classList.remove("col-resizing"),J.onDone(X)}})}var v8="(max-width: 768px) and (pointer: coarse)";function T8(Z){let J=Z,Q=new Set;return{get:()=>J,set:(X)=>{J=X,Q.forEach((z)=>z(X))},use(){let[X,z]=R(J);return o(()=>{return Q.add(z),()=>void Q.delete(z)},[]),X}}}var jZ=T8([]),j2=0;function s(Z){let J=++j2;jZ.set([...jZ.get(),{id:J,msg:Z}]),setTimeout(()=>jZ.set(jZ.get().filter((Q)=>Q.id!==J)),2600)}var d9=T8([]),h2=0;function f6(Z,J){d9.set(d9.get().map((Q)=>Q.id===Z?{...Q,...J}:Q))}function g6(Z){d9.set(d9.get().filter((J)=>J.id!==Z))}function K5(Z){let J=++h2;return d9.set([...d9.get(),{id:J,name:Z,loaded:0,total:0}]),J}function F5(Z,J,Q){f6(Z,{loaded:J,total:Q})}function b6(Z,J,Q){if(J)f6(Z,{loaded:1,total:1}),setTimeout(()=>g6(Z),900);else f6(Z,{failed:!0,retry:Q})}function D2(){let Z=d9.use();if(!Z.length)return null;return $("div",{class:"upload-tray",children:Z.map((J)=>{let Q=J.failed?null:J.total>0?Math.min(100,Math.round(J.loaded/J.total*100)):null;return $("div",{class:"upload-item"+(J.failed?" failed":""),children:[$("span",{class:"up-name",title:J.name,children:J.name},void 0,!1,void 0,this),J.failed?$("span",{class:"up-fail",children:[$("span",{children:"失败"},void 0,!1,void 0,this),J.retry&&$("button",{class:"up-retry",onClick:()=>{J.retry?.(),g6(J.id)},children:"重试"},void 0,!1,void 0,this),$("button",{class:"up-x",title:"移除",onClick:()=>g6(J.id),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("span",{class:"up-prog",children:[$("span",{class:"ver-bar"+(Q==null?" indet":""),children:$("span",{class:"ver-bar-fill",style:Q!=null?{width:`${Q}%`}:void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"up-pct",children:Q!=null?`${Q}%`:"…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},J.id,!0,void 0,this)})},void 0,!1,void 0,this)}var j6=T8(null);function _0(Z,J,Q={}){j6.set({render:J,anchor:Z,minWidth:Q.minWidth})}function Y5(){j6.set(null)}function x2(Z){if(Z instanceof MouseEvent)return{x:Z.clientX,y:Z.clientY};if("rect"in Z)return{x:Z.rect.left,y:Z.rect.bottom,bottom:Z.rect.bottom};return{x:Z.x,y:Z.y}}function m2(){let Z=j6.use(),J=W0(null),[Q,X]=R(null),z=matchMedia(v8).matches;if(IJ(()=>{if(!Z||!J.current||z)return X(null);let{x:W,y:G}=x2(Z.anchor),q=J.current.getBoundingClientRect();X({left:Math.min(W,innerWidth-q.width-10),top:Math.min(G+4,innerHeight-q.height-10)})},[Z,z]),!Z)return null;return $("div",{class:"menu-layer",onMouseDown:(W)=>W.target===W.currentTarget&&Y5(),children:$("div",{ref:J,class:"pop"+(z?" sheet":""),style:z?void 0:{left:Q?.left??-9999,top:Q?.top??-9999,minWidth:Z.minWidth},onMouseDown:(W)=>W.stopPropagation(),children:Z.render(Y5)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function h0({children:Z}){return $("div",{class:"lbl",children:Z},void 0,!1,void 0,this)}function f0(){return $("div",{class:"sep"},void 0,!1,void 0,this)}function z0({icon:Z,label:J,sublabel:Q,danger:X,checked:z,onClick:W}){return $("button",{class:"item"+(X?" danger":""),onClick:W,children:[Z&&$("span",{class:"lico plain",children:$(g,{name:Z,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:J},void 0,!1,void 0,this),Q&&$("span",{class:"d",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z&&$("span",{class:"chk",children:$(g,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function i9(Z,J=240){let[Q,X]=R(!1);return o(()=>{let W=requestAnimationFrame(()=>X(!0));return()=>cancelAnimationFrame(W)},[]),{open:Q,close:()=>{X(!1),setTimeout(Z,J)}}}var h6=T8(null);function z9(Z){h6.set(Z)}function p0(){h6.set(null)}function G9({title:Z,sub:J,children:Q,footer:X,width:z}){return $("div",{class:"modal",style:{width:z},onMouseDown:(W)=>W.stopPropagation(),children:[$("div",{class:"modal-head",children:[$("h3",{children:Z},void 0,!1,void 0,this),J&&$("p",{children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"modal-body",children:Q},void 0,!1,void 0,this),X&&$("div",{class:"modal-foot",children:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function u2(){let Z=h6.use();return o(()=>{if(!Z)return;let J=(Q)=>Q.key==="Escape"&&p0();return addEventListener("keydown",J),()=>removeEventListener("keydown",J)},[Z]),$("div",{class:"modal-scrim"+(Z?" open":""),onMouseDown:(J)=>J.target===J.currentTarget&&p0(),children:Z},void 0,!1,void 0,this)}function R0(Z){return new Promise((J)=>{let Q=(X)=>{p0(),J(X)};z9($(G9,{title:Z.title,footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Q(!1),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn "+(Z.danger?"btn-danger":"btn-primary"),onClick:()=>Q(!0),children:Z.confirmLabel??"确定"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:$("div",{class:"muted",children:Z.message},void 0,!1,void 0,this)},void 0,!1,void 0,this))})}function H9(Z){return new Promise((J)=>{let Q=Z.value??"",X=(z)=>{p0(),J(z)};z9($(G9,{title:Z.title,footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:()=>X(null),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:()=>X(Q.trim()||(Z.value??"")),children:Z.confirmLabel??"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[Z.label&&$("div",{class:"field-label",children:Z.label},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:Z.value??"",placeholder:Z.placeholder,onInput:(z)=>Q=z.target.value,onKeyDown:(z)=>{if(z.key==="Enter")X(Q.trim()||(Z.value??""))}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))})}function k8(){let Z=jZ.use();return $(r,{children:[$(m2,{},void 0,!1,void 0,this),$(u2,{},void 0,!1,void 0,this),$("div",{class:"toasts",children:Z.map((J)=>$("div",{class:"toast",children:[$(g,{name:"check",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:J.msg},void 0,!1,void 0,this)]},J.id,!0,void 0,this))},void 0,!1,void 0,this),$(D2,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var D6=null,E2=/mac/i.test(navigator.userAgentData?.platform??navigator.platform);function L5(Z){let{view:J,navigate:Q}=Z,[X,z]=R(new Set),[W,G]=R(""),[q,H]=R(!1),Y=W0(null),[F,K]=R(null),N=d2(Z.onResize);o(()=>{d.version().then((T)=>K(T.version)).catch(()=>K(null))},[]),o(()=>{if(q)Y.current?.focus()},[q]);let U=(T)=>{let L=new Set(X);L.has(T)?L.delete(T):L.add(T),z(L)},O=(T)=>T().catch((L)=>Z.onError(String(L.message))),C=(T)=>{if("id"in J&&J.id===T)Q({kind:"empty"},{replace:!0})},f=(T)=>O(async()=>{let L=await d.createDocument({title:"",...T?{parent_id:T}:{}});if(T)X.add(T);Q({kind:"doc",id:L.id})}),h=(T,L,P)=>O(async()=>{if(T===L.id)return;if(c2(Z.docs,T,L.id))return;if(await d.moveDocument(T,L.id,P),P==="into")X.add(L.id)}),_=(T,L)=>{T.stopPropagation(),_0(T,(P)=>$(r,{children:[$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{P();let w=await H9({title:"重命名数据库",value:L.name});if(w&&w!==L.name)O(async()=>{await d.updateDatabase(L.id,{name:w})})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(P(),await R0({title:"删除数据库?",message:`「${L.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))O(async()=>{await d.deleteDatabase(L.id),C(L.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},M=(T,L)=>{T.stopPropagation();let P=Z.docs.filter((w)=>w.parent_id===L.id).length;_0(T,(w)=>$(r,{children:[$(z0,{icon:"plus",label:"新建子页",onClick:()=>{w(),f(L.id)}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{w();let A=await H9({title:"重命名文档",value:L.title});if(A)O(async()=>{await d.updateDocument(L.id,{title:A})})}},void 0,!1,void 0,this),L.parent_id&&$(z0,{icon:"cornerUpRight",label:"移到顶层",onClick:()=>{w(),O(async()=>{await d.updateDocument(L.id,{parent_id:null})})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除",danger:!0,onClick:async()=>{if(w(),await R0({title:"删除文档?",message:P?`「${L.title||"无标题"}」及其 ${P} 个子页将被删除。`:`「${L.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))O(async()=>{await B5(Z.docs,L.id),C(L.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},k=(T,L=0)=>{return Z.docs.filter((w)=>w.parent_id===T).map((w)=>{let A=Z.docs.filter((S)=>S.parent_id===w.id),y=A.length>0&&X.has(w.id);return $("div",{class:L?"navchildren":"",children:[$("div",{class:"navitem"+(J.kind==="doc"&&J.id===w.id?" active":""),draggable:!0,onClick:()=>Q({kind:"doc",id:w.id}),onDragStart:(S)=>{S.stopPropagation(),D6=w.id,S.currentTarget.classList.add("dragging")},onDragEnd:(S)=>{S.currentTarget.classList.remove("dragging"),x6()},onDragOver:(S)=>{S.preventDefault(),S.stopPropagation(),p2(S.currentTarget,S)},onDrop:(S)=>{S.preventDefault(),S.stopPropagation();let p=P5(S.currentTarget,S),n=D6;if(D6=null,x6(),n)h(n,w,p)},children:[$("span",{class:"tw"+(y?" open":""),onClick:(S)=>{if(S.stopPropagation(),A.length)U(w.id)},children:A.length>0&&$(g,{name:"chevron",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"emoji",children:$(g,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"label",children:w.title||"无标题"},void 0,!1,void 0,this),$("span",{class:"acts",children:[$("button",{title:"新建子页",onClick:(S)=>{S.stopPropagation(),f(w.id)},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"更多",onClick:(S)=>M(S,w),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),y&&k(w.id,L+1)]},w.id,!0,void 0,this)})};return $("div",{class:"sidebar"+(Z.collapsed?" collapsed":""),style:{width:Z.width,marginLeft:Z.collapsed?-Z.width:void 0},children:[$("div",{class:"sb-head",children:[$("div",{class:"brand",children:[$("span",{class:"mark",children:$(g,{name:"cube"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Metahub"]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(q?" active":""),title:"搜索","aria-label":"搜索",onClick:()=>H((T)=>!T),children:$(g,{name:"search",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(g,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="shares"?" active":""),title:"分享","aria-label":"分享",onClick:()=>Q({kind:"shares"}),children:$(g,{name:"link",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(g,{name:"settings",cls:"ico"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"收起侧栏",onClick:Z.onCollapse,children:$(g,{name:"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-search"+(q?" open":""),onClick:(T)=>T.currentTarget.querySelector("input")?.focus(),children:[$(g,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{ref:Y,placeholder:"搜索…",value:W,onInput:(T)=>G(T.target.value),onKeyDown:(T)=>{if(T.key==="Enter"&&W.trim())Q({kind:"search",q:W.trim()},{replace:J.kind==="search"})}},void 0,!1,void 0,this),$("kbd",{children:E2?"⌘K":"Ctrl K"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-scroll",children:[$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"数据库"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建数据库",onClick:()=>i2((T)=>Q({kind:"db",id:T}),Z.onError),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.databases.map((T)=>$("div",{class:"navitem"+(J.kind==="db"&&J.id===T.id?" active":""),onClick:()=>Q({kind:"db",id:T.id}),children:[$("span",{class:"emoji",children:T.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{class:"label",children:T.name},void 0,!1,void 0,this),$("span",{class:"acts",children:$("button",{title:"更多",onClick:(L)=>_(L,T),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},T.id,!0,void 0,this)),Z.databases.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"文档"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建文档",onClick:()=>f(null),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k(null),Z.docs.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-footer",children:[$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(g,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="shares"?" active":""),title:"分享","aria-label":"分享",onClick:()=>Q({kind:"shares"}),children:$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("span",{class:"sbf-ver",title:`Metahub Core v${F}`,children:["v",F]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-resizer",onMouseDown:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var x6=O9;function P5(Z,J){let Q=Z.getBoundingClientRect(),X=J.clientY-Q.top;return X<Q.height*0.28?"before":X>Q.height*0.72?"after":"into"}function p2(Z,J){x6(),Z.classList.add("drop-"+P5(Z,J))}function c2(Z,J,Q){let X=Z.find((z)=>z.id===Q);while(X){if(X.parent_id===J)return!0;X=Z.find((z)=>z.id===X.parent_id)}return!1}async function B5(Z,J){for(let Q of Z.filter((X)=>X.parent_id===J))await B5(Z,Q.id);await d.deleteDocument(J)}function d2(Z){return(J)=>{J.preventDefault();let Q=J.currentTarget;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let X=(W)=>Z(Math.max(210,Math.min(460,W.clientX))),z=()=>{Q.classList.remove("dragging"),document.body.classList.remove("col-resizing"),removeEventListener("mousemove",X),removeEventListener("mouseup",z)};addEventListener("mousemove",X),addEventListener("mouseup",z)}}var U5={blank:[{name:"名称",type:"text"}],tasks:[{name:"名称",type:"text"},{name:"状态",type:"select",config:{options:["待办","进行中","已完成"]}},{name:"优先级",type:"select",config:{options:["高","中","低"]}},{name:"截止",type:"date"}],crm:[{name:"姓名",type:"text"},{name:"公司",type:"text"},{name:"分类",type:"select",config:{options:["客户","合作","潜在"]}},{name:"邮箱",type:"url"}]};function i2(Z,J){z9($(a2,{onOpenDb:Z,onError:J},void 0,!1,void 0,this))}function a2(Z){let J=["\uD83D\uDDC2️","\uD83C\uDFAF","\uD83E\uDD1D","\uD83D\uDCE6","\uD83D\uDCDA","\uD83D\uDCA1","\uD83E\uDDE9","\uD83D\uDCCA","\uD83D\uDDD3️","✅"],Q=[["blank","空白","仅一个「名称」列"],["tasks","任务","状态·优先级·截止"],["crm","联系人","公司·分类·邮箱"]],[X,z]=R(""),[W,G]=R(J[0]),[q,H]=R("blank"),Y=W0(!1),F=async()=>{if(Y.current)return;Y.current=!0;try{let K=await d.createDatabase({name:X.trim()||"未命名数据库",icon:W});for(let N of U5[q]??U5.blank)await d.createProperty({db:K.id,name:N.name,type:N.type,config:N.config});p0(),Z.onOpenDb(K.id),s(`已创建数据库「${K.name}」`)}catch(K){Z.onError(String(K.message))}finally{Y.current=!1}};return $(G9,{title:"新建数据库",sub:"创建一个带属性列的结构化数据表。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:F,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:"例如:项目、客户、库存…",value:X,onInput:(K)=>z(K.target.value),onKeyDown:(K)=>K.key==="Enter"&&F()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"图标"},void 0,!1,void 0,this),$("div",{class:"icon-pick",children:J.map((K)=>$("button",{class:K===W?"sel":"",onClick:()=>G(K),children:K},K,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"field-label",children:"模板"},void 0,!1,void 0,this),$("div",{class:"tmpl",children:Q.map(([K,N,U])=>$("button",{class:K===q?"sel":"",onClick:()=>H(K),children:[$("div",{class:"tt",children:N},void 0,!1,void 0,this),$("div",{class:"td",children:U},void 0,!1,void 0,this)]},K,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function m6(Z,J,Q){let X=[{id:"server",kind:"server",label:"当前服务器",subtitle:Q,icon:"globe",isDefault:!0,routeOp:{via:"http"},deleteSemantics:"purge"}];for(let z of Z)X.push({id:`server:${z.url}`,kind:"server",label:z.label,subtitle:z.url,icon:"globe",isDefault:!1,routeOp:{via:"http"},deleteSemantics:"purge"});for(let z of J)X.push({id:`bucket:${z.url}`,kind:"bucket",label:"对象存储",subtitle:z.label,icon:"database",isDefault:!1,routeOp:{via:"bucket",url:z.url},deleteSemantics:"evict"});return X}function u6(Z,J){if(Z.routeOp.via==="bucket")return Z.routeOp.url;if(Z.id.startsWith("server:"))return Z.id.slice(7);return J}var YZ="mh-shares-changed";function R8(){document.dispatchEvent(new Event(YZ))}function KZ(){let[Z,J]=R(()=>new Set);return o(()=>{let Q=!0,X=()=>d.listShares().then((z)=>Q&&J(new Set(z.map((W)=>W.target_id)))).catch(()=>{return});return X(),document.addEventListener(YZ,X),()=>{Q=!1,document.removeEventListener(YZ,X)}},[]),Z}function E6(Z,J,Q){return{copyShare:async(G)=>{if(G.url){I8(G.url),J("链接已复制");return}try{let q=await d.renewShare(G.slug);I8(q.url),J("已重新生成并复制链接"),R8(),Z()}catch(q){Q(q.message)}},revoke:async(G)=>{if(!confirm(`撤销这个分享?(${G.source})`))return;try{await d.revokeShare(G.slug),J("已撤销"),R8(),Z()}catch(q){Q(q.message)}},renew:async(G)=>{try{let q=await d.renewShare(G.slug);I8(q.url),J("已续期 7 天,新链接已复制"),R8(),Z()}catch(q){Q(q.message)}}}}function A9(Z){o2();let J=document.createElement("div");document.body.appendChild(J),D9($(l2,{target:Z,onClose:()=>{D9(null,J),J.remove()}},void 0,!1,void 0,this),J)}var O5=[{label:"永不过期",ms:null},{label:"1 小时",ms:3600000},{label:"24 小时",ms:86400000},{label:"7 天",ms:604800000},{label:"30 天",ms:2592000000}];function n2(){let[Z,J]=R(()=>m6([],[],location.origin));return o(()=>{let Q=!0,X=()=>Promise.all([d.listShareServers().catch(()=>[]),d.listShareBuckets().catch(()=>[])]).then(([W,G])=>{if(Q)J(m6(W,G,location.origin))});X();let z=F9(()=>X());return()=>{Q=!1,z()}},[]),Z}function I8(Z){navigator.clipboard?.writeText(Z).catch(()=>{return})}function l2({target:Z,onClose:J}){let Q=n2(),[X,z]=R("server"),[W,G]=R("view"),[q,H]=R(""),[Y,F]=R(0),[K,N]=R(!1),[U,O]=R(""),[C,f]=R([]),[h,_]=R("");o(()=>{M()},[]);function M(){d.listShares({target:Z.ref}).then(f).catch(()=>{return})}let k=Q.find((y)=>y.id===X)??Q[0],T=k.kind==="bucket",L=Z.kind==="site";o(()=>{if(T&&W==="edit")G("view")},[T]);let P=T?O5.filter((y)=>y.ms==null||y.ms<=604800000):O5,w=Math.min(Y,P.length-1);async function A(){if(T&&L){O("站点不支持对象存储分享,请选服务器。");return}N(!0),O("");try{let y={kind:Z.kind,ref:Z.ref,transport:T?"s3":"server",permission:W,password:q||null,expiresMs:P[w]?.ms??null,server:T?null:u6(k,location.origin),bucketUrl:T?u6(k,location.origin):null},S=await d.createShare(y);I8(S.url),_(`已通过「${S.source}」创建,链接已复制`),H(""),R8(),M()}catch(y){O(y.message||"创建失败")}finally{N(!1)}}return $("div",{class:"mhshare-overlay",onClick:(y)=>y.target===y.currentTarget&&J(),children:$("div",{class:"mhshare-modal",children:[$("div",{class:"mhshare-head",children:[$("h2",{children:["分享",Z.title?`:${Z.title}`:""]},void 0,!0,void 0,this),$("button",{class:"mhshare-x",onClick:J,"aria-label":"关闭",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-body",children:[$("div",{class:"mhshare-section",children:"新建分享"},void 0,!1,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"通过"},void 0,!1,void 0,this),$("select",{value:k.id,onChange:(y)=>z(y.currentTarget.value),children:Q.map((y)=>$("option",{value:y.id,disabled:y.kind==="bucket"&&L,children:[y.label," — ",y.subtitle,y.kind==="bucket"&&L?"(站点不支持)":""]},void 0,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"权限"},void 0,!1,void 0,this),$("select",{value:W,disabled:T,onChange:(y)=>G(y.currentTarget.value),children:[$("option",{value:"view",children:"只读"},void 0,!1,void 0,this),$("option",{value:"edit",children:["可编辑",T?"(仅服务器)":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"口令"},void 0,!1,void 0,this),$("input",{type:"password",placeholder:"可选",value:q,onInput:(y)=>H(y.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"有效期"},void 0,!1,void 0,this),$("select",{value:String(w),onChange:(y)=>F(Number(y.currentTarget.value)),children:P.map((y,S)=>$("option",{value:String(S),children:y.label},void 0,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U&&$("p",{class:"mhshare-err",children:U},void 0,!1,void 0,this),h&&$("p",{class:"mhshare-ok",children:h},void 0,!1,void 0,this),$("div",{class:"mhshare-foot",children:[$("button",{onClick:J,children:"关闭"},void 0,!1,void 0,this),$("button",{class:"mhshare-primary",disabled:K,onClick:A,children:K?"创建中…":"创建并复制链接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-section",children:["已有分享(",C.length,")"]},void 0,!0,void 0,this),$(r2,{shares:C,reload:M,onFlash:_,onError:O,empty:"还没有分享这个对象。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function r2({shares:Z,reload:J,onFlash:Q,onError:X,empty:z}){let{copyShare:W,revoke:G,renew:q}=E6(J,Q,X);if(Z.length===0)return $("p",{class:"mhshare-note",children:z},void 0,!1,void 0,this);return $("ul",{class:"mhshare-list",children:Z.map((H)=>$("li",{children:[$("div",{class:"mhshare-li-main",children:[$("span",{class:"mhshare-badge",children:H.transport==="s3"?"对象存储":"服务器"},void 0,!1,void 0,this),$("span",{class:"mhshare-src",children:H.source},void 0,!1,void 0,this),$("span",{class:"mhshare-meta",children:[H.permission==="edit"?"可编辑":"只读",H.hasPassword?" · \uD83D\uDD12":"",H.expiresAt?` · 至 ${new Date(H.expiresAt).toLocaleString()}`:" · 永久"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-li-actions",children:[$("button",{onClick:()=>W(H),children:"复制"},void 0,!1,void 0,this),H.transport==="s3"&&$("button",{onClick:()=>q(H),children:"续期"},void 0,!1,void 0,this),H.url&&$("a",{href:H.url,target:"_blank",rel:"noreferrer",children:"打开"},void 0,!1,void 0,this),$("button",{class:"mhshare-danger",onClick:()=>G(H),children:"撤销"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},H.slug,!0,void 0,this))},void 0,!1,void 0,this)}var A5=!1;function o2(){if(A5)return;A5=!0;let Z=`
|
|
8
|
+
.mhshare-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:9999}
|
|
9
|
+
.mhshare-modal{background:var(--mh-bg,#fff);color:var(--mh-fg,#1f2328);width:min(480px,94vw);max-height:88vh;overflow:auto;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.3);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC",sans-serif}
|
|
10
|
+
.mhshare-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--mh-line,#e5e7eb);position:sticky;top:0;background:inherit}
|
|
11
|
+
.mhshare-head h2{font-size:16px;margin:0}
|
|
12
|
+
.mhshare-x{background:none;border:0;font-size:16px;cursor:pointer;color:var(--mh-muted,#6e7781)}
|
|
13
|
+
.mhshare-body{padding:14px 18px;display:flex;flex-direction:column;gap:10px}
|
|
14
|
+
.mhshare-section{font-size:12px;font-weight:600;color:var(--mh-muted,#6e7781);text-transform:uppercase;letter-spacing:.04em;margin-top:6px}
|
|
15
|
+
.mhshare-field{display:flex;align-items:center;gap:12px}
|
|
16
|
+
.mhshare-field>span{width:48px;color:var(--mh-muted,#6e7781);flex:none}
|
|
17
|
+
.mhshare-field select,.mhshare-field input{flex:1;padding:8px;border:1px solid var(--mh-line,#d0d7de);border-radius:7px;background:var(--mh-card,#f6f8fa);color:inherit}
|
|
18
|
+
.mhshare-foot{display:flex;justify-content:flex-end;gap:8px;margin:4px 0 2px}
|
|
19
|
+
.mhshare-foot button{padding:8px 14px;border:1px solid var(--mh-line,#d0d7de);border-radius:7px;background:var(--mh-card,#f6f8fa);color:inherit;cursor:pointer}
|
|
20
|
+
.mhshare-primary{background:#0969da!important;color:#fff!important;border-color:#0969da!important}
|
|
21
|
+
.mhshare-primary:disabled{opacity:.6;cursor:default}
|
|
22
|
+
.mhshare-note{color:var(--mh-muted,#6e7781);font-size:13px;margin:2px 0}
|
|
23
|
+
.mhshare-err{color:#cf222e;font-size:13px;margin:0}
|
|
24
|
+
.mhshare-ok{color:#1a7f37;font-size:13px;margin:0}
|
|
25
|
+
.mhshare-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
|
|
26
|
+
.mhshare-list li{border:1px solid var(--mh-line,#e5e7eb);border-radius:9px;padding:9px 11px;display:flex;flex-direction:column;gap:6px}
|
|
27
|
+
.mhshare-li-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
|
|
28
|
+
.mhshare-badge{font-size:11px;background:var(--mh-card,#f6f8fa);border:1px solid var(--mh-line,#e5e7eb);border-radius:999px;padding:1px 8px}
|
|
29
|
+
.mhshare-src{font-weight:600}
|
|
30
|
+
.mhshare-meta{color:var(--mh-muted,#6e7781);font-size:12px}
|
|
31
|
+
.mhshare-li-actions{display:flex;gap:6px;align-items:center}
|
|
32
|
+
.mhshare-li-actions button,.mhshare-li-actions a{font-size:13px;padding:4px 10px;border:1px solid var(--mh-line,#d0d7de);border-radius:6px;background:var(--mh-card,#f6f8fa);color:inherit;cursor:pointer;text-decoration:none}
|
|
33
|
+
.mhshare-danger{color:#cf222e!important}
|
|
34
|
+
@media (prefers-color-scheme: dark){.mhshare-modal{--mh-bg:#161b22;--mh-fg:#e6edf3;--mh-line:#30363d;--mh-muted:#8b949e;--mh-card:#0d1117}}
|
|
35
|
+
`,J=document.createElement("style");J.textContent=Z,document.head.appendChild(J)}var N5=[4,28,45,130,165,200,220,255,290,330];function p6(Z){let J=0;for(let Q=0;Q<Z.length;Q++)J=J*31+Z.charCodeAt(Q)>>>0;return`hsl(${N5[J%N5.length]} 65% 45%)`}function a9({text:Z}){return $("span",{class:"chip",style:{["--c"]:p6(Z)},children:Z},void 0,!1,void 0,this)}function FZ({prop:Z,val:J}){if(J==null||J===""||Array.isArray(J)&&J.length===0)return $("span",{class:"muted",children:" "},void 0,!1,void 0,this);if(Z.type==="select")return $(a9,{text:String(J)},void 0,!1,void 0,this);if(Z.type==="multi_select"||Z.type==="relation")return $(r,{children:J.map((Q)=>$(a9,{text:String(Q)},String(Q),!1,void 0,this))},void 0,!1,void 0,this);if(Z.type==="url")return $("a",{href:String(J),target:"_blank",rel:"noreferrer",onClick:(Q)=>Q.stopPropagation(),children:String(J)},void 0,!1,void 0,this);return $("span",{children:String(J)},void 0,!1,void 0,this)}function w5(Z,J){if(Z==="relation")return J.split(",").map((Q)=>Q.trim()).filter(Boolean);return J}function C5(Z,J){if(J==null)return"";if(Array.isArray(J))return J.join(", ");return String(J)}var t2={user:"",repair:"修复",revert:"回滚"};function d6(Z){let J=Date.now()-new Date(Z).getTime();if(J<60000)return"刚刚";if(J<3600000)return`${Math.floor(J/60000)} 分钟前`;if(J<86400000)return`${Math.floor(J/3600000)} 小时前`;if(J<2592000000)return`${Math.floor(J/86400000)} 天前`;return new Date(Z).toLocaleDateString()}function i6(){let[Z,J]=R([]);return o(()=>{d.nodes().then(J).catch(()=>{})},[]),(Q)=>{let X=Z.find((z)=>z.node_id===Q);if(X?.self)return"本设备";return X?.label||Q.slice(0,8)}}function a6({kind:Z}){if(Z==="user")return null;return $("span",{class:"hist-kind "+Z,children:t2[Z]},void 0,!1,void 0,this)}function s2(Z,J){let Q=Array.from({length:Z.length+1},()=>Array(J.length+1).fill(0));for(let G=Z.length-1;G>=0;G--)for(let q=J.length-1;q>=0;q--)Q[G][q]=Z[G]===J[q]?Q[G+1][q+1]+1:Math.max(Q[G+1][q],Q[G][q+1]);let X=[],z=0,W=0;while(z<Z.length&&W<J.length)if(Z[z]===J[W])X.push([z,W]),z++,W++;else if(Q[z+1][W]>=Q[z][W+1])z++;else W++;return X}var e2=(Z)=>Z?Z.split(/\n{2,}/):[],M5=(Z)=>Z?Z.split(`
|
|
36
|
+
`).filter((J)=>J.trim()!==""):[];function ZQ(Z,J){for(let Q=0;Q<Math.min(Z.length,J.length);Q++){let X=Z[Q].text,z=J[Q].text,W=0;while(W<X.length&&W<z.length&&X[W]===z[W])W++;let G=0;while(G<X.length-W&&G<z.length-W&&X[X.length-1-G]===z[z.length-1-G])G++;if(W+G<Math.max(X.length,z.length)*0.3)continue;Z[Q].seg=[X.slice(0,W),X.slice(W,X.length-G),X.slice(X.length-G)],J[Q].seg=[z.slice(0,W),z.slice(W,z.length-G),z.slice(z.length-G)]}}function JQ(Z,J){let Q=M5(Z),X=M5(J),z=s2(Q,X),W=[],G=0,q=0;for(let[H,Y]of[...z,[Q.length,X.length]]){let F=[],K=[];for(;G<H;G++)F.push({kind:"del",text:Q[G]});for(;q<Y;q++)K.push({kind:"add",text:X[q]});if(ZQ(F,K),W.push(...F,...K),H<Q.length)W.push({kind:"same",text:Q[H]});G=H+1,q=Y+1}return W}function $Q(Z){let J=[];if(Z.created)J.push("创建");if(Z.deleted)J.push("删除");if(Z.title_changed)J.push("标题");if(Z.blocks_changed)J.push(`${Z.blocks_changed} 块修改`);if(Z.blocks_deleted)J.push(`${Z.blocks_deleted} 块删除`);return J.join("、")||"元数据"}function y5({docId:Z,onClose:J,onReverted:Q}){let{open:X,close:z}=i9(J),[W,G]=R(null),[q,H]=R(null),[Y,F]=R(null),[K,N]=R(null),[U,O]=R(!1),[C,f]=R(!1),[h,_]=R(!1),M=i6(),k=()=>Promise.all([d.documentHistory(Z),d.getDocument(Z)]).then(([w,A])=>{G(w),H(A),F((y)=>y??w[0]?.version??null)}).catch((w)=>s(String(w.message)));o(()=>{k()},[Z]),o(()=>{if(!Y)return N(null);d.documentAt(Z,Y).then(N).catch(()=>N(null))},[Z,Y]);let T=M9(()=>(W??[]).filter((w)=>U||w.kind!=="repair"),[W,U]),L=Y!=null&&W?.[0]?.version===Y,P=async()=>{if(!Y||!K)return;if(!await R0({title:"恢复到此版本?",message:`标题和正文将恢复到 ${new Date(K.version?QQ(K.version):Date.now()).toLocaleString()} 的状态。此操作会作为一次新修订记录,任何版本都仍可从历史找回。`,confirmLabel:"恢复"}))return;_(!0);try{await d.revertDocument(Z,{to:Y,if_match:q?.version}),s("已恢复"),Q(),z()}catch(A){if(A instanceof S9&&A.code==="stale")s("文档刚被其他端修改,已刷新,请重试"),await k();else s(String(A.message))}finally{_(!1)}};return $(r,{children:[$("div",{class:"scrim"+(X?" open":""),onClick:z},void 0,!1,void 0,this),$("div",{class:"peek hist-peek"+(X?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:z,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"版本历史"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:C,onInput:()=>f(!C)},void 0,!1,void 0,this),"对比当前"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:U,onInput:()=>O(!U)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-split",children:[$("div",{class:"hist-list",children:[W===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),T.map((w)=>$("div",{class:"hist-item"+(Y===w.version?" sel":""),onClick:()=>F(w.version),children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(w.at).toLocaleString(),children:d6(w.at)},void 0,!1,void 0,this),$(a6,{kind:w.kind},void 0,!1,void 0,this),W?.[0]?.version===w.version&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:[$("span",{class:"who",children:M(w.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:$Q(w)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},w.version,!0,void 0,this))]},void 0,!0,void 0,this),$("div",{class:"hist-preview",children:[K&&$(r,{children:[$("div",{class:"hist-doc-title",children:K.title||"无标题"},void 0,!1,void 0,this),C&&!L?JQ(q?.body??"",K.body).map((w,A)=>$("div",{class:"hist-line "+w.kind,children:w.seg?$(r,{children:[w.seg[0],$("span",{class:"seg",children:w.seg[1]},void 0,!1,void 0,this),w.seg[2]]},void 0,!0,void 0,this):w.text},A,!1,void 0,this)):e2(K.body).map((w,A)=>$("div",{class:"hist-block",children:w},A,!1,void 0,this)),!K.body&&$("div",{class:"muted",children:"(空文档)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!K&&Y&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-foot",children:$("button",{class:"btn btn-primary",disabled:!Y||L||h,onClick:P,children:"恢复到此版本"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function QQ(Z){return Number(Z.slice(0,15))||Date.now()}function XQ(Z){if(Z.deleted)return"已删除";if(Z.created)return"创建";if(Z.moved&&!Z.diffs.length)return"调整排序";return""}var c6=3;function _5({dbId:Z,onClose:J}){let{open:Q,close:X}=i9(J),[z,W]=R(null),[G,q]=R(new Map),[H,Y]=R(!1),[F,K]=R(new Set),N=i6();o(()=>{Promise.all([d.databaseActivity(Z),d.listProperties(Z)]).then(([O,C])=>{W(O),q(new Map(C.map((f)=>[f.id,f.name])))}).catch((O)=>s(String(O.message)))},[Z]);let U=(z??[]).filter((O)=>H||O.kind!=="repair");return $(r,{children:[$("div",{class:"scrim"+(Q?" open":""),onClick:X},void 0,!1,void 0,this),$("div",{class:"peek"+(Q?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:X,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"最近动态"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:H,onInput:()=>Y(!H)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body hist-feed",children:[z===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),z!==null&&U.length===0&&$("div",{class:"muted pad",children:"暂无动态。"},void 0,!1,void 0,this),U.map((O)=>{let C=O.record_id+O.version,f=F.has(C),h=f?O.diffs:O.diffs.slice(0,c6),_=XQ(O);return $("div",{class:"hist-item static",children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(O.at).toLocaleString(),children:d6(O.at)},void 0,!1,void 0,this),$(a6,{kind:O.kind},void 0,!1,void 0,this),$("span",{class:"hist-recname",children:O.record_title||O.record_id},void 0,!1,void 0,this),_&&$("span",{class:"hist-status",children:_},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:$("span",{class:"who",children:N(O.node_id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),h.length>0&&$("div",{class:"hist-fields",children:[h.map((M)=>$("div",{class:"hist-field",children:[$("span",{class:"fname",children:G.get(M.prop)??"(已删字段)"},void 0,!1,void 0,this),!O.created&&$("span",{class:"old",title:UZ(M.before),children:UZ(M.before)},void 0,!1,void 0,this),!O.created&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",title:UZ(M.after),children:UZ(M.after)},void 0,!1,void 0,this)]},M.prop,!0,void 0,this)),O.diffs.length>c6&&!f&&$("button",{class:"hist-more",onClick:()=>K(new Set(F).add(C)),children:["…还有 ",O.diffs.length-c6," 项"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},C,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function zQ(Z,J){let Q=[];if(Z.created)Q.push("创建");if(Z.deleted)Q.push("删除");if(Z.fields.length)Q.push(Z.fields.map((X)=>J.get(X)??"(已删字段)").join("、"));if(Z.moved&&!Q.length)Q.push("排序");return Q.join(";")||"元数据"}function UZ(Z){if(Z===void 0)return"(空)";if(Z===null)return"(空)";if(typeof Z==="string")return Z===""?"(空)":Z;return JSON.stringify(Z)}function v5({rec:Z,props:J,onReverted:Q}){let[X,z]=R(null),[W,G]=R(null),[q,H]=R(!1),Y=W0(new Map),[,F]=R(0),K=i6(),N=M9(()=>new Map(J.map((_)=>[_.id,_.name])),[J]),U=()=>d.recordHistory(Z.id).then(z).catch((_)=>s(String(_.message)));o(()=>{U()},[Z.id]);let O=async(_)=>{let M=Y.current.get(_);if(M)return M;let k=await d.recordAt(Z.id,_);return Y.current.set(_,k),F((T)=>T+1),k},C=(_,M)=>{if(W===_.version)return G(null);if(G(_.version),O(_.version),M)O(M.version)},f=async(_)=>{if(!await R0({title:"恢复到此版本?",message:"记录字段将恢复到该修订时的值。此操作会作为一次新修订记录。",confirmLabel:"恢复"}))return;try{await d.revertRecord(Z.id,_.version),s("已恢复"),Y.current.clear(),Q(),await U()}catch(k){s(String(k.message))}},h=(X??[]).filter((_)=>q||_.kind!=="repair");return $("div",{class:"hist-rec",children:[$("div",{class:"hist-rec-head",children:[$("span",{class:"hist-title",children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"修改历史"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:q,onInput:()=>H(!q)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),X!==null&&h.length===0&&$("div",{class:"muted pad",children:"暂无历史。"},void 0,!1,void 0,this),h.map((_,M)=>{let k=h[M+1],T=Y.current.get(_.version),L=k?Y.current.get(k.version):void 0,P=_.created&&T?Object.keys(T.data):_.fields;return $("div",{class:"hist-item static",children:[$("div",{class:"row1",onClick:()=>C(_,k),children:[$("span",{class:"when",title:new Date(_.at).toLocaleString(),children:d6(_.at)},void 0,!1,void 0,this),$(a6,{kind:_.kind},void 0,!1,void 0,this),M===0&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$(g,{name:W===_.version?"chevronDown":"chevron",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",onClick:()=>C(_,k),children:[$("span",{class:"who",children:K(_.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:zQ(_,N)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W===_.version&&$("div",{class:"hist-fields",children:[!T&&$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this),T&&P.map((w)=>{let A=L?L.data[w]:void 0,y=T.data[w];return $("div",{class:"hist-field",children:[$("span",{class:"fname",children:N.get(w)??"(已删字段)"},void 0,!1,void 0,this),k&&$("span",{class:"old",children:UZ(A)},void 0,!1,void 0,this),k&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",children:UZ(y)},void 0,!1,void 0,this)]},w,!0,void 0,this)}),T&&M!==0&&$("button",{class:"btn btn-secondary hist-restore",onClick:()=>f(_),children:"恢复到此版本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},_.version,!0,void 0,this)})]},void 0,!0,void 0,this)}var n9="\x00__ungrouped__";function T5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z,onMove:W}){let G=Z.filter((_)=>_.type==="select"||_.type==="multi_select"),[q,H]=R(null),Y=Z.find((_)=>_.id===q)??G.find((_)=>_.type==="select")??G[0]??null;if(!Y)return $("div",{class:"view-placeholder",children:"看板视图需要一个「单选」或「多选」属性来分组。请在表格视图中添加一个单选列后再切换到看板。"},void 0,!1,void 0,this);let F=Z[0],K=Y.type==="multi_select",N=Y.config?.options??[],U=(_)=>{let M=_.cells[Y.id];if(K){let T=(Array.isArray(M)?M:[]).map(String).filter((L)=>N.includes(L));return T.length?T:[n9]}let k=M==null?"":String(M);return k&&N.includes(k)?[k]:[n9]},O=new Map;for(let _ of N)O.set(_,[]);O.set(n9,[]);for(let _ of J)for(let M of U(_))O.get(M)?.push(_);let C=[...N];if((O.get(n9)?.length??0)>0)C.push(n9);let f=(_,M)=>{if(_.button!==0)return;if(_.target.closest("button,a,input"))return;let k=_.currentTarget.closest(".kcard");if(!k)return;let T=k.getBoundingClientRect();_.preventDefault();let L=_.clientX-T.left,P=_.clientY-T.top,w=null;c9(_,{onStart:()=>{w=k.cloneNode(!0),w.classList.add("dragging-ghost"),w.style.width=`${T.width}px`,document.body.appendChild(w),k.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(A)=>{bZ(w,A.clientX-L,A.clientY-P),O9(),document.elementFromPoint(A.clientX,A.clientY)?.closest?.(".board-col")?.classList.add("drop-into")},onEnd:(A,y)=>{if(w?.remove(),k.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),O9(),!y){z(M.id);return}let S=document.elementFromPoint(A.clientX,A.clientY)?.closest?.(".board-col");if(!S)return;if(!K){let $0=S.dataset.colKey,Q0=String(M.cells[Y.id]??""),x=$0===n9?null:$0;if(String(x??"")!==Q0)Q(M,Y,x)}let p=document.elementFromPoint(A.clientX,A.clientY)?.closest?.(".kcard"),n=p?.dataset.recId;if(n&&n!==M.id){let $0=p.getBoundingClientRect();W(M.id,n,A.clientY<$0.top+$0.height/2?"before":"after")}}})};return $("div",{class:"board-wrap",children:[$("div",{class:"board-bar",children:[$("button",{class:"tbtn",onClick:(_)=>_0(_,(M)=>$(r,{children:[$(h0,{children:"按属性分组"},void 0,!1,void 0,this),G.map((k)=>$(z0,{icon:X9[k.type],label:k.name,onClick:()=>{H(k.id),M()}},k.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(g,{name:"group",cls:"ico sm"},void 0,!1,void 0,this),"分组:",Y.name]},void 0,!0,void 0,this),K&&$("span",{class:"muted",style:{fontSize:12},children:"多选分组不支持拖拽改值"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board",children:C.map((_)=>{let M=O.get(_)??[],k=_===n9;return $("div",{class:"board-col","data-col-key":_,children:[$("div",{class:"board-col-head",children:[k?$("span",{class:"muted",style:{fontWeight:600},children:"未分组"},void 0,!1,void 0,this):$(a9,{text:_},void 0,!1,void 0,this),$("span",{class:"board-count",children:M.length},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),$("button",{class:"iconbtn sm",title:"新建记录",onClick:()=>X(k?{}:{[Y.id]:_}),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board-col-body",children:[M.map((T)=>$("div",{class:"kcard","data-rec-id":T.id,onPointerDown:(L)=>f(L,T),children:[$("div",{class:"kcard-title",children:WQ(T,F)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z.filter((L)=>L!==F&&L.id!==Y.id&&!GQ(T.cells[L.id])).slice(0,4).map((L)=>$("div",{class:"kcard-field",children:[$(g,{name:X9[L.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$(FZ,{prop:L,val:T.cells[L.id]},void 0,!1,void 0,this)]},L.id,!0,void 0,this))]},T.id,!0,void 0,this)),$("button",{class:"board-add",onClick:()=>X(k?{}:{[Y.id]:_}),children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},_,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function WQ(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function GQ(Z){return Z==null||Z===""||Array.isArray(Z)&&Z.length===0}function hZ(Z){if(Z==null)return null;let J=String(Z).trim();if(!J)return null;let Q=/^(\d{4})-(\d{2})-(\d{2})/.exec(J);if(Q)return new Date(Number(Q[1]),Number(Q[2])-1,Number(Q[3]));let X=new Date(J);return Number.isNaN(X.getTime())?null:new Date(X.getFullYear(),X.getMonth(),X.getDate())}function P9(Z){let J=Z.getFullYear(),Q=String(Z.getMonth()+1).padStart(2,"0"),X=String(Z.getDate()).padStart(2,"0");return`${J}-${Q}-${X}`}function r0(Z,J){return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()+J)}function n6(Z,J){return Z.getFullYear()===J.getFullYear()&&Z.getMonth()===J.getMonth()&&Z.getDate()===J.getDate()}function qQ(Z,J){return new Date(Z,J,1)}function HQ(Z,J){return new Date(Z,J+1,0)}function LZ(Z,J){let Q=Date.UTC(Z.getFullYear(),Z.getMonth(),Z.getDate()),X=Date.UTC(J.getFullYear(),J.getMonth(),J.getDate());return Math.round((X-Q)/86400000)}function S8(){let Z=new Date;return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate())}function YQ(Z){let J=(Z.getDay()+6)%7;return r0(Z,-J)}function k5(Z,J){let Q=YQ(qQ(Z,J)),X=HQ(Z,J),z=[],W=Q;while(W<=X||z.length===0||W.getDay()!==1){let G=[];for(let q=0;q<7;q++)G.push(r0(W,q));if(z.push(G),W=r0(W,7),z.length>=6)break}return z}var KQ=["一","二","三","四","五","六","日"],l6=3;function R5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z}){let W=Z.filter((L)=>L.type==="date"),[G,q]=R(null),H=Z.find((L)=>L.id===G)??W[0]??null,Y=S8(),[F,K]=R({y:Y.getFullYear(),m:Y.getMonth()}),N=W0(null);if(!H)return $("div",{class:"view-placeholder",children:"日历视图需要一个「日期」属性。请在表格视图中添加一个日期列后再切换到日历。"},void 0,!1,void 0,this);let U=Z[0],O=k5(F.y,F.m),C=J.map((L)=>({rec:L,date:hZ(L.cells[H.id])})).filter((L)=>L.date!=null),f=(L)=>C.filter((P)=>n6(P.date,L)),h=(L)=>{let P=F.m+L;K({y:F.y+Math.floor(P/12),m:(P%12+12)%12})},_=()=>K({y:Y.getFullYear(),m:Y.getMonth()}),M=()=>document.querySelectorAll(".cal-day.drop-into").forEach((L)=>L.classList.remove("drop-into")),k=(L,P)=>{if(L.button!==0)return;L.preventDefault(),L.stopPropagation(),N.current={id:P.id,pointerId:L.pointerId,startX:L.clientX,startY:L.clientY,active:!1,ghost:null};let w=(y)=>{let S=N.current;if(!S||S.pointerId!==y.pointerId)return;if(!S.active){if(Math.hypot(y.clientX-S.startX,y.clientY-S.startY)<4)return;S.active=!0,S.ghost=FQ(V8(P,U)),document.body.classList.add("table-dragging")}if(y.preventDefault(),S.ghost)S.ghost.style.transform=`translate3d(${Math.round(y.clientX+8)}px, ${Math.round(y.clientY+8)}px, 0)`;M(),document.elementFromPoint(y.clientX,y.clientY)?.closest?.(".cal-day")?.classList.add("drop-into")},A=(y)=>{let S=N.current;if(!S||S.pointerId!==y.pointerId)return;if(removeEventListener("pointermove",w),removeEventListener("pointerup",A),removeEventListener("pointercancel",A),S.ghost?.remove(),document.body.classList.remove("table-dragging"),M(),N.current=null,!S.active){z(P.id);return}let n=document.elementFromPoint(y.clientX,y.clientY)?.closest?.(".cal-day")?.dataset.iso;if(n&&n!==String(P.cells[H.id]??""))Q(P,H,n)};addEventListener("pointermove",w,{passive:!1}),addEventListener("pointerup",A),addEventListener("pointercancel",A)},T=(L)=>_0(L,(P)=>$(r,{children:[$(h0,{children:"按日期属性"},void 0,!1,void 0,this),W.map((w)=>$(z0,{icon:X9[w.type],label:w.name,onClick:()=>{q(w.id),P()}},w.id,!1,void 0,this))]},void 0,!0,void 0,this));return $("div",{class:"cal",children:[$("div",{class:"cal-nav",children:[$("button",{class:"iconbtn",title:"上个月",onClick:()=>h(-1),children:$(g,{name:"chevron",cls:"ico flip"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"cal-title",children:[F.y," 年 ",F.m+1," 月"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"下个月",onClick:()=>h(1),children:$(g,{name:"chevron",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"tbtn",onClick:_,children:"今天"},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),W.length>1&&$("button",{class:"tbtn",onClick:T,children:[$(g,{name:"calendar",cls:"ico sm"},void 0,!1,void 0,this),H.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-grid cal-head",children:KQ.map((L)=>$("div",{class:"cal-wd",children:L},L,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"cal-body",children:O.map((L,P)=>$("div",{class:"cal-grid cal-week",children:L.map((w)=>{let A=w.getMonth()!==F.m,y=n6(w,Y),S=f(w),p=P9(w);return $("div",{class:"cal-day"+(A?" dim":"")+(y?" today":""),"data-iso":p,onClick:(n)=>{if(n.target.closest(".cal-ev,.cal-add,.cal-more"))return;X({[H.id]:p})},children:[$("div",{class:"cal-daynum",children:[$("span",{children:w.getDate()},void 0,!1,void 0,this),$("button",{class:"cal-add",title:"新建记录",onClick:(n)=>{n.stopPropagation(),X({[H.id]:p})},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-events",children:[S.slice(0,l6).map(({rec:n})=>$("div",{class:"cal-ev",style:{["--c"]:p6(V8(n,U)||n.id)},onPointerDown:($0)=>k($0,n),children:V8(n,U)||"无标题"},n.id,!1,void 0,this)),S.length>l6&&$("button",{class:"cal-more",onClick:(n)=>{n.stopPropagation(),_0(n,($0)=>$(r,{children:[$(h0,{children:[p," · ",S.length," 条记录"]},void 0,!0,void 0,this),S.map(({rec:Q0})=>$(z0,{label:V8(Q0,U)||"无标题",onClick:()=>{$0(),z(Q0.id)}},Q0.id,!1,void 0,this))]},void 0,!0,void 0,this))},children:["+",S.length-l6," 更多"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},p,!0,void 0,this)})},P,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function V8(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function FQ(Z){let J=document.createElement("div");return J.className="drag-ghost",J.textContent=Z||"移动记录",document.body.appendChild(J),J}var V9=200,DZ=36,xZ=44,J9=28,I5=3;function V5({props:Z,records:J,onCommitValue:Q,onOpenRecord:X}){let z=Z.filter((b)=>b.type==="date"),[W,G]=R(null),[q,H]=R(null),Y=Z.find((b)=>b.id===W)??z[0]??null,F=q==="none"?null:Z.find((b)=>b.id===q)??z.find((b)=>b!==Y)??null,K=W0(null),N=W0(null);if(!Y)return $("div",{class:"view-placeholder",children:"时间轴视图需要一个「日期」属性作为开始日期。请在表格视图中添加一个日期列后再切换到时间轴。"},void 0,!1,void 0,this);let U=Z[0],O=S8(),C=J.map((b)=>{let u=hZ(b.cells[Y.id]),V=F?hZ(b.cells[F.id]):null;return{rec:b,s:u,e:V&&u&&V<u?u:V}}),f=C.filter((b)=>b.s),h=O,_=O;if(f.length){h=f[0].s,_=f[0].s;for(let b of f){if(b.s<h)h=b.s;let u=b.e??b.s;if(u>_)_=u}}else h=r0(O,-10),_=r0(O,14);let M=r0(h,-I5),k=r0(_,I5),T=LZ(M,k)+1,L=V9+T*J9,P=(b)=>V9+b*J9,w=LZ(M,O),A=[];for(let b=0;b<T;b++)A.push(r0(M,b));let y=(b,u,V,i,Z0)=>{if(Z0===0)return;if(i==="move"){if(u)Q(b,Y,P9(r0(u,Z0)));if(F&&V)Q(b,F,P9(r0(V,Z0)))}else if(i==="l"&&u){let G0=r0(u,Z0);Q(b,Y,P9(V&&G0>V?V:G0))}else if(i==="r"&&F&&V){let G0=r0(V,Z0);Q(b,F,P9(u&&G0<u?u:G0))}},S=(b,u)=>{let V=N.current;if(!V)return;V.style.left=b+"px",V.style.display="block";let i=V.firstElementChild;if(i)i.textContent=u},p=()=>{if(N.current)N.current.style.display="none"},n=(b,u,V,i,Z0,G0)=>{if(b.button!==0||!V)return;b.preventDefault(),b.stopPropagation();let{offsetLeft:J0,offsetWidth:e}=G0,P0=!1,l0=Z0==="move"?null:b.currentTarget;l0?.classList.add("dragging"),K.current={pointerId:b.pointerId,startX:b.clientX};let c0=(n0)=>{let E0=K.current;if(!E0||E0.pointerId!==n0.pointerId)return;let N0=Math.round((n0.clientX-E0.startX)/J9);if(Math.abs(n0.clientX-E0.startX)>3)P0=!0;let v0,O0;if(Z0==="move"){let j0=J0+N0*J9;G0.style.left=j0+"px",v0=j0,O0=r0(V,N0)}else if(Z0==="l"){let j0=J0+N0*J9;G0.style.left=j0+"px",G0.style.width=Math.max(J9,e-N0*J9)+"px",v0=j0,O0=r0(V,N0)}else{let j0=Math.max(J9,e+N0*J9);G0.style.width=j0+"px",v0=J0+j0,O0=r0(V,Math.round(j0/J9)-1)}S(v0,P9(O0))},d0=(n0)=>{let E0=K.current;if(!E0||E0.pointerId!==n0.pointerId)return;removeEventListener("pointermove",c0),removeEventListener("pointerup",d0),removeEventListener("pointercancel",d0),K.current=null,l0?.classList.remove("dragging"),p();let N0=Math.round((n0.clientX-E0.startX)/J9);if(!P0){X(u.id);return}y(u,V,i,Z0,N0)};addEventListener("pointermove",c0,{passive:!1}),addEventListener("pointerup",d0),addEventListener("pointercancel",d0)},$0=(b,u)=>{if(Q(b,Y,P9(u)),F)Q(b,F,P9(u))},Q0=(b,u)=>{let V=b.currentTarget.closest(".tl-row");if(!V)return;let i=b.clientX-V.getBoundingClientRect().left;if(i<V9)return;let Z0=Math.max(0,Math.min(T-1,Math.round((i-V9)/J9)));$0(u,r0(M,Z0))};return $("div",{class:"tl",children:[$("div",{class:"tl-toolbar",children:$("button",{class:"tbtn",onClick:(b)=>_0(b,(u)=>$(r,{children:[$(h0,{children:"开始日期"},void 0,!1,void 0,this),z.map((V)=>$(z0,{icon:X9[V.type],label:V.name,checked:V===Y,onClick:()=>{G(V.id),u()}},V.id,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this),$(h0,{children:"结束日期(可选)"},void 0,!1,void 0,this),$(z0,{icon:"x",label:"无(里程碑)",checked:!F,onClick:()=>{H("none"),u()}},void 0,!1,void 0,this),z.map((V)=>$(z0,{icon:X9[V.type],label:V.name,checked:V===F,onClick:()=>{H(V.id),u()}},V.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(g,{name:"timeline",cls:"ico sm"},void 0,!1,void 0,this),Y.name,F?` → ${F.name}`:"(里程碑)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"tl-scroll",children:$("div",{class:"tl-canvas",style:{width:L,height:xZ+C.length*DZ+8},children:[$("div",{class:"tl-axis",style:{height:xZ},children:[$("div",{class:"tl-corner",style:{width:V9},children:"记录"},void 0,!1,void 0,this),A.map((b,u)=>{let V=b.getDate()===1;return $("div",{class:"tl-tick"+(V?" mstart":"")+(LZ(b,O)===0?" today":""),style:{left:P(u),width:J9},children:[V&&$("span",{class:"tl-month",children:[b.getMonth()+1,"月"]},void 0,!0,void 0,this),$("span",{class:"tl-dnum",children:b.getDate()},void 0,!1,void 0,this)]},u,!0,void 0,this)})]},void 0,!0,void 0,this),C.map(({rec:b,s:u,e:V},i)=>{let Z0=u?LZ(M,u):0,G0=u&&V?LZ(u,V)+1:1;return $("div",{class:"tl-row",style:{top:xZ+i*DZ,height:DZ},children:[$("div",{class:"tl-rowlabel",style:{width:V9},children:S5(b,U)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!u?$("div",{class:"tl-track-empty",style:{left:V9},onClick:(J0)=>Q0(J0,b),title:"点击空白处排期",children:$("button",{class:"tl-schedule",style:{left:V9+8},onClick:(J0)=>{J0.stopPropagation(),$0(b,O)},children:"未排期 · 排到今天"},void 0,!1,void 0,this)},void 0,!1,void 0,this):V?$("div",{class:"tl-item",style:{left:P(Z0),width:G0*J9},onPointerDown:(J0)=>n(J0,b,u,V,"move",J0.currentTarget),children:[$("span",{class:"tl-h l",onPointerDown:(J0)=>n(J0,b,u,V,"l",J0.currentTarget.parentElement)},void 0,!1,void 0,this),$("span",{class:"tl-label",children:S5(b,U)},void 0,!1,void 0,this),$("span",{class:"tl-h r",onPointerDown:(J0)=>n(J0,b,u,V,"r",J0.currentTarget.parentElement)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("div",{class:"tl-milestone",style:{left:P(Z0)},title:P9(u),onPointerDown:(J0)=>n(J0,b,u,null,"move",J0.currentTarget)},void 0,!1,void 0,this)]},b.id,!0,void 0,this)}),w>=0&&w<T&&$("div",{class:"tl-today",style:{left:P(w)+J9/2,height:xZ+C.length*DZ}},void 0,!1,void 0,this),$("div",{class:"tl-guide",ref:N,style:{display:"none",height:xZ+C.length*DZ},children:$("span",{class:"tl-guide-label"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function S5(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}var UQ=[["表格","list"],["看板","group"],["日历","calendar"],["时间轴","timeline"]];function r6(Z){return{r0:Math.min(Z.a.r,Z.b.r),r1:Math.max(Z.a.r,Z.b.r),c0:Math.min(Z.a.c,Z.b.c),c1:Math.max(Z.a.c,Z.b.c)}}function g5({db:Z,onError:J}){let[Q,X]=R([]),[z,W]=R([]),G=KZ(),[q,H]=R(0),[Y,F]=R(new Set),[K,N]=R(null),[U,O]=R(null),C=W0(U);C.current=U;let[f,h]=R(null),[_,M]=R(null),k=(j)=>j.config?.width??180,T=W0(!1),L=W0(null),P=W0(null),[w,A]=R(null),[y,S]=R(null),p=W0(null),n=(j)=>{if(document.body.classList.contains("table-dragging"))return;let I=P.current,E=L.current;if(!I||!E)return;let a=w&&E.querySelector(`tbody tr[data-row-id="${w.id}"]`);if(a){let l=a.getBoundingClientRect();if(j>=l.top&&j<l.bottom)return}let F0=I.getBoundingClientRect().top;for(let l of Array.from(E.querySelectorAll("tbody tr[data-row-id]"))){let t=l.getBoundingClientRect();if(j>=t.top&&j<t.bottom){A({id:l.dataset.rowId,top:t.top-F0,height:t.height});return}}if(w)A(null)},$0=(j)=>j().catch((I)=>J(String(I.message))),Q0=async()=>{let[j,I]=await Promise.all([d.listProperties(Z.id),d.listRecords(Z.id)]);X(j),W(I)};o(()=>{F(new Set),h(null),H(0),M(null),O(null),Q0().catch((j)=>J(String(j.message)))},[Z.id]),o(()=>{let j=(I)=>{if(!I.detail?.datasets?.some((a)=>a==="records"||a==="properties"))return;if(C.current)return;Q0().catch(()=>{})};return document.addEventListener(p9,j),()=>document.removeEventListener(p9,j)},[Z.id]);let x=(j,I,E)=>{O(null),W((a)=>a.map((F0)=>F0.id===j.id?{...F0,cells:{...F0.cells,[I.id]:E},values:{...F0.values,[I.name]:E}}:F0)),d.updateRecord(j.id,{[I.id]:E}).then((a)=>W((F0)=>F0.map((l)=>l.id===a.id?a:l))).catch((a)=>{J(String(a.message)),Q0().catch((F0)=>J(String(F0.message)))})},b=(j)=>$0(async()=>{let I=await d.createRecord(Z.id,j);W((E)=>[...E,I])}),u=()=>b({}),V=(j)=>$0(async()=>{if(await Promise.all(j.map((I)=>d.deleteRecord(I))),W((I)=>I.filter((E)=>!j.includes(E.id))),F(new Set),f&&j.includes(f))h(null)}),i=(j)=>$0(async()=>{let I=await d.createRecord(Z.id,j.cells);W((E)=>{let a=E.findIndex((F0)=>F0.id===j.id);return[...E.slice(0,a+1),I,...E.slice(a+1)]})}),Z0=(j,I,E)=>{if(j===I||K)return;W((a)=>f5(a,j,I,E))},G0=(j,I,E)=>{if(j===I||K)return;Z0(j,I,E),d.moveRecord(j,I,E).catch((a)=>{J(String(a.message)),Q0().catch((F0)=>J(String(F0.message)))})},J0=(j,I,E)=>{if(j===I)return;X((a)=>{let F0=f5(a,j,I,E).map((X0,U0)=>({...X0,position:U0+1})),l=new Map(a.map((X0)=>[X0.id,X0.position])),t=F0.filter((X0)=>l.get(X0.id)!==X0.position);if(t.length)Promise.all(t.map((X0)=>d.updateProperty(X0.id,{position:X0.position}))).catch((X0)=>{J(String(X0.message)),Q0().catch((U0)=>J(String(U0.message)))});return F0})},e=(j,I)=>{let E=P.current,a=L.current;if(!E||!a)return null;let F0=Array.from(a.querySelectorAll("tbody tr[data-row-id]"));if(!F0.length)return null;let l=E.getBoundingClientRect().top,t=F0[F0.length-1],X0="after";for(let k0 of F0){let g0=k0.getBoundingClientRect();if(j<g0.top+g0.height/2){t=k0,X0="before";break}if(j<=g0.bottom){t=k0,X0="after";break}}if(t.dataset.rowId===I)return null;let U0=t.getBoundingClientRect();return{id:t.dataset.rowId,where:X0,y:(X0==="before"?U0.top:U0.bottom)-l}},P0=(j,I)=>{if(K||j.button!==0)return;let E=L.current?.querySelector(`tr[data-row-id="${I}"]`);if(!E)return;j.preventDefault();let a=E.getBoundingClientRect(),F0=j.clientX-a.left,l=j.clientY-a.top,t=null;c9(j,{onStart:()=>{t=V6("row-ghost",a,PQ(E)),E.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(X0)=>{bZ(t,X0.clientX-F0,X0.clientY-l);let U0=e(X0.clientY,I);p.current=U0,S(U0?U0.y:null)},onEnd:(X0,U0)=>{t?.remove(),E.classList.remove("drag-source"),document.body.classList.remove("table-dragging");let k0=p.current;if(p.current=null,S(null),U0&&k0)G0(I,k0.id,k0.where)}})},l0=(j,I)=>{if(j.button!==0)return;let E=j.currentTarget.closest("th");if(!E)return;H5(j,{source:E,axis:"x",ghostCls:"col-ghost",ghostText:E.textContent?.trim()||"移动属性",targetSelector:"th[data-col-id]",isSelf:(a)=>a.dataset.colId===I.id,onActivate:()=>{T.current=!0},onDrop:(a,F0)=>J0(I.id,a.dataset.colId,F0),onFinish:(a)=>{if(a)setTimeout(()=>{T.current=!1},0)}})},c0=(j,I,E)=>{if(j.button!==0)return;if(j.target.closest("input,button,a"))return;let a=j.shiftKey&&_?_.a:{r:I,c:E};M({a,b:{r:I,c:E}}),c9(j,{onStart:()=>document.body.classList.add("cell-selecting"),onMove:(F0)=>{let l=document.elementFromPoint(F0.clientX,F0.clientY)?.closest?.("td.cell-td");if(!l||l.dataset.r==null)return;M({a,b:{r:Number(l.dataset.r),c:Number(l.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},d0=(j)=>j!=="checkbox"&&j!=="select"&&j!=="multi_select",n0=(j,I,E)=>Math.max(I,Math.min(E,j)),E0=(j,I)=>requestAnimationFrame(()=>{document.querySelector(`td.cell-td[data-r="${j}"][data-c="${I}"]`)?.scrollIntoView({block:"nearest",inline:"nearest"})}),N0=(j,I)=>{M({a:{r:j,c:I},b:{r:j,c:I}}),E0(j,I)},v0=(j,I,E)=>{let a=K0[j],F0=Q[I];if(!a||!F0)return;if(N0(j,I),d0(F0.type))O({rec:a.id,prop:F0.id,seed:E})},O0=(j,I,E)=>{let a=I+E;if(a<0||a>=Q.length){N0(j,I);return}v0(j,a)},j0=(j)=>$0(async()=>{if(!_)return;let{r0:I,r1:E,c0:a,c1:F0}=r6(_),l=Q.slice(a,F0+1),t=K0.slice(I,E+1),X0=await Promise.all(t.map((U0)=>{let k0={};for(let g0 of l)k0[g0.id]=j(g0);return d.updateRecord(U0.id,k0)}));W((U0)=>U0.map((k0)=>X0.find((g0)=>g0.id===k0.id)??k0))}),i0=async()=>{if(!_)return;let{r0:j,r1:I,c0:E,c1:a}=r6(_),F0=Q.slice(E,a+1),l=K0.slice(j,I+1).map((t)=>F0.map((X0)=>C5(X0,t.cells[X0.id])).join("\t")).join(`
|
|
37
|
+
`);try{await navigator.clipboard.writeText(l)}catch{}},T0=K?Q.find((j)=>j.id===K.id):void 0,o0=(j)=>{let I=j==null||j===""?NaN:Number(j);return Number.isFinite(I)?I:Number.NEGATIVE_INFINITY},K0=K?[...z].sort((j,I)=>{let E=j.cells[K.id],a=I.cells[K.id],F0=T0?.type==="number"?o0(E)-o0(a):String(E??"").localeCompare(String(a??""),"zh");return(K.desc?-1:1)*F0}):z,q0=z.find((j)=>j.id===f)??null,A0=_?r6(_):null;return o(()=>{let j=(I)=>{if(!_||U)return;let E=document.activeElement,a=(E?.tagName||"").toLowerCase();if(a==="input"||a==="textarea"||E?.isContentEditable)return;let F0=_.a.r===_.b.r&&_.a.c===_.b.c,{r:l,c:t}=_.b,X0={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(I.key in X0){I.preventDefault();let[U0,k0]=X0[I.key],g0={r:n0(l+U0,0,K0.length-1),c:n0(t+k0,0,Q.length-1)};M(I.shiftKey?{a:_.a,b:g0}:{a:g0,b:g0}),E0(g0.r,g0.c)}else if((I.metaKey||I.ctrlKey)&&I.key.toLowerCase()==="c")I.preventDefault(),i0();else if(I.key==="Escape")M(null);else if(I.key==="Delete"||I.key==="Backspace")I.preventDefault(),j0(()=>null);else if(F0&&(I.key==="Enter"||I.key==="F2"))I.preventDefault(),v0(l,t);else if(F0&&I.key.length===1&&!I.metaKey&&!I.ctrlKey&&!I.altKey&&!I.isComposing&&I.keyCode!==229){let U0=Q[t];if(!U0||!d0(U0.type)||U0.type==="date")return;if(U0.type==="number"&&!/[0-9.+-]/.test(I.key))return;I.preventDefault(),v0(l,t,I.key)}};return addEventListener("keydown",j),()=>removeEventListener("keydown",j)},[_,U,z,Q,K]),$("div",{class:"db",onPointerDown:(j)=>{if(!j.target.closest("td.cell-td, .cellselbar"))M(null)},children:[$("div",{class:"db-head",children:[$("div",{class:"db-icon",children:Z.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("div",{children:$("div",{class:"db-title",contentEditable:!0,onBlur:(j)=>{let I=j.target.textContent?.trim()||Z.name;if(I!==Z.name)$0(async()=>{await d.updateDatabase(Z.id,{name:I})})},children:Z.name},void 0,!1,void 0,this)},void 0,!1,void 0,this),G.has(Z.id)&&$("span",{class:"db-title-share",title:"已分享 · 管理分享",onClick:()=>A9({kind:"database",ref:Z.id,title:Z.name}),children:$(g,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"views",children:[UQ.map(([j,I],E)=>$("div",{class:"view-tab"+(E===q?" active":""),onClick:()=>H(E),children:[$(g,{name:I},void 0,!1,void 0,this),j]},j,!0,void 0,this)),$("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:u,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q===0&&$("div",{class:"toolbar",children:$("button",{class:"tbtn",onClick:(j)=>CQ(j,Q,K,N),children:[$(g,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),"排序"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),q===1?$(T5,{props:Q,records:z,onCommitValue:x,onCreate:b,onOpenRecord:h,onMove:G0},void 0,!1,void 0,this):q===2?$(R5,{props:Q,records:z,onCommitValue:x,onCreate:b,onOpenRecord:h},void 0,!1,void 0,this):q===3?$(V5,{props:Q,records:z,onCommitValue:x,onCreate:b,onOpenRecord:h},void 0,!1,void 0,this):$("div",{class:"gridhost",ref:P,onMouseMove:(j)=>n(j.clientY),onMouseLeave:()=>{if(!document.body.classList.contains("table-dragging"))A(null)},children:[w&&$("button",{class:"rowgrip-ext"+(K?" is-disabled":""),style:{top:w.top+w.height/2},title:K?"清除排序后可拖拽移动":"拖拽移动","aria-disabled":K?"true":void 0,onPointerDown:(j)=>P0(j,w.id),children:$(g,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),y!=null&&$("div",{class:"rowdrop",style:{top:y}},void 0,!1,void 0,this),$("div",{class:"tablewrap",children:[$("div",{class:"tablescroll",children:$("table",{class:"grid",ref:L,children:[$("colgroup",{children:[$("col",{style:{width:38}},void 0,!1,void 0,this),Q.map((j)=>$("col",{"data-col-id":j.id,style:{width:k(j)}},j.id,!1,void 0,this)),$("col",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("thead",{children:$("tr",{children:[$("th",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.size>0&&Y.size===z.length,onChange:(j)=>F(j.target.checked?new Set(z.map((I)=>I.id)):new Set)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((j)=>$("th",{"data-col-id":j.id,children:[$("div",{class:"colhead",onPointerDown:(I)=>l0(I,j),onClick:(I)=>{if(T.current){T.current=!1,I.preventDefault(),I.stopPropagation();return}AQ(I,j,Z.id,Q0,Q)},children:[$("span",{class:"ti",children:$(g,{name:X9[j.type]??"text",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"nm",children:j.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(BQ,{colId:j.id,startWidth:k(j),onCommit:(I)=>{X((E)=>E.map((a)=>a.id===j.id?{...a,config:{...a.config??{},width:I}}:a)),d.setColumnWidth(j.id,I).catch((E)=>{J(String(E.message)),Q0().catch(()=>{})})}},void 0,!1,void 0,this)]},j.id,!0,void 0,this)),$("th",{class:"addcol",children:$("div",{class:"colhead",title:"新建属性",onClick:(j)=>wQ(j,Z.id,Q,Q0),children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("tbody",{children:K0.map((j,I)=>$("tr",{"data-row-id":j.id,class:Y.has(j.id)?"sel":"",children:[$("td",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.has(j.id),onChange:()=>F((E)=>{let a=new Set(E);return a.has(j.id)?a.delete(j.id):a.add(j.id),a})},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((E,a)=>{let F0=A0!=null&&I>=A0.r0&&I<=A0.r1&&a>=A0.c0&&a<=A0.c1,l;if(F0&&A0){let t=[];if(I===A0.r0)t.push("inset 0 2px 0 0 var(--accent)");if(I===A0.r1)t.push("inset 0 -2px 0 0 var(--accent)");if(a===A0.c0)t.push("inset 2px 0 0 0 var(--accent)");if(a===A0.c1)t.push("inset -2px 0 0 0 var(--accent)");l=t.join(",")||void 0}return $("td",{class:"cell-td"+(F0?" cellsel":""),"data-r":I,"data-c":a,style:l?{boxShadow:l}:void 0,onPointerDown:(t)=>c0(t,I,a),children:$(LQ,{rec:j,prop:E,first:a===0,editing:U?.rec===j.id&&U?.prop===E.id,seed:U?.rec===j.id&&U?.prop===E.id?U.seed:void 0,onEdit:()=>{N0(I,a),O({rec:j.id,prop:E.id})},onCommit:(t)=>x(j,E,t),onDone:(t)=>{if(O(null),t.reason!=="cancel"&&t.changed)x(j,E,t.value);if(t.reason==="tab")O0(I,a,1);else if(t.reason==="shifttab")O0(I,a,-1);else if(t.reason==="enter")N0(n0(I+1,0,K0.length-1),a)},onOpen:()=>h(j.id),onRowMenu:(t)=>MQ(t,j,()=>h(j.id),()=>i(j),()=>V([j.id]))},void 0,!1,void 0,this)},E.id,!1,void 0,this)}),$("td",{class:"filler"},void 0,!1,void 0,this)]},j.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"addrow",onClick:u,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建记录"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",z.length," 条记录"]},void 0,!0,void 0,this),$("span",{children:[Q.length," 个属性"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y.size>0&&$("div",{class:"selbar",children:[$("span",{class:"cnt",children:[Y.size," 已选"]},void 0,!0,void 0,this),$("button",{onClick:()=>$0(async()=>{for(let j of Y)await i(z.find((I)=>I.id===j))}),children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:async()=>{if(await R0({title:"删除记录?",message:`确定删除选中的 ${Y.size} 条记录?`,confirmLabel:"删除",danger:!0}))V([...Y])},children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除"]},void 0,!0,void 0,this),$("button",{onClick:()=>F(new Set),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),A0&&(A0.r0!==A0.r1||A0.c0!==A0.c1)&&$("div",{class:"selbar cellselbar",children:[$("span",{class:"cnt",children:[(A0.r1-A0.r0+1)*(A0.c1-A0.c0+1)," 个单元格"]},void 0,!0,void 0,this),$("button",{onClick:i0,children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{onClick:()=>j0((j)=>K0[A0.r0].cells[j.id]??null),children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"填充"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:()=>j0(()=>null),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清空"]},void 0,!0,void 0,this),$("button",{onClick:()=>M(null),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q0&&$(yQ,{db:Z,props:Q,rec:q0,onClose:()=>h(null),onCommit:(j,I)=>x(q0,j,I),onDelete:()=>V([q0.id]),onDuplicate:()=>i(q0),onReverted:()=>Q0().catch((j)=>J(String(j.message)))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function b5({prop:Z,val:J,seed:Q,captureTab:X,onDone:z}){let W=Array.isArray(J)?J.join(", "):J==null?"":String(J),G=W0(null),q=W0(!1);o(()=>{let Y=G.current;Y.value=Q??W,Y.focus();try{Y.setSelectionRange(Y.value.length,Y.value.length)}catch{}},[]);let H=(Y)=>{if(q.current)return;if(q.current=!0,Y==="cancel")return z({reason:"cancel"});let F=G.current.value;z({reason:Y,changed:F!==W,value:w5(Z.type,F)})};return $("input",{ref:G,class:"inlineedit",type:Z.type==="number"?"number":Z.type==="date"?"date":"text",onBlur:()=>H("blur"),onKeyDown:(Y)=>{if(Y.isComposing||Y.keyCode===229)return;if(Y.key==="Enter")Y.preventDefault(),H("enter");else if(Y.key==="Escape")Y.preventDefault(),Y.stopPropagation(),H("cancel");else if(Y.key==="Tab"&&X)Y.preventDefault(),H(Y.shiftKey?"shifttab":"tab")}},void 0,!1,void 0,this)}function LQ({rec:Z,prop:J,first:Q,editing:X,seed:z,onEdit:W,onCommit:G,onDone:q,onOpen:H,onRowMenu:Y}){let F=Z.cells[J.id];if(J.type==="checkbox")return $("div",{class:"cell center",children:$("input",{type:"checkbox",checked:!!F,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>G(!F)},void 0,!1,void 0,this)},void 0,!1,void 0,this);let K=(O)=>{if(J.type==="select"||J.type==="multi_select")j5(O,J,F,G);else W()},N=$(FZ,{prop:J,val:F},void 0,!1,void 0,this);return $(r,{children:[Q?$("div",{class:"cell",onDblClick:K,onContextMenu:(O)=>{O.preventDefault(),Y(O)},children:$("div",{class:"firstcell",children:[N,$("div",{class:"rowactions",children:$("button",{class:"rowopen",title:"打开",onClick:(O)=>{O.stopPropagation(),H()},children:$(g,{name:"openPeek",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this):$("div",{class:"cell",onDblClick:K,children:N},void 0,!1,void 0,this),X&&J.type!=="select"&&J.type!=="multi_select"&&$("div",{class:"celledit",children:$(b5,{prop:J,val:F,seed:z,captureTab:!0,onDone:q},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function f5(Z,J,Q,X){let z=[...Z],W=z.findIndex((H)=>H.id===J);if(W<0)return Z;let G=z.splice(W,1)[0],q=z.findIndex((H)=>H.id===Q);if(q<0)return Z;if(X==="after")q+=1;return z.splice(q,0,G),z}function PQ(Z){return Array.from(Z.querySelectorAll("td")).map((Q)=>(Q.textContent??"").trim()).filter(Boolean).join(" ")||"移动记录"}function BQ({colId:Z,startWidth:J,onCommit:Q}){return $("div",{class:"col-resizer",onPointerDown:(z)=>{z.preventDefault(),z.stopPropagation(),_8(z,{col:document.querySelector(`col[data-col-id="${CSS.escape(Z)}"]`),startWidth:J,min:80,onDone:Q})}},void 0,!1,void 0,this)}function j5(Z,J,Q,X){Z.stopPropagation();let z=J.type==="multi_select",W=J.config?.options??[];_0(Z,(G)=>$(OQ,{multi:z,options:W,value:Q,onPick:(q)=>{if(X(q),!z)G()}},void 0,!1,void 0,this))}function OQ({multi:Z,options:J,value:Q,onPick:X}){let[z,W]=R(Q),G=(H)=>Z?Array.isArray(z)?z.includes(H):!1:z===H,q=(H)=>{if(Z){let Y=new Set(Array.isArray(z)?z:[]);Y.has(H)?Y.delete(H):Y.add(H);let F=[...Y];W(F),X(F)}else W(H),X(H)};return $(r,{children:[$(h0,{children:Z?"多选 — 点选切换":"单选"},void 0,!1,void 0,this),J.map((H)=>$("button",{class:"item",onClick:()=>q(H),children:[$(a9,{text:H},void 0,!1,void 0,this),G(H)&&$("span",{class:"chk",children:$(g,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},H,!0,void 0,this)),Z&&Array.isArray(z)&&z.length>0&&$(r,{children:[$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"x",label:"清空",onClick:()=>{W([]),X([])}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function AQ(Z,J,Q,X,z){Z.stopPropagation(),_0(Z,(W)=>$(NQ,{prop:J,dbId:Q,reload:X,close:W,allProps:z},void 0,!1,void 0,this),{minWidth:252})}function NQ({prop:Z,dbId:J,reload:Q,close:X,allProps:z}){let[W,G]=R(Z.name),[q,H]=R(Z.type),[Y,F]=R(Z.config?.options??[]),K=(O)=>d.updateProperty(Z.id,O).then(Q).catch((C)=>s(`更新属性失败:${C.message}`)),N=(O)=>{H(O);let C=Y;if((O==="select"||O==="multi_select")&&C.length===0)C=["选项 1","选项 2"],F(C);K({type:O,...O==="select"||O==="multi_select"?{config:{options:C}}:{}})},U=(O)=>{F(O),K({config:{options:O}})};return $(r,{children:[$("input",{class:"field",value:W,onInput:(O)=>G(O.target.value),onBlur:()=>W&&W!==Z.name&&K({name:W}),onKeyDown:(O)=>{if(O.key==="Enter")O.target.blur(),X()}},void 0,!1,void 0,this),$(h0,{children:"属性类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(qZ).map((O)=>$("button",{class:"item"+(O===q?" sel":""),onClick:()=>N(O),children:[$("span",{class:"lico",children:$(g,{name:X9[O],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:qZ[O].t},void 0,!1,void 0,this)]},O,!0,void 0,this))},void 0,!1,void 0,this),(q==="select"||q==="multi_select")&&$(r,{children:[$(f0,{},void 0,!1,void 0,this),$(h0,{children:"选项"},void 0,!1,void 0,this),Y.map((O,C)=>$("div",{class:"optrow",children:[$(a9,{text:O},void 0,!1,void 0,this),$("button",{class:"x",onClick:()=>U(Y.filter((f,h)=>h!==C)),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O+C,!0,void 0,this)),$(z0,{icon:"plus",label:"添加选项",onClick:()=>U([...Y,"选项 "+(Y.length+1)])},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{X(),d.createProperty({db:J,name:h5("新属性",z),type:"text"}).then(Q).catch((O)=>s(`新建属性失败:${O.message}`))}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除属性",danger:!0,onClick:async()=>{if(X(),await R0({title:"删除属性?",message:`「${Z.name}」及其所有单元格数据将被移除。`,confirmLabel:"删除",danger:!0}))d.deleteProperty(Z.id).then(Q)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function h5(Z,J){let Q=new Set(J.map((X)=>X.name.toLowerCase()));if(!Q.has(Z.toLowerCase()))return Z;for(let X=2;;X++){let z=`${Z} ${X}`;if(!Q.has(z.toLowerCase()))return z}}function wQ(Z,J,Q,X){Z.stopPropagation(),_0(Z,(z)=>$(r,{children:[$(h0,{children:"新建属性 · 选择类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(qZ).map((W)=>$("button",{class:"item",onClick:()=>{z();let G=W==="select"||W==="multi_select"?{options:["选项 1","选项 2"]}:void 0;d.createProperty({db:J,name:h5(qZ[W].t,Q),type:W,config:G}).then(X).catch((q)=>s(`新建属性失败:${q.message}`))},children:[$("span",{class:"lico",children:$(g,{name:X9[W],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:qZ[W].t},void 0,!1,void 0,this)]},W,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function CQ(Z,J,Q,X){_0(Z,(z)=>$(r,{children:[$(h0,{children:"排序依据"},void 0,!1,void 0,this),J.map((W)=>$(z0,{icon:X9[W.type],label:W.name,onClick:()=>{X({id:W.id,desc:Q?.id===W.id?!Q.desc:!1}),z()}},W.id,!1,void 0,this)),Q&&$(r,{children:[$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"x",label:"清除排序",onClick:()=>{X(null),z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function MQ(Z,J,Q,X,z){Z.stopPropagation(),_0(Z,(W)=>$(r,{children:[$(z0,{icon:"cornerUpRight",label:"打开记录",onClick:()=>{W(),Q()}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"复制记录",onClick:()=>{W(),X()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(W(),await R0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function yQ({db:Z,props:J,rec:Q,onClose:X,onCommit:z,onDelete:W,onDuplicate:G,onReverted:q}){let[H,Y]=R(null),[F,K]=R(!1),{open:N,close:U}=i9(X),O=J[0];return $(r,{children:[$("div",{class:"scrim"+(N?" open":""),onClick:U},void 0,!1,void 0,this),$("div",{class:"peek"+(N?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:U,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("button",{class:"iconbtn",title:"返回字段",onClick:()=>K(!1),children:$(g,{name:"arrowLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(C)=>_0(C,(f)=>$(r,{children:[$(z0,{icon:"history",label:"版本历史",checked:F,onClick:()=>{f(),K(!F)}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"复制记录",onClick:()=>{f(),G()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(f(),await R0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))W()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:F?$(v5,{rec:Q,props:J,onReverted:q},void 0,!1,void 0,this):$(r,{children:[$("h2",{contentEditable:!0,onBlur:(C)=>O&&z(O,C.target.textContent??""),children:O?String(Q.cells[O.id]??"无标题"):"无标题"},void 0,!1,void 0,this),J.map((C)=>$("div",{class:"proprow",children:[$("div",{class:"k",children:[$(g,{name:X9[C.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:C.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(_Q,{prop:C,rec:Q,editing:H===C.id,onEdit:()=>Y(C.id),onCommit:(f)=>{z(C,f),Y(null)},onCloseEdit:()=>Y(null)},void 0,!1,void 0,this)]},C.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function _Q({prop:Z,rec:J,editing:Q,onEdit:X,onCommit:z,onCloseEdit:W}){let G=J.cells[Z.id];if(Z.type==="checkbox")return $("div",{class:"v",children:$("input",{type:"checkbox",checked:!!G,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>z(!G)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Z.type==="select"||Z.type==="multi_select")return $("div",{class:"v",onClick:(q)=>j5(q,Z,G,z),children:$(FZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Q)return $("div",{class:"v",children:$(b5,{prop:Z,val:G,onDone:(q)=>{if(q.reason!=="cancel"&&q.changed)z(q.value);else W()}},void 0,!1,void 0,this)},void 0,!1,void 0,this);return $("div",{class:"v",onClick:X,children:$(FZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var n4=X2(a4(),1);var E8=n4.default;function fz(Z){for(var J=1;J<arguments.length;J++){var Q=arguments[J];for(var X in Q)if(Object.prototype.hasOwnProperty.call(Q,X))Z[X]=Q[X]}return Z}function q1(Z,J){return Array(J+1).join(Z)}function o4(Z){return Z.replace(/^\n*/,"")}function t4(Z){var J=Z.length;while(J>0&&Z[J-1]===`
|
|
38
|
+
`)J--;return Z.substring(0,J)}function s4(Z){return t4(o4(Z))}var gz=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function H1(Z){return Y1(Z,gz)}var e4=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function Z$(Z){return Y1(Z,e4)}function bz(Z){return $$(Z,e4)}var J$=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function jz(Z){return Y1(Z,J$)}function hz(Z){return $$(Z,J$)}function Y1(Z,J){return J.indexOf(Z.nodeName)>=0}function $$(Z,J){return Z.getElementsByTagName&&J.some(function(Q){return Z.getElementsByTagName(Q).length})}var Dz=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function Q$(Z){return Dz.reduce(function(J,Q){return J.replace(Q[0],Q[1])},Z)}var t0={};t0.paragraph={filter:"p",replacement:function(Z){return`
|
|
11
39
|
|
|
12
40
|
`+Z+`
|
|
13
41
|
|
|
14
|
-
`}};
|
|
15
|
-
`}};
|
|
42
|
+
`}};t0.lineBreak={filter:"br",replacement:function(Z,J,Q){return Q.br+`
|
|
43
|
+
`}};t0.heading={filter:["h1","h2","h3","h4","h5","h6"],replacement:function(Z,J,Q){var X=Number(J.nodeName.charAt(1));if(Q.headingStyle==="setext"&&X<3){var z=q1(X===1?"=":"-",Z.length);return`
|
|
16
44
|
|
|
17
45
|
`+Z+`
|
|
18
|
-
`+
|
|
46
|
+
`+z+`
|
|
19
47
|
|
|
20
48
|
`}else return`
|
|
21
49
|
|
|
22
|
-
`+
|
|
50
|
+
`+q1("#",X)+" "+Z+`
|
|
23
51
|
|
|
24
|
-
`}};
|
|
52
|
+
`}};t0.blockquote={filter:"blockquote",replacement:function(Z){return Z=s4(Z).replace(/^/gm,"> "),`
|
|
25
53
|
|
|
26
54
|
`+Z+`
|
|
27
55
|
|
|
28
|
-
`}};
|
|
56
|
+
`}};t0.list={filter:["ul","ol"],replacement:function(Z,J){var Q=J.parentNode;if(Q.nodeName==="LI"&&Q.lastElementChild===J)return`
|
|
29
57
|
`+Z;else return`
|
|
30
58
|
|
|
31
59
|
`+Z+`
|
|
32
60
|
|
|
33
|
-
`}};
|
|
61
|
+
`}};t0.listItem={filter:"li",replacement:function(Z,J,Q){var X=Q.bulletListMarker+" ",z=J.parentNode;if(z.nodeName==="OL"){var W=z.getAttribute("start"),G=Array.prototype.indexOf.call(z.children,J);X=(W?Number(W)+G:G+1)+". "}var q=/\n$/.test(Z);return Z=s4(Z)+(q?`
|
|
34
62
|
`:""),Z=Z.replace(/\n/gm,`
|
|
35
|
-
`+" ".repeat(
|
|
36
|
-
`:"")}};
|
|
63
|
+
`+" ".repeat(X.length)),X+Z+(J.nextSibling?`
|
|
64
|
+
`:"")}};t0.indentedCodeBlock={filter:function(Z,J){return J.codeBlockStyle==="indented"&&Z.nodeName==="PRE"&&Z.firstChild&&Z.firstChild.nodeName==="CODE"},replacement:function(Z,J,Q){return`
|
|
37
65
|
|
|
38
66
|
`+J.firstChild.textContent.replace(/\n/g,`
|
|
39
67
|
`)+`
|
|
40
68
|
|
|
41
|
-
`}};
|
|
69
|
+
`}};t0.fencedCodeBlock={filter:function(Z,J){return J.codeBlockStyle==="fenced"&&Z.nodeName==="PRE"&&Z.firstChild&&Z.firstChild.nodeName==="CODE"},replacement:function(Z,J,Q){var X=J.firstChild.getAttribute("class")||"",z=(X.match(/language-(\S+)/)||[null,""])[1],W=J.firstChild.textContent,G=Q.fence.charAt(0),q=3,H=new RegExp("^"+G+"{3,}","gm"),Y;while(Y=H.exec(W))if(Y[0].length>=q)q=Y[0].length+1;var F=q1(G,q);return`
|
|
42
70
|
|
|
43
|
-
`+F+
|
|
44
|
-
`+
|
|
71
|
+
`+F+z+`
|
|
72
|
+
`+W.replace(/\n$/,"")+`
|
|
45
73
|
`+F+`
|
|
46
74
|
|
|
47
|
-
`}};
|
|
75
|
+
`}};t0.horizontalRule={filter:"hr",replacement:function(Z,J,Q){return`
|
|
48
76
|
|
|
49
77
|
`+Q.hr+`
|
|
50
78
|
|
|
51
|
-
`}};
|
|
79
|
+
`}};t0.inlineLink={filter:function(Z,J){return J.linkStyle==="inlined"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J){var Q=K1(J.getAttribute("href")),X=F1(p8(J.getAttribute("title"))),z=X?' "'+X+'"':"";return"["+Z+"]("+Q+z+")"}};t0.referenceLink={filter:function(Z,J){return J.linkStyle==="referenced"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J,Q){var X=K1(J.getAttribute("href")),z=p8(J.getAttribute("title"));if(z)z=' "'+F1(z)+'"';var W,G;switch(Q.linkReferenceStyle){case"collapsed":W="["+Z+"][]",G="["+Z+"]: "+X+z;break;case"shortcut":W="["+Z+"]",G="["+Z+"]: "+X+z;break;default:var q=this.references.length+1;W="["+Z+"]["+q+"]",G="["+q+"]: "+X+z}return this.references.push(G),W},references:[],append:function(Z){var J="";if(this.references.length)J=`
|
|
52
80
|
|
|
53
81
|
`+this.references.join(`
|
|
54
82
|
`)+`
|
|
55
83
|
|
|
56
|
-
`,this.references=[];return J}};
|
|
57
|
-
`):""}function
|
|
84
|
+
`,this.references=[];return J}};t0.emphasis={filter:["em","i"],replacement:function(Z,J,Q){if(!Z.trim())return"";return Q.emDelimiter+Z+Q.emDelimiter}};t0.strong={filter:["strong","b"],replacement:function(Z,J,Q){if(!Z.trim())return"";return Q.strongDelimiter+Z+Q.strongDelimiter}};t0.code={filter:function(Z){var J=Z.previousSibling||Z.nextSibling,Q=Z.parentNode.nodeName==="PRE"&&!J;return Z.nodeName==="CODE"&&!Q},replacement:function(Z){if(!Z)return"";Z=Z.replace(/\r?\n|\r/g," ");var J=/^`|^ .*?[^ ].* $|`$/.test(Z)?" ":"",Q="`",X=Z.match(/`+/gm)||[];while(X.indexOf(Q)!==-1)Q=Q+"`";return Q+J+Z+J+Q}};t0.image={filter:"img",replacement:function(Z,J){var Q=Q$(p8(J.getAttribute("alt"))),X=K1(J.getAttribute("src")||""),z=p8(J.getAttribute("title")),W=z?' "'+F1(z)+'"':"";return X?"":""}};function p8(Z){return Z?Z.replace(/(\n+\s*)+/g,`
|
|
85
|
+
`):""}function K1(Z){var J=Z.replace(/([<>()])/g,"\\$1");return J.indexOf(" ")>=0?"<"+J+">":J}function F1(Z){return Z.replace(/"/g,"\\\"")}function X$(Z){this.options=Z,this._keep=[],this._remove=[],this.blankRule={replacement:Z.blankReplacement},this.keepReplacement=Z.keepReplacement,this.defaultRule={replacement:Z.defaultReplacement},this.array=[];for(var J in Z.rules)this.array.push(Z.rules[J])}X$.prototype={add:function(Z,J){this.array.unshift(J)},keep:function(Z){this._keep.unshift({filter:Z,replacement:this.keepReplacement})},remove:function(Z){this._remove.unshift({filter:Z,replacement:function(){return""}})},forNode:function(Z){if(Z.isBlank)return this.blankRule;var J;if(J=z1(this.array,Z,this.options))return J;if(J=z1(this._keep,Z,this.options))return J;if(J=z1(this._remove,Z,this.options))return J;return this.defaultRule},forEach:function(Z){for(var J=0;J<this.array.length;J++)Z(this.array[J],J)}};function z1(Z,J,Q){for(var X=0;X<Z.length;X++){var z=Z[X];if(xz(z,J,Q))return z}return}function xz(Z,J,Q){var X=Z.filter;if(typeof X==="string"){if(X===J.nodeName.toLowerCase())return!0}else if(Array.isArray(X)){if(X.indexOf(J.nodeName.toLowerCase())>-1)return!0}else if(typeof X==="function"){if(X.call(Z,J,Q))return!0}else throw TypeError("`filter` needs to be a string, array, or function")}function mz(Z){var{element:J,isBlock:Q,isVoid:X}=Z,z=Z.isPre||function(K){return K.nodeName==="PRE"};if(!J.firstChild||z(J))return;var W=null,G=!1,q=null,H=l4(q,J,z);while(H!==J){if(H.nodeType===3||H.nodeType===4){var Y=H.data.replace(/[ \r\n\t]+/g," ");if((!W||/ $/.test(W.data))&&!G&&Y[0]===" ")Y=Y.substr(1);if(!Y){H=W1(H);continue}H.data=Y,W=H}else if(H.nodeType===1){if(Q(H)||H.nodeName==="BR"){if(W)W.data=W.data.replace(/ $/,"");W=null,G=!1}else if(X(H)||z(H))W=null,G=!0;else if(W)G=!1}else{H=W1(H);continue}var F=l4(q,H,z);q=H,H=F}if(W){if(W.data=W.data.replace(/ $/,""),!W.data)W1(W)}}function W1(Z){var J=Z.nextSibling||Z.parentNode;return Z.parentNode.removeChild(Z),J}function l4(Z,J,Q){if(Z&&Z.parentNode===J||Q(J))return J.nextSibling||J.parentNode;return J.firstChild||J.nextSibling||J.parentNode}var U1=typeof window<"u"?window:{};function uz(){var Z=U1.DOMParser,J=!1;try{if(new Z().parseFromString("","text/html"))J=!0}catch(Q){}return J}function Ez(){var Z=function(){};if(pz())Z.prototype.parseFromString=function(J){var Q=new window.ActiveXObject("htmlfile");return Q.designMode="on",Q.open(),Q.write(J),Q.close(),Q};else Z.prototype.parseFromString=function(J){var Q=document.implementation.createHTMLDocument("");return Q.open(),Q.write(J),Q.close(),Q};return Z}function pz(){var Z=!1;try{document.implementation.createHTMLDocument("").open()}catch(J){if(U1.ActiveXObject)Z=!0}return Z}var cz=uz()?U1.DOMParser:Ez();function dz(Z,J){var Q;if(typeof Z==="string"){var X=iz().parseFromString('<x-turndown id="turndown-root">'+Z+"</x-turndown>","text/html");Q=X.getElementById("turndown-root")}else Q=Z.cloneNode(!0);return mz({element:Q,isBlock:H1,isVoid:Z$,isPre:J.preformattedCode?az:null}),Q}var G1;function iz(){return G1=G1||new cz,G1}function az(Z){return Z.nodeName==="PRE"||Z.nodeName==="CODE"}function nz(Z,J){return Z.isBlock=H1(Z),Z.isCode=Z.nodeName==="CODE"||Z.parentNode.isCode,Z.isBlank=lz(Z),Z.flankingWhitespace=rz(Z,J),Z}function lz(Z){return!Z$(Z)&&!jz(Z)&&/^\s*$/i.test(Z.textContent)&&!bz(Z)&&!hz(Z)}function rz(Z,J){if(Z.isBlock||J.preformattedCode&&Z.isCode)return{leading:"",trailing:""};var Q=oz(Z.textContent);if(Q.leadingAscii&&r4("left",Z,J))Q.leading=Q.leadingNonAscii;if(Q.trailingAscii&&r4("right",Z,J))Q.trailing=Q.trailingNonAscii;return{leading:Q.leading,trailing:Q.trailing}}function oz(Z){var J=Z.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);return{leading:J[1],leadingAscii:J[2],leadingNonAscii:J[3],trailing:J[4],trailingNonAscii:J[5],trailingAscii:J[6]}}function r4(Z,J,Q){var X,z,W;if(Z==="left")X=J.previousSibling,z=/ $/;else X=J.nextSibling,z=/^ /;if(X){if(X.nodeType===3)W=z.test(X.nodeValue);else if(Q.preformattedCode&&X.nodeName==="CODE")W=!1;else if(X.nodeType===1&&!H1(X))W=z.test(X.textContent)}return W}var tz=Array.prototype.reduce;function pZ(Z){if(!(this instanceof pZ))return new pZ(Z);var J={rules:t0,headingStyle:"setext",hr:"* * *",bulletListMarker:"*",codeBlockStyle:"indented",fence:"```",emDelimiter:"_",strongDelimiter:"**",linkStyle:"inlined",linkReferenceStyle:"full",br:" ",preformattedCode:!1,blankReplacement:function(Q,X){return X.isBlock?`
|
|
58
86
|
|
|
59
|
-
`:""},keepReplacement:function(Q
|
|
87
|
+
`:""},keepReplacement:function(Q,X){return X.isBlock?`
|
|
60
88
|
|
|
61
|
-
|
|
89
|
+
`+X.outerHTML+`
|
|
62
90
|
|
|
63
|
-
|
|
91
|
+
`:X.outerHTML},defaultReplacement:function(Q,X){return X.isBlock?`
|
|
64
92
|
|
|
65
93
|
`+Q+`
|
|
66
94
|
|
|
67
|
-
`:Q}};this.options=
|
|
95
|
+
`:Q}};this.options=fz({},J,Z),this.rules=new X$(this.options)}pZ.prototype={turndown:function(Z){if(!ZW(Z))throw TypeError(Z+" is not a string, or an element/document/fragment node.");if(Z==="")return"";var J=z$.call(this,new dz(Z,this.options));return sz.call(this,J)},use:function(Z){if(Array.isArray(Z))for(var J=0;J<Z.length;J++)this.use(Z[J]);else if(typeof Z==="function")Z(this);else throw TypeError("plugin must be a Function or an Array of Functions");return this},addRule:function(Z,J){return this.rules.add(Z,J),this},keep:function(Z){return this.rules.keep(Z),this},remove:function(Z){return this.rules.remove(Z),this},escape:function(Z){return Q$(Z)}};function z$(Z){var J=this;return tz.call(Z.childNodes,function(Q,X){X=new nz(X,J.options);var z="";if(X.nodeType===3)z=X.isCode?X.nodeValue:J.escape(X.nodeValue);else if(X.nodeType===1)z=ez.call(J,X);return W$(Q,z)},"")}function sz(Z){var J=this;return this.rules.forEach(function(Q){if(typeof Q.append==="function")Z=W$(Z,Q.append(J.options))}),Z.replace(/^[\t\r\n]+/,"").replace(/[\t\r\n\s]+$/,"")}function ez(Z){var J=this.rules.forNode(Z),Q=z$.call(this,Z),X=Z.flankingWhitespace;if(X.leading||X.trailing)Q=Q.trim();return X.leading+J.replacement(Q,Z,this.options)+X.trailing}function W$(Z,J){var Q=t4(Z),X=o4(J),z=Math.max(Z.length-Q.length,J.length-X.length),W=`
|
|
68
96
|
|
|
69
|
-
`.substring(0,
|
|
97
|
+
`.substring(0,z);return Q+W+X}function ZW(Z){return Z!=null&&(typeof Z==="string"||Z.nodeType&&(Z.nodeType===1||Z.nodeType===9||Z.nodeType===11))}var G$=/highlight-(?:text|source)-([a-z0-9]+)/;function JW(Z){Z.addRule("highlightedCodeBlock",{filter:function(J){var Q=J.firstChild;return J.nodeName==="DIV"&&G$.test(J.className)&&Q&&Q.nodeName==="PRE"},replacement:function(J,Q,X){var z=Q.className||"",W=(z.match(G$)||[null,""])[1];return`
|
|
70
98
|
|
|
71
|
-
|
|
99
|
+
`+X.fence+W+`
|
|
72
100
|
`+Q.firstChild.textContent+`
|
|
73
|
-
|
|
101
|
+
`+X.fence+`
|
|
74
102
|
|
|
75
|
-
`}})}function
|
|
103
|
+
`}})}function $W(Z){Z.addRule("strikethrough",{filter:["del","s","strike"],replacement:function(J){return"~"+J+"~"}})}var QW=Array.prototype.indexOf,XW=Array.prototype.every,NZ={};NZ.tableCell={filter:["th","td"],replacement:function(Z,J){return q$(Z,J)}};NZ.tableRow={filter:"tr",replacement:function(Z,J){var Q="",X={left:":--",right:"--:",center:":-:"};if(L1(J))for(var z=0;z<J.childNodes.length;z++){var W="---",G=(J.childNodes[z].getAttribute("align")||"").toLowerCase();if(G)W=X[G]||W;Q+=q$(W,J.childNodes[z])}return`
|
|
76
104
|
`+Z+(Q?`
|
|
77
|
-
`+Q:"")}};
|
|
105
|
+
`+Q:"")}};NZ.table={filter:function(Z){return Z.nodeName==="TABLE"&&L1(Z.rows[0])},replacement:function(Z){return Z=Z.replace(`
|
|
78
106
|
|
|
79
107
|
`,`
|
|
80
108
|
`),`
|
|
81
109
|
|
|
82
110
|
`+Z+`
|
|
83
111
|
|
|
84
|
-
`}};
|
|
112
|
+
`}};NZ.tableSection={filter:["thead","tbody","tfoot"],replacement:function(Z){return Z}};function L1(Z){var J=Z.parentNode;return J.nodeName==="THEAD"||J.firstChild===Z&&(J.nodeName==="TABLE"||zW(J))&&XW.call(Z.childNodes,function(Q){return Q.nodeName==="TH"})}function zW(Z){var J=Z.previousSibling;return Z.nodeName==="TBODY"&&(!J||J.nodeName==="THEAD"&&/^\s*$/i.test(J.textContent))}function q$(Z,J){var Q=QW.call(J.parentNode.childNodes,J),X=" ";if(Q===0)X="| ";return X+Z+" |"}function WW(Z){Z.keep(function(Q){return Q.nodeName==="TABLE"&&!L1(Q.rows[0])});for(var J in NZ)Z.addRule(J,NZ[J])}function GW(Z){Z.addRule("taskListItems",{filter:function(J){return J.type==="checkbox"&&J.parentNode.nodeName==="LI"},replacement:function(J,Q){return(Q.checked?"[x]":"[ ]")+" "}})}function H$(Z){Z.use([JW,$W,WW,GW])}function qW(Z){let J=Z.match(/(?:language|lang)-(\S+)/);return J?J[1]:""}function HW(){let Z=new pZ({codeBlockStyle:"fenced",headingStyle:"atx",bulletListMarker:"-",emDelimiter:"*",strongDelimiter:"**"});return Z.use(H$),Z.remove(["style","script","title"]),Z.escape=(J)=>J,Z.addRule("fencedCodeWithLang",{filter:(J)=>J.nodeName==="PRE"&&!!J.querySelector("code"),replacement:(J,Q)=>{let X=Q.querySelector("code"),z=(X?.textContent??Q.textContent??"").replace(/\n$/,""),W=X?qW(X.className):"",G="```";return`
|
|
85
113
|
|
|
86
|
-
\`\`\`${
|
|
87
|
-
${
|
|
114
|
+
\`\`\`${W}
|
|
115
|
+
${z}
|
|
88
116
|
\`\`\`
|
|
89
117
|
|
|
90
|
-
`}}),Z}var
|
|
91
|
-
`)
|
|
118
|
+
`}}),Z}var Y$=null;function K$(Z){return Y$??=HW(),Y$.turndown(Z)}var YW=new Set(["mp4","webm","mov","m4v","ogv","mkv","ogg"]),KW=new Set(["mp3","wav","m4a","aac","flac","opus","oga","weba"]);function B1(Z){let J=(Z||"").toLowerCase();if(J.startsWith("image/"))return"image";if(J.startsWith("video/"))return"video";if(J.startsWith("audio/"))return"audio";return"file"}function FW(Z){let J=Z.split(/[?#]/,1)[0]??Z,Q=J.slice(J.lastIndexOf("/")+1),X=Q.lastIndexOf(".");return X>=0?Q.slice(X+1).toLowerCase():""}function UW(Z){if(YW.has(Z))return"video";if(KW.has(Z))return"audio";return"image"}function LW(Z){let J=Z.indexOf("#"),Q=J>=0?Z.slice(J):"",X=J>=0?Z.slice(0,J):Z,z=X.indexOf("?");if(z<0)return{src:Z};let W=X.slice(0,z),G,q=[];for(let H of X.slice(z+1).split("&").filter(Boolean)){let Y=H.match(/^w=(\d+)$/);if(Y)G=parseInt(Y[1],10);else q.push(H)}return{src:W+(q.length?"?"+q.join("&"):"")+Q,width:G}}function PW(Z){let J=Z.src??"";if(Z.type!=="image"||!Z.width||Z.width<=0)return J;return J+(J.includes("?")?"&":"?")+"w="+Math.round(Z.width)}function F$(Z){return Z.replace(/[[\]()]/g,"").trim()}function BW(Z){let J=Z.trim(),Q=J.match(/^!\[([^\]]*)\]\(([^\s)]+)\)$/);if(Q){let{src:X,width:z}=LW(Q[2]),W=UW(FW(X)),G={type:W,content:"",src:X,name:Q[1]};if(W==="image"&&z)G.width=z;return G}if(Q=J.match(/^\[([^\]]*)\]\(([^\s)]+)(?:\s+"([^"]*)")?\)$/),Q&&Q[2].startsWith("/blob/")){let X={type:"file",content:"",src:Q[2],name:Q[1]};if(Q[3]!=null&&/^\d+$/.test(Q[3]))X.size=parseInt(Q[3],10);return X}return null}function U$(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}var OW=0;function W9(){return`blk_${Date.now().toString(36)}_${(OW++).toString(36)}`}var AW=new Set(["bullet","numbered","todo"]),NW=new Set(["h1","h2","h3","h4","h5","h6"]),T9={fenceOpen:/^\s*(`{3,}|~{3,})\s*([^\s`]*)?.*$/,h:/^(#{1,6})\s+(.*)$/,todo:/^\s*[-*+]\s+\[([ xX])\]\s*(.*)$/,bullet:/^\s*[-*+]\s+(.*)$/,numbered:/^\s*(\d+)[.)]\s+(.*)$/,quote:/^>\s?(.*)$/,divider:/^\s*(?:-{3,}|\*{3,}|_{3,})\s*$/};function Q9(Z){return AW.has(Z)}function wZ(Z){return NW.has(Z)}function wW(){return[["",""],["",""]]}function O1(Z,J,Q){if(Z.type=J,Z.content=Q.content??"",J==="todo")Z.checked=Q.checked??!1;else delete Z.checked;if(J==="code")Z.lang=Q.lang??"";else delete Z.lang;if(J==="numbered"&&Q.start!=null&&Q.start>1)Z.start=Q.start;else delete Z.start;if(J==="table")Z.rows=Q.rows?Q.rows.map((X)=>[...X]):wW(),Z.align=Q.align?[...Q.align]:Array(Z.rows[0].length).fill(null);else delete Z.rows,delete Z.align;if(U$(J)||J==="uploading"){if(Z.src=Q.src??"",Q.name!=null)Z.name=Q.name;else delete Z.name;if(J==="image"&&Q.width)Z.width=Q.width;else delete Z.width;if(J==="file"&&Q.size!=null)Z.size=Q.size;else delete Z.size}else delete Z.src,delete Z.name,delete Z.width,delete Z.size}function t9(Z,J={}){let Q={id:W9(),type:Z,content:""};if(O1(Q,Z,J),Q9(Z)&&J.children?.length)Q.children=J.children;return Q}function L$(Z){let J=d8(Z.filter((Q)=>!o9(Q)));return Z.map((Q)=>y$(Q,0,J.get(Q.id)??1).join(`
|
|
119
|
+
`)).join(`
|
|
120
|
+
`)}function cZ(Z){let J=(Z??"").replace(/\r\n?/g,`
|
|
92
121
|
`),Q=J?J.split(`
|
|
93
|
-
`):[]
|
|
94
|
-
`)}function
|
|
95
|
-
`)
|
|
96
|
-
`)},next:
|
|
97
|
-
`)},next:
|
|
98
|
-
`).
|
|
99
|
-
`).map((
|
|
100
|
-
`).map((
|
|
101
|
-
`)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
122
|
+
`):[],X=N$(Q,0,0).blocks;P$(X);let z=J.length-J.replace(/\n+$/,"").length;for(let W=1;W<z;W++)X.push({id:W9(),type:"p",content:""});return X}function o9(Z){return Z.type==="p"&&Z.content.trim()===""&&!Z.children?.length}function d8(Z){let J=new Map,Q=null;for(let X of Z)if(X.type==="numbered")Q=Q===null?Math.max(1,X.start??1):Q+1,J.set(X.id,Q);else Q=null;return J}function P$(Z){let J=!0;for(let Q of Z){if(Q.type==="numbered")if(J){if((Q.start??1)<=1)delete Q.start;J=!1}else delete Q.start;else J=!0;if(Q.children)P$(Q.children)}}function B$(Z){return O$(Z,0,!0).join(`
|
|
123
|
+
`)}function O$(Z,J,Q){let X=d8(Z.filter((q)=>!o9(q))),z=[],W=null,G=0;for(let q of Z){if(o9(q)){if(z.length)G++;continue}if(!_$(q))continue;if(z.length){let H=jW(W,q)||G>0?1:0;for(let Y=0;Y<H+G;Y++)z.push("")}z.push(...y$(q,J,X.get(q.id)??1)),W=q,G=0}if(z.length&&G>0)for(let q=0;q<G+(Q?1:0);q++)z.push("");return z}function A1(Z,J){if(J===" "){let X=Z.match(/^(#{1,6}) $/);if(X)return{type:`h${X[1].length}`,content:""};if(Z==="> ")return{type:"quote",content:""};if(/^[-*+] $/.test(Z))return{type:"bullet",content:""};let z=Z.match(/^(\d+)[.)] $/);if(z)return{type:"numbered",content:"",start:parseInt(z[1],10)};let W=Z.match(/^[-*+]\s+\[([ xX])\]\s*$/);if(W)return{type:"todo",content:"",checked:W[1].toLowerCase()==="x"};return null}let Q=Z.match(/^```([A-Za-z0-9_+.#-]*)$/);if(Q)return{type:"code",content:"",lang:N1(Q[1]??"")};return null}function A$(Z){let J=Z.match(/^\[([ xX])\]$/);return J?{checked:J[1].toLowerCase()==="x"}:null}function N$(Z,J,Q){let X=[],z=J,W=0;while(z<Z.length){let G=Z[z];if(G.trim()===""){let H=z;while(H<Z.length&&Z[H].trim()==="")H++;if(H>=Z.length||g9(Z[H])<Q)break;W+=H-z,z=H;continue}if(g9(G)<Q)break;if(X.length&&W>1)for(let H=1;H<W;H++)X.push({id:W9(),type:"p",content:""});W=0;let q=CW(Z,z,Q)??kW(Z,z,Q)??MW(Z,z,Q);X.push(q.block),z=q.next}return{blocks:X,next:z}}function CW(Z,J,Q){let X=M$(Z[J],Q);if(!X)return null;let z={id:W9(),type:X.type,content:X.content};if(X.type==="todo")z.checked=!!X.checked;if(X.type==="numbered"&&X.num!=null)z.start=X.num;let W=N$(Z,J+1,X.indent+2);if(W.blocks.length)z.children=W.blocks;return{block:z,next:W.next}}function MW(Z,J,Q){let X=B9(Z[J],Q),z=X.match(T9.fenceOpen);if(z){let q=yW(Z,J,Q,z);if(q)return q}if(T9.divider.test(X.trim()))return{block:{id:W9(),type:"divider",content:""},next:J+1};let W=X.match(T9.h);if(W)return{block:{id:W9(),type:`h${W[1].length}`,content:W[2]},next:J+1};if(T9.quote.test(X))return _W(Z,J,Q);let G=BW(X);if(G)return{block:{id:W9(),...G},next:J+1};return fW(Z,J,Q)}function yW(Z,J,Q,X){let z=X[1],W=[],G=J+1,q=!1;for(;G<Z.length;G++){let Y=Z[G],F=B9(Y,Q);if(hW(F,z[0],z.length)){q=!0,G++;break}W.push(F)}if(!q)return null;let H=N1(X[2]??"");if(H==="mh-html")return{block:{id:W9(),type:"html",content:W.join(`
|
|
124
|
+
`)},next:G};return{block:{id:W9(),type:"code",content:W.join(`
|
|
125
|
+
`),lang:H},next:G}}function _W(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||g9(W)<Q)break;let G=B9(W,Q).match(T9.quote);if(!G)break;X.push(G[1]??"")}return{block:{id:W9(),type:"quote",content:X.join(`
|
|
126
|
+
`)},next:z}}var vW=/^\s*:?-+:?\s*$/;function w$(Z,J,Q){let X=Z[J],z=Z[J+1];if(X==null||z==null)return!1;if(g9(X)<Q||g9(z)<Q)return!1;let W=B9(X,Q),G=B9(z,Q);if(!W.includes("|")||!G.includes("|"))return!1;let q=c8(G);return q.length>0&&q.every((H)=>vW.test(H))}function c8(Z){let J=[],Q="";for(let X=0;X<Z.length;X++){let z=Z[X];if(z==="\\"&&Z[X+1]==="|"){Q+="|",X++;continue}if(z==="|"){J.push(Q),Q="";continue}Q+=z}if(J.push(Q),J.length&&J[0].trim()==="")J.shift();if(J.length&&J[J.length-1].trim()==="")J.pop();return J.map((X)=>X.trim())}function TW(Z){let J=Z.trim(),Q=J.startsWith(":"),X=J.endsWith(":");if(Q&&X)return"center";if(X)return"right";if(Q)return"left";return null}function P1(Z,J){let Q=Z.slice(0,J);while(Q.length<J)Q.push("");return Q}function kW(Z,J,Q){if(!w$(Z,J,Q))return null;let X=c8(B9(Z[J],Q)),z=Math.max(1,X.length),W=c8(B9(Z[J+1],Q)).map(TW),G=[P1(X,z)],q=J+2;for(;q<Z.length;q++){let H=Z[q];if(H.trim()===""||g9(H)<Q)break;let Y=B9(H,Q);if(!Y.includes("|"))break;G.push(P1(c8(Y),z))}while(W.length<z)W.push(null);return W.length=z,{block:{id:W9(),type:"table",content:"",rows:G,align:W},next:q}}function RW(Z){switch(Z){case"left":return":---";case"center":return":---:";case"right":return"---:";default:return"---"}}function IW(Z,J){let Q=" ".repeat(J),X=Z.rows??[],z=Math.max(1,...X.map((F)=>F.length)),W=Z.align??[],G=(F)=>F.replace(/\|/g,"\\|").replace(/\n/g," "),q=(F)=>`${Q}| ${P1(F,z).map(G).join(" | ")} |`,H=`${Q}| ${Array.from({length:z},(F,K)=>RW(W[K]??null)).join(" | ")} |`,Y=X[0]??Array.from({length:z},()=>"");return[q(Y),H,...X.slice(1).map(q)]}var C$=/^\\*(?:`{3,}|~{3,})/;function SW(Z){return C$.test(Z)?`\\${Z}`:Z}function VW(Z){return Z.startsWith("\\")&&C$.test(Z.slice(1))?Z.slice(1):Z}function fW(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||g9(W)<Q)break;if(X.length&&(gW(W,Q)||w$(Z,z,Q)))break;X.push(VW(B9(W,Q)))}return{block:{id:W9(),type:"p",content:X.join(`
|
|
127
|
+
`)},next:z}}function gW(Z,J){if(M$(Z,J))return!0;let Q=B9(Z,J);return!!Q.match(T9.fenceOpen)||!!Q.match(T9.h)||T9.divider.test(Q.trim())||T9.quote.test(Q)}function M$(Z,J){let Q=g9(Z);if(Q<J)return null;let X=B9(Z,Q),z=X.match(/^[-*+]\s+\[([ xX])\]\s*(.*)$/);if(z)return{indent:Q,type:"todo",checked:z[1].toLowerCase()==="x",content:z[2]};if(z=X.match(/^(\d+)[.)](?:\s+(.*))?$/),z)return{indent:Q,type:"numbered",content:z[2]??"",num:parseInt(z[1],10)};if(z=X.match(/^[-*+](?:\s+(.*))?$/),z)return{indent:Q,type:"bullet",content:z[1]??""};return null}function y$(Z,J,Q){let X=" ".repeat(J);if(wZ(Z.type))return[`${X}${"#".repeat(Number(Z.type.slice(1)))} ${Z.content}`];switch(Z.type){case"bullet":case"numbered":case"todo":return bW(Z,J,Q);case"quote":return Z.content.split(`
|
|
128
|
+
`).map((z)=>`${X}>${z?` ${z}`:""}`);case"code":{let z=`${X}\`\`\`${Z.lang?N1(Z.lang):""}`,W=Z.content.split(`
|
|
129
|
+
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"table":return IW(Z,J);case"divider":return[`${X}---`];case"image":case"video":case"audio":return[`${X}})`];case"file":{let z=Z.size!=null?` "${Z.size}"`:"";return[`${X}[${F$(Z.name??"文件")}](${Z.src??""}${z})`]}case"html":{let z=`${X}\`\`\`mh-html`,W=Z.content.split(`
|
|
130
|
+
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"uploading":return[];default:return Z.content.split(`
|
|
131
|
+
`).map((z)=>`${X}${SW(z)}`)}}function bW(Z,J,Q){let X=" ".repeat(J),z=Z.type==="numbered"?`${Q}. `:Z.type==="todo"?`- [${Z.checked?"x":" "}] `:"- ",W=[`${X}${z}${Z.content}`],G=Z.children??[],q=G.find((H)=>!o9(H)&&_$(H));if(q){if(!Q9(q.type)&&Z.content.trim()!=="")W.push("");W.push(...O$(G,J+2,!1))}return W}function jW(Z,J){if(!Z)return!1;return!(Q9(Z.type)&&Q9(J.type))}function _$(Z){if(Z.type==="divider")return!0;if(Q9(Z.type))return!0;if(Z.type==="code")return Z.content.trim()!==""||!!Z.lang?.trim();if(Z.type==="table")return(Z.rows??[]).some((J)=>J.some((Q)=>Q.trim()!==""));if(Z.type==="uploading")return!1;if(U$(Z.type))return!!Z.src;if(Z.type==="html")return Z.content.trim()!=="";return Z.content.trim()!==""}function g9(Z){let J=0;for(let Q of Z)if(Q===" ")J++;else if(Q==="\t")J+=4;else break;return J}function B9(Z,J){let Q=0,X=0;for(;X<Z.length&&Q<J;X++){let z=Z[X];if(z===" ")Q++;else if(z==="\t")Q+=4;else break}return Z.slice(X)}function hW(Z,J,Q){let X=Z.trim();if(!X||X[0]!==J)return!1;for(let z of X)if(z!==J)return!1;return X.length>=Q}function N1(Z){return Z.trim().replace(/[^A-Za-z0-9_+.#-]/g,"")}var w1=[{id:"",label:"纯文本"},{id:"bash",label:"Bash"},{id:"shell",label:"Shell"},{id:"javascript",label:"JavaScript"},{id:"typescript",label:"TypeScript"},{id:"json",label:"JSON"},{id:"python",label:"Python"},{id:"go",label:"Go"},{id:"rust",label:"Rust"},{id:"java",label:"Java"},{id:"c",label:"C"},{id:"cpp",label:"C++"},{id:"csharp",label:"C#"},{id:"sql",label:"SQL"},{id:"yaml",label:"YAML"},{id:"xml",label:"HTML / XML"},{id:"css",label:"CSS"},{id:"scss",label:"SCSS"},{id:"markdown",label:"Markdown"},{id:"php",label:"PHP"},{id:"ruby",label:"Ruby"},{id:"swift",label:"Swift"},{id:"kotlin",label:"Kotlin"},{id:"objectivec",label:"Objective-C"},{id:"perl",label:"Perl"},{id:"lua",label:"Lua"},{id:"makefile",label:"Makefile"},{id:"ini",label:"INI / TOML"},{id:"diff",label:"Diff"}],C1=[{type:"p",ic:"text",t:"文本",d:"普通段落"},{type:"h1",ic:"heading",t:"标题 1",d:"大号标题"},{type:"h2",ic:"heading",t:"标题 2",d:"中号标题"},{type:"h3",ic:"heading",t:"标题 3",d:"小号标题"},{type:"bullet",ic:"list",t:"无序列表",d:"项目符号"},{type:"numbered",ic:"numList",t:"有序列表",d:"编号列表"},{type:"todo",ic:"checkbox",t:"待办清单",d:"复选项"},{type:"quote",ic:"quote",t:"引用",d:"引用块"},{type:"code",ic:"code",t:"代码",d:"代码块"},{type:"table",ic:"table",t:"表格",d:"插入表格"},{type:"divider",ic:"minus",t:"分隔线",d:"水平分隔"},{type:"image",ic:"image",t:"图片",d:"上传或拖入图片"},{type:"video",ic:"video",t:"视频",d:"上传视频文件"},{type:"audio",ic:"audio",t:"音频",d:"上传音频文件"},{type:"file",ic:"file",t:"文件",d:"上传任意文件"},{type:"html",ic:"htmlTag",t:"HTML",d:"嵌入并渲染 HTML"}];function dZ(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}function DW(Z){if(Z==null||!isFinite(Z))return"";if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(0)} KB`;if(Z<1073741824)return`${(Z/1048576).toFixed(1)} MB`;return`${(Z/1073741824).toFixed(2)} GB`}function M1({icon:Z,name:J,onRetry:Q}){return $("div",{class:"void-block void-unavailable",children:[$(g,{name:Z,cls:"ico"},void 0,!1,void 0,this),$("span",{class:"vu-meta",children:[$("span",{class:"vu-name",children:J||"媒体"},void 0,!1,void 0,this),$("span",{class:"vu-sub",children:"字节未同步到本设备或加载失败"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"vu-retry",onClick:Q,onMouseDown:(X)=>X.stopPropagation(),children:[$(g,{name:"history",cls:"ico sm"},void 0,!1,void 0,this)," 重试"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function v$({block:Z}){return $("div",{class:"void-block void-uploading",children:[$(g,{name:"spinner",cls:"ico spin"},void 0,!1,void 0,this),$("span",{class:"vu-name",children:Z.name||"上传中…"},void 0,!1,void 0,this),$("span",{class:"vu-sub",children:"上传中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function T$({block:Z,selected:J,onResize:Q,onPreview:X}){let z=W0(null),W=W0(null),[G,q]=R(Z.width),H=W0(Z.width),[Y,F]=R(!1),[K,N]=R(0);o(()=>{q(Z.width),H.current=Z.width},[Z.width]),o(()=>F(!1),[Z.src]);let U=(O,C)=>{O.preventDefault(),O.stopPropagation();let f=W.current;if(!f)return;let h=O.clientX,_=f.offsetWidth,M=z.current?.closest(".doc")?.clientWidth??1200,k=(L)=>{let P=L.clientX-h,w=Math.max(60,Math.min(C==="r"?_+P:_-P,M));H.current=Math.round(w),q(H.current)},T=()=>{window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",T),Q(H.current)};window.addEventListener("mousemove",k),window.addEventListener("mouseup",T)};if(Y)return $(M1,{icon:"image",name:Z.name,onRetry:()=>{N((O)=>O+1),F(!1)}},void 0,!1,void 0,this);return $("div",{ref:z,class:"void-block void-image"+(J?" selected":""),style:{width:G?`${G}px`:void 0},onDblClick:X,children:[$("img",{ref:W,src:Z.src,alt:Z.name??"",loading:"lazy",draggable:!1,title:"双击预览 / 标注",onError:()=>F(!0)},K,!1,void 0,this),$("button",{class:"void-expand",title:"预览",onClick:X,onMouseDown:(O)=>O.stopPropagation(),children:$(g,{name:"maximize",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),J&&$(r,{children:[$("span",{class:"img-handle h-l",onMouseDown:(O)=>U(O,"l")},void 0,!1,void 0,this),$("span",{class:"img-handle h-r",onMouseDown:(O)=>U(O,"r")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function k$({block:Z}){let[J,Q]=R(!1),[X,z]=R(0);if(o(()=>Q(!1),[Z.src]),J)return $(M1,{icon:"video",name:Z.name,onRetry:()=>{z((W)=>W+1),Q(!1)}},void 0,!1,void 0,this);return $("div",{class:"void-block void-media void-video",children:$("video",{src:Z.src,controls:!0,preload:"metadata",onError:()=>Q(!0)},X,!1,void 0,this)},void 0,!1,void 0,this)}function R$({block:Z}){let[J,Q]=R(!1),[X,z]=R(0);if(o(()=>Q(!1),[Z.src]),J)return $(M1,{icon:"audio",name:Z.name,onRetry:()=>{z((W)=>W+1),Q(!1)}},void 0,!1,void 0,this);return $("div",{class:"void-block void-media void-audio",children:[Z.name&&$("div",{class:"void-audio-name",children:Z.name},void 0,!1,void 0,this),$("audio",{src:Z.src,controls:!0,preload:"metadata",onError:()=>Q(!0)},X,!1,void 0,this)]},void 0,!0,void 0,this)}function I$({block:Z}){let J=Z.name||"文件",Q=J.includes(".")?J.slice(J.lastIndexOf(".")+1).toUpperCase():"";return $("a",{class:"void-block void-file",href:Z.src,download:J,target:"_blank",rel:"noreferrer",onMouseDown:(X)=>X.stopPropagation(),children:[$("span",{class:"file-glyph",children:[$(g,{name:"file",cls:"ico"},void 0,!1,void 0,this),Q&&$("span",{class:"file-ext",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"file-meta",children:[$("span",{class:"file-name",children:J},void 0,!1,void 0,this),$("span",{class:"file-sub",children:DW(Z.size)||"下载文件"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"file-dl",children:$(g,{name:"download",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var xW="<script>(function(){function r(){try{parent.postMessage({__mhHtmlHeight:document.documentElement.scrollHeight},'*')}catch(e){}}try{new ResizeObserver(r).observe(document.documentElement)}catch(e){}addEventListener('load',r);setTimeout(r,60);setTimeout(r,400)})();</script>";function mW(Z){return`<!doctype html><html><head><meta charset="utf-8"><base target="_blank"><style>html,body{margin:0;padding:0;color-scheme:light dark;font-family:system-ui,-apple-system,sans-serif}</style></head><body>${Z}${xW}</body></html>`}function S$({block:Z,selected:J,onChange:Q}){let[X,z]=R(!Z.content.trim()),[W,G]=R(120),q=W0(null),H=W0(null);return o(()=>{if(X)H.current?.focus()},[X]),o(()=>{let Y=(F)=>{if(q.current&&F.source===q.current.contentWindow){let K=Number(F.data?.__mhHtmlHeight);if(K>0)G(Math.max(48,Math.min(Math.ceil(K),4000)))}};return window.addEventListener("message",Y),()=>window.removeEventListener("message",Y)},[]),$("div",{class:"void-block void-html"+(J?" selected":""),children:[$("div",{class:"html-bar",children:[$("span",{class:"html-tag",children:[$(g,{name:"htmlTag",cls:"ico sm"},void 0,!1,void 0,this)," HTML"]},void 0,!0,void 0,this),$("button",{class:"html-toggle"+(X?" on":""),title:X?"预览渲染":"编辑源码",onMouseDown:(Y)=>Y.stopPropagation(),onClick:()=>z((Y)=>!Y),children:[$(g,{name:X?"eye":"code",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:X?"预览":"源码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X?$("textarea",{ref:H,class:"html-source code-input",spellcheck:!1,placeholder:"<!-- 在此粘贴 / 编写 HTML,将沙箱渲染 -->",value:Z.content,onMouseDown:(Y)=>Y.stopPropagation(),onInput:(Y)=>Q(Y.currentTarget.value)},void 0,!1,void 0,this):Z.content.trim()?$("iframe",{ref:q,class:"html-frame",title:"HTML 预览",sandbox:"allow-scripts allow-popups",srcdoc:mW(Z.content),style:{height:`${W}px`}},void 0,!1,void 0,this):$("div",{class:"html-empty",onClick:()=>z(!0),children:"空的 HTML 块 — 点此添加内容"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var V$=["#ef4444","#f59e0b","#22c55e","#3b82f6","#111827","#ffffff"],y1=3,uW=20;function _1(Z,J,Q){if(Z.strokeStyle=J.color,Z.fillStyle=J.color,Z.lineWidth=y1*Q,Z.lineJoin="round",Z.lineCap="round",J.tool==="rect"){let X=Math.min(J.x1,J.x2)*Q,z=Math.min(J.y1,J.y2)*Q;Z.strokeRect(X,z,Math.abs(J.x2-J.x1)*Q,Math.abs(J.y2-J.y1)*Q)}else if(J.tool==="arrow"){let X=J.x1*Q,z=J.y1*Q,W=J.x2*Q,G=J.y2*Q,q=Math.atan2(G-z,W-X),H=Math.max(10,y1*Q*3.2);Z.beginPath(),Z.moveTo(X,z),Z.lineTo(W,G),Z.stroke(),Z.beginPath(),Z.moveTo(W,G),Z.lineTo(W-H*Math.cos(q-Math.PI/7),G-H*Math.sin(q-Math.PI/7)),Z.lineTo(W-H*Math.cos(q+Math.PI/7),G-H*Math.sin(q+Math.PI/7)),Z.closePath(),Z.fill()}else if(J.tool==="text"&&J.text)Z.font=`600 ${uW*Q}px system-ui, -apple-system, sans-serif`,Z.textBaseline="top",Z.lineWidth=Math.max(2,y1*Q),Z.strokeStyle="rgba(0,0,0,.55)",Z.strokeText(J.text,J.x1*Q,J.y1*Q),Z.fillText(J.text,J.x1*Q,J.y1*Q)}function f$({src:Z,onCancel:J,onSave:Q}){let X=W0(null),z=W0(null),[W,G]=R("rect"),[q,H]=R(V$[0]),[Y,F]=R([]),[K,N]=R(!1),U=W0(null),O=W0(!1),C=()=>{let L=X.current,P=z.current;if(!L||!P)return;P.width=L.clientWidth,P.height=L.clientHeight,f()},f=()=>{let L=z.current;if(!L)return;let P=L.getContext("2d");if(!P)return;P.clearRect(0,0,L.width,L.height);for(let w of Y)_1(P,w,1);if(U.current)_1(P,U.current,1)};o(f,[Y]),o(()=>{let L=()=>C();return window.addEventListener("resize",L),()=>window.removeEventListener("resize",L)},[]);let h=(L)=>{let P=z.current.getBoundingClientRect();return{x:L.clientX-P.left,y:L.clientY-P.top}},_=async(L)=>{L.preventDefault();let P=h(L);if(W==="text"){let w=await H9({title:"添加文字标注",placeholder:"输入文字…",confirmLabel:"添加"});if(w&&w.trim())F((A)=>[...A,{tool:"text",x1:P.x,y1:P.y,x2:P.x,y2:P.y,color:q,text:w.trim()}]);return}O.current=!0,U.current={tool:W,x1:P.x,y1:P.y,x2:P.x,y2:P.y,color:q},f()},M=(L)=>{if(!O.current||!U.current)return;let P=h(L);U.current={...U.current,x2:P.x,y2:P.y},f()},k=()=>{if(!O.current)return;O.current=!1;let L=U.current;if(U.current=null,L&&(Math.abs(L.x2-L.x1)>3||Math.abs(L.y2-L.y1)>3))F((P)=>[...P,L]);else f()},T=()=>{let L=X.current;if(!L)return;N(!0);let P=document.createElement("canvas");P.width=L.naturalWidth||L.clientWidth,P.height=L.naturalHeight||L.clientHeight;let w=P.getContext("2d");if(!w){N(!1);return}w.drawImage(L,0,0,P.width,P.height);let A=P.width/(z.current?.width||L.clientWidth||1);for(let y of Y)_1(w,y,A);P.toBlob((y)=>{if(N(!1),y)Q(y)},"image/png")};return $("div",{class:"annot",onMouseDown:(L)=>L.stopPropagation(),children:[$("div",{class:"annot-toolbar",children:[$("div",{class:"annot-tools",children:[$("button",{class:"annot-tool"+(W==="rect"?" on":""),title:"矩形框选",onClick:()=>G("rect"),children:$(g,{name:"square",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"annot-tool"+(W==="arrow"?" on":""),title:"箭头",onClick:()=>G("arrow"),children:$(g,{name:"arrowUpRight",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"annot-tool"+(W==="text"?" on":""),title:"文字",onClick:()=>G("text"),children:$(g,{name:"type",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"annot-colors",children:V$.map((L)=>$("button",{class:"annot-swatch"+(L===q?" on":""),style:{background:L},title:L,onClick:()=>H(L)},L,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"annot-actions",children:[$("button",{class:"annot-tool",title:"撤销",disabled:!Y.length,onClick:()=>F((L)=>L.slice(0,-1)),children:$(g,{name:"undo",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:J,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",disabled:K,onClick:T,children:K?"保存中…":"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"annot-stage",children:$("div",{class:"annot-img-wrap",children:[$("img",{ref:X,src:Z,alt:"",draggable:!1,onLoad:C},void 0,!1,void 0,this),$("canvas",{ref:z,class:"annot-canvas tool-"+W,onMouseDown:(L)=>void _(L),onMouseMove:(L)=>M(L),onMouseUp:k,onMouseLeave:k},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var v1=0.2,T1=8;function k1({src:Z,name:J,onClose:Q,onReplace:X,draggableBar:z}){let[W,G]=R(1),[q,H]=R(0),[Y,F]=R(0),[K,N]=R(!1),U=W0(null),O=W0(null),C=()=>{G(1),H(0),F(0)};o(()=>{let _=(M)=>{if(M.key==="Escape")M.stopPropagation(),K?N(!1):Q();else if((M.key==="+"||M.key==="=")&&!K)G((k)=>Math.min(T1,k*1.2));else if(M.key==="-"&&!K)G((k)=>Math.max(v1,k/1.2));else if(M.key==="0"&&!K)C()};return document.addEventListener("keydown",_,!0),()=>document.removeEventListener("keydown",_,!0)},[K,Q]);let f=(_)=>{_.preventDefault();let M=U.current?.getBoundingClientRect(),k=M?_.clientX-M.left-M.width/2:0,T=M?_.clientY-M.top-M.height/2:0,L=_.deltaY<0?1.12:0.8928571428571428;G((P)=>{let w=Math.max(v1,Math.min(T1,P*L)),A=w/P;return H((y)=>k-(k-y)*A),F((y)=>T-(T-y)*A),w})},h=(_)=>{O.current={x:_.clientX,y:_.clientY,tx:q,ty:Y}};return o(()=>{let _=(k)=>{let T=O.current;if(!T)return;H(T.tx+(k.clientX-T.x)),F(T.ty+(k.clientY-T.y))},M=()=>{O.current=null};return window.addEventListener("mousemove",_),window.addEventListener("mouseup",M),()=>{window.removeEventListener("mousemove",_),window.removeEventListener("mouseup",M)}},[]),$(r,{children:[$("div",{class:"lightbox-toolbar"+(z?" app-drag":""),onMouseDown:(_)=>_.stopPropagation(),children:[J&&$("span",{class:"lightbox-name",title:J,children:J},void 0,!1,void 0,this),$("span",{class:"lightbox-spacer"},void 0,!1,void 0,this),!K&&$(r,{children:[$("button",{title:"缩小",onClick:()=>G((_)=>Math.max(v1,_/1.2)),children:$(g,{name:"zoomOut",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"lightbox-pct",title:"重置",onClick:C,children:[Math.round(W*100),"%"]},void 0,!0,void 0,this),$("button",{title:"放大",onClick:()=>G((_)=>Math.min(T1,_*1.2)),children:$(g,{name:"zoomIn",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"标注 / 编辑",onClick:()=>{C(),N(!0)},children:$(g,{name:"pencil",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{title:"关闭",onClick:()=>K?N(!1):Q(),children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K?$(f$,{src:Z,onCancel:()=>N(!1),onSave:(_)=>{X(_),N(!1)}},void 0,!1,void 0,this):$("div",{ref:U,class:"lightbox-stage",onMouseDown:(_)=>{_.stopPropagation(),h(_)},onWheel:(_)=>f(_),children:$("img",{src:Z,alt:J??"",draggable:!1,style:{transform:`translate(${q}px, ${Y}px) scale(${W})`,cursor:W>1?"grab":"default"}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function g$(Z){return $("div",{class:"lightbox",onMouseDown:()=>Z.onClose(),children:$(k1,{...Z},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function I0(Z,J,Q=null){for(let X=0;X<Z.length;X++){let z=Z[X];if(z.id===J)return{block:z,parent:Z,index:X,parentBlock:Q};let W=z.children?I0(z.children,J,z):null;if(W)return W}return null}function R1(Z){let J=0;for(let Q of Z)J+=1+R1(Q.children??[]);return J}function i8(Z){return{...Z,id:W9(),children:Z.children?.map(i8)}}function I1(Z,J){for(let Q of Z??[])if(Q.id===J||I1(Q.children,J))return!0;return!1}function Y9(Z,J=[]){for(let Q of Z)if(J.push(Q),Q.children)Y9(Q.children,J);return J}function s9(Z,J){let Q=null,X=null,z=(W)=>{for(let G of W){if(G.id===J){X=Q;return}if(Q=G,G.children)z(G.children);if(X)return}};return z(Z),X}function iZ(Z,J){let Q=Y9(Z),X=Q.findIndex((z)=>z.id===J);return X>=0&&X+1<Q.length?Q[X+1]:null}function aZ(Z,J){let Q=I0(Z,J);if(!Q)return null;let[X]=Q.parent.splice(Q.index,1);if(Q.parent.length===0&&Q.parentBlock)delete Q.parentBlock.children;return X??null}function b$(Z,J,Q,X){if(J===Q)return!1;let z=I0(Z,J),W=I0(Z,Q);if(!z||!W||I1(z.block.children,Q))return!1;let G=z.parent.splice(z.index,1)[0],q=I0(Z,Q);if(!q)return z.parent.splice(z.index,0,G),!1;if(z.parent.length===0&&z.parentBlock)delete z.parentBlock.children;return q.parent.splice(q.index+(X==="after"?1:0),0,G),!0}function S1(Z,J){let Q=I0(Z,J);if(!Q||Q.index===0)return!1;let X=Q.parent[Q.index-1];if(!Q9(X.type))return!1;let z=Q.parent.splice(Q.index,1)[0];return X.children??=[],X.children.push(z),!0}function V1(Z,J){let Q=I0(Z,J);if(!Q?.parentBlock)return!1;let X=I0(Z,Q.parentBlock.id);if(!X)return!1;let z=Q.parent.splice(Q.index);if(!z.length)return!1;if(Q.parent.length===0)delete Q.parentBlock.children;return X.parent.splice(X.index+1,0,...z),!0}function k9(Z,J){let Q=new Set(J),X=[],z=(W,G)=>{for(let q of W){let H=Q.has(q.id);if(H&&!G)X.push(q.id);if(q.children)z(q.children,G||H)}};return z(Z,!1),X}function f1(Z,J,Q,X={}){let W=I0(Z,J)?.block;if(!W)return!1;let G=Q9(Q)?W.children:void 0;if(O1(W,Q,X),G?.length)W.children=G;else delete W.children;return!0}function j$(Z,J,Q){let X=Y9(Z),z=X.findIndex((H)=>H.id===J),W=X.findIndex((H)=>H.id===Q);if(z<0||W<0)return[];let[G,q]=z<=W?[z,W]:[W,z];return X.slice(G,q+1).map((H)=>H.id)}function h$(Z,J){if(!J.length)return null;let Q=new Set(J),X=Y9(Z),z=X.findIndex((G)=>Q.has(G.id));if(z<0)return null;let W=null;for(let G=z-1;G>=0;G--)if(!Q.has(X[G].id)){W=X[G].id;break}if(!W){for(let G=z+1;G<X.length;G++)if(!Q.has(X[G].id)){W=X[G].id;break}}for(let G of k9(Z,J))aZ(Z,G);if(W&&!I0(Z,W))W=null;return W??Y9(Z)[0]?.id??null}function D$(Z,J){let Q=k9(Z,J);if(!Q.length)return[];let X=[];for(let W of Q){let G=I0(Z,W);if(G)X.push(i8(G.block))}let z=I0(Z,Q[Q.length-1]);if(!z||!X.length)return[];return z.parent.splice(z.index+1,0,...X),X.map((W)=>W.id)}function x$(Z,J,Q,X){let z=k9(Z,J);if(!z.length||z.includes(Q))return!1;for(let q of z){let H=I0(Z,q);if(H&&I1(H.block.children,Q))return!1}let W=[];for(let q of z){let H=aZ(Z,q);if(H)W.push(H)}let G=I0(Z,Q);if(!G)return Z.push(...W),!1;return G.parent.splice(G.index+(X==="after"?1:0),0,...W),!0}function m$(Z,J){let Q=k9(Z,J).map((X)=>I0(Z,X)?.block).filter((X)=>!!X);return L$(Q)}function u$(Z,J){let Q=[];for(let X of k9(Z,J))if(S1(Z,X))Q.push(X);return Q}function E$(Z,J){let Q=[];for(let X of k9(Z,J))if(V1(Z,X))Q.push(X);return Q}function nZ(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var p$=String.fromCharCode(57344),c$=String.fromCharCode(57345),EW=new RegExp(p$+"(\\d+)"+c$,"g");function lZ(Z){let J=[],Q=Z.replace(/`([^`]+)`/g,(X,z)=>{return J.push(z),p$+(J.length-1)+c$});return Q=nZ(Q),Q=Q.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g,(X,z,W)=>{return`<img src="${String(W).replace(/"/g,""")}" alt="${z}" class="doc-img" loading="lazy">`}),Q=Q.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(X,z,W)=>{return`<a href="${String(W).replace(/"/g,""")}" target="_blank" rel="noreferrer">${z}</a>`}),Q=Q.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),Q=Q.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),Q=Q.replace(/\n/g,"<br>"),Q=Q.replace(EW,(X,z)=>`<code>${nZ(J[+z]??"")}</code>`),Q}function e9(Z){let J=document.createElement("div");return J.innerHTML=Z,d$(J).replace(/\n{3,}/g,`
|
|
132
|
+
|
|
133
|
+
`).replace(/\n$/,"")}function d$(Z){let J="";return Z.childNodes.forEach((Q)=>{if(Q.nodeType===Node.TEXT_NODE){J+=(Q.textContent??"").replace(/\u00a0/g," ");return}if(!(Q instanceof HTMLElement))return;let X=Q.tagName.toLowerCase();if(X==="img"){let W=Q.getAttribute("src")||"";J+=W?``:"";return}let z=d$(Q);if(X==="br")J+=`
|
|
134
|
+
`;else if(X==="strong"||X==="b")J+=z?`**${z}**`:"";else if(X==="em"||X==="i")J+=z?`*${z}*`:"";else if(X==="code")J+=z?"`"+z+"`":"";else if(X==="a"){let W=Q.getAttribute("href")||"";J+=W?`[${z}](${W})`:z}else if(X==="div"||X==="p")J+=(J&&!J.endsWith(`
|
|
105
135
|
`)?`
|
|
106
|
-
`:"")+
|
|
136
|
+
`:"")+z;else J+=z}),J}function a$(){return typeof CSS<"u"&&!!CSS.highlights&&typeof globalThis.Highlight==="function"}function a8(Z){return/[A-Za-z0-9_]/.test(Z)}function pW(Z,J,Q){let X=Z[J]??"",z=Z[Q-1]??"",W=J>0?Z[J-1]:"",G=Q<Z.length?Z[Q]:"",q=!a8(X)||!a8(W),H=!a8(z)||!a8(G);return q&&H}function g1(Z,J,Q){let X=[];if(!J)return X;let z=Q.caseSensitive?Z:Z.toLowerCase(),W=Q.caseSensitive?J:J.toLowerCase(),G=0;for(;;){let q=z.indexOf(W,G);if(q<0)break;let H=q+W.length;if(!Q.wholeWord||pW(Z,q,H))X.push([q,H]);G=H>q?H:q+1}return X}function i$(Z,J,Q){for(let X=Z.length-1;X>=0;X--)if(Q>=J[X])return{node:Z[X],offset:Q-J[X]};return null}function n$(Z,J,Q){let X=[];if(!J)return X;let z=Array.from(Z.querySelectorAll(".doc-title, .editable, .doc-td, pre.code-hl > code.hljs"));for(let W of z){let G=[],q=document.createTreeWalker(W,NodeFilter.SHOW_TEXT),H;while(H=q.nextNode())G.push(H);if(!G.length)continue;let Y="",F=[];for(let K of G)F.push(Y.length),Y+=K.data;for(let[K,N]of g1(Y,J,Q)){let U=i$(G,F,K),O=i$(G,F,N);if(!U||!O)continue;let C=document.createRange();C.setStart(U.node,U.offset),C.setEnd(O.node,O.offset),X.push(C)}}return X}function l$(Z,J){if(!a$())return;let Q=globalThis.Highlight,X=CSS.highlights;if(Z.length)X.set("mh-find-all",new Q(...Z));else X.delete("mh-find-all");if(J){let z=new Q(J);z.priority=1,X.set("mh-find-current",z)}else X.delete("mh-find-current")}function n8(){if(!a$())return;let Z=CSS.highlights;Z.delete("mh-find-all"),Z.delete("mh-find-current")}function cW(Z,J){let Q;try{Q=J&&E8.getLanguage(J)?E8.highlight(Z,{language:J,ignoreIllegals:!0}).value:E8.highlightAuto(Z).value}catch{Q=nZ(Z)}return Z.endsWith(`
|
|
107
137
|
`)?Q+`
|
|
108
|
-
`:Q}function
|
|
109
|
-
`);if(!$0.trim())return;U.preventDefault();let G0=HZ($0);if(!G0.length)return;let v0=j0(D,w.id);if(!v0)return;let{before:m0,after:z9}=_8(m);if(G0.length===1&&G0[0].type==="p"&&(m0.trim()!==""||z9.trim()!=="")){w.content=m0+G0[0].content+z9;let PJ=p7(m0+G0[0].content);U0(),z0(),requestAnimationFrame(()=>M8(w.id,PJ));return}let C9=[...G0],wZ=z9.trim()!==""?sZ("p",{content:z9}):null;if(wZ)C9.push(wZ);if(m0.trim()===""&&!v0.block.children?.length)v0.parent.splice(v0.index,1,...C9);else w.content=m0,v0.parent.splice(v0.index+1,0,...C9);U0(),z0();let yJ=wZ??C9[C9.length-1];requestAnimationFrame(()=>E0(yJ.id,!wZ))},r0=B?Y8.filter((U)=>(U.t+U.type+U.d).toLowerCase().includes(B.query.toLowerCase())):[],f9=(U)=>{if(!B)return;S0(B.blockId,U.type),M(null)},b9=(U,w)=>{S0(U.id,w.type,w),M(null)},a=(U,w)=>{U.content="",U.children??=[];let m=sZ(w.type,w);U.children.unshift(m),M(null),U0(),requestAnimationFrame(()=>E0(m.id)),z0()},Q0=(U)=>{o9(D);let w=$1(U);if(!y8(D,U))return;U0(),requestAnimationFrame(()=>w!=null?X1(U,w):E0(U)),z0()},y0=(U)=>{o9(D);let w=$1(U);if(!P8(D,U))return;U0(),requestAnimationFrame(()=>w!=null?X1(U,w):E0(U)),z0()},N0=async(U)=>{if(U==="createLink"){let w=getSelection(),m=w&&w.rangeCount?w.getRangeAt(0).cloneRange():null;if(!m||m.collapsed)return;O(null);let R=(await q9({title:"插入链接",label:"链接地址",placeholder:"https://…"}))?.trim();if(!R)return;m.startContainer.parentElement?.closest?.(".editable")?.focus();let $0=getSelection();$0?.removeAllRanges(),$0?.addRange(m),document.execCommand("createLink",!1,R)}else if(U==="code")o$();else document.execCommand(U,!1,void 0);e$(D),z0(),C8(O)},g0=()=>_(null),o0=()=>{let U=s0(D);if(!U.length)return;z1(),_({anchorId:U[0].id,focusId:U[U.length-1].id})},yZ=(U)=>{o9(D);let w=T7(D,U);if(g0(),U0(),w)requestAnimationFrame(()=>E0(w,!0));z0()},G1=(U,w)=>{if(o9(D),!(w==="indent"?f7(D,U):b7(D,U)).length)return;U0(),z0()},XJ=(U)=>{o9(D);let w=V7(D,U);if(w.length)_({anchorId:w[0],focusId:w[w.length-1]});U0(),z0()},qJ=(U)=>{let w=I7(D,U);if(w)navigator.clipboard?.writeText(w).catch(()=>{})},f8=(U)=>{if(U.target?.closest?.(".doc-source"))return;let m=U.metaKey||U.ctrlKey;if(m&&(U.key==="z"||U.key==="Z")){if(U.preventDefault(),U.shiftKey)Y0();else s();return}if(m&&U.key==="y"){U.preventDefault(),Y0();return}if(!P)return;let R=L0;if(!R.length)return;if(U.key==="Escape"){U.preventDefault();let i=P.anchorId;g0(),E0(i,!0);return}if(U.key==="Tab"){U.preventDefault(),G1(R,U.shiftKey?"outdent":"indent");return}if(U.key==="Backspace"||U.key==="Delete"){U.preventDefault(),yZ(R);return}if(m&&U.key==="d"){U.preventDefault(),XJ(R);return}if(m&&(U.key==="c"||U.key==="x")){if(U.preventDefault(),qJ(R),U.key==="x")yZ(R);return}if(m&&U.key==="a"){U.preventDefault(),o0();return}if(U.key==="ArrowDown"||U.key==="ArrowUp"){U.preventDefault();let i=s0(D),$0=i.findIndex((G0)=>G0.id===P.focusId);if($0<0)return;if(U.shiftKey){let G0=U.key==="ArrowDown"?Math.min($0+1,i.length-1):Math.max($0-1,0);_({anchorId:P.anchorId,focusId:i[G0].id})}else{let G0=U.key==="ArrowDown"?R[R.length-1]:R[0];g0(),E0(G0,U.key==="ArrowDown")}return}if(U.key.length===1&&!m){let i=R[R.length-1];g0(),E0(i,!0)}},PZ=H0(null),WJ=(U)=>{if(U.button!==0)return;let w=U.target;if(w.closest(".gutter")||w.closest(".pop")||w.closest(".doc-col-resizer")||w.closest("input, button, select, a"))return;let R=s$(U.target)?.getAttribute("data-bid")??null;if(!R){let $0=w.classList.contains("doc")?w:null;if(K==="blocks"&&$0){let G0=$0.querySelectorAll(".block"),v0=G0.length?G0[G0.length-1]:$0.querySelector(".doc-meta"),m0=v0?v0.getBoundingClientRect().bottom:0;if(U.clientY>m0){U.preventDefault();let z9=D[D.length-1];if(z9&&n9(z9))E0(z9.id,!0);else d(null);return}}g0();return}if(U.shiftKey&&P){U.preventDefault(),z1(),_({anchorId:P.anchorId,focusId:R});return}if(!!w.closest(".editable, .code-input, .doc-td")){if(PZ.current={anchorId:R,started:!1,sx:U.clientX,sy:U.clientY,mode:"text"},P)g0()}else U.preventDefault(),z1(),_({anchorId:R,focusId:R}),PZ.current={anchorId:R,started:!0,sx:U.clientX,sy:U.clientY,mode:"block"}};r(()=>{let U=(m)=>{let R=PZ.current;if(!R)return;let $0=document.elementFromPoint(m.clientX,m.clientY)?.closest(".block[data-bid]")?.getAttribute("data-bid")??null;if(R.mode==="text"){if($0&&$0!==R.anchorId)R.mode="block",z1(),_({anchorId:R.anchorId,focusId:$0});return}if(!R.started&&Math.abs(m.clientX-R.sx)+Math.abs(m.clientY-R.sy)<4)return;if(R.started=!0,A8(!0),$0)_({anchorId:R.anchorId,focusId:$0})},w=()=>{PZ.current=null,A8(!1)};return window.addEventListener("mousemove",U),window.addEventListener("mouseup",w),()=>{window.removeEventListener("mousemove",U),window.removeEventListener("mouseup",w)}},[]);let b8=H0(f8);b8.current=f8,r(()=>{let U=(w)=>b8.current(w);return document.addEventListener("keydown",U,!0),()=>document.removeEventListener("keydown",U,!0)},[]),r(()=>{if(!B)return;k.current?.querySelector(".item.sel")?.scrollIntoView({block:"nearest"})},[B?.idx,B?.blockId]),r(()=>{if(!B)return;let U=()=>M(null);return document.addEventListener("focusout",U),()=>document.removeEventListener("focusout",U)},[!!B]);let GJ=(U,w,m)=>{if(U.isComposing||U.keyCode===229)return;if(B&&B.blockId===w.id){if(U.key==="ArrowDown"){U.preventDefault(),M({...B,idx:Math.min(B.idx+1,r0.length-1)});return}if(U.key==="ArrowUp"){U.preventDefault(),M({...B,idx:Math.max(B.idx-1,0)});return}if(U.key==="Enter"){U.preventDefault();let R=r0[B.idx];if(R)f9(R);return}if(U.key==="Escape"){M(null);return}}if((U.metaKey||U.ctrlKey)&&(U.key==="a"||U.key==="A")){if($2(m))U.preventDefault(),o0();return}if(U.key==="Tab"){U.preventDefault(),(U.shiftKey?y0:Q0)(w.id);return}if((U.key==="ArrowUp"||U.key==="ArrowDown")&&!U.shiftKey&&!O8()){let R=z2(m);if(U.key==="ArrowUp"&&R.first){let i=KZ(D,w.id);if(i){U.preventDefault(),E0(i.id,!0);return}}else if(U.key==="ArrowDown"&&R.last){let i=L8(D,w.id);if(i){U.preventDefault(),E0(i.id);return}}}if(U.key===" "&&!O8()&&(w.type==="p"||w.type==="bullet")){let{before:R,after:i}=_8(m);if(w.type==="p"){let $0=H8(R+" "," ");if($0){U.preventDefault(),b9(w,{...$0,content:i});return}}else{let $0=C7(R);if($0){U.preventDefault(),S0(w.id,"todo",{content:i,checked:$0.checked});return}}}if(U.key==="Enter"&&!U.shiftKey&&w.type!=="code"){let R=H8((m.textContent??"").trim(),"Enter");if(R){if(U.preventDefault(),l0(w.type)&&R.type==="code"){a(w,R);return}b9(w,R);return}U.preventDefault();let i=(m.textContent??"").trim()==="";if(l0(w.type)&&i&&!(w.children??[]).length){S0(w.id,"p");return}let{before:$0,after:G0}=_8(m);w.content=$0,d(w.id,l0(w.type)?w.type:"p",{content:G0})}else if(U.key==="Backspace"){if((m.textContent??"")==="")if(U.preventDefault(),w.type!=="p")S0(w.id,"p");else{let R=KZ(D,w.id);if(R)T0(w.id),requestAnimationFrame(()=>E0(R.id,!0))}else if(!O8()&&J2(m))if(l0(w.type))U.preventDefault(),S0(w.id,"p",{content:UZ(w,m)});else{let R=KZ(D,w.id);if(R&&R.type!=="code"&&R.type!=="table"&&R.type!=="divider"){U.preventDefault();let i=p7(R.content);R.content+=UZ(w,m),T0(w.id),requestAnimationFrame(()=>{let $0=document.querySelector(`.block[data-bid="${R.id}"] .editable`);if($0){let G0=YZ(R.content);if($0.innerHTML!==G0)$0.innerHTML=G0}M8(R.id,i)})}}}},HJ=(U,w,m)=>{if(U.isComposing||U.keyCode===229)return;let{value:R,selectionStart:i,selectionEnd:$0}=m;if(U.key==="Tab"){if(U.preventDefault(),U.shiftKey){y0(w.id);return}document.execCommand("insertText",!1," ");return}if(U.key==="ArrowDown"&&i===$0&&R.indexOf(`
|
|
110
|
-
`,
|
|
111
|
-
`,
|
|
112
|
-
`).length-1,
|
|
113
|
-
`).length,
|
|
114
|
-
`+T;G.current.textContent=k}let B=q.current;if(B)B.style.height="auto",B.style.height=B.scrollHeight+"px"};r(()=>{let L=q.current;if(L&&L.value!==Z.content)L.value=Z.content;F(Z.content)},[J,Z.lang]);let Y=Z.lang??"",C=F8.some((L)=>L.id===Y);return z("div",{class:"codeblock",children:[z("div",{class:"code-body",children:[z("div",{ref:G,class:"code-gutter","aria-hidden":"true",children:"1"},void 0,!1,void 0,this),z("div",{class:"code-scroll",children:[z("pre",{class:"code-hl","aria-hidden":"true",children:z("code",{ref:W,class:"hljs"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("textarea",{ref:q,class:"code-input",rows:1,spellcheck:!1,wrap:"off",placeholder:"输入代码…",onInput:(L)=>{let B=L.currentTarget;Q(B.value),F(B.value)},onKeyDown:(L)=>X(L,L.currentTarget),onScroll:(L)=>{let B=W.current?.parentElement;if(B)B.scrollLeft=L.currentTarget.scrollLeft}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"code-tools",children:[z("span",{class:"code-lang",children:[z("select",{value:Y,onChange:(L)=>$(L.currentTarget.value),children:[!C&&z("option",{value:Y,children:Y||"纯文本"},void 0,!1,void 0,this),F8.map((L)=>z("option",{value:L.id,children:L.label},L.id,!1,void 0,this))]},void 0,!0,void 0,this),z(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"code-copy"+(K?" ok":""),title:"复制代码",onClick:()=>{let L=q.current?.value??Z.content;navigator.clipboard?.writeText(L).then(()=>{H(!0),setTimeout(()=>H(!1),1400)}).catch(()=>{})},children:[z(f,{name:K?"check":"copy",cls:"ico sm"},void 0,!1,void 0,this),K?"已复制":"复制"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function a$({block:Z,renderKey:J,onCellInput:Q,onTableChange:$}){let X=Z.rows??[],q=X[0]?.length??0,W=Z.align??[],G=H0(null),K=H0([]);if(K.current.length!==q)K.current=Array.from({length:q},(P,_)=>K.current[_]??160);let H=()=>{Z.rows=[...X,Array(q).fill("")],$()},F=()=>{Z.rows=X.map((P)=>[...P,""]),Z.align=[...W,null],$()},Y=(P)=>{Z.rows=X.map((A)=>{let y=[...A];return y.splice(P,0,""),y});let _=[...W];_.splice(P,0,null),Z.align=_,$()},C=(P)=>{if(q<=1)return;Z.rows=X.map((_)=>_.filter((A,y)=>y!==P)),Z.align=W.filter((_,A)=>A!==P),$()},L=(P)=>{if(P===0||X.length<=2)return;Z.rows=X.filter((_,A)=>A!==P),$()},B=(P,_)=>{let A=Array.from({length:q},(y,x)=>W[x]??null);A[P]=_,Z.align=A,$()},M=(P,_)=>{let A=G.current?.querySelector(`.doc-td[data-r="${P}"][data-c="${_}"]`);if(!A)return!1;A.focus();let y=document.createRange();y.selectNodeContents(A),y.collapse(!1);let x=getSelection();return x?.removeAllRanges(),x?.addRange(y),!0},k=(P,_,A)=>{if(P.isComposing||P.keyCode===229)return;if(P.key==="Tab"){if(P.preventDefault(),P.shiftKey){if(A>0)M(_,A-1);else if(_>0)M(_-1,q-1)}else if(A<q-1)M(_,A+1);else if(_<X.length-1)M(_+1,0);else H(),requestAnimationFrame(()=>M(X.length,0));return}if(P.key==="Enter"){if(P.preventDefault(),_<X.length-1)M(_+1,A);else H(),requestAnimationFrame(()=>M(X.length,A));return}},T=(P,_)=>{P.preventDefault(),P.stopPropagation(),xZ(P,{col:G.current?.querySelector(`col[data-tcol="${_}"]`)??null,startWidth:K.current[_]??160,min:60,onDone:(A)=>{K.current[_]=A}})},O=(P,_)=>{P.preventDefault(),P.stopPropagation(),R0(P,(A)=>z(n,{children:[z(u0,{children:"对齐方式"},void 0,!1,void 0,this),z(t,{icon:"alignLeft",label:"左对齐",checked:(W[_]??null)===null||W[_]==="left",onClick:()=>{B(_,"left"),A()}},void 0,!1,void 0,this),z(t,{icon:"alignCenter",label:"居中",checked:W[_]==="center",onClick:()=>{B(_,"center"),A()}},void 0,!1,void 0,this),z(t,{icon:"alignRight",label:"右对齐",checked:W[_]==="right",onClick:()=>{B(_,"right"),A()}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"plus",label:"在左侧插入列",onClick:()=>{Y(_),A()}},void 0,!1,void 0,this),z(t,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{Y(_+1),A()}},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除列",danger:!0,onClick:()=>{C(_),A()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return z("div",{class:"doc-table-wrap",children:z("div",{class:"doc-table-scroll",children:z("div",{class:"doc-table-inner",children:[z("div",{class:"doc-table-row",children:[z("table",{ref:G,class:"doc-table",children:[z("colgroup",{children:Array.from({length:q},(P,_)=>z("col",{"data-tcol":_,style:{width:K.current[_]}},_,!1,void 0,this))},void 0,!1,void 0,this),z("tbody",{children:X.map((P,_)=>z("tr",{children:P.map((A,y)=>z("td",{class:_===0?"doc-th":void 0,children:[z(l$,{value:A,renderKey:J,r:_,c:y,align:W[y]??null,onInput:(x)=>Q(_,y,x),onKeyDown:(x)=>k(x,_,y)},void 0,!1,void 0,this),_===0&&z(n,{children:[z("button",{class:"doc-col-menu",title:"列选项",onMouseDown:(x)=>O(x,y),children:z(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("div",{class:"doc-col-resizer",onPointerDown:(x)=>T(x,y)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y===0&&_>0&&X.length>2&&z("button",{class:"doc-row-del",title:"删除行",onMouseDown:(x)=>{x.preventDefault(),x.stopPropagation(),L(_)},children:z(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},y,!0,void 0,this))},_,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"doc-table-addcol",title:"新增列",onMouseDown:(P)=>{P.preventDefault(),F()},children:z(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("button",{class:"doc-table-addrow",title:"新增行",onMouseDown:(P)=>{P.preventDefault(),H()},children:z(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 l$({value:Z,renderKey:J,r:Q,c:$,align:X,onInput:q,onKeyDown:W}){let G=H0(null);return r(()=>{let K=G.current;if(K){let H=YZ(Z);if(K.innerHTML!==H&&V9(K.innerHTML)!==Z)K.innerHTML=H}},[J]),z("div",{ref:G,class:"doc-td","data-r":Q,"data-c":$,contentEditable:!0,"data-ph":Q===0?"表头":"",style:X?{textAlign:X}:void 0,onInput:(K)=>q(V9(K.currentTarget.innerHTML)),onKeyDown:(K)=>W(K)},void 0,!1,void 0,this)}function n$({term:Z,caseSensitive:J,wholeWord:Q,idx:$,total:X,onTerm:q,onToggleCase:W,onToggleWord:G,onStep:K,onClose:H}){let F=(Y)=>Y.preventDefault();return z("div",{class:"find-bar",role:"search",children:[z(f,{name:"search",cls:"ico sm find-ico"},void 0,!1,void 0,this),z("input",{type:"text",placeholder:"在文档中查找",value:Z,autoFocus:!0,onInput:(Y)=>q(Y.currentTarget.value),onKeyDown:(Y)=>{if(Y.key==="Enter")Y.preventDefault(),K(Y.shiftKey?-1:1);else if(Y.key==="Escape")Y.preventDefault(),H()}},void 0,!1,void 0,this),z("span",{class:"find-count",children:X?`${$+1} / ${X}`:Z?"无结果":""},void 0,!1,void 0,this),z("button",{class:"find-opt"+(J?" on":""),title:"区分大小写",onMouseDown:F,onClick:W,children:"Aa"},void 0,!1,void 0,this),z("button",{class:"find-opt"+(Q?" on":""),title:"全词匹配",onMouseDown:F,onClick:G,children:"全词"},void 0,!1,void 0,this),z("button",{class:"find-nav",title:"上一个 (Shift+Enter)",disabled:!X,onMouseDown:F,onClick:()=>K(-1),children:z(f,{name:"chevronDown",cls:"ico sm find-prev"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"find-nav",title:"下一个 (Enter)",disabled:!X,onMouseDown:F,onClick:()=>K(1),children:z(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"find-nav find-close",title:"关闭 (Esc)",onClick:H,children:z(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 r$({x:Z,y:J,onCommand:Q}){let $=(X)=>(q)=>{q.preventDefault(),Q(X)};return z("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(([X,q])=>z("button",{class:"item",style:{width:34,justifyContent:"center",padding:"7px 0"},onMouseDown:$(X),children:z(f,{name:q,cls:"ico sm"},void 0,!1,void 0,this)},X,!1,void 0,this))},void 0,!1,void 0,this)}function o$(){let Z=getSelection();if(!Z||Z.isCollapsed)return;document.execCommand("insertHTML",!1,`<code>${FZ(Z.toString())}</code>`)}function o9(Z){document.querySelectorAll(".doc .block[data-bid]").forEach((J)=>t$(Z,J))}function t$(Z,J){let Q=J.matches(".block[data-bid]")?J:J.closest(".block[data-bid]"),$=Q?.getAttribute("data-bid"),X=$?j0(Z,$)?.block:null;if(!X||!Q)return;let q=Q.querySelector(".editable"),W=Q.querySelector(".code-input");if(q)X.content=UZ(X,q);else if(W)X.content=W.value}function s$(Z){return(Z instanceof HTMLElement?Z:Z.parentElement)?.closest(".block[data-bid]")??null}function E7(){return document.activeElement?.closest?.(".doc .block[data-bid]")?.getAttribute("data-bid")??null}function A8(Z){document.querySelector(".doc")?.classList.toggle("selecting",Z)}function z1(){getSelection()?.removeAllRanges(),document.activeElement?.blur?.(),A8(!0)}function C8(Z){let J=getSelection();if(!J||J.isCollapsed||!J.rangeCount)return Z(null);if(!J.anchorNode?.parentElement?.closest?.(".editable"))return Z(null);let $=J.getRangeAt(0),X=$.getBoundingClientRect(),q=X.width||X.height?X:$.getClientRects()[0];if(!q)return Z(null);Z({x:q.left,y:q.top})}function e$(Z){let J=getSelection()?.anchorNode?.parentElement?.closest?.(".editable"),$=J?.closest(".block")?.getAttribute("data-bid"),X=$?j0(Z,$)?.block:null;if(X&&J)X.content=UZ(X,J)}function UZ(Z,J){return V9(J.innerHTML)}function O8(){let Z=getSelection();return!!Z&&!Z.isCollapsed}function Z2(Z){let J=getSelection();if(!J||!J.rangeCount)return 0;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return 0;let $=document.createRange();return $.selectNodeContents(Z),$.setEnd(Q.startContainer,Q.startOffset),$.toString().length}function $1(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 $=J.querySelector(".editable");return $?Z2($):null}function X1(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .code-input`);if(Q){Q.focus();let $=Math.min(J,Q.value.length);Q.setSelectionRange($,$);return}M8(Z,J)}function J2(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 $=document.createRange();return $.selectNodeContents(Z),$.setEnd(Q.startContainer,Q.startOffset),$.toString().length===0}function Q2(){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 z2(Z){let J=getSelection();if(!J||!J.rangeCount)return{first:!0,last:!0};let Q=J.getRangeAt(0).getBoundingClientRect(),$=Z.getBoundingClientRect();if(!Q.height&&!Q.top)return{first:!0,last:!0};let X=parseFloat(getComputedStyle(Z).lineHeight)||Q.height||20;return{first:Q.top-$.top<X*0.5,last:$.bottom-Q.bottom<X*0.5}}function $2(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 _8(Z){let J=getSelection();if(!J||!J.rangeCount||!Z.contains(J.getRangeAt(0).startContainer))return{before:V9(Z.innerHTML),after:""};let Q=J.getRangeAt(0),$=(X)=>{let q=document.createRange();q.selectNodeContents(Z),X(q);let W=document.createElement("div");return W.appendChild(q.cloneContents()),V9(W.innerHTML)};return{before:$((X)=>X.setEnd(Q.startContainer,Q.startOffset)),after:$((X)=>X.setStart(Q.endContainer,Q.endOffset))}}function p7(Z){let J=document.createElement("div");return J.innerHTML=YZ(Z),(J.textContent??"").length}function M8(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .editable`);if(!Q)return;Q.focus();let $=document.createTreeWalker(Q,NodeFilter.SHOW_TEXT),X=J,q=null;for(let K=$.nextNode();K;K=$.nextNode()){if(q=K,X<=K.data.length)break;X-=K.data.length}let W=document.createRange();if(q)W.setStart(q,Math.min(X,q.data.length));else W.selectNodeContents(Q);W.collapse(!0);let G=getSelection();G?.removeAllRanges(),G?.addRange(W)}function E0(Z,J=!1){let Q=`.block[data-bid="${Z}"] .editable, .block[data-bid="${Z}"] .code-input`,$=document.querySelector(Q);if(!$)return;if($.focus(),$ instanceof HTMLTextAreaElement){let W=J?$.value.length:0;$.setSelectionRange(W,W);return}let X=document.createRange();X.selectNodeContents($),X.collapse(!J);let q=getSelection();q?.removeAllRanges(),q?.addRange(X)}function c7(Z){Z.style.height="auto",Z.style.height=Z.scrollHeight+"px"}var i7=$9;function X2(Z,J){v1(Z,J,"y")}function N8(){let Z=localStorage.getItem("mh-theme");return Z==="light"||Z==="dark"||Z==="system"?Z:"system"}function v8(){let Z=N8(),J=Z==="dark"||Z!=="light"&&matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.resolved=J?"dark":"light"}function a7(Z){localStorage.setItem("mh-theme",Z),v8(),W1()}function W1(){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 S9(Z,J){let Q=Z.replace(/^v/,"").split(".").map((X)=>parseInt(X,10)||0),$=J.replace(/^v/,"").split(".").map((X)=>parseInt(X,10)||0);for(let X=0;X<Math.max(Q.length,$.length);X++){let q=(Q[X]??0)-($[X]??0);if(q!==0)return q}return 0}var q2=[{value:"light",icon:"sun",name:"浅色",desc:"始终使用明亮界面"},{value:"dark",icon:"moon",name:"深色",desc:"始终使用暗色界面"},{value:"system",icon:"monitor",name:"跟随系统",desc:"随操作系统外观自动切换"}];function n7({onUpdatePending:Z}={}){let[J,Q]=b(N8()),$=(X)=>{a7(X),Q(X)};return z("div",{class:"set-page",children:[z("div",{class:"set-title",children:"设置"},void 0,!1,void 0,this),z("div",{class:"set-sub",children:"个性化你的 Metahub 工作区。"},void 0,!1,void 0,this),z("div",{class:"set-section",children:[z("div",{class:"set-section-head",children:"外观"},void 0,!1,void 0,this),z("div",{class:"set-section-desc",children:"选择界面的颜色主题。"},void 0,!1,void 0,this),z("div",{class:"theme-grid",children:q2.map((X)=>z("button",{class:"theme-card"+(J===X.value?" sel":""),"aria-pressed":J===X.value,onClick:()=>$(X.value),children:[z("span",{class:"tc-check",children:z(f,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"tc-ico",children:z(f,{name:X.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"tc-name",children:X.name},void 0,!1,void 0,this),z("span",{class:"tc-desc",children:X.desc},void 0,!1,void 0,this)]},X.value,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),typeof window<"u"&&window.metahubDesktop?.quicknote&&z(F2,{},void 0,!1,void 0,this),z(G2,{},void 0,!1,void 0,this),z(Y2,{},void 0,!1,void 0,this),z(U2,{},void 0,!1,void 0,this),z(H2,{onUpdatePending:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function W2(){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 G2(){let Z=W2(),[J,Q]=b(bZ()),[$,X]=b(K4()),[q,W]=b(!1),[G,K]=b(null);r(()=>fZ((L)=>X({...L})),[]),r(()=>{if(!J||!navigator.storage?.estimate)return;let L=!0,B=()=>navigator.storage.estimate().then((k)=>{if(L&&k.usage!=null)K((k.usage/1024/1024).toFixed(1))});B();let M=fZ(()=>void B());return()=>{L=!1,M()}},[J]);let H=async()=>{if(!await b0({title:"重置本地副本",message:"将删除此浏览器里的全部本地数据(服务器数据不受影响),并停用离线副本。未同步的本地修改会丢失——建议先「立即同步」。",confirmLabel:"删除并重置",danger:!0}))return;W(!0);try{await L4(),Q(!1),Z0("本地副本已重置")}catch(B){Z0(`重置失败:${B.message}`)}finally{W(!1)}},F=async()=>{W(!0);try{await U4(),Q(!0),Z0("离线副本已启用,正在下载数据…")}catch(L){Z0(`启用失败:${L.message}`)}finally{W(!1)}},Y=async()=>{if(!await b0({title:"停用离线副本",message:"此浏览器将恢复纯在线模式。已下载的本地数据保留在浏览器里,重新启用后从断点续传。",confirmLabel:"停用",danger:!0}))return;W(!0);try{await B4(),Q(!1),Z0("已停用离线副本")}finally{W(!1)}},C=()=>{if(!J)return"未启用 — 此浏览器为纯在线客户端,断网不可用。";if($.state==="error")return`副本异常(已自动回退在线模式):${$.error??"未知错误"}`;if($.state==="hydrating")return`正在下载数据… 已接收 ${$.hydrated??0} 条变更`;if($.lastSync){let L=R8($.lastSync.at);return $.lastSync.ok?`本地优先已生效 · 上次同步 ${L}(推送 ${$.lastSync.pushed} / 拉取 ${$.lastSync.pulled})`:`上次同步失败(${L}):${$.lastSync.error??""} — 本地读写不受影响,恢复网络后自动重试`}return"等待首次同步…"};if(Z)return z("div",{class:"set-section",children:[z("div",{class:"set-section-head",children:"离线副本"},void 0,!1,void 0,this),z("div",{class:"set-section-desc",children:"让此浏览器持有完整的本地数据副本:弱网/离线也能查看和编辑全部内容,恢复连接后自动同步。"},void 0,!1,void 0,this),z("div",{class:"peer-sub",children:["⚠ 当前环境不可用:",Z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return z("div",{class:"set-section",children:[z("div",{class:"set-section-head",children:"离线副本"},void 0,!1,void 0,this),z("div",{class:"set-section-desc",children:"让此浏览器持有完整的本地数据副本:弱网/离线也能查看和编辑全部内容,恢复连接后自动同步。 启用即与服务器配对,凭据可在「已授权设备」中单独吊销。"},void 0,!1,void 0,this),z("div",{class:"peer-actions",children:J?z(n,{children:[z("button",{class:"btn btn-secondary",disabled:q,onClick:()=>D9(),children:[z(f,{name:"share",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this),z("button",{class:"btn btn-ghost",disabled:q,onClick:Y,children:"停用"},void 0,!1,void 0,this),z("button",{class:"btn btn-ghost",disabled:q,onClick:H,children:"重置本地副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):z("button",{class:"btn btn-primary",disabled:q,onClick:F,children:[z(f,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)," ",q?"启用中…":"启用离线副本"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),z("div",{class:"peer-sub",style:"margin-top:8px",children:[C(),J&&$.node?` · 节点 ${$.node}`:"",J&&G?` · 本地占用 ${G} MB`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function H2({onUpdatePending:Z}){let J=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0,[Q,$]=b(null),[X,q]=b(null),[W,G]=b(null),[K,H]=b(null),[F,Y]=b("idle"),[C,L]=b("");r(()=>{u.version().then((_)=>q(_.version)).catch(()=>q(null)),(typeof window<"u"?window.metahubDesktop:void 0)?.appVersion?.().then($).catch(()=>$(null)),J?.installedVersion().then(G).catch(()=>G(null))},[]),r(()=>{if(F==="idle"&&X&&W&&S9(W,X)>0)Y("staged"),Z?.(!0)},[X,W]);let B=()=>{if(X&&W)return S9(W,X)>0?W:X;return W??X},M=()=>!!(X&&W&&S9(W,X)>0),k=async()=>{Y("checking"),L("");try{let{latest:P}=await J.check(),_=B();if(P&&(!_||S9(P,_)>0))H(P),Y("available"),Z?.(!0);else Z0("已是最新版本"),Y(M()?"staged":"idle")}catch(P){L(P.message),Y("error")}},T=async()=>{Y("downloading"),L("");try{let P=await J.download();if(P)G(P),Y("staged"),Z?.(!0),Z0(`已下载 v${P}`);else Z0("已是最新版本"),Y(M()?"staged":"idle")}catch(P){L(P.message),Y("error")}},O=null;if(J)switch(F){case"checking":O=z("span",{class:"ver-act","aria-disabled":"true",children:"检查中…"},void 0,!1,void 0,this);break;case"downloading":O=z("span",{class:"ver-act","aria-disabled":"true",children:"下载中…"},void 0,!1,void 0,this);break;case"available":O=z("span",{class:"ver-up",children:[z("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),z("span",{children:["新版本 ",z("span",{class:"ver-num",children:K},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"ver-act accent",onClick:T,title:`下载并更新到 v${K}`,children:"下载"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"staged":O=z("span",{class:"ver-up",children:[z("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),z("span",{children:[z("span",{class:"ver-num",children:W},void 0,!1,void 0,this)," 待重启"]},void 0,!0,void 0,this),z("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":O=z("span",{class:"ver-up err",children:[z("span",{class:"ver-msg",children:"检查失败"},void 0,!1,void 0,this),z("button",{class:"ver-act",onClick:k,title:C||"重试",children:"重试"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;default:O=z("button",{class:"ver-act",onClick:k,children:"检查更新"},void 0,!1,void 0,this)}return z("div",{class:"set-footer",children:[Q&&z("span",{children:["App ",z("span",{class:"ver-num",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Q&&X&&z("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),X&&z("span",{children:["Core ",z("span",{class:"ver-num",children:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O&&(X||Q)&&z("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),O]},void 0,!0,void 0,this)}var k8="CommandOrControl+Shift+Space";function K2(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 l7(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 F2(){let Z=window.metahubDesktop.quicknote,[J,Q]=b(k8),[$,X]=b(!1),[q,W]=b(!1);r(()=>{Z.getSettings().then((F)=>{Q(F.shortcut),X(F.alwaysOnTop)}).catch((F)=>Z0(`加载失败:${F.message}`))},[]);let G=async(F)=>{try{let Y=await Z.setShortcut(F);Q(Y.shortcut),Z0(`快捷键已设为 ${l7(Y.shortcut)}`)}catch(Y){Z0(`设置失败:${Y.message}`)}},K=(F)=>{if(F.preventDefault(),F.key==="Escape"){W(!1);return}let Y=K2(F);if(!Y)return;W(!1),G(Y)},H=async()=>{let F=!$;X(F);try{X(await Z.setAlwaysOnTop(F))}catch(Y){X(!F),Z0(`设置失败:${Y.message}`)}};return z("div",{class:"set-section",children:[z("div",{class:"set-section-head",children:"快速笔记"},void 0,!1,void 0,this),z("div",{class:"set-section-desc",children:"用全局快捷键随时唤起小窗记录想法。小窗也可从菜单栏图标打开。"},void 0,!1,void 0,this),z("div",{class:"qn-set-row",children:[z("div",{class:"qn-set-main",children:[z("div",{class:"qn-set-name",children:"唤起快捷键"},void 0,!1,void 0,this),z("div",{class:"qn-set-desc",children:"点击下方按钮,然后按下你想用的组合键。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"btn btn-secondary qn-shortcut"+(q?" capturing":""),onClick:()=>W(!0),onBlur:()=>W(!1),onKeyDown:q?K:void 0,children:q?"按下组合键…":l7(J)},void 0,!1,void 0,this),J!==k8&&z("button",{class:"btn btn-ghost",title:"重置默认",onClick:()=>void G(k8),children:"重置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"qn-set-row",children:[z("div",{class:"qn-set-main",children:[z("div",{class:"qn-set-name",children:"默认始终置顶"},void 0,!1,void 0,this),z("div",{class:"qn-set-desc",children:"小窗浮在其他窗口之上;也可在小窗内用 \uD83D\uDCCC 按钮切换。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"btn "+($?"btn-primary":"btn-secondary"),"aria-pressed":$,onClick:()=>void H(),children:$?"已开启":"已关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function R8(Z){if(!Z)return"从未";return new Date(Z).toLocaleString()}function Y2(){let[Z,J]=b(null),Q=()=>u.listPeers().then(J).catch((H)=>Z0(`加载失败:${H.message}`));r(()=>{Q()},[]);let $=async()=>{try{let H=await u.newPairingCode();Z9(z(B2,{code:H.code,exp:H.exp},void 0,!1,void 0,this))}catch(H){Z0(`生成失败:${H.message}`)}},X=()=>Z9(z(L2,{onDone:()=>{i0(),Q()}},void 0,!1,void 0,this)),q=async(H)=>{try{let F=await u.syncPeer(H.url);Z0(F.ok?`已同步:推送 ${F.pushed},拉取 ${F.pulled}`:`同步失败:${F.error}`),Q()}catch(F){Z0(`同步失败:${F.message}`)}},W=async(H)=>{await u.updatePeer(H.url,{enabled:!H.enabled}).catch((F)=>Z0(F.message)),Q()},G=async(H)=>{if(!await b0({title:"移除同步设备",message:`确定移除 ${H.url}?将停止与该设备的数据同步。`,confirmLabel:"移除",danger:!0}))return;await u.removePeer(H.url).catch((Y)=>Z0(Y.message)),Q()},K=(H,F)=>R0(H,(Y)=>z(n,{children:[z(t,{icon:"share",label:"立即同步",onClick:()=>{Y(),q(F)}},void 0,!1,void 0,this),z(t,{icon:F.enabled?"eyeOff":"check",label:F.enabled?"禁用":"启用",onClick:()=>{Y(),W(F)}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"移除",danger:!0,onClick:()=>{Y(),G(F)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));return z("div",{class:"set-section",children:[z("div",{class:"set-section-head",children:"同步设备"},void 0,!1,void 0,this),z("div",{class:"set-section-desc",children:"与其他设备配对,自动双向同步数据。在对方设备生成配对码,然后在此添加。"},void 0,!1,void 0,this),z("div",{class:"peer-actions",children:[z("button",{class:"btn btn-primary",onClick:X,children:[z(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)," 添加设备"]},void 0,!0,void 0,this),z("button",{class:"btn btn-secondary",onClick:$,children:[z(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)," 生成本机配对码"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"peer-list",children:Z==null?z("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?z("div",{class:"muted",children:"还没有配对的设备。"},void 0,!1,void 0,this):Z.map((H)=>z("div",{class:"peer-row",children:[z("span",{class:"peer-dot"+(H.enabled?H.last_status==="error"?" err":" on":" off")},void 0,!1,void 0,this),z("div",{class:"peer-main",children:[z("div",{class:"peer-url",children:H.label||H.url},void 0,!1,void 0,this),z("div",{class:"peer-sub",children:[H.enabled?"已启用":"已禁用"," · 最近同步 ",R8(H.last_sync_at),H.last_status==="error"&&H.last_error?` · 错误:${H.last_error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"btn btn-ghost peer-menu",onClick:(F)=>K(F,H),children:z(f,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},H.url,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function U2(){let[Z,J]=b(null),Q=()=>u.listGrants().then(J).catch((X)=>Z0(`加载失败:${X.message}`));r(()=>{Q()},[]);let $=async(X)=>{if(!await b0({title:"吊销凭据",message:`吊销后,持有此凭据的设备${X.peer_url?`(${X.peer_url})`:""}将无法再同步进本机。`,confirmLabel:"吊销",danger:!0}))return;await u.revokeGrant(X.token).catch((W)=>Z0(W.message)),Q()};return z("div",{class:"set-section",children:[z("div",{class:"set-section-head",children:"已授权设备"},void 0,!1,void 0,this),z("div",{class:"set-section-desc",children:"本机签发、允许其他设备同步进来的凭据。吊销即断开对方的入站访问。"},void 0,!1,void 0,this),z("div",{class:"peer-list",children:Z==null?z("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?z("div",{class:"muted",children:"还没有签发任何凭据。"},void 0,!1,void 0,this):Z.map((X)=>z("div",{class:"peer-row",children:[z("span",{class:"peer-dot on"},void 0,!1,void 0,this),z("div",{class:"peer-main",children:[z("div",{class:"peer-url",children:X.peer_url||"(未知地址)"},void 0,!1,void 0,this),z("div",{class:"peer-sub",children:[X.token.slice(0,8),"… · 签发于 ",R8(X.created_at)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"btn btn-ghost peer-menu",title:"吊销",onClick:()=>$(X),children:z(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},X.token,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function B2({code:Z,exp:J}){let[Q,$]=b(Math.max(0,Math.round((J-Date.now())/1000)));r(()=>{let W=setInterval(()=>$(Math.max(0,Math.round((J-Date.now())/1000))),1000);return()=>clearInterval(W)},[J]);let X=Math.floor(Q/60),q=String(Q%60).padStart(2,"0");return z(X9,{title:"本机配对码",sub:"在另一台设备上输入此服务器地址和下面的配对码即可配对。配对码一次性使用。",footer:z("button",{class:"btn btn-primary",onClick:i0,children:"完成"},void 0,!1,void 0,this),children:[z("div",{class:"pair-code",children:Z},void 0,!1,void 0,this),z("div",{class:"muted",style:{textAlign:"center",marginTop:8},children:Q>0?`${X}:${q} 后过期`:"已过期,请重新生成"},void 0,!1,void 0,this),z("button",{class:"btn btn-secondary",style:{width:"100%",marginTop:12},onClick:()=>{navigator.clipboard?.writeText(Z),Z0("已复制配对码")},children:[z(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)," 复制"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function L2({onDone:Z}){let[J,Q]=b(""),[$,X]=b(""),[q,W]=b(location.origin),[G,K]=b(!1),H=async()=>{if(!J.trim()||!$.trim()){Z0("地址和配对码必填");return}K(!0);try{let F=await u.addPeerByPairing({url:J.trim(),code:$.trim(),self_url:q.trim()||void 0});await u.syncPeer(F.url).catch(()=>{}),Z0(`已配对 ${F.url}`),Z()}catch(F){Z0(`配对失败:${F.message}`),K(!1)}};return z(X9,{title:"添加同步设备",sub:"输入对方 Metahub 服务器的地址,以及它生成的一次性配对码。",footer:z(n,{children:[z("button",{class:"btn btn-secondary",onClick:i0,disabled:G,children:"取消"},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:H,disabled:G,children:G?"配对中…":"配对"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[z("div",{class:"field-label",children:"对方服务器地址"},void 0,!1,void 0,this),z("input",{class:"text-input",autofocus:!0,placeholder:"http://192.168.1.10:7777",value:J,onInput:(F)=>Q(F.target.value)},void 0,!1,void 0,this),z("div",{class:"field-label",children:"配对码"},void 0,!1,void 0,this),z("input",{class:"text-input",placeholder:"对方「生成本机配对码」得到的码",value:$,onInput:(F)=>X(F.target.value),onKeyDown:(F)=>F.key==="Enter"&&H()},void 0,!1,void 0,this),z("div",{class:"field-label",children:"本机可达地址(可选)"},void 0,!1,void 0,this),z("input",{class:"text-input",placeholder:"留空则仅本机主动同步",value:q,onInput:(F)=>W(F.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var BZ=(Z)=>location.origin+"/sites/"+Z+"/",y2=(Z)=>(/\.([a-z0-9]+)$/i.exec(Z)?.[1]??"").toLowerCase(),o7=(Z)=>Z.startsWith("image/");function t7(Z){let J=Number(Z.split("-")[0]);if(!Number.isFinite(J)||J<=0)return"—";return new Date(J).toISOString().slice(0,10)}function P2(Z){let J=y2(Z.path);if(["html","htm","js","mjs","css","json","xml"].includes(J))return"code";if(o7(Z.content_type))return"file";if(["md","txt"].includes(J))return"text";return"file"}function LZ(Z){navigator.clipboard?.writeText(Z).catch(()=>{}),Z0("已复制")}function s7(){let[Z,J]=b(null),[Q,$]=b(null),[X,q]=b(null),W=()=>u.listSites().then((H)=>{J(H),$((F)=>F?H.find((Y)=>Y.id===F.id)??null:null)}).catch((H)=>Z0(`加载失败:${H.message}`));r(()=>{W()},[]);let G=()=>Z9(z(w2,{onCreated:(H)=>{W(),$(H)}},void 0,!1,void 0,this)),K=(H,F,Y)=>{R0(H,(C)=>z(n,{children:[z(t,{icon:"externalLink",label:"复制访问地址",onClick:()=>{C(),LZ(BZ(F.name))}},void 0,!1,void 0,this),z(t,{icon:"settings",label:"修改标题…",onClick:async()=>{C();let L=await q9({title:"修改标题",label:"标题",value:F.title??F.name});if(L==null)return;try{await u.updateSite(F.id,{title:L})}catch(B){return Z0(B.message)}W()}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除站点",danger:!0,onClick:async()=>{if(C(),!await b0({title:"删除站点?",message:`「${F.name}」及其 ${F.file_count} 个文件将被删除。`,confirmLabel:"删除",danger:!0}))return;try{await u.deleteSite(F.id)}catch(B){return Z0(B.message)}if(Y)$(null);W()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return z("div",{class:"db",children:[z("div",{class:"db-head",children:[z("div",{class:"db-icon",children:"\uD83C\uDF10"},void 0,!1,void 0,this),z("div",{children:[z("div",{class:"db-title",children:"站点管理"},void 0,!1,void 0,this),z("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),z("div",{class:"toolbar",children:[z("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:G,children:[z(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?z("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):Z.length===0?z("div",{class:"site-empty",children:[z("div",{class:"ei",children:"\uD83C\uDF10"},void 0,!1,void 0,this),z("div",{class:"et",children:"还没有站点"},void 0,!1,void 0,this),z("div",{class:"ed",children:"站点是一个命名文件桶,发布后可通过 /sites/<name>/ 直接访问。"},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:G,children:[z(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(n,{children:[z("div",{class:"sites-grid",children:Z.map((H)=>z("div",{class:"site-card",onClick:()=>$(H),children:[z("div",{class:"site-card-head",children:[z("span",{class:"si",children:z(f,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("div",{class:"site-card-id",children:[z("div",{class:"slug",children:H.name},void 0,!1,void 0,this),z("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),z("button",{class:"site-addr",title:"点击复制访问地址",onClick:(F)=>{F.stopPropagation(),LZ(BZ(H.name))},children:[z(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),z("span",{children:BZ(H.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"site-card-meta",children:[z("span",{children:[z("b",{children:H.file_count},void 0,!1,void 0,this)," 文件"]},void 0,!0,void 0,this),z("span",{class:"dot",children:"·"},void 0,!1,void 0,this),z("span",{children:t7(H.created_hlc)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"site-card-foot",children:[z("button",{class:"btn btn-secondary",style:{flex:1},onClick:(F)=>{F.stopPropagation(),q(H)},children:[z(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),"访问"]},void 0,!0,void 0,this),z("button",{class:"iconbtn",title:"更多",onClick:(F)=>{F.stopPropagation(),K(F,H)},children:z(f,{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),z("div",{class:"gridfoot",children:[z("span",{children:["共 ",Z.length," 个站点"]},void 0,!0,void 0,this),z("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&&z(C2,{site:Q,onClose:()=>$(null),onVisit:()=>q(Q),onMenu:(H)=>K(H,Q,!0),onChanged:W},void 0,!1,void 0,this),X&&z(O2,{site:X,onClose:()=>q(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function w2({onCreated:Z}){let[J,Q]=b(""),[$,X]=b(""),q=async()=>{let W=J.trim().toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"");if(!W)return Z0("请填写站点名称");try{let G=await u.createSite({name:W,title:$.trim()||void 0});i0(),Z0(`已创建站点「${W}」`),Z(G)}catch(G){Z0(G.message)}};return z(X9,{title:"新建站点",sub:"创建一个命名文件桶,随同步无冲突复制。",footer:z(n,{children:[z("button",{class:"btn btn-secondary",onClick:i0,children:"取消"},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:q,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[z("div",{class:"field-label",children:"名称(slug)"},void 0,!1,void 0,this),z("input",{class:"text-input",autofocus:!0,value:J,placeholder:"例如:docs、demo、status",onInput:(W)=>Q(W.target.value),onKeyDown:(W)=>{if(W.key==="Enter")q()}},void 0,!1,void 0,this),z("div",{class:"field-label",children:"标题(可选)"},void 0,!1,void 0,this),z("input",{class:"text-input",value:$,placeholder:"人类可读的标题",onInput:(W)=>X(W.target.value),onKeyDown:(W)=>{if(W.key==="Enter")q()}},void 0,!1,void 0,this),z("div",{class:"muted",style:{fontSize:12,marginTop:10},children:["将通过 ",z("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 C2({site:Z,onClose:J,onVisit:Q,onMenu:$,onChanged:X}){let[q,W]=b(null),G=H0(null),{open:K,close:H}=N9(J),F=()=>u.listSiteFiles(Z.id).then(W).catch((B)=>Z0(B.message));r(()=>{let B=!1;return W(null),u.listSiteFiles(Z.id).then((M)=>!B&&W(M)).catch((M)=>!B&&Z0(M.message)),()=>{B=!0}},[Z.id]);let Y=async(B)=>{let M=B.target,k=Array.from(M.files??[]);if(M.value="",!k.length)return;let T=0;try{for(let O of k)await u.uploadSiteFile(Z.id,O.name,O),T++;Z0(`已上传 ${T} 个文件`)}catch(O){Z0(`已上传 ${T}/${k.length} 个,其余失败:${O.message}`)}finally{F(),X()}},C=async(B)=>{if(!await b0({title:"删除文件?",message:`「${B.path}」将从站点「${Z.name}」中删除。`,confirmLabel:"删除",danger:!0}))return;try{await u.deleteSiteFile(Z.id,B.path)}catch(k){return Z0(k.message)}F(),X()},L=BZ(Z.name);return z(n,{children:[z("div",{class:"scrim"+(K?" open":""),onClick:H},void 0,!1,void 0,this),z("div",{class:"peek"+(K?" open":""),children:[z("div",{class:"peek-head",children:[z("button",{class:"iconbtn",onClick:H,children:z(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("div",{style:{flex:1,display:"flex",alignItems:"center",gap:8,minWidth:0,fontWeight:600,fontSize:14},children:[z(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),z("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"btn btn-secondary",onClick:()=>G.current?.click(),children:[z(f,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this),z("button",{class:"iconbtn",title:"更多",onClick:(B)=>$(B),children:z(f,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("input",{ref:G,type:"file",multiple:!0,style:{display:"none"},onChange:Y},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"peek-body",children:[z("h2",{style:{margin:"0 0 20px"},children:Z.title||Z.name},void 0,!1,void 0,this),z("div",{class:"acc-link",children:[z("span",{class:"url",children:L},void 0,!1,void 0,this),z("button",{title:"复制地址",onClick:()=>LZ(L),children:z(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"accent",title:"访问站点",onClick:Q,children:z(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"site-meta",children:[z("span",{children:[z("b",{children:q?.length??Z.file_count},void 0,!1,void 0,this)," 个文件"]},void 0,!0,void 0,this),z("span",{children:["创建于 ",t7(Z.created_hlc)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"files-head",children:[z("span",{children:"文件"},void 0,!1,void 0,this),z("span",{children:q?.length??""},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q==null?z("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):q.length===0?z("div",{class:"site-empty",style:{marginTop:4},children:[z("div",{class:"ei",children:"\uD83D\uDCC1"},void 0,!1,void 0,this),z("div",{class:"et",children:"站点还没有文件"},void 0,!1,void 0,this),z("div",{class:"ed",children:"上传文件后即可通过站点地址访问。"},void 0,!1,void 0,this),z("button",{class:"btn btn-secondary",onClick:()=>G.current?.click(),children:[z(f,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):z("div",{children:q.map((B)=>z("div",{class:"filerow",onClick:()=>Z9(z(r7,{site:Z,file:B},void 0,!1,void 0,this)),children:[z("span",{class:"fi",children:z(f,{name:P2(B),cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{class:"fpath",children:B.path},void 0,!1,void 0,this),z("span",{class:"enc-badge"+(B.encoding==="blob"?" blob":""),children:B.encoding},void 0,!1,void 0,this),z("div",{class:"facts",children:[z("button",{title:"预览",onClick:(M)=>{M.stopPropagation(),Z9(z(r7,{site:Z,file:B},void 0,!1,void 0,this))},children:z(f,{name:"eye",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{title:"复制路径",onClick:(M)=>{M.stopPropagation(),LZ("/sites/"+Z.name+"/"+B.path)},children:z(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"del",title:"删除",onClick:(M)=>{M.stopPropagation(),C(B)},children:z(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},B.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 r7({site:Z,file:J}){let Q="/sites/"+Z.name+"/"+J.path,[$,X]=b(null),q=o7(J.content_type),W=!q&&(J.encoding==="utf8"||/text\/|json|javascript|xml/.test(J.content_type));return r(()=>{if(!W)return;fetch(Q).then((G)=>G.text()).then(X).catch(()=>X("(无法加载内容)"))},[Q]),z(X9,{title:J.path,sub:Q,width:680,footer:z(n,{children:[z("button",{class:"btn btn-secondary",onClick:()=>LZ(Q),children:"复制路径"},void 0,!1,void 0,this),z("button",{class:"btn btn-primary",onClick:i0,children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[z("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center",color:"var(--muted)",fontSize:12,marginBottom:12},children:[z("span",{children:J.content_type},void 0,!1,void 0,this),z("span",{class:"enc-badge"+(J.encoding==="blob"?" blob":""),children:J.encoding},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q?z("img",{src:Q,style:{maxWidth:"100%",borderRadius:"var(--radius)",border:"1px solid var(--line)"}},void 0,!1,void 0,this):W?$==null?z("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z("div",{class:"preview-box",children:$},void 0,!1,void 0,this):z("div",{class:"preview-bin",children:[z("div",{class:"pi",children:"\uD83D\uDCE6"},void 0,!1,void 0,this),z("div",{class:"pt",children:"二进制文件 · 在新标签打开查看"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function O2({site:Z,onClose:J}){r(()=>{let $=(X)=>{if(X.key==="Escape")J()};return addEventListener("keydown",$),()=>removeEventListener("keydown",$)},[]);let Q="/sites/"+Z.name+"/";return z("div",{class:"spv-scrim open",onClick:($)=>{if($.target===$.currentTarget)J()},children:z("div",{class:"spv",children:[z("div",{class:"spv-chrome",children:[z("div",{class:"spv-dots",children:[z("i",{},void 0,!1,void 0,this),z("i",{},void 0,!1,void 0,this),z("i",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("div",{class:"spv-url",children:[z(f,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this),z("span",{children:BZ(Z.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("button",{class:"spv-btn",title:"在新标签打开",onClick:()=>window.open(Q,"_blank"),children:[z(f,{name:"externalLink",cls:"ico sm"},void 0,!1,void 0,this),"新标签"]},void 0,!0,void 0,this),z("button",{class:"spv-btn icon",title:"关闭",onClick:J,children:z(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("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 T8(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 V8(Z){if(!Z.startsWith("#/"))return{kind:"empty"};let[J="",Q=""]=Z.slice(2).split("?",2),[$,X=""]=J.split("/",2);try{if($==="db"&&X)return{kind:"db",id:decodeURIComponent(X)};if($==="doc"&&X)return{kind:"doc",id:decodeURIComponent(X)};if($==="search"){let q=new URLSearchParams(Q).get("q");if(q)return{kind:"search",q}}if($==="settings")return{kind:"settings"};if($==="sites")return{kind:"sites"}}catch{}return{kind:"empty"}}var e7="mh-quicknote-last",ZJ="mh-quicknote-parent",JJ="Quick Notes";function _2(Z,J){return(J.created_hlc??"").localeCompare(Z.created_hlc??"")}async function A2(){let Z=localStorage.getItem(ZJ);if(Z)try{return await u.getDocument(Z),Z}catch{}let $=(await u.listDocuments()).find((X)=>X.parent_id==null&&X.title===JJ)?.id??(await u.createDocument({title:JJ})).id;return localStorage.setItem(ZJ,$),$}function QJ(){let[Z,J]=b(null),[Q,$]=b([]),[X,q]=b(null),[W,G]=b(""),[K,H]=b(!1),F=H0(null),Y=typeof window<"u"?window.metahubDesktop?.quicknote:void 0,C=O9(async(P)=>{let _=(await u.listDocumentsByParent(P)).sort(_2);return $(_),_},[]);r(()=>{if(!Z)return;let P,_=()=>{clearTimeout(P),P=setTimeout(()=>void C(Z),80)};return document.addEventListener(e0,_),()=>{clearTimeout(P),document.removeEventListener(e0,_)}},[Z,C]);let L=O9(async(P)=>{let _=await u.createDocument({title:"",parent_id:P});return await C(P),_.id},[C]);r(()=>{(async()=>{try{let P=await A2();J(P);let _=await C(P),A=localStorage.getItem(e7),y=A&&_.some((x)=>x.id===A)&&A||_[0]?.id||await L(P);q(y)}catch(P){G(String(P.message))}})()},[C,L]),r(()=>{if(X)localStorage.setItem(e7,X)},[X]),r(()=>{Y?.getAlwaysOnTop().then(H).catch(()=>{})},[Y]),r(()=>{if(!Y)return;let P=(_)=>{if(_.key==="Escape")Y.hide()};return addEventListener("keydown",P),()=>removeEventListener("keydown",P)},[Y]);let B=async()=>{if(!Z)return;try{q(await L(Z))}catch(P){G(String(P.message))}},M=async()=>{if(!Y)return;let P=!K;H(P);try{H(await Y.setAlwaysOnTop(P))}catch{H(!P)}},k=async()=>{if(!X||!Z)return;if(!await b0({title:"删除笔记?",message:"该快速笔记将被删除。",confirmLabel:"删除",danger:!0}))return;await u.deleteDocument(X);let _=await C(Z);q(_[0]?.id??await L(Z))},T=(P)=>{R0(P,(_)=>z(n,{children:[z(u0,{children:"快速笔记"},void 0,!1,void 0,this),Q.length===0&&z("div",{class:"lbl",children:"还没有笔记"},void 0,!1,void 0,this),Q.map((A)=>z(t,{icon:"file",label:A.title||"无标题",checked:A.id===X,onClick:()=>{_(),q(A.id)}},A.id,!1,void 0,this)),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"plus",label:"新建笔记",onClick:()=>{_(),B()}},void 0,!1,void 0,this),X&&z(t,{icon:"trash",label:"删除当前笔记",danger:!0,onClick:()=>{_(),k()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),{minWidth:220})},O=Q.find((P)=>P.id===X)?.title;return z("div",{class:"qn",children:[z("div",{class:"qn-bar",children:[z("span",{class:"qn-brand",children:O||"快速笔记"},void 0,!1,void 0,this),z("div",{class:"qn-actions",children:[z("button",{class:"iconbtn",title:"新建笔记",onClick:()=>void B(),children:z(f,{name:"plus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("button",{class:"iconbtn",title:"笔记列表",onClick:T,children:z(f,{name:"list"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Y&&z("button",{class:"iconbtn"+(K?" active":""),title:K?"取消置顶":"始终置顶",onClick:()=>void M(),children:z(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),W&&z("div",{class:"error-bar",onClick:()=>G(""),children:["⚠ ",W,"(点击关闭)"]},void 0,!0,void 0,this),z("div",{class:"qn-body",children:X?z(q1,{docId:X,onError:G,onHandle:(P)=>F.current=P},X,!1,void 0,this):z("div",{class:"empty",children:z("div",{children:"加载中…"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),z(DZ,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var M2=/[",\r\n]/;function N2(Z){return M2.test(Z)?`"${Z.replace(/"/g,'""')}"`:Z}function zJ(Z){return Z.map((J)=>J.map(N2).join(",")).join(`
|
|
115
|
-
`)}function S8(Z,J){let Q=J.startsWith(".")?J:"."+J,$=Z.trim().replace(/[\\/:*?"<>|\x00-\x1f]/g,"-").replace(/\s+/g," ").replace(/^\.+$/,"").slice(0,90)||"untitled";return $.toLowerCase().endsWith(Q.toLowerCase())?$:$+Q}function I8(Z,J,Q){let $=URL.createObjectURL(new Blob([J],{type:Q})),X=document.createElement("a");X.href=$,X.download=Z,document.body.appendChild(X),X.click(),X.remove(),setTimeout(()=>URL.revokeObjectURL($),0)}function $J(Z,J){let Q=["id",...Z.map((X)=>X.name)],$=J.map((X)=>[X.id,...Z.map((q)=>v2(X.cells[q.id]))]);return zJ([Q,...$])}function v2(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 k2(){let[Z,J]=b(()=>typeof window<"u"&&window.matchMedia(jZ).matches);return r(()=>{let Q=window.matchMedia(jZ),$=()=>J(Q.matches);return Q.addEventListener("change",$),()=>Q.removeEventListener("change",$)},[]),Z}function R2(){let[Z,J]=b([]),[Q,$]=b([]),[X,q]=b(()=>V8(location.hash)),[W,G]=b(""),[K,H]=b(!1),[F,Y]=b(268),[C,L]=b("blocks"),[B,M]=b(!1),[k,T]=b(!1),[O,P]=b(!1),[_,A]=b(!1),y=H0(null),x=k2(),v=O9((p)=>G(p),[]),E=O9((p)=>{y.current=p},[]),J0=O9(async()=>{let[p,s]=await Promise.all([u.listDatabases(),u.listDocuments()]);J(p),$(s),M(!0)},[]);r(()=>{J0().catch((p)=>v(String(p.message)))},[J0]),r(()=>{let p,s=()=>{clearTimeout(p),p=setTimeout(()=>J0().catch((Y0)=>v(String(Y0.message))),80)};return document.addEventListener(e0,s),()=>{clearTimeout(p),document.removeEventListener(e0,s)}},[J0,v]),r(()=>{y4()},[]),r(()=>{if(typeof navigator>"u"||!("serviceWorker"in navigator))return;if(!window.isSecureContext)return;let p=navigator.serviceWorker.controller!=null,s=!1;navigator.serviceWorker.register("/sw.js").catch((U0)=>{console.warn("[webui] service worker registration failed —",U0)});let Y0=()=>{if(!p||s)return;s=!0,Z0("界面已更新,刷新页面生效")};return navigator.serviceWorker.addEventListener("controllerchange",Y0),()=>navigator.serviceWorker.removeEventListener("controllerchange",Y0)},[]);let[l,A0]=b(typeof navigator<"u"&&!navigator.onLine);r(()=>{let p=()=>A0(!1),s=()=>A0(!0);return window.addEventListener("online",p),window.addEventListener("offline",s),()=>{window.removeEventListener("online",p),window.removeEventListener("offline",s)}},[]),r(()=>{let p=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0;if(!p)return;Promise.all([u.version().then((s)=>s.version).catch(()=>null),p.installedVersion().catch(()=>null)]).then(([s,Y0])=>{if(s&&Y0&&S9(Y0,s)>0)T(!0)})},[]);let o=(p,s)=>{let Y0=T8(p);if(location.hash!==Y0)history[s?.replace?"replaceState":"pushState"](null,"",Y0);q(p)};r(()=>{if(location.hash&&!location.hash.startsWith("#/"))history.replaceState(null,"","#/");let p=()=>q(V8(location.hash));return window.addEventListener("hashchange",p),()=>window.removeEventListener("hashchange",p)},[]);let B0=()=>u.createDocument({title:""}).then((p)=>o({kind:"doc",id:p.id})).catch((p)=>v(String(p.message))),K0=X.kind==="db"?Z.find((p)=>p.id===X.id):void 0,I=X.kind==="doc"?Q.find((p)=>p.id===X.id):void 0,V=X.kind==="doc"?X.id:null,g=X.kind==="db"?X.id:null;r(()=>{L("blocks"),P(!1)},[V]),r(()=>{A(!1)},[g]);let j=X.kind!=="empty",e=H0(0);r(()=>{let p=x&&j;if(p&&!document.body.classList.contains("mobile-content"))e.current=window.scrollY;if(document.body.classList.toggle("mobile",x),document.body.classList.toggle("mobile-content",p),W1(),x)window.scrollTo(0,p?0:e.current)},[x,j,X]),r(()=>{let p=(s)=>{if((s.metaKey||s.ctrlKey)&&s.key.toLowerCase()==="k")s.preventDefault(),document.querySelector(".sb-search input")?.focus()};return window.addEventListener("keydown",p),()=>window.removeEventListener("keydown",p)},[]),r(()=>{let p=window.matchMedia("(prefers-color-scheme: dark)"),s=()=>{v8(),W1()};return p.addEventListener("change",s),()=>p.removeEventListener("change",s)},[]);let X0=(p)=>{let s=y.current?.snapshotMarkdown();y.current?.flushSave(),(s==null?u.getDocument(p.id).then((U0)=>U0.body??""):Promise.resolve(s)).then((U0)=>I8(S8(p.title||p.id,".md"),U0,"text/markdown;charset=utf-8")).catch((U0)=>v(String(U0.message)))},W0=(p)=>{Promise.all([u.listProperties(p.id),u.listRecords(p.id)]).then(([s,Y0])=>I8(S8(p.name||p.id,".csv"),$J(s,Y0),"text/csv;charset=utf-8")).catch((s)=>v(String(s.message)))},P0=(p)=>{R0(p,(s)=>z(n,{children:[z(t,{icon:"link",label:"复制链接",onClick:()=>{s(),navigator.clipboard.writeText(location.origin+location.pathname+T8(X)).then(()=>Z0("链接已复制")).catch((Y0)=>v(String(Y0.message)))}},void 0,!1,void 0,this),X.kind==="doc"&&I&&z(t,{icon:"download",label:"导出 Markdown",onClick:()=>{s(),X0(I)}},void 0,!1,void 0,this),X.kind==="db"&&K0&&z(t,{icon:"download",label:"导出 CSV",onClick:()=>{s(),W0(K0)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},k0=(p)=>{if(X.kind==="doc"&&I)R0(p,(s)=>z(n,{children:[z(t,{icon:"code",label:C==="source"?"块方式显示":"代码方式显示",checked:C==="source",onClick:()=>{s(),y.current?.setMode(C==="source"?"blocks":"source")}},void 0,!1,void 0,this),z(t,{icon:"copy",label:"创建副本",onClick:async()=>{s(),y.current?.flushSave();try{let Y0=await u.duplicateDocument(I.id,{title:`${I.title||"无标题"} 副本`});o({kind:"doc",id:Y0.id}),Z0("已创建副本")}catch(Y0){v(String(Y0.message))}}},void 0,!1,void 0,this),z(t,{icon:"history",label:"版本历史",onClick:()=>{s(),y.current?.flushSave(),P(!0)}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"settings",label:"重命名…",onClick:async()=>{s();let Y0=await q9({title:"重命名文档",value:I.title});if(Y0)await u.updateDocument(I.id,{title:Y0})}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除文档",danger:!0,onClick:async()=>{if(s(),await b0({title:"删除文档?",message:`「${I.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))await u.deleteDocument(I.id),o({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));else if(X.kind==="db"&&K0)R0(p,(s)=>z(n,{children:[z(t,{icon:"copy",label:"创建副本",onClick:async()=>{s();try{let Y0=await u.duplicateDatabase(K0.id,{name:`${K0.name} 副本`});o({kind:"db",id:Y0.id}),Z0("已创建副本")}catch(Y0){v(String(Y0.message))}}},void 0,!1,void 0,this),z(t,{icon:"history",label:"最近动态",onClick:()=>{s(),A(!0)}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"settings",label:"重命名…",onClick:async()=>{s();let Y0=await q9({title:"重命名数据库",value:K0.name});if(Y0&&Y0!==K0.name)await u.updateDatabase(K0.id,{name:Y0})}},void 0,!1,void 0,this),z(f0,{},void 0,!1,void 0,this),z(t,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(s(),await b0({title:"删除数据库?",message:`「${K0.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))await u.deleteDatabase(K0.id),o({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return z(n,{children:[z(C4,{databases:Z,docs:Q,view:X,navigate:o,width:F,collapsed:K,onResize:Y,onCollapse:()=>H(!0),updatePending:k,onError:v},void 0,!1,void 0,this),z("div",{class:"main",children:[z("div",{class:"topbar"+(X.kind==="empty"?" bare":""),children:[z("button",{class:"iconbtn hamburger"+(K?" show-collapsed":""),title:x?"返回":K?"展开侧栏":"菜单",onClick:()=>x?o({kind:"empty"}):H(!1),children:z(f,{name:x?"arrowLeft":"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("div",{class:"crumb",children:[X.kind==="doc"&&z(n,{children:[z("span",{class:"emoji",children:z(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{children:I?.title||"无标题"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X.kind==="db"&&z(n,{children:[z("span",{class:"emoji",children:K0?.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),z("span",{children:K0?.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X.kind==="search"&&z("span",{children:["搜索:“",X.q,"”"]},void 0,!0,void 0,this),X.kind==="settings"&&z(n,{children:[z("span",{class:"emoji",children:z(f,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{children:"设置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X.kind==="sites"&&z(n,{children:[z("span",{class:"emoji",children:z(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z("span",{children:"站点管理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(X.kind==="doc"||X.kind==="db")&&z(n,{children:[z("button",{class:"btn btn-ghost",onClick:P0,children:[z(f,{name:"share",cls:"ico sm"},void 0,!1,void 0,this),"分享"]},void 0,!0,void 0,this),z("button",{class:"iconbtn",onClick:k0,children:z(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),l&&z("div",{class:"offline-bar",children:B9()?"⚡ 离线 — 本地副本模式:可正常查看和编辑全部内容,恢复连接后自动同步":"⚡ 离线 — 可浏览已缓存的内容,修改会失败;恢复网络后自动恢复"},void 0,!1,void 0,this),W&&z("div",{class:"error-bar",onClick:()=>G(""),children:["⚠ ",W,"(点击关闭)"]},void 0,!0,void 0,this),z("div",{class:"content",children:[X.kind==="empty"&&z(T2,{onNewDoc:B0},void 0,!1,void 0,this),X.kind==="db"&&K0&&z(j4,{db:K0,onError:v},K0.id,!1,void 0,this),X.kind==="db"&&!K0&&z("div",{class:"empty",children:B?"数据库不存在或已被删除。":"加载中…"},void 0,!1,void 0,this),X.kind==="doc"&&z(q1,{docId:X.id,onError:v,onModeChange:L,onHandle:E},X.id,!1,void 0,this),X.kind==="search"&&z(S2,{q:X.q,onOpenDoc:(p)=>o({kind:"doc",id:p}),onOpenDb:(p)=>o({kind:"db",id:p})},void 0,!1,void 0,this),X.kind==="settings"&&z(n7,{onUpdatePending:T},void 0,!1,void 0,this),X.kind==="sites"&&z(s7,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O&&X.kind==="doc"&&z(k4,{docId:X.id,onClose:()=>P(!1),onReverted:()=>y.current?.reload()},void 0,!1,void 0,this),_&&X.kind==="db"&&z(R4,{dbId:X.id,onClose:()=>A(!1)},void 0,!1,void 0,this),z(DZ,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function T2({onNewDoc:Z}){return z("div",{class:"empty",children:[z("svg",{class:"estate-art",viewBox:"0 0 220 190",fill:"none","aria-hidden":"true",children:[z("ellipse",{class:"kg-ground ground",cx:"110",cy:"176",rx:"62",ry:"8"},void 0,!1,void 0,this),z("circle",{class:"kg-glow fill-soft",cx:"116",cy:"88",r:"42"},void 0,!1,void 0,this),z("g",{class:"kg-plant",children:[z("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),z("g",{class:"kg-leaf l1",children:z("g",{class:"kg-grow",children:z("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),z("g",{class:"kg-leaf l2",children:z("g",{class:"kg-grow",children:z("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),z("g",{class:"kg-leaf l3",children:z("g",{class:"kg-grow",children:z("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),z("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),z("g",{class:"kg-cardA",children:[z("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),z("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),z("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),z("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),z("circle",{class:"kg-particle p1 fill-a",cx:"44",cy:"62",r:"2.6"},void 0,!1,void 0,this),z("circle",{class:"kg-particle p2 fill-soft",cx:"178",cy:"74",r:"3"},void 0,!1,void 0,this),z("circle",{class:"kg-particle p3 fill-a",cx:"40",cy:"120",r:"2"},void 0,!1,void 0,this),z("circle",{class:"kg-particle p4 fill-soft",cx:"182",cy:"126",r:"2.4"},void 0,!1,void 0,this),z("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),z("p",{class:"estate-title",children:"空空如也"},void 0,!1,void 0,this),z("p",{class:"estate-hint",children:"从左侧选择一个数据库或文档,或新建一个开始。"},void 0,!1,void 0,this),z("button",{class:"estate-link",onClick:Z,children:"+ 新建文档"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function V2({text:Z}){let J=Z.split(/\[([^\[\]]*)\]/g);return z(n,{children:J.map((Q,$)=>$%2?z("mark",{children:Q},$,!1,void 0,this):Q)},void 0,!1,void 0,this)}function S2({q:Z,onOpenDoc:J,onOpenDb:Q}){let[$,X]=b(null);return r(()=>{X(null),u.search(Z).then(X).catch(()=>X([]))},[Z]),z("div",{class:"db",children:[z("div",{class:"db-title",style:{marginBottom:14},children:["搜索:“",Z,"”"]},void 0,!0,void 0,this),$===null&&z("p",{class:"muted",children:"搜索中…"},void 0,!1,void 0,this),$?.length===0&&z("p",{class:"muted",children:"没有匹配结果。"},void 0,!1,void 0,this),$?.map((q)=>z("div",{class:"search-hit",onClick:()=>q.type==="document"?J(q.id):q.database_id&&Q(q.database_id),children:[z("strong",{children:q.title||q.id},void 0,!1,void 0,this)," ",z("span",{class:"muted",children:q.type==="document"?"文档":"记录"},void 0,!1,void 0,this),z("div",{class:"muted",children:z(V2,{text:q.snippet},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},q.id,!0,void 0,this))]},void 0,!0,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"),P1(z(QJ,{},void 0,!1,void 0,this),document.getElementById("app"));else P1(z(R2,{},void 0,!1,void 0,this),document.getElementById("app"));
|
|
138
|
+
`:Q}function dW(Z){return Z.replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/(\*|_)([^*_]+)\1/g,"$2").replace(/~~([^~]+)~~/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").trim()}function iW({blocks:Z}){let J=Y9(Z).filter((G)=>wZ(G.type)).map((G)=>({id:G.id,level:Number(G.type.slice(1)),text:dW(G.content)||"无标题"})),[Q,X]=R(null),z=J.map((G)=>G.id).join("|");if(o(()=>{if(!J.length)return;let G=document.querySelector(".content"),q=0,H=()=>{let K=Math.max(G?G.getBoundingClientRect().top:0,0)+100,N=J[0].id;for(let U of J){let O=document.querySelector(`.block[data-bid="${U.id}"]`);if(!O)continue;if(O.getBoundingClientRect().top-K<=1)N=U.id;else break}X(N)},Y=()=>{if(q)return;q=requestAnimationFrame(()=>{q=0,H()})};H();let F=new IntersectionObserver(H,{root:G,rootMargin:"-90px 0px -70% 0px",threshold:[0,1]});for(let K of J){let N=document.querySelector(`.block[data-bid="${K.id}"]`);if(N)F.observe(N)}return G?.addEventListener("scroll",Y,{passive:!0}),window.addEventListener("scroll",Y,{passive:!0}),()=>{if(F.disconnect(),G?.removeEventListener("scroll",Y),window.removeEventListener("scroll",Y),q)cancelAnimationFrame(q)}},[z]),!J.length)return null;let W=(G)=>{document.querySelector(`.block[data-bid="${G}"]`)?.scrollIntoView({behavior:"smooth",block:"start"})};return $("nav",{class:"doc-toc","aria-label":"文档目录",children:J.map((G)=>$("button",{class:"toc-row lvl-"+G.level+(G.id===Q?" active":""),title:G.text,onClick:()=>W(G.id),children:[$("span",{class:"toc-tick"},void 0,!1,void 0,this),$("span",{class:"toc-label",children:G.text},void 0,!1,void 0,this)]},G.id,!0,void 0,this))},void 0,!1,void 0,this)}function s8({docId:Z,onError:J,onModeChange:Q,onHandle:X}){let z=W0([]),W=W0(""),G=W0(null),q=W0(""),H=KZ(),[Y,F]=R("blocks"),[K,N]=R(0),[U,O]=R(!0),[C,f]=R(null),h=W0(null),[_,M]=R(null),[k,T]=R(null),[L,P]=R(null),w=W0(),A=W0(null),y=W0(!1),S=W0(0),p=W0(Promise.resolve()),[n,$0]=R(!1),Q0=W0(null),[x,b]=R(null),[u,V]=R(0),[i,Z0]=R(0),G0=W0(0),J0=W0([]),e=W0([]),P0=W0({past:[],future:[],present:null,lastKey:null,lastTime:0}),l0=()=>({blocks:structuredClone(z.current),title:q.current,focusId:o$()}),c0=(B)=>{let v=P0.current;if(!v.present){v.present=l0(),v.lastKey=B,v.lastTime=Date.now();return}let m=Date.now();if(B&&B===v.lastKey&&m-v.lastTime<600){v.present=l0(),v.lastTime=m;return}if(v.past.push(v.present),v.past.length>200)v.past.shift();v.present=l0(),v.future=[],v.lastKey=B,v.lastTime=m},d0=(B)=>{if(z.current=structuredClone(B.blocks),q.current=B.title,T(null),N((v)=>v+1),O0(),B.focusId)requestAnimationFrame(()=>D0(B.focusId,!0))},n0=()=>{let B=P0.current;if(!B.past.length)return;if(B.present)B.future.push(B.present);let v=B.past.pop();B.present=v,B.lastKey=null,d0(v)},E0=()=>{let B=P0.current;if(!B.future.length)return;if(B.present)B.past.push(B.present);let v=B.future.pop();B.present=v,B.lastKey=null,d0(v)},N0=()=>{c0(null),N((B)=>B+1)},v0=()=>{O(!0),f(null),$0(!1),P0.current={past:[],future:[],present:null,lastKey:null,lastTime:0},d.getDocument(Z).then((B)=>{q.current=B.title??"",W.current=B.body??"",z.current=cZ(B.body),A.current=B.version??null,y.current=!1,O(!1),N0()}).catch((B)=>J(String(B.message)))};o(()=>{return v0(),()=>clearTimeout(w.current)},[Z]),o(()=>{let B=(v)=>{if(!y.current)return;v.preventDefault(),v.returnValue=""};return window.addEventListener("beforeunload",B),()=>window.removeEventListener("beforeunload",B)},[]),o(()=>{let B=(v)=>{if(!v.detail?.datasets?.some((D)=>D==="documents"||D==="doc_blocks"))return;(async()=>{try{if(y.current)await o0();let D=await d.getDocument(Z);if(D.version!=null&&D.version===A.current)return;let c=o$(),H0=c?Y9(z.current).findIndex((B0)=>B0.id===c):-1,L0=c?r8(c):null;if(q.current=D.title??"",W.current=D.body??"",z.current=cZ(D.body),A.current=D.version??null,y.current=!1,$0(!1),N((B0)=>B0+1),H0>=0)requestAnimationFrame(()=>{let B0=Y9(z.current),m0=B0[Math.min(H0,B0.length-1)];if(m0)o8(m0.id,L0??0)});s("已合并其他设备的修改")}catch{}})()};return document.addEventListener(p9,B),()=>document.removeEventListener(p9,B)},[Z]);let O0=()=>{y.current=!0,clearTimeout(w.current),w.current=setTimeout(T0,700)},j0=()=>{if(Y==="source")return W.current=G.current?.value??W.current,W.current;return ZZ(z.current),B$(z.current)},i0=(B={})=>d.updateDocument(Z,{title:q.current,body:j0(),...B.force||A.current==null||e0()?{}:{if_match:A.current}}).then((v)=>{A.current=v.version??null,y.current=!1,S.current=0,$0(!1)}).catch((v)=>{if(v instanceof S9&&v.code==="stale"){$0(!0);return}J(String(v.message)),S.current=Math.min(Math.max(S.current*2,1000),30000),clearTimeout(w.current),w.current=setTimeout(T0,S.current)}),T0=(B={})=>p.current=p.current.then(()=>i0(B)),o0=async()=>{clearTimeout(w.current),await T0()},K0=(B)=>{if(B===Y)return;if(B==="source"){W.current=j0(),f(null),M(null),T(null),F("source"),Q?.("source"),requestAnimationFrame(()=>{if(G.current)G.current.value=W.current,s$(G.current),G.current.focus()});return}W.current=G.current?.value??W.current,z.current=cZ(W.current),F("blocks"),Q?.("blocks"),N((v)=>v+1),requestAnimationFrame(()=>{let v=Y9(z.current)[0];if(v)D0(v.id)})};o(()=>{return X?.({getMode:()=>Y,setMode:K0,snapshotMarkdown:j0,flushSave:o0,reload:v0}),()=>X?.(null)},[X,Y]);let q0=z.current,A0=k?j$(q0,k.anchorId,k.focusId):[],j=(B,v="p",m={})=>{let D=t9(v,m);if(!B)q0.push(D);else{let c=I0(q0,B);if(c)c.parent.splice(c.index+1,0,D);else q0.push(D)}return N0(),requestAnimationFrame(()=>D0(D.id)),O0(),D},I=(B,v,m={})=>{let D=I0(q0,B)?.block;if(!D)return;let c=m.content===void 0||m.content===D.content?r8(B):null;if(!f1(q0,B,v,m))return;if(N0(),v!=="divider"&&v!=="table")requestAnimationFrame(()=>c!=null?o8(B,c):D0(B));O0()},E=(B)=>{if(!aZ(q0,B))return;N0(),O0()},a=(B,v)=>{B.content=rZ(B,v),c0("text:"+B.id);let m=v.textContent??"";if(m.startsWith("/")){let D=WG();f((c)=>({blockId:B.id,x:D.x,y:D.y,query:m.slice(1),idx:c?.blockId===B.id?c.idx:0}))}else if(C)f(null);O0()},F0=(B,v,m)=>{let D=r$(B.clipboardData);if(D.length){B.preventDefault(),U0(v,m,D);return}let c=B.clipboardData?.getData("text/html"),L0=(c?K$(c):B.clipboardData?.getData("text/plain")??"").replace(/\r\n?/g,`
|
|
139
|
+
`);if(!L0.trim())return;B.preventDefault();let B0=cZ(L0);if(!B0.length)return;let m0=I0(q0,v.id);if(!m0)return;let{before:K9,after:XZ}=t8(m);if(B0.length===1&&B0[0].type==="p"&&(K9.trim()!==""||XZ.trim()!=="")){v.content=K9+B0[0].content+XZ;let o3=t$(K9+B0[0].content);N0(),O0(),requestAnimationFrame(()=>D1(v.id,o3));return}let _Z=[...B0],G8=XZ.trim()!==""?t9("p",{content:XZ}):null;if(G8)_Z.push(G8);if(K9.trim()===""&&!m0.block.children?.length)m0.parent.splice(m0.index,1,..._Z);else v.content=K9,m0.parent.splice(m0.index+1,0,..._Z);N0(),O0();let r3=G8??_Z[_Z.length-1];requestAnimationFrame(()=>D0(r3.id,!G8))},l=(B)=>{let v=[];for(let m of B){let D=G5[B1(m.type)];if(m.size>D)s(`${m.name||"文件"} 超过 ${Math.round(D/1024/1024)}MB 上限`);else v.push(m)}return v},t=(B,v)=>{let m=K5(B.name||"文件"),D=B1(B.type);d.uploadDocBlob(B,(c,H0)=>F5(m,c,H0)).then((c)=>{let H0=t9(D,{src:c.url,name:B.name||void 0,size:D==="file"?c.size:void 0}),L0=I0(z.current,v);if(L0)L0.parent.splice(L0.index,1,H0);else z.current.push(H0);b6(m,!0)}).catch((c)=>{aZ(z.current,v),b6(m,!1,()=>X0([B],{mode:"append"})),s(`上传失败:${c.message}`)}).finally(()=>{N0(),O0()})},X0=(B,v)=>{let m=l(B);if(!m.length)return;let D=m.map((c)=>t9("uploading",{name:c.name||void 0}));if(v.mode==="caret"){let c=I0(z.current,v.block.id);if(!c)return;let{before:H0,after:L0}=t8(v.el),B0=[...D];if(L0.trim()!=="")B0.push(t9("p",{content:L0}));if(H0.trim()===""&&!c.block.children?.length)c.parent.splice(c.index,1,...B0);else v.block.content=H0,c.parent.splice(c.index+1,0,...B0)}else if(v.mode==="at"){let c=I0(z.current,v.targetId);if(!c)return;c.parent.splice(c.index+(v.where==="after"?1:0),0,...D)}else if(v.mode==="append")z.current.push(...D);else{let c=I0(z.current,v.blockId);if(!c)z.current.push(...D);else if(c.block.type==="p"&&!c.block.content.trim()&&!c.block.children?.length)c.parent.splice(c.index,1,...D);else c.parent.splice(c.index+1,0,...D)}N0(),O0(),m.forEach((c,H0)=>t(c,D[H0].id))},U0=(B,v,m)=>X0(m,{mode:"caret",block:B,el:v}),k0=(B,v,m)=>X0(m,{mode:"at",targetId:B,where:v}),g0=(B)=>X0(B,{mode:"append"}),X6=(B,v)=>{let m=document.createElement("input");m.type="file",m.multiple=!0,m.accept=B==="image"?"image/*":B==="video"?"video/*":B==="audio"?"audio/*":"",m.onchange=()=>{let D=Array.from(m.files??[]);if(D.length)X0(D,{mode:"slot",blockId:v})},m.click()},X8=(B,v)=>{let m=I0(q0,B);if(!m)return;if(Object.assign(m.block,v),"width"in v&&!v.width)delete m.block.width;c0("void:"+B),N0(),O0()},f3=(B,v)=>{if(B.target.closest("textarea, input, select, video, audio"))return;if(B.key==="Backspace"||B.key==="Delete"){B.preventDefault();let m=s9(q0,v.id),D=iZ(q0,v.id);E(v.id),requestAnimationFrame(()=>m?D0(m.id,!0):D?D0(D.id):void 0)}else if(B.key==="Enter")B.preventDefault(),j(v.id);else if(B.key==="ArrowUp"){let m=s9(q0,v.id);if(m)B.preventDefault(),D0(m.id,!0)}else if(B.key==="ArrowDown"){let m=iZ(q0,v.id);if(m)B.preventDefault(),D0(m.id)}},g3=async(B,v)=>{try{let m=await d.uploadDocBlob(new File([v],"annotated.png",{type:"image/png"}));X8(B,{src:m.url}),P((D)=>D&&D.id===B?{...D,src:m.url}:D)}catch(m){s(`保存失败:${m.message}`)}},b3=(B)=>{let v=B.src??"";if(typeof window<"u"&&window.metahubDesktop?.preview)window.metahubDesktop.preview.open({src:v,name:B.name,blockId:B.id});else P({id:B.id,src:v,name:B.name})};o(()=>{let B=null;try{B=new BroadcastChannel("mh-doc-image")}catch{return}return B.onmessage=(v)=>{let m=v.data;if(!m||m.action!=="replace"||!m.blockId||!m.url)return;let D=I0(z.current,m.blockId);if(!D)return;D.block.src=m.url,N0(),O0()},()=>B?.close()},[]);let z8=C?C1.filter((B)=>(B.t+B.type+B.d).toLowerCase().includes(C.query.toLowerCase())):[],o1=(B)=>{if(!C)return;let v=C.blockId;if(f(null),dZ(B.type))X6(B.type,v);else I(v,B.type)},t1=(B,v)=>{I(B.id,v.type,v),f(null)},j3=(B,v)=>{B.content="",B.children??=[];let m=t9(v.type,v);B.children.unshift(m),f(null),N0(),requestAnimationFrame(()=>D0(m.id)),O0()},h3=(B)=>{ZZ(q0);let v=r8(B);if(!S1(q0,B))return;N0(),requestAnimationFrame(()=>v!=null?o8(B,v):D0(B)),O0()},s1=(B)=>{ZZ(q0);let v=r8(B);if(!V1(q0,B))return;N0(),requestAnimationFrame(()=>v!=null?o8(B,v):D0(B)),O0()},D3=async(B)=>{if(B==="createLink"){let v=getSelection(),m=v&&v.rangeCount?v.getRangeAt(0).cloneRange():null;if(!m||m.collapsed)return;M(null);let D=(await H9({title:"插入链接",label:"链接地址",placeholder:"https://…"}))?.trim();if(!D)return;m.startContainer.parentElement?.closest?.(".editable")?.focus();let H0=getSelection();H0?.removeAllRanges(),H0?.addRange(m),document.execCommand("createLink",!1,D)}else if(B==="code")ZG();else document.execCommand(B,!1,void 0);QG(q0),O0(),b1(M)},QZ=()=>T(null),e1=()=>{let B=Y9(q0);if(!B.length)return;l8(),T({anchorId:B[0].id,focusId:B[B.length-1].id})},z6=(B)=>{ZZ(q0);let v=h$(q0,B);if(QZ(),N0(),v)requestAnimationFrame(()=>D0(v,!0));O0()},x3=(B,v)=>{if(ZZ(q0),!(v==="indent"?u$(q0,B):E$(q0,B)).length)return;N0(),O0()},ZJ=(B)=>{ZZ(q0);let v=D$(q0,B);if(v.length)T({anchorId:v[0],focusId:v[v.length-1]});N0(),O0()},m3=(B)=>{let v=m$(q0,B);if(v)navigator.clipboard?.writeText(v).catch(()=>{})},u3=(B,v)=>{ZZ(q0);let m=!1;for(let D of k9(q0,B)){let c=I0(q0,D)?.block;if(!c||dZ(c.type)||c.type==="uploading")continue;if(f1(q0,D,v,{content:c.content}))m=!0}if(!m)return;N0(),O0()},JJ=(B)=>{if(B.target?.closest?.(".doc-source"))return;let m=B.metaKey||B.ctrlKey;if(m&&(B.key==="z"||B.key==="Z")){if(B.preventDefault(),B.shiftKey)E0();else n0();return}if(m&&B.key==="y"){B.preventDefault(),E0();return}if(!k)return;let D=A0;if(!D.length)return;if(B.key==="Escape"){B.preventDefault();let c=k.anchorId;QZ(),D0(c,!0);return}if(B.key==="Tab"){B.preventDefault(),x3(D,B.shiftKey?"outdent":"indent");return}if(B.key==="Backspace"||B.key==="Delete"){B.preventDefault(),z6(D);return}if(m&&B.key==="d"){B.preventDefault(),ZJ(D);return}if(m&&(B.key==="c"||B.key==="x")){if(B.preventDefault(),m3(D),B.key==="x")z6(D);return}if(m&&B.key==="a"){B.preventDefault(),e1();return}if(B.key==="ArrowDown"||B.key==="ArrowUp"){B.preventDefault();let c=Y9(q0),H0=c.findIndex((L0)=>L0.id===k.focusId);if(H0<0)return;if(B.shiftKey){let L0=B.key==="ArrowDown"?Math.min(H0+1,c.length-1):Math.max(H0-1,0);T({anchorId:k.anchorId,focusId:c[L0].id})}else{let L0=B.key==="ArrowDown"?D[D.length-1]:D[0];QZ(),D0(L0,B.key==="ArrowDown")}return}if(B.key.length===1&&!m){let c=D[D.length-1];QZ(),D0(c,!0)}},W8=W0(null),E3=(B)=>{if(B.button!==0)return;let v=B.target;if(v.closest(".gutter")||v.closest(".pop")||v.closest(".doc-col-resizer")||v.closest("input, button, select, a")||v.closest("video, audio, iframe, textarea, .img-handle"))return;let D=$G(B.target)?.getAttribute("data-bid")??null;if(!D){let H0=v.classList.contains("doc")?v:null;if(Y==="blocks"&&H0){let L0=H0.querySelectorAll(".block"),B0=L0.length?L0[L0.length-1]:H0.querySelector(".doc-meta"),m0=B0?B0.getBoundingClientRect().bottom:0;if(B.clientY>m0){B.preventDefault();let K9=q0[q0.length-1];if(K9&&o9(K9))D0(K9.id,!0);else j(null);return}}QZ();return}if(B.shiftKey&&k){B.preventDefault(),l8(),T({anchorId:k.anchorId,focusId:D});return}if(!!v.closest(".editable, .code-input, .doc-td")){if(W8.current={anchorId:D,started:!1,sx:B.clientX,sy:B.clientY,mode:"text"},k)QZ()}else B.preventDefault(),l8(),T({anchorId:D,focusId:D}),W8.current={anchorId:D,started:!0,sx:B.clientX,sy:B.clientY,mode:"block"}};o(()=>{let B=(m)=>{let D=W8.current;if(!D)return;let H0=document.elementFromPoint(m.clientX,m.clientY)?.closest(".block[data-bid]")?.getAttribute("data-bid")??null;if(D.mode==="text"){if(H0&&H0!==D.anchorId)D.mode="block",l8(),T({anchorId:D.anchorId,focusId:H0});return}if(!D.started&&Math.abs(m.clientX-D.sx)+Math.abs(m.clientY-D.sy)<4)return;if(D.started=!0,h1(!0),H0)T({anchorId:D.anchorId,focusId:H0})},v=()=>{W8.current=null,h1(!1)};return window.addEventListener("mousemove",B),window.addEventListener("mouseup",v),()=>{window.removeEventListener("mousemove",B),window.removeEventListener("mouseup",v)}},[]);let $J=W0(JJ);$J.current=JJ,o(()=>{let B=(v)=>$J.current(v);return document.addEventListener("keydown",B,!0),()=>document.removeEventListener("keydown",B,!0)},[]),o(()=>{if(!C)return;h.current?.querySelector(".item.sel")?.scrollIntoView({block:"nearest"})},[C?.idx,C?.blockId]),o(()=>{if(!C)return;let B=()=>f(null);return document.addEventListener("focusout",B),()=>document.removeEventListener("focusout",B)},[!!C]);let p3=(B,v,m)=>{if(B.isComposing||B.keyCode===229)return;if(C&&C.blockId===v.id){if(B.key==="ArrowDown"){B.preventDefault(),f({...C,idx:Math.min(C.idx+1,z8.length-1)});return}if(B.key==="ArrowUp"){B.preventDefault(),f({...C,idx:Math.max(C.idx-1,0)});return}if(B.key==="Enter"){B.preventDefault();let D=z8[C.idx];if(D)o1(D);return}if(B.key==="Escape"){f(null);return}}if((B.metaKey||B.ctrlKey)&&(B.key==="a"||B.key==="A")){if(qG(m))B.preventDefault(),e1();return}if(B.key==="Tab"){B.preventDefault(),(B.shiftKey?s1:h3)(v.id);return}if((B.key==="ArrowUp"||B.key==="ArrowDown")&&!B.shiftKey&&!j1()){let D=GG(m);if(B.key==="ArrowUp"&&D.first){let c=s9(q0,v.id);if(c){B.preventDefault(),D0(c.id,!0);return}}else if(B.key==="ArrowDown"&&D.last){let c=iZ(q0,v.id);if(c){B.preventDefault(),D0(c.id);return}}}if(B.key===" "&&!j1()&&(v.type==="p"||wZ(v.type)||v.type==="bullet")){let{before:D,after:c}=t8(m);if(v.type==="p"||wZ(v.type)){let H0=A1(D+" "," ");if(H0&&(v.type==="p"||wZ(H0.type))){B.preventDefault(),t1(v,{...H0,content:c});return}}else{let H0=A$(D);if(H0){B.preventDefault(),I(v.id,"todo",{content:c,checked:H0.checked});return}}}if(B.key==="Enter"&&!B.shiftKey&&v.type!=="code"){let D=A1((m.textContent??"").trim(),"Enter");if(D){if(B.preventDefault(),Q9(v.type)&&D.type==="code"){j3(v,D);return}t1(v,D);return}B.preventDefault();let c=(m.textContent??"").trim()==="";if(Q9(v.type)&&c&&!(v.children??[]).length){I(v.id,"p");return}let{before:H0,after:L0}=t8(m);v.content=H0,j(v.id,Q9(v.type)?v.type:"p",{content:L0})}else if(B.key==="Backspace"){if((m.textContent??"")==="")if(B.preventDefault(),v.type!=="p")I(v.id,"p");else{let D=s9(q0,v.id);if(D)E(v.id),requestAnimationFrame(()=>D0(D.id,!0))}else if(!j1()&&zG(m))if(Q9(v.type))B.preventDefault(),I(v.id,"p",{content:rZ(v,m)});else{let D=s9(q0,v.id);if(D&&D.type!=="code"&&D.type!=="table"&&D.type!=="divider"){B.preventDefault();let c=t$(D.content);D.content+=rZ(v,m),E(v.id),requestAnimationFrame(()=>{let H0=document.querySelector(`.block[data-bid="${D.id}"] .editable`);if(H0){let L0=lZ(D.content);if(H0.innerHTML!==L0)H0.innerHTML=L0}D1(D.id,c)})}}}},c3=(B,v,m)=>{if(B.isComposing||B.keyCode===229)return;let{value:D,selectionStart:c,selectionEnd:H0}=m;if(B.key==="Tab"){if(B.preventDefault(),B.shiftKey){s1(v.id);return}document.execCommand("insertText",!1," ");return}if(B.key==="ArrowDown"&&c===H0&&D.indexOf(`
|
|
140
|
+
`,c)===-1){B.preventDefault();let L0=iZ(q0,v.id);if(L0)D0(L0.id);else j(v.id,"p");return}if(B.key==="ArrowUp"&&c===H0&&D.lastIndexOf(`
|
|
141
|
+
`,c-1)===-1){B.preventDefault();let L0=s9(q0,v.id);if(L0)D0(L0.id,!0);return}if(B.key==="Backspace"&&D===""){B.preventDefault();let L0=I0(q0,v.id),B0=L0?.parentBlock;if(L0&&B0&&Q9(B0.type)&&B0.content.trim()===""){if(L0.parent.splice(L0.index,1),L0.parent.length===0)delete B0.children;N0(),requestAnimationFrame(()=>D0(B0.id)),O0();return}I(v.id,"p")}},d3=(B,v)=>{B.stopPropagation();let m=A0,D=m.length>1&&m.includes(v.id),c=D?k9(q0,m).length:1,H0=D||!dZ(v.type)&&v.type!=="uploading";_0(B,(L0)=>$(r,{children:[H0&&$(r,{children:[$(h0,{children:D?`转换为(${c} 个块)`:"转换为"},void 0,!1,void 0,this),C1.filter((B0)=>B0.type!=="divider"&&!dZ(B0.type)&&(!D||B0.type!=="table")).map((B0)=>$(z0,{icon:B0.ic,label:B0.t,checked:!D&&v.type===B0.type,onClick:()=>{D?u3(m,B0.type):I(v.id,B0.type,{content:v.content}),L0()}},B0.type,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(z0,{icon:"copy",label:D?"复制块组":"复制块",onClick:()=>{if(D)ZJ(m);else{let B0=I0(q0,v.id);if(B0)B0.parent.splice(B0.index+1,0,i8(v));N0(),O0()}L0()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:D?"删除块组":"删除块",danger:!0,onClick:()=>{if(D)z6(m);else E(v.id);L0()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},W6=W0(null),i3=(B)=>{let v=B.parentElement;while(v){let m=getComputedStyle(v).overflowY;if((m==="auto"||m==="scroll")&&v.scrollHeight>v.clientHeight)return v;v=v.parentElement}return null},QJ=(B)=>{if(Y==="source"){let v=G.current,m=e.current[B];if(!v||!m)return;v.setSelectionRange(m[0],m[1]);let D=v.value.slice(0,m[0]).split(`
|
|
142
|
+
`).length-1,c=getComputedStyle(v),H0=parseFloat(c.lineHeight)||20,L0=(parseFloat(c.paddingTop)||0)+D*H0,B0=i3(v);if(B0){let m0=v.getBoundingClientRect().top-B0.getBoundingClientRect().top+B0.scrollTop;B0.scrollTo({top:Math.max(0,m0+L0-B0.clientHeight/2),behavior:"smooth"})}else{let m0=v.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,m0+L0-innerHeight/2),behavior:"smooth"})}}else{let v=J0.current,m=v[B]??null;if(l$(v,m),m){let D=m.startContainer;(D.nodeType===3?D.parentElement:D)?.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"})}}};o(()=>{if(!x){n8(),J0.current=[],e.current=[],Z0(0);return}let B={caseSensitive:x.caseSensitive,wholeWord:x.wholeWord},v=setTimeout(()=>{let m;if(Y==="source"){let c=G.current?.value??W.current;e.current=g1(c,x.term,B),J0.current=[],n8(),m=e.current.length}else{let c=Q0.current;J0.current=c?n$(c,x.term,B):[],e.current=[],m=J0.current.length}let D=m?Math.min(G0.current,m-1):0;G0.current=D,V(D),Z0(m),QJ(D)},110);return()=>clearTimeout(v)},[x,K,Y]),o(()=>()=>n8(),[]),o(()=>{let B=(v)=>{if((v.metaKey||v.ctrlKey)&&!v.altKey&&v.key.toLowerCase()==="f")v.preventDefault(),b((m)=>m??{term:"",caseSensitive:!1,wholeWord:!1}),requestAnimationFrame(()=>{let m=Q0.current?.parentElement?.querySelector(".find-bar input")??document.querySelector(".find-bar input");m?.focus(),m?.select()})};return window.addEventListener("keydown",B),()=>window.removeEventListener("keydown",B)},[]);let a3=(B)=>{let v=Y==="source"?e.current.length:J0.current.length;if(!v)return;let m=(G0.current+B+v)%v;G0.current=m,V(m),QJ(m)},n3=()=>b(null);if(U)return $("div",{class:"empty",children:"加载中…"},void 0,!1,void 0,this);let l3=new Set(A0),XJ=(B,v=0)=>{let m=d8(B.filter((D)=>!o9(D)));return B.map((D)=>$(aW,{renderKey:K,block:D,depth:v,selected:l3.has(D.id),number:D.type==="numbered"?m.get(D.id)??1:0,onInput:(c)=>a(D,c),onPaste:(c,H0)=>F0(c,D,H0),onLangInput:(c)=>{D.lang=c,N0(),O0()},onKeyDown:(c,H0)=>p3(c,D,H0),onCodeInput:(c)=>{D.content=c,c0("text:"+D.id),O0()},onCodeKeyDown:(c,H0)=>c3(c,D,H0),onCellInput:(c,H0,L0)=>{if(!D.rows?.[c])return;D.rows[c][H0]=L0,c0("table:"+D.id+":"+c+":"+H0),O0()},onTableChange:()=>{N0(),O0()},onAdd:()=>j(D.id),onMenu:(c)=>d3(c,D),onToggle:()=>{D.checked=!D.checked,N0(),O0()},onVoidChange:(c)=>X8(D.id,c),onVoidKey:(c)=>f3(c,D),onPreview:()=>b3(D),dragRef:W6,onReorder:(c,H0)=>{let L0=A0;if(L0.length>1&&L0.includes(c)?x$(q0,L0,D.id,H0):b$(q0,c,D.id,H0))N0(),O0()},children:D.children?.length?XJ(D.children,v+1):null},D.id,!1,void 0,this))};return $(r,{children:[Y==="blocks"&&$(iW,{blocks:q0},K,!1,void 0,this),x&&$(sW,{term:x.term,caseSensitive:x.caseSensitive,wholeWord:x.wholeWord,idx:u,total:i,onTerm:(B)=>{G0.current=0,b((v)=>v?{...v,term:B}:v)},onToggleCase:()=>b((B)=>B?{...B,caseSensitive:!B.caseSensitive}:B),onToggleWord:()=>b((B)=>B?{...B,wholeWord:!B.wholeWord}:B),onStep:a3,onClose:n3},void 0,!1,void 0,this),$("div",{ref:Q0,class:"doc"+(Y==="source"?" source-mode":""),onMouseDown:(B)=>E3(B),onMouseUp:()=>b1(M),onKeyUp:(B)=>{if(B.shiftKey||B.key.startsWith("Arrow"))b1(M)},onDragOver:(B)=>{if(W6.current||Y==="source")return;if(!Array.from(B.dataTransfer?.items??[]).some((m)=>m.kind==="file"))return;if(B.preventDefault(),B.dataTransfer)B.dataTransfer.dropEffect="copy";let v=e$(Q0.current,B.clientY);if(v)J3(v,B);else CZ()},onDragLeave:(B)=>{if(!B.relatedTarget||!Q0.current?.contains(B.relatedTarget))CZ()},onDrop:(B)=>{if(W6.current||Y==="source")return;let v=r$(B.dataTransfer);if(!v.length)return;B.preventDefault();let m=e$(Q0.current,B.clientY);if(m?.dataset.bid){let D=y8(m,B,"y");CZ(),k0(m.dataset.bid,D,v)}else CZ(),g0(v)},children:[n&&$("div",{class:"doc-conflict",role:"alert",children:[$("span",{class:"doc-conflict-msg",children:"文档已被其他端修改,自动保存已暂停。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>v0(),children:"载入最新(弃本地改动)"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>void T0({force:!0}),children:"用本地版本覆盖"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"doc-title",contentEditable:!0,onInput:(B)=>{q.current=B.target.textContent??"",c0("title"),O0()},onKeyDown:(B)=>{if(B.isComposing||B.keyCode===229)return;if(B.key==="Enter")if(B.preventDefault(),!q0.length)j(null);else D0(q0[0].id)},dangerouslySetInnerHTML:{__html:q.current}},void 0,!1,void 0,this),$("div",{class:"doc-meta",children:[$("span",{children:[$(g,{name:"file",cls:"ico sm"},void 0,!1,void 0,this),R1(q0)," 个块"]},void 0,!0,void 0,this),$("span",{children:"实时同步"},void 0,!1,void 0,this),H.has(Z)&&$("button",{class:"doc-shared",title:"已分享 · 管理分享",onClick:()=>A9({kind:"doc",ref:Z,title:q.current}),children:[$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),"已分享"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y==="source"?$("textarea",{ref:G,class:"doc-source",spellcheck:!1,defaultValue:W.current,onInput:(B)=>{let v=B.currentTarget;W.current=v.value,s$(v),O0()}},void 0,!1,void 0,this):XJ(q0),Y==="blocks"&&q0.length===0&&$("div",{class:"editable",style:{color:"var(--muted)",cursor:"text"},onClick:()=>j(null),children:"点此书写,或输入 “/” 选择块类型…"},void 0,!1,void 0,this),C&&z8.length>0&&(()=>{let m=innerHeight-(C.y+22)-8,D=C.y-8,c=m>=240||m>=D,H0=Math.min(C.x,innerWidth-270),L0=Math.min(c?m:D,Math.round(innerHeight*0.7)),B0=c?{left:H0,top:C.y+22,maxHeight:L0,minWidth:260}:{left:H0,bottom:innerHeight-C.y+6,maxHeight:L0,minWidth:260};return $("div",{class:"pop",style:B0,ref:h,children:[$(h0,{children:"基础块"},void 0,!1,void 0,this),z8.map((m0,K9)=>$("button",{class:"item"+(K9===C.idx?" sel":""),onMouseDown:(XZ)=>{XZ.preventDefault(),o1(m0)},children:[$("span",{class:"lico",children:$(g,{name:m0.ic,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:m0.t},void 0,!1,void 0,this),$("span",{class:"d",children:m0.d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},m0.type,!0,void 0,this))]},void 0,!0,void 0,this)})(),_&&!k&&$(eW,{x:_.x,y:_.y,onCommand:D3},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L&&$(g$,{src:L.src,name:L.name,onClose:()=>P(null),onReplace:(B)=>void g3(L.id,B)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function r$(Z){if(!Z)return[];let J=[];for(let Q=0;Q<(Z.items?.length??0);Q++){let X=Z.items[Q];if(X.kind==="file"){let z=X.getAsFile();if(z)J.push(z)}}if(!J.length)for(let Q=0;Q<(Z.files?.length??0);Q++)J.push(Z.files[Q]);return J}function aW({block:Z,number:J,depth:Q,renderKey:X,selected:z,onInput:W,onPaste:G,onLangInput:q,onKeyDown:H,onCodeInput:Y,onCodeKeyDown:F,onCellInput:K,onTableChange:N,onAdd:U,onMenu:O,onToggle:C,onVoidChange:f,onVoidKey:h,onPreview:_,dragRef:M,onReorder:k,children:T}){let L=W0(null);o(()=>{let A=L.current;if(A&&Z.type!=="code"){let y=lZ(Z.content);if(A.innerHTML!==y&&e9(A.innerHTML)!==Z.content)A.innerHTML=y}},[X,Z.type]);let P=Q9(Z.type)&&Z.content.trim()===""&&Z.children?.[0]?.type==="code",w="block b-"+Z.type+(Z.type==="todo"&&Z.checked?" b-done":"")+(P?" list-code-host":"")+(z?" selected":"");return $("div",{class:"block-wrap"+(Q?" nested":""),children:[$("div",{class:w,"data-bid":Z.id,onDragOver:(A)=>{if(M.current&&M.current!==Z.id){if(A.preventDefault(),A.dataTransfer)A.dataTransfer.dropEffect="move";J3(A.currentTarget,A)}},onDrop:(A)=>{if(M.current){A.preventDefault(),A.stopPropagation();let y=A.currentTarget.classList.contains("drop-after")?"after":"before",S=M.current;M.current=null,CZ(),k(S,y)}},children:[$("div",{class:"gutter",children:[$("button",{title:"在下方插入",onClick:U,children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"grip",title:"拖拽移动 · 点击菜单",draggable:!0,onClick:O,onDragStart:(A)=>{if(M.current=Z.id,A.dataTransfer)A.dataTransfer.effectAllowed="move",A.dataTransfer.setData("text/plain",Z.id);A.currentTarget.closest(".block").classList.add("dragging")},onDragEnd:(A)=>{A.currentTarget.closest(".block").classList.remove("dragging"),CZ()},children:$(g,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.type==="divider"?$("hr",{},void 0,!1,void 0,this):Z.type==="table"?$(oW,{block:Z,renderKey:X,onCellInput:K,onTableChange:N},void 0,!1,void 0,this):Z.type==="image"||Z.type==="video"||Z.type==="audio"||Z.type==="file"||Z.type==="html"||Z.type==="uploading"?$("div",{class:"void-host",tabindex:0,onKeyDown:(A)=>h(A),children:Z.type==="image"?$(T$,{block:Z,selected:z,onResize:(A)=>f({width:A}),onPreview:_},void 0,!1,void 0,this):Z.type==="video"?$(k$,{block:Z},void 0,!1,void 0,this):Z.type==="audio"?$(R$,{block:Z},void 0,!1,void 0,this):Z.type==="file"?$(I$,{block:Z},void 0,!1,void 0,this):Z.type==="uploading"?$(v$,{block:Z},void 0,!1,void 0,this):$(S$,{block:Z,selected:z,onChange:(A)=>f({content:A})},void 0,!1,void 0,this)},void 0,!1,void 0,this):$(r,{children:[Z.type==="bullet"&&$("div",{class:"marker",children:"•"},void 0,!1,void 0,this),Z.type==="numbered"&&$("div",{class:"marker",children:[J,"."]},void 0,!0,void 0,this),Z.type==="todo"&&$("div",{class:"marker",children:$("input",{type:"checkbox",checked:!!Z.checked,onChange:C},void 0,!1,void 0,this)},void 0,!1,void 0,this),P?null:Z.type==="code"?$(rW,{block:Z,renderKey:X,onInput:Y,onLangChange:q,onKeyDown:F},void 0,!1,void 0,this):$("div",{ref:L,class:"editable",contentEditable:!0,"data-ph":nW(Z.type),"data-ph-hint":lW(Z.type)?"slash":"kind",onInput:(A)=>W(A.currentTarget),onPaste:(A)=>G(A,A.currentTarget),onKeyDown:(A)=>H(A,A.currentTarget)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),T]},void 0,!0,void 0,this)}var Z3={h1:"标题 1",h2:"标题 2",h3:"标题 3",code:"输入代码…",quote:"引用"};function nW(Z){return Z3[Z]??"输入文本,“/” 唤出命令"}function lW(Z){return!(Z in Z3)}function rW({block:Z,renderKey:J,onInput:Q,onLangChange:X,onKeyDown:z}){let W=W0(null),G=W0(null),q=W0(null),[H,Y]=R(!1),F=(U)=>{if(G.current)G.current.innerHTML=cW(U,Z.lang);if(q.current){let C=U.split(`
|
|
143
|
+
`).length,f="1";for(let h=2;h<=C;h++)f+=`
|
|
144
|
+
`+h;q.current.textContent=f}let O=W.current;if(O)O.style.height="auto",O.style.height=O.scrollHeight+"px"};o(()=>{let U=W.current;if(U&&U.value!==Z.content)U.value=Z.content;F(Z.content)},[J,Z.lang]);let K=Z.lang??"",N=w1.some((U)=>U.id===K);return $("div",{class:"codeblock",children:[$("div",{class:"code-body",children:[$("div",{ref:q,class:"code-gutter","aria-hidden":"true",children:"1"},void 0,!1,void 0,this),$("div",{class:"code-scroll",children:[$("pre",{class:"code-hl","aria-hidden":"true",children:$("code",{ref:G,class:"hljs"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("textarea",{ref:W,class:"code-input",rows:1,spellcheck:!1,wrap:"off",placeholder:"输入代码…",onInput:(U)=>{let O=U.currentTarget;Q(O.value),F(O.value)},onKeyDown:(U)=>z(U,U.currentTarget),onScroll:(U)=>{let O=G.current?.parentElement;if(O)O.scrollLeft=U.currentTarget.scrollLeft}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"code-tools",children:[$("span",{class:"code-lang",children:[$("select",{value:K,onChange:(U)=>X(U.currentTarget.value),children:[!N&&$("option",{value:K,children:K||"纯文本"},void 0,!1,void 0,this),w1.map((U)=>$("option",{value:U.id,children:U.label},U.id,!1,void 0,this))]},void 0,!0,void 0,this),$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"code-copy"+(H?" ok":""),title:"复制代码",onClick:()=>{let U=W.current?.value??Z.content;navigator.clipboard?.writeText(U).then(()=>{Y(!0),setTimeout(()=>Y(!1),1400)}).catch(()=>{})},children:[$(g,{name:H?"check":"copy",cls:"ico sm"},void 0,!1,void 0,this),H?"已复制":"复制"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function oW({block:Z,renderKey:J,onCellInput:Q,onTableChange:X}){let z=Z.rows??[],W=z[0]?.length??0,G=Z.align??[],q=W0(null),H=W0([]);if(H.current.length!==W)H.current=Array.from({length:W},(M,k)=>H.current[k]??160);let Y=()=>{Z.rows=[...z,Array(W).fill("")],X()},F=()=>{Z.rows=z.map((M)=>[...M,""]),Z.align=[...G,null],X()},K=(M)=>{Z.rows=z.map((T)=>{let L=[...T];return L.splice(M,0,""),L});let k=[...G];k.splice(M,0,null),Z.align=k,X()},N=(M)=>{if(W<=1)return;Z.rows=z.map((k)=>k.filter((T,L)=>L!==M)),Z.align=G.filter((k,T)=>T!==M),X()},U=(M)=>{if(M===0||z.length<=2)return;Z.rows=z.filter((k,T)=>T!==M),X()},O=(M,k)=>{let T=Array.from({length:W},(L,P)=>G[P]??null);T[M]=k,Z.align=T,X()},C=(M,k)=>{let T=q.current?.querySelector(`.doc-td[data-r="${M}"][data-c="${k}"]`);if(!T)return!1;T.focus();let L=document.createRange();L.selectNodeContents(T),L.collapse(!1);let P=getSelection();return P?.removeAllRanges(),P?.addRange(L),!0},f=(M,k,T)=>{if(M.isComposing||M.keyCode===229)return;if(M.key==="Tab"){if(M.preventDefault(),M.shiftKey){if(T>0)C(k,T-1);else if(k>0)C(k-1,W-1)}else if(T<W-1)C(k,T+1);else if(k<z.length-1)C(k+1,0);else Y(),requestAnimationFrame(()=>C(z.length,0));return}if(M.key==="Enter"){if(M.preventDefault(),k<z.length-1)C(k+1,T);else Y(),requestAnimationFrame(()=>C(z.length,T));return}},h=(M,k)=>{M.preventDefault(),M.stopPropagation(),_8(M,{col:q.current?.querySelector(`col[data-tcol="${k}"]`)??null,startWidth:H.current[k]??160,min:60,onDone:(T)=>{H.current[k]=T}})},_=(M,k)=>{M.preventDefault(),M.stopPropagation(),_0(M,(T)=>$(r,{children:[$(h0,{children:"对齐方式"},void 0,!1,void 0,this),$(z0,{icon:"alignLeft",label:"左对齐",checked:(G[k]??null)===null||G[k]==="left",onClick:()=>{O(k,"left"),T()}},void 0,!1,void 0,this),$(z0,{icon:"alignCenter",label:"居中",checked:G[k]==="center",onClick:()=>{O(k,"center"),T()}},void 0,!1,void 0,this),$(z0,{icon:"alignRight",label:"右对齐",checked:G[k]==="right",onClick:()=>{O(k,"right"),T()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"在左侧插入列",onClick:()=>{K(k),T()}},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{K(k+1),T()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除列",danger:!0,onClick:()=>{N(k),T()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"doc-table-wrap",children:$("div",{class:"doc-table-scroll",children:$("div",{class:"doc-table-inner",children:[$("div",{class:"doc-table-row",children:[$("table",{ref:q,class:"doc-table",children:[$("colgroup",{children:Array.from({length:W},(M,k)=>$("col",{"data-tcol":k,style:{width:H.current[k]}},k,!1,void 0,this))},void 0,!1,void 0,this),$("tbody",{children:z.map((M,k)=>$("tr",{children:M.map((T,L)=>$("td",{class:k===0?"doc-th":void 0,children:[$(tW,{value:T,renderKey:J,r:k,c:L,align:G[L]??null,onInput:(P)=>Q(k,L,P),onKeyDown:(P)=>f(P,k,L)},void 0,!1,void 0,this),k===0&&$(r,{children:[$("button",{class:"doc-col-menu",title:"列选项",onMouseDown:(P)=>_(P,L),children:$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"doc-col-resizer",onPointerDown:(P)=>h(P,L)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L===0&&k>0&&z.length>2&&$("button",{class:"doc-row-del",title:"删除行",onMouseDown:(P)=>{P.preventDefault(),P.stopPropagation(),U(k)},children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L,!0,void 0,this))},k,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addcol",title:"新增列",onMouseDown:(M)=>{M.preventDefault(),F()},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addrow",title:"新增行",onMouseDown:(M)=>{M.preventDefault(),Y()},children:$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function tW({value:Z,renderKey:J,r:Q,c:X,align:z,onInput:W,onKeyDown:G}){let q=W0(null);return o(()=>{let H=q.current;if(H){let Y=lZ(Z);if(H.innerHTML!==Y&&e9(H.innerHTML)!==Z)H.innerHTML=Y}},[J]),$("div",{ref:q,class:"doc-td","data-r":Q,"data-c":X,contentEditable:!0,"data-ph":Q===0?"表头":"",style:z?{textAlign:z}:void 0,onInput:(H)=>W(e9(H.currentTarget.innerHTML)),onKeyDown:(H)=>G(H)},void 0,!1,void 0,this)}function sW({term:Z,caseSensitive:J,wholeWord:Q,idx:X,total:z,onTerm:W,onToggleCase:G,onToggleWord:q,onStep:H,onClose:Y}){let F=(K)=>K.preventDefault();return $("div",{class:"find-bar",role:"search",children:[$(g,{name:"search",cls:"ico sm find-ico"},void 0,!1,void 0,this),$("input",{type:"text",placeholder:"在文档中查找",value:Z,autoFocus:!0,onInput:(K)=>W(K.currentTarget.value),onKeyDown:(K)=>{if(K.key==="Enter")K.preventDefault(),H(K.shiftKey?-1:1);else if(K.key==="Escape")K.preventDefault(),Y()}},void 0,!1,void 0,this),$("span",{class:"find-count",children:z?`${X+1} / ${z}`:Z?"无结果":""},void 0,!1,void 0,this),$("button",{class:"find-opt"+(J?" on":""),title:"区分大小写",onMouseDown:F,onClick:G,children:"Aa"},void 0,!1,void 0,this),$("button",{class:"find-opt"+(Q?" on":""),title:"全词匹配",onMouseDown:F,onClick:q,children:"全词"},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"上一个 (Shift+Enter)",disabled:!z,onMouseDown:F,onClick:()=>H(-1),children:$(g,{name:"chevronDown",cls:"ico sm find-prev"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"下一个 (Enter)",disabled:!z,onMouseDown:F,onClick:()=>H(1),children:$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav find-close",title:"关闭 (Esc)",onClick:Y,children:$(g,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eW({x:Z,y:J,onCommand:Q}){let X=(z)=>(W)=>{W.preventDefault(),Q(z)};return $("div",{class:"pop",style:{left:Math.max(8,Math.min(Z,innerWidth-220)),top:J-46,minWidth:0,padding:3,display:"flex",gap:1},children:[["bold","bold"],["italic","italic"],["underline","underline"],["strikeThrough","strike"],["code","code"],["createLink","link"]].map(([z,W])=>$("button",{class:"item",style:{width:34,justifyContent:"center",padding:"7px 0"},onMouseDown:X(z),children:$(g,{name:W,cls:"ico sm"},void 0,!1,void 0,this)},z,!1,void 0,this))},void 0,!1,void 0,this)}function ZG(){let Z=getSelection();if(!Z||Z.isCollapsed)return;document.execCommand("insertHTML",!1,`<code>${nZ(Z.toString())}</code>`)}function ZZ(Z){document.querySelectorAll(".doc .block[data-bid]").forEach((J)=>JG(Z,J))}function JG(Z,J){let Q=J.matches(".block[data-bid]")?J:J.closest(".block[data-bid]"),X=Q?.getAttribute("data-bid"),z=X?I0(Z,X)?.block:null;if(!z||!Q)return;let W=Q.querySelector(".editable"),G=Q.querySelector(".code-input");if(W)z.content=rZ(z,W);else if(G)z.content=G.value}function $G(Z){return(Z instanceof HTMLElement?Z:Z.parentElement)?.closest(".block[data-bid]")??null}function o$(){return document.activeElement?.closest?.(".doc .block[data-bid]")?.getAttribute("data-bid")??null}function h1(Z){document.querySelector(".doc")?.classList.toggle("selecting",Z)}function l8(){getSelection()?.removeAllRanges(),document.activeElement?.blur?.(),h1(!0)}function b1(Z){let J=getSelection();if(!J||J.isCollapsed||!J.rangeCount)return Z(null);if(!J.anchorNode?.parentElement?.closest?.(".editable"))return Z(null);let X=J.getRangeAt(0),z=X.getBoundingClientRect(),W=z.width||z.height?z:X.getClientRects()[0];if(!W)return Z(null);Z({x:W.left,y:W.top})}function QG(Z){let J=getSelection()?.anchorNode?.parentElement?.closest?.(".editable"),X=J?.closest(".block")?.getAttribute("data-bid"),z=X?I0(Z,X)?.block:null;if(z&&J)z.content=rZ(z,J)}function rZ(Z,J){return e9(J.innerHTML)}function j1(){let Z=getSelection();return!!Z&&!Z.isCollapsed}function XG(Z){let J=getSelection();if(!J||!J.rangeCount)return 0;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return 0;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length}function r8(Z){let J=document.querySelector(`.block[data-bid="${Z}"]`),Q=document.activeElement;if(!J||!Q||!J.contains(Q))return null;if(Q instanceof HTMLTextAreaElement)return Q.selectionStart;let X=J.querySelector(".editable");return X?XG(X):null}function o8(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .code-input`);if(Q){Q.focus();let X=Math.min(J,Q.value.length);Q.setSelectionRange(X,X);return}D1(Z,J)}function zG(Z){let J=getSelection();if(!J||!J.rangeCount||!J.isCollapsed)return!1;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return!1;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length===0}function WG(){let Z=getSelection();if(!Z||!Z.rangeCount)return{x:80,y:120};let J=Z.getRangeAt(0).getBoundingClientRect();return{x:J.left||80,y:J.top||120}}function GG(Z){let J=getSelection();if(!J||!J.rangeCount)return{first:!0,last:!0};let Q=J.getRangeAt(0).getBoundingClientRect(),X=Z.getBoundingClientRect();if(!Q.height&&!Q.top)return{first:!0,last:!0};let z=parseFloat(getComputedStyle(Z).lineHeight)||Q.height||20;return{first:Q.top-X.top<z*0.5,last:X.bottom-Q.bottom<z*0.5}}function qG(Z){let J=Z.textContent??"";if(J.trim()==="")return!0;let Q=getSelection();if(!Q||!Q.rangeCount||Q.isCollapsed)return!1;if(!Z.contains(Q.anchorNode)||!Z.contains(Q.focusNode))return!1;return Q.toString().length>=J.length}function t8(Z){let J=getSelection();if(!J||!J.rangeCount||!Z.contains(J.getRangeAt(0).startContainer))return{before:e9(Z.innerHTML),after:""};let Q=J.getRangeAt(0),X=(z)=>{let W=document.createRange();W.selectNodeContents(Z),z(W);let G=document.createElement("div");return G.appendChild(W.cloneContents()),e9(G.innerHTML)};return{before:X((z)=>z.setEnd(Q.startContainer,Q.startOffset)),after:X((z)=>z.setStart(Q.endContainer,Q.endOffset))}}function t$(Z){let J=document.createElement("div");return J.innerHTML=lZ(Z),(J.textContent??"").length}function D1(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .editable`);if(!Q)return;Q.focus();let X=document.createTreeWalker(Q,NodeFilter.SHOW_TEXT),z=J,W=null;for(let H=X.nextNode();H;H=X.nextNode()){if(W=H,z<=H.data.length)break;z-=H.data.length}let G=document.createRange();if(W)G.setStart(W,Math.min(z,W.data.length));else G.selectNodeContents(Q);G.collapse(!0);let q=getSelection();q?.removeAllRanges(),q?.addRange(G)}function D0(Z,J=!1){let Q=`.block[data-bid="${Z}"] .editable, .block[data-bid="${Z}"] .code-input, .block[data-bid="${Z}"] .void-host`,X=document.querySelector(Q);if(!X)return;if(X.focus(),X.classList.contains("void-host"))return;if(X instanceof HTMLTextAreaElement){let G=J?X.value.length:0;X.setSelectionRange(G,G);return}let z=document.createRange();z.selectNodeContents(X),z.collapse(!J);let W=getSelection();W?.removeAllRanges(),W?.addRange(z)}function s$(Z){Z.style.height="auto",Z.style.height=Z.scrollHeight+"px"}var CZ=O9;function J3(Z,J){y8(Z,J,"y")}function e$(Z,J){if(!Z)return null;let Q=Array.from(Z.querySelectorAll(":scope > .block-wrap > .block")),X=null,z=1/0;for(let W of Q){let G=W.getBoundingClientRect();if(J>=G.top&&J<=G.bottom)return W;let q=J<G.top?G.top-J:J-G.bottom;if(q<z)z=q,X=W}return X}var MZ=function(Z,J){let z=Z,W=oZ[J],G=null,q=0,H=null,Y=[],F={},K=function(P,w){if(q=z*4+17,G=function(A){let y=Array(A);for(let S=0;S<A;S+=1){y[S]=Array(A);for(let p=0;p<A;p+=1)y[S][p]=null}return y}(q),N(0,0),N(q-7,0),N(0,q-7),C(),O(),h(P,w),z>=7)f(P);if(H==null)H=k(z,W,Y);_(H,w)},N=function(P,w){for(let A=-1;A<=7;A+=1){if(P+A<=-1||q<=P+A)continue;for(let y=-1;y<=7;y+=1){if(w+y<=-1||q<=w+y)continue;if(0<=A&&A<=6&&(y==0||y==6)||0<=y&&y<=6&&(A==0||A==6)||2<=A&&A<=4&&2<=y&&y<=4)G[P+A][w+y]=!0;else G[P+A][w+y]=!1}}},U=function(){let P=0,w=0;for(let A=0;A<8;A+=1){K(!0,A);let y=j9.getLostPoint(F);if(A==0||P>y)P=y,w=A}return w},O=function(){for(let P=8;P<q-8;P+=1){if(G[P][6]!=null)continue;G[P][6]=P%2==0}for(let P=8;P<q-8;P+=1){if(G[6][P]!=null)continue;G[6][P]=P%2==0}},C=function(){let P=j9.getPatternPosition(z);for(let w=0;w<P.length;w+=1)for(let A=0;A<P.length;A+=1){let y=P[w],S=P[A];if(G[y][S]!=null)continue;for(let p=-2;p<=2;p+=1)for(let n=-2;n<=2;n+=1)if(p==-2||p==2||n==-2||n==2||p==0&&n==0)G[y+p][S+n]=!0;else G[y+p][S+n]=!1}},f=function(P){let w=j9.getBCHTypeNumber(z);for(let A=0;A<18;A+=1){let y=!P&&(w>>A&1)==1;G[Math.floor(A/3)][A%3+q-8-3]=y}for(let A=0;A<18;A+=1){let y=!P&&(w>>A&1)==1;G[A%3+q-8-3][Math.floor(A/3)]=y}},h=function(P,w){let A=W<<3|w,y=j9.getBCHTypeInfo(A);for(let S=0;S<15;S+=1){let p=!P&&(y>>S&1)==1;if(S<6)G[S][8]=p;else if(S<8)G[S+1][8]=p;else G[q-15+S][8]=p}for(let S=0;S<15;S+=1){let p=!P&&(y>>S&1)==1;if(S<8)G[8][q-S-1]=p;else if(S<9)G[8][15-S-1+1]=p;else G[8][15-S-1]=p}G[q-8][8]=!P},_=function(P,w){let A=-1,y=q-1,S=7,p=0,n=j9.getMaskFunction(w);for(let $0=q-1;$0>0;$0-=2){if($0==6)$0-=1;while(!0){for(let Q0=0;Q0<2;Q0+=1)if(G[y][$0-Q0]==null){let x=!1;if(p<P.length)x=(P[p]>>>S&1)==1;if(n(y,$0-Q0))x=!x;if(G[y][$0-Q0]=x,S-=1,S==-1)p+=1,S=7}if(y+=A,y<0||q<=y){y-=A,A=-A;break}}}},M=function(P,w){let A=0,y=0,S=0,p=Array(w.length),n=Array(w.length);for(let b=0;b<w.length;b+=1){let u=w[b].dataCount,V=w[b].totalCount-u;y=Math.max(y,u),S=Math.max(S,V),p[b]=Array(u);for(let J0=0;J0<p[b].length;J0+=1)p[b][J0]=255&P.getBuffer()[J0+A];A+=u;let i=j9.getErrorCorrectPolynomial(V),G0=tZ(p[b],i.getLength()-1).mod(i);n[b]=Array(i.getLength()-1);for(let J0=0;J0<n[b].length;J0+=1){let e=J0+G0.getLength()-n[b].length;n[b][J0]=e>=0?G0.getAt(e):0}}let $0=0;for(let b=0;b<w.length;b+=1)$0+=w[b].totalCount;let Q0=Array($0),x=0;for(let b=0;b<y;b+=1)for(let u=0;u<w.length;u+=1)if(b<p[u].length)Q0[x]=p[u][b],x+=1;for(let b=0;b<S;b+=1)for(let u=0;u<w.length;u+=1)if(b<n[u].length)Q0[x]=n[u][b],x+=1;return Q0},k=function(P,w,A){let y=$3.getRSBlocks(P,w),S=Q3();for(let n=0;n<A.length;n+=1){let $0=A[n];S.put($0.getMode(),4),S.put($0.getLength(),j9.getLengthInBits($0.getMode(),P)),$0.write(S)}let p=0;for(let n=0;n<y.length;n+=1)p+=y[n].dataCount;if(S.getLengthInBits()>p*8)throw"code length overflow. ("+S.getLengthInBits()+">"+p*8+")";if(S.getLengthInBits()+4<=p*8)S.put(0,4);while(S.getLengthInBits()%8!=0)S.putBit(!1);while(!0){if(S.getLengthInBits()>=p*8)break;if(S.put(236,8),S.getLengthInBits()>=p*8)break;S.put(17,8)}return M(S,y)};F.addData=function(P,w){w=w||"Byte";let A=null;switch(w){case"Numeric":A=HG(P);break;case"Alphanumeric":A=YG(P);break;case"Byte":A=KG(P);break;case"Kanji":A=FG(P);break;default:throw"mode:"+w}Y.push(A),H=null},F.isDark=function(P,w){if(P<0||q<=P||w<0||q<=w)throw P+","+w;return G[P][w]},F.getModuleCount=function(){return q},F.make=function(){if(z<1){let P=1;for(;P<40;P++){let w=$3.getRSBlocks(P,W),A=Q3();for(let S=0;S<Y.length;S++){let p=Y[S];A.put(p.getMode(),4),A.put(p.getLength(),j9.getLengthInBits(p.getMode(),P)),p.write(A)}let y=0;for(let S=0;S<w.length;S++)y+=w[S].dataCount;if(A.getLengthInBits()<=y*8)break}z=P}K(!1,U())},F.createTableTag=function(P,w){P=P||2,w=typeof w>"u"?P*4:w;let A="";A+='<table style="',A+=" border-width: 0px; border-style: none;",A+=" border-collapse: collapse;",A+=" padding: 0px; margin: "+w+"px;",A+='">',A+="<tbody>";for(let y=0;y<F.getModuleCount();y+=1){A+="<tr>";for(let S=0;S<F.getModuleCount();S+=1)A+='<td style="',A+=" border-width: 0px; border-style: none;",A+=" border-collapse: collapse;",A+=" padding: 0px; margin: 0px;",A+=" width: "+P+"px;",A+=" height: "+P+"px;",A+=" background-color: ",A+=F.isDark(y,S)?"#000000":"#ffffff",A+=";",A+='"/>';A+="</tr>"}return A+="</tbody>",A+="</table>",A},F.createSvgTag=function(P,w,A,y){let S={};if(typeof arguments[0]=="object")S=arguments[0],P=S.cellSize,w=S.margin,A=S.alt,y=S.title;P=P||2,w=typeof w>"u"?P*4:w,A=typeof A==="string"?{text:A}:A||{},A.text=A.text||null,A.id=A.text?A.id||"qrcode-description":null,y=typeof y==="string"?{text:y}:y||{},y.text=y.text||null,y.id=y.text?y.id||"qrcode-title":null;let p=F.getModuleCount()*P+w*2,n,$0,Q0,x,b="",u;u="l"+P+",0 0,"+P+" -"+P+",0 0,-"+P+"z ",b+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',b+=!S.scalable?' width="'+p+'px" height="'+p+'px"':"",b+=' viewBox="0 0 '+p+" "+p+'" ',b+=' preserveAspectRatio="xMinYMin meet"',b+=y.text||A.text?' role="img" aria-labelledby="'+T([y.id,A.id].join(" ").trim())+'"':"",b+=">",b+=y.text?'<title id="'+T(y.id)+'">'+T(y.text)+"</title>":"",b+=A.text?'<description id="'+T(A.id)+'">'+T(A.text)+"</description>":"",b+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',b+='<path d="';for(Q0=0;Q0<F.getModuleCount();Q0+=1){x=Q0*P+w;for(n=0;n<F.getModuleCount();n+=1)if(F.isDark(Q0,n))$0=n*P+w,b+="M"+$0+","+x+u}return b+='" stroke="transparent" fill="black"/>',b+="</svg>",b},F.createDataURL=function(P,w){P=P||2,w=typeof w>"u"?P*4:w;let A=F.getModuleCount()*P+w*2,y=w,S=A-w;return BG(A,A,function(p,n){if(y<=p&&p<S&&y<=n&&n<S){let $0=Math.floor((p-y)/P),Q0=Math.floor((n-y)/P);return F.isDark(Q0,$0)?0:1}else return 1})},F.createImgTag=function(P,w,A){P=P||2,w=typeof w>"u"?P*4:w;let y=F.getModuleCount()*P+w*2,S="";if(S+="<img",S+=' src="',S+=F.createDataURL(P,w),S+='"',S+=' width="',S+=y,S+='"',S+=' height="',S+=y,S+='"',A)S+=' alt="',S+=T(A),S+='"';return S+="/>",S};let T=function(P){let w="";for(let A=0;A<P.length;A+=1){let y=P.charAt(A);switch(y){case"<":w+="<";break;case">":w+=">";break;case"&":w+="&";break;case'"':w+=""";break;default:w+=y;break}}return w},L=function(P){P=typeof P>"u"?2:P;let A=F.getModuleCount()*1+P*2,y=P,S=A-P,p,n,$0,Q0,x,b={"██":"█","█ ":"▀"," █":"▄"," ":" "},u={"██":"▀","█ ":"▀"," █":" "," ":" "},V="";for(p=0;p<A;p+=2){$0=Math.floor((p-y)/1),Q0=Math.floor((p+1-y)/1);for(n=0;n<A;n+=1){if(x="█",y<=n&&n<S&&y<=p&&p<S&&F.isDark($0,Math.floor((n-y)/1)))x=" ";if(y<=n&&n<S&&y<=p+1&&p+1<S&&F.isDark(Q0,Math.floor((n-y)/1)))x+=" ";else x+="█";V+=P<1&&p+1>=S?u[x]:b[x]}V+=`
|
|
145
|
+
`}if(A%2&&P>0)return V.substring(0,V.length-A-1)+Array(A+1).join("▀");return V.substring(0,V.length-1)};return F.createASCII=function(P,w){if(P=P||1,P<2)return L(w);P-=1,w=typeof w>"u"?P*2:w;let A=F.getModuleCount()*P+w*2,y=w,S=A-w,p,n,$0,Q0,x=Array(P+1).join("██"),b=Array(P+1).join(" "),u="",V="";for(p=0;p<A;p+=1){$0=Math.floor((p-y)/P),V="";for(n=0;n<A;n+=1){if(Q0=1,y<=n&&n<S&&y<=p&&p<S&&F.isDark($0,Math.floor((n-y)/P)))Q0=0;V+=Q0?x:b}for($0=0;$0<P;$0+=1)u+=V+`
|
|
146
|
+
`}return u.substring(0,u.length-1)},F.renderTo2dContext=function(P,w){w=w||2;let A=F.getModuleCount();for(let y=0;y<A;y++)for(let S=0;S<A;S++)P.fillStyle=F.isDark(y,S)?"black":"white",P.fillRect(S*w,y*w,w,w)},F};MZ.stringToBytes=function(Z){let J=[];for(let Q=0;Q<Z.length;Q+=1){let X=Z.charCodeAt(Q);J.push(X&255)}return J};MZ.createStringToBytes=function(Z,J){let Q=function(){let z=LG(Z),W=function(){let H=z.read();if(H==-1)throw"eof";return H},G=0,q={};while(!0){let H=z.read();if(H==-1)break;let Y=W(),F=W(),K=W(),N=String.fromCharCode(H<<8|Y),U=F<<8|K;q[N]=U,G+=1}if(G!=J)throw G+" != "+J;return q}(),X=63;return function(z){let W=[];for(let G=0;G<z.length;G+=1){let q=z.charCodeAt(G);if(q<128)W.push(q);else{let H=Q[z.charAt(G)];if(typeof H=="number")if((H&255)==H)W.push(H);else W.push(H>>>8),W.push(H&255);else W.push(63)}}return W}};var s0={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},oZ={L:1,M:0,Q:3,H:2},b9={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},j9=function(){let Z=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],J=1335,Q=7973,X=21522,z={},W=function(G){let q=0;while(G!=0)q+=1,G>>>=1;return q};return z.getBCHTypeInfo=function(G){let q=G<<10;while(W(q)-W(1335)>=0)q^=1335<<W(q)-W(1335);return(G<<10|q)^21522},z.getBCHTypeNumber=function(G){let q=G<<12;while(W(q)-W(7973)>=0)q^=7973<<W(q)-W(7973);return G<<12|q},z.getPatternPosition=function(G){return Z[G-1]},z.getMaskFunction=function(G){switch(G){case b9.PATTERN000:return function(q,H){return(q+H)%2==0};case b9.PATTERN001:return function(q,H){return q%2==0};case b9.PATTERN010:return function(q,H){return H%3==0};case b9.PATTERN011:return function(q,H){return(q+H)%3==0};case b9.PATTERN100:return function(q,H){return(Math.floor(q/2)+Math.floor(H/3))%2==0};case b9.PATTERN101:return function(q,H){return q*H%2+q*H%3==0};case b9.PATTERN110:return function(q,H){return(q*H%2+q*H%3)%2==0};case b9.PATTERN111:return function(q,H){return(q*H%3+(q+H)%2)%2==0};default:throw"bad maskPattern:"+G}},z.getErrorCorrectPolynomial=function(G){let q=tZ([1],0);for(let H=0;H<G;H+=1)q=q.multiply(tZ([1,h9.gexp(H)],0));return q},z.getLengthInBits=function(G,q){if(1<=q&&q<10)switch(G){case s0.MODE_NUMBER:return 10;case s0.MODE_ALPHA_NUM:return 9;case s0.MODE_8BIT_BYTE:return 8;case s0.MODE_KANJI:return 8;default:throw"mode:"+G}else if(q<27)switch(G){case s0.MODE_NUMBER:return 12;case s0.MODE_ALPHA_NUM:return 11;case s0.MODE_8BIT_BYTE:return 16;case s0.MODE_KANJI:return 10;default:throw"mode:"+G}else if(q<41)switch(G){case s0.MODE_NUMBER:return 14;case s0.MODE_ALPHA_NUM:return 13;case s0.MODE_8BIT_BYTE:return 16;case s0.MODE_KANJI:return 12;default:throw"mode:"+G}else throw"type:"+q},z.getLostPoint=function(G){let q=G.getModuleCount(),H=0;for(let K=0;K<q;K+=1)for(let N=0;N<q;N+=1){let U=0,O=G.isDark(K,N);for(let C=-1;C<=1;C+=1){if(K+C<0||q<=K+C)continue;for(let f=-1;f<=1;f+=1){if(N+f<0||q<=N+f)continue;if(C==0&&f==0)continue;if(O==G.isDark(K+C,N+f))U+=1}}if(U>5)H+=3+U-5}for(let K=0;K<q-1;K+=1)for(let N=0;N<q-1;N+=1){let U=0;if(G.isDark(K,N))U+=1;if(G.isDark(K+1,N))U+=1;if(G.isDark(K,N+1))U+=1;if(G.isDark(K+1,N+1))U+=1;if(U==0||U==4)H+=3}for(let K=0;K<q;K+=1)for(let N=0;N<q-6;N+=1)if(G.isDark(K,N)&&!G.isDark(K,N+1)&&G.isDark(K,N+2)&&G.isDark(K,N+3)&&G.isDark(K,N+4)&&!G.isDark(K,N+5)&&G.isDark(K,N+6))H+=40;for(let K=0;K<q;K+=1)for(let N=0;N<q-6;N+=1)if(G.isDark(N,K)&&!G.isDark(N+1,K)&&G.isDark(N+2,K)&&G.isDark(N+3,K)&&G.isDark(N+4,K)&&!G.isDark(N+5,K)&&G.isDark(N+6,K))H+=40;let Y=0;for(let K=0;K<q;K+=1)for(let N=0;N<q;N+=1)if(G.isDark(N,K))Y+=1;let F=Math.abs(100*Y/q/q-50)/5;return H+=F*10,H},z}(),h9=function(){let Z=Array(256),J=Array(256);for(let X=0;X<8;X+=1)Z[X]=1<<X;for(let X=8;X<256;X+=1)Z[X]=Z[X-4]^Z[X-5]^Z[X-6]^Z[X-8];for(let X=0;X<255;X+=1)J[Z[X]]=X;let Q={};return Q.glog=function(X){if(X<1)throw"glog("+X+")";return J[X]},Q.gexp=function(X){while(X<0)X+=255;while(X>=256)X-=255;return Z[X]},Q}(),tZ=function(Z,J){if(typeof Z.length>"u")throw Z.length+"/"+J;let Q=function(){let z=0;while(z<Z.length&&Z[z]==0)z+=1;let W=Array(Z.length-z+J);for(let G=0;G<Z.length-z;G+=1)W[G]=Z[G+z];return W}(),X={};return X.getAt=function(z){return Q[z]},X.getLength=function(){return Q.length},X.multiply=function(z){let W=Array(X.getLength()+z.getLength()-1);for(let G=0;G<X.getLength();G+=1)for(let q=0;q<z.getLength();q+=1)W[G+q]^=h9.gexp(h9.glog(X.getAt(G))+h9.glog(z.getAt(q)));return tZ(W,0)},X.mod=function(z){if(X.getLength()-z.getLength()<0)return X;let W=h9.glog(X.getAt(0))-h9.glog(z.getAt(0)),G=Array(X.getLength());for(let q=0;q<X.getLength();q+=1)G[q]=X.getAt(q);for(let q=0;q<z.getLength();q+=1)G[q]^=h9.gexp(h9.glog(z.getAt(q))+W);return tZ(G,0).mod(z)},X},$3=function(){let Z=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],J=function(z,W){let G={};return G.totalCount=z,G.dataCount=W,G},Q={},X=function(z,W){switch(W){case oZ.L:return Z[(z-1)*4+0];case oZ.M:return Z[(z-1)*4+1];case oZ.Q:return Z[(z-1)*4+2];case oZ.H:return Z[(z-1)*4+3];default:return}};return Q.getRSBlocks=function(z,W){let G=X(z,W);if(typeof G>"u")throw"bad rs block @ typeNumber:"+z+"/errorCorrectionLevel:"+W;let q=G.length/3,H=[];for(let Y=0;Y<q;Y+=1){let F=G[Y*3+0],K=G[Y*3+1],N=G[Y*3+2];for(let U=0;U<F;U+=1)H.push(J(K,N))}return H},Q}(),Q3=function(){let Z=[],J=0,Q={};return Q.getBuffer=function(){return Z},Q.getAt=function(X){let z=Math.floor(X/8);return(Z[z]>>>7-X%8&1)==1},Q.put=function(X,z){for(let W=0;W<z;W+=1)Q.putBit((X>>>z-W-1&1)==1)},Q.getLengthInBits=function(){return J},Q.putBit=function(X){let z=Math.floor(J/8);if(Z.length<=z)Z.push(0);if(X)Z[z]|=128>>>J%8;J+=1},Q},HG=function(Z){let J=s0.MODE_NUMBER,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(G){return Q.length},X.write=function(G){let q=Q,H=0;while(H+2<q.length)G.put(z(q.substring(H,H+3)),10),H+=3;if(H<q.length){if(q.length-H==1)G.put(z(q.substring(H,H+1)),4);else if(q.length-H==2)G.put(z(q.substring(H,H+2)),7)}};let z=function(G){let q=0;for(let H=0;H<G.length;H+=1)q=q*10+W(G.charAt(H));return q},W=function(G){if("0"<=G&&G<="9")return G.charCodeAt(0)-48;throw"illegal char :"+G};return X},YG=function(Z){let J=s0.MODE_ALPHA_NUM,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(W){return Q.length},X.write=function(W){let G=Q,q=0;while(q+1<G.length)W.put(z(G.charAt(q))*45+z(G.charAt(q+1)),11),q+=2;if(q<G.length)W.put(z(G.charAt(q)),6)};let z=function(W){if("0"<=W&&W<="9")return W.charCodeAt(0)-48;else if("A"<=W&&W<="Z")return W.charCodeAt(0)-65+10;else switch(W){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+W}};return X},KG=function(Z){let J=s0.MODE_8BIT_BYTE,Q=Z,X=MZ.stringToBytes(Z),z={};return z.getMode=function(){return J},z.getLength=function(W){return X.length},z.write=function(W){for(let G=0;G<X.length;G+=1)W.put(X[G],8)},z},FG=function(Z){let J=s0.MODE_KANJI,Q=Z,X=MZ.stringToBytes;(function(G,q){let H=X(G);if(H.length!=2||(H[0]<<8|H[1])!=q)throw"sjis not supported."})("友",38726);let z=X(Z),W={};return W.getMode=function(){return J},W.getLength=function(G){return~~(z.length/2)},W.write=function(G){let q=z,H=0;while(H+1<q.length){let Y=(255&q[H])<<8|255&q[H+1];if(33088<=Y&&Y<=40956)Y-=33088;else if(57408<=Y&&Y<=60351)Y-=49472;else throw"illegal char at "+(H+1)+"/"+Y;Y=(Y>>>8&255)*192+(Y&255),G.put(Y,13),H+=2}if(H<q.length)throw"illegal char at "+(H+1)},W},X3=function(){let Z=[],J={};return J.writeByte=function(Q){Z.push(Q&255)},J.writeShort=function(Q){J.writeByte(Q),J.writeByte(Q>>>8)},J.writeBytes=function(Q,X,z){X=X||0,z=z||Q.length;for(let W=0;W<z;W+=1)J.writeByte(Q[W+X])},J.writeString=function(Q){for(let X=0;X<Q.length;X+=1)J.writeByte(Q.charCodeAt(X))},J.toByteArray=function(){return Z},J.toString=function(){let Q="";Q+="[";for(let X=0;X<Z.length;X+=1){if(X>0)Q+=",";Q+=Z[X]}return Q+="]",Q},J},UG=function(){let Z=0,J=0,Q=0,X="",z={},W=function(q){X+=String.fromCharCode(G(q&63))},G=function(q){if(q<0)throw"n:"+q;else if(q<26)return 65+q;else if(q<52)return 97+(q-26);else if(q<62)return 48+(q-52);else if(q==62)return 43;else if(q==63)return 47;else throw"n:"+q};return z.writeByte=function(q){Z=Z<<8|q&255,J+=8,Q+=1;while(J>=6)W(Z>>>J-6),J-=6},z.flush=function(){if(J>0)W(Z<<6-J),Z=0,J=0;if(Q%3!=0){let q=3-Q%3;for(let H=0;H<q;H+=1)X+="="}},z.toString=function(){return X},z},LG=function(Z){let J=Z,Q=0,X=0,z=0,W={};W.read=function(){while(z<8){if(Q>=J.length){if(z==0)return-1;throw"unexpected end of file./"+z}let H=J.charAt(Q);if(Q+=1,H=="=")return z=0,-1;else if(H.match(/^\s$/))continue;X=X<<6|G(H.charCodeAt(0)),z+=6}let q=X>>>z-8&255;return z-=8,q};let G=function(q){if(65<=q&&q<=90)return q-65;else if(97<=q&&q<=122)return q-97+26;else if(48<=q&&q<=57)return q-48+52;else if(q==43)return 62;else if(q==47)return 63;else throw"c:"+q};return W},PG=function(Z,J){let Q=Z,X=J,z=Array(Z*J),W={};W.setPixel=function(Y,F,K){z[F*Q+Y]=K},W.write=function(Y){Y.writeString("GIF87a"),Y.writeShort(Q),Y.writeShort(X),Y.writeByte(128),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(255),Y.writeByte(255),Y.writeByte(255),Y.writeString(","),Y.writeShort(0),Y.writeShort(0),Y.writeShort(Q),Y.writeShort(X),Y.writeByte(0);let F=2,K=q(F);Y.writeByte(F);let N=0;while(K.length-N>255)Y.writeByte(255),Y.writeBytes(K,N,255),N+=255;Y.writeByte(K.length-N),Y.writeBytes(K,N,K.length-N),Y.writeByte(0),Y.writeString(";")};let G=function(Y){let F=Y,K=0,N=0,U={};return U.write=function(O,C){if(O>>>C!=0)throw"length over";while(K+C>=8)F.writeByte(255&(O<<K|N)),C-=8-K,O>>>=8-K,N=0,K=0;N=O<<K|N,K=K+C},U.flush=function(){if(K>0)F.writeByte(N)},U},q=function(Y){let F=1<<Y,K=(1<<Y)+1,N=Y+1,U=H();for(let _=0;_<F;_+=1)U.add(String.fromCharCode(_));U.add(String.fromCharCode(F)),U.add(String.fromCharCode(K));let O=X3(),C=G(O);C.write(F,N);let f=0,h=String.fromCharCode(z[f]);f+=1;while(f<z.length){let _=String.fromCharCode(z[f]);if(f+=1,U.contains(h+_))h=h+_;else{if(C.write(U.indexOf(h),N),U.size()<4095){if(U.size()==1<<N)N+=1;U.add(h+_)}h=_}}return C.write(U.indexOf(h),N),C.write(K,N),C.flush(),O.toByteArray()},H=function(){let Y={},F=0,K={};return K.add=function(N){if(K.contains(N))throw"dup key:"+N;Y[N]=F,F+=1},K.size=function(){return F},K.indexOf=function(N){return Y[N]},K.contains=function(N){return typeof Y[N]<"u"},K};return W},BG=function(Z,J,Q){let X=PG(Z,J);for(let q=0;q<J;q+=1)for(let H=0;H<Z;H+=1)X.setPixel(H,q,Q(H,q));let z=X3();X.write(z);let W=UG(),G=z.toByteArray();for(let q=0;q<G.length;q+=1)W.writeByte(G[q]);return W.flush(),"data:image/gif;base64,"+W},z3=MZ,gK=MZ.stringToBytes;function x1(){let Z=localStorage.getItem("mh-theme");return Z==="light"||Z==="dark"||Z==="system"?Z:"system"}function m1(){let Z=x1(),J=Z==="dark"||Z!=="light"&&matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.resolved=J?"dark":"light"}function W3(Z){localStorage.setItem("mh-theme",Z),m1(),e8()}function e8(){let Z=document.getElementById("theme-color-meta");if(!Z)return;let J=document.body.classList.contains("mobile")&&!document.body.classList.contains("mobile-content"),Q=getComputedStyle(document.documentElement).getPropertyValue(J?"--sidebar":"--bg").trim();if(Q)Z.setAttribute("content",Q)}var u1="__MH_WEBUI_VERSION__".startsWith("__MH_")?null:"__MH_WEBUI_VERSION__";function JZ(Z,J){let Q=Z.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0),X=J.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0);for(let z=0;z<Math.max(Q.length,X.length);z++){let W=(Q[z]??0)-(X[z]??0);if(W!==0)return W}return 0}function OG(Z){if(Z.kind==="local")return{title:"Blob 管理",subtitle:"已下载到这台设备的图片和大文件。清理只删本机副本,需要时从云端重新取回;桶里的原件始终不动。",deleteSemantics:"evict",list:async()=>{let[J,Q]=await Promise.all([tJ(),b0("blobRefs").catch(()=>[])]),X=new Set(Q);return J.map((z)=>({hash:z.hash,size:z.size,contentType:z.content_type,lastAccess:z.accessed,pinned:z.pinned,pending:z.pending,clearable:!z.pinned&&!z.pending,referenced:X.has(z.hash)}))},clear:(J)=>_6(J),remove:(J)=>sJ(J),pin:async(J,Q)=>{await nJ(J,Q)}};return{title:"Blob 管理",subtitle:"图片和大文件的本机副本。可清理项随时能腾空间(用时自动取回);没被任何文档或站点引用的孤儿可彻底删除。",deleteSemantics:"purge",list:()=>d.blobs(),clear:(J)=>d.clearBlobs(J),remove:(J)=>d.deleteBlobs(J),pin:async(J,Q)=>{await d.pinBlob(J,Q)}}}function p1(Z){z9($(yG,{source:OG(Z)},void 0,!1,void 0,this))}function $Z(Z){if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(1)} KB`;if(Z<1073741824)return`${(Z/1024/1024).toFixed(1)} MB`;return`${(Z/1024/1024/1024).toFixed(2)} GB`}function AG(Z){if(!Z)return"—";let J=Math.max(0,Math.round((Date.now()-Z)/1000));if(J<60)return"刚刚";let Q=Math.round(J/60);if(Q<60)return`${Q} 分钟前`;let X=Math.round(Q/60);if(X<24)return`${X} 小时前`;return`${Math.round(X/24)} 天前`}var Z6={image:"图片",video:"视频",audio:"音频",file:"文件",other:"其他"},NG={image:"image",video:"video",audio:"audio",file:"file",other:"file"};function sZ(Z){if(!Z)return"other";let J=Z.toLowerCase();if(J.startsWith("image/"))return"image";if(J.startsWith("video/"))return"video";if(J.startsWith("audio/"))return"audio";if(J.startsWith("application/")||J.startsWith("text/"))return"file";return"other"}function wG(Z){if(Z.pending)return"pending";if(Z.pinned)return"pinned";if(!Z.referenced)return"orphan";if(Z.clearable)return"clearable";return"retained"}var CG={pending:"待上传",pinned:"已固定",orphan:"孤儿",clearable:"可清理",retained:"保留"},E1={size:"大小",type:"类型",access:"最近使用"},G3=[{key:"all",label:"全部类型"},{key:"image",label:"图片"},{key:"video",label:"视频"},{key:"audio",label:"音频"},{key:"file",label:"文件"},{key:"other",label:"其他"}],q3=[{key:"all",label:"全部状态"},{key:"clearable",label:"可清理"},{key:"retained",label:"保留中"},{key:"pinned",label:"已固定"},{key:"pending",label:"待上传"},{key:"orphan",label:"孤儿"}];function MG({row:Z}){let J=sZ(Z.contentType),[Q,X]=R(!1);if(J==="image"&&!Q)return $("img",{class:"blob-mgr-thumb",src:`/blob/${Z.hash}`,loading:"lazy",alt:"",onError:()=>X(!0)},void 0,!1,void 0,this);return $("span",{class:"blob-mgr-ico",children:$(g,{name:NG[J],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function yG({source:Z}){let[J,Q]=R(null),[X,z]=R(null),[W,G]=R(!1),[q,H]=R(""),[Y,F]=R("all"),[K,N]=R("all"),[U,O]=R({key:"size",desc:!0}),[C,f]=R(new Set),h=async()=>{try{let V=await Z.list();Q(V),z(null),f((i)=>new Set([...i].filter((Z0)=>V.some((G0)=>G0.hash===Z0))))}catch(V){z(V.message)}};o(()=>{h()},[]);let _=(V,i)=>{if(i==="all")return!0;if(i==="clearable")return V.clearable&&!V.pinned;if(i==="retained")return!V.clearable&&!V.pending&&V.referenced;if(i==="pinned")return V.pinned;if(i==="pending")return V.pending;if(i==="orphan")return!V.referenced;return!0},M=M9(()=>{let V=q.trim().toLowerCase(),i=(J??[]).filter((G0)=>{let J0=sZ(G0.contentType);if(Y!=="all"&&J0!==Y)return!1;if(!_(G0,K))return!1;if(V){if(!`${G0.hash} ${G0.contentType??""} ${Z6[J0]}`.toLowerCase().includes(V))return!1}return!0}),Z0=U.desc?-1:1;return[...i].sort((G0,J0)=>{let e=0;if(U.key==="size")e=G0.size-J0.size;else if(U.key==="access")e=(G0.lastAccess??0)-(J0.lastAccess??0);else e=Z6[sZ(G0.contentType)].localeCompare(Z6[sZ(J0.contentType)],"zh")||G0.size-J0.size;return Z0*e})},[J,q,Y,K,U]),k=(V)=>f((i)=>{let Z0=new Set(i);if(Z0.has(V))Z0.delete(V);else Z0.add(V);return Z0}),T=M.length>0&&M.every((V)=>C.has(V.hash)),L=()=>f((V)=>{if(M.every((i)=>V.has(i.hash))){let i=new Set(V);for(let Z0 of M)i.delete(Z0.hash);return i}return new Set([...V,...M.map((i)=>i.hash)])}),P=(J??[]).filter((V)=>C.has(V.hash)),w=P.filter((V)=>V.clearable&&!V.pinned),A=P.filter((V)=>!V.referenced),y=P.reduce((V,i)=>V+i.size,0),S=async(V)=>{G(!0);try{await Z.pin(V.hash,!V.pinned),await h()}catch(i){s(i.message)}finally{G(!1)}},p=async()=>{let V=w.map((i)=>i.hash);if(!V.length)return;G(!0);try{let i=await Z.clear(V);s(i.cleared?`已清理 ${i.cleared} 项 · 腾出 ${$Z(i.freedBytes)}`:"没有可清理的项"),await h()}catch(i){s(i.message)}finally{G(!1)}},n=async()=>{let V=A;if(!V.length)return;let i=V.reduce((J0,e)=>J0+e.size,0),Z0=Z.deleteSemantics==="evict";if(!await R0({title:"删除孤儿 blob",message:Z0?`将从这台设备移除 ${V.length} 个未被任何文档/站点引用的 blob,约 ${$Z(i)}。桶里的原件不动,需要时仍可重新下载。`:`将永久删除 ${V.length} 个未被任何文档/站点引用的 blob,约 ${$Z(i)}。此操作不可恢复。`,confirmLabel:"删除",danger:!0}))return;G(!0);try{let J0=await Z.remove(V.map((e)=>e.hash));s(J0.removed?`已删除 ${J0.removed} 项 · 腾出 ${$Z(J0.freedBytes)}`:"没有可删除的孤儿"),await h()}catch(J0){s(J0.message)}finally{G(!1)}},$0=(V)=>_0(V,(i)=>$(r,{children:[$(h0,{children:"排序依据"},void 0,!1,void 0,this),Object.keys(E1).map((Z0)=>$(z0,{label:E1[Z0]+(U.key===Z0?U.desc?" ↓":" ↑":""),checked:U.key===Z0,onClick:()=>{O((G0)=>({key:Z0,desc:G0.key===Z0?!G0.desc:!0})),i()}},Z0,!1,void 0,this))]},void 0,!0,void 0,this)),Q0=(V)=>_0(V,(i)=>$(r,{children:[$(h0,{children:"按类型"},void 0,!1,void 0,this),G3.map((Z0)=>$(z0,{label:Z0.label,checked:Y===Z0.key,onClick:()=>{F(Z0.key),i()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),x=(V)=>_0(V,(i)=>$(r,{children:[$(h0,{children:"按状态"},void 0,!1,void 0,this),q3.map((Z0)=>$(z0,{label:Z0.label,checked:K===Z0.key,onClick:()=>{N(Z0.key),i()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),b=G3.find((V)=>V.key===Y).label,u=q3.find((V)=>V.key===K).label;return $(G9,{title:Z.title,sub:Z.subtitle,width:760,footer:$(r,{children:[$("div",{class:"blob-mgr-selsum",children:C.size>0?$(r,{children:["已选 ",$("b",{children:C.size},void 0,!1,void 0,this)," 项 · ",$Z(y)]},void 0,!0,void 0,this):J?$(r,{children:["共 ",J.length," 项 · ",$Z(J.reduce((V,i)=>V+i.size,0))]},void 0,!0,void 0,this):""},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",disabled:W||!w.length,onClick:()=>void p(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清理所选",w.length?`(${w.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-danger",disabled:W||!A.length,onClick:()=>void n(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除孤儿",A.length?`(${A.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",onClick:()=>p0(),children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:$("div",{class:"blob-mgr",children:[$("div",{class:"blob-mgr-bar",children:[$("div",{class:"blob-mgr-search",children:[$(g,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{class:"blob-mgr-search-in",placeholder:"搜索 hash 或类型…",value:q,onInput:(V)=>H(V.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn"+(Y!=="all"?" on":""),onClick:(V)=>Q0(V),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),b]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn"+(K!=="all"?" on":""),onClick:(V)=>x(V),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),u]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn",onClick:(V)=>$0(V),children:[$(g,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),E1[U.key],U.desc?" ↓":" ↑"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X?$("div",{class:"blob-mgr-empty",children:["无法读取:",X]},void 0,!0,void 0,this):!J?$("div",{class:"blob-mgr-empty",children:"加载中…"},void 0,!1,void 0,this):M.length===0?$("div",{class:"blob-mgr-empty",children:J.length?"没有符合条件的项":"这台设备还没有缓存的 blob"},void 0,!1,void 0,this):$("div",{class:"blob-mgr-list",children:[$("div",{class:"blob-mgr-row blob-mgr-head",children:[$("label",{class:"blob-mgr-check",children:$("input",{type:"checkbox",checked:T,onChange:L},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{},void 0,!1,void 0,this),$("span",{children:"名称"},void 0,!1,void 0,this),$("span",{class:"blob-mgr-r",children:"大小"},void 0,!1,void 0,this),$("span",{children:"状态"},void 0,!1,void 0,this),$("span",{class:"blob-mgr-age",children:"最近使用"},void 0,!1,void 0,this),$("span",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.map((V)=>{let i=sZ(V.contentType),Z0=wG(V);return $("div",{class:"blob-mgr-row"+(C.has(V.hash)?" sel":""),children:[$("label",{class:"blob-mgr-check",children:$("input",{type:"checkbox",checked:C.has(V.hash),onChange:()=>k(V.hash)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(MG,{row:V},void 0,!1,void 0,this),$("div",{class:"blob-mgr-name",children:[$("span",{class:"blob-mgr-hash",children:V.hash.slice(0,12)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-type",children:V.contentType??Z6[i]},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"blob-mgr-r blob-mgr-size",children:$Z(V.size)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-badge s-"+Z0,children:CG[Z0]},void 0,!1,void 0,this),$("span",{class:"blob-mgr-age",children:AG(V.lastAccess)},void 0,!1,void 0,this),$("button",{class:"blob-mgr-pin"+(V.pinned?" on":""),disabled:W||V.pending,title:V.pinned?"取消固定":"固定(不被自动清理)",onClick:()=>void S(V),children:$(g,{name:"pin",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},V.hash,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var eZ={localDevice:{label:"本机",subtitle:"这台设备上的副本",icon:"monitor"},cloudWorkspace:{label:"云端工作区",subtitle:"你常用的在线工作区",icon:"globe"},localWorkspace:{label:"本机工作区",subtitle:"这台电脑上的工作区",icon:"monitor"}};function H3(){return{id:"local",kind:"local",label:eZ.localDevice.label,subtitle:eZ.localDevice.subtitle,icon:eZ.localDevice.icon,isDefault:!1,routeOp:{via:"replica"},deleteSemantics:"evict"}}function J6(Z){let J=Z==="desktop"?eZ.localWorkspace:eZ.cloudWorkspace;return{id:"server",kind:"server",label:J.label,subtitle:J.subtitle,icon:J.icon,isDefault:!1,routeOp:{via:"http"},deleteSemantics:"purge"}}function _G(Z){if(Z.surface==="cli")return"cli";if(Z.surface==="desktop")return"sidecar";if(Z.dataHome==="local")return"bucket-replica";return Z.hold==="replica"?"offline-replica":"thin"}function Y3(Z){let J=_G(Z),Q;switch(J){case"thin":Q=[J6(Z.surface)];break;case"offline-replica":Q=[H3(),J6(Z.surface)];break;case"bucket-replica":Q=[H3()];break;case"sidecar":Q=[J6(Z.surface)];break;case"cli":Q=[J6(Z.surface)];break;default:throw Error(`scopesFor: unhandled cell ${J}`)}return Q.map((X,z)=>({...X,isDefault:z===0}))}function K3({scopes:Z,value:J,onChange:Q,variant:X,sub:z}){if(Z.length===0)return null;let W=Z.find((H)=>H.id===J)??Z[0],G=z&&W.subtitle?$("div",{class:"scope-sub",children:W.subtitle},void 0,!1,void 0,this):null;if(Z.length===1)return $("div",{class:"scope-pick",children:[$("span",{class:"scope-pill",children:[$(g,{name:W.icon},void 0,!1,void 0,this),W.label]},void 0,!0,void 0,this),G]},void 0,!0,void 0,this);if((X??(Z.length>3?"menu":"segmented"))==="menu")return $("div",{class:"scope-pick",children:[$("button",{class:"btn btn-secondary scope-trigger",onClick:(H)=>_0(H,(Y)=>Z.map((F)=>$(z0,{icon:F.icon,label:F.label,sublabel:F.subtitle,checked:F.id===W.id,onClick:()=>{Q(F.id),Y()}},F.id,!1,void 0,this))),children:[$(g,{name:W.icon},void 0,!1,void 0,this),W.label,$(g,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G]},void 0,!0,void 0,this);return $("div",{class:"scope-pick",children:[$("div",{class:"scope-seg",role:"tablist",children:Z.map((H)=>$("button",{class:"scope-seg-item"+(H.id===W.id?" sel":""),role:"tab","aria-selected":H.id===W.id,onClick:()=>Q(H.id),children:[$(g,{name:H.icon},void 0,!1,void 0,this),H.label]},H.id,!0,void 0,this))},void 0,!1,void 0,this),G]},void 0,!0,void 0,this)}var U3=()=>I9().surface==="desktop",vG=[{value:"light",icon:"sun",name:"浅色",desc:"始终使用明亮界面"},{value:"dark",icon:"moon",name:"深色",desc:"始终使用暗色界面"},{value:"system",icon:"monitor",name:"跟随系统",desc:"随操作系统外观自动切换"}];function Z8({id:Z,label:J,children:Q}){return $("div",{class:"set-group",id:Z,children:[$("div",{class:"set-group-label",children:J},void 0,!1,void 0,this),$("div",{class:"set-panel",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var w9={appearance:"appearance",quicknote:"quicknote",sync:"sync",storage:"storage",devices:"devices"},TG=[{id:w9.appearance,label:"外观",icon:"sun",show:()=>!0},{id:w9.quicknote,label:"快速笔记",icon:"pin",show:()=>typeof window<"u"&&!!window.metahubDesktop?.quicknote},{id:w9.sync,label:"同步",icon:"cloudCheck",show:()=>!0},{id:w9.storage,label:"存储",icon:"database",show:()=>!0},{id:w9.devices,label:"设备与授权",icon:"monitor",show:()=>!U9()}];function kG({sections:Z}){let[J,Q]=R(Z[0]?.id??""),X=W0(null),z=W0(0),W=Z.map((q)=>q.id).join("|");o(()=>{let q=document.querySelector(".content"),H=0,Y=()=>{if(Date.now()<z.current)return;if(q?q.scrollTop+q.clientHeight>=q.scrollHeight-2:window.innerHeight+window.scrollY>=document.documentElement.scrollHeight-2){Q(Z[Z.length-1].id);return}let U=Math.max(q?q.getBoundingClientRect().top:0,0)+72,O=Z[0].id;for(let C of Z){let f=document.getElementById(C.id);if(!f)continue;if(f.getBoundingClientRect().top-U<=1)O=C.id;else break}Q(O)},F=()=>{if(H)return;H=requestAnimationFrame(()=>{H=0,Y()})};Y();let K=new IntersectionObserver(Y,{root:q,rootMargin:"-72px 0px -70% 0px",threshold:[0,1]});for(let N of Z){let U=document.getElementById(N.id);if(U)K.observe(U)}return q?.addEventListener("scroll",F,{passive:!0}),window.addEventListener("scroll",F,{passive:!0}),()=>{if(K.disconnect(),q?.removeEventListener("scroll",F),window.removeEventListener("scroll",F),H)cancelAnimationFrame(H)}},[W]),o(()=>{let q=X.current;if(!q)return;let H=q.querySelector(`.set-rail-row[data-sec="${J}"]`);if(!H)return;q.style.setProperty("--mark-y",`${H.offsetTop}px`),q.style.setProperty("--mark-h",`${H.offsetHeight}px`)},[J,W]);let G=(q)=>{z.current=Date.now()+600,Q(q),document.getElementById(q)?.scrollIntoView({behavior:"smooth",block:"start"})};return $("div",{class:"set-rail-slot",children:$("nav",{class:"set-rail",ref:X,"aria-label":"设置区块",children:[$("span",{class:"set-rail-mark"},void 0,!1,void 0,this),Z.map((q)=>$("button",{"data-sec":q.id,class:"set-rail-row"+(q.id===J?" active":""),"aria-current":q.id===J?"true":void 0,onClick:()=>G(q.id),children:[$("span",{class:"set-rail-ico",children:$(g,{name:q.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"set-rail-label",children:q.label},void 0,!1,void 0,this)]},q.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function L3({onUpdatePending:Z}={}){let[J,Q]=R(x1()),X=(W)=>{W3(W),Q(W)},z=TG.filter((W)=>W.show());return $("div",{class:"set-shell",children:$("div",{class:"set-page",children:[z.length>=2&&$(kG,{sections:z},void 0,!1,void 0,this),$("div",{class:"set-title",children:"设置"},void 0,!1,void 0,this),$("div",{class:"set-sub",children:"个性化你的 Metahub 工作区。"},void 0,!1,void 0,this),$(Z8,{id:w9.appearance,label:"外观",children:$("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"颜色主题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择界面的明暗外观。"},void 0,!1,void 0,this),$("div",{class:"theme-grid",children:vG.map((W)=>$("button",{class:"theme-card"+(J===W.value?" sel":""),"aria-pressed":J===W.value,onClick:()=>X(W.value),children:[$("span",{class:"tc-check",children:$(g,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(g,{name:W.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-name",children:W.name},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:W.desc},void 0,!1,void 0,this)]},W.value,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),typeof window<"u"&&window.metahubDesktop?.quicknote&&$(Z8,{id:w9.quicknote,label:"快速笔记",children:$(oG,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(Z8,{id:w9.sync,label:"同步",children:[!U3()&&$(hG,{},void 0,!1,void 0,this),$(xG,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(Z8,{id:w9.storage,label:"存储",children:$(RG,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!U9()&&$(Z8,{id:w9.devices,label:"设备与授权",children:[$(tG,{},void 0,!1,void 0,this),$(sG,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(lG,{onUpdatePending:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function RG(){let Z=Y3(I9()).filter((W)=>W.kind!=="bucket"),[J,Q]=R(Z[0]?.id??"server"),X=Z.find((W)=>W.id===J)??Z[0],z=Z.length>1;return $(r,{children:[$("div",{class:"set-block",children:[z&&$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"管理哪里的存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(K3,{scopes:Z,value:X.id,onChange:Q,sub:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X.kind==="local"?$(gG,{scope:X},void 0,!1,void 0,this):$(fG,{scope:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function a0(Z){if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(1)} KB`;if(Z<1073741824)return`${(Z/1024/1024).toFixed(1)} MB`;return`${(Z/1024/1024/1024).toFixed(2)} GB`}function IG(Z){let J=Math.max(0,Math.round((Date.now()-Z)/1000));if(J<60)return"刚刚";let Q=Math.round(J/60);if(Q<60)return`${Q} 分钟前`;let X=Math.round(Q/60);if(X<24)return`${X} 小时前`;return`${Math.round(X/24)} 天前`}var SG=300000,VG=()=>typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function P3(Z,J=600){let[Q,X]=R(Z),z=W0(Z);return o(()=>{if(VG()){z.current=Z,X(Z);return}let W=z.current,G=performance.now(),q=0,H=(Y)=>{let F=Math.min(1,(Y-G)/J),K=1-Math.pow(1-F,3);if(X(Math.round(W+(Z-W)*K)),F<1)q=requestAnimationFrame(H);else z.current=Z};return q=requestAnimationFrame(H),()=>cancelAnimationFrame(q)},[Z]),Q}function fG({scope:Z}){let[J,Q]=R(null),[X,z]=R(null),[W,G]=R(!1),[q,H]=R(!1),Y=()=>{d.blobCache().then((e)=>{Q(e),z(null)}).catch((e)=>z(e.message))},F=async(e=!1)=>{H(!0);try{Q(await d.verifyBlobCache()),z(null)}catch(P0){if(e)s(P0.message)}finally{H(!1)}};o(()=>{Y(),F()},[]);let[K,N]=R(!1);o(()=>{let e=requestAnimationFrame(()=>N(!0));return()=>cancelAnimationFrame(e)},[]);let U=P3(J?.stats.clearableBytes??0);if(X||!J)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:X?`无法读取缓存信息:${X}`:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{stats:O,policy:C,nodes:f,buckets:h,quotaBytes:_,pinnedBytes:M}=J,k=[...h,...C.fullNodes.filter((e)=>e.startsWith("s3://")&&!h.some((P0)=>P0.url===e)).map((e)=>({url:e,label:null,bucket:null}))],T=async(e)=>{G(!0);try{await d.setBlobPolicy({full_nodes:e}),await F()}catch(P0){s(P0.message)}finally{G(!1)}},L=(e)=>{let P0=new Set(C.fullNodes);if(P0.has(e))P0.delete(e);else P0.add(e);T([...P0])},P=async(e)=>{G(!0);try{await d.setBlobPolicy({redundancy:e}),await F()}catch(P0){s(P0.message)}finally{G(!1)}},w=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${a0(O.clearableBytes)}。只删别处已备份的副本,文件不会丢,用到时自动取回。`,confirmLabel:"清理"}))return;G(!0);try{let P0=await d.clearBlobCache();s(P0.cleared?`已腾出 ${a0(P0.freedBytes)}(${P0.cleared} 项)`:"暂时没有可清理的"),Y()}catch(P0){s(P0.message)}finally{G(!1)}},A=Math.max(1,O.totalBytes),y=Math.max(0,O.retainedBytes-M),S=(e)=>e/A*100,p=S(O.clearableBytes),n=S(y),$0=S(M),Q0=O.clearableBytes>0,x=C.fullNodes.length===0,b=f.find((e)=>e.self),u=!!b&&C.fullNodes.includes(b.nodeId),V=!x&&!u&&J.lastVerifiedAt==null,i=u?"self-full":x?"no-anchor":V?"unverified":Q0?"free":"safe",Z0=J.lastVerifiedAt==null||Date.now()-J.lastVerifiedAt>SG,G0=_>0&&O.totalBytes>_&&(J.unreachableAnchors.length>0||Z0),J0=(e)=>K?e:0;return $("div",{class:"set-block blob-pane",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"图片和大文件会先存在这台设备上,打开快。只要别处留了一份长期备份,这里随时能清——文件不会丢,需要时自动取回。"},void 0,!1,void 0,this),$("div",{class:"blob-hero",children:[$("div",{class:"blob-hero-main",children:[$("div",{class:"blob-legend",children:[$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot free"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"可释放"},void 0,!1,void 0,this),$("b",{children:a0(O.clearableBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot keep"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"保留中"},void 0,!1,void 0,this),$("b",{children:a0(y)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M>0&&$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot pin"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"已固定"},void 0,!1,void 0,this),$("b",{children:a0(M)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-total",children:["共 ",O.count," 项 · ",a0(O.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:W||q||!Q0,onClick:()=>void w(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),Q0?`清理腾出 ${a0(O.clearableBytes)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-verify-btn",disabled:W||q,onClick:()=>void F(!0),children:[$(g,{name:"history",cls:"ico sm"+(q?" spin":"")},void 0,!1,void 0,this),q?"检查中…":"重新检查"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-manage-btn",onClick:()=>p1(Z),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),"Blob 管理"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-verify-at",children:q?"":J.lastVerifiedAt!=null?`${IG(J.lastVerifiedAt)}检查过`:"未检查"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-ring"+(i==="free"?" has-free":i==="safe"?" all-safe":" locked"),children:[$("svg",{viewBox:"0 0 100 100",class:"blob-ring-svg","aria-hidden":"true",children:$("g",{transform:"rotate(-90 50 50)",children:[$("circle",{class:"blob-ring-track",cx:"50",cy:"50",r:"42",pathLength:100},void 0,!1,void 0,this),$0>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${J0($0)} ${100-J0($0)}`,"stroke-dashoffset":-(p+n)},void 0,!1,void 0,this),$("circle",{class:"blob-seg keep",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${J0(n)} ${100-J0(n)}`,"stroke-dashoffset":-p},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${J0(p)} ${100-J0(p)}`,"stroke-dashoffset":0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-center",children:[i==="free"&&$(r,{children:[$("div",{class:"blob-ring-big",children:a0(U)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="safe"&&$(r,{children:[$("div",{class:"blob-ring-check",children:$(g,{name:"check",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"都备份好了"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"暂时无需清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="no-anchor"&&$(r,{children:[$("div",{class:"blob-ring-lock",children:$(g,{name:"lock",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"未设置长期备份"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"指定后才能清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="unverified"&&$(r,{children:[$("div",{class:"blob-ring-lock",children:$(g,{name:"history",cls:"ico"+(q?" spin":"")},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:q?"检查中…":"未检查"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"检查后才知道"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),i==="self-full"&&$(r,{children:[$("div",{class:"blob-ring-lock",children:$(g,{name:"database",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"本机长期备份库"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"保留全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-anchors",children:[$("div",{class:"blob-sub-title",children:"长期备份保存在"},void 0,!1,void 0,this),f.map((e)=>{let P0=C.fullNodes.includes(e.nodeId);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(g,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[e.label||e.nodeId,e.self?" · 本机":""]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:P0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(P0?" on":""),role:"switch","aria-checked":P0,disabled:W,onClick:()=>L(e.nodeId),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},e.nodeId,!0,void 0,this)}),k.map((e)=>{let P0=C.fullNodes.includes(e.url);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(g,{name:"database",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[e.label||e.bucket||e.url," · 云端"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:P0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(P0?" on":""),role:"switch","aria-checked":P0,disabled:W,onClick:()=>L(e.url),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},e.url,!0,void 0,this)}),x&&$("div",{class:"blob-hint",children:"还没设置长期备份。先指定一处,之后就能放心清理这台设备。"},void 0,!1,void 0,this),C.fullNodes.length>1&&$("div",{class:"blob-strategy",children:[$("div",{class:"blob-sub-title",children:"清理前先确认"},void 0,!1,void 0,this),$("div",{class:"seg",children:[$("button",{class:"seg-opt"+(C.redundancy==="any"?" on":""),disabled:W||q,onClick:()=>void P("any"),children:[$("span",{class:"seg-opt-t",children:"有一处备份就行"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更省空间"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"seg-opt"+(C.redundancy==="all"?" on":""),disabled:W||q,onClick:()=>void P("all"),children:[$("span",{class:"seg-opt-t",children:"每处都备份好"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更稳妥"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),J.unreachableAnchors.length>0&&$("div",{class:"blob-hint warn",children:"部分长期备份连不上,相关文件暂不清理。"},void 0,!1,void 0,this),G0&&$("div",{class:"blob-hint warn",children:"空间超了,但备份暂时离线,先没清理。"},void 0,!1,void 0,this),_>0&&$("div",{class:"blob-foot",children:["缓存超过 ",a0(_)," 时,自动清理最久没用、已有备份的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function gG({scope:Z}){let[J,Q]=R(null),[X,z]=R({count:0,bytes:0}),[W,G]=R(null),[q,H]=R(null),[Y,F]=R(!1),K=async()=>{try{let[A,y]=await Promise.all([rJ(),fZ()]);Q(A),z({count:y.length,bytes:y.reduce((S,p)=>S+p.bytes.byteLength,0)})}catch{}if(navigator.storage?.estimate)try{let A=await navigator.storage.estimate();if(A.usage!=null)G(A.usage)}catch{}if(navigator.storage?.persisted)try{H(await navigator.storage.persisted())}catch{}};o(()=>{K()},[]);let[N,U]=R(!1);o(()=>{let A=requestAnimationFrame(()=>U(!0));return()=>cancelAnimationFrame(A)},[]);let O=J?Math.max(0,J.totalBytes-J.pinnedBytes):0,C=P3(O);if(!J)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let f=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${a0(O)}。只清本机缓存,文件已存在云桶,用到时自动取回。待上传的内容不会动。`,confirmLabel:"清理"}))return;F(!0);try{let y=await oJ();s(y.cleared?`已腾出 ${a0(y.freedBytes)}(${y.cleared} 项)`:"暂时没有可清理的"),await K()}catch(y){s(y.message)}finally{F(!1)}},h=async()=>{if(!navigator.storage?.persist)return;F(!0);try{let A=await navigator.storage.persist();H(A),s(A?"已设为常驻,系统不会自动清理":"浏览器暂未授予常驻")}catch(A){s(A.message)}finally{F(!1)}},_=Math.max(1,J.totalBytes),M=(A)=>A/_*100,k=M(O),T=M(J.pinnedBytes),L=(A)=>N?A:0,P=O>0,w=P?"free":"safe";return $("div",{class:"set-block blob-pane",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"图片和大文件会先缓存在这台设备上,打开快。云桶里始终有一份,所以这里随时能清——文件不会丢,需要时自动取回。"},void 0,!1,void 0,this),$("div",{class:"blob-hero",children:[$("div",{class:"blob-hero-main",children:[$("div",{class:"blob-legend",children:[$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot free"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"可释放"},void 0,!1,void 0,this),$("b",{children:a0(O)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J.pinnedBytes>0&&$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot pin"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"已固定"},void 0,!1,void 0,this),$("b",{children:a0(J.pinnedBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-total",children:["共 ",J.count," 项 · ",a0(J.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:Y||!P,onClick:()=>void f(),children:[$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),P?`清理腾出 ${a0(O)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-manage-btn",onClick:()=>p1(Z),children:[$(g,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),"Blob 管理"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-ring"+(w==="free"?" has-free":" all-safe"),children:[$("svg",{viewBox:"0 0 100 100",class:"blob-ring-svg","aria-hidden":"true",children:$("g",{transform:"rotate(-90 50 50)",children:[$("circle",{class:"blob-ring-track",cx:"50",cy:"50",r:"42",pathLength:100},void 0,!1,void 0,this),T>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${L(T)} ${100-L(T)}`,"stroke-dashoffset":-k},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${L(k)} ${100-L(k)}`,"stroke-dashoffset":0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-center",children:w==="free"?$(r,{children:[$("div",{class:"blob-ring-big",children:a0(C)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$(r,{children:[$("div",{class:"blob-ring-check",children:$(g,{name:"check",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"已是最省"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"暂无缓存可清"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-anchors",children:[X.count>0&&$("div",{class:"blob-hint warn",children:[X.count," 项(约 ",a0(X.bytes),")还没上传到云桶,仅存在这台设备上。建议先「立即同步」再清理——清理不会动这些待上传的内容。"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(g,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:["常驻存储",q==null?"":q?" · 已开启":" · 未开启"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:q?"系统空间紧张时不会自动清掉本地数据。":"开启后,系统空间紧张时也不会自动清掉本地数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q!==!0&&$("button",{class:"btn btn-ghost",disabled:Y||!navigator.storage?.persist,onClick:()=>void h(),children:"请求常驻"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W!=null&&$("div",{class:"blob-foot",children:["此浏览器为本工作区共占用约 ",a0(W),"(含本地数据库与缓存)。缓存超过 ",a0(pJ)," 时自动清理最久没用、已在云桶的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function bG(){if(typeof Worker>"u"||typeof navigator>"u")return"此浏览器不支持 Web Worker。";if(!window.isSecureContext)return"需要 HTTPS(安全上下文)。当前是 http:// 访问,浏览器不开放离线所需的 OPFS 与 Service Worker——给服务器配置 TLS(--tls-cert/--tls-key,或 Caddy / Tailscale Serve 反代;iPhone 需要受信任的证书),或在本机用 localhost 访问。";if(!navigator.storage?.getDirectory)return"此浏览器不支持 OPFS 本地存储(需要 Safari 17+ / Chrome / Firefox 较新版本)。";return null}function jG({kind:Z,noOrigin:J,hasServerBucket:Q,deviceDirect:X}){let z=Z==="trusted",W=!J,G=W&&Q,q=X,H=G||q,Y=q&&W&&H;return $("span",{class:"md-graph"+(z?" trusted":" light")+(Y?" has-direct":""),"aria-hidden":"true",children:[$("span",{class:"md-node self",children:[$("span",{class:"md-node-ico",children:$(g,{name:"monitor",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"本设备"},void 0,!1,void 0,this),$("span",{class:"md-node-tag",children:z?"存一份":"不留存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W&&$(r,{children:[$("span",{class:"md-wire bi"},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(g,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"服务器"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),H&&$(r,{children:[$("span",{class:"md-wire "+(W?"to":"bi")},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(g,{name:"cube",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"云桶"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y&&$("span",{class:"md-direct","data-label":"直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hG(){let Z=bG(),[J,Q]=R(q9()),[X,z]=R(IZ()),[W,G]=R(!1),[q,H]=R(null),Y=U9(),[F,K]=R(!1),[N,U]=R(!1);o(()=>{let P=!0,w=async()=>{let y=q9()?(await b0("listStoragePeers").catch(()=>[])).length>0:!1,S=Y?!1:(await d.listServerS3Peers().catch(()=>[])).length>0;if(!P)return;U(y),K(S)};w();let A=F9(w);return()=>{P=!1,A()}},[Y]);let[O,C]=R(null),f=(P,w)=>{let A=w.currentTarget,y=A?.closest(".set-panel"),S=A?.closest(".sync-holds");if(!y||!S)return;let p=y.getBoundingClientRect(),n=248,$0=28;if(window.innerWidth-p.right<n+$0)return C(null);(async()=>{let Q0=q9()?(await b0("listStoragePeers").catch(()=>[])).length>0:!1,x=Y?!1:(await d.listServerS3Peers().catch(()=>[])).length>0;U(Q0),K(x)})(),C({kind:P,left:p.right+$0,top:S.getBoundingClientRect().top})},h=()=>C(null);o(()=>F9((P)=>z({...P})),[]),o(()=>{if(!J||!navigator.storage?.estimate)return;let P=!0,w=()=>navigator.storage.estimate().then((y)=>{if(P&&y.usage!=null)H((y.usage/1024/1024).toFixed(1))});w();let A=F9(()=>void w());return()=>{P=!1,A()}},[J]);let _=async()=>{if(!await R0({title:"重置本地副本",message:"将删除此浏览器里的全部本地数据(服务器数据不受影响),并停用离线副本。未同步的本地修改会丢失——建议先「立即同步」。",confirmLabel:"删除并重置",danger:!0}))return;G(!0);try{await uJ(),Q(!1),s("本地副本已重置")}catch(w){s(`重置失败:${w.message}`)}finally{G(!1)}},M=async()=>{G(!0);try{await DJ(),Q(!0),s("离线副本已启用,正在下载数据…")}catch(P){s(`启用失败:${P.message}`)}finally{G(!1)}},k=async()=>{if(!await R0({title:"停用离线副本",message:"此浏览器将恢复纯在线模式。已下载的本地数据保留在浏览器里,重新启用后从断点续传。",confirmLabel:"停用",danger:!0}))return;let w=typeof navigator<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.controller!=null;G(!0);try{if(await mJ(),Q(!1),s("已停用离线副本"),w)location.reload()}finally{G(!1)}},T=()=>{if(!J)return"轻量模式 · 仅在线读写,断网不可用。";if(X.state==="error")return`副本异常(已自动回退在线模式):${X.error??"未知错误"}`;if(X.state==="hydrating")return`正在下载数据… 已接收 ${X.hydrated??0} 条变更`;if(X.lastSync){let P=yZ(X.lastSync.at);return X.lastSync.ok?`本地优先已生效 · 上次同步 ${P}(推送 ${X.lastSync.pushed} / 拉取 ${X.lastSync.pulled})`:`上次同步失败(${P}):${X.lastSync.error??""} — 本地读写不受影响,恢复网络后自动重试`}return"等待首次同步…"};if(Z)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"这台设备为轻量模式:仅在线读写,不在本机保存。"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["⚠ 此设备无法「信任并本机保存」:",Z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let L=(P)=>$(jG,{kind:P,noOrigin:Y,hasServerBucket:F,deviceDirect:P==="trusted"&&N},void 0,!1,void 0,this);return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择这台设备如何使用工作区,之后可随时修改。"},void 0,!1,void 0,this),$("div",{class:"theme-grid sync-holds",children:[$("button",{class:"theme-card mode-card"+(!J?" sel":""),"aria-pressed":!J,disabled:W,onClick:()=>J&&k(),onMouseEnter:(P)=>f("light",P),onMouseLeave:h,onFocus:(P)=>f("light",P),onBlur:h,children:[$("span",{class:"tc-check",children:$(g,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(g,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"轻量模式"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:"仅在线使用"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"theme-card mode-card"+(J?" sel":""),"aria-pressed":J,disabled:W,onClick:()=>!J&&M(),onMouseEnter:(P)=>f("trusted",P),onMouseLeave:h,onFocus:(P)=>f("trusted",P),onBlur:h,children:[$("span",{class:"tc-check",children:$(g,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(g,{name:"lock"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"信任此设备"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:W&&!J?"启用中…":"本机保存,支持同步"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O&&$("div",{class:"mode-aside",style:{top:O.top+"px",left:O.left+"px"},children:$("div",{class:"mp-show",children:[L(O.kind),$("span",{class:"mp-cap",children:O.kind==="trusted"?"本机存一份 · 离线也能读写":"仅在线读写 · 不在本机保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),J&&$("div",{class:"peer-actions",style:{marginTop:12},children:[$("button",{class:"btn btn-secondary",disabled:W,onClick:()=>E9(),children:[$(g,{name:"share",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",disabled:W,onClick:_,children:"重置本地副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:[T(),J&&X.node?` · 节点 ${X.node}`:"",J&&q?` · 本地占用 ${q} MB`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function $6(Z){try{return new URL(Z).host}catch{return Z}}function DG(Z){return Z.length<=8?Z.slice(0,2)+"…":Z.slice(0,4)+"…"+Z.slice(-4)}function xG(){let Z=U9(),J=U3(),[Q,X]=R(q9()),[z,W]=R(null),[G,q]=R(null),H=()=>{if(q9())b0("listStoragePeers").then(q).catch(()=>{});else q(null)},Y=()=>{if(H(),!Z)d.listServerS3Peers().then(W).catch((L)=>s(`加载失败:${L.message}`))};o(()=>{return Y(),F9(()=>{X(q9()),H()})},[]);let F=new Set((G??[]).map((L)=>L.url)),K=!J&&Q,N=()=>z9($(nG,{toServer:!Z,alsoReplica:!Z&&K,onDone:()=>{p0(),Y()}},void 0,!1,void 0,this)),U=(L)=>z9($(mG,{peer:L,onDone:()=>{p0(),Y()}},void 0,!1,void 0,this)),O=async()=>{try{if(Z)await b0("sync");else if(await Promise.all((z??[]).map((L)=>d.syncPeer(L.url))),K)await b0("sync").catch(()=>{});s("已触发同步"),Y()}catch(L){s(`同步失败:${L.message}`)}},C=async(L,P)=>{if(!await R0({title:"移除存储桶",message:`确定移除 ${P}?将停止与该存储桶同步(桶内数据不受影响)。`,confirmLabel:"移除",danger:!0}))return;if(Z)await b0("removeStorageReplica",L).catch((A)=>s(A.message));else if(await d.removePeer(L).catch((A)=>s(A.message)),K)await b0("removeStorageReplica",L).catch(()=>{});Y()},f=async(L,P)=>{if(!await R0({title:"取消本设备直连",message:`这台设备将不再直连 ${P}(存储桶仍在服务器上;本设备在线时照常经服务器同步)。`,confirmLabel:"取消直连",danger:!0}))return;await b0("removeStorageReplica",L).catch((A)=>s(A.message)),Y()},h=(L)=>Z?b0("storagePeerConfig",L):d.serverS3Config(L),_=((Z?G:z)??[]).map((L)=>({url:L.url,name:L.label||L.bucket||L.url})),M=()=>z9($(iG,{buckets:_,getConfig:h,server:!Z,onPaired:()=>{p0(),Y()}},void 0,!1,void 0,this)),k=(L,P,w)=>_0(L,(A)=>$(r,{children:[w&&$(z0,{icon:"link",label:"取消本设备直连",onClick:()=>{A(),f(P.url,P.label||P.bucket||P.url)}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"移除存储桶",danger:!0,onClick:()=>{A(),C(P.url,P.label||P.bucket||P.url)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),T=(Z?G:z)?.length?!0:!1;return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"在所有设备间同步"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"连一个云端存储桶,手机、电脑就保持同步——不必开公网服务器,对方离线也收得到,内容端到端加密。"},void 0,!1,void 0,this),$("div",{class:"set-meta",children:$("span",{class:"set-meta-item",children:[$(g,{name:J||!Z?"globe":"cube",cls:"ico sm"},void 0,!1,void 0,this),J?"连一个云端存储桶,这台设备就和你的手机、其他电脑自动保持同步。":Z?"这台设备就是工作区的家,其他设备扫码加入即可一起同步。":"存储桶连在服务器上,所有设备自动共享;信任本设备后,它离线、在外时也能直接同步。"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("details",{class:"set-disclosure",children:[$("summary",{children:"它是怎么工作的"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:['存储桶只当"哑"中转:每台设备把自己的变更加密上传、再拉取别人的——谁都不必同时在线,也不需要公网 IP。',J?"这台设备把自己的变更发布到桶,其他设备从桶拉取;新设备扫码加入即可一起同步。":Z?"这台设备把整个工作区发布到桶,新设备扫码加入后从桶秒恢复。":"密钥只存在服务器,不会同步到浏览器;信任的设备重输一次密钥即可直接同步,离线、在外也不中断。添加时会自动为本站点开通桶的访问权限(CORS)。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z&&!Q?$("div",{class:"peer-sub",style:"margin-top:12px",children:"⚠ 请先在上方把这台设备设为「信任此设备」,再连接存储桶。"},void 0,!1,void 0,this):$(r,{children:[$("div",{class:"peer-actions",style:{marginTop:14},children:[$("button",{class:"btn btn-primary",onClick:N,children:[$(g,{name:"cube",cls:"ico sm"},void 0,!1,void 0,this)," 连接存储桶"]},void 0,!0,void 0,this),(!Z||_.length>0)&&$("button",{class:"btn btn-secondary",onClick:M,children:[$(g,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)," 添加设备"]},void 0,!0,void 0,this),T&&$("button",{class:"btn btn-secondary",onClick:O,children:[$(g,{name:"cloudUp",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-list flush",children:J?z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能保持同步。"},void 0,!1,void 0,this):z.map((L)=>{let P=L.label||L.bucket||L.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(L.enabled?L.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:P},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[L.endpoint?$6(L.endpoint)+" · ":"","最近同步 ",yZ(L.lastSyncAt),L.status==="error"&&L.error?` · 错误:${L.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>C(L.url,P),children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L.url,!0,void 0,this)}):Z?G==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,手机、电脑就能免公网服务器互通。"},void 0,!1,void 0,this):G.map((L)=>{let P=L.label||L.bucket||L.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(L.enabled?L.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:P},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:$("span",{class:"peer-tag",children:[$(g,{name:"upload",cls:"ico"},void 0,!1,void 0,this)," 本机发布"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[L.endpoint?$6(L.endpoint)+" · ":"","最近同步 ",yZ(L.lastSyncAt),L.status==="error"&&L.error?` · 错误:${L.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>C(L.url,P),children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L.url,!0,void 0,this)}):z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能免公网服务器互通。"},void 0,!1,void 0,this):z.map((L)=>{let P=L.label||L.bucket||L.url,w=Q&&F.has(L.url);return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(L.enabled?L.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:P},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:[$("span",{class:"peer-tag",children:[$(g,{name:"globe",cls:"ico"},void 0,!1,void 0,this)," 服务器同步"]},void 0,!0,void 0,this),Q?w?$("span",{class:"peer-tag ok",children:[$(g,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 本机已直连"]},void 0,!0,void 0,this):$("button",{class:"peer-tag act",onClick:()=>U(L),children:[$(g,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 让本机直接同步"]},void 0,!0,void 0,this):$("span",{class:"peer-tag muted",children:"信任本设备后可直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",children:[L.endpoint?$6(L.endpoint)+" · ":"","最近同步 ",yZ(L.lastSyncAt),L.status==="error"&&L.error?` · 错误:${L.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"更多",onClick:(A)=>k(A,L,w),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},L.url,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function mG({peer:Z,onDone:J}){let[Q,X]=R(""),[z,W]=R(""),[G,q]=R(!1),H=Z.endpoint?$6(Z.endpoint):"",Y=async()=>{if(!Q.trim())return s("密钥必填");if(Z.encrypt&&!z)return s("加密口令必填");if(!Z.endpoint||!Z.bucket||!Z.accessKeyId)return s("服务器未提供该桶的完整配置,无法在本设备激活");q(!0);try{let F={endpoint:Z.endpoint,region:Z.region||"auto",bucket:Z.bucket,prefix:Z.prefix||"metahub",accessKeyId:Z.accessKeyId,secretAccessKey:Q.trim(),encrypt:Z.encrypt,...Z.virtualHostedStyle!=null?{virtualHostedStyle:Z.virtualHostedStyle}:{},publish:!1};await b0("addStorageReplica",F,z),s("已让本机直连存储桶 · 离线、在外也能直接同步"),J()}catch(F){let K=F.message;s(O3(K)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`启用失败:${K}`),q(!1)}};return $(G9,{title:"在本设备启用直连",sub:"服务器已配置这个存储桶。为保护密钥,服务器不会把它同步到浏览器——再输入一次密钥,这台设备就能与桶直接同步(离线、在外也不中断)。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,disabled:G,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:Y,disabled:G,children:G?"连接中…":"启用直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"activate-id",children:[$("div",{class:"activate-id-row",children:[$("span",{children:"存储桶"},void 0,!1,void 0,this),$("b",{children:Z.bucket},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H&&$("div",{class:"activate-id-row",children:[$("span",{children:"服务地址"},void 0,!1,void 0,this),$("b",{children:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.accessKeyId&&$("div",{class:"activate-id-row",children:[$("span",{children:"访问密钥 ID"},void 0,!1,void 0,this),$("b",{children:DG(Z.accessKeyId)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:!0,placeholder:"重新输入该桶的密钥",value:Q,onInput:(F)=>X(F.target.value),onKeyDown:(F)=>!Z.encrypt&&F.key==="Enter"&&Y()},void 0,!1,void 0,this),Z.encrypt&&$(r,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"与其它设备相同的加密口令",value:z,onInput:(F)=>W(F.target.value),onKeyDown:(F)=>F.key==="Enter"&&Y()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"跨设备共用的那把加密钥——用它解开桶里别人的数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var c1="mh_shell_base";function uG(Z,J){return`${(Z||location.origin).replace(/\/+$/,"")}/#enroll=${R6(J)}`}function B3({data:Z}){let J=z3(0,"H");J.addData(Z),J.make();let Q=J.getModuleCount(),X=2,z=Q/2,W=Math.max(5,Math.floor(Q*0.22)),G=W/2,q=(U,O)=>U<7&&O<7||U<7&&O>=Q-7||U>=Q-7&&O<7,H=(U,O)=>Math.abs(U+0.5-z)<G&&Math.abs(O+0.5-z)<G,Y=[];for(let U=0;U<Q;U++)for(let O=0;O<Q;O++){if(!J.isDark(U,O)||q(U,O)||H(U,O))continue;Y.push($("circle",{cx:O+0.5,cy:U+0.5,r:0.45,fill:"var(--qr-fg)"},U*Q+O,!1,void 0,this))}let F=(U,O)=>$(r,{children:[$("rect",{x:O+0.5,y:U+0.5,width:6,height:6,rx:2,ry:2,fill:"none",stroke:"var(--qr-fg)","stroke-width":1},void 0,!1,void 0,this),$("rect",{x:O+2,y:U+2,width:3,height:3,rx:1,fill:"var(--qr-fg)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K=W+0.6,N=W*0.62/24;return $("div",{class:"qr-box",children:$("svg",{viewBox:`${-X} ${-X} ${Q+X*2} ${Q+X*2}`,"shape-rendering":"geometricPrecision",children:[Y,F(0,0),F(0,Q-7),F(Q-7,0),$("rect",{x:z-K/2,y:z-K/2,width:K,height:K,rx:K*0.26,ry:K*0.26,fill:"var(--qr-bg)"},void 0,!1,void 0,this),$("g",{class:"qr-cube",transform:`translate(${z} ${z}) scale(${N}) translate(-12 -12)`,fill:"none",stroke:"var(--qr-fg)","stroke-width":1.6,"stroke-linejoin":"round","stroke-linecap":"round",children:[$("path",{class:"qr-cube-edge qr-cube-outer",pathLength:1,d:I6},void 0,!1,void 0,this),$("path",{class:"qr-cube-edge qr-cube-inner",pathLength:1,d:S6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:I6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:S6},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function $8({text:Z,label:J,done:Q,primary:X}){return $("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),style:{width:"100%",marginTop:10},onClick:()=>{navigator.clipboard?.writeText(Z),s(Q)},children:[$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)," ",J]},void 0,!0,void 0,this)}function EG({config:Z}){let[J,Q]=R(()=>{try{return localStorage.getItem(c1)||location.origin}catch{return location.origin}}),X=uG(J,Z),z=(W)=>{Q(W);try{W?localStorage.setItem(c1,W):localStorage.removeItem(c1)}catch{}};return $(r,{children:[$(B3,{data:X},void 0,!1,void 0,this),$("div",{class:"field-label",children:"壳地址(手机访问的静态站点域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:J,onInput:(W)=>z(W.target.value)},void 0,!1,void 0,this),$($8,{text:X,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"手机相机扫码打开,输入加密口令即可同步。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function pG({config:Z}){let J=R6(Z),Q=`mh config peer add --s3 --enroll ${J}`;return $(r,{children:[$("div",{class:"field-label",children:"在另一台电脑的终端运行"},void 0,!1,void 0,this),$("div",{class:"enroll-cmd",children:Q},void 0,!1,void 0,this),$($8,{text:Q,label:"复制命令",done:"已复制命令",primary:!0},void 0,!1,void 0,this),$($8,{text:J,label:"复制接入码",done:"已复制接入码"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["对方运行后会提示输入加密口令。也可在 ",$("code",{children:"mh config"},void 0,!1,void 0,this)," 向导选「粘贴接入码加入存储」。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function cG({code:Z,exp:J}){let[Q,X]=R(Math.max(0,Math.round((J-Date.now())/1000)));o(()=>{let G=setInterval(()=>X(Math.max(0,Math.round((J-Date.now())/1000))),1000);return()=>clearInterval(G)},[J]);let z=Math.floor(Q/60),W=String(Q%60).padStart(2,"0");return $(r,{children:[$("div",{class:"pair-code",children:Z},void 0,!1,void 0,this),$("div",{class:"muted",style:{textAlign:"center",marginTop:8},children:Q>0?`${z}:${W} 后过期`:"已过期,请重新生成"},void 0,!1,void 0,this),$($8,{text:Z,label:"复制配对码",done:"已复制配对码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dG({onPaired:Z}){let[J,Q]=R(null),[X,z]=R(!1),W=async()=>{z(!0);try{Q(await d.newPairingCode())}catch(M){s(`生成失败:${M.message}`)}finally{z(!1)}},[G,q]=R(""),[H,Y]=R(""),[F,K]=R(location.origin),[N,U]=R(!1),O=async()=>{if(!G.trim()||!H.trim())return s("地址和配对码必填");U(!0);try{let M=await d.addPeerByPairing({url:G.trim(),code:H.trim(),self_url:F.trim()||void 0});await d.syncPeer(M.url).catch(()=>{}),s(`已配对 ${M.url}`),Z()}catch(M){s(`配对失败:${M.message}`),U(!1)}},[C,f]=R(()=>{try{return localStorage.getItem(d1)||location.origin}catch{return location.origin}}),h=(M)=>{f(M);try{M?localStorage.setItem(d1,M):localStorage.removeItem(d1)}catch{}},_=aG(C,z5());return $(r,{children:[$("div",{class:"enroll-section",children:"邀请另一台服务器配对"},void 0,!1,void 0,this),J?$(cG,{code:J.code,exp:J.exp},void 0,!1,void 0,this):$("button",{class:"btn btn-secondary",style:{width:"100%"},disabled:X,onClick:W,children:[$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)," ",X?"生成中…":"生成本机配对码"]},void 0,!0,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"已有对方的配对码?"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"对方服务器地址"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"http://192.168.1.10:7777",value:G,onInput:(M)=>q(M.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"配对码"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"对方「生成本机配对码」得到的码",value:H,onInput:(M)=>Y(M.target.value),onKeyDown:(M)=>M.key==="Enter"&&O()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"本机可达地址(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"留空则仅本机主动同步",value:F,onInput:(M)=>K(M.target.value)},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",style:{width:"100%",marginTop:10},disabled:N,onClick:O,children:N?"配对中…":"配对"},void 0,!1,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"在手机上打开本服务器"},void 0,!1,void 0,this),$(B3,{data:_},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务器地址(手机访问的域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:C,onInput:(M)=>h(M.target.value)},void 0,!1,void 0,this),$($8,{text:_,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 含访问令牌,请勿公开分享。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function iG({buckets:Z,getConfig:J,server:Q,onPaired:X}){let z=Z.length>0,W=[...z?[{id:"phone",label:"手机扫码"},{id:"cli",label:"电脑 / 命令行"}]:[],...Q?[{id:"server",label:"高级:服务器配对"}]:[]],[G,q]=R(W[0]?.id??"server"),[H,Y]=R(Z[0]?.url??""),[F,K]=R(null),[N,U]=R("");return o(()=>{if(!z||!H)return;let O=!0;return K(null),U(""),J(H).then((C)=>{if(!O)return;C?K(C):U("找不到该存储的配置")}).catch((C)=>O&&U(C.message)),()=>{O=!1}},[H]),$(G9,{title:"添加设备",sub:"让另一台设备加入同一个工作区——手机扫码,或在电脑上粘贴接入码。",footer:$("button",{class:"btn btn-primary",onClick:p0,children:"完成"},void 0,!1,void 0,this),width:420,children:[W.length>1&&$("div",{class:"add-tabs",children:W.map((O)=>$("button",{class:"add-tab"+(G===O.id?" on":""),onClick:()=>q(O.id),children:O.label},O.id,!1,void 0,this))},void 0,!1,void 0,this),(G==="phone"||G==="cli")&&$(r,{children:[Z.length>1&&$(r,{children:[$("div",{class:"field-label",children:"存储桶"},void 0,!1,void 0,this),$("select",{class:"text-input",value:H,onChange:(O)=>Y(O.target.value),children:Z.map((O)=>$("option",{value:O.url,children:O.name},O.url,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),N?$("div",{class:"enroll-err",children:N},void 0,!1,void 0,this):!F?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G==="phone"?$(EG,{config:F},void 0,!1,void 0,this):$(pG,{config:F},void 0,!1,void 0,this),F&&$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 接入码含桶访问密钥,请勿公开分享;不含加密口令——新设备需另输口令。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G==="server"&&$(dG,{onPaired:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function O3(Z){return/failed to fetch|load failed|networkerror|cors/i.test(Z)}var d1="mh_server_base";function aG(Z,J){let Q=(Z||location.origin).replace(/\/+$/,"");return J?`${Q}/?token=${encodeURIComponent(J)}`:Q}var J8=[{id:"r2",name:"Cloudflare R2",region:"auto",ph:"https://<账户ID>.r2.cloudflarestorage.com",hint:"R2 控制台 → 管理 R2 API 令牌,创建 S3 凭据;区域填 auto。免费额度 10GB。"},{id:"s3",name:"Amazon S3",region:"us-east-1",ph:"https://s3.<区域>.amazonaws.com",hint:"IAM 用户的访问密钥;区域如 us-east-1。"},{id:"minio",name:"MinIO",region:"us-east-1",ph:"https://minio.你的域名",hint:"自建 MinIO 的访问地址与 access / secret key。"},{id:"cos",name:"腾讯云 COS",region:"ap-shanghai",ph:"https://<桶名-APPID>.cos.<区域>.myqcloud.com",hint:"桶名须含 APPID,用虚拟主机风格地址(host 以桶名开头)。"},{id:"custom",name:"自定义",region:"auto",ph:"https://s3.example.com",hint:"任何 S3 兼容对象存储。"}];function nG({onDone:Z,toServer:J,alsoReplica:Q}){let[X,z]=R(""),[W,G]=R(""),[q,H]=R("auto"),[Y,F]=R(""),[K,N]=R(""),[U,O]=R("metahub"),[C,f]=R(!0),[h,_]=R(""),[M,k]=R(!1),[T,L]=R("r2"),P=J8.find((y)=>y.id===T)??J8[4],w=(y)=>{L(y);let S=J8.find((p)=>p.id===y);if(S&&J8.some((p)=>p.region===q))H(S.region)},A=async()=>{if(!X.trim()||!W.trim()||!Y.trim()||!K.trim()){s("服务地址、桶名称、访问密钥 ID、密钥都要填");return}if(C&&!h){s("加密口令必填(或关闭加密)");return}k(!0);try{let y={endpoint:X.trim(),region:q.trim()||"auto",bucket:W.trim(),prefix:U.trim()||"metahub",accessKeyId:Y.trim(),secretAccessKey:K.trim(),encrypt:C};if(J){if(await d.addServerS3Peer({...y,passphrase:h,corsOrigins:[location.origin]}),Q)await b0("addStorageReplica",{...y,publish:!1},h)}else await b0("addStorageReplica",y,h);s(J?Q?"已连接存储桶 · 服务器开始同步到桶,这台设备也直接同步":"已连接存储桶 · 服务器开始同步到桶":"已连接存储桶 · 这台设备开始同步到桶"),Z()}catch(y){let S=y.message;s(O3(S)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE(R2 控制台一条规则即可)。":`添加失败:${S}`),k(!1)}};return $(G9,{title:"连接存储桶",sub:"连接一个 S3 兼容存储桶,所有设备就能同步——不需要公网服务器。新桶自动初始化;已有桶用相同加密口令即可加入。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,disabled:M,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:A,disabled:M,children:M?"连接中…":"连接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"set-hint",style:{marginTop:0,marginBottom:12},children:J?"连接后,云端工作区负责把整库同步到这个桶;这台设备和其他设备都从它同步。":"连接后,这台设备(本机)把整库同步到这个桶;新设备扫码加入即可一起用。"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"存储服务商"},void 0,!1,void 0,this),$("div",{class:"provider-grid",children:J8.map((y)=>$("button",{class:"provider-chip"+(T===y.id?" sel":""),"aria-pressed":T===y.id,onClick:()=>w(y.id),children:y.name},y.id,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"set-hint",children:P.hint},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务地址"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:P.ph,value:X,onInput:(y)=>z(y.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"桶名称"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"my-metahub",value:W,onInput:(y)=>G(y.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"访问密钥 ID"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"Access Key ID",value:Y,onInput:(y)=>F(y.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"Secret Access Key",value:K,onInput:(y)=>N(y.target.value)},void 0,!1,void 0,this),$("label",{class:"set-check-row",style:{marginTop:14},children:[$("input",{type:"checkbox",checked:C,onChange:(y)=>f(y.target.checked)},void 0,!1,void 0,this),$("span",{children:"端到端加密(强烈建议;关闭后文件以明文存放,仅限完全信任的存储)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),C&&$(r,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"新桶以此创建;其它设备用同一口令加入",value:h,onInput:(y)=>_(y.target.value),onKeyDown:(y)=>y.key==="Enter"&&A()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"这是跨设备共用的一把加密钥——记牢它,换设备 / 加入已有桶时都要用它解开数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("details",{class:"set-disclosure",style:{marginTop:14},children:[$("summary",{children:"进阶"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:[$("div",{class:"field-label",style:{marginTop:0},children:"区域"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:P.region,value:q,onInput:(y)=>H(y.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"大多按服务商默认即可(R2 用 auto)。"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"metahub",value:U,onInput:(y)=>O(y.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"同一个桶里隔离多个工作区时用;默认 metahub。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function lG({onUpdatePending:Z}){let J=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0,[Q,X]=R(null),[z,W]=R(null),[G,q]=R(null),[H,Y]=R(null),[F,K]=R("idle"),[N,U]=R(""),[O,C]=R(null);o(()=>{d.version().then((P)=>W(P.version)).catch(()=>W(null)),(typeof window<"u"?window.metahubDesktop:void 0)?.appVersion?.().then(X).catch(()=>X(null)),J?.installedVersion().then(q).catch(()=>q(null))},[]),o(()=>{if(F==="idle"&&z&&G&&JZ(G,z)>0)K("staged"),Z?.(!0)},[z,G]);let f=()=>{if(z&&G)return JZ(G,z)>0?G:z;return G??z},h=()=>!!(z&&G&&JZ(G,z)>0),_=async()=>{K("checking"),U("");try{let{latest:L}=await J.check();if(!L){U("无法获取最新版本(网络不可用或 GitHub API 受限)"),K("error");return}let P=f();if(!P||JZ(L,P)>0)Y(L),K("available"),Z?.(!0);else s("已是最新版本"),K(h()?"staged":"idle")}catch(L){U(L.message),K("error")}},M=async()=>{K("downloading"),C(null),U("");let L=J.onDownloadProgress?.((P)=>C(P));try{let P=await J.download();if(P)q(P),K("staged"),Z?.(!0),s(`已下载 v${P}`);else s("已是最新版本"),K(h()?"staged":"idle")}catch(P){U(P.message),K("error")}finally{L?.()}},k=null;if(J)switch(F){case"checking":k=$("span",{class:"ver-act","aria-disabled":"true",children:"检查中…"},void 0,!1,void 0,this);break;case"downloading":{let L=O&&O.total>0?Math.min(100,Math.round(O.received/O.total*100)):null;k=$("span",{class:"ver-up ver-dl",children:[$("span",{class:`ver-bar${L==null?" indet":""}`,children:$("span",{class:"ver-bar-fill",style:L!=null?{width:`${L}%`}:void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"ver-num",children:L!=null?`${L}%`:"下载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break}case"available":k=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:["新版本 ",$("span",{class:"ver-num",children:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:M,title:`下载并更新到 v${H}`,children:"下载"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"staged":k=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:[$("span",{class:"ver-num",children:G},void 0,!1,void 0,this)," 待重启"]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:()=>void J.restart(),title:`重启应用以更新到 v${G}`,children:"重启"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"error":k=$("span",{class:"ver-up err",children:[$("span",{class:"ver-msg",children:"检查失败"},void 0,!1,void 0,this),$("button",{class:"ver-act",onClick:_,title:N||"重试",children:"重试"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;default:k=$("button",{class:"ver-act",onClick:_,children:"检查更新"},void 0,!1,void 0,this)}let T=!Q&&!z&&u1;return $("div",{class:"set-footer",children:[Q&&$("span",{children:["App ",$("span",{class:"ver-num",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Q&&z&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),z&&$("span",{children:["Core ",$("span",{class:"ver-num",children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),T&&$("span",{class:"ver-num",children:["v",u1]},void 0,!0,void 0,this),k&&(z||Q||T)&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),k]},void 0,!0,void 0,this)}var i1="CommandOrControl+Shift+Space";function rG(Z){if(["Control","Meta","Alt","Shift"].includes(Z.key))return null;let J=[];if(Z.metaKey||Z.ctrlKey)J.push("CommandOrControl");if(Z.altKey)J.push("Alt");if(Z.shiftKey)J.push("Shift");let Q=Z.key;if(Q===" ")Q="Space";else if(Q.startsWith("Arrow"))Q=Q.slice(5);else if(Q.length===1)Q=Q.toUpperCase();if(J.length===0)return null;return J.push(Q),J.join("+")}function F3(Z){let J=typeof window<"u"&&window.metahubDesktop?.platform==="darwin";return Z.replace("CommandOrControl",J?"⌘":"Ctrl").replace("Alt",J?"⌥":"Alt").replace("Shift",J?"⇧":"Shift").split("+").join(J?" ":"+")}function oG(){let Z=window.metahubDesktop.quicknote,[J,Q]=R(i1),[X,z]=R(!1),[W,G]=R(!1);o(()=>{Z.getSettings().then((F)=>{Q(F.shortcut),z(F.alwaysOnTop)}).catch((F)=>s(`加载失败:${F.message}`))},[]);let q=async(F)=>{try{let K=await Z.setShortcut(F);Q(K.shortcut),s(`快捷键已设为 ${F3(K.shortcut)}`)}catch(K){s(`设置失败:${K.message}`)}},H=(F)=>{if(F.preventDefault(),F.key==="Escape"){G(!1);return}let K=rG(F);if(!K)return;G(!1),q(K)},Y=async()=>{let F=!X;z(F);try{z(await Z.setAlwaysOnTop(F))}catch(K){z(!F),s(`设置失败:${K.message}`)}};return $("div",{class:"set-block",children:[$("div",{class:"set-block-desc",children:"用全局快捷键随时唤起小窗记录想法。小窗也可从菜单栏图标打开。"},void 0,!1,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"唤起快捷键"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"点击下方按钮,然后按下你想用的组合键。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary qn-shortcut"+(W?" capturing":""),onClick:()=>G(!0),onBlur:()=>G(!1),onKeyDown:W?H:void 0,children:W?"按下组合键…":F3(J)},void 0,!1,void 0,this),J!==i1&&$("button",{class:"btn btn-ghost",title:"重置默认",onClick:()=>void q(i1),children:"重置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"默认始终置顶"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"小窗浮在其他窗口之上;也可在小窗内用 \uD83D\uDCCC 按钮切换。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),"aria-pressed":X,onClick:()=>void Y(),children:X?"已开启":"已关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function yZ(Z){if(!Z)return"从未";return new Date(Z).toLocaleString()}function tG(){let[Z,J]=R(null),Q=()=>d.listPeers().then(J).catch((q)=>s(`加载失败:${q.message}`));o(()=>{Q()},[]);let X=async(q)=>{try{let H=await d.syncPeer(q.url);s(H.ok?`已同步:推送 ${H.pushed},拉取 ${H.pulled}`:`同步失败:${H.error}`),Q()}catch(H){s(`同步失败:${H.message}`)}},z=async(q)=>{await d.updatePeer(q.url,{enabled:!q.enabled}).catch((H)=>s(H.message)),Q()},W=async(q)=>{if(!await R0({title:"移除同步设备",message:`确定移除 ${q.url}?将停止与该设备的数据同步。`,confirmLabel:"移除",danger:!0}))return;await d.removePeer(q.url).catch((Y)=>s(Y.message)),Q()},G=(q,H)=>_0(q,(Y)=>$(r,{children:[$(z0,{icon:"share",label:"立即同步",onClick:()=>{Y(),X(H)}},void 0,!1,void 0,this),$(z0,{icon:H.enabled?"eyeOff":"check",label:H.enabled?"禁用":"启用",onClick:()=>{Y(),z(H)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"移除",danger:!0,onClick:()=>{Y(),W(H)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"同步设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"已直接配对的设备(服务器 HTTP 双向同步)。新增请用上方「同步 → 添加设备 → 高级:服务器配对」。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有配对的设备。"},void 0,!1,void 0,this):Z.map((q)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(q.enabled?q.last_status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:q.label||q.url},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[q.enabled?"已启用":"已禁用"," · 最近同步 ",yZ(q.last_success_at),q.last_status==="error"&&q.last_error?` · 错误:${q.last_error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",onClick:(H)=>G(H,q),children:$(g,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},q.url,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sG(){let[Z,J]=R(null),Q=()=>d.listGrants().then(J).catch((z)=>s(`加载失败:${z.message}`));o(()=>{Q()},[]);let X=async(z)=>{if(!await R0({title:"吊销凭据",message:`吊销后,持有此凭据的设备${z.peer_url?`(${z.peer_url})`:""}将无法再同步进本机。`,confirmLabel:"吊销",danger:!0}))return;await d.revokeGrant(z.token).catch((G)=>s(G.message)),Q()};return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"已授权设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"本机签发、允许其他设备同步进来的凭据。吊销即断开对方的入站访问。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有签发任何凭据。"},void 0,!1,void 0,this):Z.map((z)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot on"},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:z.peer_url||"(未知地址)"},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[z.token.slice(0,8),"… · 签发于 ",yZ(z.created_at)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"吊销",onClick:()=>X(z),children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},z.token,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Q6=(Z)=>location.origin+"/sites/"+Z+"/",N3=(Z)=>"/"+Z+"/",eG=(Z)=>(/\.([a-z0-9]+)$/i.exec(Z)?.[1]??"").toLowerCase(),w3=(Z)=>Z.startsWith("image/");function C3(Z){let J=Number(Z.split("-")[0]);if(!Number.isFinite(J)||J<=0)return"—";return new Date(J).toISOString().slice(0,10)}function Zq(Z){let J=eG(Z.path);if(["html","htm","js","mjs","css","json","xml"].includes(J))return"code";if(w3(Z.content_type))return"file";if(["md","txt"].includes(J))return"text";return"file"}function Q8(Z){navigator.clipboard?.writeText(Z).catch(()=>{}),s("已复制")}function M3(){let[Z,J]=R(null),[Q,X]=R(null),[z,W]=R(null),G=KZ(),q=()=>d.listSites().then((F)=>{J(F),X((K)=>K?F.find((N)=>N.id===K.id)??null:null)}).catch((F)=>s(`加载失败:${F.message}`));o(()=>{q()},[]);let H=()=>z9($(Jq,{onCreated:(F)=>{q(),X(F)}},void 0,!1,void 0,this)),Y=(F,K,N)=>{_0(F,(U)=>$(r,{children:[$(z0,{icon:"externalLink",label:"复制访问地址",onClick:()=>{U(),Q8(Q6(K.name))}},void 0,!1,void 0,this),$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{U(),A9({kind:"site",ref:K.id,title:K.title??K.name})}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"修改标题…",onClick:async()=>{U();let O=await H9({title:"修改标题",label:"标题",value:K.title??K.name});if(O==null)return;try{await d.updateSite(K.id,{title:O})}catch(C){return s(C.message)}q()}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除站点",danger:!0,onClick:async()=>{if(U(),!await R0({title:"删除站点?",message:`「${K.name}」及其 ${K.file_count} 个文件将被删除。`,confirmLabel:"删除",danger:!0}))return;try{await d.deleteSite(K.id)}catch(C){return s(C.message)}if(N)X(null);q()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"db sites-page",children:[$("div",{class:"db-head",children:[$("div",{children:[$("div",{class:"db-title",children:"站点管理"},void 0,!1,void 0,this),$("div",{class:"db-desc",children:"发布静态站点,生成可分享的访问链接。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-primary site-new",onClick:H,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z==null?$("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"site-empty",children:[$("div",{class:"ei",children:$(g,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"et",children:"还没有站点"},void 0,!1,void 0,this),$("div",{class:"ed",children:"站点是一个命名文件桶,发布后可通过 /sites/<name>/ 直接访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:H,children:[$(g,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$(r,{children:[$("div",{class:"sites-grid",children:Z.map((F,K)=>$("div",{class:"site-card",style:`--i:${K}`,onClick:()=>X(F),children:[$("div",{class:"site-card-head",children:[$("span",{class:"si",children:$(g,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"site-card-id",children:[$("div",{class:"slug",children:F.name},void 0,!1,void 0,this),$("div",{class:"ttl"+(F.title?"":" muted"),children:F.title||"未命名站点"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G.has(F.id)&&$("span",{class:"share-badge",title:"已分享 · 管理分享",style:{marginLeft:"auto"},onClick:(N)=>{N.stopPropagation(),A9({kind:"site",ref:F.id,title:F.title??F.name})},children:$(g,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"site-addr",title:"点击复制访问地址",onClick:(N)=>{N.stopPropagation(),Q8(Q6(F.name))},children:[$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:N3(F.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-meta",children:[$("span",{children:[$("b",{children:F.file_count},void 0,!1,void 0,this)," 文件"]},void 0,!0,void 0,this),$("span",{class:"dot",children:"·"},void 0,!1,void 0,this),$("span",{children:C3(F.created_hlc)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-foot",children:[$("button",{class:"btn btn-secondary",style:{flex:1},onClick:(N)=>{N.stopPropagation(),W(F)},children:[$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),"访问"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(N)=>{N.stopPropagation(),Y(N,F)},children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},F.id,!0,void 0,this))},void 0,!1,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",Z.length," 个站点"]},void 0,!0,void 0,this),$("span",{children:[Z.reduce((F,K)=>F+K.file_count,0)," 个文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Q&&$($q,{site:Q,onClose:()=>X(null),onVisit:()=>W(Q),onMenu:(F)=>Y(F,Q,!0),onChanged:q},void 0,!1,void 0,this),z&&$(Qq,{site:z,onClose:()=>W(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Jq({onCreated:Z}){let[J,Q]=R(""),[X,z]=R(""),W=async()=>{let G=J.trim().toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"");if(!G)return s("请填写站点名称");try{let q=await d.createSite({name:G,title:X.trim()||void 0});p0(),s(`已创建站点「${G}」`),Z(q)}catch(q){s(q.message)}};return $(G9,{title:"新建站点",sub:"创建一个命名文件桶,随同步无冲突复制。",footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:p0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:W,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称(slug)"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:J,placeholder:"例如:docs、demo、status",onInput:(G)=>Q(G.target.value),onKeyDown:(G)=>{if(G.key==="Enter")W()}},void 0,!1,void 0,this),$("div",{class:"field-label",children:"标题(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",value:X,placeholder:"人类可读的标题",onInput:(G)=>z(G.target.value),onKeyDown:(G)=>{if(G.key==="Enter")W()}},void 0,!1,void 0,this),$("div",{class:"muted",style:{fontSize:12,marginTop:10},children:["将通过 ",$("span",{style:{fontFamily:"var(--mono)"},children:"/sites/<名称>/"},void 0,!1,void 0,this)," 对外提供。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function $q({site:Z,onClose:J,onVisit:Q,onMenu:X,onChanged:z}){let[W,G]=R(null),q=W0(null),{open:H,close:Y}=i9(J),F=()=>d.listSiteFiles(Z.id).then(G).catch((C)=>s(C.message));o(()=>{let C=!1;return G(null),d.listSiteFiles(Z.id).then((f)=>!C&&G(f)).catch((f)=>!C&&s(f.message)),()=>{C=!0}},[Z.id]);let K=async(C)=>{let f=C.target,h=Array.from(f.files??[]);if(f.value="",!h.length)return;let _=0;try{for(let M of h)await d.uploadSiteFile(Z.id,M.name,M),_++;s(`已上传 ${_} 个文件`)}catch(M){s(`已上传 ${_}/${h.length} 个,其余失败:${M.message}`)}finally{F(),z()}},N=async(C)=>{if(!await R0({title:"删除文件?",message:`「${C.path}」将从站点「${Z.name}」中删除。`,confirmLabel:"删除",danger:!0}))return;try{await d.deleteSiteFile(Z.id,C.path)}catch(h){return s(h.message)}F(),z()},U=Q6(Z.name),O=N3(Z.name);return $(r,{children:[$("div",{class:"scrim"+(H?" open":""),onClick:Y},void 0,!1,void 0,this),$("div",{class:"peek"+(H?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:Y,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1,display:"flex",alignItems:"center",gap:8,minWidth:0,fontWeight:600,fontSize:14},children:[$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),$("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(g,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(C)=>X(C),children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("input",{ref:q,type:"file",multiple:!0,style:{display:"none"},onChange:K},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:[$("h2",{style:{margin:"0 0 20px"},children:Z.title||Z.name},void 0,!1,void 0,this),$("div",{class:"acc-link",children:[$("span",{class:"url",children:O},void 0,!1,void 0,this),$("button",{title:"复制地址",onClick:()=>Q8(U),children:$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"accent",title:"访问站点",onClick:Q,children:$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-meta",children:[$("span",{children:[$("b",{children:W?.length??Z.file_count},void 0,!1,void 0,this)," 个文件"]},void 0,!0,void 0,this),$("span",{children:["创建于 ",C3(Z.created_hlc)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"files-head",children:[$("span",{children:"文件"},void 0,!1,void 0,this),$("span",{children:W?.length??""},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):W.length===0?$("div",{class:"site-empty",style:{marginTop:4},children:[$("div",{class:"ei",children:"\uD83D\uDCC1"},void 0,!1,void 0,this),$("div",{class:"et",children:"站点还没有文件"},void 0,!1,void 0,this),$("div",{class:"ed",children:"上传文件后即可通过站点地址访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(g,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$("div",{children:W.map((C)=>$("div",{class:"filerow",onClick:()=>z9($(A3,{site:Z,file:C},void 0,!1,void 0,this)),children:[$("span",{class:"fi",children:$(g,{name:Zq(C),cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"fpath",children:C.path},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(C.encoding==="blob"?" blob":""),children:C.encoding},void 0,!1,void 0,this),$("div",{class:"facts",children:[$("button",{title:"预览",onClick:(f)=>{f.stopPropagation(),z9($(A3,{site:Z,file:C},void 0,!1,void 0,this))},children:$(g,{name:"eye",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"复制路径",onClick:(f)=>{f.stopPropagation(),Q8("/sites/"+Z.name+"/"+C.path)},children:$(g,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"del",title:"删除",onClick:(f)=>{f.stopPropagation(),N(C)},children:$(g,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},C.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function A3({site:Z,file:J}){let Q="/sites/"+Z.name+"/"+J.path,[X,z]=R(null),W=w3(J.content_type),G=!W&&(J.encoding==="utf8"||/text\/|json|javascript|xml/.test(J.content_type));return o(()=>{if(!G)return;fetch(Q).then((q)=>q.text()).then(z).catch(()=>z("(无法加载内容)"))},[Q]),$(G9,{title:J.path,sub:Q,width:680,footer:$(r,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Q8(Q),children:"复制路径"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:p0,children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center",color:"var(--muted)",fontSize:12,marginBottom:12},children:[$("span",{children:J.content_type},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(J.encoding==="blob"?" blob":""),children:J.encoding},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W?$("img",{src:Q,style:{maxWidth:"100%",borderRadius:"var(--radius)",border:"1px solid var(--line)"}},void 0,!1,void 0,this):G?X==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):$("div",{class:"preview-box",children:X},void 0,!1,void 0,this):$("div",{class:"preview-bin",children:[$("div",{class:"pi",children:"\uD83D\uDCE6"},void 0,!1,void 0,this),$("div",{class:"pt",children:"二进制文件 · 在新标签打开查看"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Qq({site:Z,onClose:J}){o(()=>{let X=(z)=>{if(z.key==="Escape")J()};return addEventListener("keydown",X),()=>removeEventListener("keydown",X)},[]);let Q="/sites/"+Z.name+"/";return $("div",{class:"spv-scrim open",onClick:(X)=>{if(X.target===X.currentTarget)J()},children:$("div",{class:"spv",children:[$("div",{class:"spv-chrome",children:[$("div",{class:"spv-dots",children:[$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"spv-url",children:[$(g,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:Q6(Z.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"spv-btn",title:"在新标签打开",onClick:()=>window.open(Q,"_blank"),children:[$(g,{name:"externalLink",cls:"ico sm"},void 0,!1,void 0,this),"新标签"]},void 0,!0,void 0,this),$("button",{class:"spv-btn icon",title:"关闭",onClick:J,children:$(g,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("iframe",{class:"spv-frame",src:Q,sandbox:"allow-scripts allow-same-origin"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var Xq={doc:"file",database:"database",site:"globe"};function zq(Z){if(Z==null)return{text:"永久",warn:!1,dead:!1};let J=Z-Date.now();if(J<=0)return{text:"已过期",warn:!0,dead:!0};let Q=Math.floor(J/86400000),X=Math.floor(J/3600000);if(Q>=1)return{text:`${Q} 天后过期`,warn:Q<=2,dead:!1};if(X>=1)return{text:`${X} 小时后过期`,warn:!0,dead:!1};return{text:"即将过期",warn:!0,dead:!1}}function y3({onNavigate:Z}){let[J,Q]=R(null),[X,z]=R("all"),[W,G]=R(""),q=()=>d.listShares().then(Q).catch((U)=>s(`加载失败:${U.message}`));o(()=>{return q(),document.addEventListener(YZ,q),()=>document.removeEventListener(YZ,q)},[]);let{copyShare:H,revoke:Y,renew:F}=E6(q,s,s),K=M9(()=>{let U=J??[],O=W.trim().toLowerCase();return U.filter((C)=>(X==="all"||C.transport===X)&&(!O||C.title.toLowerCase().includes(O)||C.source.toLowerCase().includes(O)))},[J,X,W]),N=(U)=>{if(U.kind==="doc")Z({kind:"doc",id:U.target_id});else if(U.kind==="database")Z({kind:"db",id:U.target_id});else Z({kind:"sites"})};return $("div",{class:"db shares-page",children:[$("div",{class:"db-head",children:[$("div",{children:[$("div",{class:"db-title",children:"分享"},void 0,!1,void 0,this),$("div",{class:"db-desc",children:"通过服务器或对象存储对外分享的文档、表格与站点。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-tools",children:[$("div",{class:"shv-seg",role:"tablist",children:["all","server","s3"].map((U)=>$("button",{class:"shv-seg-btn"+(X===U?" active":""),onClick:()=>z(U),children:U==="all"?"全部":U==="server"?"服务器":"对象存储"},U,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"shv-search",children:[$(g,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{placeholder:"搜索标题 / 来源…",value:W,onInput:(U)=>G(U.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),J==null?$("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):K.length===0?$("div",{class:"site-empty",children:[$("div",{class:"ei",children:$(g,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"et",children:J.length===0?"还没有公开分享":"没有匹配的分享"},void 0,!1,void 0,this),$("div",{class:"ed",children:"在文档、表格或站点里点「通过设备分享」即可创建——可经服务器(支持可编辑)或对象存储(只读、端到端加密)。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("ul",{class:"shv-list",children:K.map((U)=>{let O=zq(U.expiresAt);return $("li",{class:"shv-row",children:[$("span",{class:"shv-ico k-"+U.kind,children:$(g,{name:Xq[U.kind]??"file"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"shv-main",children:[$("div",{class:"shv-titleline",children:[$("button",{class:"shv-title",onClick:()=>N(U),title:"打开对象",children:U.title},void 0,!1,void 0,this),$("span",{class:"shv-pill t-"+U.transport,children:U.transport==="s3"?"对象存储":"服务器"},void 0,!1,void 0,this),$("span",{class:"shv-pill p-"+U.permission,children:U.permission==="edit"?"可编辑":"只读"},void 0,!1,void 0,this),U.hasPassword&&$("span",{class:"shv-lock",title:"口令保护",children:"\uD83D\uDD12"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-meta",children:["经 ",U.source,$("span",{class:"shv-exp"+(O.warn?" warn":"")+(O.dead?" dead":""),children:["· ",O.text]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-actions",children:[$("button",{class:"btn btn-secondary",onClick:()=>H(U),children:"复制链接"},void 0,!1,void 0,this),U.transport==="s3"&&$("button",{class:"btn btn-secondary",onClick:()=>F(U),children:"续期"},void 0,!1,void 0,this),U.url&&$("a",{class:"btn btn-secondary",href:U.url,target:"_blank",rel:"noreferrer",children:"打开"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>Y(U),children:"撤销"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},U.slug,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function a1(Z){switch(Z.kind){case"db":return`#/db/${encodeURIComponent(Z.id)}`;case"doc":return`#/doc/${encodeURIComponent(Z.id)}`;case"search":return`#/search?q=${encodeURIComponent(Z.q)}`;case"settings":return"#/settings";case"sites":return"#/sites";case"shares":return"#/shares";case"empty":return"#/"}}function n1(Z){if(!Z.startsWith("#/"))return{kind:"empty"};let[J="",Q=""]=Z.slice(2).split("?",2),[X,z=""]=J.split("/",2);try{if(X==="db"&&z)return{kind:"db",id:decodeURIComponent(z)};if(X==="doc"&&z)return{kind:"doc",id:decodeURIComponent(z)};if(X==="search"){let W=new URLSearchParams(Q).get("q");if(W)return{kind:"search",q:W}}if(X==="settings")return{kind:"settings"};if(X==="sites")return{kind:"sites"};if(X==="shares")return{kind:"shares"}}catch{}return{kind:"empty"}}var _3="mh-quicknote-last",v3="mh-quicknote-parent",T3="Quick Notes";function Wq(Z,J){return(J.created_hlc??"").localeCompare(Z.created_hlc??"")}async function Gq(){let Z=localStorage.getItem(v3);if(Z)try{return await d.getDocument(Z),Z}catch{}let X=(await d.listDocuments()).find((z)=>z.parent_id==null&&z.title===T3)?.id??(await d.createDocument({title:T3})).id;return localStorage.setItem(v3,X),X}function k3(){let[Z,J]=R(null),[Q,X]=R([]),[z,W]=R(null),[G,q]=R(""),[H,Y]=R(!1),F=W0(null),K=typeof window<"u"?window.metahubDesktop?.quicknote:void 0,N=x9(async(M)=>{let k=(await d.listDocumentsByParent(M)).sort(Wq);return X(k),k},[]);o(()=>{if(!Z)return;let M,k=()=>{clearTimeout(M),M=setTimeout(()=>void N(Z),80)};return document.addEventListener(L9,k),()=>{clearTimeout(M),document.removeEventListener(L9,k)}},[Z,N]);let U=x9(async(M)=>{let k=await d.createDocument({title:"",parent_id:M});return await N(M),k.id},[N]);o(()=>{(async()=>{try{let M=await Gq();J(M);let k=await N(M),T=localStorage.getItem(_3),L=T&&k.some((P)=>P.id===T)&&T||k[0]?.id||await U(M);W(L)}catch(M){q(String(M.message))}})()},[N,U]),o(()=>{if(z)localStorage.setItem(_3,z)},[z]),o(()=>{K?.getAlwaysOnTop().then(Y).catch(()=>{})},[K]),o(()=>{if(!K)return;let M=(k)=>{if(k.key==="Escape")K.hide()};return addEventListener("keydown",M),()=>removeEventListener("keydown",M)},[K]);let O=async()=>{if(!Z)return;try{W(await U(Z))}catch(M){q(String(M.message))}},C=async()=>{if(!K)return;let M=!H;Y(M);try{Y(await K.setAlwaysOnTop(M))}catch{Y(!M)}},f=async()=>{if(!z||!Z)return;if(!await R0({title:"删除笔记?",message:"该快速笔记将被删除。",confirmLabel:"删除",danger:!0}))return;await d.deleteDocument(z);let k=await N(Z);W(k[0]?.id??await U(Z))},h=(M)=>{_0(M,(k)=>$(r,{children:[$(h0,{children:"快速笔记"},void 0,!1,void 0,this),Q.length===0&&$("div",{class:"lbl",children:"还没有笔记"},void 0,!1,void 0,this),Q.map((T)=>$(z0,{icon:"file",label:T.title||"无标题",checked:T.id===z,onClick:()=>{k(),W(T.id)}},T.id,!1,void 0,this)),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"新建笔记",onClick:()=>{k(),O()}},void 0,!1,void 0,this),z&&$(z0,{icon:"trash",label:"删除当前笔记",danger:!0,onClick:()=>{k(),f()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),{minWidth:220})},_=Q.find((M)=>M.id===z)?.title;return $("div",{class:"qn",children:[$("div",{class:"qn-bar",children:[$("span",{class:"qn-brand",children:_||"快速笔记"},void 0,!1,void 0,this),$("div",{class:"qn-actions",children:[$("button",{class:"iconbtn",title:"新建笔记",onClick:()=>void O(),children:$(g,{name:"plus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"笔记列表",onClick:h,children:$(g,{name:"list"},void 0,!1,void 0,this)},void 0,!1,void 0,this),K&&$("button",{class:"iconbtn"+(H?" active":""),title:H?"取消置顶":"始终置顶",onClick:()=>void C(),children:$(g,{name:"pin"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),G&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",G,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"qn-body",children:z?$(s8,{docId:z,onError:q,onHandle:(M)=>F.current=M},z,!1,void 0,this):$("div",{class:"empty",children:$("div",{children:"加载中…"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(k8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function qq(){let Z=typeof location<"u"?location.hash:"",J=Z.includes("?")?Z.slice(Z.indexOf("?")+1):"",Q=new URLSearchParams(J);return{src:Q.get("src")||"",name:Q.get("name")||void 0,blockId:Q.get("bid")||""}}function R3(){let Z=qq(),[J,Q]=R(Z.src),X=async(z)=>{try{let W=await d.uploadDocBlob(new File([z],"annotated.png",{type:"image/png"}));try{let G=new BroadcastChannel("mh-doc-image");G.postMessage({action:"replace",blockId:Z.blockId,url:W.url}),G.close()}catch{}Q(W.url)}catch(W){s(`保存失败:${W.message}`)}};return $("div",{class:"lightbox preview-win",children:$(k1,{src:J,name:Z.name,draggableBar:!0,onClose:()=>window.close(),onReplace:X},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var Hq=/[",\r\n]/;function Yq(Z){return Hq.test(Z)?`"${Z.replace(/"/g,'""')}"`:Z}function I3(Z){return Z.map((J)=>J.map(Yq).join(",")).join(`
|
|
147
|
+
`)}function l1(Z,J){let Q=J.startsWith(".")?J:"."+J,X=Z.trim().replace(/[\\/:*?"<>|\x00-\x1f]/g,"-").replace(/\s+/g," ").replace(/^\.+$/,"").slice(0,90)||"untitled";return X.toLowerCase().endsWith(Q.toLowerCase())?X:X+Q}function r1(Z,J,Q){let X=URL.createObjectURL(new Blob([J],{type:Q})),z=document.createElement("a");z.href=X,z.download=Z,document.body.appendChild(z),z.click(),z.remove(),setTimeout(()=>URL.revokeObjectURL(X),0)}function S3(Z,J){let Q=["id",...Z.map((z)=>z.name)],X=J.map((z)=>[z.id,...Z.map((W)=>Kq(z.cells[W.id]))]);return I3([Q,...X])}function Kq(Z){if(Z==null)return"";if(typeof Z==="boolean")return Z?"true":"false";if(typeof Z==="object")return JSON.stringify(Z);return String(Z)}function Fq(){let[Z,J]=R(()=>typeof window<"u"&&window.matchMedia(v8).matches);return o(()=>{let Q=window.matchMedia(v8),X=()=>J(Q.matches);return Q.addEventListener("change",X),()=>Q.removeEventListener("change",X)},[]),Z}function Uq(){let[Z,J]=R([]),[Q,X]=R([]),[z,W]=R(()=>n1(location.hash)),[G,q]=R(""),[H,Y]=R(!1),[F,K]=R(268),[N,U]=R("blocks"),[O,C]=R(!1),[f,h]=R(!1),[_,M]=R(!1),[k,T]=R(!1),[L,P]=R(()=>IZ()),[w,A]=R(!1),[y,S]=R(!1),p=W0(null),n=W0(!1),$0=W0(null),Q0=Fq(),x=x9((I)=>q(I),[]),b=x9((I)=>{p.current=I},[]),u=x9(async()=>{let[I,E]=await Promise.all([d.listDatabases(),d.listDocuments()]);J(I),X(E),C(!0)},[]);o(()=>{u().catch((I)=>x(String(I.message)))},[u]),o(()=>{let I,E=()=>{clearTimeout(I),I=setTimeout(()=>u().catch((a)=>x(String(a.message))),80)};return document.addEventListener(L9,E),()=>{clearTimeout(I),document.removeEventListener(L9,E)}},[u,x]),o(()=>{if(I9().surface==="desktop")return;EJ()},[]),o(()=>F9((I)=>P({...I})),[]),o(()=>{if(Boolean(L.bucketDirty||L.bucketSyncing)){n.current=!0,A(!1);return}if(!n.current||L.bucketError)return;n.current=!1,A(!0);let E=setTimeout(()=>A(!1),900);return()=>clearTimeout(E)},[L.bucketDirty,L.bucketSyncing,L.bucketError]),o(()=>{N6().then(()=>C8())},[]);let[V,i]=R(typeof navigator<"u"&&!navigator.onLine);o(()=>{let I=()=>i(!1),E=()=>i(!0);return window.addEventListener("online",I),window.addEventListener("offline",E),()=>{window.removeEventListener("online",I),window.removeEventListener("offline",E)}},[]),o(()=>{let I=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0;if(!I)return;Promise.all([d.version().then((E)=>E.version).catch(()=>null),I.installedVersion().catch(()=>null)]).then(([E,a])=>{if(E&&a&&JZ(a,E)>0)h(!0)})},[]);let Z0=(I,E)=>{let a=a1(I);if(location.hash!==a)history[E?.replace?"replaceState":"pushState"](null,"",a);W(I)};o(()=>{if(location.hash&&!location.hash.startsWith("#/"))history.replaceState(null,"","#/");let I=()=>W(n1(location.hash));return window.addEventListener("hashchange",I),()=>window.removeEventListener("hashchange",I)},[]);let G0=()=>d.createDocument({title:""}).then((I)=>Z0({kind:"doc",id:I.id})).catch((I)=>x(String(I.message))),J0=z.kind==="db"?Z.find((I)=>I.id===z.id):void 0,e=z.kind==="doc"?Q.find((I)=>I.id===z.id):void 0,P0=z.kind==="doc"?z.id:null,l0=z.kind==="db"?z.id:null;o(()=>{U("blocks"),M(!1)},[P0]),o(()=>{T(!1)},[l0]);let c0=z.kind!=="empty",d0=W0(0);o(()=>{let I=Q0&&c0;if(I&&!document.body.classList.contains("mobile-content"))d0.current=window.scrollY;if(document.body.classList.toggle("mobile",Q0),document.body.classList.toggle("mobile-content",I),e8(),Q0)window.scrollTo(0,I?0:d0.current)},[Q0,c0,z]),o(()=>{let I=(E)=>{if((E.metaKey||E.ctrlKey)&&E.key.toLowerCase()==="k"){E.preventDefault(),document.querySelector(".sb-search input")?.focus();return}if((E.metaKey||E.ctrlKey)&&E.key.toLowerCase()==="s"){if($0.current?.())E.preventDefault()}};return window.addEventListener("keydown",I),()=>window.removeEventListener("keydown",I)},[]),o(()=>{let I=window.matchMedia("(prefers-color-scheme: dark)"),E=()=>{m1(),e8()};return I.addEventListener("change",E),()=>I.removeEventListener("change",E)},[]);let n0=(I)=>{let E=p.current?.snapshotMarkdown();p.current?.flushSave(),(E==null?d.getDocument(I.id).then((F0)=>F0.body??""):Promise.resolve(E)).then((F0)=>r1(l1(I.title||I.id,".md"),F0,"text/markdown;charset=utf-8")).catch((F0)=>x(String(F0.message)))},E0=(I)=>{Promise.all([d.listProperties(I.id),d.listRecords(I.id)]).then(([E,a])=>r1(l1(I.name||I.id,".csv"),S3(E,a),"text/csv;charset=utf-8")).catch((E)=>x(String(E.message)))},N0=(I)=>{_0(I,(E)=>$(r,{children:[$(z0,{icon:"link",label:"复制链接",onClick:()=>{E(),navigator.clipboard.writeText(location.origin+location.pathname+a1(z)).then(()=>s("链接已复制")).catch((a)=>x(String(a.message)))}},void 0,!1,void 0,this),z.kind==="doc"&&e&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{E(),A9({kind:"doc",ref:e.id,title:e.title})}},void 0,!1,void 0,this),z.kind==="db"&&J0&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{E(),A9({kind:"database",ref:J0.id,title:J0.name})}},void 0,!1,void 0,this),z.kind==="doc"&&e&&$(z0,{icon:"download",label:"导出 Markdown",onClick:()=>{E(),n0(e)}},void 0,!1,void 0,this),z.kind==="db"&&J0&&$(z0,{icon:"download",label:"导出 CSV",onClick:()=>{E(),E0(J0)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},v0=e0()&&(L.bucketDirty||L.bucketSyncing||L.bucketError||w)?L.bucketSyncing?"saving":w?"saved":L.bucketError?"error":"dirty":"share",O0=v0==="saving"?"保存中…":v0==="saved"?"已保存":v0==="share"?"分享":"保存",j0=v0==="share"?"share":v0==="saved"?"cloudCheck":v0==="saving"?"spinner":v0==="error"?"cloudOff":"cloudUp",i0=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform),o0=v0==="share"?"分享":v0==="error"?`保存到云端失败:${L.bucketError??""}`:`保存到云端${Q0?"":i0?" · ⌘S":" · Ctrl+S"}`,K0=async()=>{try{await p.current?.flushSave(),await hJ();let I=IZ();if(I.bucketError)throw Error(I.bucketError);if(I.bucketDirty)throw Error("仍有改动尚未保存到云端")}catch(I){s(`保存失败:${I.message}`)}},q0=()=>{S(!0),window.setTimeout(()=>S(!1),320)},A0=(I)=>{if(v0==="share"){N0(I);return}if(v0==="saving"||v0==="saved")return;K0()};$0.current=()=>{if(z.kind!=="doc"&&z.kind!=="db")return!1;if(v0==="saving"||v0==="saved")return!0;if(v0==="dirty"||v0==="error")K0(),q0();else if(e0())s("已是最新"),q0();return!0};let j=(I)=>{if(z.kind==="doc"&&e)_0(I,(E)=>$(r,{children:[$(z0,{icon:"code",label:N==="source"?"块方式显示":"代码方式显示",checked:N==="source",onClick:()=>{E(),p.current?.setMode(N==="source"?"blocks":"source")}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{E(),p.current?.flushSave();try{let a=await d.duplicateDocument(e.id,{title:`${e.title||"无标题"} 副本`});Z0({kind:"doc",id:a.id}),s("已创建副本")}catch(a){x(String(a.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"版本历史",onClick:()=>{E(),p.current?.flushSave(),M(!0)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{E();let a=await H9({title:"重命名文档",value:e.title});if(a)await d.updateDocument(e.id,{title:a})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除文档",danger:!0,onClick:async()=>{if(E(),await R0({title:"删除文档?",message:`「${e.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))await d.deleteDocument(e.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));else if(z.kind==="db"&&J0)_0(I,(E)=>$(r,{children:[$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{E();try{let a=await d.duplicateDatabase(J0.id,{name:`${J0.name} 副本`});Z0({kind:"db",id:a.id}),s("已创建副本")}catch(a){x(String(a.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"最近动态",onClick:()=>{E(),T(!0)}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{E();let a=await H9({title:"重命名数据库",value:J0.name});if(a&&a!==J0.name)await d.updateDatabase(J0.id,{name:a})}},void 0,!1,void 0,this),$(f0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(E(),await R0({title:"删除数据库?",message:`「${J0.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))await d.deleteDatabase(J0.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $(r,{children:[$(L5,{databases:Z,docs:Q,view:z,navigate:Z0,width:F,collapsed:H,onResize:K,onCollapse:()=>Y(!0),updatePending:f,onError:x},void 0,!1,void 0,this),$("div",{class:"main",children:[$("div",{class:"topbar"+(z.kind==="empty"?" bare":""),children:[$("button",{class:"iconbtn hamburger"+(H?" show-collapsed":""),title:Q0?"返回":H?"展开侧栏":"菜单",onClick:()=>Q0?Z0({kind:"empty"}):Y(!1),children:$(g,{name:Q0?"arrowLeft":"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"crumb",children:[z.kind==="doc"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:e?.title||"无标题"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="db"&&$(r,{children:[$("span",{class:"emoji",children:J0?.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{children:J0?.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="search"&&$("span",{children:["搜索:“",z.q,"”"]},void 0,!0,void 0,this),z.kind==="settings"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"设置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="sites"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"站点管理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="shares"&&$(r,{children:[$("span",{class:"emoji",children:$(g,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"分享"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(z.kind==="doc"||z.kind==="db")&&$(r,{children:[$("button",{class:`btn share-save share-save-${v0}${y?" share-save-kbd":""}`,title:o0,disabled:v0==="saving"||v0==="saved",onClick:A0,children:[$("span",{class:"share-save-ico",children:$(g,{name:j0,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"share-save-label",children:O0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",onClick:j,children:$(g,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),V&&$("div",{class:"offline-bar",children:e0()?"⚡ 离线 — 本地副本模式:可正常查看和编辑全部内容,恢复连接后自动同步":"⚡ 离线 — 可浏览已缓存的内容,修改会失败;恢复网络后自动恢复"},void 0,!1,void 0,this),G&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",G,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"content",children:[z.kind==="empty"&&$(Lq,{onNewDoc:G0},void 0,!1,void 0,this),z.kind==="db"&&J0&&$(g5,{db:J0,onError:x},J0.id,!1,void 0,this),z.kind==="db"&&!J0&&$("div",{class:"empty",children:O?"数据库不存在或已被删除。":"加载中…"},void 0,!1,void 0,this),z.kind==="doc"&&$(s8,{docId:z.id,onError:x,onModeChange:U,onHandle:b},z.id,!1,void 0,this),z.kind==="search"&&$(Bq,{q:z.q,onOpenDoc:(I)=>Z0({kind:"doc",id:I}),onOpenDb:(I)=>Z0({kind:"db",id:I})},void 0,!1,void 0,this),z.kind==="settings"&&$(L3,{onUpdatePending:h},void 0,!1,void 0,this),z.kind==="sites"&&$(M3,{},void 0,!1,void 0,this),z.kind==="shares"&&$(y3,{onNavigate:Z0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),_&&z.kind==="doc"&&$(y5,{docId:z.id,onClose:()=>M(!1),onReverted:()=>p.current?.reload()},void 0,!1,void 0,this),k&&z.kind==="db"&&$(_5,{dbId:z.id,onClose:()=>T(!1)},void 0,!1,void 0,this),$(k8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Lq({onNewDoc:Z}){return $("div",{class:"empty",children:[$("svg",{class:"estate-art",viewBox:"0 0 220 190",fill:"none","aria-hidden":"true",children:[$("ellipse",{class:"kg-ground ground",cx:"110",cy:"176",rx:"62",ry:"8"},void 0,!1,void 0,this),$("circle",{class:"kg-glow fill-soft",cx:"116",cy:"88",r:"42"},void 0,!1,void 0,this),$("g",{class:"kg-plant",children:[$("path",{class:"kg-stem stroke-a draw",pathLength:"100",d:"M110 134 C110 117 108 106 113 92 C116 83 122 77 128 72"},void 0,!1,void 0,this),$("g",{class:"kg-leaf l1",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M108 108 C90 100 86 88 88 80 C102 80 111 90 108 108 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l2",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M118 90 C133 83 144 86 150 94 C139 105 125 104 118 90 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l3",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M128 72 C128 57 136 48 146 45 C150 58 144 69 128 72 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("rect",{class:"kg-cardB fill-soft",x:"76",y:"124",width:"68",height:"44",rx:"8",transform:"rotate(7 110 146)"},void 0,!1,void 0,this),$("g",{class:"kg-cardA",children:[$("rect",{class:"fill-surface stroke",x:"66",y:"128",width:"76",height:"46",rx:"9",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-a",x:"74",y:"136",width:"18",height:"18",rx:"5",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"139",width:"34",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"150",width:"24",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("circle",{class:"kg-particle p1 fill-a",cx:"44",cy:"62",r:"2.6"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p2 fill-soft",cx:"178",cy:"74",r:"3"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p3 fill-a",cx:"40",cy:"120",r:"2"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p4 fill-soft",cx:"182",cy:"126",r:"2.4"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p5 fill-a",cx:"150",cy:"44",r:"2.2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("p",{class:"estate-title",children:"空空如也"},void 0,!1,void 0,this),$("p",{class:"estate-hint",children:"从左侧选择一个数据库或文档,或新建一个开始。"},void 0,!1,void 0,this),$("button",{class:"estate-link",onClick:Z,children:"+ 新建文档"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Pq({text:Z}){let J=Z.split(/\[([^\[\]]*)\]/g);return $(r,{children:J.map((Q,X)=>X%2?$("mark",{children:Q},X,!1,void 0,this):Q)},void 0,!1,void 0,this)}function Bq({q:Z,onOpenDoc:J,onOpenDb:Q}){let[X,z]=R(null);return o(()=>{z(null),d.search(Z).then(z).catch(()=>z([]))},[Z]),$("div",{class:"db",children:[$("div",{class:"db-title",style:{marginBottom:14},children:["搜索:“",Z,"”"]},void 0,!0,void 0,this),X===null&&$("p",{class:"muted",children:"搜索中…"},void 0,!1,void 0,this),X?.length===0&&$("p",{class:"muted",children:"没有匹配结果。"},void 0,!1,void 0,this),X?.map((W)=>$("div",{class:"search-hit",onClick:()=>W.type==="document"?J(W.id):W.database_id&&Q(W.database_id),children:[$("strong",{children:W.title||W.id},void 0,!1,void 0,this)," ",$("span",{class:"muted",children:W.type==="document"?"文档":"记录"},void 0,!1,void 0,this),$("div",{class:"muted",children:$(Pq,{text:W.snippet},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},W.id,!0,void 0,this))]},void 0,!0,void 0,this)}function V3({text:Z}){return $("div",{class:"enroll-splash",children:[$("div",{class:"enroll-spinner"},void 0,!1,void 0,this),$("div",{class:"muted",children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Oq(){let Z=/[#&]enroll=([^&]+)/.exec(location.hash);if(!Z)return null;try{return q5(Z[1])}catch{return null}}function Aq({onDone:Z}){let J=Oq(),[Q,X]=R(J?.endpoint??""),[z,W]=R(J?.bucket??""),[G,q]=R(J?.region??"auto"),[H,Y]=R(J?.accessKeyId??""),[F,K]=R(J?.secretAccessKey??""),[N,U]=R(J?.prefix??"metahub"),[O,C]=R(J?.encrypt??!0),[f,h]=R(""),[_,M]=R(!1),[k,T]=R(""),L=J!=null,P=async()=>{if(!Q.trim()||!z.trim()||!H.trim()||!F.trim()){T("endpoint、bucket、access key、secret key 必填");return}if(O&&!f){T("加密口令必填");return}M(!0),T("");try{await xJ({endpoint:Q.trim(),region:G.trim()||"auto",bucket:z.trim(),prefix:N.trim()||"metahub",accessKeyId:H.trim(),secretAccessKey:F.trim(),encrypt:O,virtualHostedStyle:J?.virtualHostedStyle},f),Z()}catch(w){let A=w.message;T(/failed to fetch|load failed|networkerror|cors/i.test(A)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`连接失败:${A}`),M(!1)}};return $("div",{class:"enroll",children:$("div",{class:"enroll-card",children:[$("div",{class:"enroll-title",children:"连接你的存储桶"},void 0,!1,void 0,this),$("div",{class:"enroll-sub",children:L?"已从二维码读取桶信息,输入加密口令即可同步你的数据。":"填入 S3 兼容存储桶(R2/COS/MinIO/S3)的连接信息;数据上传前端到端加密。"},void 0,!1,void 0,this),!L&&$(r,{children:[$("div",{class:"field-label",children:"Endpoint"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"https://<bucket>.cos.<region>.myqcloud.com",value:Q,onInput:(w)=>X(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Bucket"},void 0,!1,void 0,this),$("input",{class:"text-input",value:z,onInput:(w)=>W(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Region"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"auto",value:G,onInput:(w)=>q(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Access Key ID"},void 0,!1,void 0,this),$("input",{class:"text-input",value:H,onInput:(w)=>Y(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Secret Access Key"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",value:F,onInput:(w)=>K(w.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",value:N,onInput:(w)=>U(w.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),L&&$("div",{class:"enroll-bucket muted",children:["桶:",z]},void 0,!0,void 0,this),O&&$(r,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:L,placeholder:"与其他设备相同的口令",value:f,onInput:(w)=>h(w.target.value),onKeyDown:(w)=>w.key==="Enter"&&P()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k&&$("div",{class:"enroll-err",children:k},void 0,!1,void 0,this),$("button",{class:"btn btn-primary enroll-go",disabled:_,onClick:P,children:_?"连接中…":"连接并同步"},void 0,!1,void 0,this),$("div",{class:"enroll-hint muted",children:"提示:iPhone 请用 Safari 的「分享 → 添加到主屏」装成 App,离线与持久存储才生效。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Nq(){let[Z,J]=R("detecting");if(o(()=>{N6().then((Q)=>{if(Q==="server")return J("app");if(!q9())return J("enroll");SZ(),J(e0()?"app":"hydrating")})},[]),o(()=>{if(Z!=="hydrating")return;if(e0())return J("app");return F9(()=>{if(e0())J("app")})},[Z]),Z==="detecting")return $(V3,{text:"加载中…"},void 0,!1,void 0,this);if(Z==="enroll")return $(Aq,{onDone:()=>J(e0()?"app":"hydrating")},void 0,!1,void 0,this);if(Z==="hydrating")return $(V3,{text:"正在从云端水合本地副本…"},void 0,!1,void 0,this);return $(Uq,{},void 0,!1,void 0,this)}if(typeof window<"u"&&window.metahubDesktop){if(document.body.classList.add("desktop"),window.metahubDesktop.platform==="darwin")document.body.classList.add("desktop-mac")}if(location.hash.startsWith("#preview"))document.body.classList.add("preview-window"),D9($(R3,{},void 0,!1,void 0,this),document.getElementById("app"));else if(location.hash==="#quick"&&I9().surface==="desktop")document.body.classList.add("quicknote"),D9($(k3,{},void 0,!1,void 0,this),document.getElementById("app"));else D9($(Nq,{},void 0,!1,void 0,this),document.getElementById("app"));
|