@tensorix/metahub 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +25 -3
- package/dist/cli.js.map +3 -3
- package/dist/index.js +25 -3
- package/dist/index.js.map +3 -3
- package/dist/webui.js +48 -47
- package/package.json +1 -1
package/dist/webui.js
CHANGED
|
@@ -1,10 +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`),
|
|
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
|
-
]`,
|
|
6
|
-
]`,"+"),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=`
|
|
1
|
+
var L2=Object.create;var{getPrototypeOf:P2,defineProperty:PJ,getOwnPropertyNames:B2}=Object;var O2=Object.prototype.hasOwnProperty;function A2(Z){return this[Z]}var N2,w2,M2=(Z,J,Q)=>{var X=Z!=null&&typeof Z==="object";if(X){var z=J?N2??=new WeakMap:w2??=new WeakMap,W=z.get(Z);if(W)return W}Q=Z!=null?L2(P2(Z)):{};let G=J||!Z||!Z.__esModule?PJ(Q,"default",{value:Z,enumerable:!0}):Q;for(let q of B2(Z))if(!O2.call(G,q))PJ(G,q,{get:A2.bind(Z,q),enumerable:!0});if(X)z.set(Z,G);return G};var C0=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var B7=C0((wY,P7)=>{function Z7(Z){if(Z instanceof Map)Z.clear=Z.delete=Z.set=function(){throw Error("map is read-only")};else if(Z instanceof Set)Z.add=Z.clear=Z.delete=function(){throw Error("set is read-only")};return Object.freeze(Z),Object.getOwnPropertyNames(Z).forEach((J)=>{let Q=Z[J],X=typeof Q;if((X==="object"||X==="function")&&!Object.isFrozen(Q))Z7(Q)}),Z}class z1{constructor(Z){if(Z.data===void 0)Z.data={};this.data=Z.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function J7(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function b9(Z,...J){let Q=Object.create(null);for(let X in Z)Q[X]=Z[X];return J.forEach(function(X){for(let z in X)Q[z]=X[z]}),Q}var pQ="</span>",l5=(Z)=>{return!!Z.scope},dQ=(Z,{prefix:J})=>{if(Z.startsWith("language:"))return Z.replace("language:","language-");if(Z.includes(".")){let Q=Z.split(".");return[`${J}${Q.shift()}`,...Q.map((X,z)=>`${X}${"_".repeat(z+1)}`)].join(" ")}return`${J}${Z}`};class $7{constructor(Z,J){this.buffer="",this.classPrefix=J.classPrefix,Z.walk(this)}addText(Z){this.buffer+=J7(Z)}openNode(Z){if(!l5(Z))return;let J=dQ(Z.scope,{prefix:this.classPrefix});this.span(J)}closeNode(Z){if(!l5(Z))return;this.buffer+=pQ}value(){return this.buffer}span(Z){this.buffer+=`<span class="${Z}">`}}var r5=(Z={})=>{let J={children:[]};return Object.assign(J,Z),J};class W1{constructor(){this.rootNode=r5(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(Z){this.top.children.push(Z)}openNode(Z){let J=r5({scope:Z});this.add(J),this.stack.push(J)}closeNode(){if(this.stack.length>1)return this.stack.pop();return}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(Z){return this.constructor._walk(Z,this.rootNode)}static _walk(Z,J){if(typeof J==="string")Z.addText(J);else if(J.children)Z.openNode(J),J.children.forEach((Q)=>this._walk(Z,Q)),Z.closeNode(J);return Z}static _collapse(Z){if(typeof Z==="string")return;if(!Z.children)return;if(Z.children.every((J)=>typeof J==="string"))Z.children=[Z.children.join("")];else Z.children.forEach((J)=>{W1._collapse(J)})}}class Q7 extends W1{constructor(Z){super();this.options=Z}addText(Z){if(Z==="")return;this.add(Z)}startScope(Z){this.openNode(Z)}endScope(){this.closeNode()}__addSublanguage(Z,J){let Q=Z.root;if(J)Q.scope=`language:${J}`;this.add(Q)}toHTML(){return new $7(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function iZ(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function X7(Z){return XZ("(?=",Z,")")}function cQ(Z){return XZ("(?:",Z,")*")}function iQ(Z){return XZ("(?:",Z,")?")}function XZ(...Z){return Z.map((Q)=>iZ(Q)).join("")}function aQ(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function G1(...Z){return"("+(aQ(Z).capture?"":"?:")+Z.map((X)=>iZ(X)).join("|")+")"}function z7(Z){return new RegExp(Z.toString()+"|").exec("").length-1}function nQ(Z,J){let Q=Z&&Z.exec(J);return Q&&Q.index===0}var lQ=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function q1(Z,{joinWith:J}){let Q=0;return Z.map((X)=>{Q+=1;let z=Q,W=iZ(X),G="";while(W.length>0){let q=lQ.exec(W);if(!q){G+=W;break}if(G+=W.substring(0,q.index),W=W.substring(q.index+q[0].length),q[0][0]==="\\"&&q[1])G+="\\"+String(Number(q[1])+z);else if(G+=q[0],q[0]==="(")Q++}return G}).map((X)=>`(${X})`).join(J)}var rQ=/\b\B/,W7="[a-zA-Z]\\w*",H1="[a-zA-Z_]\\w*",G7="\\b\\d+(\\.\\d+)?",q7="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",H7="\\b(0b[01]+)",oQ="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",tQ=(Z={})=>{let J=/^#![ ]*\//;if(Z.binary)Z.begin=XZ(J,/.*\b/,Z.binary,/\b.*/);return b9({scope:"meta",begin:J,end:/$/,relevance:0,"on:begin":(Q,X)=>{if(Q.index!==0)X.ignoreMatch()}},Z)},aZ={begin:"\\\\[\\s\\S]",relevance:0},sQ={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[aZ]},eQ={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[aZ]},ZX={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},p8=function(Z,J,Q={}){let X=b9({scope:"comment",begin:Z,end:J,contains:[]},Q);X.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let z=G1("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return X.contains.push({begin:XZ(/[ ]+/,"(",z,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),X},JX=p8("//","$"),$X=p8("/\\*","\\*/"),QX=p8("#","$"),XX={scope:"number",begin:G7,relevance:0},zX={scope:"number",begin:q7,relevance:0},WX={scope:"number",begin:H7,relevance:0},GX={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[aZ,{begin:/\[/,end:/\]/,relevance:0,contains:[aZ]}]},qX={scope:"title",begin:W7,relevance:0},HX={scope:"title",begin:H1,relevance:0},YX={begin:"\\.\\s*"+H1,relevance:0},KX=function(Z){return Object.assign(Z,{"on:begin":(J,Q)=>{Q.data._beginMatch=J[1]},"on:end":(J,Q)=>{if(Q.data._beginMatch!==J[1])Q.ignoreMatch()}})},u8=Object.freeze({__proto__:null,APOS_STRING_MODE:sQ,BACKSLASH_ESCAPE:aZ,BINARY_NUMBER_MODE:WX,BINARY_NUMBER_RE:H7,COMMENT:p8,C_BLOCK_COMMENT_MODE:$X,C_LINE_COMMENT_MODE:JX,C_NUMBER_MODE:zX,C_NUMBER_RE:q7,END_SAME_AS_BEGIN:KX,HASH_COMMENT_MODE:QX,IDENT_RE:W7,MATCH_NOTHING_RE:rQ,METHOD_GUARD:YX,NUMBER_MODE:XX,NUMBER_RE:G7,PHRASAL_WORDS_MODE:ZX,QUOTE_STRING_MODE:eQ,REGEXP_MODE:GX,RE_STARTERS_RE:oQ,SHEBANG:tQ,TITLE_MODE:qX,UNDERSCORE_IDENT_RE:H1,UNDERSCORE_TITLE_MODE:HX});function FX(Z,J){if(Z.input[Z.index-1]===".")J.ignoreMatch()}function UX(Z,J){if(Z.className!==void 0)Z.scope=Z.className,delete Z.className}function LX(Z,J){if(!J)return;if(!Z.beginKeywords)return;if(Z.begin="\\b("+Z.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",Z.__beforeBegin=FX,Z.keywords=Z.keywords||Z.beginKeywords,delete Z.beginKeywords,Z.relevance===void 0)Z.relevance=0}function PX(Z,J){if(!Array.isArray(Z.illegal))return;Z.illegal=G1(...Z.illegal)}function BX(Z,J){if(!Z.match)return;if(Z.begin||Z.end)throw Error("begin & end are not supported with match");Z.begin=Z.match,delete Z.match}function OX(Z,J){if(Z.relevance===void 0)Z.relevance=1}var AX=(Z,J)=>{if(!Z.beforeMatch)return;if(Z.starts)throw Error("beforeMatch cannot be used with starts");let Q=Object.assign({},Z);Object.keys(Z).forEach((X)=>{delete Z[X]}),Z.keywords=Q.keywords,Z.begin=XZ(Q.beforeMatch,X7(Q.begin)),Z.starts={relevance:0,contains:[Object.assign(Q,{endsParent:!0})]},Z.relevance=0,delete Q.beforeMatch},NX=["of","and","for","in","not","or","if","then","parent","list","value"],wX="keyword";function Y7(Z,J,Q=wX){let X=Object.create(null);if(typeof Z==="string")z(Q,Z.split(" "));else if(Array.isArray(Z))z(Q,Z);else Object.keys(Z).forEach(function(W){Object.assign(X,Y7(Z[W],J,W))});return X;function z(W,G){if(J)G=G.map((q)=>q.toLowerCase());G.forEach(function(q){let H=q.split("|");X[H[0]]=[W,MX(H[0],H[1])]})}}function MX(Z,J){if(J)return Number(J);return CX(Z)?0:1}function CX(Z){return NX.includes(Z.toLowerCase())}var o5={},QZ=(Z)=>{console.error(Z)},t5=(Z,...J)=>{console.log(`WARN: ${Z}`,...J)},wZ=(Z,J)=>{if(o5[`${Z}/${J}`])return;console.log(`Deprecated as of ${Z}. ${J}`),o5[`${Z}/${J}`]=!0},E8=Error();function K7(Z,J,{key:Q}){let X=0,z=Z[Q],W={},G={};for(let q=1;q<=J.length;q++)G[q+X]=z[q],W[q+X]=!0,X+=z7(J[q-1]);Z[Q]=G,Z[Q]._emit=W,Z[Q]._multi=!0}function yX(Z){if(!Array.isArray(Z.begin))return;if(Z.skip||Z.excludeBegin||Z.returnBegin)throw QZ("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),E8;if(typeof Z.beginScope!=="object"||Z.beginScope===null)throw QZ("beginScope must be object"),E8;K7(Z,Z.begin,{key:"beginScope"}),Z.begin=q1(Z.begin,{joinWith:""})}function _X(Z){if(!Array.isArray(Z.end))return;if(Z.skip||Z.excludeEnd||Z.returnEnd)throw QZ("skip, excludeEnd, returnEnd not compatible with endScope: {}"),E8;if(typeof Z.endScope!=="object"||Z.endScope===null)throw QZ("endScope must be object"),E8;K7(Z,Z.end,{key:"endScope"}),Z.end=q1(Z.end,{joinWith:""})}function vX(Z){if(Z.scope&&typeof Z.scope==="object"&&Z.scope!==null)Z.beginScope=Z.scope,delete Z.scope}function TX(Z){if(vX(Z),typeof Z.beginScope==="string")Z.beginScope={_wrap:Z.beginScope};if(typeof Z.endScope==="string")Z.endScope={_wrap:Z.endScope};yX(Z),_X(Z)}function RX(Z){function J(G,q){return new RegExp(iZ(G),"m"+(Z.case_insensitive?"i":"")+(Z.unicodeRegex?"u":"")+(q?"g":""))}class Q{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(G,q){q.position=this.position++,this.matchIndexes[this.matchAt]=q,this.regexes.push([q,G]),this.matchAt+=z7(G)+1}compile(){if(this.regexes.length===0)this.exec=()=>null;let G=this.regexes.map((q)=>q[1]);this.matcherRe=J(q1(G,{joinWith:"|"}),!0),this.lastIndex=0}exec(G){this.matcherRe.lastIndex=this.lastIndex;let q=this.matcherRe.exec(G);if(!q)return null;let H=q.findIndex((F,K)=>K>0&&F!==void 0),Y=this.matchIndexes[H];return q.splice(0,H),Object.assign(q,Y)}}class X{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(G){if(this.multiRegexes[G])return this.multiRegexes[G];let q=new Q;return this.rules.slice(G).forEach(([H,Y])=>q.addRule(H,Y)),q.compile(),this.multiRegexes[G]=q,q}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(G,q){if(this.rules.push([G,q]),q.type==="begin")this.count++}exec(G){let q=this.getMatcher(this.regexIndex);q.lastIndex=this.lastIndex;let H=q.exec(G);if(this.resumingScanAtSamePosition())if(H&&H.index===this.lastIndex);else{let Y=this.getMatcher(0);Y.lastIndex=this.lastIndex+1,H=Y.exec(G)}if(H){if(this.regexIndex+=H.position+1,this.regexIndex===this.count)this.considerAll()}return H}}function z(G){let q=new X;if(G.contains.forEach((H)=>q.addRule(H.begin,{rule:H,type:"begin"})),G.terminatorEnd)q.addRule(G.terminatorEnd,{type:"end"});if(G.illegal)q.addRule(G.illegal,{type:"illegal"});return q}function W(G,q){let H=G;if(G.isCompiled)return H;[UX,BX,TX,AX].forEach((F)=>F(G,q)),Z.compilerExtensions.forEach((F)=>F(G,q)),G.__beforeBegin=null,[LX,PX,OX].forEach((F)=>F(G,q)),G.isCompiled=!0;let Y=null;if(typeof G.keywords==="object"&&G.keywords.$pattern)G.keywords=Object.assign({},G.keywords),Y=G.keywords.$pattern,delete G.keywords.$pattern;if(Y=Y||/\w+/,G.keywords)G.keywords=Y7(G.keywords,Z.case_insensitive);if(H.keywordPatternRe=J(Y,!0),q){if(!G.begin)G.begin=/\B|\b/;if(H.beginRe=J(H.begin),!G.end&&!G.endsWithParent)G.end=/\B|\b/;if(G.end)H.endRe=J(H.end);if(H.terminatorEnd=iZ(H.end)||"",G.endsWithParent&&q.terminatorEnd)H.terminatorEnd+=(G.end?"|":"")+q.terminatorEnd}if(G.illegal)H.illegalRe=J(G.illegal);if(!G.contains)G.contains=[];if(G.contains=[].concat(...G.contains.map(function(F){return kX(F==="self"?G:F)})),G.contains.forEach(function(F){W(F,H)}),G.starts)W(G.starts,q);return H.matcher=z(H),H}if(!Z.compilerExtensions)Z.compilerExtensions=[];if(Z.contains&&Z.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return Z.classNameAliases=b9(Z.classNameAliases||{}),W(Z)}function F7(Z){if(!Z)return!1;return Z.endsWithParent||F7(Z.starts)}function kX(Z){if(Z.variants&&!Z.cachedVariants)Z.cachedVariants=Z.variants.map(function(J){return b9(Z,{variants:null},J)});if(Z.cachedVariants)return Z.cachedVariants;if(F7(Z))return b9(Z,{starts:Z.starts?b9(Z.starts):null});if(Object.isFrozen(Z))return b9(Z);return Z}var IX="11.11.1";class U7 extends Error{constructor(Z,J){super(Z);this.name="HTMLInjectionError",this.html=J}}var X1=J7,s5=b9,e5=Symbol("nomatch"),SX=7,L7=function(Z){let J=Object.create(null),Q=Object.create(null),X=[],z=!0,W="Could not find the language '{}', did you forget to load/include a language module?",G={disableAutodetect:!0,name:"Plain text",contains:[]},q={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Q7};function H(m){return q.noHighlightRe.test(m)}function Y(m){let g=m.className+" ";g+=m.parentNode?m.parentNode.className:"";let u=q.languageDetectRe.exec(g);if(u){let I=L(u[1]);if(!I)t5(W.replace("{}",u[1])),t5("Falling back to no-highlight mode for this block.",m);return I?u[1]:"no-highlight"}return g.split(/\s+/).find((I)=>H(I)||L(I))}function F(m,g,u){let I="",n="";if(typeof g==="object")I=m,u=g.ignoreIllegals,n=g.language;else wZ("10.7.0","highlight(lang, code, ...args) has been deprecated."),wZ("10.7.0",`Please use highlight(code, options) instead.
|
|
2
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),n=m,I=g;if(u===void 0)u=!0;let Z0={code:I,language:n};r("before:highlight",Z0);let q0=Z0.result?Z0.result:K(Z0.language,Z0.code,u);return q0.code=Z0.code,r("after:highlight",q0),q0}function K(m,g,u,I){let n=Object.create(null);function Z0(t,e){return t.keywords[e]}function q0(){if(!K0.keywords){w0.addText(h);return}let t=0;K0.keywordPatternRe.lastIndex=0;let e=K0.keywordPatternRe.exec(h),X0="";while(e){X0+=h.substring(t,e.index);let L0=u0.case_insensitive?e[0].toLowerCase():e[0],v0=Z0(K0,L0);if(v0){let[V0,F6]=v0;if(w0.addText(X0),X0="",n[L0]=(n[L0]||0)+1,n[L0]<=SX)T+=F6;if(V0.startsWith("_"))X0+=e[0];else{let U6=u0.classNameAliases[V0]||V0;B0(e[0],U6)}}else X0+=e[0];t=K0.keywordPatternRe.lastIndex,e=K0.keywordPatternRe.exec(h)}X0+=h.substring(t),w0.addText(X0)}function Q0(){if(h==="")return;let t=null;if(typeof K0.subLanguage==="string"){if(!J[K0.subLanguage]){w0.addText(h);return}t=K(K0.subLanguage,h,!0,l0[K0.subLanguage]),l0[K0.subLanguage]=t._top}else t=P(h,K0.subLanguage.length?K0.subLanguage:null);if(K0.relevance>0)T+=t.relevance;w0.__addSublanguage(t._emitter,t.language)}function J0(){if(K0.subLanguage!=null)Q0();else q0();h=""}function B0(t,e){if(t==="")return;w0.startScope(e),w0.addText(t),w0.endScope()}function p0(t,e){let X0=1,L0=e.length-1;while(X0<=L0){if(!t._emit[X0]){X0++;continue}let v0=u0.classNameAliases[t[X0]]||t[X0],V0=e[X0];if(v0)B0(V0,v0);else h=V0,q0(),h="";X0++}}function i0(t,e){if(t.scope&&typeof t.scope==="string")w0.openNode(u0.classNameAliases[t.scope]||t.scope);if(t.beginScope){if(t.beginScope._wrap)B0(h,u0.classNameAliases[t.beginScope._wrap]||t.beginScope._wrap),h="";else if(t.beginScope._multi)p0(t.beginScope,e),h=""}return K0=Object.create(t,{parent:{value:K0}}),K0}function m0(t,e,X0){let L0=nQ(t.endRe,X0);if(L0){if(t["on:end"]){let v0=new z1(t);if(t["on:end"](e,v0),v0.isMatchIgnored)L0=!1}if(L0){while(t.endsParent&&t.parent)t=t.parent;return t}}if(t.endsWithParent)return m0(t.parent,e,X0)}function d0(t){if(K0.matcher.regexIndex===0)return h+=t[0],1;else return F0=!0,0}function g0(t){let e=t[0],X0=t.rule,L0=new z1(X0),v0=[X0.__beforeBegin,X0["on:begin"]];for(let V0 of v0){if(!V0)continue;if(V0(t,L0),L0.isMatchIgnored)return d0(e)}if(X0.skip)h+=e;else{if(X0.excludeBegin)h+=e;if(J0(),!X0.returnBegin&&!X0.excludeBegin)h=e}return i0(X0,t),X0.returnBegin?0:e.length}function h0(t){let e=t[0],X0=g.substring(t.index),L0=m0(K0,t,X0);if(!L0)return e5;let v0=K0;if(K0.endScope&&K0.endScope._wrap)J0(),B0(e,K0.endScope._wrap);else if(K0.endScope&&K0.endScope._multi)J0(),p0(K0.endScope,t);else if(v0.skip)h+=e;else{if(!(v0.returnEnd||v0.excludeEnd))h+=e;if(J0(),v0.excludeEnd)h=e}do{if(K0.scope)w0.closeNode();if(!K0.skip&&!K0.subLanguage)T+=K0.relevance;K0=K0.parent}while(K0!==L0.parent);if(L0.starts)i0(L0.starts,t);return v0.returnEnd?0:e.length}function _0(){let t=[];for(let e=K0;e!==u0;e=e.parent)if(e.scope)t.unshift(e.scope);t.forEach((e)=>w0.openNode(e))}let a0={};function O0(t,e){let X0=e&&e[0];if(h+=t,X0==null)return J0(),0;if(a0.type==="begin"&&e.type==="end"&&a0.index===e.index&&X0===""){if(h+=g.slice(e.index,e.index+1),!z){let L0=Error(`0 width match regex (${m})`);throw L0.languageName=m,L0.badRule=a0.rule,L0}return 1}if(a0=e,e.type==="begin")return g0(e);else if(e.type==="illegal"&&!u){let L0=Error('Illegal lexeme "'+X0+'" for mode "'+(K0.scope||"<unnamed>")+'"');throw L0.mode=K0,L0}else if(e.type==="end"){let L0=h0(e);if(L0!==e5)return L0}if(e.type==="illegal"&&X0==="")return h+=`
|
|
3
|
+
`,1;if(i>1e5&&i>e.index*3)throw Error("potential infinite loop, way more iterations than matches");return h+=X0,X0.length}let u0=L(m);if(!u0)throw QZ(W.replace("{}",m)),Error('Unknown language: "'+m+'"');let Y0=RX(u0),r0="",K0=I||Y0,l0={},w0=new q.__emitter(q);_0();let h="",T=0,p=0,i=0,F0=!1;try{if(!u0.__emitTokens){K0.matcher.considerAll();for(;;){if(i++,F0)F0=!1;else K0.matcher.considerAll();K0.matcher.lastIndex=p;let t=K0.matcher.exec(g);if(!t)break;let e=g.substring(p,t.index),X0=O0(e,t);p=t.index+X0}O0(g.substring(p))}else u0.__emitTokens(g,w0);return w0.finalize(),r0=w0.toHTML(),{language:m,value:r0,relevance:T,illegal:!1,_emitter:w0,_top:K0}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:m,value:X1(g),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:p,context:g.slice(p-100,p+100),mode:t.mode,resultSoFar:r0},_emitter:w0};else if(z)return{language:m,value:X1(g),illegal:!1,relevance:0,errorRaised:t,_emitter:w0,_top:K0};else throw t}}function w(m){let g={value:X1(m),illegal:!1,relevance:0,_top:G,_emitter:new q.__emitter(q)};return g._emitter.addText(m),g}function P(m,g){g=g||q.languages||Object.keys(J);let u=w(m),I=g.filter(L).filter(M).map((J0)=>K(J0,m,!1));I.unshift(u);let n=I.sort((J0,B0)=>{if(J0.relevance!==B0.relevance)return B0.relevance-J0.relevance;if(J0.language&&B0.language){if(L(J0.language).supersetOf===B0.language)return 1;else if(L(B0.language).supersetOf===J0.language)return-1}return 0}),[Z0,q0]=n,Q0=Z0;return Q0.secondBest=q0,Q0}function A(m,g,u){let I=g&&Q[g]||u;m.classList.add("hljs"),m.classList.add(`language-${I}`)}function _(m){let g=null,u=Y(m);if(H(u))return;if(r("before:highlightElement",{el:m,language:u}),m.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",m);return}if(m.children.length>0){if(!q.ignoreUnescapedHTML)console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(m);if(q.throwUnescapedHTML)throw new U7("One of your code blocks includes unescaped HTML.",m.innerHTML)}g=m;let I=g.textContent,n=u?F(I,{language:u,ignoreIllegals:!0}):P(I);if(m.innerHTML=n.value,m.dataset.highlighted="yes",A(m,u,n.language),m.result={language:n.language,re:n.relevance,relevance:n.relevance},n.secondBest)m.secondBest={language:n.secondBest.language,relevance:n.secondBest.relevance};r("after:highlightElement",{el:m,result:n,text:I})}function V(m){q=s5(q,m)}let D=()=>{x(),wZ("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function v(){x(),wZ("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let R=!1;function x(){function m(){x()}if(document.readyState==="loading"){if(!R)window.addEventListener("DOMContentLoaded",m,!1);R=!0;return}document.querySelectorAll(q.cssSelector).forEach(_)}function S(m,g){let u=null;try{u=g(Z)}catch(I){if(QZ("Language definition for '{}' could not be registered.".replace("{}",m)),!z)throw I;else QZ(I);u=G}if(!u.name)u.name=m;if(J[m]=u,u.rawDefinition=g.bind(null,Z),u.aliases)B(u.aliases,{languageName:m})}function O(m){delete J[m];for(let g of Object.keys(Q))if(Q[g]===m)delete Q[g]}function N(){return Object.keys(J)}function L(m){return m=(m||"").toLowerCase(),J[m]||J[Q[m]]}function B(m,{languageName:g}){if(typeof m==="string")m=[m];m.forEach((u)=>{Q[u.toLowerCase()]=g})}function M(m){let g=L(m);return g&&!g.disableAutodetect}function y(m){if(m["before:highlightBlock"]&&!m["before:highlightElement"])m["before:highlightElement"]=(g)=>{m["before:highlightBlock"](Object.assign({block:g.el},g))};if(m["after:highlightBlock"]&&!m["after:highlightElement"])m["after:highlightElement"]=(g)=>{m["after:highlightBlock"](Object.assign({block:g.el},g))}}function E(m){y(m),X.push(m)}function c(m){let g=X.indexOf(m);if(g!==-1)X.splice(g,1)}function r(m,g){let u=m;X.forEach(function(I){if(I[u])I[u](g)})}function $0(m){return wZ("10.7.0","highlightBlock will be removed entirely in v12.0"),wZ("10.7.0","Please use highlightElement now."),_(m)}Object.assign(Z,{highlight:F,highlightAuto:P,highlightAll:x,highlightElement:_,highlightBlock:$0,configure:V,initHighlighting:D,initHighlightingOnLoad:v,registerLanguage:S,unregisterLanguage:O,listLanguages:N,getLanguage:L,registerAliases:B,autoDetection:M,inherit:s5,addPlugin:E,removePlugin:c}),Z.debugMode=function(){z=!1},Z.safeMode=function(){z=!0},Z.versionString=IX,Z.regex={concat:XZ,lookahead:X7,either:G1,optional:iQ,anyNumberOfTimes:cQ};for(let m in u8)if(typeof u8[m]==="object")Z7(u8[m]);return Object.assign(Z,u8),Z},MZ=L7({});MZ.newInstance=()=>L7({});P7.exports=MZ;MZ.HighlightJS=MZ;MZ.default=MZ});var A7=C0((MY,O7)=>{function VX(Z){let J=Z.regex,Q=J.concat(/[\p{L}_]/u,J.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),X=/[\p{L}0-9._:-]+/u,z={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},W={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},G=Z.inherit(W,{begin:/\(/,end:/\)/}),q=Z.inherit(Z.APOS_STRING_MODE,{className:"string"}),H=Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),Y={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:X,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[z]},{begin:/'/,end:/'/,contains:[z]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[W,H,q,G,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[W,G,H,q]}]}]},Z.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},z,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[H]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[Y],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[Y],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:J.concat(/</,J.lookahead(J.concat(Q,J.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:Q,relevance:0,starts:Y}]},{className:"tag",begin:J.concat(/<\//,J.lookahead(J.concat(Q,/>/))),contains:[{className:"name",begin:Q,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}O7.exports=VX});var w7=C0((CY,N7)=>{function fX(Z){let J=Z.regex,Q={},X={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[Q]}]};Object.assign(Q,{className:"variable",variants:[{begin:J.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},X]});let z={className:"subst",begin:/\$\(/,end:/\)/,contains:[Z.BACKSLASH_ESCAPE]},W=Z.inherit(Z.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),G={begin:/<<-?\s*(?=\w+)/,starts:{contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,Q,z]};z.contains.push(q);let H={match:/\\"/},Y={className:"string",begin:/'/,end:/'/},F={match:/\\'/},K={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},Z.NUMBER_MODE,Q]},w=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],P=Z.SHEBANG({binary:`(${w.join("|")})`,relevance:10}),A={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[Z.inherit(Z.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},_=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],V=["true","false"],D={match:/(\/[a-z._-]+)+/},v=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],R=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],x=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],S=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:_,literal:V,built_in:[...v,...R,"set","shopt",...x,...S]},contains:[P,Z.SHEBANG(),A,K,W,G,D,q,H,Y,F,Q]}}N7.exports=fX});var C7=C0((yY,M7)=>{function gX(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",W="<[^<>]+>",G="(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},H="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",Y={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Y,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},w={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},P=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",V={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},D=[K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],v={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:V,contains:D.concat([{begin:/\(/,end:/\)/,keywords:V,contains:D.concat(["self"]),relevance:0}]),relevance:0},R={begin:"("+G+"[\\*&\\s]+)+"+P,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:V,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:V,relevance:0},{begin:P,returnBegin:!0,contains:[Z.inherit(w,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:V,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:V,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C",aliases:["h"],keywords:V,disableAutodetect:!0,illegal:"</",contains:[].concat(v,R,D,[K,{begin:Z.IDENT_RE+"::",keywords:V},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},Z.TITLE_MODE]}]),exports:{preprocessor:K,strings:Y,keywords:V}}}M7.exports=gX});var _7=C0((_Y,y7)=>{function bX(Z){let J=Z.regex,Q=Z.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),X="decltype\\(auto\\)",z="[a-zA-Z_]\\w*::",W="<[^<>]+>",G="(?!struct)(decltype\\(auto\\)|"+J.optional("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+J.optional("<[^<>]+>")+")",q={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},H="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",Y={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},Z.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},F={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},K={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Y,{className:"string"}),{className:"string",begin:/<.*?>/},Q,Z.C_BLOCK_COMMENT_MODE]},w={className:"title",begin:J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE,relevance:0},P=J.optional("[a-zA-Z_]\\w*::")+Z.IDENT_RE+"\\s*\\(",A=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],_=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],V=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],D=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],x={type:_,keyword:A,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:V},S={className:"function.dispatch",relevance:0,keywords:{_hint:D},begin:J.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,Z.IDENT_RE,J.lookahead(/(<[^<>]+>|)\s*\(/))},O=[S,K,q,Q,Z.C_BLOCK_COMMENT_MODE,F,Y],N={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:x,contains:O.concat([{begin:/\(/,end:/\)/,keywords:x,contains:O.concat(["self"]),relevance:0}]),relevance:0},L={className:"function",begin:"("+G+"[\\*&\\s]+)+"+P,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:x,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",keywords:x,relevance:0},{begin:P,returnBegin:!0,contains:[w],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[Y,F]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:x,relevance:0,contains:[Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q,{begin:/\(/,end:/\)/,keywords:x,relevance:0,contains:["self",Q,Z.C_BLOCK_COMMENT_MODE,Y,F,q]}]},q,Q,Z.C_BLOCK_COMMENT_MODE,K]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:x,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(N,L,S,O,[K,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:x,contains:["self",q]},{begin:Z.IDENT_RE+"::",keywords:x},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}y7.exports=bX});var T7=C0((vY,v7)=>{function jX(Z){let J=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],Q=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],X=["default","false","null","true"],z=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],W=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],G={keyword:z.concat(W),built_in:J,literal:X},q=Z.inherit(Z.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),H={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},Y={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},F={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},K=Z.inherit(F,{illegal:/\n/}),w={className:"subst",begin:/\{/,end:/\}/,keywords:G},P=Z.inherit(w,{illegal:/\n/}),A={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},Z.BACKSLASH_ESCAPE,P]},_={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},w]},V=Z.inherit(_,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},P]});w.contains=[_,A,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.C_BLOCK_COMMENT_MODE],P.contains=[V,A,K,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,H,Z.inherit(Z.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let D={variants:[Y,_,A,F,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},v={begin:"<",end:">",contains:[{beginKeywords:"in out"},q]},R=Z.IDENT_RE+"(<"+Z.IDENT_RE+"(\\s*,\\s*"+Z.IDENT_RE+")*>)?(\\[\\])?",x={begin:"@"+Z.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:G,illegal:/::/,contains:[Z.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},D,H,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},q,v,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[q,v,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+R+"\\s+)+"+Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:G,contains:[{beginKeywords:Q.join(" "),relevance:0},{begin:Z.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[Z.TITLE_MODE,v],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:G,relevance:0,contains:[D,H,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},x]}}v7.exports=jX});var k7=C0((TY,R7)=>{var hX=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},DX=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],xX=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],mX=[...DX,...xX],uX=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),EX=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),pX=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),dX=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function cX(Z){let J=Z.regex,Q=hX(Z),X={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},z="and or not only",W=/@-?\w[\w]*(-\w+)*/,G="[a-zA-Z-][a-zA-Z0-9_-]*",q=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[Q.BLOCK_COMMENT,X,Q.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},Q.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+EX.join("|")+")"},{begin:":(:)?("+pX.join("|")+")"}]},Q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+dX.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[Q.BLOCK_COMMENT,Q.HEXCOLOR,Q.IMPORTANT,Q.CSS_NUMBER_MODE,...q,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...q,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},Q.FUNCTION_DISPATCH]},{begin:J.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:W},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:uX.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...q,Q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+mX.join("|")+")\\b"}]}}R7.exports=cX});var S7=C0((RY,I7)=>{function iX(Z){let J=Z.regex,Q={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},X={begin:"^[-\\*]{3,}",end:"$"},z={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},W={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},G={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},q=/[A-Za-z][A-Za-z0-9+.-]*/,H={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:J.concat(/\[.+?\]\(/,q,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},Y={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},F={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},K=Z.inherit(Y,{contains:[]}),w=Z.inherit(F,{contains:[]});Y.contains.push(w),F.contains.push(K);let P=[Q,H];return[Y,F,K,w].forEach((D)=>{D.contains=D.contains.concat(P)}),P=P.concat(Y,F),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:P},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:P}]}]},Q,W,Y,F,{className:"quote",begin:"^>\\s+",contains:P,end:"$"},z,X,H,G,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}I7.exports=iX});var f7=C0((kY,V7)=>{function aX(Z){let J=Z.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:J.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:J.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}V7.exports=aX});var b7=C0((IY,g7)=>{function nX(Z){let J=Z.regex,Q="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",X=J.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),z=J.concat(X,/(::\w+)*/),G={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},q={className:"doctag",begin:"@[A-Za-z]+"},H={begin:"#<",end:">"},Y=[Z.COMMENT("#","$",{contains:[q]}),Z.COMMENT("^=begin","^=end",{contains:[q],relevance:10}),Z.COMMENT("^__END__",Z.MATCH_NOTHING_RE)],F={className:"subst",begin:/#\{/,end:/\}/,keywords:G},K={className:"string",contains:[Z.BACKSLASH_ESCAPE,F],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:J.concat(/<<[-~]?'?/,J.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[Z.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[Z.BACKSLASH_ESCAPE,F]})]}]},w="[1-9](_?[0-9])*|0",P="[0-9](_?[0-9])*",A={className:"number",relevance:0,variants:[{begin:"\\b([1-9](_?[0-9])*|0)(\\.([0-9](_?[0-9])*))?([eE][+-]?([0-9](_?[0-9])*)|r)?i?\\b"},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},_={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:G}]},O=[K,{variants:[{match:[/class\s+/,z,/\s+<\s+/,z]},{match:[/\b(class|module)\s+/,z]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:G},{match:[/(include|extend)\s+/,z],scope:{2:"title.class"},keywords:G},{relevance:0,match:[z,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:X,scope:"title.class"},{match:[/def/,/\s+/,"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"],scope:{1:"keyword",3:"title.function"},contains:[_]},{begin:Z.IDENT_RE+"::"},{className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[K,{begin:"([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)"}],relevance:0},A,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:G},{begin:"("+Z.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[Z.BACKSLASH_ESCAPE,F],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(H,Y),relevance:0}].concat(H,Y);F.contains=O,_.contains=O;let N="[>?]>",L="[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]",B="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",M=[{begin:/^\s*=>/,starts:{end:"$",contains:O}},{className:"meta.prompt",begin:"^("+N+"|"+L+"|"+B+")(?=[ ])",starts:{end:"$",keywords:G,contains:O}}];return Y.unshift(H),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:G,illegal:/\/\*/,contains:[Z.SHEBANG({binary:"ruby"})].concat(M).concat(Y).concat(O)}}g7.exports=nX});var h7=C0((SY,j7)=>{function lX(Z){let W={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:W,illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{className:"string",variants:[Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[Z.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:W,illegal:/["']/}]}]}}j7.exports=lX});var x7=C0((VY,D7)=>{function rX(Z){let J=Z.regex,Q=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[Z.HASH_COMMENT_MODE,Z.QUOTE_STRING_MODE,Z.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:J.concat(Q,J.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}D7.exports=rX});var u7=C0((fY,m7)=>{function oX(Z){let J=Z.regex,Q={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:Z.NUMBER_RE}]},X=Z.COMMENT();X.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let z={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},W={className:"literal",begin:/\bon|off|true|false|yes|no\b/},G={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},q={begin:/\[/,end:/\]/,contains:[X,W,z,G,Q,"self"],relevance:0},H=/[A-Za-z0-9_-]+/,Y=/"(\\"|[^"])*"/,F=/'[^']*'/,K=J.either(H,Y,F),w=J.concat(K,"(\\s*\\.\\s*",K,")*",J.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[X,{className:"section",begin:/\[+/,end:/\]+/},{begin:w,className:"attr",starts:{end:/$/,contains:[X,q,W,z,G,Q]}}]}}m7.exports=oX});var c7=C0((gY,d7)=>{var CZ="[0-9](_*[0-9])*",d8=`\\.(${CZ})`,c8="[0-9a-fA-F](_*[0-9a-fA-F])*",E7={className:"number",variants:[{begin:`(\\b(${CZ})((${d8})|\\.)?|(${d8}))[eE][+-]?(${CZ})[fFdD]?\\b`},{begin:`\\b(${CZ})((${d8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${d8})[fFdD]?\\b`},{begin:`\\b(${CZ})[fFdD]\\b`},{begin:`\\b0[xX]((${c8})\\.?|(${c8})?\\.(${c8}))[pP][+-]?(${CZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${c8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function p7(Z,J,Q){if(Q===-1)return"";return Z.replace(J,(X)=>{return p7(Z,J,Q-1)})}function tX(Z){let J=Z.regex,Q="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",X="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+p7("(?:<"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~(?:\\s*,\\s*"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"+"~~~)*>)?",/~~~/g,2),H={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},Y={className:"meta",begin:"@"+"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},F={className:"params",begin:/\(/,end:/\)/,keywords:H,relevance:0,contains:[Z.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:H,illegal:/<\/|#/,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[Z.BACKSLASH_ESCAPE]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[J.concat(/(?!else)/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"),/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,"[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*"],className:{1:"keyword",3:"title.class"},contains:[F,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+X+"\\s+)",Z.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:H,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:H,relevance:0,contains:[Y,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,E7,Z.C_BLOCK_COMMENT_MODE]},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},E7,Y]}}d7.exports=tX});var r7=C0((bY,l7)=>{var sX=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],eX=["true","false","null","undefined","NaN","Infinity"],i7=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],a7=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],n7=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Zz=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Jz=[].concat(n7,i7,a7);function $z(Z){let J=Z.regex,Q=(u,{after:I})=>{let n="</"+u[0].slice(1);return u.input.indexOf(n,I)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},W=/<[A-Za-z0-9\\._:-]+\s*\/>/,G={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(u,I)=>{let n=u[0].length+u.index,Z0=u.input[n];if(Z0==="<"||Z0===","){I.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:n}))I.ignoreMatch()}let q0,Q0=u.input.substring(n);if(q0=Q0.match(/^\s*=/)){I.ignoreMatch();return}if(q0=Q0.match(/^\s+extends\s+/)){if(q0.index===0){I.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:sX,literal:eX,built_in:Jz,"variable.language":Zz},H="[0-9](_?[0-9])*",Y="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},w={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},P={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"xml"}},A={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"css"}},_={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"graphql"}},V={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,w]},v={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},R=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,{match:/\$\d+/},K];w.contains=R.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(R)});let x=[].concat(v,w.contains),S=x.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(x)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:S},N={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},L={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...i7,...a7]}},B={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[O],illegal:/%/},y={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function E(u){return J.concat("(?!",u.join("|"),")")}let c={match:J.concat(/\b/,E([...n7,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},r={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},$0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},O]},m="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(m)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:S,CLASS_REFERENCE:L},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),B,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,v,{match:/\$\d+/},K,L,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},g,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,Z.REGEXP_MODE,{className:"function",begin:m,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:S}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:W},{begin:G.begin,"on:begin":G.isTrulyOpeningTag,end:G.end}],subLanguage:"xml",contains:[{begin:G.begin,end:G.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[O,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},r,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},c,y,N,$0,{match:/\$[(.]/}]}}l7.exports=$z});var t7=C0((jY,o7)=>{function Qz(Z){let J={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},Q={match:/[{}[\],:]/,className:"punctuation",relevance:0},X=["true","false","null"],z={scope:"literal",beginKeywords:X.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:X},contains:[J,Q,Z.QUOTE_STRING_MODE,z,Z.C_NUMBER_MODE,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}o7.exports=Qz});var e7=C0((hY,s7)=>{var yZ="[0-9](_*[0-9])*",i8=`\\.(${yZ})`,a8="[0-9a-fA-F](_*[0-9a-fA-F])*",Xz={className:"number",variants:[{begin:`(\\b(${yZ})((${i8})|\\.)?|(${i8}))[eE][+-]?(${yZ})[fFdD]?\\b`},{begin:`\\b(${yZ})((${i8})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${i8})[fFdD]?\\b`},{begin:`\\b(${yZ})[fFdD]\\b`},{begin:`\\b0[xX]((${a8})\\.?|(${a8})?\\.(${a8}))[pP][+-]?(${yZ})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a8})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function zz(Z){let J={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},Q={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},X={className:"symbol",begin:Z.UNDERSCORE_IDENT_RE+"@"},z={className:"subst",begin:/\$\{/,end:/\}/,contains:[Z.C_NUMBER_MODE]},W={className:"variable",begin:"\\$"+Z.UNDERSCORE_IDENT_RE},G={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[W,z]},{begin:"'",end:"'",illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[Z.BACKSLASH_ESCAPE,W,z]}]};z.contains.push(G);let q={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+Z.UNDERSCORE_IDENT_RE+")?"},H={className:"meta",begin:"@"+Z.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[Z.inherit(G,{className:"string"}),"self"]}]},Y=Xz,F=Z.COMMENT("/\\*","\\*/",{contains:[Z.C_BLOCK_COMMENT_MODE]}),K={variants:[{className:"type",begin:Z.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},w=K;return w.variants[1].contains=[K],K.variants[1].contains=[w],{name:"Kotlin",aliases:["kt","kts"],keywords:J,contains:[Z.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),Z.C_LINE_COMMENT_MODE,F,Q,X,q,H,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:J,relevance:5,contains:[{begin:Z.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[Z.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:J,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[K,Z.C_LINE_COMMENT_MODE,F],relevance:0},Z.C_LINE_COMMENT_MODE,F,q,H,G,Z.C_NUMBER_MODE]},F]},{begin:[/class|interface|trait/,/\s+/,Z.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},Z.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},q,H]},G,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
|
|
4
|
+
`},Y]}}s7.exports=zz});var Q4=C0((DY,$4)=>{var Wz=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},Gz=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],qz=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Hz=[...Gz,...qz],Yz=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Z4=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),J4=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Kz=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),Fz=Z4.concat(J4).sort().reverse();function Uz(Z){let J=Wz(Z),Q=Fz,X="and or not only",z="[\\w-]+",W="([\\w-]+|@\\{[\\w-]+\\})",G=[],q=[],H=function(R){return{className:"string",begin:"~?"+R+".*?"+R}},Y=function(R,x,S){return{className:R,begin:x,relevance:S}},F={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Yz.join(" ")},K={begin:"\\(",end:"\\)",contains:q,keywords:F,relevance:0};q.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,H("'"),H('"'),J.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},J.HEXCOLOR,K,Y("variable","@@?[\\w-]+",10),Y("variable","@\\{[\\w-]+\\}"),Y("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},J.IMPORTANT,{beginKeywords:"and not"},J.FUNCTION_DISPATCH);let w=q.concat({begin:/\{/,end:/\}/,contains:G}),P={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(q)},A={begin:W+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Kz.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:q}}]},_={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:F,returnEnd:!0,contains:q,relevance:0}},V={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:w}},D={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:W,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,P,Y("keyword","all\\b"),Y("variable","@\\{[\\w-]+\\}"),{begin:"\\b("+Hz.join("|")+")\\b",className:"selector-tag"},J.CSS_NUMBER_MODE,Y("selector-tag",W,0),Y("selector-id","#"+W),Y("selector-class","\\."+W,0),Y("selector-tag","&",0),J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+Z4.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+J4.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:w},{begin:"!important"},J.FUNCTION_DISPATCH]},v={begin:`[\\w-]+:(:)?(${Q.join("|")})`,returnBegin:!0,contains:[D]};return G.push(Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,_,V,v,A,D,P,J.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:G}}$4.exports=Uz});var z4=C0((xY,X4)=>{function Lz(Z){let X={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},z=[Z.COMMENT("--(?!\\[=*\\[)","$"),Z.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[X],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:Z.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:z.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[Z.inherit(Z.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:z}].concat(z)},Z.C_NUMBER_MODE,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[X],relevance:5}])}}X4.exports=Lz});var G4=C0((mY,W4)=>{function Pz(Z){let J={className:"variable",variants:[{begin:"\\$\\("+Z.UNDERSCORE_IDENT_RE+"\\)",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},Q={className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,J]},X={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[J,Q]},z={begin:"^"+Z.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},W={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},G={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[J]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[Z.HASH_COMMENT_MODE,J,Q,X,z,W,G]}}W4.exports=Pz});var H4=C0((uY,q4)=>{function Bz(Z){let J=Z.regex,Q=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],X=/[dualxmsipngr]{0,12}/,z={$pattern:/[\w.]+/,keyword:Q.join(" ")},W={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:z},G={begin:/->\{/,end:/\}/},q={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},H={scope:"variable",variants:[{begin:/\$\d/},{begin:J.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[q]},Y={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},F=[Z.BACKSLASH_ESCAPE,W,H],K=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],w=(_,V,D="\\1")=>{let v=D==="\\1"?D:J.concat(D,V);return J.concat(J.concat("(?:",_,")"),V,/(?:\\.|[^\\\/])*?/,v,/(?:\\.|[^\\\/])*?/,D,X)},P=(_,V,D)=>{return J.concat(J.concat("(?:",_,")"),V,/(?:\\.|[^\\\/])*?/,D,X)},A=[H,Z.HASH_COMMENT_MODE,Z.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),G,{className:"string",contains:F,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[Z.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},Y,{begin:"(\\/\\/|"+Z.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[Z.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:w("s|tr|y",J.either(...K,{capture:!0}))},{begin:w("s|tr|y","\\(","\\)")},{begin:w("s|tr|y","\\[","\\]")},{begin:w("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:P("(?:m|qr)?",/\//,/\//)},{begin:P("m|qr",J.either(...K,{capture:!0}),/\1/)},{begin:P("m|qr",/\(/,/\)/)},{begin:P("m|qr",/\[/,/\]/)},{begin:P("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[Z.TITLE_MODE,q,Y]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return W.contains=A,G.contains=A,{name:"Perl",aliases:["pl","pm"],keywords:z,contains:A}}q4.exports=Bz});var K4=C0((EY,Y4)=>{function Oz(Z){let J={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},Q=/[a-zA-Z@][a-zA-Z0-9_]*/,q={"variable.language":["this","super"],$pattern:Q,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},H={$pattern:Q,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:q,illegal:"</",contains:[J,Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,Z.C_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[Z.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},Z.inherit(Z.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+H.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:H,contains:[Z.UNDERSCORE_TITLE_MODE]},{begin:"\\."+Z.UNDERSCORE_IDENT_RE,relevance:0}]}}Y4.exports=Oz});var U4=C0((pY,F4)=>{function Az(Z){let J=Z.regex,Q=/(?![A-Za-z0-9])(?![$])/,X=J.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,Q),z=J.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,Q),W=J.concat(/[A-Z]+/,Q),G={scope:"variable",match:"\\$+"+X},q={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:0.1},{begin:/\?>/}]},H={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},Y=Z.inherit(Z.APOS_STRING_MODE,{illegal:null}),F=Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,contains:Z.QUOTE_STRING_MODE.contains.concat(H)}),K={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:Z.QUOTE_STRING_MODE.contains.concat(H),"on:begin":(r,$0)=>{$0.data._beginMatch=r[1]||r[2]},"on:end":(r,$0)=>{if($0.data._beginMatch!==r[1])$0.ignoreMatch()}},w=Z.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),P=`[
|
|
5
|
+
]`,A={scope:"string",variants:[F,Y,K,w]},_={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},V=["false","null","true"],D=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],v=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],x={keyword:D,literal:((r)=>{let $0=[];return r.forEach((m)=>{if($0.push(m),m.toLowerCase()===m)$0.push(m.toUpperCase());else $0.push(m.toLowerCase())}),$0})(V),built_in:v},S=(r)=>{return r.map(($0)=>{return $0.replace(/\|\d+$/,"")})},O={variants:[{match:[/new/,J.concat(`[
|
|
6
|
+
]`,"+"),J.concat("(?!",S(v).join("\\b|"),"\\b)"),z],scope:{1:"keyword",4:"title.class"}}]},N=J.concat(X,"\\b(?!\\()"),L={variants:[{match:[J.concat(/::/,J.lookahead(/(?!class\b)/)),N],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[z,J.concat(/::/,J.lookahead(/(?!class\b)/)),N],scope:{1:"title.class",3:"variable.constant"}},{match:[z,J.concat("::",J.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[z,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},B={scope:"attr",match:J.concat(X,J.lookahead(":"),J.lookahead(/(?!::)/))},M={relevance:0,begin:/\(/,end:/\)/,keywords:x,contains:[B,G,L,Z.C_BLOCK_COMMENT_MODE,A,_,O]},y={relevance:0,match:[/\b/,J.concat("(?!fn\\b|function\\b|",S(D).join("\\b|"),"|",S(v).join("\\b|"),"\\b)"),X,J.concat(`[
|
|
7
|
+
]`,"*"),J.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[M]};M.contains.push(y);let E=[B,L,Z.C_BLOCK_COMMENT_MODE,A,_,O],c={begin:J.concat(/#\[\s*\\?/,J.either(z,W)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:V,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:V,keyword:["new","array"]},contains:["self",...E]},...E,{scope:"meta",variants:[{match:z},{match:W}]}]};return{case_insensitive:!1,keywords:x,contains:[c,Z.HASH_COMMENT_MODE,Z.COMMENT("//","$"),Z.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:Z.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},q,{scope:"variable.language",match:/\$this\b/},G,y,L,{match:[/const/,/\s/,X],scope:{1:"keyword",3:"variable.constant"}},O,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},Z.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:x,contains:["self",c,G,L,Z.C_BLOCK_COMMENT_MODE,A,_]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},Z.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[Z.inherit(Z.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},Z.UNDERSCORE_TITLE_MODE]},A,_]}}F4.exports=Az});var P4=C0((dY,L4)=>{function Nz(Z){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},Z.inherit(Z.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),Z.inherit(Z.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}L4.exports=Nz});var O4=C0((cY,B4)=>{function wz(Z){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}B4.exports=wz});var N4=C0((iY,A4)=>{function Mz(Z){let J=Z.regex,Q=/[\p{XID_Start}_]\p{XID_Continue}*/u,X=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],q={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:X,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},H={className:"meta",begin:/^(>>>|\.\.\.) /},Y={className:"subst",begin:/\{/,end:/\}/,keywords:q,illegal:/#/},F={begin:/\{\{/,relevance:0},K={className:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,H],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,H],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[Z.BACKSLASH_ESCAPE,H,F,Y]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[Z.BACKSLASH_ESCAPE,H,F,Y]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[Z.BACKSLASH_ESCAPE,F,Y]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE,F,Y]},Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},w="[0-9](_?[0-9])*",P="(\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.",A=`\\b|${X.join("|")}`,_={className:"number",relevance:0,variants:[{begin:`(\\b([0-9](_?[0-9])*)|((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.))[eE][+-]?([0-9](_?[0-9])*)[jJ]?(?=${A})`},{begin:"((\\b([0-9](_?[0-9])*))?\\.([0-9](_?[0-9])*)|\\b([0-9](_?[0-9])*)\\.)[jJ]?"},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${A})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${A})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${A})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${A})`},{begin:`\\b([0-9](_?[0-9])*)[jJ](?=${A})`}]},V={className:"comment",begin:J.lookahead(/# type:/),end:/$/,keywords:q,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},D={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:["self",H,_,K,Z.HASH_COMMENT_MODE]}]};return Y.contains=[K,_,H],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:q,illegal:/(<\/|\?)|=>/,contains:[H,_,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},K,V,Z.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,Q],scope:{1:"keyword",3:"title.function"},contains:[D]},{variants:[{match:[/\bclass/,/\s+/,Q,/\s*/,/\(\s*/,Q,/\s*\)/]},{match:[/\bclass/,/\s+/,Q]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[_,D,K]}]}}A4.exports=Mz});var M4=C0((aY,w4)=>{function Cz(Z){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}w4.exports=Cz});var y4=C0((nY,C4)=>{function yz(Z){let J=Z.regex,Q=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,X=J.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),z=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,W=J.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:Q,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[Z.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:J.lookahead(J.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:Q},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),Z.HASH_COMMENT_MODE,{scope:"string",contains:[Z.BACKSLASH_ESCAPE],variants:[Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),Z.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[z,X]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,X]},{scope:{1:"punctuation",2:"number"},match:[W,X]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,X]}]},{scope:{3:"operator"},match:[Q,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:z},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:W},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}C4.exports=yz});var v4=C0((lY,_4)=>{function _z(Z){let J=Z.regex,Q=/(r#)?/,X=J.concat(Q,Z.UNDERSCORE_IDENT_RE),z=J.concat(Q,Z.IDENT_RE),W={className:"title.function.invoke",relevance:0,begin:J.concat(/\b/,/(?!let|for|while|if|else|match\b)/,z,J.lookahead(/\s*\(/))},G="([ui](8|16|32|64|128|size)|f(32|64))?",q=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],H=["true","false","Some","None","Ok","Err"],Y=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],F=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:Z.IDENT_RE+"!?",type:F,keyword:q,literal:H,built_in:Y},illegal:"</",contains:[Z.C_LINE_COMMENT_MODE,Z.COMMENT("/\\*","\\*/",{contains:["self"]}),Z.inherit(Z.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?"},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?"}],relevance:0},{begin:[/fn/,/\s+/,X],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[Z.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,X],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,X,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,X],className:{1:"keyword",3:"title.class"}},{begin:Z.IDENT_RE+"::",keywords:{keyword:"Self",built_in:Y,type:F}},{className:"punctuation",begin:"->"},W]}}_4.exports=_z});var R4=C0((rY,T4)=>{var vz=(Z)=>{return{IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:Z.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:Z.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}},Tz=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Rz=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],kz=[...Tz,...Rz],Iz=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Sz=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Vz=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),fz=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function gz(Z){let J=vz(Z),Q=Vz,X=Sz,z="@[a-z-]+",W="and or not only",G="[a-zA-Z-][a-zA-Z0-9_-]*",q={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[Z.C_LINE_COMMENT_MODE,Z.C_BLOCK_COMMENT_MODE,J.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},J.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+kz.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+X.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+Q.join("|")+")"},q,{begin:/\(/,end:/\)/,contains:[J.CSS_NUMBER_MODE]},J.CSS_VARIABLE,{className:"attribute",begin:"\\b("+fz.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[J.BLOCK_COMMENT,q,J.HEXCOLOR,J.CSS_NUMBER_MODE,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.IMPORTANT,J.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:"@[a-z-]+",keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Iz.join(" ")},contains:[{begin:"@[a-z-]+",className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},q,Z.QUOTE_STRING_MODE,Z.APOS_STRING_MODE,J.HEXCOLOR,J.CSS_NUMBER_MODE]},J.FUNCTION_DISPATCH]}}T4.exports=gz});var I4=C0((oY,k4)=>{function bz(Z){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}k4.exports=bz});var V4=C0((tY,S4)=>{function jz(Z){let J=Z.regex,Q=Z.COMMENT("--","$"),X={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},z={begin:/"/,end:/"/,contains:[{match:/""/}]},W=["true","false","unknown"],G=["double precision","large object","with timezone","without timezone"],q=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],H=["add","asc","collation","desc","final","first","last","view"],Y=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],F=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],K=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],w=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],P=F,A=[...Y,...H].filter((S)=>{return!F.includes(S)}),_={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},V={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},D={match:J.concat(/\b/,J.either(...P),/\s*\(/),relevance:0,keywords:{built_in:P}};function v(S){return J.concat(/\b/,J.either(...S.map((O)=>{return O.replace(/\s+/,"\\s+")})),/\b/)}let R={scope:"keyword",match:v(w),relevance:0};function x(S,{exceptions:O,when:N}={}){let L=N;return O=O||[],S.map((B)=>{if(B.match(/\|\d+$/)||O.includes(B))return B;else if(L(B))return`${B}|0`;else return B})}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:x(A,{when:(S)=>S.length<3}),literal:W,type:q,built_in:K},contains:[{scope:"type",match:v(G)},R,D,_,X,z,Z.C_NUMBER_MODE,Z.C_BLOCK_COMMENT_MODE,Q,V]}}S4.exports=jz});var u4=C0((sY,m4)=>{function j4(Z){if(!Z)return null;if(typeof Z==="string")return Z;return Z.source}function nZ(Z){return I0("(?=",Z,")")}function I0(...Z){return Z.map((Q)=>j4(Q)).join("")}function hz(Z){let J=Z[Z.length-1];if(typeof J==="object"&&J.constructor===Object)return Z.splice(Z.length-1,1),J;else return{}}function $9(...Z){return"("+(hz(Z).capture?"":"?:")+Z.map((X)=>j4(X)).join("|")+")"}var F1=(Z)=>I0(/\b/,Z,/\w$/.test(Z)?/\b/:/\B/),Dz=["Protocol","Type"].map(F1),f4=["init","self"].map(F1),xz=["Any","Self"],Y1=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],g4=["false","nil","true"],mz=["assignment","associativity","higherThan","left","lowerThan","none","right"],uz=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],b4=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],h4=$9(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),D4=$9(h4,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),K1=I0(h4,D4,"*"),x4=$9(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),l8=$9(x4,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w9=I0(x4,l8,"*"),n8=I0(/[A-Z]/,l8,"*"),Ez=["attached","autoclosure",I0(/convention\(/,$9("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",I0(/objc\(/,w9,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],pz=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function dz(Z){let J={match:/\s+/,relevance:0},Q=Z.COMMENT("/\\*","\\*/",{contains:["self"]}),X=[Z.C_LINE_COMMENT_MODE,Q],z={match:[/\./,$9(...Dz,...f4)],className:{2:"keyword"}},W={match:I0(/\./,$9(...Y1)),relevance:0},G=Y1.filter((Y0)=>typeof Y0==="string").concat(["_|0"]),q=Y1.filter((Y0)=>typeof Y0!=="string").concat(xz).map(F1),H={variants:[{className:"keyword",match:$9(...q,...f4)}]},Y={$pattern:$9(/\b\w+/,/#\w+/),keyword:G.concat(uz),literal:g4},F=[z,W,H],K={match:I0(/\./,$9(...b4)),relevance:0},w={className:"built_in",match:I0(/\b/,$9(...b4),/(?=\()/)},P=[K,w],A={match:/->/,relevance:0},_={className:"operator",relevance:0,variants:[{match:K1},{match:`\\.(\\.|${D4})+`}]},V=[A,_],D="([0-9]_*)+",v="([0-9a-fA-F]_*)+",R={className:"number",relevance:0,variants:[{match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{match:"\\b0x(([0-9a-fA-F]_*)+)(\\.(([0-9a-fA-F]_*)+))?([pP][+-]?(([0-9]_*)+))?\\b"},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},x=(Y0="")=>({className:"subst",variants:[{match:I0(/\\/,Y0,/[0\\tnr"']/)},{match:I0(/\\/,Y0,/u\{[0-9a-fA-F]{1,8}\}/)}]}),S=(Y0="")=>({className:"subst",match:I0(/\\/,Y0,/[\t ]*(?:[\r\n]|\r\n)/)}),O=(Y0="")=>({className:"subst",label:"interpol",begin:I0(/\\/,Y0,/\(/),end:/\)/}),N=(Y0="")=>({begin:I0(Y0,/"""/),end:I0(/"""/,Y0),contains:[x(Y0),S(Y0),O(Y0)]}),L=(Y0="")=>({begin:I0(Y0,/"/),end:I0(/"/,Y0),contains:[x(Y0),O(Y0)]}),B={className:"string",variants:[N(),N("#"),N("##"),N("###"),L(),L("#"),L("##"),L("###")]},M=[Z.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[Z.BACKSLASH_ESCAPE]}],y={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:M},E=(Y0)=>{let r0=I0(Y0,/\//),K0=I0(/\//,Y0);return{begin:r0,end:K0,contains:[...M,{scope:"comment",begin:`#(?!.*${K0})`,end:/$/}]}},c={scope:"regexp",variants:[E("###"),E("##"),E("#"),y]},r={match:I0(/`/,w9,/`/)},$0={className:"variable",match:/\$\d+/},m={className:"variable",match:`\\$${l8}+`},g=[r,$0,m],u={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:pz,contains:[...V,R,B]}]}},I={scope:"keyword",match:I0(/@/,$9(...Ez),nZ($9(/\(/,/\s+/)))},n={scope:"meta",match:I0(/@/,w9)},Z0=[u,I,n],q0={match:nZ(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:I0(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,l8,"+")},{className:"type",match:n8,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:I0(/\s+&\s+/,nZ(n8)),relevance:0}]},Q0={begin:/</,end:/>/,keywords:Y,contains:[...X,...F,...Z0,A,q0]};q0.contains.push(Q0);let J0={match:I0(w9,/\s*:/),keywords:"_|0",relevance:0},B0={begin:/\(/,end:/\)/,relevance:0,keywords:Y,contains:["self",J0,...X,c,...F,...P,...V,R,B,...g,...Z0,q0]},p0={begin:/</,end:/>/,keywords:"repeat each",contains:[...X,q0]},i0={begin:$9(nZ(I0(w9,/\s*:/)),nZ(I0(w9,/\s+/,w9,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:w9}]},m0={begin:/\(/,end:/\)/,keywords:Y,contains:[i0,...X,...F,...V,R,B,...Z0,q0,B0],endsParent:!0,illegal:/["']/},d0={match:[/(func|macro)/,/\s+/,$9(r.match,w9,K1)],className:{1:"keyword",3:"title.function"},contains:[p0,m0,J],illegal:[/\[/,/%/]},g0={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[p0,m0,J],illegal:/\[|%/},h0={match:[/operator/,/\s+/,K1],className:{1:"keyword",3:"title"}},_0={begin:[/precedencegroup/,/\s+/,n8],className:{1:"keyword",3:"title"},contains:[q0],keywords:[...mz,...g4],end:/}/},a0={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},O0={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},u0={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,w9,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:Y,contains:[p0,...F,{begin:/:/,end:/\{/,keywords:Y,contains:[{scope:"title.class.inherited",match:n8},...F],relevance:0}]};for(let Y0 of B.variants){let r0=Y0.contains.find((l0)=>l0.label==="interpol");r0.keywords=Y;let K0=[...F,...P,...V,R,B,...g];r0.contains=[...K0,{begin:/\(/,end:/\)/,contains:["self",...K0]}]}return{name:"Swift",keywords:Y,contains:[...X,d0,g0,a0,O0,u0,h0,_0,{beginKeywords:"import",end:/$/,contains:[...X],relevance:0},c,...F,...P,...V,R,B,...g,...Z0,q0,B0]}}m4.exports=dz});var p4=C0((eY,E4)=>{function cz(Z){let X={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},z={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},W={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},G={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[Z.BACKSLASH_ESCAPE,z]},q=Z.inherit(G,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),H="[0-9]{4}(-[0-9][0-9]){0,2}",Y="([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?",F="(\\.[0-9]*)?",K="([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?",w={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},P={end:",",endsWithParent:!0,excludeEnd:!0,keywords:"true false yes no null",relevance:0},A={begin:/\{/,end:/\}/,contains:[P],illegal:"\\n",relevance:0},_={begin:"\\[",end:"\\]",contains:[P],illegal:"\\n",relevance:0},V=[X,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!<[\\w#;/?:@&=+$,.~*'()[\\]]+>"},{className:"type",begin:"![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"type",begin:"!![\\w#;/?:@&=+$,.~*'()[\\]]+"},{className:"meta",begin:"&"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+Z.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},Z.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},w,{className:"number",begin:Z.C_NUMBER_RE+"\\b",relevance:0},A,_,W,G],D=[...V];return D.pop(),D.push(q),P.contains=D,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:V}}E4.exports=cz});var t4=C0((ZK,o4)=>{var d4=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],c4=["true","false","null","undefined","NaN","Infinity"],i4=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],a4=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],n4=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],l4=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],r4=[].concat(n4,i4,a4);function iz(Z){let J=Z.regex,Q=(u,{after:I})=>{let n="</"+u[0].slice(1);return u.input.indexOf(n,I)!==-1},X="[A-Za-z$_][0-9A-Za-z$_]*",z={begin:"<>",end:"</>"},W=/<[A-Za-z0-9\\._:-]+\s*\/>/,G={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(u,I)=>{let n=u[0].length+u.index,Z0=u.input[n];if(Z0==="<"||Z0===","){I.ignoreMatch();return}if(Z0===">"){if(!Q(u,{after:n}))I.ignoreMatch()}let q0,Q0=u.input.substring(n);if(q0=Q0.match(/^\s*=/)){I.ignoreMatch();return}if(q0=Q0.match(/^\s+extends\s+/)){if(q0.index===0){I.ignoreMatch();return}}}},q={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:d4,literal:c4,built_in:r4,"variable.language":l4},H="[0-9](_?[0-9])*",Y="\\.([0-9](_?[0-9])*)",F="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",K={className:"number",variants:[{begin:"(\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)((\\.([0-9](_?[0-9])*))|\\.)?|(\\.([0-9](_?[0-9])*)))[eE][+-]?([0-9](_?[0-9])*)\\b"},{begin:"\\b(0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*)\\b((\\.([0-9](_?[0-9])*))\\b|\\.)?|(\\.([0-9](_?[0-9])*))\\b"},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},w={className:"subst",begin:"\\$\\{",end:"\\}",keywords:q,contains:[]},P={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"xml"}},A={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"css"}},_={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[Z.BACKSLASH_ESCAPE,w],subLanguage:"graphql"}},V={className:"string",begin:"`",end:"`",contains:[Z.BACKSLASH_ESCAPE,w]},v={className:"comment",variants:[Z.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:"[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),Z.C_BLOCK_COMMENT_MODE,Z.C_LINE_COMMENT_MODE]},R=[Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,{match:/\$\d+/},K];w.contains=R.concat({begin:/\{/,end:/\}/,keywords:q,contains:["self"].concat(R)});let x=[].concat(v,w.contains),S=x.concat([{begin:/(\s*)\(/,end:/\)/,keywords:q,contains:["self"].concat(x)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:S},N={variants:[{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s+/,/extends/,/\s+/,J.concat("[A-Za-z$_][0-9A-Za-z$_]*","(",J.concat(/\./,"[A-Za-z$_][0-9A-Za-z$_]*"),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*"],scope:{1:"keyword",3:"title.class"}}]},L={relevance:0,match:J.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...i4,...a4]}},B={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[O],illegal:/%/},y={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function E(u){return J.concat("(?!",u.join("|"),")")}let c={match:J.concat(/\b/,E([...n4,"super","import"].map((u)=>`${u}\\s*\\(`)),"[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\(/)),className:"title.function",relevance:0},r={begin:J.concat(/\./,J.lookahead(J.concat("[A-Za-z$_][0-9A-Za-z$_]*",/(?![0-9A-Za-z$_(])/))),end:"[A-Za-z$_][0-9A-Za-z$_]*",excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},$0={match:[/get|set/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},O]},m="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+Z.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,"[A-Za-z$_][0-9A-Za-z$_]*",/\s*/,/=\s*/,/(async\s*)?/,J.lookahead(m)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:q,exports:{PARAMS_CONTAINS:S,CLASS_REFERENCE:L},illegal:/#(?![$_A-z])/,contains:[Z.SHEBANG({label:"shebang",binary:"node",relevance:5}),B,Z.APOS_STRING_MODE,Z.QUOTE_STRING_MODE,P,A,_,V,v,{match:/\$\d+/},K,L,{scope:"attr",match:"[A-Za-z$_][0-9A-Za-z$_]*"+J.lookahead(":"),relevance:0},g,{begin:"("+Z.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[v,Z.REGEXP_MODE,{className:"function",begin:m,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:Z.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:q,contains:S}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:z.begin,end:z.end},{match:W},{begin:G.begin,"on:begin":G.isTrulyOpeningTag,end:G.end}],subLanguage:"xml",contains:[{begin:G.begin,end:G.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+Z.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[O,Z.inherit(Z.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*",className:"title.function"})]},{match:/\.\.\./,relevance:0},r,{match:"\\$[A-Za-z$_][0-9A-Za-z$_]*",relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},c,y,N,$0,{match:/\$[(.]/}]}}function az(Z){let J=Z.regex,Q=iz(Z),X="[A-Za-z$_][0-9A-Za-z$_]*",z=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],W={begin:[/namespace/,/\s+/,Z.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},G={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:z},contains:[Q.exports.CLASS_REFERENCE]},q={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},H=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],Y={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:d4.concat(H),literal:c4,built_in:r4.concat(z),"variable.language":l4},F={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},K=(_,V,D)=>{let v=_.contains.findIndex((R)=>R.label===V);if(v===-1)throw Error("can not find mode to replace");_.contains.splice(v,1,D)};Object.assign(Q.keywords,Y),Q.exports.PARAMS_CONTAINS.push(F);let w=Q.contains.find((_)=>_.scope==="attr"),P=Object.assign({},w,{match:J.concat("[A-Za-z$_][0-9A-Za-z$_]*",J.lookahead(/\s*\?:/))});Q.exports.PARAMS_CONTAINS.push([Q.exports.CLASS_REFERENCE,w,P]),Q.contains=Q.contains.concat([F,W,G,P]),K(Q,"shebang",Z.SHEBANG()),K(Q,"use_strict",q);let A=Q.contains.find((_)=>_.label==="func.def");return A.relevance=0,Object.assign(Q,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),Q}o4.exports=az});var e4=C0((JK,s4)=>{function nz(Z){let J=Z.regex,Q={className:"string",begin:/"(""|[^/n])"C\b/},X={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},z=/\d{1,2}\/\d{1,2}\/\d{4}/,W=/\d{4}-\d{1,2}-\d{1,2}/,G=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,q=/\d{1,2}(:\d{1,2}){1,2}/,H={className:"literal",variants:[{begin:J.concat(/# */,J.either(W,z),/ *#/)},{begin:J.concat(/# */,q,/ *#/)},{begin:J.concat(/# */,G,/ *#/)},{begin:J.concat(/# */,J.either(W,z),/ +/,J.either(G,q),/ *#/)}]},Y={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},F={className:"label",begin:/^\w+:/},K=Z.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),w=Z.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[Q,X,H,Y,F,K,w,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[w]}]}}s4.exports=nz});var J$=C0(($K,Z$)=>{function lz(Z){Z.regex;let J=Z.COMMENT(/\(;/,/;\)/);J.contains.push("self");let Q=Z.COMMENT(/;;/,/$/),X=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],z={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},W={className:"variable",begin:/\$[\w_]+/},G={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},q={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},H={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},Y={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:X},contains:[Q,J,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},W,G,z,Z.QUOTE_STRING_MODE,H,Y,q]}}Z$.exports=lz});var Q$=C0((QK,$$)=>{var N0=B7();N0.registerLanguage("xml",A7());N0.registerLanguage("bash",w7());N0.registerLanguage("c",C7());N0.registerLanguage("cpp",_7());N0.registerLanguage("csharp",T7());N0.registerLanguage("css",k7());N0.registerLanguage("markdown",S7());N0.registerLanguage("diff",f7());N0.registerLanguage("ruby",b7());N0.registerLanguage("go",h7());N0.registerLanguage("graphql",x7());N0.registerLanguage("ini",u7());N0.registerLanguage("java",c7());N0.registerLanguage("javascript",r7());N0.registerLanguage("json",t7());N0.registerLanguage("kotlin",e7());N0.registerLanguage("less",Q4());N0.registerLanguage("lua",z4());N0.registerLanguage("makefile",G4());N0.registerLanguage("perl",H4());N0.registerLanguage("objectivec",K4());N0.registerLanguage("php",U4());N0.registerLanguage("php-template",P4());N0.registerLanguage("plaintext",O4());N0.registerLanguage("python",N4());N0.registerLanguage("python-repl",M4());N0.registerLanguage("r",y4());N0.registerLanguage("rust",v4());N0.registerLanguage("scss",R4());N0.registerLanguage("shell",I4());N0.registerLanguage("sql",V4());N0.registerLanguage("swift",u4());N0.registerLanguage("yaml",p4());N0.registerLanguage("typescript",t4());N0.registerLanguage("vbnet",e4());N0.registerLanguage("wasm",J$());N0.HighlightJS=N0;N0.default=N0;$$.exports=N0});var M8,k0,wJ,C2,S9,BJ,MJ,CJ,B6,P8,VZ,yJ,w6,O6,A6,y2,A8={},N8=[],_2=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,C8=Array.isArray;function y9(Z,J){for(var Q in J)Z[Q]=J[Q];return Z}function M6(Z){Z&&Z.parentNode&&Z.parentNode.removeChild(Z)}function v2(Z,J,Q){var X,z,W,G={};for(W in J)W=="key"?X=J[W]:W=="ref"?z=J[W]:G[W]=J[W];if(arguments.length>2&&(G.children=arguments.length>3?M8.call(arguments,2):Q),typeof Z=="function"&&Z.defaultProps!=null)for(W in Z.defaultProps)G[W]===void 0&&(G[W]=Z.defaultProps[W]);return B8(Z,G,X,z,null)}function B8(Z,J,Q,X,z){var W={type:Z,props:J,key:Q,ref:X,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:z==null?++wJ:z,__i:-1,__u:0};return z==null&&k0.vnode!=null&&k0.vnode(W),W}function o(Z){return Z.children}function O8(Z,J){this.props=Z,this.context=J}function YZ(Z,J){if(J==null)return Z.__?YZ(Z.__,Z.__i+1):null;for(var Q;J<Z.__k.length;J++)if((Q=Z.__k[J])!=null&&Q.__e!=null)return Q.__e;return typeof Z.type=="function"?YZ(Z):null}function T2(Z){if(Z.__P&&Z.__d){var J=Z.__v,Q=J.__e,X=[],z=[],W=y9({},J);W.__v=J.__v+1,k0.vnode&&k0.vnode(W),C6(Z.__P,W,J,Z.__n,Z.__P.namespaceURI,32&J.__u?[Q]:null,X,Q==null?YZ(J):Q,!!(32&J.__u),z),W.__v=J.__v,W.__.__k[W.__i]=W,RJ(X,W,z),J.__e=J.__=null,W.__e!=Q&&_J(W)}}function _J(Z){if((Z=Z.__)!=null&&Z.__c!=null)return Z.__e=Z.__c.base=null,Z.__k.some(function(J){if(J!=null&&J.__e!=null)return Z.__e=Z.__c.base=J.__e}),_J(Z)}function OJ(Z){(!Z.__d&&(Z.__d=!0)&&S9.push(Z)&&!w8.__r++||BJ!=k0.debounceRendering)&&((BJ=k0.debounceRendering)||MJ)(w8)}function w8(){try{for(var Z,J=1;S9.length;)S9.length>J&&S9.sort(CJ),Z=S9.shift(),J=S9.length,T2(Z)}finally{S9.length=w8.__r=0}}function vJ(Z,J,Q,X,z,W,G,q,H,Y,F){var K,w,P,A,_,V,D,v=X&&X.__k||N8,R=J.length;for(H=R2(Q,J,v,H,R),K=0;K<R;K++)(P=Q.__k[K])!=null&&(w=P.__i!=-1&&v[P.__i]||A8,P.__i=K,V=C6(Z,P,w,z,W,G,q,H,Y,F),A=P.__e,P.ref&&w.ref!=P.ref&&(w.ref&&y6(w.ref,null,P),F.push(P.ref,P.__c||A,P)),_==null&&A!=null&&(_=A),(D=!!(4&P.__u))||w.__k===P.__k?(H=TJ(P,H,Z,D),D&&w.__e&&(w.__e=null)):typeof P.type=="function"&&V!==void 0?H=V:A&&(H=A.nextSibling),P.__u&=-7);return Q.__e=_,H}function R2(Z,J,Q,X,z){var W,G,q,H,Y,F=Q.length,K=F,w=0;for(Z.__k=Array(z),W=0;W<z;W++)(G=J[W])!=null&&typeof G!="boolean"&&typeof G!="function"?(typeof G=="string"||typeof G=="number"||typeof G=="bigint"||G.constructor==String?G=Z.__k[W]=B8(null,G,null,null,null):C8(G)?G=Z.__k[W]=B8(o,{children:G},null,null,null):G.constructor===void 0&&G.__b>0?G=Z.__k[W]=B8(G.type,G.props,G.key,G.ref?G.ref:null,G.__v):Z.__k[W]=G,H=W+w,G.__=Z,G.__b=Z.__b+1,q=null,(Y=G.__i=k2(G,Q,H,K))!=-1&&(K--,(q=Q[Y])&&(q.__u|=2)),q==null||q.__v==null?(Y==-1&&(z>F?w--:z<F&&w++),typeof G.type!="function"&&(G.__u|=4)):Y!=H&&(Y==H-1?w--:Y==H+1?w++:(Y>H?w--:w++,G.__u|=4))):Z.__k[W]=null;if(K)for(W=0;W<F;W++)(q=Q[W])!=null&&(2&q.__u)==0&&(q.__e==X&&(X=YZ(q)),IJ(q,q));return X}function TJ(Z,J,Q,X){var z,W;if(typeof Z.type=="function"){for(z=Z.__k,W=0;z&&W<z.length;W++)z[W]&&(z[W].__=Z,J=TJ(z[W],J,Q,X));return J}Z.__e!=J&&(X&&(J&&Z.type&&!J.parentNode&&(J=YZ(Z)),Q.insertBefore(Z.__e,J||null)),J=Z.__e);do J=J&&J.nextSibling;while(J!=null&&J.nodeType==8);return J}function k2(Z,J,Q,X){var z,W,G,q=Z.key,H=Z.type,Y=J[Q],F=Y!=null&&(2&Y.__u)==0;if(Y===null&&q==null||F&&q==Y.key&&H==Y.type)return Q;if(X>(F?1:0)){for(z=Q-1,W=Q+1;z>=0||W<J.length;)if((Y=J[G=z>=0?z--:W++])!=null&&(2&Y.__u)==0&&q==Y.key&&H==Y.type)return G}return-1}function AJ(Z,J,Q){J[0]=="-"?Z.setProperty(J,Q==null?"":Q):Z[J]=Q==null?"":typeof Q!="number"||_2.test(J)?Q:Q+"px"}function L8(Z,J,Q,X,z){var W,G;Z:if(J=="style")if(typeof Q=="string")Z.style.cssText=Q;else{if(typeof X=="string"&&(Z.style.cssText=X=""),X)for(J in X)Q&&J in Q||AJ(Z.style,J,"");if(Q)for(J in Q)X&&Q[J]==X[J]||AJ(Z.style,J,Q[J])}else if(J[0]=="o"&&J[1]=="n")W=J!=(J=J.replace(yJ,"$1")),G=J.toLowerCase(),J=G in Z||J=="onFocusOut"||J=="onFocusIn"?G.slice(2):J.slice(2),Z.l||(Z.l={}),Z.l[J+W]=Q,Q?X?Q[VZ]=X[VZ]:(Q[VZ]=w6,Z.addEventListener(J,W?A6:O6,W)):Z.removeEventListener(J,W?A6:O6,W);else{if(z=="http://www.w3.org/2000/svg")J=J.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(J!="width"&&J!="height"&&J!="href"&&J!="list"&&J!="form"&&J!="tabIndex"&&J!="download"&&J!="rowSpan"&&J!="colSpan"&&J!="role"&&J!="popover"&&J in Z)try{Z[J]=Q==null?"":Q;break Z}catch(q){}typeof Q=="function"||(Q==null||Q===!1&&J[4]!="-"?Z.removeAttribute(J):Z.setAttribute(J,J=="popover"&&Q==1?"":Q))}}function NJ(Z){return function(J){if(this.l){var Q=this.l[J.type+Z];if(J[P8]==null)J[P8]=w6++;else if(J[P8]<Q[VZ])return;return Q(k0.event?k0.event(J):J)}}}function C6(Z,J,Q,X,z,W,G,q,H,Y){var F,K,w,P,A,_,V,D,v,R,x,S,O,N,L,B=J.type;if(J.constructor!==void 0)return null;128&Q.__u&&(H=!!(32&Q.__u),W=[q=J.__e=Q.__e]),(F=k0.__b)&&F(J);Z:if(typeof B=="function")try{if(D=J.props,v=B.prototype&&B.prototype.render,R=(F=B.contextType)&&X[F.__c],x=F?R?R.props.value:F.__:X,Q.__c?V=(K=J.__c=Q.__c).__=K.__E:(v?J.__c=K=new B(D,x):(J.__c=K=new O8(D,x),K.constructor=B,K.render=S2),R&&R.sub(K),K.state||(K.state={}),K.__n=X,w=K.__d=!0,K.__h=[],K._sb=[]),v&&K.__s==null&&(K.__s=K.state),v&&B.getDerivedStateFromProps!=null&&(K.__s==K.state&&(K.__s=y9({},K.__s)),y9(K.__s,B.getDerivedStateFromProps(D,K.__s))),P=K.props,A=K.state,K.__v=J,w)v&&B.getDerivedStateFromProps==null&&K.componentWillMount!=null&&K.componentWillMount(),v&&K.componentDidMount!=null&&K.__h.push(K.componentDidMount);else{if(v&&B.getDerivedStateFromProps==null&&D!==P&&K.componentWillReceiveProps!=null&&K.componentWillReceiveProps(D,x),J.__v==Q.__v||!K.__e&&K.shouldComponentUpdate!=null&&K.shouldComponentUpdate(D,K.__s,x)===!1){J.__v!=Q.__v&&(K.props=D,K.state=K.__s,K.__d=!1),J.__e=Q.__e,J.__k=Q.__k,J.__k.some(function(M){M&&(M.__=J)}),N8.push.apply(K.__h,K._sb),K._sb=[],K.__h.length&&G.push(K);break Z}K.componentWillUpdate!=null&&K.componentWillUpdate(D,K.__s,x),v&&K.componentDidUpdate!=null&&K.__h.push(function(){K.componentDidUpdate(P,A,_)})}if(K.context=x,K.props=D,K.__P=Z,K.__e=!1,S=k0.__r,O=0,v)K.state=K.__s,K.__d=!1,S&&S(J),F=K.render(K.props,K.state,K.context),N8.push.apply(K.__h,K._sb),K._sb=[];else do K.__d=!1,S&&S(J),F=K.render(K.props,K.state,K.context),K.state=K.__s;while(K.__d&&++O<25);K.state=K.__s,K.getChildContext!=null&&(X=y9(y9({},X),K.getChildContext())),v&&!w&&K.getSnapshotBeforeUpdate!=null&&(_=K.getSnapshotBeforeUpdate(P,A)),N=F!=null&&F.type===o&&F.key==null?kJ(F.props.children):F,q=vJ(Z,C8(N)?N:[N],J,Q,X,z,W,G,q,H,Y),K.base=J.__e,J.__u&=-161,K.__h.length&&G.push(K),V&&(K.__E=K.__=null)}catch(M){if(J.__v=null,H||W!=null)if(M.then){for(J.__u|=H?160:128;q&&q.nodeType==8&&q.nextSibling;)q=q.nextSibling;W[W.indexOf(q)]=null,J.__e=q}else{for(L=W.length;L--;)M6(W[L]);N6(J)}else J.__e=Q.__e,J.__k=Q.__k,M.then||N6(J);k0.__e(M,J,Q)}else W==null&&J.__v==Q.__v?(J.__k=Q.__k,J.__e=Q.__e):q=J.__e=I2(Q.__e,J,Q,X,z,W,G,H,Y);return(F=k0.diffed)&&F(J),128&J.__u?void 0:q}function N6(Z){Z&&(Z.__c&&(Z.__c.__e=!0),Z.__k&&Z.__k.some(N6))}function RJ(Z,J,Q){for(var X=0;X<Q.length;X++)y6(Q[X],Q[++X],Q[++X]);k0.__c&&k0.__c(J,Z),Z.some(function(z){try{Z=z.__h,z.__h=[],Z.some(function(W){W.call(z)})}catch(W){k0.__e(W,z.__v)}})}function kJ(Z){return typeof Z!="object"||Z==null||Z.__b>0?Z:C8(Z)?Z.map(kJ):Z.constructor!==void 0?null:y9({},Z)}function I2(Z,J,Q,X,z,W,G,q,H){var Y,F,K,w,P,A,_,V=Q.props||A8,D=J.props,v=J.type;if(v=="svg"?z="http://www.w3.org/2000/svg":v=="math"?z="http://www.w3.org/1998/Math/MathML":z||(z="http://www.w3.org/1999/xhtml"),W!=null){for(Y=0;Y<W.length;Y++)if((P=W[Y])&&"setAttribute"in P==!!v&&(v?P.localName==v:P.nodeType==3)){Z=P,W[Y]=null;break}}if(Z==null){if(v==null)return document.createTextNode(D);Z=document.createElementNS(z,v,D.is&&D),q&&(k0.__m&&k0.__m(J,W),q=!1),W=null}if(v==null)V===D||q&&Z.data==D||(Z.data=D);else{if(W=v=="textarea"&&D.defaultValue!=null?null:W&&M8.call(Z.childNodes),!q&&W!=null)for(V={},Y=0;Y<Z.attributes.length;Y++)V[(P=Z.attributes[Y]).name]=P.value;for(Y in V)P=V[Y],Y=="dangerouslySetInnerHTML"?K=P:Y=="children"||(Y in D)||Y=="value"&&("defaultValue"in D)||Y=="checked"&&("defaultChecked"in D)||L8(Z,Y,null,P,z);for(Y in D)P=D[Y],Y=="children"?w=P:Y=="dangerouslySetInnerHTML"?F=P:Y=="value"?A=P:Y=="checked"?_=P:q&&typeof P!="function"||V[Y]===P||L8(Z,Y,P,V[Y],z);if(F)q||K&&(F.__html==K.__html||F.__html==Z.innerHTML)||(Z.innerHTML=F.__html),J.__k=[];else if(K&&(Z.innerHTML=""),vJ(J.type=="template"?Z.content:Z,C8(w)?w:[w],J,Q,X,v=="foreignObject"?"http://www.w3.org/1999/xhtml":z,W,G,W?W[0]:Q.__k&&YZ(Q,0),q,H),W!=null)for(Y=W.length;Y--;)M6(W[Y]);q&&v!="textarea"||(Y="value",v=="progress"&&A==null?Z.removeAttribute("value"):A!=null&&(A!==Z[Y]||v=="progress"&&!A||v=="option"&&A!=V[Y])&&L8(Z,Y,A,V[Y],z),Y="checked",_!=null&&_!=Z[Y]&&L8(Z,Y,_,V[Y],z))}return Z}function y6(Z,J,Q){try{if(typeof Z=="function"){var X=typeof Z.__u=="function";X&&Z.__u(),X&&J==null||(Z.__u=Z(J))}else Z.current=J}catch(z){k0.__e(z,Q)}}function IJ(Z,J,Q){var X,z;if(k0.unmount&&k0.unmount(Z),(X=Z.ref)&&(X.current&&X.current!=Z.__e||y6(X,null,J)),(X=Z.__c)!=null){if(X.componentWillUnmount)try{X.componentWillUnmount()}catch(W){k0.__e(W,J)}X.base=X.__P=null}if(X=Z.__k)for(z=0;z<X.length;z++)X[z]&&IJ(X[z],J,Q||typeof Z.type!="function");Q||M6(Z.__e),Z.__c=Z.__=Z.__e=void 0}function S2(Z,J,Q){return this.constructor(Z,Q)}function a9(Z,J,Q){var X,z,W,G;J==document&&(J=document.documentElement),k0.__&&k0.__(Z,J),z=(X=typeof Q=="function")?null:Q&&Q.__k||J.__k,W=[],G=[],C6(J,Z=(!X&&Q||J).__k=v2(o,null,[Z]),z||A8,A8,J.namespaceURI,!X&&Q?[Q]:z?null:J.firstChild?M8.call(J.childNodes):null,W,!X&&Q?Q:z?z.__e:J.firstChild,X,G),RJ(W,Z,G)}M8=N8.slice,k0={__e:function(Z,J,Q,X){for(var z,W,G;J=J.__;)if((z=J.__c)&&!z.__)try{if((W=z.constructor)&&W.getDerivedStateFromError!=null&&(z.setState(W.getDerivedStateFromError(Z)),G=z.__d),z.componentDidCatch!=null&&(z.componentDidCatch(Z,X||{}),G=z.__d),G)return z.__E=z}catch(q){Z=q}throw Z}},wJ=0,C2=function(Z){return Z!=null&&Z.constructor===void 0},O8.prototype.setState=function(Z,J){var Q;Q=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=y9({},this.state),typeof Z=="function"&&(Z=Z(y9({},Q),this.props)),Z&&y9(Q,Z),Z!=null&&this.__v&&(J&&this._sb.push(J),OJ(this))},O8.prototype.forceUpdate=function(Z){this.__v&&(this.__e=!0,Z&&this.__h.push(Z),OJ(this))},O8.prototype.render=o,S9=[],MJ=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,CJ=function(Z,J){return Z.__v.__b-J.__v.__b},w8.__r=0,B6=Math.random().toString(8),P8="__d"+B6,VZ="__a"+B6,yJ=/(PointerCapture)$|Capture$/i,w6=0,O6=NJ(!1),A6=NJ(!0),y2=0;var KZ,D0,_6,SJ,fZ=0,xJ=[],E0=k0,VJ=E0.__b,fJ=E0.__r,gJ=E0.diffed,bJ=E0.__c,jJ=E0.unmount,hJ=E0.__;function _8(Z,J){E0.__h&&E0.__h(D0,Z,fZ||J),fZ=0;var Q=D0.__H||(D0.__H={__:[],__h:[]});return Z>=Q.__.length&&Q.__.push({}),Q.__[Z]}function k(Z){return fZ=1,V2(uJ,Z)}function V2(Z,J,Q){var X=_8(KZ++,2);if(X.t=Z,!X.__c&&(X.__=[Q?Q(J):uJ(void 0,J),function(q){var H=X.__N?X.__N[0]:X.__[0],Y=X.t(H,q);H!==Y&&(X.__N=[Y,X.__[1]],X.__c.setState({}))}],X.__c=D0,!D0.__f)){var z=function(q,H,Y){if(!X.__c.__H)return!0;var F=X.__c.__H.__.filter(function(w){return w.__c});if(F.every(function(w){return!w.__N}))return!W||W.call(this,q,H,Y);var K=X.__c.props!==q;return F.some(function(w){if(w.__N){var P=w.__[0];w.__=w.__N,w.__N=void 0,P!==w.__[0]&&(K=!0)}}),W&&W.call(this,q,H,Y)||K};D0.__f=!0;var{shouldComponentUpdate:W,componentWillUpdate:G}=D0;D0.componentWillUpdate=function(q,H,Y){if(this.__e){var F=W;W=void 0,z(q,H,Y),W=F}G&&G.call(this,q,H,Y)},D0.shouldComponentUpdate=z}return X.__N||X.__}function l(Z,J){var Q=_8(KZ++,3);!E0.__s&&T6(Q.__H,J)&&(Q.__=Z,Q.u=J,D0.__H.__h.push(Q))}function mJ(Z,J){var Q=_8(KZ++,4);!E0.__s&&T6(Q.__H,J)&&(Q.__=Z,Q.u=J,D0.__h.push(Q))}function W0(Z){return fZ=5,_9(function(){return{current:Z}},[])}function _9(Z,J){var Q=_8(KZ++,7);return T6(Q.__H,J)&&(Q.__=Z(),Q.__H=J,Q.__h=Z),Q.__}function n9(Z,J){return fZ=8,_9(function(){return Z},J)}function f2(){for(var Z;Z=xJ.shift();){var J=Z.__H;if(Z.__P&&J)try{J.__h.some(y8),J.__h.some(v6),J.__h=[]}catch(Q){J.__h=[],E0.__e(Q,Z.__v)}}}E0.__b=function(Z){D0=null,VJ&&VJ(Z)},E0.__=function(Z,J){Z&&J.__k&&J.__k.__m&&(Z.__m=J.__k.__m),hJ&&hJ(Z,J)},E0.__r=function(Z){fJ&&fJ(Z),KZ=0;var J=(D0=Z.__c).__H;J&&(_6===D0?(J.__h=[],D0.__h=[],J.__.some(function(Q){Q.__N&&(Q.__=Q.__N),Q.u=Q.__N=void 0})):(J.__h.some(y8),J.__h.some(v6),J.__h=[],KZ=0)),_6=D0},E0.diffed=function(Z){gJ&&gJ(Z);var J=Z.__c;J&&J.__H&&(J.__H.__h.length&&(xJ.push(J)!==1&&SJ===E0.requestAnimationFrame||((SJ=E0.requestAnimationFrame)||g2)(f2)),J.__H.__.some(function(Q){Q.u&&(Q.__H=Q.u),Q.u=void 0})),_6=D0=null},E0.__c=function(Z,J){J.some(function(Q){try{Q.__h.some(y8),Q.__h=Q.__h.filter(function(X){return!X.__||v6(X)})}catch(X){J.some(function(z){z.__h&&(z.__h=[])}),J=[],E0.__e(X,Q.__v)}}),bJ&&bJ(Z,J)},E0.unmount=function(Z){jJ&&jJ(Z);var J,Q=Z.__c;Q&&Q.__H&&(Q.__H.__.some(function(X){try{y8(X)}catch(z){J=z}}),Q.__H=void 0,J&&E0.__e(J,Q.__v))};var DJ=typeof requestAnimationFrame=="function";function g2(Z){var J,Q=function(){clearTimeout(X),DJ&&cancelAnimationFrame(J),setTimeout(Z)},X=setTimeout(Q,35);DJ&&(J=requestAnimationFrame(Q))}function y8(Z){var J=D0,Q=Z.__c;typeof Q=="function"&&(Z.__c=void 0,Q()),D0=J}function v6(Z){var J=D0;Z.__c=Z.__(),D0=J}function T6(Z,J){return!Z||Z.length!==J.length||J.some(function(Q,X){return Q!==Z[X]})}function uJ(Z,J){return typeof J=="function"?J(Z):J}class l9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="BusError"}}class EJ{ch=null;worker=null;started=!1;leader=!1;nextLocal=0;localPending=new Map;remotePending=new Map;listeners=new Set;start(){if(this.started)return;this.started=!0,this.ch=new BroadcastChannel("mh-replica-bus"),this.ch.onmessage=(J)=>this.onChannel(J.data);let Z=navigator.locks;if(Z)Z.request("mh-replica-leader",()=>{return this.becomeLeader(),new Promise(()=>{})}).catch(()=>{});else this.becomeLeader()}onEvent(Z){return this.listeners.add(Z),()=>this.listeners.delete(Z)}call(Z,...J){if(!this.started)this.start();if(this.leader)return this.workerCall(Z,J);return this.remoteCall(Z,J)}becomeLeader(){if(this.leader)return;this.leader=!0,this.spawnWorker();for(let[Z,J]of[...this.remotePending])this.remotePending.delete(Z),clearTimeout(J.timer),this.workerCall(J.op,J.args).then(J.resolve,J.reject)}spawnWorker(){if(this.worker)return;this.worker=new Worker("/db-worker.js",{type:"module"}),this.worker.onmessage=(Z)=>{let J=Z.data;if("id"in J){let Q=this.localPending.get(J.id);if(!Q)return;if(this.localPending.delete(J.id),J.ok)Q.resolve(J.result);else Q.reject(new l9(J.error.message,J.error.code));return}this.emit(J),this.ch?.postMessage({kind:"event",event:J})},this.worker.onerror=()=>{let Z={event:"status",status:{state:"error",paired:!1,node:null,error:"worker crashed"}};this.emit(Z),this.ch?.postMessage({kind:"event",event:Z})}}workerCall(Z,J){if(!this.worker)this.spawnWorker();let Q=++this.nextLocal;return new Promise((X,z)=>{this.localPending.set(Q,{resolve:X,reject:z}),this.worker.postMessage({id:Q,op:Z,args:J})})}remoteCall(Z,J){let Q=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;return new Promise((X,z)=>{let W=setTimeout(()=>{if(this.remotePending.delete(Q),this.leader){this.workerCall(Z,J).then(X,z);return}z(new l9("replica leader unavailable","network"))},1e4);this.remotePending.set(Q,{resolve:X,reject:z,timer:W,op:Z,args:J}),this.ch?.postMessage({kind:"req",id:Q,op:Z,args:J})})}onChannel(Z){if(Z.kind==="req"){if(!this.leader)return;this.workerCall(Z.op,Z.args).then((J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!0,result:J}),(J)=>this.ch?.postMessage({kind:"res",id:Z.id,ok:!1,error:{message:J.message,code:J.code}}));return}if(Z.kind==="res"){let J=this.remotePending.get(Z.id);if(!J)return;if(this.remotePending.delete(Z.id),clearTimeout(J.timer),Z.ok)J.resolve(Z.result);else J.reject(new l9(Z.error?.message??"replica error",Z.error?.code));return}if(Z.kind==="event"&&!this.leader)this.emit(Z.event)}emit(Z){for(let J of this.listeners)J(Z)}stopWorker(){this.worker?.terminate(),this.worker=null,this.localPending.forEach((Z)=>Z.reject(new l9("replica stopped",void 0))),this.localPending.clear()}}function v8(){let Z=globalThis;return Z.__mhReplicaBus??=new EJ}function b2(Z,J){if(Z===null)return"unknown";if(Z.status>=500)return"unknown";if(Z.ok)return J?.ok===!0?"server":"none";return"none"}async function pJ(){let Z=null,J=null;try{Z=await fetch("/health",{cache:"no-store"}),J=Z.ok?await Z.json().catch(()=>null):null}catch{Z=null}return b2(Z,J)}var t9="mh-synced",bZ="mh_replica",gZ="mh_replica_hydrated",iJ="mh_origin_mode";class T9 extends Error{code;constructor(Z,J){super(Z);this.code=J;this.name="ReplicaError"}}var R9=!1,v9={state:"booting",paired:!1,node:null},T8=new Set;function jZ(){return v9}function F9(Z){return T8.add(Z),()=>T8.delete(Z)}function R6(Z){try{return localStorage.getItem(Z)==="1"}catch{return!1}}function r9(Z,J){try{J?localStorage.setItem(Z,"1"):localStorage.removeItem(Z)}catch{}}function H9(){return R6(bZ)}function e0(){return H9()&&R6(gZ)&&R9&&v9.state!=="error"}var FZ=(()=>{try{let Z=localStorage.getItem(iJ);return Z==="server"||Z==="none"?Z:null}catch{return null}})();function U9(){return FZ==="none"}function V9(){let Z=U9();return{surface:typeof window<"u"&&window.metahubDesktop?"desktop":"web",dataHome:Z?"local":"server",hold:Z||H9()?"replica":"window"}}async function k6(){if(FZ)return FZ;let Z=await pJ();if(Z==="unknown")return"server";FZ=Z;try{localStorage.setItem(iJ,FZ)}catch{}return FZ}function dJ(Z){if(Z.event==="status"){if(v9=Z.status,v9.lastSync?.ok&&!R6(gZ))r9(gZ,!0),navigator.storage?.persist?.().catch(()=>{});for(let J of T8)J(v9);return}if(Z.event==="synced"){if(document.dispatchEvent(new CustomEvent(t9,{detail:Z})),Z.datasets.some((J)=>J==="databases"||J==="documents"))document.dispatchEvent(new CustomEvent(L9))}}function hZ(){if(R9||typeof Worker>"u")return;R9=!0;let Z=v8();Z.onEvent(dJ),Z.start(),Z.call("status").then((J)=>dJ({event:"status",status:J})).catch(()=>{}),j2(),window.addEventListener("online",o9),document.addEventListener("visibilitychange",o9)}function f0(Z,...J){if(!R9)return Promise.reject(new T9("replica not running",void 0));return v8().call(Z,...J).catch((Q)=>{throw Q instanceof l9?new T9(Q.message,Q.code):Q})}function o9(){if(R9)f0("sync").catch(()=>{})}function aJ(){if(!R9)return Promise.reject(new T9("replica not running",void 0));return f0("sync")}function I6(Z=30000){if(v9.state==="ready")return Promise.resolve();return new Promise((J,Q)=>{let X=setTimeout(()=>{z(),Q(new T9("本地副本启动超时",void 0))},Z),z=F9((W)=>{if(W.state==="ready")clearTimeout(X),z(),J();else if(W.state==="error")clearTimeout(X),z(),Q(new T9(W.error??"本地副本启动失败",void 0))})})}async function nJ(){if(hZ(),await I6(),!v9.paired){let Z=await DZ("/api/pair/new",{method:"POST"});if(!Z.ok)throw new T9(`无法获取配对码: ${Z.status}`,void 0);let{code:J}=await Z.json();await f0("pair",J)}r9(bZ,!0),R8(),o9()}async function lJ(Z,J){hZ(),await I6();let Q=await f0("addStorageReplica",Z,J);return r9(bZ,!0),R8(),o9(),Q}async function rJ(){r9(bZ,!1),r9(gZ,!1);try{if(R9)await f0("unpair")}catch{}await S6()}async function oJ(){r9(bZ,!1),r9(gZ,!1);try{if(R9)await f0("unpair").catch(()=>{}),await f0("reset")}finally{v8().stopWorker(),S6(),R9=!1,v9={state:"booting",paired:!1,node:null};for(let Z of T8)Z(v9)}}function tJ(){if(H9())hZ(),I6().then(()=>o9()).catch(()=>{})}function j2(){let Z=globalThis;if(Z.__mhSwBridge||!("serviceWorker"in navigator))return;Z.__mhSwBridge=!0,navigator.serviceWorker.addEventListener("message",(J)=>{let Q=J.data,X=J.ports?.[0];if(!Q||Q.kind!=="mh-rpc"||!X||!Q.op)return;if(!e0()){X.postMessage({ok:!1,error:{message:"replica unavailable",code:"unavailable"}});return}f0(Q.op,...Q.args??[]).then((z)=>X.postMessage({ok:!0,result:z}),(z)=>X.postMessage({ok:!1,error:{message:z.message,code:z.code}}))})}var cJ=!1;async function S6(){try{if("serviceWorker"in navigator){let Z=await navigator.serviceWorker.getRegistrations();await Promise.all(Z.map((J)=>J.unregister().catch(()=>!1)))}}catch{}try{if("caches"in globalThis){for(let Z of await caches.keys())if(Z.startsWith("mh-shell-")||Z==="mh-api-v1"||Z==="mh-blob-v1")await caches.delete(Z)}}catch{}}function R8(){if(typeof navigator>"u"||!("serviceWorker"in navigator))return;if(typeof window>"u"||!window.isSecureContext)return;if(V9().surface==="desktop"||V9().hold!=="replica"){S6();return}if(navigator.serviceWorker.register("/sw.js").catch((Q)=>{console.warn("[webui] service worker registration failed —",Q)}),cJ)return;cJ=!0;let Z=navigator.serviceWorker.controller!=null,J=!1;navigator.serviceWorker.addEventListener("controllerchange",()=>{if(!Z){Z=!0;return}if(J)return;J=!0,location.reload()})}var h2={invalid_input:400,not_found:404,ambiguous:400,stale:409,conflict:409,auth:401,network:502};function D2(Z){return/^(create|update|delete|move|duplicate|revert)(Database|Document)/.test(Z)}async function M0(Z,...J){try{let Q=await f0(Z,...J);if(D2(Z))document.dispatchEvent(new CustomEvent(L9));return Q}catch(Q){if(Q instanceof T9)throw new f9(Q.message,Q.code,Q.code?h2[Q.code]??400:0);throw Q}}var V6={listDatabases:()=>M0("listDatabases"),createDatabase:(Z)=>M0("createDatabase",Z),updateDatabase:(Z,J)=>M0("updateDatabase",Z,J),duplicateDatabase:(Z,J)=>M0("duplicateDatabase",Z,J),deleteDatabase:(Z)=>M0("deleteDatabase",Z),databaseActivity:(Z,J)=>M0("listDatabaseActivity",Z,J),listProperties:(Z)=>M0("listProperties",Z),createProperty:(Z)=>{let{db:J,...Q}=Z;return M0("addProperty",J,Q)},updateProperty:(Z,J)=>M0("updateProperty",Z,J),setColumnWidth:(Z,J)=>M0("setPropertyWidth",Z,J),deleteProperty:(Z)=>M0("removeProperty",Z),listRecords:(Z,J={})=>M0("listRecords",Z,J),createRecord:(Z,J)=>M0("createRecord",Z,J),getRecord:(Z)=>M0("getRecord",Z),updateRecord:(Z,J)=>M0("updateRecord",Z,J),moveRecord:(Z,J,Q)=>M0("moveRecord",Z,J,Q),deleteRecord:(Z)=>M0("deleteRecord",Z),recordHistory:(Z)=>M0("listRecordRevisions",Z),recordAt:(Z,J)=>M0("recordAtVersion",Z,J),revertRecord:(Z,J)=>M0("revertRecord",Z,J),listDocuments:(Z)=>M0("listDocuments",Z?{database_id:Z}:void 0),listDocumentsByParent:(Z)=>M0("listDocuments",{parent_id:Z}),createDocument:(Z)=>M0("createDocument",Z),getDocument:(Z)=>M0("getDocument",Z),updateDocument:(Z,J)=>{let{if_match:Q,...X}=J;return M0("updateDocument",Z,X,Q)},moveDocument:(Z,J,Q)=>M0("moveDocument",Z,J,Q),duplicateDocument:(Z,J)=>M0("duplicateDocument",Z,J),deleteDocument:(Z)=>M0("deleteDocument",Z),documentHistory:(Z)=>M0("listDocumentRevisions",Z),documentAt:(Z,J)=>M0("documentAtVersion",Z,J),revertDocument:(Z,J)=>M0("revertDocument",Z,J.to,J.if_match),nodes:()=>M0("nodes"),search:(Z,J)=>M0("search",Z,J)},f6={listSites:()=>M0("listSites"),listSiteFiles:(Z)=>M0("listSiteFiles",Z),createSite:(Z)=>M0("createSite",Z),updateSite:(Z,J)=>M0("updateSite",Z,J),deleteSite:(Z)=>M0("deleteSite",Z),deleteSiteFile:(Z,J)=>M0("deleteSiteFile",Z,J),uploadSiteFile:async(Z,J,Q)=>M0("putSiteFile",Z,J,await Q.arrayBuffer(),Q.type||void 0)};var sJ=209715200,x2=Math.floor(167772160);function m2(Z){if(Z instanceof ArrayBuffer)return Z;let J=new Uint8Array(Z.byteLength);return J.set(Z),J.buffer}async function u2(Z){let J=await crypto.subtle.digest("SHA-256",m2(Z));return[...new Uint8Array(J)].map((Q)=>Q.toString(16).padStart(2,"0")).join("")}async function eJ(Z){return(await u2(Z)).slice(0,32)}var E2={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",svg:"image/svg+xml",pdf:"application/pdf"};function Z5(Z){let J=Z.toLowerCase().split(";")[0].trim();for(let[Q,X]of Object.entries(E2))if(X===J&&Q!=="jpeg")return Q;return""}var k8=null;function p2(){if(k8)return k8;return k8=new Promise((Z,J)=>{let Q=indexedDB.open("mh-blobs",1);Q.onupgradeneeded=()=>{let X=Q.result;if(!X.objectStoreNames.contains("spool"))X.createObjectStore("spool",{keyPath:"hash"});if(!X.objectStoreNames.contains("meta"))X.createObjectStore("meta",{keyPath:"hash"})},Q.onsuccess=()=>Z(Q.result),Q.onerror=()=>J(Q.error)}),k8}function Z9(Z,J,Q){return p2().then((X)=>new Promise((z,W)=>{let G=Q(X.transaction(Z,J).objectStore(Z));G.onsuccess=()=>z(G.result),G.onerror=()=>W(G.error)}))}async function J5(Z,J,Q){let X={hash:Z,bytes:J,content_type:Q,created:Date.now(),durable:0};await Z9("spool","readwrite",(z)=>z.put(X))}async function xZ(){return(await Z9("spool","readonly",(J)=>J.getAll())??[]).filter((J)=>!J.durable)}async function $5(Z){await Z9("spool","readwrite",(J)=>J.delete(Z))}var mZ=(Z)=>`/blob/${Z}`;async function d2(Z,J,Q){let X=await Z9("meta","readonly",(W)=>W.get(Z)),z={hash:Z,size:J,accessed:Date.now(),pinned:X?.pinned??0,content_type:Q??X?.content_type};await Z9("meta","readwrite",(W)=>W.put(z))}async function Q5(Z,J){let Q=await Z9("meta","readonly",(X)=>X.get(Z));if(!Q)return!1;return Q.pinned=J?1:0,await Z9("meta","readwrite",(X)=>X.put(Q)),!0}async function X5(Z,J,Q){await(await caches.open("mh-blob-v1")).put(mZ(Z),new Response(J,{headers:{"content-type":Q,"cache-control":"public, max-age=31536000, immutable"}})),await d2(Z,J.byteLength,Q),await c2()}async function c2(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=Z.reduce((z,W)=>z+W.size,0);if(J<=209715200)return;let Q=await caches.open("mh-blob-v1"),X=Z.filter((z)=>!z.pinned).sort((z,W)=>z.accessed-W.accessed);for(let z of X){if(J<=x2)break;await Q.delete(mZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),J-=z.size}}async function z5(){let Z=await Z9("meta","readonly",(X)=>X.getAll())??[],J=0,Q=0;for(let X of Z)if(J+=X.size,X.pinned)Q+=X.size;return{count:Z.length,totalBytes:J,pinnedBytes:Q}}async function W5(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=await caches.open("mh-blob-v1"),Q=0,X=0;for(let z of Z){if(z.pinned)continue;await J.delete(mZ(z.hash)),await Z9("meta","readwrite",(W)=>W.delete(z.hash)),Q++,X+=z.size}return{cleared:Q,freedBytes:X}}async function G5(){let Z=await Z9("meta","readonly",(z)=>z.getAll())??[],J=await caches.open("mh-blob-v1"),Q=[],X=new Set;for(let z of Z){let W=z.content_type??null;if(!W)W=(await J.match(mZ(z.hash)))?.headers.get("content-type")??null;Q.push({hash:z.hash,size:z.size,content_type:W,accessed:z.accessed,pinned:!!z.pinned,pending:!1}),X.add(z.hash)}for(let z of await xZ()){if(X.has(z.hash))continue;Q.push({hash:z.hash,size:z.bytes.byteLength,content_type:z.content_type||null,accessed:z.created,pinned:!1,pending:!0})}return Q}async function g6(Z){let J=await caches.open("mh-blob-v1"),Q=0,X=0;for(let z of new Set(Z)){let W=await Z9("meta","readonly",(G)=>G.get(z));if(!W||W.pinned)continue;await J.delete(mZ(z)),await Z9("meta","readwrite",(G)=>G.delete(z)),Q++,X+=W.size}return{cleared:Q,freedBytes:X}}async function q5(Z){let{cleared:J,freedBytes:Q}=await g6(Z);return{removed:J,freedBytes:Q}}class f9 extends Error{code;status;constructor(Z,J,Q){super(Z);this.code=J;this.status=Q;this.name="ApiError"}}var L9="mh-nav-invalidate";function i2(Z,J){return Z!=="GET"&&(J.startsWith("/api/database")||J.startsWith("/api/document"))}var j6="mh_token",U5="/auth/token";function h6(){try{return localStorage.getItem(j6)}catch{return null}}function L5(Z){try{localStorage.setItem(j6,Z)}catch{}document.cookie=`${j6}=${encodeURIComponent(Z)}; path=/; SameSite=Strict; Max-Age=31536000`}function P5(){return h6()}async function DZ(Z,J={}){let Q=h6(),X=new Headers(J.headers);if(Q&&!X.has("authorization"))X.set("authorization",`Bearer ${Q}`);let z=await fetch(Z,{...J,headers:X});if(z.status!==401||!Q)return z;let W=await fetch(U5,{headers:{authorization:`Bearer ${Q}`}}).catch(()=>null);if(!W?.ok)return z;let G=await W.json().catch(()=>null);if(!G?.token)return z;return L5(G.token),X.set("authorization",`Bearer ${G.token}`),fetch(Z,{...J,headers:X})}function H5(Z,J,Q,X,z){return new Promise((W,G)=>{let q=new XMLHttpRequest;if(q.open("POST",Z),Q)q.setRequestHeader("authorization",`Bearer ${Q}`);if(q.setRequestHeader("content-type",X),z)q.upload.onprogress=(H)=>{if(H.lengthComputable)z(H.loaded,H.total)};q.onload=()=>{let H=null;try{H=JSON.parse(q.responseText)}catch{}W({status:q.status,data:H})},q.onerror=()=>G(Error("network error")),q.ontimeout=()=>G(Error("timeout")),q.send(J)})}async function a2(Z,J,Q,X){let z=h6(),W=await H5(Z,J,z,Q,X);if(W.status===401&&z){let G=await fetch(U5,{headers:{authorization:`Bearer ${z}`}}).catch(()=>null),q=G?.ok?await G.json().catch(()=>null):null;if(q?.token)L5(q.token),W=await H5(Z,J,q.token,Q,X)}if(W.status>=200&&W.status<300&&W.data&&!W.data.error)return W.data;throw Error(W.data&&W.data.error||`${W.status}`)}async function H0(Z,J,Q){let X=await DZ(J,{method:Z,headers:Q!==void 0?{"content-type":"application/json"}:void 0,body:Q!==void 0?JSON.stringify(Q):void 0}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw new f9(z&&z.error||`${X.status} ${X.statusText}`,z?.code,X.status);if(i2(Z,J))document.dispatchEvent(new CustomEvent(L9));return z}var A0=(Z)=>encodeURIComponent(Z),b6=!1;async function B5(){if(b6||U9())return;b6=!0;try{for(let Z of await xZ()){let J;try{J=await DZ("/api/blob",{method:"POST",headers:{"content-type":Z.content_type},body:Z.bytes})}catch{break}if(!J.ok)break;await X5(Z.hash,Z.bytes,Z.content_type).catch(()=>{}),await $5(Z.hash).catch(()=>{})}}finally{b6=!1}}if(typeof window<"u")window.addEventListener("online",()=>void B5());var O5={image:26214400,video:104857600,audio:104857600,file:104857600};function Y5(Z){let J=Z.split(/[?#]/,1)[0]??Z,Q=J.slice(J.lastIndexOf("/")+1),X=Q.lastIndexOf(".");return X>=0?Q.slice(X+1).toLowerCase():""}function K5(Z,J,Q,X){let z=Y5(J)||Y5(X)||Z5(Q);return`/blob/${Z}${z?"."+z:""}`}async function F5(Z,J){let Q=Z.type||"application/octet-stream",X=Z.name||"";try{let z=await a2("/api/blob",Z,Q,J);B5();let W=z;return{...W,url:K5(W.hash,W.url,Q,X)}}catch(z){if(!(e0()||U9()))throw z;let W=await Z.arrayBuffer(),G=await eJ(W);return await J5(G,W,Q),J?.(W.byteLength,W.byteLength),{hash:G,size:W.byteLength,content_type:Q,url:K5(G,"",Q,X)}}}var n2={listDatabases:()=>H0("GET","/api/databases"),createDatabase:(Z)=>H0("POST","/api/databases",Z),updateDatabase:(Z,J)=>H0("PATCH",`/api/database?id=${A0(Z)}`,J),duplicateDatabase:(Z,J)=>H0("POST",`/api/database/duplicate?id=${A0(Z)}`,J??{}),deleteDatabase:(Z)=>H0("DELETE",`/api/database?id=${A0(Z)}`),listProperties:(Z)=>H0("GET",`/api/properties?db=${A0(Z)}`),createProperty:(Z)=>H0("POST","/api/properties",Z),updateProperty:(Z,J)=>H0("PATCH",`/api/property?id=${A0(Z)}`,J),setColumnWidth:(Z,J)=>H0("PATCH",`/api/property/width?id=${A0(Z)}`,{width:J}),deleteProperty:(Z)=>H0("DELETE",`/api/property?id=${A0(Z)}`),listRecords:(Z,J={})=>{let Q=new URLSearchParams({db:Z});if(J.sort)Q.set("sort",J.sort);if(J.limit!=null)Q.set("limit",String(J.limit));return H0("GET",`/api/records?${Q}`)},createRecord:(Z,J)=>H0("POST",`/api/records?db=${A0(Z)}`,J),getRecord:(Z)=>H0("GET",`/api/record?id=${A0(Z)}`),updateRecord:(Z,J)=>H0("PATCH",`/api/record?id=${A0(Z)}`,J),moveRecord:(Z,J,Q)=>H0("PATCH",`/api/record/order?id=${A0(Z)}`,{target:J,where:Q}),deleteRecord:(Z)=>H0("DELETE",`/api/record?id=${A0(Z)}`),listDocuments:(Z)=>H0("GET",Z?`/api/documents?db=${A0(Z)}`:"/api/documents"),listDocumentsByParent:(Z)=>H0("GET",`/api/documents?parent=${A0(Z)}`),createDocument:(Z)=>H0("POST","/api/documents",Z),getDocument:(Z)=>H0("GET",`/api/document?id=${A0(Z)}`),updateDocument:(Z,J)=>H0("PATCH",`/api/document?id=${A0(Z)}`,J),moveDocument:(Z,J,Q)=>H0("PATCH",`/api/document/move?id=${A0(Z)}`,{target:J,where:Q}),duplicateDocument:(Z,J)=>H0("POST",`/api/document/duplicate?id=${A0(Z)}`,J??{}),deleteDocument:(Z)=>H0("DELETE",`/api/document?id=${A0(Z)}`),documentHistory:(Z)=>H0("GET",`/api/document/history?id=${A0(Z)}`),documentAt:(Z,J)=>H0("GET",`/api/document/at?id=${A0(Z)}&version=${A0(J)}`),revertDocument:(Z,J)=>H0("POST",`/api/document/revert?id=${A0(Z)}`,J),recordHistory:(Z)=>H0("GET",`/api/record/history?id=${A0(Z)}`),databaseActivity:(Z,J)=>H0("GET",`/api/database/activity?db=${A0(Z)}${J!=null?`&limit=${J}`:""}`),recordAt:(Z,J)=>H0("GET",`/api/record/at?id=${A0(Z)}&version=${A0(J)}`),revertRecord:(Z,J)=>H0("POST",`/api/record/revert?id=${A0(Z)}`,{to:J}),nodes:()=>H0("GET","/api/nodes"),search:(Z,J)=>{let Q=new URLSearchParams({q:Z});if(J!=null)Q.set("limit",String(J));return H0("GET",`/api/search?${Q}`)},listPeers:()=>H0("GET","/api/peers"),newPairingCode:()=>H0("POST","/api/pair/new"),addPeerByPairing:(Z)=>H0("POST","/api/peers/pair",Z),updatePeer:(Z,J)=>H0("PATCH",`/api/peer?url=${A0(Z)}`,J),removePeer:(Z)=>H0("DELETE",`/api/peer?url=${A0(Z)}`),syncPeer:(Z)=>H0("POST",`/api/peer/sync?url=${A0(Z)}`),listServerS3Peers:()=>H0("GET","/api/peers/s3"),addServerS3Peer:(Z)=>H0("POST","/api/peer/s3",Z),serverS3Config:(Z)=>H0("GET",`/api/peer/s3/config?url=${A0(Z)}`),listGrants:()=>H0("GET","/api/grants"),revokeGrant:(Z)=>H0("DELETE",`/api/grant?token=${A0(Z)}`),listSites:()=>H0("GET","/api/sites"),listSiteFiles:(Z)=>H0("GET",`/api/site/files?site=${A0(Z)}`),createSite:(Z)=>H0("POST","/api/sites",Z),updateSite:(Z,J)=>H0("PATCH",`/api/site?id=${A0(Z)}`,J),deleteSite:(Z)=>H0("DELETE",`/api/site?id=${A0(Z)}`),deleteSiteFile:(Z,J)=>H0("DELETE",`/api/site/file?site=${A0(Z)}&path=${A0(J)}`),uploadSiteFile:async(Z,J,Q)=>{let X=await DZ(`/api/site/file?site=${A0(Z)}&path=${A0(J)}`,{method:"POST",headers:{"content-type":Q.type||"application/octet-stream"},body:Q}),z=await X.json().catch(()=>null);if(!X.ok||z&&z.error)throw Error(z&&z.error||`${X.status} ${X.statusText}`);return z},uploadDocBlob:F5,uploadDocImage:F5,listShareServers:()=>H0("GET","/api/share/servers"),listShareBuckets:()=>H0("GET","/api/share/buckets"),listShares:(Z={})=>H0("GET",`/api/shares${Z.target?`?target=${A0(Z.target)}`:""}`),createShare:(Z)=>H0("POST","/api/share",Z),revokeShare:(Z)=>H0("DELETE",`/api/share?slug=${A0(Z)}`),renewShare:(Z)=>H0("POST",`/api/share/renew?slug=${A0(Z)}`),blobCache:()=>H0("GET","/api/blob-cache"),verifyBlobCache:()=>H0("POST","/api/blob-cache/verify"),clearBlobCache:()=>H0("POST","/api/blob-cache/clear"),setBlobPolicy:(Z)=>H0("POST","/api/blob-policy",Z),pinBlob:(Z,J)=>H0("POST","/api/blob-cache/pin",{hash:Z,pinned:J}),blobs:()=>H0("GET","/api/blobs"),clearBlobs:(Z)=>H0("POST","/api/blobs/clear",{hashes:Z}),deleteBlobs:(Z)=>H0("POST","/api/blobs/delete",{hashes:Z}),version:()=>H0("GET","/api/version")},a=new Proxy(n2,{get(Z,J,Q){if(e0()){if(J in V6)return V6[J];if(U9()&&J in f6)return f6[J]}return Reflect.get(Z,J,Q)}}),UZ={text:{ic:"text",t:"文本"},number:{ic:"hash",t:"数字"},select:{ic:"select",t:"单选"},multi_select:{ic:"multi",t:"多选"},checkbox:{ic:"checkbox",t:"复选框"},date:{ic:"calendar",t:"日期"},url:{ic:"link",t:"链接"},relation:{ic:"relation",t:"关联"}};class LZ extends Error{code;constructor(Z,J){super(J);this.code=Z;this.name="MhError"}}function l2(Z){let J=new TextEncoder().encode(Z),Q="";for(let X=0;X<J.length;X++)Q+=String.fromCharCode(J[X]);return btoa(Q).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function r2(Z){let J=Z.replace(/-/g,"+").replace(/_/g,"/"),Q=atob(J),X=new Uint8Array(Q.length);for(let z=0;z<Q.length;z++)X[z]=Q.charCodeAt(z);return new TextDecoder().decode(X)}function D6(Z){let J={endpoint:Z.endpoint,region:Z.region,bucket:Z.bucket,prefix:Z.prefix,accessKeyId:Z.accessKeyId,secretAccessKey:Z.secretAccessKey,encrypt:Z.encrypt,virtualHostedStyle:Z.virtualHostedStyle};return l2(JSON.stringify(J))}function A5(Z){let J=(Z??"").trim();if(!J)throw new LZ("invalid_input","empty enroll code");let Q=/(?:[#&?]|^)enroll=([^&\s]+)/.exec(J),X=Q?Q[1]:J,z;try{z=JSON.parse(r2(X))}catch{throw new LZ("invalid_input","invalid enroll code (could not decode)")}if(!z||typeof z!=="object")throw new LZ("invalid_input","invalid enroll code (not an object)");let W=z,G=(q)=>{let H=W[q];if(typeof H!=="string"||H.trim()==="")throw new LZ("invalid_input",`enroll code missing '${q}'`);return H};return{endpoint:G("endpoint"),bucket:G("bucket"),accessKeyId:G("accessKeyId"),secretAccessKey:G("secretAccessKey"),region:typeof W.region==="string"?W.region:void 0,prefix:typeof W.prefix==="string"?W.prefix:void 0,encrypt:typeof W.encrypt==="boolean"?W.encrypt:void 0,virtualHostedStyle:typeof W.virtualHostedStyle==="boolean"?W.virtualHostedStyle:void 0}}var o2=0;function $(Z,J,Q,X,z,W){J||(J={});var G,q,H=J;if("ref"in H)for(q in H={},J)q=="ref"?G=J[q]:H[q]=J[q];var Y={type:Z,props:H,key:Q,ref:G,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--o2,__i:-1,__u:0,__source:z,__self:W};if(typeof Z=="function"&&(G=Z.defaultProps))for(q in G)H[q]===void 0&&(H[q]=G[q]);return k0.vnode&&k0.vnode(Y),Y}var x6="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z",m6="m3 7.5 9 5.5 9-5.5M12 22v-9";var t2={cube:'<path d="M21 7.5 12 2 3 7.5v9L12 22l9-5.5z"/><path d="m3 7.5 9 5.5 9-5.5M12 22v-9"/>',chevron:'<path d="m9 6 6 6-6 6"/>',chevronDown:'<path d="m6 9 6 6 6-6"/>',arrowLeft:'<path d="M15 18l-6-6 6-6"/>',plus:'<path d="M12 5v14M5 12h14"/>',pin:'<path d="M9 4h6l-1 6 3 3v2H7v-2l3-3z"/><path d="M12 16v5"/>',search:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2"/>',dots:'<circle cx="5" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="12" cy="12" r="1.4" fill="currentColor" stroke="none"/><circle cx="19" cy="12" r="1.4" fill="currentColor" stroke="none"/>',grip:'<circle cx="9" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="9" cy="18" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="6" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="12" r="1.3" fill="currentColor" stroke="none"/><circle cx="15" cy="18" r="1.3" fill="currentColor" stroke="none"/>',trash:'<path d="M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13M10 11v6M14 11v6"/>',filter:'<path d="M3 5h18l-7 8v6l-4-2v-4z"/>',sort:'<path d="M7 3v14M7 17l-3-3M7 17l3-3M17 21V7M17 7l-3 3M17 7l3 3"/>',group:'<rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/>',check:'<path d="M5 12.5 10 17l9-10"/>',x:'<path d="M6 6 18 18M18 6 6 18"/>',file:'<path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z"/><path d="M14 3v5h5"/>',database:'<ellipse cx="12" cy="5" rx="8" ry="3"/><path d="M4 5v14c0 1.66 3.58 3 8 3s8-1.34 8-3V5"/><path d="M4 12c0 1.66 3.58 3 8 3s8-1.34 8-3"/>',table:'<rect x="3" y="4" width="18" height="16" rx="1.5"/><path d="M3 10h18M3 15h18M9 4v16M15 4v16"/>',alignLeft:'<path d="M4 6h16M4 12h10M4 18h13"/>',alignCenter:'<path d="M4 6h16M7 12h10M5 18h14"/>',alignRight:'<path d="M4 6h16M10 12h10M7 18h13"/>',share:'<path d="M4 12v7a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-7"/><path d="M12 3v13M8 7l4-4 4 4"/>',download:'<path d="M12 3v12M8 11l4 4 4-4"/><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/>',copy:'<rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>',link:'<path d="M10 13a5 5 0 0 0 7 0l2-2a5 5 0 0 0-7-7l-1 1"/><path d="M14 11a5 5 0 0 0-7 0l-2 2a5 5 0 0 0 7 7l1-1"/>',calendar:'<rect x="3" y="4" width="18" height="17" rx="2"/><path d="M3 9h18M8 2v4M16 2v4"/>',timeline:'<rect x="3" y="5" width="9" height="3" rx="1.5"/><rect x="8" y="10.5" width="11" height="3" rx="1.5"/><rect x="5" y="16" width="7" height="3" rx="1.5"/>',hash:'<path d="M4 9h16M4 15h16M10 3 8 21M16 3l-2 18"/>',text:'<path d="M4 6h16M4 6v-.5M8 6v13M4 19h8"/><path d="M14 11h6M17 11v8M14 19h6"/>',list:'<path d="M9 6h11M9 12h11M9 18h11M4.5 6h.01M4.5 12h.01M4.5 18h.01"/>',numList:'<path d="M10 6h10M10 12h10M10 18h10M4 5h1v4M4 9h2M4 13.5c0-.8 2-.8 2 0 0 .8-2 1.2-2 2.5h2"/>',checkbox:'<rect x="4" y="4" width="16" height="16" rx="3"/><path d="m9 12 2 2 4-4"/>',select:'<circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="3" fill="currentColor" stroke="none"/>',multi:'<path d="M8 6h12M8 12h12M8 18h12M3 6h.01M3 12h.01M3 18h.01"/>',relation:'<path d="M7 7h4v4H7zM13 13h4v4h-4z"/><path d="M11 9h2a2 2 0 0 1 2 2v2"/>',quote:'<path d="M7 7c-2 1-3 3-3 6h3v4H4v-4M17 7c-2 1-3 3-3 6h3v4h-3v-4"/>',code:'<path d="m8 8-4 4 4 4M16 8l4 4-4 4M13 6l-2 12"/>',minus:'<path d="M5 12h14"/>',heading:'<path d="M6 4v16M18 4v16M6 12h12"/>',panelLeft:'<rect x="3" y="4" width="18" height="16" rx="2"/><path d="M9 4v16"/>',cornerUpRight:'<path d="M5 19V11a4 4 0 0 1 4-4h10M15 3l4 4-4 4"/>',openPeek:'<rect x="3" y="5" width="18" height="14" rx="2.5"/><rect x="6" y="8" width="4" height="8" rx="1" fill="currentColor" stroke="none"/>',settings:'<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/>',eyeOff:'<path d="M4 4l16 16M9.5 9.5a3 3 0 0 0 4 4M6.5 6.7C4.5 8 3 10 2 12c2 4 6 7 10 7 1.6 0 3-.4 4.4-1.1M9.5 5.2A9.7 9.7 0 0 1 12 5c4 0 8 3 10 7-.6 1.3-1.5 2.5-2.5 3.5"/>',bold:'<path d="M6 4h7a4 4 0 0 1 0 8H6zM6 12h8a4 4 0 0 1 0 8H6z"/>',italic:'<path d="M19 4h-9M14 20H5M15 4 9 20"/>',underline:'<path d="M6 4v6a6 6 0 0 0 12 0V4M4 21h16"/>',strike:'<path d="M4 12h16M7 7a4 4 0 0 1 7-1M9 17a4 4 0 0 0 7-2"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/>',moon:'<path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/>',history:'<path d="M3 12a9 9 0 1 0 2.6-6.4L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l3.5 2"/>',monitor:'<rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8M12 17v4"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c2.4 2.5 3.7 5.7 3.7 9S14.4 18.5 12 21c-2.4-2.5-3.7-5.7-3.7-9S9.6 5.5 12 3z"/>',eye:'<path d="M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"/><circle cx="12" cy="12" r="3"/>',lock:'<rect x="4.5" y="11" width="15" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/>',upload:'<path d="M12 16V4M8 8l4-4 4 4M5 20h14"/>',spinner:'<path d="M21 12a9 9 0 1 1-6.219-8.56"/>',cloudUp:'<path d="M12 13v8"/><path d="m8 17 4-4 4 4"/><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"/>',cloudCheck:'<path d="M17 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 0 1 2.86 8"/><path d="m9 14 2 2 4-4"/>',cloudOff:'<path d="m2 2 20 20"/><path d="M5.78 5.78A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.3-.2"/><path d="M21.4 14.4A4.5 4.5 0 0 0 17.5 8h-1.8A7 7 0 0 0 9.4 4.6"/>',externalLink:'<path d="M14 4h6v6M20 4l-9 9M19 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h5"/>',image:'<rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.6"/><path d="m21 15-4.5-4.5L6 21"/>',video:'<rect x="2.5" y="6" width="13" height="12" rx="2"/><path d="m16 10 5.2-3a.5.5 0 0 1 .8.4v9.2a.5.5 0 0 1-.8.4L16 14z"/>',audio:'<path d="M9 18V5l11-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/>',htmlTag:'<path d="m9 8-4 4 4 4M15 8l4 4-4 4"/>',zoomIn:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2M11 8.5v5M8.5 11h5"/>',zoomOut:'<circle cx="11" cy="11" r="7"/><path d="m20 20-3.2-3.2M8.5 11h5"/>',square:'<rect x="4" y="4" width="16" height="16" rx="1.5"/>',arrowUpRight:'<path d="M7 17 17 7M8 7h9v9"/>',type:'<path d="M4 7V5h16v2M9 19h6M12 5v14"/>',maximize:'<path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/>',pencil:'<path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"/>',undo:'<path d="M9 14 4 9l5-5"/><path d="M4 9h11a4 4 0 0 1 0 8h-2"/>'};function f({name:Z,cls:J="ico"}){return $("svg",{class:J,viewBox:"0 0 24 24",dangerouslySetInnerHTML:{__html:t2[Z]??""}},void 0,!1,void 0,this)}var z9={text:"text",number:"hash",select:"select",multi_select:"multi",checkbox:"checkbox",date:"calendar",url:"link",relation:"relation"};function P9(Z,J){let Q=J.threshold??4,X=Q===0,z=(G)=>{if(G.pointerId!==Z.pointerId)return;if(!X){if(Math.hypot(G.clientX-Z.clientX,G.clientY-Z.clientY)<Q)return;X=!0,J.onStart?.(G)}G.preventDefault(),J.onMove(G)},W=(G)=>{if(G.pointerId!==Z.pointerId)return;removeEventListener("pointermove",z),removeEventListener("pointerup",W),removeEventListener("pointercancel",W),J.onEnd?.(G,X)};addEventListener("pointermove",z,{passive:!1}),addEventListener("pointerup",W),addEventListener("pointercancel",W)}function A9(){document.querySelectorAll(".drop-into,.drop-before,.drop-after").forEach((Z)=>Z.classList.remove("drop-into","drop-before","drop-after"))}function I8(Z,J,Q){A9();let X=Z.getBoundingClientRect(),z=Q==="y"?J.clientY<X.top+X.height/2?"before":"after":J.clientX<X.left+X.width/2?"before":"after";return Z.classList.add("drop-"+z),z}function u6(Z,J,Q){let X=document.createElement("div");return X.className="drag-ghost "+Z,X.style.width=`${J.width}px`,X.style.height=`${J.height}px`,X.textContent=Q,document.body.appendChild(X),X}function uZ(Z,J,Q){if(!Z)return;Z.style.transform=`translate3d(${Math.round(J)}px, ${Math.round(Q)}px, 0)`}function N5(Z,J){let Q=J.source.getBoundingClientRect(),X=Z.clientX-Q.left,z=Z.clientY-Q.top,W=null,G=null,q="before";P9(Z,{onStart:()=>{W=u6(J.ghostCls,Q,J.ghostText),J.source.classList.add("drag-source"),document.body.classList.add("table-dragging"),J.onActivate?.()},onMove:(H)=>{uZ(W,H.clientX-X,H.clientY-z);let Y=document.elementFromPoint(H.clientX,H.clientY)?.closest?.(J.targetSelector);if(!Y||J.isSelf(Y)){A9(),G=null;return}G=Y,q=I8(Y,H,J.axis)},onEnd:(H,Y)=>{if(W?.remove(),J.source.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),A9(),Y&&G)J.onDrop(G,q);J.onFinish?.(Y)}})}function S8(Z,J){let Q=Z.currentTarget,X=J.startWidth,z=0;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let W=Q.closest("table");if(W)Q.style.setProperty("--rz-guide-h",W.offsetHeight+"px");P9(Z,{threshold:0,onMove:(G)=>{if(X=Math.max(J.min,J.startWidth+G.clientX-Z.clientX),!z)z=requestAnimationFrame(()=>{if(z=0,J.col)J.col.style.width=X+"px"})},onEnd:()=>{if(z)cancelAnimationFrame(z);if(J.col)J.col.style.width=X+"px";Q.classList.remove("dragging"),Q.style.removeProperty("--rz-guide-h"),document.body.classList.remove("col-resizing"),J.onDone(X)}})}var V8="(max-width: 768px) and (pointer: coarse)";function f8(Z){let J=Z,Q=new Set;return{get:()=>J,set:(X)=>{J=X,Q.forEach((z)=>z(X))},use(){let[X,z]=k(J);return l(()=>{return Q.add(z),()=>void Q.delete(z)},[]),X}}}var EZ=f8([]),s2=0;function s(Z){let J=++s2;EZ.set([...EZ.get(),{id:J,msg:Z}]),setTimeout(()=>EZ.set(EZ.get().filter((Q)=>Q.id!==J)),2600)}var s9=f8([]),e2=0;function E6(Z,J){s9.set(s9.get().map((Q)=>Q.id===Z?{...Q,...J}:Q))}function p6(Z){s9.set(s9.get().filter((J)=>J.id!==Z))}function M5(Z){let J=++e2;return s9.set([...s9.get(),{id:J,name:Z,loaded:0,total:0}]),J}function C5(Z,J,Q){E6(Z,{loaded:J,total:Q})}function d6(Z,J,Q){if(J)E6(Z,{loaded:1,total:1}),setTimeout(()=>p6(Z),900);else E6(Z,{failed:!0,retry:Q})}function ZQ(){let Z=s9.use();if(!Z.length)return null;return $("div",{class:"upload-tray",children:Z.map((J)=>{let Q=J.failed?null:J.total>0?Math.min(100,Math.round(J.loaded/J.total*100)):null;return $("div",{class:"upload-item"+(J.failed?" failed":""),children:[$("span",{class:"up-name",title:J.name,children:J.name},void 0,!1,void 0,this),J.failed?$("span",{class:"up-fail",children:[$("span",{children:"失败"},void 0,!1,void 0,this),J.retry&&$("button",{class:"up-retry",onClick:()=>{J.retry?.(),p6(J.id)},children:"重试"},void 0,!1,void 0,this),$("button",{class:"up-x",title:"移除",onClick:()=>p6(J.id),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("span",{class:"up-prog",children:[$("span",{class:"ver-bar"+(Q==null?" indet":""),children:$("span",{class:"ver-bar-fill",style:Q!=null?{width:`${Q}%`}:void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"up-pct",children:Q!=null?`${Q}%`:"…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},J.id,!0,void 0,this)})},void 0,!1,void 0,this)}var c6=f8(null);function y0(Z,J,Q={}){c6.set({render:J,anchor:Z,minWidth:Q.minWidth})}function w5(){c6.set(null)}function JQ(Z){if(Z instanceof MouseEvent)return{x:Z.clientX,y:Z.clientY};if("rect"in Z)return{x:Z.rect.left,y:Z.rect.bottom,bottom:Z.rect.bottom};return{x:Z.x,y:Z.y}}function $Q(){let Z=c6.use(),J=W0(null),[Q,X]=k(null),z=matchMedia(V8).matches;if(mJ(()=>{if(!Z||!J.current||z)return X(null);let{x:W,y:G}=JQ(Z.anchor),q=J.current.getBoundingClientRect();X({left:Math.min(W,innerWidth-q.width-10),top:Math.min(G+4,innerHeight-q.height-10)})},[Z,z]),!Z)return null;return $("div",{class:"menu-layer",onMouseDown:(W)=>W.target===W.currentTarget&&w5(),children:$("div",{ref:J,class:"pop"+(z?" sheet":""),style:z?void 0:{left:Q?.left??-9999,top:Q?.top??-9999,minWidth:Z.minWidth},onMouseDown:(W)=>W.stopPropagation(),children:Z.render(w5)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function j0({children:Z}){return $("div",{class:"lbl",children:Z},void 0,!1,void 0,this)}function S0(){return $("div",{class:"sep"},void 0,!1,void 0,this)}function z0({icon:Z,label:J,sublabel:Q,danger:X,checked:z,onClick:W}){return $("button",{class:"item"+(X?" danger":""),onClick:W,children:[Z&&$("span",{class:"lico plain",children:$(f,{name:Z,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:J},void 0,!1,void 0,this),Q&&$("span",{class:"d",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z&&$("span",{class:"chk",children:$(f,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function e9(Z,J=240){let[Q,X]=k(!1);return l(()=>{let W=requestAnimationFrame(()=>X(!0));return()=>cancelAnimationFrame(W)},[]),{open:Q,close:()=>{X(!1),setTimeout(Z,J)}}}var i6=f8(null);function W9(Z){i6.set(Z)}function c0(){i6.set(null)}function q9({title:Z,sub:J,children:Q,footer:X,width:z}){return $("div",{class:"modal",style:{width:z},onMouseDown:(W)=>W.stopPropagation(),children:[$("div",{class:"modal-head",children:[$("h3",{children:Z},void 0,!1,void 0,this),J&&$("p",{children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"modal-body",children:Q},void 0,!1,void 0,this),X&&$("div",{class:"modal-foot",children:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function QQ(){let Z=i6.use();return l(()=>{if(!Z)return;let J=(Q)=>Q.key==="Escape"&&c0();return addEventListener("keydown",J),()=>removeEventListener("keydown",J)},[Z]),$("div",{class:"modal-scrim"+(Z?" open":""),onMouseDown:(J)=>J.target===J.currentTarget&&c0(),children:Z},void 0,!1,void 0,this)}function R0(Z){return new Promise((J)=>{let Q=(X)=>{c0(),J(X)};W9($(q9,{title:Z.title,footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Q(!1),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn "+(Z.danger?"btn-danger":"btn-primary"),onClick:()=>Q(!0),children:Z.confirmLabel??"确定"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:$("div",{class:"muted",children:Z.message},void 0,!1,void 0,this)},void 0,!1,void 0,this))})}function Y9(Z){return new Promise((J)=>{let Q=Z.value??"",X=(z)=>{c0(),J(z)};W9($(q9,{title:Z.title,footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:()=>X(null),children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:()=>X(Q.trim()||(Z.value??"")),children:Z.confirmLabel??"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[Z.label&&$("div",{class:"field-label",children:Z.label},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:Z.value??"",placeholder:Z.placeholder,onInput:(z)=>Q=z.target.value,onKeyDown:(z)=>{if(z.key==="Enter")X(Q.trim()||(Z.value??""))}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))})}function g8(){let Z=EZ.use();return $(o,{children:[$($Q,{},void 0,!1,void 0,this),$(QQ,{},void 0,!1,void 0,this),$("div",{class:"toasts",children:Z.map((J)=>$("div",{class:"toast",children:[$(f,{name:"check",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:J.msg},void 0,!1,void 0,this)]},J.id,!0,void 0,this))},void 0,!1,void 0,this),$(ZQ,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var a6=null,XQ=/mac/i.test(navigator.userAgentData?.platform??navigator.platform);function _5(Z){let{view:J,navigate:Q}=Z,[X,z]=k(new Set),[W,G]=k(""),[q,H]=k(!1),Y=W0(null),[F,K]=k(null),w=GQ(Z.onResize);l(()=>{a.version().then((S)=>K(S.version)).catch(()=>K(null))},[]),l(()=>{if(q)Y.current?.focus()},[q]);let P=(S)=>{let O=new Set(X);O.has(S)?O.delete(S):O.add(S),z(O)},A=(S)=>S().catch((O)=>Z.onError(String(O.message))),_=(S)=>{if("id"in J&&J.id===S)Q({kind:"empty"},{replace:!0})},V=(S)=>A(async()=>{let O=await a.createDocument({title:"",...S?{parent_id:S}:{}});if(S)X.add(S);Q({kind:"doc",id:O.id})}),D=(S,O,N)=>A(async()=>{if(S===O.id)return;if(WQ(Z.docs,S,O.id))return;if(await a.moveDocument(S,O.id,N),N==="into")X.add(O.id)}),v=(S,O)=>{S.stopPropagation(),y0(S,(N)=>$(o,{children:[$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{N(),navigator.clipboard?.writeText(O.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{N();let L=await Y9({title:"重命名数据库",value:O.name});if(L&&L!==O.name)A(async()=>{await a.updateDatabase(O.id,{name:L})})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(N(),await R0({title:"删除数据库?",message:`「${O.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))A(async()=>{await a.deleteDatabase(O.id),_(O.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},R=(S,O)=>{S.stopPropagation();let N=Z.docs.filter((L)=>L.parent_id===O.id).length;y0(S,(L)=>$(o,{children:[$(z0,{icon:"plus",label:"新建子页",onClick:()=>{L(),V(O.id)}},void 0,!1,void 0,this),$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{L(),navigator.clipboard?.writeText(O.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{L();let B=await Y9({title:"重命名文档",value:O.title});if(B)A(async()=>{await a.updateDocument(O.id,{title:B})})}},void 0,!1,void 0,this),O.parent_id&&$(z0,{icon:"cornerUpRight",label:"移到顶层",onClick:()=>{L(),A(async()=>{await a.updateDocument(O.id,{parent_id:null})})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除",danger:!0,onClick:async()=>{if(L(),await R0({title:"删除文档?",message:N?`「${O.title||"无标题"}」及其 ${N} 个子页将被删除。`:`「${O.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))A(async()=>{await T5(Z.docs,O.id),_(O.id)})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},x=(S,O=0)=>{return Z.docs.filter((L)=>L.parent_id===S).map((L)=>{let B=Z.docs.filter((y)=>y.parent_id===L.id),M=B.length>0&&X.has(L.id);return $("div",{class:O?"navchildren":"",children:[$("div",{class:"navitem"+(J.kind==="doc"&&J.id===L.id?" active":""),draggable:!0,onClick:()=>Q({kind:"doc",id:L.id}),onDragStart:(y)=>{y.stopPropagation(),a6=L.id,y.currentTarget.classList.add("dragging")},onDragEnd:(y)=>{y.currentTarget.classList.remove("dragging"),n6()},onDragOver:(y)=>{y.preventDefault(),y.stopPropagation(),zQ(y.currentTarget,y)},onDrop:(y)=>{y.preventDefault(),y.stopPropagation();let E=v5(y.currentTarget,y),c=a6;if(a6=null,n6(),c)D(c,L,E)},children:[$("span",{class:"tw"+(M?" open":""),onClick:(y)=>{if(y.stopPropagation(),B.length)P(L.id)},children:B.length>0&&$(f,{name:"chevron",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"emoji",children:$(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"label",children:L.title||"无标题"},void 0,!1,void 0,this),$("span",{class:"acts",children:[$("button",{title:"新建子页",onClick:(y)=>{y.stopPropagation(),V(L.id)},children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"更多",onClick:(y)=>R(y,L),children:$(f,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M&&x(L.id,O+1)]},L.id,!0,void 0,this)})};return $("div",{class:"sidebar"+(Z.collapsed?" collapsed":""),style:{width:Z.width,marginLeft:Z.collapsed?-Z.width:void 0},children:[$("div",{class:"sb-head",children:[$("div",{class:"brand",children:[$("span",{class:"mark",children:$(f,{name:"cube"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Metahub"]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(q?" active":""),title:"搜索","aria-label":"搜索",onClick:()=>H((S)=>!S),children:$(f,{name:"search",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(f,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="shares"?" active":""),title:"分享","aria-label":"分享",onClick:()=>Q({kind:"shares"}),children:$(f,{name:"link",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(f,{name:"settings",cls:"ico"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"收起侧栏",onClick:Z.onCollapse,children:$(f,{name:"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-search"+(q?" open":""),onClick:(S)=>S.currentTarget.querySelector("input")?.focus(),children:[$(f,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{ref:Y,placeholder:"搜索…",value:W,onInput:(S)=>G(S.target.value),onKeyDown:(S)=>{if(S.key==="Enter"&&W.trim())Q({kind:"search",q:W.trim()},{replace:J.kind==="search"})}},void 0,!1,void 0,this),$("kbd",{children:XQ?"⌘K":"Ctrl K"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-scroll",children:[$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"数据库"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建数据库",onClick:()=>qQ((S)=>Q({kind:"db",id:S}),Z.onError),children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.databases.map((S)=>$("div",{class:"navitem"+(J.kind==="db"&&J.id===S.id?" active":""),onClick:()=>Q({kind:"db",id:S.id}),children:[$("span",{class:"emoji",children:S.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{class:"label",children:S.name},void 0,!1,void 0,this),$("span",{class:"acts",children:$("button",{title:"更多",onClick:(O)=>v(O,S),children:$(f,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},S.id,!0,void 0,this)),Z.databases.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-section",children:[$("div",{class:"sb-section-head",children:[$("span",{children:"文档"},void 0,!1,void 0,this),$("button",{class:"add",title:"新建文档",onClick:()=>V(null),children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x(null),Z.docs.length===0&&$("div",{class:"navitem muted",children:"暂无"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-footer",children:[$("button",{class:"sb-act"+(J.kind==="settings"?" active":""),title:"设置","aria-label":"设置",onClick:()=>Q({kind:"settings"}),children:[$(f,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this),Z.updatePending&&$("span",{class:"nav-dot",title:"有可用更新"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"sb-act"+(J.kind==="sites"?" active":""),title:"站点","aria-label":"站点",onClick:()=>Q({kind:"sites"}),children:$(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"sb-act"+(J.kind==="shares"?" active":""),title:"分享","aria-label":"分享",onClick:()=>Q({kind:"shares"}),children:$(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("span",{class:"sbf-ver",title:`Metahub Core v${F}`,children:["v",F]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"sb-resizer",onMouseDown:w},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var n6=A9;function v5(Z,J){let Q=Z.getBoundingClientRect(),X=J.clientY-Q.top;return X<Q.height*0.28?"before":X>Q.height*0.72?"after":"into"}function zQ(Z,J){n6(),Z.classList.add("drop-"+v5(Z,J))}function WQ(Z,J,Q){let X=Z.find((z)=>z.id===Q);while(X){if(X.parent_id===J)return!0;X=Z.find((z)=>z.id===X.parent_id)}return!1}async function T5(Z,J){for(let Q of Z.filter((X)=>X.parent_id===J))await T5(Z,Q.id);await a.deleteDocument(J)}function GQ(Z){return(J)=>{J.preventDefault();let Q=J.currentTarget;Q.classList.add("dragging"),document.body.classList.add("col-resizing");let X=(W)=>Z(Math.max(210,Math.min(460,W.clientX))),z=()=>{Q.classList.remove("dragging"),document.body.classList.remove("col-resizing"),removeEventListener("mousemove",X),removeEventListener("mouseup",z)};addEventListener("mousemove",X),addEventListener("mouseup",z)}}var y5={blank:[{name:"名称",type:"text"}],tasks:[{name:"名称",type:"text"},{name:"状态",type:"select",config:{options:["待办","进行中","已完成"]}},{name:"优先级",type:"select",config:{options:["高","中","低"]}},{name:"截止",type:"date"}],crm:[{name:"姓名",type:"text"},{name:"公司",type:"text"},{name:"分类",type:"select",config:{options:["客户","合作","潜在"]}},{name:"邮箱",type:"url"}]};function qQ(Z,J){W9($(HQ,{onOpenDb:Z,onError:J},void 0,!1,void 0,this))}function HQ(Z){let J=["\uD83D\uDDC2️","\uD83C\uDFAF","\uD83E\uDD1D","\uD83D\uDCE6","\uD83D\uDCDA","\uD83D\uDCA1","\uD83E\uDDE9","\uD83D\uDCCA","\uD83D\uDDD3️","✅"],Q=[["blank","空白","仅一个「名称」列"],["tasks","任务","状态·优先级·截止"],["crm","联系人","公司·分类·邮箱"]],[X,z]=k(""),[W,G]=k(J[0]),[q,H]=k("blank"),Y=W0(!1),F=async()=>{if(Y.current)return;Y.current=!0;try{let K=await a.createDatabase({name:X.trim()||"未命名数据库",icon:W});for(let w of y5[q]??y5.blank)await a.createProperty({db:K.id,name:w.name,type:w.type,config:w.config});c0(),Z.onOpenDb(K.id),s(`已创建数据库「${K.name}」`)}catch(K){Z.onError(String(K.message))}finally{Y.current=!1}};return $(q9,{title:"新建数据库",sub:"创建一个带属性列的结构化数据表。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:F,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:"例如:项目、客户、库存…",value:X,onInput:(K)=>z(K.target.value),onKeyDown:(K)=>K.key==="Enter"&&F()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"图标"},void 0,!1,void 0,this),$("div",{class:"icon-pick",children:J.map((K)=>$("button",{class:K===W?"sel":"",onClick:()=>G(K),children:K},K,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"field-label",children:"模板"},void 0,!1,void 0,this),$("div",{class:"tmpl",children:Q.map(([K,w,P])=>$("button",{class:K===q?"sel":"",onClick:()=>H(K),children:[$("div",{class:"tt",children:w},void 0,!1,void 0,this),$("div",{class:"td",children:P},void 0,!1,void 0,this)]},K,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function l6(Z,J,Q){let X=[{id:"server",kind:"server",label:"当前服务器",subtitle:Q,icon:"globe",isDefault:!0,routeOp:{via:"http"},deleteSemantics:"purge"}];for(let z of Z)X.push({id:`server:${z.url}`,kind:"server",label:z.label,subtitle:z.url,icon:"globe",isDefault:!1,routeOp:{via:"http"},deleteSemantics:"purge"});for(let z of J)X.push({id:`bucket:${z.url}`,kind:"bucket",label:"对象存储",subtitle:z.label,icon:"database",isDefault:!1,routeOp:{via:"bucket",url:z.url},deleteSemantics:"evict"});return X}function r6(Z,J){if(Z.routeOp.via==="bucket")return Z.routeOp.url;if(Z.id.startsWith("server:"))return Z.id.slice(7);return J}var PZ="mh-shares-changed";function b8(){document.dispatchEvent(new Event(PZ))}function BZ(){let[Z,J]=k(()=>new Set);return l(()=>{let Q=!0,X=()=>a.listShares().then((z)=>Q&&J(new Set(z.map((W)=>W.target_id)))).catch(()=>{return});return X(),document.addEventListener(PZ,X),()=>{Q=!1,document.removeEventListener(PZ,X)}},[]),Z}function o6(Z,J,Q){return{copyShare:async(G)=>{if(G.url){j8(G.url),J("链接已复制");return}try{let q=await a.renewShare(G.slug);j8(q.url),J("已重新生成并复制链接"),b8(),Z()}catch(q){Q(q.message)}},revoke:async(G)=>{if(!confirm(`撤销这个分享?(${G.source})`))return;try{await a.revokeShare(G.slug),J("已撤销"),b8(),Z()}catch(q){Q(q.message)}},renew:async(G)=>{try{let q=await a.renewShare(G.slug);j8(q.url),J("已续期 7 天,新链接已复制"),b8(),Z()}catch(q){Q(q.message)}}}}function N9(Z){UQ();let J=document.createElement("div");document.body.appendChild(J),a9($(KQ,{target:Z,onClose:()=>{a9(null,J),J.remove()}},void 0,!1,void 0,this),J)}var R5=[{label:"永不过期",ms:null},{label:"1 小时",ms:3600000},{label:"24 小时",ms:86400000},{label:"7 天",ms:604800000},{label:"30 天",ms:2592000000}];function YQ(){let[Z,J]=k(()=>l6([],[],location.origin));return l(()=>{let Q=!0,X=()=>Promise.all([a.listShareServers().catch(()=>[]),a.listShareBuckets().catch(()=>[])]).then(([W,G])=>{if(Q)J(l6(W,G,location.origin))});X();let z=F9(()=>X());return()=>{Q=!1,z()}},[]),Z}function j8(Z){navigator.clipboard?.writeText(Z).catch(()=>{return})}function KQ({target:Z,onClose:J}){let Q=YQ(),[X,z]=k("server"),[W,G]=k("view"),[q,H]=k(""),[Y,F]=k(0),[K,w]=k(!1),[P,A]=k(""),[_,V]=k([]),[D,v]=k("");l(()=>{R()},[]);function R(){a.listShares({target:Z.ref}).then(V).catch(()=>{return})}let x=Q.find((M)=>M.id===X)??Q[0],S=x.kind==="bucket",O=Z.kind==="site";l(()=>{if(S&&W==="edit")G("view")},[S]);let N=S?R5.filter((M)=>M.ms==null||M.ms<=604800000):R5,L=Math.min(Y,N.length-1);async function B(){if(S&&O){A("站点不支持对象存储分享,请选服务器。");return}w(!0),A("");try{let M={kind:Z.kind,ref:Z.ref,transport:S?"s3":"server",permission:W,password:q||null,expiresMs:N[L]?.ms??null,server:S?null:r6(x,location.origin),bucketUrl:S?r6(x,location.origin):null},y=await a.createShare(M);j8(y.url),v(`已通过「${y.source}」创建,链接已复制`),H(""),b8(),R()}catch(M){A(M.message||"创建失败")}finally{w(!1)}}return $("div",{class:"mhshare-overlay",onClick:(M)=>M.target===M.currentTarget&&J(),children:$("div",{class:"mhshare-modal",children:[$("div",{class:"mhshare-head",children:[$("h2",{children:["分享",Z.title?`:${Z.title}`:""]},void 0,!0,void 0,this),$("button",{class:"mhshare-x",onClick:J,"aria-label":"关闭",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-body",children:[$("div",{class:"mhshare-section",children:"新建分享"},void 0,!1,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"通过"},void 0,!1,void 0,this),$("select",{value:x.id,onChange:(M)=>z(M.currentTarget.value),children:Q.map((M)=>$("option",{value:M.id,disabled:M.kind==="bucket"&&O,children:[M.label," — ",M.subtitle,M.kind==="bucket"&&O?"(站点不支持)":""]},void 0,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"权限"},void 0,!1,void 0,this),$("select",{value:W,disabled:S,onChange:(M)=>G(M.currentTarget.value),children:[$("option",{value:"view",children:"只读"},void 0,!1,void 0,this),$("option",{value:"edit",children:["可编辑",S?"(仅服务器)":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"口令"},void 0,!1,void 0,this),$("input",{type:"password",placeholder:"可选",value:q,onInput:(M)=>H(M.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("label",{class:"mhshare-field",children:[$("span",{children:"有效期"},void 0,!1,void 0,this),$("select",{value:String(L),onChange:(M)=>F(Number(M.currentTarget.value)),children:N.map((M,y)=>$("option",{value:String(y),children:M.label},void 0,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P&&$("p",{class:"mhshare-err",children:P},void 0,!1,void 0,this),D&&$("p",{class:"mhshare-ok",children:D},void 0,!1,void 0,this),$("div",{class:"mhshare-foot",children:[$("button",{onClick:J,children:"关闭"},void 0,!1,void 0,this),$("button",{class:"mhshare-primary",disabled:K,onClick:B,children:K?"创建中…":"创建并复制链接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-section",children:["已有分享(",_.length,")"]},void 0,!0,void 0,this),$(FQ,{shares:_,reload:R,onFlash:v,onError:A,empty:"还没有分享这个对象。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function FQ({shares:Z,reload:J,onFlash:Q,onError:X,empty:z}){let{copyShare:W,revoke:G,renew:q}=o6(J,Q,X);if(Z.length===0)return $("p",{class:"mhshare-note",children:z},void 0,!1,void 0,this);return $("ul",{class:"mhshare-list",children:Z.map((H)=>$("li",{children:[$("div",{class:"mhshare-li-main",children:[$("span",{class:"mhshare-badge",children:H.transport==="s3"?"对象存储":"服务器"},void 0,!1,void 0,this),$("span",{class:"mhshare-src",children:H.source},void 0,!1,void 0,this),$("span",{class:"mhshare-meta",children:[H.permission==="edit"?"可编辑":"只读",H.hasPassword?" · \uD83D\uDD12":"",H.expiresAt?` · 至 ${new Date(H.expiresAt).toLocaleString()}`:" · 永久"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"mhshare-li-actions",children:[$("button",{onClick:()=>W(H),children:"复制"},void 0,!1,void 0,this),H.transport==="s3"&&$("button",{onClick:()=>q(H),children:"续期"},void 0,!1,void 0,this),H.url&&$("a",{href:H.url,target:"_blank",rel:"noreferrer",children:"打开"},void 0,!1,void 0,this),$("button",{class:"mhshare-danger",onClick:()=>G(H),children:"撤销"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},H.slug,!0,void 0,this))},void 0,!1,void 0,this)}var k5=!1;function UQ(){if(k5)return;k5=!0;let Z=`
|
|
8
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
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
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}
|
|
@@ -32,24 +32,25 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=x,V=b;if(u===void 0)
|
|
|
32
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
33
|
.mhshare-danger{color:#cf222e!important}
|
|
34
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
|
|
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`
|
|
35
|
+
`,J=document.createElement("style");J.textContent=Z,document.head.appendChild(J)}var I5=[4,28,45,130,165,200,220,255,290,330];function t6(Z){let J=0;for(let Q=0;Q<Z.length;Q++)J=J*31+Z.charCodeAt(Q)>>>0;return`hsl(${I5[J%I5.length]} 65% 45%)`}function ZZ({text:Z}){return $("span",{class:"chip",style:{["--c"]:t6(Z)},children:Z},void 0,!1,void 0,this)}function OZ({prop:Z,val:J}){if(J==null||J===""||Array.isArray(J)&&J.length===0)return $("span",{class:"muted",children:" "},void 0,!1,void 0,this);if(Z.type==="select")return $(ZZ,{text:String(J)},void 0,!1,void 0,this);if(Z.type==="multi_select"||Z.type==="relation")return $(o,{children:J.map((Q)=>$(ZZ,{text:String(Q)},String(Q),!1,void 0,this))},void 0,!1,void 0,this);if(Z.type==="url")return $("a",{href:String(J),target:"_blank",rel:"noreferrer",onClick:(Q)=>Q.stopPropagation(),children:String(J)},void 0,!1,void 0,this);return $("span",{children:String(J)},void 0,!1,void 0,this)}function S5(Z,J){if(Z==="relation")return J.split(",").map((Q)=>Q.trim()).filter(Boolean);return J}function V5(Z,J){if(J==null)return"";if(Array.isArray(J))return J.join(", ");return String(J)}var LQ={user:"",repair:"修复",revert:"回滚"};function e6(Z){let J=Date.now()-new Date(Z).getTime();if(J<60000)return"刚刚";if(J<3600000)return`${Math.floor(J/60000)} 分钟前`;if(J<86400000)return`${Math.floor(J/3600000)} 小时前`;if(J<2592000000)return`${Math.floor(J/86400000)} 天前`;return new Date(Z).toLocaleDateString()}function Z1(){let[Z,J]=k([]);return l(()=>{a.nodes().then(J).catch(()=>{})},[]),(Q)=>{let X=Z.find((z)=>z.node_id===Q);if(X?.self)return"本设备";return X?.label||Q.slice(0,8)}}function J1({kind:Z}){if(Z==="user")return null;return $("span",{class:"hist-kind "+Z,children:LQ[Z]},void 0,!1,void 0,this)}function PQ(Z,J){let Q=Array.from({length:Z.length+1},()=>Array(J.length+1).fill(0));for(let G=Z.length-1;G>=0;G--)for(let q=J.length-1;q>=0;q--)Q[G][q]=Z[G]===J[q]?Q[G+1][q+1]+1:Math.max(Q[G+1][q],Q[G][q+1]);let X=[],z=0,W=0;while(z<Z.length&&W<J.length)if(Z[z]===J[W])X.push([z,W]),z++,W++;else if(Q[z+1][W]>=Q[z][W+1])z++;else W++;return X}var BQ=(Z)=>Z?Z.split(/\n{2,}/):[],f5=(Z)=>Z?Z.split(`
|
|
36
|
+
`).filter((J)=>J.trim()!==""):[];function OQ(Z,J){for(let Q=0;Q<Math.min(Z.length,J.length);Q++){let X=Z[Q].text,z=J[Q].text,W=0;while(W<X.length&&W<z.length&&X[W]===z[W])W++;let G=0;while(G<X.length-W&&G<z.length-W&&X[X.length-1-G]===z[z.length-1-G])G++;if(W+G<Math.max(X.length,z.length)*0.3)continue;Z[Q].seg=[X.slice(0,W),X.slice(W,X.length-G),X.slice(X.length-G)],J[Q].seg=[z.slice(0,W),z.slice(W,z.length-G),z.slice(z.length-G)]}}function AQ(Z,J){let Q=f5(Z),X=f5(J),z=PQ(Q,X),W=[],G=0,q=0;for(let[H,Y]of[...z,[Q.length,X.length]]){let F=[],K=[];for(;G<H;G++)F.push({kind:"del",text:Q[G]});for(;q<Y;q++)K.push({kind:"add",text:X[q]});if(OQ(F,K),W.push(...F,...K),H<Q.length)W.push({kind:"same",text:Q[H]});G=H+1,q=Y+1}return W}function NQ(Z){let J=[];if(Z.created)J.push("创建");if(Z.deleted)J.push("删除");if(Z.title_changed)J.push("标题");if(Z.blocks_changed)J.push(`${Z.blocks_changed} 块修改`);if(Z.blocks_deleted)J.push(`${Z.blocks_deleted} 块删除`);return J.join("、")||"元数据"}function g5({docId:Z,onClose:J,onReverted:Q}){let{open:X,close:z}=e9(J),[W,G]=k(null),[q,H]=k(null),[Y,F]=k(null),[K,w]=k(null),[P,A]=k(!1),[_,V]=k(!1),[D,v]=k(!1),R=Z1(),x=()=>Promise.all([a.documentHistory(Z),a.getDocument(Z)]).then(([L,B])=>{G(L),H(B),F((M)=>M??L[0]?.version??null)}).catch((L)=>s(String(L.message)));l(()=>{x()},[Z]),l(()=>{if(!Y)return w(null);a.documentAt(Z,Y).then(w).catch(()=>w(null))},[Z,Y]);let S=_9(()=>(W??[]).filter((L)=>P||L.kind!=="repair"),[W,P]),O=Y!=null&&W?.[0]?.version===Y,N=async()=>{if(!Y||!K)return;if(!await R0({title:"恢复到此版本?",message:`标题和正文将恢复到 ${new Date(K.version?wQ(K.version):Date.now()).toLocaleString()} 的状态。此操作会作为一次新修订记录,任何版本都仍可从历史找回。`,confirmLabel:"恢复"}))return;v(!0);try{await a.revertDocument(Z,{to:Y,if_match:q?.version}),s("已恢复"),Q(),z()}catch(B){if(B instanceof f9&&B.code==="stale")s("文档刚被其他端修改,已刷新,请重试"),await x();else s(String(B.message))}finally{v(!1)}};return $(o,{children:[$("div",{class:"scrim"+(X?" open":""),onClick:z},void 0,!1,void 0,this),$("div",{class:"peek hist-peek"+(X?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:z,children:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"版本历史"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:_,onInput:()=>V(!_)},void 0,!1,void 0,this),"对比当前"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:P,onInput:()=>A(!P)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-split",children:[$("div",{class:"hist-list",children:[W===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),S.map((L)=>$("div",{class:"hist-item"+(Y===L.version?" sel":""),onClick:()=>F(L.version),children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(L.at).toLocaleString(),children:e6(L.at)},void 0,!1,void 0,this),$(J1,{kind:L.kind},void 0,!1,void 0,this),W?.[0]?.version===L.version&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:[$("span",{class:"who",children:R(L.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:NQ(L)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},L.version,!0,void 0,this))]},void 0,!0,void 0,this),$("div",{class:"hist-preview",children:[K&&$(o,{children:[$("div",{class:"hist-doc-title",children:K.title||"无标题"},void 0,!1,void 0,this),_&&!O?AQ(q?.body??"",K.body).map((L,B)=>$("div",{class:"hist-line "+L.kind,children:L.seg?$(o,{children:[L.seg[0],$("span",{class:"seg",children:L.seg[1]},void 0,!1,void 0,this),L.seg[2]]},void 0,!0,void 0,this):L.text},B,!1,void 0,this)):BQ(K.body).map((L,B)=>$("div",{class:"hist-block",children:L},B,!1,void 0,this)),!K.body&&$("div",{class:"muted",children:"(空文档)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!K&&Y&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"hist-foot",children:$("button",{class:"btn btn-primary",disabled:!Y||O||D,onClick:N,children:"恢复到此版本"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function wQ(Z){return Number(Z.slice(0,15))||Date.now()}function MQ(Z){if(Z.deleted)return"已删除";if(Z.created)return"创建";if(Z.moved&&!Z.diffs.length)return"调整排序";return""}var s6=3;function b5({dbId:Z,onClose:J}){let{open:Q,close:X}=e9(J),[z,W]=k(null),[G,q]=k(new Map),[H,Y]=k(!1),[F,K]=k(new Set),w=Z1();l(()=>{Promise.all([a.databaseActivity(Z),a.listProperties(Z)]).then(([A,_])=>{W(A),q(new Map(_.map((V)=>[V.id,V.name])))}).catch((A)=>s(String(A.message)))},[Z]);let P=(z??[]).filter((A)=>H||A.kind!=="repair");return $(o,{children:[$("div",{class:"scrim"+(Q?" open":""),onClick:X},void 0,!1,void 0,this),$("div",{class:"peek"+(Q?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:X,children:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"hist-title",children:[$(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"最近动态"]},void 0,!0,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:H,onInput:()=>Y(!H)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body hist-feed",children:[z===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),z!==null&&P.length===0&&$("div",{class:"muted pad",children:"暂无动态。"},void 0,!1,void 0,this),P.map((A)=>{let _=A.record_id+A.version,V=F.has(_),D=V?A.diffs:A.diffs.slice(0,s6),v=MQ(A);return $("div",{class:"hist-item static",children:[$("div",{class:"row1",children:[$("span",{class:"when",title:new Date(A.at).toLocaleString(),children:e6(A.at)},void 0,!1,void 0,this),$(J1,{kind:A.kind},void 0,!1,void 0,this),$("span",{class:"hist-recname",children:A.record_title||A.record_id},void 0,!1,void 0,this),v&&$("span",{class:"hist-status",children:v},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",children:$("span",{class:"who",children:w(A.node_id)},void 0,!1,void 0,this)},void 0,!1,void 0,this),D.length>0&&$("div",{class:"hist-fields",children:[D.map((R)=>$("div",{class:"hist-field",children:[$("span",{class:"fname",children:G.get(R.prop)??"(已删字段)"},void 0,!1,void 0,this),!A.created&&$("span",{class:"old",title:AZ(R.before),children:AZ(R.before)},void 0,!1,void 0,this),!A.created&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",title:AZ(R.after),children:AZ(R.after)},void 0,!1,void 0,this)]},R.prop,!0,void 0,this)),A.diffs.length>s6&&!V&&$("button",{class:"hist-more",onClick:()=>K(new Set(F).add(_)),children:["…还有 ",A.diffs.length-s6," 项"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},_,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function CQ(Z,J){let Q=[];if(Z.created)Q.push("创建");if(Z.deleted)Q.push("删除");if(Z.fields.length)Q.push(Z.fields.map((X)=>J.get(X)??"(已删字段)").join("、"));if(Z.moved&&!Q.length)Q.push("排序");return Q.join(";")||"元数据"}function AZ(Z){if(Z===void 0)return"(空)";if(Z===null)return"(空)";if(typeof Z==="string")return Z===""?"(空)":Z;return JSON.stringify(Z)}function j5({rec:Z,props:J,onReverted:Q}){let[X,z]=k(null),[W,G]=k(null),[q,H]=k(!1),Y=W0(new Map),[,F]=k(0),K=Z1(),w=_9(()=>new Map(J.map((v)=>[v.id,v.name])),[J]),P=()=>a.recordHistory(Z.id).then(z).catch((v)=>s(String(v.message)));l(()=>{P()},[Z.id]);let A=async(v)=>{let R=Y.current.get(v);if(R)return R;let x=await a.recordAt(Z.id,v);return Y.current.set(v,x),F((S)=>S+1),x},_=(v,R)=>{if(W===v.version)return G(null);if(G(v.version),A(v.version),R)A(R.version)},V=async(v)=>{if(!await R0({title:"恢复到此版本?",message:"记录字段将恢复到该修订时的值。此操作会作为一次新修订记录。",confirmLabel:"恢复"}))return;try{await a.revertRecord(Z.id,v.version),s("已恢复"),Y.current.clear(),Q(),await P()}catch(x){s(String(x.message))}},D=(X??[]).filter((v)=>q||v.kind!=="repair");return $("div",{class:"hist-rec",children:[$("div",{class:"hist-rec-head",children:[$("span",{class:"hist-title",children:[$(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this),"修改历史"]},void 0,!0,void 0,this),$("label",{class:"hist-toggle",children:[$("input",{type:"checkbox",checked:q,onInput:()=>H(!q)},void 0,!1,void 0,this),"显示修复"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X===null&&$("div",{class:"muted pad",children:"加载中…"},void 0,!1,void 0,this),X!==null&&D.length===0&&$("div",{class:"muted pad",children:"暂无历史。"},void 0,!1,void 0,this),D.map((v,R)=>{let x=D[R+1],S=Y.current.get(v.version),O=x?Y.current.get(x.version):void 0,N=v.created&&S?Object.keys(S.data):v.fields;return $("div",{class:"hist-item static",children:[$("div",{class:"row1",onClick:()=>_(v,x),children:[$("span",{class:"when",title:new Date(v.at).toLocaleString(),children:e6(v.at)},void 0,!1,void 0,this),$(J1,{kind:v.kind},void 0,!1,void 0,this),R===0&&$("span",{class:"hist-now",children:"当前"},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$(f,{name:W===v.version?"chevronDown":"chevron",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"row2",onClick:()=>_(v,x),children:[$("span",{class:"who",children:K(v.node_id)},void 0,!1,void 0,this),$("span",{class:"what",children:CQ(v,w)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W===v.version&&$("div",{class:"hist-fields",children:[!S&&$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this),S&&N.map((L)=>{let B=O?O.data[L]:void 0,M=S.data[L];return $("div",{class:"hist-field",children:[$("span",{class:"fname",children:w.get(L)??"(已删字段)"},void 0,!1,void 0,this),x&&$("span",{class:"old",children:AZ(B)},void 0,!1,void 0,this),x&&$("span",{class:"arr",children:"→"},void 0,!1,void 0,this),$("span",{class:"new",children:AZ(M)},void 0,!1,void 0,this)]},L,!0,void 0,this)}),S&&R!==0&&$("button",{class:"btn btn-secondary hist-restore",onClick:()=>V(v),children:"恢复到此版本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},v.version,!0,void 0,this)})]},void 0,!0,void 0,this)}var JZ="\x00__ungrouped__";function h5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z,onMove:W}){let G=Z.filter((v)=>v.type==="select"||v.type==="multi_select"),[q,H]=k(null),Y=Z.find((v)=>v.id===q)??G.find((v)=>v.type==="select")??G[0]??null;if(!Y)return $("div",{class:"view-placeholder",children:"看板视图需要一个「单选」或「多选」属性来分组。请在表格视图中添加一个单选列后再切换到看板。"},void 0,!1,void 0,this);let F=Z[0],K=Y.type==="multi_select",w=Y.config?.options??[],P=(v)=>{let R=v.cells[Y.id];if(K){let S=(Array.isArray(R)?R:[]).map(String).filter((O)=>w.includes(O));return S.length?S:[JZ]}let x=R==null?"":String(R);return x&&w.includes(x)?[x]:[JZ]},A=new Map;for(let v of w)A.set(v,[]);A.set(JZ,[]);for(let v of J)for(let R of P(v))A.get(R)?.push(v);let _=[...w];if((A.get(JZ)?.length??0)>0)_.push(JZ);let V=(v,R)=>{if(v.button!==0)return;if(v.target.closest("button,a,input"))return;let x=v.currentTarget.closest(".kcard");if(!x)return;let S=x.getBoundingClientRect();v.preventDefault();let O=v.clientX-S.left,N=v.clientY-S.top,L=null;P9(v,{onStart:()=>{L=x.cloneNode(!0),L.classList.add("dragging-ghost"),L.style.width=`${S.width}px`,document.body.appendChild(L),x.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(B)=>{uZ(L,B.clientX-O,B.clientY-N),A9(),document.elementFromPoint(B.clientX,B.clientY)?.closest?.(".board-col")?.classList.add("drop-into")},onEnd:(B,M)=>{if(L?.remove(),x.classList.remove("drag-source"),document.body.classList.remove("table-dragging"),A9(),!M){z(R.id);return}let y=document.elementFromPoint(B.clientX,B.clientY)?.closest?.(".board-col");if(!y)return;if(!K){let r=y.dataset.colKey,$0=String(R.cells[Y.id]??""),m=r===JZ?null:r;if(String(m??"")!==$0)Q(R,Y,m)}let E=document.elementFromPoint(B.clientX,B.clientY)?.closest?.(".kcard"),c=E?.dataset.recId;if(c&&c!==R.id){let r=E.getBoundingClientRect();W(R.id,c,B.clientY<r.top+r.height/2?"before":"after")}}})};return $("div",{class:"board-wrap",children:[$("div",{class:"board-bar",children:[$("button",{class:"tbtn",onClick:(v)=>y0(v,(R)=>$(o,{children:[$(j0,{children:"按属性分组"},void 0,!1,void 0,this),G.map((x)=>$(z0,{icon:z9[x.type],label:x.name,onClick:()=>{H(x.id),R()}},x.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(f,{name:"group",cls:"ico sm"},void 0,!1,void 0,this),"分组:",Y.name]},void 0,!0,void 0,this),K&&$("span",{class:"muted",style:{fontSize:12},children:"多选分组不支持拖拽改值"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board",children:_.map((v)=>{let R=A.get(v)??[],x=v===JZ;return $("div",{class:"board-col","data-col-key":v,children:[$("div",{class:"board-col-head",children:[x?$("span",{class:"muted",style:{fontWeight:600},children:"未分组"},void 0,!1,void 0,this):$(ZZ,{text:v},void 0,!1,void 0,this),$("span",{class:"board-count",children:R.length},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),$("button",{class:"iconbtn sm",title:"新建记录",onClick:()=>X(x?{}:{[Y.id]:v}),children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"board-col-body",children:[R.map((S)=>$("div",{class:"kcard","data-rec-id":S.id,onPointerDown:(O)=>V(O,S),children:[$("div",{class:"kcard-title",children:yQ(S,F)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z.filter((O)=>O!==F&&O.id!==Y.id&&!_Q(S.cells[O.id])).slice(0,4).map((O)=>$("div",{class:"kcard-field",children:[$(f,{name:z9[O.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$(OZ,{prop:O,val:S.cells[O.id]},void 0,!1,void 0,this)]},O.id,!0,void 0,this))]},S.id,!0,void 0,this)),$("button",{class:"board-add",onClick:()=>X(x?{}:{[Y.id]:v}),children:[$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},v,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function yQ(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function _Q(Z){return Z==null||Z===""||Array.isArray(Z)&&Z.length===0}function pZ(Z){if(Z==null)return null;let J=String(Z).trim();if(!J)return null;let Q=/^(\d{4})-(\d{2})-(\d{2})/.exec(J);if(Q)return new Date(Number(Q[1]),Number(Q[2])-1,Number(Q[3]));let X=new Date(J);return Number.isNaN(X.getTime())?null:new Date(X.getFullYear(),X.getMonth(),X.getDate())}function B9(Z){let J=Z.getFullYear(),Q=String(Z.getMonth()+1).padStart(2,"0"),X=String(Z.getDate()).padStart(2,"0");return`${J}-${Q}-${X}`}function o0(Z,J){return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate()+J)}function $1(Z,J){return Z.getFullYear()===J.getFullYear()&&Z.getMonth()===J.getMonth()&&Z.getDate()===J.getDate()}function vQ(Z,J){return new Date(Z,J,1)}function TQ(Z,J){return new Date(Z,J+1,0)}function NZ(Z,J){let Q=Date.UTC(Z.getFullYear(),Z.getMonth(),Z.getDate()),X=Date.UTC(J.getFullYear(),J.getMonth(),J.getDate());return Math.round((X-Q)/86400000)}function h8(){let Z=new Date;return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate())}function RQ(Z){let J=(Z.getDay()+6)%7;return o0(Z,-J)}function D5(Z,J){let Q=RQ(vQ(Z,J)),X=TQ(Z,J),z=[],W=Q;while(W<=X||z.length===0||W.getDay()!==1){let G=[];for(let q=0;q<7;q++)G.push(o0(W,q));if(z.push(G),W=o0(W,7),z.length>=6)break}return z}var kQ=["一","二","三","四","五","六","日"],Q1=3;function x5({props:Z,records:J,onCommitValue:Q,onCreate:X,onOpenRecord:z}){let W=Z.filter((O)=>O.type==="date"),[G,q]=k(null),H=Z.find((O)=>O.id===G)??W[0]??null,Y=h8(),[F,K]=k({y:Y.getFullYear(),m:Y.getMonth()}),w=W0(null);if(!H)return $("div",{class:"view-placeholder",children:"日历视图需要一个「日期」属性。请在表格视图中添加一个日期列后再切换到日历。"},void 0,!1,void 0,this);let P=Z[0],A=D5(F.y,F.m),_=J.map((O)=>({rec:O,date:pZ(O.cells[H.id])})).filter((O)=>O.date!=null),V=(O)=>_.filter((N)=>$1(N.date,O)),D=(O)=>{let N=F.m+O;K({y:F.y+Math.floor(N/12),m:(N%12+12)%12})},v=()=>K({y:Y.getFullYear(),m:Y.getMonth()}),R=()=>document.querySelectorAll(".cal-day.drop-into").forEach((O)=>O.classList.remove("drop-into")),x=(O,N)=>{if(O.button!==0)return;O.preventDefault(),O.stopPropagation(),w.current={id:N.id,pointerId:O.pointerId,startX:O.clientX,startY:O.clientY,active:!1,ghost:null};let L=(M)=>{let y=w.current;if(!y||y.pointerId!==M.pointerId)return;if(!y.active){if(Math.hypot(M.clientX-y.startX,M.clientY-y.startY)<4)return;y.active=!0,y.ghost=IQ(D8(N,P)),document.body.classList.add("table-dragging")}if(M.preventDefault(),y.ghost)y.ghost.style.transform=`translate3d(${Math.round(M.clientX+8)}px, ${Math.round(M.clientY+8)}px, 0)`;R(),document.elementFromPoint(M.clientX,M.clientY)?.closest?.(".cal-day")?.classList.add("drop-into")},B=(M)=>{let y=w.current;if(!y||y.pointerId!==M.pointerId)return;if(removeEventListener("pointermove",L),removeEventListener("pointerup",B),removeEventListener("pointercancel",B),y.ghost?.remove(),document.body.classList.remove("table-dragging"),R(),w.current=null,!y.active){z(N.id);return}let c=document.elementFromPoint(M.clientX,M.clientY)?.closest?.(".cal-day")?.dataset.iso;if(c&&c!==String(N.cells[H.id]??""))Q(N,H,c)};addEventListener("pointermove",L,{passive:!1}),addEventListener("pointerup",B),addEventListener("pointercancel",B)},S=(O)=>y0(O,(N)=>$(o,{children:[$(j0,{children:"按日期属性"},void 0,!1,void 0,this),W.map((L)=>$(z0,{icon:z9[L.type],label:L.name,onClick:()=>{q(L.id),N()}},L.id,!1,void 0,this))]},void 0,!0,void 0,this));return $("div",{class:"cal",children:[$("div",{class:"cal-nav",children:[$("button",{class:"iconbtn",title:"上个月",onClick:()=>D(-1),children:$(f,{name:"chevron",cls:"ico flip"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"cal-title",children:[F.y," 年 ",F.m+1," 月"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"下个月",onClick:()=>D(1),children:$(f,{name:"chevron",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"tbtn",onClick:v,children:"今天"},void 0,!1,void 0,this),$("div",{class:"spacer"},void 0,!1,void 0,this),W.length>1&&$("button",{class:"tbtn",onClick:S,children:[$(f,{name:"calendar",cls:"ico sm"},void 0,!1,void 0,this),H.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-grid cal-head",children:kQ.map((O)=>$("div",{class:"cal-wd",children:O},O,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"cal-body",children:A.map((O,N)=>$("div",{class:"cal-grid cal-week",children:O.map((L)=>{let B=L.getMonth()!==F.m,M=$1(L,Y),y=V(L),E=B9(L);return $("div",{class:"cal-day"+(B?" dim":"")+(M?" today":""),"data-iso":E,onClick:(c)=>{if(c.target.closest(".cal-ev,.cal-add,.cal-more"))return;X({[H.id]:E})},children:[$("div",{class:"cal-daynum",children:[$("span",{children:L.getDate()},void 0,!1,void 0,this),$("button",{class:"cal-add",title:"新建记录",onClick:(c)=>{c.stopPropagation(),X({[H.id]:E})},children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"cal-events",children:[y.slice(0,Q1).map(({rec:c})=>$("div",{class:"cal-ev",style:{["--c"]:t6(D8(c,P)||c.id)},onPointerDown:(r)=>x(r,c),children:D8(c,P)||"无标题"},c.id,!1,void 0,this)),y.length>Q1&&$("button",{class:"cal-more",onClick:(c)=>{c.stopPropagation(),y0(c,(r)=>$(o,{children:[$(j0,{children:[E," · ",y.length," 条记录"]},void 0,!0,void 0,this),y.map(({rec:$0})=>$(z0,{label:D8($0,P)||"无标题",onClick:()=>{r(),z($0.id)}},$0.id,!1,void 0,this))]},void 0,!0,void 0,this))},children:["+",y.length-Q1," 更多"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},E,!0,void 0,this)})},N,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function D8(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function IQ(Z){let J=document.createElement("div");return J.className="drag-ghost",J.textContent=Z||"移动记录",document.body.appendChild(J),J}var g9=200,dZ=36,cZ=44,J9=28,m5=3;function E5({props:Z,records:J,onCommitValue:Q,onOpenRecord:X}){let z=Z.filter((g)=>g.type==="date"),[W,G]=k(null),[q,H]=k(null),Y=Z.find((g)=>g.id===W)??z[0]??null,F=q==="none"?null:Z.find((g)=>g.id===q)??z.find((g)=>g!==Y)??null,K=W0(null),w=W0(null);if(!Y)return $("div",{class:"view-placeholder",children:"时间轴视图需要一个「日期」属性作为开始日期。请在表格视图中添加一个日期列后再切换到时间轴。"},void 0,!1,void 0,this);let P=Z[0],A=h8(),_=J.map((g)=>{let u=pZ(g.cells[Y.id]),I=F?pZ(g.cells[F.id]):null;return{rec:g,s:u,e:I&&u&&I<u?u:I}}),V=_.filter((g)=>g.s),D=A,v=A;if(V.length){D=V[0].s,v=V[0].s;for(let g of V){if(g.s<D)D=g.s;let u=g.e??g.s;if(u>v)v=u}}else D=o0(A,-10),v=o0(A,14);let R=o0(D,-m5),x=o0(v,m5),S=NZ(R,x)+1,O=g9+S*J9,N=(g)=>g9+g*J9,L=NZ(R,A),B=[];for(let g=0;g<S;g++)B.push(o0(R,g));let M=(g,u,I,n,Z0)=>{if(Z0===0)return;if(n==="move"){if(u)Q(g,Y,B9(o0(u,Z0)));if(F&&I)Q(g,F,B9(o0(I,Z0)))}else if(n==="l"&&u){let q0=o0(u,Z0);Q(g,Y,B9(I&&q0>I?I:q0))}else if(n==="r"&&F&&I){let q0=o0(I,Z0);Q(g,F,B9(u&&q0<u?u:q0))}},y=(g,u)=>{let I=w.current;if(!I)return;I.style.left=g+"px",I.style.display="block";let n=I.firstElementChild;if(n)n.textContent=u},E=()=>{if(w.current)w.current.style.display="none"},c=(g,u,I,n,Z0,q0)=>{if(g.button!==0||!I)return;g.preventDefault(),g.stopPropagation();let{offsetLeft:Q0,offsetWidth:J0}=q0,B0=!1,p0=Z0==="move"?null:g.currentTarget;p0?.classList.add("dragging"),K.current={pointerId:g.pointerId,startX:g.clientX};let i0=(d0)=>{let g0=K.current;if(!g0||g0.pointerId!==d0.pointerId)return;let h0=Math.round((d0.clientX-g0.startX)/J9);if(Math.abs(d0.clientX-g0.startX)>3)B0=!0;let _0,a0;if(Z0==="move"){let O0=Q0+h0*J9;q0.style.left=O0+"px",_0=O0,a0=o0(I,h0)}else if(Z0==="l"){let O0=Q0+h0*J9;q0.style.left=O0+"px",q0.style.width=Math.max(J9,J0-h0*J9)+"px",_0=O0,a0=o0(I,h0)}else{let O0=Math.max(J9,J0+h0*J9);q0.style.width=O0+"px",_0=Q0+O0,a0=o0(I,Math.round(O0/J9)-1)}y(_0,B9(a0))},m0=(d0)=>{let g0=K.current;if(!g0||g0.pointerId!==d0.pointerId)return;removeEventListener("pointermove",i0),removeEventListener("pointerup",m0),removeEventListener("pointercancel",m0),K.current=null,p0?.classList.remove("dragging"),E();let h0=Math.round((d0.clientX-g0.startX)/J9);if(!B0){X(u.id);return}M(u,I,n,Z0,h0)};addEventListener("pointermove",i0,{passive:!1}),addEventListener("pointerup",m0),addEventListener("pointercancel",m0)},r=(g,u)=>{if(Q(g,Y,B9(u)),F)Q(g,F,B9(u))},$0=(g,u)=>{let I=g.currentTarget.closest(".tl-row");if(!I)return;let n=g.clientX-I.getBoundingClientRect().left;if(n<g9)return;let Z0=Math.max(0,Math.min(S-1,Math.round((n-g9)/J9)));r(u,o0(R,Z0))};return $("div",{class:"tl",children:[$("div",{class:"tl-toolbar",children:$("button",{class:"tbtn",onClick:(g)=>y0(g,(u)=>$(o,{children:[$(j0,{children:"开始日期"},void 0,!1,void 0,this),z.map((I)=>$(z0,{icon:z9[I.type],label:I.name,checked:I===Y,onClick:()=>{G(I.id),u()}},I.id,!1,void 0,this)),$(S0,{},void 0,!1,void 0,this),$(j0,{children:"结束日期(可选)"},void 0,!1,void 0,this),$(z0,{icon:"x",label:"无(里程碑)",checked:!F,onClick:()=>{H("none"),u()}},void 0,!1,void 0,this),z.map((I)=>$(z0,{icon:z9[I.type],label:I.name,checked:I===F,onClick:()=>{H(I.id),u()}},I.id,!1,void 0,this))]},void 0,!0,void 0,this)),children:[$(f,{name:"timeline",cls:"ico sm"},void 0,!1,void 0,this),Y.name,F?` → ${F.name}`:"(里程碑)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"tl-scroll",children:$("div",{class:"tl-canvas",style:{width:O,height:cZ+_.length*dZ+8},children:[$("div",{class:"tl-axis",style:{height:cZ},children:[$("div",{class:"tl-corner",style:{width:g9},children:"记录"},void 0,!1,void 0,this),B.map((g,u)=>{let I=g.getDate()===1;return $("div",{class:"tl-tick"+(I?" mstart":"")+(NZ(g,A)===0?" today":""),style:{left:N(u),width:J9},children:[I&&$("span",{class:"tl-month",children:[g.getMonth()+1,"月"]},void 0,!0,void 0,this),$("span",{class:"tl-dnum",children:g.getDate()},void 0,!1,void 0,this)]},u,!0,void 0,this)})]},void 0,!0,void 0,this),_.map(({rec:g,s:u,e:I},n)=>{let Z0=u?NZ(R,u):0,q0=u&&I?NZ(u,I)+1:1;return $("div",{class:"tl-row",style:{top:cZ+n*dZ,height:dZ},children:[$("div",{class:"tl-rowlabel",style:{width:g9},children:u5(g,P)||$("span",{class:"muted",children:"无标题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!u?$("div",{class:"tl-track-empty",style:{left:g9},onClick:(Q0)=>$0(Q0,g),title:"点击空白处排期",children:$("button",{class:"tl-schedule",style:{left:g9+8},onClick:(Q0)=>{Q0.stopPropagation(),r(g,A)},children:"未排期 · 排到今天"},void 0,!1,void 0,this)},void 0,!1,void 0,this):I?$("div",{class:"tl-item",style:{left:N(Z0),width:q0*J9},onPointerDown:(Q0)=>c(Q0,g,u,I,"move",Q0.currentTarget),children:[$("span",{class:"tl-h l",onPointerDown:(Q0)=>c(Q0,g,u,I,"l",Q0.currentTarget.parentElement)},void 0,!1,void 0,this),$("span",{class:"tl-label",children:u5(g,P)},void 0,!1,void 0,this),$("span",{class:"tl-h r",onPointerDown:(Q0)=>c(Q0,g,u,I,"r",Q0.currentTarget.parentElement)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("div",{class:"tl-milestone",style:{left:N(Z0)},title:B9(u),onPointerDown:(Q0)=>c(Q0,g,u,null,"move",Q0.currentTarget)},void 0,!1,void 0,this)]},g.id,!0,void 0,this)}),L>=0&&L<S&&$("div",{class:"tl-today",style:{left:N(L)+J9/2,height:cZ+_.length*dZ}},void 0,!1,void 0,this),$("div",{class:"tl-guide",ref:w,style:{display:"none",height:cZ+_.length*dZ},children:$("span",{class:"tl-guide-label"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function u5(Z,J){if(!J)return"";let Q=Z.cells[J.id];return Q==null?"":Array.isArray(Q)?Q.join(", "):String(Q)}function $Z(Z){return{r0:Math.min(Z.a.r,Z.b.r),r1:Math.max(Z.a.r,Z.b.r),c0:Math.min(Z.a.c,Z.b.c),c1:Math.max(Z.a.c,Z.b.c)}}function x8(Z,J,Q){return J>=Z.r0&&J<=Z.r1&&Q>=Z.c0&&Q<=Z.c1}function m8(Z,J,Q){if(!x8(Z,J,Q))return;let X=[];if(J===Z.r0)X.push("inset 0 2px 0 0 var(--accent)");if(J===Z.r1)X.push("inset 0 -2px 0 0 var(--accent)");if(Q===Z.c0)X.push("inset 2px 0 0 0 var(--accent)");if(Q===Z.c1)X.push("inset -2px 0 0 0 var(--accent)");return X.join(",")||void 0}function p5(Z,J){let Q=[];for(let X=J.r0;X<=J.r1;X++){let z=Z[X]??[],W=[];for(let G=J.c0;G<=J.c1;G++)W.push(z[G]??"");Q.push(W.join("\t"))}return Q.join(`
|
|
37
|
+
`)}var SQ=[["表格","list"],["看板","group"],["日历","calendar"],["时间轴","timeline"]];function c5({db:Z,onError:J}){let[Q,X]=k([]),[z,W]=k([]),G=BZ(),[q,H]=k(0),[Y,F]=k(new Set),[K,w]=k(null),[P,A]=k(null),_=W0(P);_.current=P;let[V,D]=k(null),[v,R]=k(null),x=(h)=>h.config?.width??180,S=W0(!1),O=W0(null),N=W0(null),[L,B]=k(null),[M,y]=k(null),E=W0(null),c=(h)=>{if(document.body.classList.contains("table-dragging"))return;let T=N.current,p=O.current;if(!T||!p)return;let i=L&&p.querySelector(`tbody tr[data-row-id="${L.id}"]`);if(i){let t=i.getBoundingClientRect();if(h>=t.top&&h<t.bottom)return}let F0=T.getBoundingClientRect().top;for(let t of Array.from(p.querySelectorAll("tbody tr[data-row-id]"))){let e=t.getBoundingClientRect();if(h>=e.top&&h<e.bottom){B({id:t.dataset.rowId,top:e.top-F0,height:e.height});return}}if(L)B(null)},r=(h)=>h().catch((T)=>J(String(T.message))),$0=async()=>{let[h,T]=await Promise.all([a.listProperties(Z.id),a.listRecords(Z.id)]);X(h),W(T)};l(()=>{F(new Set),D(null),H(0),R(null),A(null),$0().catch((h)=>J(String(h.message)))},[Z.id]),l(()=>{let h=(T)=>{if(!T.detail?.datasets?.some((i)=>i==="records"||i==="properties"))return;if(_.current)return;$0().catch(()=>{})};return document.addEventListener(t9,h),()=>document.removeEventListener(t9,h)},[Z.id]);let m=(h,T,p)=>{A(null),W((i)=>i.map((F0)=>F0.id===h.id?{...F0,cells:{...F0.cells,[T.id]:p},values:{...F0.values,[T.name]:p}}:F0)),a.updateRecord(h.id,{[T.id]:p}).then((i)=>W((F0)=>F0.map((t)=>t.id===i.id?i:t))).catch((i)=>{J(String(i.message)),$0().catch((F0)=>J(String(F0.message)))})},g=(h)=>r(async()=>{let T=await a.createRecord(Z.id,h);W((p)=>[...p,T])}),u=()=>g({}),I=(h)=>r(async()=>{if(await Promise.all(h.map((T)=>a.deleteRecord(T))),W((T)=>T.filter((p)=>!h.includes(p.id))),F(new Set),V&&h.includes(V))D(null)}),n=(h)=>r(async()=>{let T=await a.createRecord(Z.id,h.cells);W((p)=>{let i=p.findIndex((F0)=>F0.id===h.id);return[...p.slice(0,i+1),T,...p.slice(i+1)]})}),Z0=(h,T,p)=>{if(h===T||K)return;W((i)=>d5(i,h,T,p))},q0=(h,T,p)=>{if(h===T||K)return;Z0(h,T,p),a.moveRecord(h,T,p).catch((i)=>{J(String(i.message)),$0().catch((F0)=>J(String(F0.message)))})},Q0=(h,T,p)=>{if(h===T)return;X((i)=>{let F0=d5(i,h,T,p).map((X0,L0)=>({...X0,position:L0+1})),t=new Map(i.map((X0)=>[X0.id,X0.position])),e=F0.filter((X0)=>t.get(X0.id)!==X0.position);if(e.length)Promise.all(e.map((X0)=>a.updateProperty(X0.id,{position:X0.position}))).catch((X0)=>{J(String(X0.message)),$0().catch((L0)=>J(String(L0.message)))});return F0})},J0=(h,T)=>{let p=N.current,i=O.current;if(!p||!i)return null;let F0=Array.from(i.querySelectorAll("tbody tr[data-row-id]"));if(!F0.length)return null;let t=p.getBoundingClientRect().top,e=F0[F0.length-1],X0="after";for(let v0 of F0){let V0=v0.getBoundingClientRect();if(h<V0.top+V0.height/2){e=v0,X0="before";break}if(h<=V0.bottom){e=v0,X0="after";break}}if(e.dataset.rowId===T)return null;let L0=e.getBoundingClientRect();return{id:e.dataset.rowId,where:X0,y:(X0==="before"?L0.top:L0.bottom)-t}},B0=(h,T)=>{if(K||h.button!==0)return;let p=O.current?.querySelector(`tr[data-row-id="${T}"]`);if(!p)return;h.preventDefault();let i=p.getBoundingClientRect(),F0=h.clientX-i.left,t=h.clientY-i.top,e=null;P9(h,{onStart:()=>{e=u6("row-ghost",i,fQ(p)),p.classList.add("drag-source"),document.body.classList.add("table-dragging")},onMove:(X0)=>{uZ(e,X0.clientX-F0,X0.clientY-t);let L0=J0(X0.clientY,T);E.current=L0,y(L0?L0.y:null)},onEnd:(X0,L0)=>{e?.remove(),p.classList.remove("drag-source"),document.body.classList.remove("table-dragging");let v0=E.current;if(E.current=null,y(null),L0&&v0)q0(T,v0.id,v0.where)}})},p0=(h,T)=>{if(h.button!==0)return;let p=h.currentTarget.closest("th");if(!p)return;N5(h,{source:p,axis:"x",ghostCls:"col-ghost",ghostText:p.textContent?.trim()||"移动属性",targetSelector:"th[data-col-id]",isSelf:(i)=>i.dataset.colId===T.id,onActivate:()=>{S.current=!0},onDrop:(i,F0)=>Q0(T.id,i.dataset.colId,F0),onFinish:(i)=>{if(i)setTimeout(()=>{S.current=!1},0)}})},i0=(h,T,p)=>{if(h.button!==0)return;if(h.target.closest("input,button,a"))return;let i=h.shiftKey&&v?v.a:{r:T,c:p};R({a:i,b:{r:T,c:p}}),P9(h,{onStart:()=>document.body.classList.add("cell-selecting"),onMove:(F0)=>{let t=document.elementFromPoint(F0.clientX,F0.clientY)?.closest?.("td.cell-td");if(!t||t.dataset.r==null)return;R({a:i,b:{r:Number(t.dataset.r),c:Number(t.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},m0=(h)=>h!=="checkbox"&&h!=="select"&&h!=="multi_select",d0=(h,T,p)=>Math.max(T,Math.min(p,h)),g0=(h,T)=>requestAnimationFrame(()=>{document.querySelector(`td.cell-td[data-r="${h}"][data-c="${T}"]`)?.scrollIntoView({block:"nearest",inline:"nearest"})}),h0=(h,T)=>{R({a:{r:h,c:T},b:{r:h,c:T}}),g0(h,T)},_0=(h,T,p)=>{let i=K0[h],F0=Q[T];if(!i||!F0)return;if(h0(h,T),m0(F0.type))A({rec:i.id,prop:F0.id,seed:p})},a0=(h,T,p)=>{let i=T+p;if(i<0||i>=Q.length){h0(h,T);return}_0(h,i)},O0=(h)=>r(async()=>{if(!v)return;let{r0:T,r1:p,c0:i,c1:F0}=$Z(v),t=Q.slice(i,F0+1),e=K0.slice(T,p+1),X0=await Promise.all(e.map((L0)=>{let v0={};for(let V0 of t)v0[V0.id]=h(V0);return a.updateRecord(L0.id,v0)}));W((L0)=>L0.map((v0)=>X0.find((V0)=>V0.id===v0.id)??v0))}),u0=async()=>{if(!v)return;let{r0:h,r1:T,c0:p,c1:i}=$Z(v),F0=Q.slice(p,i+1),t=K0.slice(h,T+1).map((e)=>F0.map((X0)=>V5(X0,e.cells[X0.id])).join("\t")).join(`
|
|
38
|
+
`);try{await navigator.clipboard.writeText(t)}catch{}},Y0=K?Q.find((h)=>h.id===K.id):void 0,r0=(h)=>{let T=h==null||h===""?NaN:Number(h);return Number.isFinite(T)?T:Number.NEGATIVE_INFINITY},K0=K?[...z].sort((h,T)=>{let p=h.cells[K.id],i=T.cells[K.id],F0=Y0?.type==="number"?r0(p)-r0(i):String(p??"").localeCompare(String(i??""),"zh");return(K.desc?-1:1)*F0}):z,l0=z.find((h)=>h.id===V)??null,w0=v?$Z(v):null;return l(()=>{let h=(T)=>{if(!v||P)return;let p=document.activeElement,i=(p?.tagName||"").toLowerCase();if(i==="input"||i==="textarea"||p?.isContentEditable)return;let F0=v.a.r===v.b.r&&v.a.c===v.b.c,{r:t,c:e}=v.b,X0={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(T.key in X0){T.preventDefault();let[L0,v0]=X0[T.key],V0={r:d0(t+L0,0,K0.length-1),c:d0(e+v0,0,Q.length-1)};R(T.shiftKey?{a:v.a,b:V0}:{a:V0,b:V0}),g0(V0.r,V0.c)}else if((T.metaKey||T.ctrlKey)&&T.key.toLowerCase()==="c")T.preventDefault(),u0();else if(T.key==="Escape")R(null);else if(T.key==="Delete"||T.key==="Backspace")T.preventDefault(),O0(()=>null);else if(F0&&(T.key==="Enter"||T.key==="F2"))T.preventDefault(),_0(t,e);else if(F0&&T.key.length===1&&!T.metaKey&&!T.ctrlKey&&!T.altKey&&!T.isComposing&&T.keyCode!==229){let L0=Q[e];if(!L0||!m0(L0.type)||L0.type==="date")return;if(L0.type==="number"&&!/[0-9.+-]/.test(T.key))return;T.preventDefault(),_0(t,e,T.key)}};return addEventListener("keydown",h),()=>removeEventListener("keydown",h)},[v,P,z,Q,K]),$("div",{class:"db",onPointerDown:(h)=>{if(!h.target.closest("td.cell-td, .cellselbar"))R(null)},children:[$("div",{class:"db-head",children:[$("div",{class:"db-icon",children:Z.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("div",{children:$("div",{class:"db-title",contentEditable:!0,onBlur:(h)=>{let T=h.target.textContent?.trim()||Z.name;if(T!==Z.name)r(async()=>{await a.updateDatabase(Z.id,{name:T})})},children:Z.name},void 0,!1,void 0,this)},void 0,!1,void 0,this),G.has(Z.id)&&$("span",{class:"db-title-share",title:"已分享 · 管理分享",onClick:()=>N9({kind:"database",ref:Z.id,title:Z.name}),children:$(f,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"views",children:[SQ.map(([h,T],p)=>$("div",{class:"view-tab"+(p===q?" active":""),onClick:()=>H(p),children:[$(f,{name:T},void 0,!1,void 0,this),h]},h,!0,void 0,this)),$("div",{class:"spacer",style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:u,children:[$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q===0&&$("div",{class:"toolbar",children:$("button",{class:"tbtn",onClick:(h)=>xQ(h,Q,K,w),children:[$(f,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),"排序"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),q===1?$(h5,{props:Q,records:z,onCommitValue:m,onCreate:g,onOpenRecord:D,onMove:q0},void 0,!1,void 0,this):q===2?$(x5,{props:Q,records:z,onCommitValue:m,onCreate:g,onOpenRecord:D},void 0,!1,void 0,this):q===3?$(E5,{props:Q,records:z,onCommitValue:m,onCreate:g,onOpenRecord:D},void 0,!1,void 0,this):$("div",{class:"gridhost",ref:N,onMouseMove:(h)=>c(h.clientY),onMouseLeave:()=>{if(!document.body.classList.contains("table-dragging"))B(null)},children:[L&&$("button",{class:"rowgrip-ext"+(K?" is-disabled":""),style:{top:L.top+L.height/2},title:K?"清除排序后可拖拽移动":"拖拽移动","aria-disabled":K?"true":void 0,onPointerDown:(h)=>B0(h,L.id),children:$(f,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M!=null&&$("div",{class:"rowdrop",style:{top:M}},void 0,!1,void 0,this),$("div",{class:"tablewrap",children:[$("div",{class:"tablescroll",children:$("table",{class:"grid",ref:O,children:[$("colgroup",{children:[$("col",{style:{width:38}},void 0,!1,void 0,this),Q.map((h)=>$("col",{"data-col-id":h.id,style:{width:x(h)}},h.id,!1,void 0,this)),$("col",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("thead",{children:$("tr",{children:[$("th",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.size>0&&Y.size===z.length,onChange:(h)=>F(h.target.checked?new Set(z.map((T)=>T.id)):new Set)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((h)=>$("th",{"data-col-id":h.id,children:[$("div",{class:"colhead",onPointerDown:(T)=>p0(T,h),onClick:(T)=>{if(S.current){S.current=!1,T.preventDefault(),T.stopPropagation();return}jQ(T,h,Z.id,$0,Q)},children:[$("span",{class:"ti",children:$(f,{name:z9[h.type]??"text",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"nm",children:h.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(gQ,{colId:h.id,startWidth:x(h),onCommit:(T)=>{X((p)=>p.map((i)=>i.id===h.id?{...i,config:{...i.config??{},width:T}}:i)),a.setColumnWidth(h.id,T).catch((p)=>{J(String(p.message)),$0().catch(()=>{})})}},void 0,!1,void 0,this)]},h.id,!0,void 0,this)),$("th",{class:"addcol",children:$("div",{class:"colhead",title:"新建属性",onClick:(h)=>DQ(h,Z.id,Q,$0),children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("tbody",{children:K0.map((h,T)=>$("tr",{"data-row-id":h.id,class:Y.has(h.id)?"sel":"",children:[$("td",{class:"selcell",children:$("input",{type:"checkbox",checked:Y.has(h.id),onChange:()=>F((p)=>{let i=new Set(p);return i.has(h.id)?i.delete(h.id):i.add(h.id),i})},void 0,!1,void 0,this)},void 0,!1,void 0,this),Q.map((p,i)=>{let F0=w0!=null&&T>=w0.r0&&T<=w0.r1&&i>=w0.c0&&i<=w0.c1,t=w0?m8(w0,T,i):void 0;return $("td",{class:"cell-td"+(F0?" cellsel":""),"data-r":T,"data-c":i,style:t?{boxShadow:t}:void 0,onPointerDown:(e)=>i0(e,T,i),children:$(VQ,{rec:h,prop:p,first:i===0,editing:P?.rec===h.id&&P?.prop===p.id,seed:P?.rec===h.id&&P?.prop===p.id?P.seed:void 0,onEdit:()=>{h0(T,i),A({rec:h.id,prop:p.id})},onCommit:(e)=>m(h,p,e),onDone:(e)=>{if(A(null),e.reason!=="cancel"&&e.changed)m(h,p,e.value);if(e.reason==="tab")a0(T,i,1);else if(e.reason==="shifttab")a0(T,i,-1);else if(e.reason==="enter")h0(d0(T+1,0,K0.length-1),i)},onOpen:()=>D(h.id),onRowMenu:(e)=>mQ(e,h,()=>D(h.id),()=>n(h),()=>I([h.id]))},void 0,!1,void 0,this)},p.id,!1,void 0,this)}),$("td",{class:"filler"},void 0,!1,void 0,this)]},h.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"addrow",onClick:u,children:[$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建记录"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",z.length," 条记录"]},void 0,!0,void 0,this),$("span",{children:[Q.length," 个属性"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y.size>0&&$("div",{class:"selbar",children:[$("span",{class:"cnt",children:[Y.size," 已选"]},void 0,!0,void 0,this),$("button",{onClick:()=>r(async()=>{for(let h of Y)await n(z.find((T)=>T.id===h))}),children:[$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:async()=>{if(await R0({title:"删除记录?",message:`确定删除选中的 ${Y.size} 条记录?`,confirmLabel:"删除",danger:!0}))I([...Y])},children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除"]},void 0,!0,void 0,this),$("button",{onClick:()=>F(new Set),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w0&&(w0.r0!==w0.r1||w0.c0!==w0.c1)&&$("div",{class:"selbar cellselbar",children:[$("span",{class:"cnt",children:[(w0.r1-w0.r0+1)*(w0.c1-w0.c0+1)," 个单元格"]},void 0,!0,void 0,this),$("button",{onClick:u0,children:[$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"复制"]},void 0,!0,void 0,this),$("button",{onClick:()=>O0((h)=>K0[w0.r0].cells[h.id]??null),children:[$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this),"填充"]},void 0,!0,void 0,this),$("button",{class:"del",onClick:()=>O0(()=>null),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清空"]},void 0,!0,void 0,this),$("button",{onClick:()=>R(null),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),l0&&$(uQ,{db:Z,props:Q,rec:l0,onClose:()=>D(null),onCommit:(h,T)=>m(l0,h,T),onDelete:()=>I([l0.id]),onDuplicate:()=>n(l0),onReverted:()=>$0().catch((h)=>J(String(h.message)))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function i5({prop:Z,val:J,seed:Q,captureTab:X,onDone:z}){let W=Array.isArray(J)?J.join(", "):J==null?"":String(J),G=W0(null),q=W0(!1);l(()=>{let Y=G.current;Y.value=Q??W,Y.focus();try{Y.setSelectionRange(Y.value.length,Y.value.length)}catch{}},[]);let H=(Y)=>{if(q.current)return;if(q.current=!0,Y==="cancel")return z({reason:"cancel"});let F=G.current.value;z({reason:Y,changed:F!==W,value:S5(Z.type,F)})};return $("input",{ref:G,class:"inlineedit",type:Z.type==="number"?"number":Z.type==="date"?"date":"text",onBlur:()=>H("blur"),onKeyDown:(Y)=>{if(Y.isComposing||Y.keyCode===229)return;if(Y.key==="Enter")Y.preventDefault(),H("enter");else if(Y.key==="Escape")Y.preventDefault(),Y.stopPropagation(),H("cancel");else if(Y.key==="Tab"&&X)Y.preventDefault(),H(Y.shiftKey?"shifttab":"tab")}},void 0,!1,void 0,this)}function VQ({rec:Z,prop:J,first:Q,editing:X,seed:z,onEdit:W,onCommit:G,onDone:q,onOpen:H,onRowMenu:Y}){let F=Z.cells[J.id];if(J.type==="checkbox")return $("div",{class:"cell center",children:$("input",{type:"checkbox",checked:!!F,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>G(!F)},void 0,!1,void 0,this)},void 0,!1,void 0,this);let K=(A)=>{if(J.type==="select"||J.type==="multi_select")a5(A,J,F,G);else W()},w=$(OZ,{prop:J,val:F},void 0,!1,void 0,this);return $(o,{children:[Q?$("div",{class:"cell",onDblClick:K,onContextMenu:(A)=>{A.preventDefault(),Y(A)},children:$("div",{class:"firstcell",children:[w,$("div",{class:"rowactions",children:$("button",{class:"rowopen",title:"打开",onClick:(A)=>{A.stopPropagation(),H()},children:$(f,{name:"openPeek",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this):$("div",{class:"cell",onDblClick:K,children:w},void 0,!1,void 0,this),X&&J.type!=="select"&&J.type!=="multi_select"&&$("div",{class:"celledit",children:$(i5,{prop:J,val:F,seed:z,captureTab:!0,onDone:q},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function d5(Z,J,Q,X){let z=[...Z],W=z.findIndex((H)=>H.id===J);if(W<0)return Z;let G=z.splice(W,1)[0],q=z.findIndex((H)=>H.id===Q);if(q<0)return Z;if(X==="after")q+=1;return z.splice(q,0,G),z}function fQ(Z){return Array.from(Z.querySelectorAll("td")).map((Q)=>(Q.textContent??"").trim()).filter(Boolean).join(" ")||"移动记录"}function gQ({colId:Z,startWidth:J,onCommit:Q}){return $("div",{class:"col-resizer",onPointerDown:(z)=>{z.preventDefault(),z.stopPropagation(),S8(z,{col:document.querySelector(`col[data-col-id="${CSS.escape(Z)}"]`),startWidth:J,min:80,onDone:Q})}},void 0,!1,void 0,this)}function a5(Z,J,Q,X){Z.stopPropagation();let z=J.type==="multi_select",W=J.config?.options??[];y0(Z,(G)=>$(bQ,{multi:z,options:W,value:Q,onPick:(q)=>{if(X(q),!z)G()}},void 0,!1,void 0,this))}function bQ({multi:Z,options:J,value:Q,onPick:X}){let[z,W]=k(Q),G=(H)=>Z?Array.isArray(z)?z.includes(H):!1:z===H,q=(H)=>{if(Z){let Y=new Set(Array.isArray(z)?z:[]);Y.has(H)?Y.delete(H):Y.add(H);let F=[...Y];W(F),X(F)}else W(H),X(H)};return $(o,{children:[$(j0,{children:Z?"多选 — 点选切换":"单选"},void 0,!1,void 0,this),J.map((H)=>$("button",{class:"item",onClick:()=>q(H),children:[$(ZZ,{text:H},void 0,!1,void 0,this),G(H)&&$("span",{class:"chk",children:$(f,{name:"check",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},H,!0,void 0,this)),Z&&Array.isArray(z)&&z.length>0&&$(o,{children:[$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"x",label:"清空",onClick:()=>{W([]),X([])}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function jQ(Z,J,Q,X,z){Z.stopPropagation(),y0(Z,(W)=>$(hQ,{prop:J,dbId:Q,reload:X,close:W,allProps:z},void 0,!1,void 0,this),{minWidth:252})}function hQ({prop:Z,dbId:J,reload:Q,close:X,allProps:z}){let[W,G]=k(Z.name),[q,H]=k(Z.type),[Y,F]=k(Z.config?.options??[]),K=(A)=>a.updateProperty(Z.id,A).then(Q).catch((_)=>s(`更新属性失败:${_.message}`)),w=(A)=>{H(A);let _=Y;if((A==="select"||A==="multi_select")&&_.length===0)_=["选项 1","选项 2"],F(_);K({type:A,...A==="select"||A==="multi_select"?{config:{options:_}}:{}})},P=(A)=>{F(A),K({config:{options:A}})};return $(o,{children:[$("input",{class:"field",value:W,onInput:(A)=>G(A.target.value),onBlur:()=>W&&W!==Z.name&&K({name:W}),onKeyDown:(A)=>{if(A.key==="Enter")A.target.blur(),X()}},void 0,!1,void 0,this),$(j0,{children:"属性类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(UZ).map((A)=>$("button",{class:"item"+(A===q?" sel":""),onClick:()=>w(A),children:[$("span",{class:"lico",children:$(f,{name:z9[A],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:UZ[A].t},void 0,!1,void 0,this)]},A,!0,void 0,this))},void 0,!1,void 0,this),(q==="select"||q==="multi_select")&&$(o,{children:[$(S0,{},void 0,!1,void 0,this),$(j0,{children:"选项"},void 0,!1,void 0,this),Y.map((A,_)=>$("div",{class:"optrow",children:[$(ZZ,{text:A},void 0,!1,void 0,this),$("button",{class:"x",onClick:()=>P(Y.filter((V,D)=>D!==_)),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},A+_,!0,void 0,this)),$(z0,{icon:"plus",label:"添加选项",onClick:()=>P([...Y,"选项 "+(Y.length+1)])},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{X(),a.createProperty({db:J,name:n5("新属性",z),type:"text"}).then(Q).catch((A)=>s(`新建属性失败:${A.message}`))}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除属性",danger:!0,onClick:async()=>{if(X(),await R0({title:"删除属性?",message:`「${Z.name}」及其所有单元格数据将被移除。`,confirmLabel:"删除",danger:!0}))a.deleteProperty(Z.id).then(Q)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function n5(Z,J){let Q=new Set(J.map((X)=>X.name.toLowerCase()));if(!Q.has(Z.toLowerCase()))return Z;for(let X=2;;X++){let z=`${Z} ${X}`;if(!Q.has(z.toLowerCase()))return z}}function DQ(Z,J,Q,X){Z.stopPropagation(),y0(Z,(z)=>$(o,{children:[$(j0,{children:"新建属性 · 选择类型"},void 0,!1,void 0,this),$("div",{class:"typegrid",children:Object.keys(UZ).map((W)=>$("button",{class:"item",onClick:()=>{z();let G=W==="select"||W==="multi_select"?{options:["选项 1","选项 2"]}:void 0;a.createProperty({db:J,name:n5(UZ[W].t,Q),type:W,config:G}).then(X).catch((q)=>s(`新建属性失败:${q.message}`))},children:[$("span",{class:"lico",children:$(f,{name:z9[W],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"d",children:UZ[W].t},void 0,!1,void 0,this)]},W,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function xQ(Z,J,Q,X){y0(Z,(z)=>$(o,{children:[$(j0,{children:"排序依据"},void 0,!1,void 0,this),J.map((W)=>$(z0,{icon:z9[W.type],label:W.name,onClick:()=>{X({id:W.id,desc:Q?.id===W.id?!Q.desc:!1}),z()}},W.id,!1,void 0,this)),Q&&$(o,{children:[$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"x",label:"清除排序",onClick:()=>{X(null),z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function mQ(Z,J,Q,X,z){Z.stopPropagation(),y0(Z,(W)=>$(o,{children:[$(z0,{icon:"cornerUpRight",label:"打开记录",onClick:()=>{W(),Q()}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"复制记录",onClick:()=>{W(),X()}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(W(),await R0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))z()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function uQ({db:Z,props:J,rec:Q,onClose:X,onCommit:z,onDelete:W,onDuplicate:G,onReverted:q}){let[H,Y]=k(null),[F,K]=k(!1),{open:w,close:P}=e9(X),A=J[0];return $(o,{children:[$("div",{class:"scrim"+(w?" open":""),onClick:P},void 0,!1,void 0,this),$("div",{class:"peek"+(w?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:P,children:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&$("button",{class:"iconbtn",title:"返回字段",onClick:()=>K(!1),children:$(f,{name:"arrowLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1}},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(_)=>y0(_,(V)=>$(o,{children:[$(z0,{icon:"history",label:"版本历史",checked:F,onClick:()=>{V(),K(!F)}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"复制记录",onClick:()=>{V(),G()}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除记录",danger:!0,onClick:async()=>{if(V(),await R0({title:"删除记录?",message:"确定删除这条记录?",confirmLabel:"删除",danger:!0}))W()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),children:$(f,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:F?$(j5,{rec:Q,props:J,onReverted:q},void 0,!1,void 0,this):$(o,{children:[$("h2",{contentEditable:!0,onBlur:(_)=>A&&z(A,_.target.textContent??""),children:A?String(Q.cells[A.id]??"无标题"):"无标题"},void 0,!1,void 0,this),J.map((_)=>$("div",{class:"proprow",children:[$("div",{class:"k",children:[$(f,{name:z9[_.type]??"text",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:_.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(EQ,{prop:_,rec:Q,editing:H===_.id,onEdit:()=>Y(_.id),onCommit:(V)=>{z(_,V),Y(null)},onCloseEdit:()=>Y(null)},void 0,!1,void 0,this)]},_.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function EQ({prop:Z,rec:J,editing:Q,onEdit:X,onCommit:z,onCloseEdit:W}){let G=J.cells[Z.id];if(Z.type==="checkbox")return $("div",{class:"v",children:$("input",{type:"checkbox",checked:!!G,style:{width:16,height:16,accentColor:"var(--accent)"},onChange:()=>z(!G)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Z.type==="select"||Z.type==="multi_select")return $("div",{class:"v",onClick:(q)=>a5(q,Z,G,z),children:$(OZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Q)return $("div",{class:"v",children:$(i5,{prop:Z,val:G,onDone:(q)=>{if(q.reason!=="cancel"&&q.changed)z(q.value);else W()}},void 0,!1,void 0,this)},void 0,!1,void 0,this);return $("div",{class:"v",onClick:X,children:$(OZ,{prop:Z,val:G},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var X$=M2(Q$(),1);var r8=X$.default;function rz(Z){for(var J=1;J<arguments.length;J++){var Q=arguments[J];for(var X in Q)if(Object.prototype.hasOwnProperty.call(Q,X))Z[X]=Q[X]}return Z}function B1(Z,J){return Array(J+1).join(Z)}function G$(Z){return Z.replace(/^\n*/,"")}function q$(Z){var J=Z.length;while(J>0&&Z[J-1]===`
|
|
39
|
+
`)J--;return Z.substring(0,J)}function H$(Z){return q$(G$(Z))}var oz=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function O1(Z){return A1(Z,oz)}var Y$=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function K$(Z){return A1(Z,Y$)}function tz(Z){return U$(Z,Y$)}var F$=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function sz(Z){return A1(Z,F$)}function ez(Z){return U$(Z,F$)}function A1(Z,J){return J.indexOf(Z.nodeName)>=0}function U$(Z,J){return Z.getElementsByTagName&&J.some(function(Q){return Z.getElementsByTagName(Q).length})}var ZW=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function L$(Z){return ZW.reduce(function(J,Q){return J.replace(Q[0],Q[1])},Z)}var t0={};t0.paragraph={filter:"p",replacement:function(Z){return`
|
|
39
40
|
|
|
40
41
|
`+Z+`
|
|
41
42
|
|
|
42
43
|
`}};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=
|
|
44
|
+
`}};t0.heading={filter:["h1","h2","h3","h4","h5","h6"],replacement:function(Z,J,Q){var X=Number(J.nodeName.charAt(1));if(Q.headingStyle==="setext"&&X<3){var z=B1(X===1?"=":"-",Z.length);return`
|
|
44
45
|
|
|
45
46
|
`+Z+`
|
|
46
47
|
`+z+`
|
|
47
48
|
|
|
48
49
|
`}else return`
|
|
49
50
|
|
|
50
|
-
`+
|
|
51
|
+
`+B1("#",X)+" "+Z+`
|
|
51
52
|
|
|
52
|
-
`}};t0.blockquote={filter:"blockquote",replacement:function(Z){return Z=
|
|
53
|
+
`}};t0.blockquote={filter:"blockquote",replacement:function(Z){return Z=H$(Z).replace(/^/gm,"> "),`
|
|
53
54
|
|
|
54
55
|
`+Z+`
|
|
55
56
|
|
|
@@ -58,7 +59,7 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=x,V=b;if(u===void 0)
|
|
|
58
59
|
|
|
59
60
|
`+Z+`
|
|
60
61
|
|
|
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=
|
|
62
|
+
`}};t0.listItem={filter:"li",replacement:function(Z,J,Q){var X=Q.bulletListMarker+" ",z=J.parentNode;if(z.nodeName==="OL"){var W=z.getAttribute("start"),G=Array.prototype.indexOf.call(z.children,J);X=(W?Number(W)+G:G+1)+". "}var q=/\n$/.test(Z);return Z=H$(Z)+(q?`
|
|
62
63
|
`:""),Z=Z.replace(/\n/gm,`
|
|
63
64
|
`+" ".repeat(X.length)),X+Z+(J.nextSibling?`
|
|
64
65
|
`:"")}};t0.indentedCodeBlock={filter:function(Z,J){return J.codeBlockStyle==="indented"&&Z.nodeName==="PRE"&&Z.firstChild&&Z.firstChild.nodeName==="CODE"},replacement:function(Z,J,Q){return`
|
|
@@ -66,7 +67,7 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=x,V=b;if(u===void 0)
|
|
|
66
67
|
`+J.firstChild.textContent.replace(/\n/g,`
|
|
67
68
|
`)+`
|
|
68
69
|
|
|
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=
|
|
70
|
+
`}};t0.fencedCodeBlock={filter:function(Z,J){return J.codeBlockStyle==="fenced"&&Z.nodeName==="PRE"&&Z.firstChild&&Z.firstChild.nodeName==="CODE"},replacement:function(Z,J,Q){var X=J.firstChild.getAttribute("class")||"",z=(X.match(/language-(\S+)/)||[null,""])[1],W=J.firstChild.textContent,G=Q.fence.charAt(0),q=3,H=new RegExp("^"+G+"{3,}","gm"),Y;while(Y=H.exec(W))if(Y[0].length>=q)q=Y[0].length+1;var F=B1(G,q);return`
|
|
70
71
|
|
|
71
72
|
`+F+z+`
|
|
72
73
|
`+W.replace(/\n$/,"")+`
|
|
@@ -76,13 +77,13 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=x,V=b;if(u===void 0)
|
|
|
76
77
|
|
|
77
78
|
`+Q.hr+`
|
|
78
79
|
|
|
79
|
-
`}};t0.inlineLink={filter:function(Z,J){return J.linkStyle==="inlined"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J){var Q=
|
|
80
|
+
`}};t0.inlineLink={filter:function(Z,J){return J.linkStyle==="inlined"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J){var Q=N1(J.getAttribute("href")),X=w1(o8(J.getAttribute("title"))),z=X?' "'+X+'"':"";return"["+Z+"]("+Q+z+")"}};t0.referenceLink={filter:function(Z,J){return J.linkStyle==="referenced"&&Z.nodeName==="A"&&Z.getAttribute("href")},replacement:function(Z,J,Q){var X=N1(J.getAttribute("href")),z=o8(J.getAttribute("title"));if(z)z=' "'+w1(z)+'"';var W,G;switch(Q.linkReferenceStyle){case"collapsed":W="["+Z+"][]",G="["+Z+"]: "+X+z;break;case"shortcut":W="["+Z+"]",G="["+Z+"]: "+X+z;break;default:var q=this.references.length+1;W="["+Z+"]["+q+"]",G="["+q+"]: "+X+z}return this.references.push(G),W},references:[],append:function(Z){var J="";if(this.references.length)J=`
|
|
80
81
|
|
|
81
82
|
`+this.references.join(`
|
|
82
83
|
`)+`
|
|
83
84
|
|
|
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=
|
|
85
|
-
`):""}function
|
|
85
|
+
`,this.references=[];return J}};t0.emphasis={filter:["em","i"],replacement:function(Z,J,Q){if(!Z.trim())return"";return Q.emDelimiter+Z+Q.emDelimiter}};t0.strong={filter:["strong","b"],replacement:function(Z,J,Q){if(!Z.trim())return"";return Q.strongDelimiter+Z+Q.strongDelimiter}};t0.code={filter:function(Z){var J=Z.previousSibling||Z.nextSibling,Q=Z.parentNode.nodeName==="PRE"&&!J;return Z.nodeName==="CODE"&&!Q},replacement:function(Z){if(!Z)return"";Z=Z.replace(/\r?\n|\r/g," ");var J=/^`|^ .*?[^ ].* $|`$/.test(Z)?" ":"",Q="`",X=Z.match(/`+/gm)||[];while(X.indexOf(Q)!==-1)Q=Q+"`";return Q+J+Z+J+Q}};t0.image={filter:"img",replacement:function(Z,J){var Q=L$(o8(J.getAttribute("alt"))),X=N1(J.getAttribute("src")||""),z=o8(J.getAttribute("title")),W=z?' "'+w1(z)+'"':"";return X?"":""}};function o8(Z){return Z?Z.replace(/(\n+\s*)+/g,`
|
|
86
|
+
`):""}function N1(Z){var J=Z.replace(/([<>()])/g,"\\$1");return J.indexOf(" ")>=0?"<"+J+">":J}function w1(Z){return Z.replace(/"/g,"\\\"")}function P$(Z){this.options=Z,this._keep=[],this._remove=[],this.blankRule={replacement:Z.blankReplacement},this.keepReplacement=Z.keepReplacement,this.defaultRule={replacement:Z.defaultReplacement},this.array=[];for(var J in Z.rules)this.array.push(Z.rules[J])}P$.prototype={add:function(Z,J){this.array.unshift(J)},keep:function(Z){this._keep.unshift({filter:Z,replacement:this.keepReplacement})},remove:function(Z){this._remove.unshift({filter:Z,replacement:function(){return""}})},forNode:function(Z){if(Z.isBlank)return this.blankRule;var J;if(J=U1(this.array,Z,this.options))return J;if(J=U1(this._keep,Z,this.options))return J;if(J=U1(this._remove,Z,this.options))return J;return this.defaultRule},forEach:function(Z){for(var J=0;J<this.array.length;J++)Z(this.array[J],J)}};function U1(Z,J,Q){for(var X=0;X<Z.length;X++){var z=Z[X];if(JW(z,J,Q))return z}return}function JW(Z,J,Q){var X=Z.filter;if(typeof X==="string"){if(X===J.nodeName.toLowerCase())return!0}else if(Array.isArray(X)){if(X.indexOf(J.nodeName.toLowerCase())>-1)return!0}else if(typeof X==="function"){if(X.call(Z,J,Q))return!0}else throw TypeError("`filter` needs to be a string, array, or function")}function $W(Z){var{element:J,isBlock:Q,isVoid:X}=Z,z=Z.isPre||function(K){return K.nodeName==="PRE"};if(!J.firstChild||z(J))return;var W=null,G=!1,q=null,H=z$(q,J,z);while(H!==J){if(H.nodeType===3||H.nodeType===4){var Y=H.data.replace(/[ \r\n\t]+/g," ");if((!W||/ $/.test(W.data))&&!G&&Y[0]===" ")Y=Y.substr(1);if(!Y){H=L1(H);continue}H.data=Y,W=H}else if(H.nodeType===1){if(Q(H)||H.nodeName==="BR"){if(W)W.data=W.data.replace(/ $/,"");W=null,G=!1}else if(X(H)||z(H))W=null,G=!0;else if(W)G=!1}else{H=L1(H);continue}var F=z$(q,H,z);q=H,H=F}if(W){if(W.data=W.data.replace(/ $/,""),!W.data)L1(W)}}function L1(Z){var J=Z.nextSibling||Z.parentNode;return Z.parentNode.removeChild(Z),J}function z$(Z,J,Q){if(Z&&Z.parentNode===J||Q(J))return J.nextSibling||J.parentNode;return J.firstChild||J.nextSibling||J.parentNode}var M1=typeof window<"u"?window:{};function QW(){var Z=M1.DOMParser,J=!1;try{if(new Z().parseFromString("","text/html"))J=!0}catch(Q){}return J}function XW(){var Z=function(){};if(zW())Z.prototype.parseFromString=function(J){var Q=new window.ActiveXObject("htmlfile");return Q.designMode="on",Q.open(),Q.write(J),Q.close(),Q};else Z.prototype.parseFromString=function(J){var Q=document.implementation.createHTMLDocument("");return Q.open(),Q.write(J),Q.close(),Q};return Z}function zW(){var Z=!1;try{document.implementation.createHTMLDocument("").open()}catch(J){if(M1.ActiveXObject)Z=!0}return Z}var WW=QW()?M1.DOMParser:XW();function GW(Z,J){var Q;if(typeof Z==="string"){var X=qW().parseFromString('<x-turndown id="turndown-root">'+Z+"</x-turndown>","text/html");Q=X.getElementById("turndown-root")}else Q=Z.cloneNode(!0);return $W({element:Q,isBlock:O1,isVoid:K$,isPre:J.preformattedCode?HW:null}),Q}var P1;function qW(){return P1=P1||new WW,P1}function HW(Z){return Z.nodeName==="PRE"||Z.nodeName==="CODE"}function YW(Z,J){return Z.isBlock=O1(Z),Z.isCode=Z.nodeName==="CODE"||Z.parentNode.isCode,Z.isBlank=KW(Z),Z.flankingWhitespace=FW(Z,J),Z}function KW(Z){return!K$(Z)&&!sz(Z)&&/^\s*$/i.test(Z.textContent)&&!tz(Z)&&!ez(Z)}function FW(Z,J){if(Z.isBlock||J.preformattedCode&&Z.isCode)return{leading:"",trailing:""};var Q=UW(Z.textContent);if(Q.leadingAscii&&W$("left",Z,J))Q.leading=Q.leadingNonAscii;if(Q.trailingAscii&&W$("right",Z,J))Q.trailing=Q.trailingNonAscii;return{leading:Q.leading,trailing:Q.trailing}}function UW(Z){var J=Z.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);return{leading:J[1],leadingAscii:J[2],leadingNonAscii:J[3],trailing:J[4],trailingNonAscii:J[5],trailingAscii:J[6]}}function W$(Z,J,Q){var X,z,W;if(Z==="left")X=J.previousSibling,z=/ $/;else X=J.nextSibling,z=/^ /;if(X){if(X.nodeType===3)W=z.test(X.nodeValue);else if(Q.preformattedCode&&X.nodeName==="CODE")W=!1;else if(X.nodeType===1&&!O1(X))W=z.test(X.textContent)}return W}var LW=Array.prototype.reduce;function lZ(Z){if(!(this instanceof lZ))return new lZ(Z);var J={rules:t0,headingStyle:"setext",hr:"* * *",bulletListMarker:"*",codeBlockStyle:"indented",fence:"```",emDelimiter:"_",strongDelimiter:"**",linkStyle:"inlined",linkReferenceStyle:"full",br:" ",preformattedCode:!1,blankReplacement:function(Q,X){return X.isBlock?`
|
|
86
87
|
|
|
87
88
|
`:""},keepReplacement:function(Q,X){return X.isBlock?`
|
|
88
89
|
|
|
@@ -92,56 +93,56 @@ https://github.com/highlightjs/highlight.js/issues/2277`),i=x,V=b;if(u===void 0)
|
|
|
92
93
|
|
|
93
94
|
`+Q+`
|
|
94
95
|
|
|
95
|
-
`:Q}};this.options=
|
|
96
|
+
`:Q}};this.options=rz({},J,Z),this.rules=new P$(this.options)}lZ.prototype={turndown:function(Z){if(!OW(Z))throw TypeError(Z+" is not a string, or an element/document/fragment node.");if(Z==="")return"";var J=B$.call(this,new GW(Z,this.options));return PW.call(this,J)},use:function(Z){if(Array.isArray(Z))for(var J=0;J<Z.length;J++)this.use(Z[J]);else if(typeof Z==="function")Z(this);else throw TypeError("plugin must be a Function or an Array of Functions");return this},addRule:function(Z,J){return this.rules.add(Z,J),this},keep:function(Z){return this.rules.keep(Z),this},remove:function(Z){return this.rules.remove(Z),this},escape:function(Z){return L$(Z)}};function B$(Z){var J=this;return LW.call(Z.childNodes,function(Q,X){X=new YW(X,J.options);var z="";if(X.nodeType===3)z=X.isCode?X.nodeValue:J.escape(X.nodeValue);else if(X.nodeType===1)z=BW.call(J,X);return O$(Q,z)},"")}function PW(Z){var J=this;return this.rules.forEach(function(Q){if(typeof Q.append==="function")Z=O$(Z,Q.append(J.options))}),Z.replace(/^[\t\r\n]+/,"").replace(/[\t\r\n\s]+$/,"")}function BW(Z){var J=this.rules.forNode(Z),Q=B$.call(this,Z),X=Z.flankingWhitespace;if(X.leading||X.trailing)Q=Q.trim();return X.leading+J.replacement(Q,Z,this.options)+X.trailing}function O$(Z,J){var Q=q$(Z),X=G$(J),z=Math.max(Z.length-Q.length,J.length-X.length),W=`
|
|
96
97
|
|
|
97
|
-
`.substring(0,z);return Q+W+X}function
|
|
98
|
+
`.substring(0,z);return Q+W+X}function OW(Z){return Z!=null&&(typeof Z==="string"||Z.nodeType&&(Z.nodeType===1||Z.nodeType===9||Z.nodeType===11))}var A$=/highlight-(?:text|source)-([a-z0-9]+)/;function AW(Z){Z.addRule("highlightedCodeBlock",{filter:function(J){var Q=J.firstChild;return J.nodeName==="DIV"&&A$.test(J.className)&&Q&&Q.nodeName==="PRE"},replacement:function(J,Q,X){var z=Q.className||"",W=(z.match(A$)||[null,""])[1];return`
|
|
98
99
|
|
|
99
100
|
`+X.fence+W+`
|
|
100
101
|
`+Q.firstChild.textContent+`
|
|
101
102
|
`+X.fence+`
|
|
102
103
|
|
|
103
|
-
`}})}function
|
|
104
|
+
`}})}function NW(Z){Z.addRule("strikethrough",{filter:["del","s","strike"],replacement:function(J){return"~"+J+"~"}})}var wW=Array.prototype.indexOf,MW=Array.prototype.every,_Z={};_Z.tableCell={filter:["th","td"],replacement:function(Z,J){return N$(Z,J)}};_Z.tableRow={filter:"tr",replacement:function(Z,J){var Q="",X={left:":--",right:"--:",center:":-:"};if(C1(J))for(var z=0;z<J.childNodes.length;z++){var W="---",G=(J.childNodes[z].getAttribute("align")||"").toLowerCase();if(G)W=X[G]||W;Q+=N$(W,J.childNodes[z])}return`
|
|
104
105
|
`+Z+(Q?`
|
|
105
|
-
`+Q:"")}};
|
|
106
|
+
`+Q:"")}};_Z.table={filter:function(Z){return Z.nodeName==="TABLE"&&C1(Z.rows[0])},replacement:function(Z){return Z=Z.replace(`
|
|
106
107
|
|
|
107
108
|
`,`
|
|
108
109
|
`),`
|
|
109
110
|
|
|
110
111
|
`+Z+`
|
|
111
112
|
|
|
112
|
-
`}};
|
|
113
|
+
`}};_Z.tableSection={filter:["thead","tbody","tfoot"],replacement:function(Z){return Z}};function C1(Z){var J=Z.parentNode;return J.nodeName==="THEAD"||J.firstChild===Z&&(J.nodeName==="TABLE"||CW(J))&&MW.call(Z.childNodes,function(Q){return Q.nodeName==="TH"})}function CW(Z){var J=Z.previousSibling;return Z.nodeName==="TBODY"&&(!J||J.nodeName==="THEAD"&&/^\s*$/i.test(J.textContent))}function N$(Z,J){var Q=wW.call(J.parentNode.childNodes,J),X=" ";if(Q===0)X="| ";return X+Z+" |"}function yW(Z){Z.keep(function(Q){return Q.nodeName==="TABLE"&&!C1(Q.rows[0])});for(var J in _Z)Z.addRule(J,_Z[J])}function _W(Z){Z.addRule("taskListItems",{filter:function(J){return J.type==="checkbox"&&J.parentNode.nodeName==="LI"},replacement:function(J,Q){return(Q.checked?"[x]":"[ ]")+" "}})}function w$(Z){Z.use([AW,NW,yW,_W])}function vW(Z){let J=Z.match(/(?:language|lang)-(\S+)/);return J?J[1]:""}function TW(){let Z=new lZ({codeBlockStyle:"fenced",headingStyle:"atx",bulletListMarker:"-",emDelimiter:"*",strongDelimiter:"**"});return Z.use(w$),Z.remove(["style","script","title"]),Z.escape=(J)=>J,Z.addRule("fencedCodeWithLang",{filter:(J)=>J.nodeName==="PRE"&&!!J.querySelector("code"),replacement:(J,Q)=>{let X=Q.querySelector("code"),z=(X?.textContent??Q.textContent??"").replace(/\n$/,""),W=X?vW(X.className):"",G="```";return`
|
|
113
114
|
|
|
114
115
|
\`\`\`${W}
|
|
115
116
|
${z}
|
|
116
117
|
\`\`\`
|
|
117
118
|
|
|
118
|
-
`}}),Z}var
|
|
119
|
+
`}}),Z}var M$=null;function C$(Z){return M$??=TW(),M$.turndown(Z)}var RW=new Set(["mp4","webm","mov","m4v","ogv","mkv","ogg"]),kW=new Set(["mp3","wav","m4a","aac","flac","opus","oga","weba"]);function _1(Z){let J=(Z||"").toLowerCase();if(J.startsWith("image/"))return"image";if(J.startsWith("video/"))return"video";if(J.startsWith("audio/"))return"audio";return"file"}function IW(Z){let J=Z.split(/[?#]/,1)[0]??Z,Q=J.slice(J.lastIndexOf("/")+1),X=Q.lastIndexOf(".");return X>=0?Q.slice(X+1).toLowerCase():""}function SW(Z){if(RW.has(Z))return"video";if(kW.has(Z))return"audio";return"image"}function VW(Z){let J=Z.indexOf("#"),Q=J>=0?Z.slice(J):"",X=J>=0?Z.slice(0,J):Z,z=X.indexOf("?");if(z<0)return{src:Z};let W=X.slice(0,z),G,q=[];for(let H of X.slice(z+1).split("&").filter(Boolean)){let Y=H.match(/^w=(\d+)$/);if(Y)G=parseInt(Y[1],10);else q.push(H)}return{src:W+(q.length?"?"+q.join("&"):"")+Q,width:G}}function fW(Z){let J=Z.src??"";if(Z.type!=="image"||!Z.width||Z.width<=0)return J;return J+(J.includes("?")?"&":"?")+"w="+Math.round(Z.width)}function y$(Z){return Z.replace(/[[\]()]/g,"").trim()}function gW(Z){let J=Z.trim(),Q=J.match(/^!\[([^\]]*)\]\(([^\s)]+)\)$/);if(Q){let{src:X,width:z}=VW(Q[2]),W=SW(IW(X)),G={type:W,content:"",src:X,name:Q[1]};if(W==="image"&&z)G.width=z;return G}if(Q=J.match(/^\[([^\]]*)\]\(([^\s)]+)(?:\s+"([^"]*)")?\)$/),Q&&Q[2].startsWith("/blob/")){let X={type:"file",content:"",src:Q[2],name:Q[1]};if(Q[3]!=null&&/^\d+$/.test(Q[3]))X.size=parseInt(Q[3],10);return X}return null}function _$(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}var bW=0;function G9(){return`blk_${Date.now().toString(36)}_${(bW++).toString(36)}`}var jW=new Set(["bullet","numbered","todo"]),hW=new Set(["h1","h2","h3","h4","h5","h6"]),k9={fenceOpen:/^\s*(`{3,}|~{3,})\s*([^\s`]*)?.*$/,h:/^(#{1,6})\s+(.*)$/,todo:/^\s*[-*+]\s+\[([ xX])\]\s*(.*)$/,bullet:/^\s*[-*+]\s+(.*)$/,numbered:/^\s*(\d+)[.)]\s+(.*)$/,quote:/^>\s?(.*)$/,divider:/^\s*(?:-{3,}|\*{3,}|_{3,})\s*$/};function Q9(Z){return jW.has(Z)}function vZ(Z){return hW.has(Z)}function DW(){return[["",""],["",""]]}function v1(Z,J,Q){if(Z.type=J,Z.content=Q.content??"",J==="todo")Z.checked=Q.checked??!1;else delete Z.checked;if(J==="code")Z.lang=Q.lang??"";else delete Z.lang;if(J==="numbered"&&Q.start!=null&&Q.start>1)Z.start=Q.start;else delete Z.start;if(J==="table")Z.rows=Q.rows?Q.rows.map((X)=>[...X]):DW(),Z.align=Q.align?[...Q.align]:Array(Z.rows[0].length).fill(null);else delete Z.rows,delete Z.align;if(_$(J)||J==="uploading"){if(Z.src=Q.src??"",Q.name!=null)Z.name=Q.name;else delete Z.name;if(J==="image"&&Q.width)Z.width=Q.width;else delete Z.width;if(J==="file"&&Q.size!=null)Z.size=Q.size;else delete Z.size}else delete Z.src,delete Z.name,delete Z.width,delete Z.size}function D9(Z,J={}){let Q={id:G9(),type:Z,content:""};if(v1(Q,Z,J),Q9(Z)&&J.children?.length)Q.children=J.children;return Q}function v$(Z){let J=s8(Z.filter((Q)=>!j9(Q)));return Z.map((Q)=>b$(Q,0,J.get(Q.id)??1).join(`
|
|
119
120
|
`)).join(`
|
|
120
|
-
`)}function
|
|
121
|
+
`)}function rZ(Z){let J=(Z??"").replace(/\r\n?/g,`
|
|
121
122
|
`),Q=J?J.split(`
|
|
122
|
-
`):[],X=
|
|
123
|
-
`)}function
|
|
124
|
-
`)},next:G};return{block:{id:
|
|
125
|
-
`),lang:H},next:G}}function
|
|
126
|
-
`)},next:z}}var
|
|
127
|
-
`)},next:z}}function
|
|
128
|
-
`).map((z)=>`${X}>${z?` ${z}`:""}`);case"code":{let z=`${X}\`\`\`${Z.lang?
|
|
129
|
-
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"table":return
|
|
123
|
+
`):[],X=S$(Q,0,0).blocks;T$(X);let z=J.length-J.replace(/\n+$/,"").length;for(let W=1;W<z;W++)X.push({id:G9(),type:"p",content:""});return X}function j9(Z){return Z.type==="p"&&Z.content.trim()===""&&!Z.children?.length}function s8(Z){let J=new Map,Q=null;for(let X of Z)if(X.type==="numbered")Q=Q===null?Math.max(1,X.start??1):Q+1,J.set(X.id,Q);else Q=null;return J}function T$(Z){let J=!0;for(let Q of Z){if(Q.type==="numbered")if(J){if((Q.start??1)<=1)delete Q.start;J=!1}else delete Q.start;else J=!0;if(Q.children)T$(Q.children)}}function R$(Z){return k$(Z,0,!0).join(`
|
|
124
|
+
`)}function k$(Z,J,Q){let X=s8(Z.filter((q)=>!j9(q))),z=[],W=null,G=0;for(let q of Z){if(j9(q)){if(z.length)G++;continue}if(!j$(q))continue;if(z.length){let H=sW(W,q)||G>0?1:0;for(let Y=0;Y<H+G;Y++)z.push("")}z.push(...b$(q,J,X.get(q.id)??1)),W=q,G=0}if(z.length&&G>0)for(let q=0;q<G+(Q?1:0);q++)z.push("");return z}function T1(Z,J){if(J===" "){let X=Z.match(/^(#{1,6}) $/);if(X)return{type:`h${X[1].length}`,content:""};if(Z==="> ")return{type:"quote",content:""};if(/^[-*+] $/.test(Z))return{type:"bullet",content:""};let z=Z.match(/^(\d+)[.)] $/);if(z)return{type:"numbered",content:"",start:parseInt(z[1],10)};let W=Z.match(/^[-*+]\s+\[([ xX])\]\s*$/);if(W)return{type:"todo",content:"",checked:W[1].toLowerCase()==="x"};return null}let Q=Z.match(/^```([A-Za-z0-9_+.#-]*)$/);if(Q)return{type:"code",content:"",lang:R1(Q[1]??"")};return null}function I$(Z){let J=Z.match(/^\[([ xX])\]$/);return J?{checked:J[1].toLowerCase()==="x"}:null}function S$(Z,J,Q){let X=[],z=J,W=0;while(z<Z.length){let G=Z[z];if(G.trim()===""){let H=z;while(H<Z.length&&Z[H].trim()==="")H++;if(H>=Z.length||h9(Z[H])<Q)break;W+=H-z,z=H;continue}if(h9(G)<Q)break;if(X.length&&W>1)for(let H=1;H<W;H++)X.push({id:G9(),type:"p",content:""});W=0;let q=xW(Z,z,Q)??cW(Z,z,Q)??mW(Z,z,Q);X.push(q.block),z=q.next}return{blocks:X,next:z}}function xW(Z,J,Q){let X=g$(Z[J],Q);if(!X)return null;let z={id:G9(),type:X.type,content:X.content};if(X.type==="todo")z.checked=!!X.checked;if(X.type==="numbered"&&X.num!=null)z.start=X.num;let W=S$(Z,J+1,X.indent+2);if(W.blocks.length)z.children=W.blocks;return{block:z,next:W.next}}function mW(Z,J,Q){let X=O9(Z[J],Q),z=X.match(k9.fenceOpen);if(z){let q=uW(Z,J,Q,z);if(q)return q}if(k9.divider.test(X.trim()))return{block:{id:G9(),type:"divider",content:""},next:J+1};let W=X.match(k9.h);if(W)return{block:{id:G9(),type:`h${W[1].length}`,content:W[2]},next:J+1};if(k9.quote.test(X))return EW(Z,J,Q);let G=gW(X);if(G)return{block:{id:G9(),...G},next:J+1};return rW(Z,J,Q)}function uW(Z,J,Q,X){let z=X[1],W=[],G=J+1,q=!1;for(;G<Z.length;G++){let Y=Z[G],F=O9(Y,Q);if(eW(F,z[0],z.length)){q=!0,G++;break}W.push(F)}if(!q)return null;let H=R1(X[2]??"");if(H==="mh-html")return{block:{id:G9(),type:"html",content:W.join(`
|
|
125
|
+
`)},next:G};return{block:{id:G9(),type:"code",content:W.join(`
|
|
126
|
+
`),lang:H},next:G}}function EW(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||h9(W)<Q)break;let G=O9(W,Q).match(k9.quote);if(!G)break;X.push(G[1]??"")}return{block:{id:G9(),type:"quote",content:X.join(`
|
|
127
|
+
`)},next:z}}var pW=/^\s*:?-+:?\s*$/;function V$(Z,J,Q){let X=Z[J],z=Z[J+1];if(X==null||z==null)return!1;if(h9(X)<Q||h9(z)<Q)return!1;let W=O9(X,Q),G=O9(z,Q);if(!W.includes("|")||!G.includes("|"))return!1;let q=t8(G);return q.length>0&&q.every((H)=>pW.test(H))}function t8(Z){let J=[],Q="";for(let X=0;X<Z.length;X++){let z=Z[X];if(z==="\\"&&Z[X+1]==="|"){Q+="|",X++;continue}if(z==="|"){J.push(Q),Q="";continue}Q+=z}if(J.push(Q),J.length&&J[0].trim()==="")J.shift();if(J.length&&J[J.length-1].trim()==="")J.pop();return J.map((X)=>X.trim())}function dW(Z){let J=Z.trim(),Q=J.startsWith(":"),X=J.endsWith(":");if(Q&&X)return"center";if(X)return"right";if(Q)return"left";return null}function y1(Z,J){let Q=Z.slice(0,J);while(Q.length<J)Q.push("");return Q}function cW(Z,J,Q){if(!V$(Z,J,Q))return null;let X=t8(O9(Z[J],Q)),z=Math.max(1,X.length),W=t8(O9(Z[J+1],Q)).map(dW),G=[y1(X,z)],q=J+2;for(;q<Z.length;q++){let H=Z[q];if(H.trim()===""||h9(H)<Q)break;let Y=O9(H,Q);if(!Y.includes("|"))break;G.push(y1(t8(Y),z))}while(W.length<z)W.push(null);return W.length=z,{block:{id:G9(),type:"table",content:"",rows:G,align:W},next:q}}function iW(Z){switch(Z){case"left":return":---";case"center":return":---:";case"right":return"---:";default:return"---"}}function aW(Z,J){let Q=" ".repeat(J),X=Z.rows??[],z=Math.max(1,...X.map((F)=>F.length)),W=Z.align??[],G=(F)=>F.replace(/\|/g,"\\|").replace(/\n/g," "),q=(F)=>`${Q}| ${y1(F,z).map(G).join(" | ")} |`,H=`${Q}| ${Array.from({length:z},(F,K)=>iW(W[K]??null)).join(" | ")} |`,Y=X[0]??Array.from({length:z},()=>"");return[q(Y),H,...X.slice(1).map(q)]}var f$=/^\\*(?:`{3,}|~{3,})/;function nW(Z){return f$.test(Z)?`\\${Z}`:Z}function lW(Z){return Z.startsWith("\\")&&f$.test(Z.slice(1))?Z.slice(1):Z}function rW(Z,J,Q){let X=[],z=J;for(;z<Z.length;z++){let W=Z[z];if(W.trim()===""||h9(W)<Q)break;if(X.length&&(oW(W,Q)||V$(Z,z,Q)))break;X.push(lW(O9(W,Q)))}return{block:{id:G9(),type:"p",content:X.join(`
|
|
128
|
+
`)},next:z}}function oW(Z,J){if(g$(Z,J))return!0;let Q=O9(Z,J);return!!Q.match(k9.fenceOpen)||!!Q.match(k9.h)||k9.divider.test(Q.trim())||k9.quote.test(Q)}function g$(Z,J){let Q=h9(Z);if(Q<J)return null;let X=O9(Z,Q),z=X.match(/^[-*+]\s+\[([ xX])\]\s*(.*)$/);if(z)return{indent:Q,type:"todo",checked:z[1].toLowerCase()==="x",content:z[2]};if(z=X.match(/^(\d+)[.)](?:\s+(.*))?$/),z)return{indent:Q,type:"numbered",content:z[2]??"",num:parseInt(z[1],10)};if(z=X.match(/^[-*+](?:\s+(.*))?$/),z)return{indent:Q,type:"bullet",content:z[1]??""};return null}function b$(Z,J,Q){let X=" ".repeat(J);if(vZ(Z.type))return[`${X}${"#".repeat(Number(Z.type.slice(1)))} ${Z.content}`];switch(Z.type){case"bullet":case"numbered":case"todo":return tW(Z,J,Q);case"quote":return Z.content.split(`
|
|
129
|
+
`).map((z)=>`${X}>${z?` ${z}`:""}`);case"code":{let z=`${X}\`\`\`${Z.lang?R1(Z.lang):""}`,W=Z.content.split(`
|
|
130
|
+
`).map((G)=>`${X}${G}`);return[z,...W,`${X}\`\`\``]}case"table":return aW(Z,J);case"divider":return[`${X}---`];case"image":case"video":case"audio":return[`${X}})`];case"file":{let z=Z.size!=null?` "${Z.size}"`:"";return[`${X}[${y$(Z.name??"文件")}](${Z.src??""}${z})`]}case"html":{let z=`${X}\`\`\`mh-html`,W=Z.content.split(`
|
|
130
131
|
`).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
|
+
`).map((z)=>`${X}${nW(z)}`)}}function tW(Z,J,Q){let X=" ".repeat(J),z=Z.type==="numbered"?`${Q}. `:Z.type==="todo"?`- [${Z.checked?"x":" "}] `:"- ",W=[`${X}${z}${Z.content}`],G=Z.children??[],q=G.find((H)=>!j9(H)&&j$(H));if(q){if(!Q9(q.type)&&Z.content.trim()!=="")W.push("");W.push(...k$(G,J+2,!1))}return W}function sW(Z,J){if(!Z)return!1;return!(Q9(Z.type)&&Q9(J.type))}function j$(Z){if(Z.type==="divider")return!0;if(Q9(Z.type))return!0;if(Z.type==="code")return Z.content.trim()!==""||!!Z.lang?.trim();if(Z.type==="table")return(Z.rows??[]).some((J)=>J.some((Q)=>Q.trim()!==""));if(Z.type==="uploading")return!1;if(_$(Z.type))return!!Z.src;if(Z.type==="html")return Z.content.trim()!=="";return Z.content.trim()!==""}function h9(Z){let J=0;for(let Q of Z)if(Q===" ")J++;else if(Q==="\t")J+=4;else break;return J}function O9(Z,J){let Q=0,X=0;for(;X<Z.length&&Q<J;X++){let z=Z[X];if(z===" ")Q++;else if(z==="\t")Q+=4;else break}return Z.slice(X)}function eW(Z,J,Q){let X=Z.trim();if(!X||X[0]!==J)return!1;for(let z of X)if(z!==J)return!1;return X.length>=Q}function R1(Z){return Z.trim().replace(/[^A-Za-z0-9_+.#-]/g,"")}var k1=[{id:"",label:"纯文本"},{id:"bash",label:"Bash"},{id:"shell",label:"Shell"},{id:"javascript",label:"JavaScript"},{id:"typescript",label:"TypeScript"},{id:"json",label:"JSON"},{id:"python",label:"Python"},{id:"go",label:"Go"},{id:"rust",label:"Rust"},{id:"java",label:"Java"},{id:"c",label:"C"},{id:"cpp",label:"C++"},{id:"csharp",label:"C#"},{id:"sql",label:"SQL"},{id:"yaml",label:"YAML"},{id:"xml",label:"HTML / XML"},{id:"css",label:"CSS"},{id:"scss",label:"SCSS"},{id:"markdown",label:"Markdown"},{id:"php",label:"PHP"},{id:"ruby",label:"Ruby"},{id:"swift",label:"Swift"},{id:"kotlin",label:"Kotlin"},{id:"objectivec",label:"Objective-C"},{id:"perl",label:"Perl"},{id:"lua",label:"Lua"},{id:"makefile",label:"Makefile"},{id:"ini",label:"INI / TOML"},{id:"diff",label:"Diff"}],I1=[{type:"p",ic:"text",t:"文本",d:"普通段落"},{type:"h1",ic:"heading",t:"标题 1",d:"大号标题"},{type:"h2",ic:"heading",t:"标题 2",d:"中号标题"},{type:"h3",ic:"heading",t:"标题 3",d:"小号标题"},{type:"bullet",ic:"list",t:"无序列表",d:"项目符号"},{type:"numbered",ic:"numList",t:"有序列表",d:"编号列表"},{type:"todo",ic:"checkbox",t:"待办清单",d:"复选项"},{type:"quote",ic:"quote",t:"引用",d:"引用块"},{type:"code",ic:"code",t:"代码",d:"代码块"},{type:"table",ic:"table",t:"表格",d:"插入表格"},{type:"divider",ic:"minus",t:"分隔线",d:"水平分隔"},{type:"image",ic:"image",t:"图片",d:"上传或拖入图片"},{type:"video",ic:"video",t:"视频",d:"上传视频文件"},{type:"audio",ic:"audio",t:"音频",d:"上传音频文件"},{type:"file",ic:"file",t:"文件",d:"上传任意文件"},{type:"html",ic:"htmlTag",t:"HTML",d:"嵌入并渲染 HTML"}];function oZ(Z){return Z==="image"||Z==="video"||Z==="audio"||Z==="file"}function ZG(Z){if(Z==null||!isFinite(Z))return"";if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(0)} KB`;if(Z<1073741824)return`${(Z/1048576).toFixed(1)} MB`;return`${(Z/1073741824).toFixed(2)} GB`}function S1({icon:Z,name:J,onRetry:Q}){return $("div",{class:"void-block void-unavailable",children:[$(f,{name:Z,cls:"ico"},void 0,!1,void 0,this),$("span",{class:"vu-meta",children:[$("span",{class:"vu-name",children:J||"媒体"},void 0,!1,void 0,this),$("span",{class:"vu-sub",children:"字节未同步到本设备或加载失败"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"vu-retry",onClick:Q,onMouseDown:(X)=>X.stopPropagation(),children:[$(f,{name:"history",cls:"ico sm"},void 0,!1,void 0,this)," 重试"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function h$({block:Z}){return $("div",{class:"void-block void-uploading",children:[$(f,{name:"spinner",cls:"ico spin"},void 0,!1,void 0,this),$("span",{class:"vu-name",children:Z.name||"上传中…"},void 0,!1,void 0,this),$("span",{class:"vu-sub",children:"上传中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function D$({block:Z,selected:J,onResize:Q,onPreview:X}){let z=W0(null),W=W0(null),[G,q]=k(Z.width),H=W0(Z.width),[Y,F]=k(!1),[K,w]=k(0);l(()=>{q(Z.width),H.current=Z.width},[Z.width]),l(()=>F(!1),[Z.src]);let P=(A,_)=>{A.preventDefault(),A.stopPropagation();let V=W.current;if(!V)return;let D=A.clientX,v=V.offsetWidth,R=z.current?.closest(".doc")?.clientWidth??1200,x=(O)=>{let N=O.clientX-D,L=Math.max(60,Math.min(_==="r"?v+N:v-N,R));H.current=Math.round(L),q(H.current)},S=()=>{window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",S),Q(H.current)};window.addEventListener("mousemove",x),window.addEventListener("mouseup",S)};if(Y)return $(S1,{icon:"image",name:Z.name,onRetry:()=>{w((A)=>A+1),F(!1)}},void 0,!1,void 0,this);return $("div",{ref:z,class:"void-block void-image"+(J?" selected":""),style:{width:G?`${G}px`:void 0},onDblClick:X,children:[$("img",{ref:W,src:Z.src,alt:Z.name??"",loading:"lazy",draggable:!1,title:"双击预览 / 标注",onError:()=>F(!0)},K,!1,void 0,this),$("button",{class:"void-expand",title:"预览",onClick:X,onMouseDown:(A)=>A.stopPropagation(),children:$(f,{name:"maximize",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),J&&$(o,{children:[$("span",{class:"img-handle h-l",onMouseDown:(A)=>P(A,"l")},void 0,!1,void 0,this),$("span",{class:"img-handle h-r",onMouseDown:(A)=>P(A,"r")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function x$({block:Z}){let[J,Q]=k(!1),[X,z]=k(0);if(l(()=>Q(!1),[Z.src]),J)return $(S1,{icon:"video",name:Z.name,onRetry:()=>{z((W)=>W+1),Q(!1)}},void 0,!1,void 0,this);return $("div",{class:"void-block void-media void-video",children:$("video",{src:Z.src,controls:!0,preload:"metadata",onError:()=>Q(!0)},X,!1,void 0,this)},void 0,!1,void 0,this)}function m$({block:Z}){let[J,Q]=k(!1),[X,z]=k(0);if(l(()=>Q(!1),[Z.src]),J)return $(S1,{icon:"audio",name:Z.name,onRetry:()=>{z((W)=>W+1),Q(!1)}},void 0,!1,void 0,this);return $("div",{class:"void-block void-media void-audio",children:[Z.name&&$("div",{class:"void-audio-name",children:Z.name},void 0,!1,void 0,this),$("audio",{src:Z.src,controls:!0,preload:"metadata",onError:()=>Q(!0)},X,!1,void 0,this)]},void 0,!0,void 0,this)}function u$({block:Z}){let J=Z.name||"文件",Q=J.includes(".")?J.slice(J.lastIndexOf(".")+1).toUpperCase():"";return $("a",{class:"void-block void-file",href:Z.src,download:J,target:"_blank",rel:"noreferrer",onMouseDown:(X)=>X.stopPropagation(),children:[$("span",{class:"file-glyph",children:[$(f,{name:"file",cls:"ico"},void 0,!1,void 0,this),Q&&$("span",{class:"file-ext",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"file-meta",children:[$("span",{class:"file-name",children:J},void 0,!1,void 0,this),$("span",{class:"file-sub",children:ZG(Z.size)||"下载文件"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"file-dl",children:$(f,{name:"download",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var JG="<script>(function(){function r(){try{parent.postMessage({__mhHtmlHeight:document.documentElement.scrollHeight},'*')}catch(e){}}try{new ResizeObserver(r).observe(document.documentElement)}catch(e){}addEventListener('load',r);setTimeout(r,60);setTimeout(r,400)})();</script>";function $G(Z){return`<!doctype html><html><head><meta charset="utf-8"><base target="_blank"><style>html,body{margin:0;padding:0;color-scheme:light dark;font-family:system-ui,-apple-system,sans-serif}</style></head><body>${Z}${JG}</body></html>`}function E$({block:Z,selected:J,onChange:Q}){let[X,z]=k(!Z.content.trim()),[W,G]=k(120),q=W0(null),H=W0(null);return l(()=>{if(X)H.current?.focus()},[X]),l(()=>{let Y=(F)=>{if(q.current&&F.source===q.current.contentWindow){let K=Number(F.data?.__mhHtmlHeight);if(K>0)G(Math.max(48,Math.min(Math.ceil(K),4000)))}};return window.addEventListener("message",Y),()=>window.removeEventListener("message",Y)},[]),$("div",{class:"void-block void-html"+(J?" selected":""),children:[$("div",{class:"html-bar",children:[$("span",{class:"html-tag",children:[$(f,{name:"htmlTag",cls:"ico sm"},void 0,!1,void 0,this)," HTML"]},void 0,!0,void 0,this),$("button",{class:"html-toggle"+(X?" on":""),title:X?"预览渲染":"编辑源码",onMouseDown:(Y)=>Y.stopPropagation(),onClick:()=>z((Y)=>!Y),children:[$(f,{name:X?"eye":"code",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:X?"预览":"源码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X?$("textarea",{ref:H,class:"html-source code-input",spellcheck:!1,placeholder:"<!-- 在此粘贴 / 编写 HTML,将沙箱渲染 -->",value:Z.content,onMouseDown:(Y)=>Y.stopPropagation(),onInput:(Y)=>Q(Y.currentTarget.value)},void 0,!1,void 0,this):Z.content.trim()?$("iframe",{ref:q,class:"html-frame",title:"HTML 预览",sandbox:"allow-scripts allow-popups",srcdoc:$G(Z.content),style:{height:`${W}px`}},void 0,!1,void 0,this):$("div",{class:"html-empty",onClick:()=>z(!0),children:"空的 HTML 块 — 点此添加内容"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var p$=["#ef4444","#f59e0b","#22c55e","#3b82f6","#111827","#ffffff"],V1=3,QG=20;function f1(Z,J,Q){if(Z.strokeStyle=J.color,Z.fillStyle=J.color,Z.lineWidth=V1*Q,Z.lineJoin="round",Z.lineCap="round",J.tool==="rect"){let X=Math.min(J.x1,J.x2)*Q,z=Math.min(J.y1,J.y2)*Q;Z.strokeRect(X,z,Math.abs(J.x2-J.x1)*Q,Math.abs(J.y2-J.y1)*Q)}else if(J.tool==="arrow"){let X=J.x1*Q,z=J.y1*Q,W=J.x2*Q,G=J.y2*Q,q=Math.atan2(G-z,W-X),H=Math.max(10,V1*Q*3.2);Z.beginPath(),Z.moveTo(X,z),Z.lineTo(W,G),Z.stroke(),Z.beginPath(),Z.moveTo(W,G),Z.lineTo(W-H*Math.cos(q-Math.PI/7),G-H*Math.sin(q-Math.PI/7)),Z.lineTo(W-H*Math.cos(q+Math.PI/7),G-H*Math.sin(q+Math.PI/7)),Z.closePath(),Z.fill()}else if(J.tool==="text"&&J.text)Z.font=`600 ${QG*Q}px system-ui, -apple-system, sans-serif`,Z.textBaseline="top",Z.lineWidth=Math.max(2,V1*Q),Z.strokeStyle="rgba(0,0,0,.55)",Z.strokeText(J.text,J.x1*Q,J.y1*Q),Z.fillText(J.text,J.x1*Q,J.y1*Q)}function d$({src:Z,onCancel:J,onSave:Q}){let X=W0(null),z=W0(null),[W,G]=k("rect"),[q,H]=k(p$[0]),[Y,F]=k([]),[K,w]=k(!1),P=W0(null),A=W0(!1),_=()=>{let O=X.current,N=z.current;if(!O||!N)return;N.width=O.clientWidth,N.height=O.clientHeight,V()},V=()=>{let O=z.current;if(!O)return;let N=O.getContext("2d");if(!N)return;N.clearRect(0,0,O.width,O.height);for(let L of Y)f1(N,L,1);if(P.current)f1(N,P.current,1)};l(V,[Y]),l(()=>{let O=()=>_();return window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[]);let D=(O)=>{let N=z.current.getBoundingClientRect();return{x:O.clientX-N.left,y:O.clientY-N.top}},v=async(O)=>{O.preventDefault();let N=D(O);if(W==="text"){let L=await Y9({title:"添加文字标注",placeholder:"输入文字…",confirmLabel:"添加"});if(L&&L.trim())F((B)=>[...B,{tool:"text",x1:N.x,y1:N.y,x2:N.x,y2:N.y,color:q,text:L.trim()}]);return}A.current=!0,P.current={tool:W,x1:N.x,y1:N.y,x2:N.x,y2:N.y,color:q},V()},R=(O)=>{if(!A.current||!P.current)return;let N=D(O);P.current={...P.current,x2:N.x,y2:N.y},V()},x=()=>{if(!A.current)return;A.current=!1;let O=P.current;if(P.current=null,O&&(Math.abs(O.x2-O.x1)>3||Math.abs(O.y2-O.y1)>3))F((N)=>[...N,O]);else V()},S=()=>{let O=X.current;if(!O)return;w(!0);let N=document.createElement("canvas");N.width=O.naturalWidth||O.clientWidth,N.height=O.naturalHeight||O.clientHeight;let L=N.getContext("2d");if(!L){w(!1);return}L.drawImage(O,0,0,N.width,N.height);let B=N.width/(z.current?.width||O.clientWidth||1);for(let M of Y)f1(L,M,B);N.toBlob((M)=>{if(w(!1),M)Q(M)},"image/png")};return $("div",{class:"annot",onMouseDown:(O)=>O.stopPropagation(),children:[$("div",{class:"annot-toolbar",children:[$("div",{class:"annot-tools",children:[$("button",{class:"annot-tool"+(W==="rect"?" on":""),title:"矩形框选",onClick:()=>G("rect"),children:$(f,{name:"square",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"annot-tool"+(W==="arrow"?" on":""),title:"箭头",onClick:()=>G("arrow"),children:$(f,{name:"arrowUpRight",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"annot-tool"+(W==="text"?" on":""),title:"文字",onClick:()=>G("text"),children:$(f,{name:"type",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"annot-colors",children:p$.map((O)=>$("button",{class:"annot-swatch"+(O===q?" on":""),style:{background:O},title:O,onClick:()=>H(O)},O,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"annot-actions",children:[$("button",{class:"annot-tool",title:"撤销",disabled:!Y.length,onClick:()=>F((O)=>O.slice(0,-1)),children:$(f,{name:"undo",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:J,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",disabled:K,onClick:S,children:K?"保存中…":"保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"annot-stage",children:$("div",{class:"annot-img-wrap",children:[$("img",{ref:X,src:Z,alt:"",draggable:!1,onLoad:_},void 0,!1,void 0,this),$("canvas",{ref:z,class:"annot-canvas tool-"+W,onMouseDown:(O)=>void v(O),onMouseMove:(O)=>R(O),onMouseUp:x,onMouseLeave:x},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var g1=0.2,b1=8;function j1({src:Z,name:J,onClose:Q,onReplace:X,draggableBar:z}){let[W,G]=k(1),[q,H]=k(0),[Y,F]=k(0),[K,w]=k(!1),P=W0(null),A=W0(null),_=()=>{G(1),H(0),F(0)};l(()=>{let v=(R)=>{if(R.key==="Escape")R.stopPropagation(),K?w(!1):Q();else if((R.key==="+"||R.key==="=")&&!K)G((x)=>Math.min(b1,x*1.2));else if(R.key==="-"&&!K)G((x)=>Math.max(g1,x/1.2));else if(R.key==="0"&&!K)_()};return document.addEventListener("keydown",v,!0),()=>document.removeEventListener("keydown",v,!0)},[K,Q]);let V=(v)=>{v.preventDefault();let R=P.current?.getBoundingClientRect(),x=R?v.clientX-R.left-R.width/2:0,S=R?v.clientY-R.top-R.height/2:0,O=v.deltaY<0?1.12:0.8928571428571428;G((N)=>{let L=Math.max(g1,Math.min(b1,N*O)),B=L/N;return H((M)=>x-(x-M)*B),F((M)=>S-(S-M)*B),L})},D=(v)=>{A.current={x:v.clientX,y:v.clientY,tx:q,ty:Y}};return l(()=>{let v=(x)=>{let S=A.current;if(!S)return;H(S.tx+(x.clientX-S.x)),F(S.ty+(x.clientY-S.y))},R=()=>{A.current=null};return window.addEventListener("mousemove",v),window.addEventListener("mouseup",R),()=>{window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",R)}},[]),$(o,{children:[$("div",{class:"lightbox-toolbar"+(z?" app-drag":""),onMouseDown:(v)=>v.stopPropagation(),children:[J&&$("span",{class:"lightbox-name",title:J,children:J},void 0,!1,void 0,this),$("span",{class:"lightbox-spacer"},void 0,!1,void 0,this),!K&&$(o,{children:[$("button",{title:"缩小",onClick:()=>G((v)=>Math.max(g1,v/1.2)),children:$(f,{name:"zoomOut",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"lightbox-pct",title:"重置",onClick:_,children:[Math.round(W*100),"%"]},void 0,!0,void 0,this),$("button",{title:"放大",onClick:()=>G((v)=>Math.min(b1,v*1.2)),children:$(f,{name:"zoomIn",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"标注 / 编辑",onClick:()=>{_(),w(!0)},children:$(f,{name:"pencil",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{title:"关闭",onClick:()=>K?w(!1):Q(),children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K?$(d$,{src:Z,onCancel:()=>w(!1),onSave:(v)=>{X(v),w(!1)}},void 0,!1,void 0,this):$("div",{ref:P,class:"lightbox-stage",onMouseDown:(v)=>{v.stopPropagation(),D(v)},onWheel:(v)=>V(v),children:$("img",{src:Z,alt:J??"",draggable:!1,style:{transform:`translate(${q}px, ${Y}px) scale(${W})`,cursor:W>1?"grab":"default"}},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function c$(Z){return $("div",{class:"lightbox",onMouseDown:()=>Z.onClose(),children:$(j1,{...Z},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function T0(Z,J,Q=null){for(let X=0;X<Z.length;X++){let z=Z[X];if(z.id===J)return{block:z,parent:Z,index:X,parentBlock:Q};let W=z.children?T0(z.children,J,z):null;if(W)return W}return null}function h1(Z){let J=0;for(let Q of Z)J+=1+h1(Q.children??[]);return J}function e8(Z){return{...Z,id:G9(),children:Z.children?.map(e8)}}function D1(Z,J){for(let Q of Z??[])if(Q.id===J||D1(Q.children,J))return!0;return!1}function tZ(Z){return Q9(Z.type)&&Z.content.trim()===""&&Z.children?.[0]?.type==="code"}function K9(Z,J=[]){for(let Q of Z)if(J.push(Q),Q.children)K9(Q.children,J);return J}function x9(Z,J){let Q=null,X=null,z=(W)=>{for(let G of W){if(G.id===J){X=Q;return}if(Q=G,G.children)z(G.children);if(X)return}};return z(Z),X}function sZ(Z,J){let Q=K9(Z),X=Q.findIndex((z)=>z.id===J);return X>=0&&X+1<Q.length?Q[X+1]:null}function eZ(Z,J){let Q=T0(Z,J);if(!Q)return null;let[X]=Q.parent.splice(Q.index,1);if(Q.parent.length===0&&Q.parentBlock)delete Q.parentBlock.children;return X??null}function i$(Z,J,Q,X){if(J===Q)return!1;let z=T0(Z,J),W=T0(Z,Q);if(!z||!W||D1(z.block.children,Q))return!1;let G=z.parent.splice(z.index,1)[0],q=T0(Z,Q);if(!q)return z.parent.splice(z.index,0,G),!1;if(z.parent.length===0&&z.parentBlock)delete z.parentBlock.children;return q.parent.splice(q.index+(X==="after"?1:0),0,G),!0}function x1(Z,J){let Q=T0(Z,J);if(!Q||Q.index===0)return!1;let X=Q.parent[Q.index-1];if(!Q9(X.type))return!1;let z=Q.parent.splice(Q.index,1)[0];return X.children??=[],X.children.push(z),!0}function m1(Z,J){let Q=T0(Z,J);if(!Q?.parentBlock)return!1;let X=T0(Z,Q.parentBlock.id);if(!X)return!1;let z=Q.parent.splice(Q.index);if(!z.length)return!1;if(Q.parent.length===0)delete Q.parentBlock.children;return X.parent.splice(X.index+1,0,...z),!0}function I9(Z,J){let Q=new Set(J),X=[],z=(W,G)=>{for(let q of W){let H=Q.has(q.id);if(H&&!G)X.push(q.id);if(q.children)z(q.children,G||H)}};return z(Z,!1),X}function u1(Z,J,Q,X={}){let W=T0(Z,J)?.block;if(!W)return!1;let G=Q9(Q)?W.children:void 0;if(v1(W,Q,X),G?.length)W.children=G;else delete W.children;return!0}function a$(Z,J,Q){let X=K9(Z),z=X.findIndex((H)=>H.id===J),W=X.findIndex((H)=>H.id===Q);if(z<0||W<0)return[];let[G,q]=z<=W?[z,W]:[W,z];return X.slice(G,q+1).map((H)=>H.id)}function n$(Z,J){if(!J.length)return null;let Q=new Set(J),X=K9(Z),z=X.findIndex((G)=>Q.has(G.id));if(z<0)return null;let W=null;for(let G=z-1;G>=0;G--)if(!Q.has(X[G].id)){W=X[G].id;break}if(!W){for(let G=z+1;G<X.length;G++)if(!Q.has(X[G].id)){W=X[G].id;break}}for(let G of I9(Z,J))eZ(Z,G);if(W&&!T0(Z,W))W=null;return W??K9(Z)[0]?.id??null}function l$(Z,J){let Q=I9(Z,J);if(!Q.length)return[];let X=[];for(let W of Q){let G=T0(Z,W);if(G)X.push(e8(G.block))}let z=T0(Z,Q[Q.length-1]);if(!z||!X.length)return[];return z.parent.splice(z.index+1,0,...X),X.map((W)=>W.id)}function r$(Z,J,Q,X){let z=I9(Z,J);if(!z.length||z.includes(Q))return!1;for(let q of z){let H=T0(Z,q);if(H&&D1(H.block.children,Q))return!1}let W=[];for(let q of z){let H=eZ(Z,q);if(H)W.push(H)}let G=T0(Z,Q);if(!G)return Z.push(...W),!1;return G.parent.splice(G.index+(X==="after"?1:0),0,...W),!0}function o$(Z,J){let Q=I9(Z,J).map((X)=>T0(Z,X)?.block).filter((X)=>!!X);return v$(Q)}function t$(Z,J){let Q=[];for(let X of I9(Z,J))if(x1(Z,X))Q.push(X);return Q}function s$(Z,J){let Q=[];for(let X of I9(Z,J))if(m1(Z,X))Q.push(X);return Q}function Z8(Z){return Z.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var e$=String.fromCharCode(57344),Z3=String.fromCharCode(57345),XG=new RegExp(e$+"(\\d+)"+Z3,"g");function J8(Z){let J=[],Q=Z.replace(/`([^`]+)`/g,(X,z)=>{return J.push(z),e$+(J.length-1)+Z3});return Q=Z8(Q),Q=Q.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g,(X,z,W)=>{return`<img src="${String(W).replace(/"/g,""")}" alt="${z}" class="doc-img" loading="lazy">`}),Q=Q.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(X,z,W)=>{return`<a href="${String(W).replace(/"/g,""")}" target="_blank" rel="noreferrer">${z}</a>`}),Q=Q.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),Q=Q.replace(/(^|[^*])\*([^*\n]+)\*/g,"$1<em>$2</em>"),Q=Q.replace(/\n/g,"<br>"),Q=Q.replace(XG,(X,z)=>`<code>${Z8(J[+z]??"")}</code>`),Q}function zZ(Z){let J=document.createElement("div");return J.innerHTML=Z,J3(J).replace(/\n{3,}/g,`
|
|
132
133
|
|
|
133
|
-
`).replace(/\n$/,"")}function
|
|
134
|
+
`).replace(/\n$/,"")}function J3(Z){let J="";return Z.childNodes.forEach((Q)=>{if(Q.nodeType===Node.TEXT_NODE){J+=(Q.textContent??"").replace(/\u00a0/g," ");return}if(!(Q instanceof HTMLElement))return;let X=Q.tagName.toLowerCase();if(X==="img"){let W=Q.getAttribute("src")||"";J+=W?``:"";return}let z=J3(Q);if(X==="br")J+=`
|
|
134
135
|
`;else if(X==="strong"||X==="b")J+=z?`**${z}**`:"";else if(X==="em"||X==="i")J+=z?`*${z}*`:"";else if(X==="code")J+=z?"`"+z+"`":"";else if(X==="a"){let W=Q.getAttribute("href")||"";J+=W?`[${z}](${W})`:z}else if(X==="div"||X==="p")J+=(J&&!J.endsWith(`
|
|
135
136
|
`)?`
|
|
136
|
-
`:"")+z;else J+=z}),J}function
|
|
137
|
+
`:"")+z;else J+=z}),J}function Q3(){return typeof CSS<"u"&&!!CSS.highlights&&typeof globalThis.Highlight==="function"}function Z6(Z){return/[A-Za-z0-9_]/.test(Z)}function zG(Z,J,Q){let X=Z[J]??"",z=Z[Q-1]??"",W=J>0?Z[J-1]:"",G=Q<Z.length?Z[Q]:"",q=!Z6(X)||!Z6(W),H=!Z6(z)||!Z6(G);return q&&H}function E1(Z,J,Q){let X=[];if(!J)return X;let z=Q.caseSensitive?Z:Z.toLowerCase(),W=Q.caseSensitive?J:J.toLowerCase(),G=0;for(;;){let q=z.indexOf(W,G);if(q<0)break;let H=q+W.length;if(!Q.wholeWord||zG(Z,q,H))X.push([q,H]);G=H>q?H:q+1}return X}function $3(Z,J,Q){for(let X=Z.length-1;X>=0;X--)if(Q>=J[X])return{node:Z[X],offset:Q-J[X]};return null}function X3(Z,J,Q){let X=[];if(!J)return X;let z=Array.from(Z.querySelectorAll(".doc-title, .editable, .doc-td, pre.code-hl > code.hljs"));for(let W of z){let G=[],q=document.createTreeWalker(W,NodeFilter.SHOW_TEXT),H;while(H=q.nextNode())G.push(H);if(!G.length)continue;let Y="",F=[];for(let K of G)F.push(Y.length),Y+=K.data;for(let[K,w]of E1(Y,J,Q)){let P=$3(G,F,K),A=$3(G,F,w);if(!P||!A)continue;let _=document.createRange();_.setStart(P.node,P.offset),_.setEnd(A.node,A.offset),X.push(_)}}return X}function z3(Z,J){if(!Q3())return;let Q=globalThis.Highlight,X=CSS.highlights;if(Z.length)X.set("mh-find-all",new Q(...Z));else X.delete("mh-find-all");if(J){let z=new Q(J);z.priority=1,X.set("mh-find-current",z)}else X.delete("mh-find-current")}function J6(){if(!Q3())return;let Z=CSS.highlights;Z.delete("mh-find-all"),Z.delete("mh-find-current")}function WG(Z,J){let Q;try{Q=J&&r8.getLanguage(J)?r8.highlight(Z,{language:J,ignoreIllegals:!0}).value:r8.highlightAuto(Z).value}catch{Q=Z8(Z)}return Z.endsWith(`
|
|
137
138
|
`)?Q+`
|
|
138
|
-
`:Q}function
|
|
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
|
-
`,
|
|
141
|
-
`,
|
|
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,
|
|
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(
|
|
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"));
|
|
139
|
+
`:Q}function GG(Z){return Z.replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/(\*|_)([^*_]+)\1/g,"$2").replace(/~~([^~]+)~~/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").trim()}function qG({blocks:Z}){let J=K9(Z).filter((G)=>vZ(G.type)).map((G)=>({id:G.id,level:Number(G.type.slice(1)),text:GG(G.content)||"无标题"})),[Q,X]=k(null),z=J.map((G)=>G.id).join("|");if(l(()=>{if(!J.length)return;let G=document.querySelector(".content"),q=0,H=()=>{let K=Math.max(G?G.getBoundingClientRect().top:0,0)+100,w=J[0].id;for(let P of J){let A=document.querySelector(`.block[data-bid="${P.id}"]`);if(!A)continue;if(A.getBoundingClientRect().top-K<=1)w=P.id;else break}X(w)},Y=()=>{if(q)return;q=requestAnimationFrame(()=>{q=0,H()})};H();let F=new IntersectionObserver(H,{root:G,rootMargin:"-90px 0px -70% 0px",threshold:[0,1]});for(let K of J){let w=document.querySelector(`.block[data-bid="${K.id}"]`);if(w)F.observe(w)}return G?.addEventListener("scroll",Y,{passive:!0}),window.addEventListener("scroll",Y,{passive:!0}),()=>{if(F.disconnect(),G?.removeEventListener("scroll",Y),window.removeEventListener("scroll",Y),q)cancelAnimationFrame(q)}},[z]),!J.length)return null;let W=(G)=>{document.querySelector(`.block[data-bid="${G}"]`)?.scrollIntoView({behavior:"smooth",block:"start"})};return $("nav",{class:"doc-toc","aria-label":"文档目录",children:J.map((G)=>$("button",{class:"toc-row lvl-"+G.level+(G.id===Q?" active":""),title:G.text,onClick:()=>W(G.id),children:[$("span",{class:"toc-tick"},void 0,!1,void 0,this),$("span",{class:"toc-label",children:G.text},void 0,!1,void 0,this)]},G.id,!0,void 0,this))},void 0,!1,void 0,this)}function W6({docId:Z,onError:J,onModeChange:Q,onHandle:X}){let z=W0([]),W=W0(""),G=W0(null),q=W0(""),H=BZ(),[Y,F]=k("blocks"),[K,w]=k(0),[P,A]=k(!0),[_,V]=k(null),D=W0(null),[v,R]=k(null),[x,S]=k(null),[O,N]=k(null),L=W0(O);L.current=O;let[B,M]=k(null),y=W0(),E=W0(null),c=W0(!1),r=W0(0),$0=W0(Promise.resolve()),[m,g]=k(!1),u=W0(null),[I,n]=k(null),[Z0,q0]=k(0),[Q0,J0]=k(0),B0=W0(0),p0=W0([]),i0=W0([]),m0=W0({past:[],future:[],present:null,lastKey:null,lastTime:0}),d0=()=>({blocks:structuredClone(z.current),title:q.current,focusId:G3()}),g0=(U)=>{let C=m0.current;if(!C.present){C.present=d0(),C.lastKey=U,C.lastTime=Date.now();return}let j=Date.now();if(U&&U===C.lastKey&&j-C.lastTime<600){C.present=d0(),C.lastTime=j;return}if(C.past.push(C.present),C.past.length>200)C.past.shift();C.present=d0(),C.future=[],C.lastKey=U,C.lastTime=j},h0=(U)=>{if(z.current=structuredClone(U.blocks),q.current=U.title,S(null),N(null),w((C)=>C+1),Y0(),U.focusId)requestAnimationFrame(()=>x0(U.focusId,!0))},_0=()=>{let U=m0.current;if(!U.past.length)return;if(U.present)U.future.push(U.present);let C=U.past.pop();U.present=C,U.lastKey=null,h0(C)},a0=()=>{let U=m0.current;if(!U.future.length)return;if(U.present)U.past.push(U.present);let C=U.future.pop();U.present=C,U.lastKey=null,h0(C)},O0=()=>{g0(null),w((U)=>U+1)},u0=()=>{A(!0),V(null),g(!1),m0.current={past:[],future:[],present:null,lastKey:null,lastTime:0},a.getDocument(Z).then((U)=>{q.current=U.title??"",W.current=U.body??"",z.current=rZ(U.body),E.current=U.version??null,c.current=!1,A(!1),O0()}).catch((U)=>J(String(U.message)))};l(()=>{return u0(),()=>clearTimeout(y.current)},[Z]),l(()=>{let U=(C)=>{if(!c.current)return;C.preventDefault(),C.returnValue=""};return window.addEventListener("beforeunload",U),()=>window.removeEventListener("beforeunload",U)},[]),l(()=>{let U=(C)=>{if(!C.detail?.datasets?.some((b)=>b==="documents"||b==="doc_blocks"))return;(async()=>{try{if(c.current)await w0();let b=await a.getDocument(Z);if(b.version!=null&&b.version===E.current)return;let d=G3(),G0=d?K9(z.current).findIndex((U0)=>U0.id===d):-1,P0=d?Q6(d):null;if(q.current=b.title??"",W.current=b.body??"",z.current=rZ(b.body),E.current=b.version??null,c.current=!1,g(!1),w((U0)=>U0+1),G0>=0)requestAnimationFrame(()=>{let U0=K9(z.current),b0=U0[Math.min(G0,U0.length-1)];if(b0)X6(b0.id,P0??0)});s("已合并其他设备的修改")}catch{}})()};return document.addEventListener(t9,U),()=>document.removeEventListener(t9,U)},[Z]);let Y0=()=>{c.current=!0,clearTimeout(y.current),y.current=setTimeout(l0,700)},r0=()=>{if(Y==="source")return W.current=G.current?.value??W.current,W.current;return WZ(z.current),R$(z.current)},K0=(U={})=>a.updateDocument(Z,{title:q.current,body:r0(),...U.force||E.current==null||e0()?{}:{if_match:E.current}}).then((C)=>{E.current=C.version??null,c.current=!1,r.current=0,g(!1)}).catch((C)=>{if(C instanceof f9&&C.code==="stale"){g(!0);return}J(String(C.message)),r.current=Math.min(Math.max(r.current*2,1000),30000),clearTimeout(y.current),y.current=setTimeout(l0,r.current)}),l0=(U={})=>$0.current=$0.current.then(()=>K0(U)),w0=async()=>{clearTimeout(y.current),await l0()},h=(U)=>{if(U===Y)return;if(U==="source"){W.current=r0(),V(null),R(null),S(null),F("source"),Q?.("source"),requestAnimationFrame(()=>{if(G.current)G.current.value=W.current,Y3(G.current),G.current.focus()});return}W.current=G.current?.value??W.current,z.current=rZ(W.current),F("blocks"),Q?.("blocks"),w((C)=>C+1),requestAnimationFrame(()=>{let C=K9(z.current)[0];if(C)x0(C.id)})};l(()=>{return X?.({getMode:()=>Y,setMode:h,snapshotMarkdown:r0,flushSave:w0,reload:u0}),()=>X?.(null)},[X,Y]);let T=z.current,p=x?a$(T,x.anchorId,x.focusId):[],i=(U,C="p",j={})=>{let b=D9(C,j);if(!U)T.push(b);else{let d=T0(T,U);if(d)d.parent.splice(d.index+1,0,b);else T.push(b)}return O0(),requestAnimationFrame(()=>x0(b.id)),Y0(),b},F0=(U,C=!1)=>{let j=U;while(j&&tZ(j))j=j.children?.[0]??null;if(j)x0(j.id,C)},t=(U="p",C={})=>{let j=D9(U,C);return T.unshift(j),O0(),requestAnimationFrame(()=>x0(j.id)),Y0(),j},e=()=>{let U=document.querySelector(".doc-title");if(!U)return;U.focus();let C=document.createRange();C.selectNodeContents(U),C.collapse(!1);let j=getSelection();j?.removeAllRanges(),j?.addRange(C)},X0=(U,C,j={})=>{let b=T0(T,U)?.block;if(!b)return;let d=j.content===void 0||j.content===b.content?Q6(U):null;if(!u1(T,U,C,j))return;if(O0(),C!=="divider"&&C!=="table")requestAnimationFrame(()=>d!=null?X6(U,d):x0(U));Y0()},L0=(U)=>{if(!eZ(T,U))return;O0(),Y0()},v0=(U,C)=>{U.content=$8(U,C),g0("text:"+U.id);let j=C.textContent??"";if(j.startsWith("/")){let b=yG();V((d)=>({blockId:U.id,x:b.x,y:b.y,query:j.slice(1),idx:d?.blockId===U.id?d.idx:0}))}else if(_)V(null);Y0()},V0=(U,C,j)=>{let b=W3(U.clipboardData);if(b.length){U.preventDefault(),c3(C,j,b);return}let d=U.clipboardData?.getData("text/html"),P0=(d?C$(d):U.clipboardData?.getData("text/plain")??"").replace(/\r\n?/g,`
|
|
140
|
+
`);if(!P0.trim())return;U.preventDefault();let U0=rZ(P0);if(!U0.length)return;let b0=T0(T,C.id);if(!b0)return;let{before:X9,after:C9}=z6(j);if(U0.length===1&&U0[0].type==="p"&&(X9.trim()!==""||C9.trim()!=="")){C.content=X9+U0[0].content+C9;let c9=H3(X9+U0[0].content);O0(),Y0(),requestAnimationFrame(()=>i1(C.id,c9));return}let p9=[...U0],d9=C9.trim()!==""?D9("p",{content:C9}):null;if(d9)p9.push(d9);if(X9.trim()===""&&!b0.block.children?.length)b0.parent.splice(b0.index,1,...p9);else C.content=X9,b0.parent.splice(b0.index+1,0,...p9);O0(),Y0();let U8=d9??p9[p9.length-1];requestAnimationFrame(()=>x0(U8.id,!d9))},F6=(U)=>{let C=[];for(let j of U){let b=O5[_1(j.type)];if(j.size>b)s(`${j.name||"文件"} 超过 ${Math.round(b/1024/1024)}MB 上限`);else C.push(j)}return C},U6=(U,C)=>{let j=M5(U.name||"文件"),b=_1(U.type);a.uploadDocBlob(U,(d,G0)=>C5(j,d,G0)).then((d)=>{let G0=D9(b,{src:d.url,name:U.name||void 0,size:b==="file"?d.size:void 0}),P0=T0(z.current,C);if(P0)P0.parent.splice(P0.index,1,G0);else z.current.push(G0);d6(j,!0)}).catch((d)=>{eZ(z.current,C),d6(j,!1,()=>IZ([U],{mode:"append"})),s(`上传失败:${d.message}`)}).finally(()=>{O0(),Y0()})},IZ=(U,C)=>{let j=F6(U);if(!j.length)return;let b=j.map((d)=>D9("uploading",{name:d.name||void 0}));if(C.mode==="caret"){let d=T0(z.current,C.block.id);if(!d)return;let{before:G0,after:P0}=z6(C.el),U0=[...b];if(P0.trim()!=="")U0.push(D9("p",{content:P0}));if(G0.trim()===""&&!d.block.children?.length)d.parent.splice(d.index,1,...U0);else C.block.content=G0,d.parent.splice(d.index+1,0,...U0)}else if(C.mode==="at"){let d=T0(z.current,C.targetId);if(!d)return;d.parent.splice(d.index+(C.where==="after"?1:0),0,...b)}else if(C.mode==="append")z.current.push(...b);else{let d=T0(z.current,C.blockId);if(!d)z.current.push(...b);else if(d.block.type==="p"&&!d.block.content.trim()&&!d.block.children?.length)d.parent.splice(d.index,1,...b);else d.parent.splice(d.index+1,0,...b)}O0(),Y0(),j.forEach((d,G0)=>U6(d,b[G0].id))},c3=(U,C,j)=>IZ(j,{mode:"caret",block:U,el:C}),i3=(U,C,j)=>IZ(j,{mode:"at",targetId:U,where:C}),a3=(U)=>IZ(U,{mode:"append"}),n3=(U,C)=>{let j=document.createElement("input");j.type="file",j.multiple=!0,j.accept=U==="image"?"image/*":U==="video"?"video/*":U==="audio"?"audio/*":"",j.onchange=()=>{let b=Array.from(j.files??[]);if(b.length)IZ(b,{mode:"slot",blockId:C})},j.click()},XJ=(U,C)=>{let j=T0(T,U);if(!j)return;if(Object.assign(j.block,C),"width"in C&&!C.width)delete j.block.width;g0("void:"+U),O0(),Y0()},l3=(U,C)=>{if(U.target.closest("textarea, input, select, video, audio"))return;if(U.key==="Backspace"||U.key==="Delete"){U.preventDefault();let j=x9(T,C.id),b=sZ(T,C.id);L0(C.id),requestAnimationFrame(()=>j?x0(j.id,!0):b?x0(b.id):void 0)}else if(U.key==="Enter")U.preventDefault(),i(C.id);else if(U.key==="ArrowUp"){let j=x9(T,C.id);if(j)U.preventDefault(),x0(j.id,!0)}else if(U.key==="ArrowDown"){let j=sZ(T,C.id);if(j)U.preventDefault(),x0(j.id)}},r3=async(U,C)=>{try{let j=await a.uploadDocBlob(new File([C],"annotated.png",{type:"image/png"}));XJ(U,{src:j.url}),M((b)=>b&&b.id===U?{...b,src:j.url}:b)}catch(j){s(`保存失败:${j.message}`)}},o3=(U)=>{let C=U.src??"";if(typeof window<"u"&&window.metahubDesktop?.preview)window.metahubDesktop.preview.open({src:C,name:U.name,blockId:U.id});else M({id:U.id,src:C,name:U.name})};l(()=>{let U=null;try{U=new BroadcastChannel("mh-doc-image")}catch{return}return U.onmessage=(C)=>{let j=C.data;if(!j||j.action!=="replace"||!j.blockId||!j.url)return;let b=T0(z.current,j.blockId);if(!b)return;b.block.src=j.url,O0(),Y0()},()=>U?.close()},[]);let K8=_?I1.filter((U)=>(U.t+U.type+U.d).toLowerCase().includes(_.query.toLowerCase())):[],zJ=(U)=>{if(!_)return;let C=_.blockId;if(V(null),oZ(U.type))n3(U.type,C);else X0(C,U.type)},WJ=(U,C)=>{X0(U.id,C.type,C),V(null)},t3=(U,C)=>{U.content="",U.children??=[];let j=D9(C.type,C);U.children.unshift(j),V(null),O0(),requestAnimationFrame(()=>x0(j.id)),Y0()},s3=(U)=>{WZ(T);let C=Q6(U);if(!x1(T,U))return;O0(),requestAnimationFrame(()=>C!=null?X6(U,C):x0(U)),Y0()},GJ=(U)=>{WZ(T);let C=Q6(U);if(!m1(T,U))return;O0(),requestAnimationFrame(()=>C!=null?X6(U,C):x0(U)),Y0()},e3=async(U)=>{if(U==="createLink"){let C=getSelection(),j=C&&C.rangeCount?C.getRangeAt(0).cloneRange():null;if(!j||j.collapsed)return;R(null);let b=(await Y9({title:"插入链接",label:"链接地址",placeholder:"https://…"}))?.trim();if(!b)return;j.startContainer.parentElement?.closest?.(".editable")?.focus();let G0=getSelection();G0?.removeAllRanges(),G0?.addRange(j),document.execCommand("createLink",!1,b)}else if(U==="code")OG();else document.execCommand(U,!1,void 0);wG(T),Y0(),p1(R)},HZ=()=>S(null),qJ=()=>{let U=K9(T);if(!U.length)return;$6(),S({anchorId:U[0].id,focusId:U[U.length-1].id})},L6=(U)=>{WZ(T);let C=n$(T,U);if(HZ(),O0(),C)requestAnimationFrame(()=>x0(C,!0));Y0()},Z2=(U,C)=>{if(WZ(T),!(C==="indent"?t$(T,U):s$(T,U)).length)return;O0(),Y0()},HJ=(U)=>{WZ(T);let C=l$(T,U);if(C.length)S({anchorId:C[0],focusId:C[C.length-1]});O0(),Y0()},J2=(U)=>{let C=o$(T,U);if(C)navigator.clipboard?.writeText(C).catch(()=>{})},$2=(U,C)=>{WZ(T);let j=!1;for(let b of I9(T,U)){let d=T0(T,b)?.block;if(!d||oZ(d.type)||d.type==="uploading")continue;if(u1(T,b,C,{content:d.content}))j=!0}if(!j)return;O0(),Y0()},YJ=(U)=>{if(U.target?.closest?.(".doc-source"))return;let j=U.metaKey||U.ctrlKey;if(j&&(U.key==="z"||U.key==="Z")){if(U.preventDefault(),U.shiftKey)a0();else _0();return}if(j&&U.key==="y"){U.preventDefault(),a0();return}if(L.current)return;if(!x)return;let b=p;if(!b.length)return;if(U.key==="Escape"){U.preventDefault();let d=x.anchorId;HZ(),x0(d,!0);return}if(U.key==="Tab"){U.preventDefault(),Z2(b,U.shiftKey?"outdent":"indent");return}if(U.key==="Backspace"||U.key==="Delete"){U.preventDefault(),L6(b);return}if(j&&U.key==="d"){U.preventDefault(),HJ(b);return}if(j&&(U.key==="c"||U.key==="x")){if(U.preventDefault(),J2(b),U.key==="x")L6(b);return}if(j&&U.key==="a"){U.preventDefault(),qJ();return}if(U.key==="ArrowDown"||U.key==="ArrowUp"){U.preventDefault();let d=K9(T),G0=d.findIndex((P0)=>P0.id===x.focusId);if(G0<0)return;if(U.shiftKey){let P0=U.key==="ArrowDown"?Math.min(G0+1,d.length-1):Math.max(G0-1,0);S({anchorId:x.anchorId,focusId:d[P0].id})}else{let P0=U.key==="ArrowDown"?b[b.length-1]:b[0];HZ(),x0(P0,U.key==="ArrowDown")}return}if(U.key.length===1&&!j){let d=b[b.length-1];HZ(),x0(d,!0)}},F8=W0(null),Q2=(U)=>{if(U.button!==0)return;let C=U.target;if(C.closest(".gutter")||C.closest(".pop")||C.closest(".doc-col-resizer")||C.closest("input, button, select, a")||C.closest("video, audio, iframe, textarea, .img-handle"))return;let b=NG(U.target)?.getAttribute("data-bid")??null;if(!b){let G0=C.classList.contains("doc")?C:null;if(Y==="blocks"&&G0){let P0=G0.querySelectorAll(".block"),U0=P0.length?P0[P0.length-1]:G0.querySelector(".doc-meta"),b0=U0?U0.getBoundingClientRect().bottom:0;if(U.clientY>b0){U.preventDefault();let X9=T[T.length-1];if(X9&&j9(X9))x0(X9.id,!0);else i(null);return}}HZ();return}if(U.shiftKey&&x){U.preventDefault(),$6(),S({anchorId:x.anchorId,focusId:b});return}if(!!C.closest(".editable, .code-input, .doc-td")){if(F8.current={anchorId:b,started:!1,sx:U.clientX,sy:U.clientY,mode:"text"},x)HZ()}else U.preventDefault(),$6(),S({anchorId:b,focusId:b}),F8.current={anchorId:b,started:!0,sx:U.clientX,sy:U.clientY,mode:"block"}};l(()=>{let U=(j)=>{let b=F8.current;if(!b)return;let G0=document.elementFromPoint(j.clientX,j.clientY)?.closest(".block[data-bid]")?.getAttribute("data-bid")??null;if(b.mode==="text"){if(G0&&G0!==b.anchorId)b.mode="block",$6(),S({anchorId:b.anchorId,focusId:G0});return}if(!b.started&&Math.abs(j.clientX-b.sx)+Math.abs(j.clientY-b.sy)<4)return;if(b.started=!0,c1(!0),G0)S({anchorId:b.anchorId,focusId:G0})},C=()=>{F8.current=null,c1(!1)};return window.addEventListener("mousemove",U),window.addEventListener("mouseup",C),()=>{window.removeEventListener("mousemove",U),window.removeEventListener("mouseup",C)}},[]);let KJ=W0(YJ);KJ.current=YJ,l(()=>{let U=(C)=>KJ.current(C);return document.addEventListener("keydown",U,!0),()=>document.removeEventListener("keydown",U,!0)},[]);let FJ=(U,C,j)=>document.querySelector(`.block[data-bid="${U}"] .doc-td[data-r="${C}"][data-c="${j}"]`),X2=(U,C,j)=>{N(null),requestAnimationFrame(()=>{let b=FJ(U,C,j);if(!b)return;b.focus();let d=document.createRange();d.selectNodeContents(b),d.collapse(!1);let G0=getSelection();G0?.removeAllRanges(),G0?.addRange(d)})},z2=(U)=>{let C=document.querySelector(`.block[data-bid="${U}"] table.doc-table`);if(!C)return;C.classList.remove("copied"),C.offsetWidth,C.classList.add("copied"),setTimeout(()=>C.classList.remove("copied"),260)};l(()=>{if(!O)return;let U=(C)=>{let j=L.current;if(!j)return;let b=document.activeElement;if(b?.isContentEditable||b?.tagName==="INPUT"||b?.tagName==="TEXTAREA")return;let d=T0(z.current,j.blockId)?.block,G0=d?.rows;if(!G0)return;let P0=G0.length,U0=G0[0]?.length??0,b0=$Z(j.sel),{r:X9,c:C9}=j.sel.b,p9=j.sel.a.r===j.sel.b.r&&j.sel.a.c===j.sel.b.c,d9=(c9,SZ)=>Math.max(0,Math.min(SZ,c9)),U8={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]};if(C.key in U8){C.preventDefault();let[c9,SZ]=U8[C.key],i9={r:d9(X9+c9,P0-1),c:d9(C9+SZ,U0-1)};N({blockId:j.blockId,sel:C.shiftKey?{a:j.sel.a,b:i9}:{a:i9,b:i9}}),requestAnimationFrame(()=>FJ(j.blockId,i9.r,i9.c)?.scrollIntoView({block:"nearest",inline:"nearest"}))}else if((C.metaKey||C.ctrlKey)&&C.key.toLowerCase()==="c")C.preventDefault(),navigator.clipboard?.writeText(p5(G0,b0)).catch(()=>{}),z2(j.blockId);else if(C.key==="Escape")N(null);else if(C.key==="Delete"||C.key==="Backspace")C.preventDefault(),d.rows=G0.map((c9,SZ)=>c9.map((i9,U2)=>x8(b0,SZ,U2)?"":i9)),O0(),Y0();else if(p9&&(C.key==="Enter"||C.key==="F2"))C.preventDefault(),X2(j.blockId,X9,C9)};return addEventListener("keydown",U),()=>removeEventListener("keydown",U)},[O]),l(()=>{if(!O)return;let U=(C)=>{if(!C.target?.closest?.(`.block[data-bid="${O.blockId}"]`))N(null)};return addEventListener("pointerdown",U,!0),()=>removeEventListener("pointerdown",U,!0)},[O]),l(()=>{if(!_)return;D.current?.querySelector(".item.sel")?.scrollIntoView({block:"nearest"})},[_?.idx,_?.blockId]),l(()=>{if(!_)return;let U=()=>V(null);return document.addEventListener("focusout",U),()=>document.removeEventListener("focusout",U)},[!!_]);let W2=(U,C,j)=>{if(U.isComposing||U.keyCode===229)return;if(_&&_.blockId===C.id){if(U.key==="ArrowDown"){U.preventDefault(),V({..._,idx:Math.min(_.idx+1,K8.length-1)});return}if(U.key==="ArrowUp"){U.preventDefault(),V({..._,idx:Math.max(_.idx-1,0)});return}if(U.key==="Enter"){U.preventDefault();let b=K8[_.idx];if(b)zJ(b);return}if(U.key==="Escape"){V(null);return}}if((U.metaKey||U.ctrlKey)&&(U.key==="a"||U.key==="A")){if(_G(j))U.preventDefault(),qJ();return}if(U.key==="Tab"){U.preventDefault(),(U.shiftKey?GJ:s3)(C.id);return}if((U.key==="ArrowUp"||U.key==="ArrowDown")&&!U.shiftKey&&!d1()){let b=q3(j);if(U.key==="ArrowUp"&&b.first){U.preventDefault();let d=x9(T,C.id);if(d)F0(d,!0);else e();return}else if(U.key==="ArrowDown"&&b.last){let d=sZ(T,C.id);if(d){U.preventDefault(),F0(d);return}}}if(U.key===" "&&!d1()&&(C.type==="p"||vZ(C.type)||C.type==="bullet")){let{before:b,after:d}=z6(j);if(C.type==="p"||vZ(C.type)){let G0=T1(b+" "," ");if(G0&&(C.type==="p"||vZ(G0.type))){U.preventDefault(),WJ(C,{...G0,content:d});return}}else{let G0=I$(b);if(G0){U.preventDefault(),X0(C.id,"todo",{content:d,checked:G0.checked});return}}}if(U.key==="Enter"&&!U.shiftKey&&C.type!=="code"){let b=T1((j.textContent??"").trim(),"Enter");if(b){if(U.preventDefault(),Q9(C.type)&&b.type==="code"){t3(C,b);return}WJ(C,b);return}U.preventDefault();let d=(j.textContent??"").trim()==="";if(Q9(C.type)&&d&&!(C.children??[]).length){X0(C.id,"p");return}let{before:G0,after:P0}=z6(j);C.content=G0,i(C.id,Q9(C.type)?C.type:"p",{content:P0})}else if(U.key==="Backspace"){if((j.textContent??"")==="")if(U.preventDefault(),C.type!=="p")X0(C.id,"p");else{let b=x9(T,C.id);if(b)L0(C.id),requestAnimationFrame(()=>x0(b.id,!0))}else if(!d1()&&CG(j))if(Q9(C.type))U.preventDefault(),X0(C.id,"p",{content:$8(C,j)});else{let b=x9(T,C.id);if(b&&b.type!=="code"&&b.type!=="table"&&b.type!=="divider"){U.preventDefault();let d=H3(b.content);b.content+=$8(C,j),L0(C.id),requestAnimationFrame(()=>{let G0=document.querySelector(`.block[data-bid="${b.id}"] .editable`);if(G0){let P0=J8(b.content);if(G0.innerHTML!==P0)G0.innerHTML=P0}i1(b.id,d)})}}}},G2=(U,C,j)=>{if(U.isComposing||U.keyCode===229)return;let{value:b,selectionStart:d,selectionEnd:G0}=j;if(U.key==="Tab"){if(U.preventDefault(),U.shiftKey){GJ(C.id);return}document.execCommand("insertText",!1," ");return}if(U.key==="ArrowDown"&&d===G0&&b.indexOf(`
|
|
141
|
+
`,d)===-1){U.preventDefault();let P0=sZ(T,C.id);if(P0){F0(P0);return}let U0=T0(T,C.id)?.parentBlock;if(U0&&tZ(U0)&&U0.children?.[0]?.id===C.id)i(U0.id,"p");else i(C.id,"p");return}if(U.key==="ArrowUp"&&d===G0&&b.lastIndexOf(`
|
|
142
|
+
`,d-1)===-1){U.preventDefault();let P0=T0(T,C.id)?.parentBlock,U0=P0&&tZ(P0)&&P0.children?.[0]?.id===C.id?x9(T,P0.id):x9(T,C.id);if(U0)F0(U0,!0);else e();return}if(U.key==="Backspace"&&b===""){U.preventDefault();let P0=T0(T,C.id),U0=P0?.parentBlock;if(P0&&U0&&Q9(U0.type)&&U0.content.trim()===""){if(P0.parent.splice(P0.index,1),P0.parent.length===0)delete U0.children;O0(),requestAnimationFrame(()=>x0(U0.id)),Y0();return}X0(C.id,"p")}},q2=(U,C)=>{U.stopPropagation();let j=p,b=j.length>1&&j.includes(C.id),d=b?I9(T,j).length:1,G0=b||!oZ(C.type)&&C.type!=="uploading";y0(U,(P0)=>$(o,{children:[G0&&$(o,{children:[$(j0,{children:b?`转换为(${d} 个块)`:"转换为"},void 0,!1,void 0,this),I1.filter((U0)=>U0.type!=="divider"&&!oZ(U0.type)&&(!b||U0.type!=="table")).map((U0)=>$(z0,{icon:U0.ic,label:U0.t,checked:!b&&C.type===U0.type,onClick:()=>{b?$2(j,U0.type):X0(C.id,U0.type,{content:C.content}),P0()}},U0.type,!1,void 0,this)),$(S0,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(z0,{icon:"copy",label:b?"复制块组":"复制块",onClick:()=>{if(b)HJ(j);else{let U0=T0(T,C.id);if(U0)U0.parent.splice(U0.index+1,0,e8(C));O0(),Y0()}P0()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:b?"删除块组":"删除块",danger:!0,onClick:()=>{if(b)L6(j);else L0(C.id);P0()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},P6=W0(null),H2=(U)=>{let C=U.parentElement;while(C){let j=getComputedStyle(C).overflowY;if((j==="auto"||j==="scroll")&&C.scrollHeight>C.clientHeight)return C;C=C.parentElement}return null},UJ=(U)=>{if(Y==="source"){let C=G.current,j=i0.current[U];if(!C||!j)return;C.setSelectionRange(j[0],j[1]);let b=C.value.slice(0,j[0]).split(`
|
|
143
|
+
`).length-1,d=getComputedStyle(C),G0=parseFloat(d.lineHeight)||20,P0=(parseFloat(d.paddingTop)||0)+b*G0,U0=H2(C);if(U0){let b0=C.getBoundingClientRect().top-U0.getBoundingClientRect().top+U0.scrollTop;U0.scrollTo({top:Math.max(0,b0+P0-U0.clientHeight/2),behavior:"smooth"})}else{let b0=C.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:Math.max(0,b0+P0-innerHeight/2),behavior:"smooth"})}}else{let C=p0.current,j=C[U]??null;if(z3(C,j),j){let b=j.startContainer;(b.nodeType===3?b.parentElement:b)?.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"})}}};l(()=>{if(!I){J6(),p0.current=[],i0.current=[],J0(0);return}let U={caseSensitive:I.caseSensitive,wholeWord:I.wholeWord},C=setTimeout(()=>{let j;if(Y==="source"){let d=G.current?.value??W.current;i0.current=E1(d,I.term,U),p0.current=[],J6(),j=i0.current.length}else{let d=u.current;p0.current=d?X3(d,I.term,U):[],i0.current=[],j=p0.current.length}let b=j?Math.min(B0.current,j-1):0;B0.current=b,q0(b),J0(j),UJ(b)},110);return()=>clearTimeout(C)},[I,K,Y]),l(()=>()=>J6(),[]),l(()=>{let U=(C)=>{if((C.metaKey||C.ctrlKey)&&!C.altKey&&C.key.toLowerCase()==="f")C.preventDefault(),n((j)=>j??{term:"",caseSensitive:!1,wholeWord:!1}),requestAnimationFrame(()=>{let j=u.current?.parentElement?.querySelector(".find-bar input")??document.querySelector(".find-bar input");j?.focus(),j?.select()})};return window.addEventListener("keydown",U),()=>window.removeEventListener("keydown",U)},[]);let Y2=(U)=>{let C=Y==="source"?i0.current.length:p0.current.length;if(!C)return;let j=(B0.current+U+C)%C;B0.current=j,q0(j),UJ(j)},K2=()=>n(null);if(P)return $("div",{class:"empty",children:"加载中…"},void 0,!1,void 0,this);let F2=new Set(p),LJ=(U,C=0)=>{let j=s8(U.filter((b)=>!j9(b)));return U.map((b)=>$(HG,{renderKey:K,block:b,depth:C,selected:F2.has(b.id),number:b.type==="numbered"?j.get(b.id)??1:0,onInput:(d)=>v0(b,d),onPaste:(d,G0)=>V0(d,b,G0),onLangInput:(d)=>{b.lang=d,O0(),Y0()},onKeyDown:(d,G0)=>W2(d,b,G0),onCodeInput:(d)=>{b.content=d,g0("text:"+b.id),Y0()},onCodeKeyDown:(d,G0)=>G2(d,b,G0),onCellInput:(d,G0,P0)=>{if(!b.rows?.[d])return;b.rows[d][G0]=P0,g0("table:"+b.id+":"+d+":"+G0),Y0()},onTableChange:()=>{O0(),Y0()},cellSel:O?.blockId===b.id?O.sel:null,onCellSel:(d)=>N(d?{blockId:b.id,sel:d}:null),onAdd:()=>i(b.id),onMenu:(d)=>q2(d,b),onToggle:()=>{b.checked=!b.checked,O0(),Y0()},onVoidChange:(d)=>XJ(b.id,d),onVoidKey:(d)=>l3(d,b),onPreview:()=>o3(b),dragRef:P6,onReorder:(d,G0)=>{let P0=p;if(P0.length>1&&P0.includes(d)?r$(T,P0,b.id,G0):i$(T,d,b.id,G0))O0(),Y0()},children:b.children?.length?LJ(b.children,C+1):null},b.id,!1,void 0,this))};return $(o,{children:[Y==="blocks"&&$(qG,{blocks:T},K,!1,void 0,this),I&&$(PG,{term:I.term,caseSensitive:I.caseSensitive,wholeWord:I.wholeWord,idx:Z0,total:Q0,onTerm:(U)=>{B0.current=0,n((C)=>C?{...C,term:U}:C)},onToggleCase:()=>n((U)=>U?{...U,caseSensitive:!U.caseSensitive}:U),onToggleWord:()=>n((U)=>U?{...U,wholeWord:!U.wholeWord}:U),onStep:Y2,onClose:K2},void 0,!1,void 0,this),$("div",{ref:u,class:"doc"+(Y==="source"?" source-mode":""),onMouseDown:(U)=>Q2(U),onMouseUp:()=>p1(R),onKeyUp:(U)=>{if(U.shiftKey||U.key.startsWith("Arrow"))p1(R)},onDragOver:(U)=>{if(P6.current||Y==="source")return;if(!Array.from(U.dataTransfer?.items??[]).some((j)=>j.kind==="file"))return;if(U.preventDefault(),U.dataTransfer)U.dataTransfer.dropEffect="copy";let C=K3(u.current,U.clientY);if(C)U3(C,U);else TZ()},onDragLeave:(U)=>{if(!U.relatedTarget||!u.current?.contains(U.relatedTarget))TZ()},onDrop:(U)=>{if(P6.current||Y==="source")return;let C=W3(U.dataTransfer);if(!C.length)return;U.preventDefault();let j=K3(u.current,U.clientY);if(j?.dataset.bid){let b=I8(j,U,"y");TZ(),i3(j.dataset.bid,b,C)}else TZ(),a3(C)},children:[m&&$("div",{class:"doc-conflict",role:"alert",children:[$("span",{class:"doc-conflict-msg",children:"文档已被其他端修改,自动保存已暂停。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>u0(),children:"载入最新(弃本地改动)"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>void l0({force:!0}),children:"用本地版本覆盖"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"doc-title",contentEditable:!0,onInput:(U)=>{q.current=U.target.textContent??"",g0("title"),Y0()},onKeyDown:(U)=>{if(U.isComposing||U.keyCode===229)return;if(U.key==="Enter"){U.preventDefault();let C=T[0];if(C&&j9(C))x0(C.id);else t("p");return}if(U.key==="ArrowDown"&&q3(U.currentTarget).last&&T[0])U.preventDefault(),F0(T[0])},dangerouslySetInnerHTML:{__html:q.current}},void 0,!1,void 0,this),$("div",{class:"doc-meta",children:[$("span",{children:[$(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this),h1(T)," 个块"]},void 0,!0,void 0,this),$("span",{children:"实时同步"},void 0,!1,void 0,this),H.has(Z)&&$("button",{class:"doc-shared",title:"已分享 · 管理分享",onClick:()=>N9({kind:"doc",ref:Z,title:q.current}),children:[$(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),"已分享"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y==="source"?$("textarea",{ref:G,class:"doc-source",spellcheck:!1,defaultValue:W.current,onInput:(U)=>{let C=U.currentTarget;W.current=C.value,Y3(C),Y0()}},void 0,!1,void 0,this):LJ(T),Y==="blocks"&&T.length===0&&$("div",{class:"editable",style:{color:"var(--muted)",cursor:"text"},onClick:()=>i(null),children:"点此书写,或输入 “/” 选择块类型…"},void 0,!1,void 0,this),_&&K8.length>0&&(()=>{let j=innerHeight-(_.y+22)-8,b=_.y-8,d=j>=240||j>=b,G0=Math.min(_.x,innerWidth-270),P0=Math.min(d?j:b,Math.round(innerHeight*0.7)),U0=d?{left:G0,top:_.y+22,maxHeight:P0,minWidth:260}:{left:G0,bottom:innerHeight-_.y+6,maxHeight:P0,minWidth:260};return $("div",{class:"pop",style:U0,ref:D,children:[$(j0,{children:"基础块"},void 0,!1,void 0,this),K8.map((b0,X9)=>$("button",{class:"item"+(X9===_.idx?" sel":""),onMouseDown:(C9)=>{C9.preventDefault(),zJ(b0)},children:[$("span",{class:"lico",children:$(f,{name:b0.ic,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"meta",children:[$("span",{class:"t",children:b0.t},void 0,!1,void 0,this),$("span",{class:"d",children:b0.d},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},b0.type,!0,void 0,this))]},void 0,!0,void 0,this)})(),v&&!x&&$(BG,{x:v.x,y:v.y,onCommand:e3},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B&&$(c$,{src:B.src,name:B.name,onClose:()=>M(null),onReplace:(U)=>void r3(B.id,U)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function W3(Z){if(!Z)return[];let J=[];for(let Q=0;Q<(Z.items?.length??0);Q++){let X=Z.items[Q];if(X.kind==="file"){let z=X.getAsFile();if(z)J.push(z)}}if(!J.length)for(let Q=0;Q<(Z.files?.length??0);Q++)J.push(Z.files[Q]);return J}function HG({block:Z,number:J,depth:Q,renderKey:X,selected:z,onInput:W,onPaste:G,onLangInput:q,onKeyDown:H,onCodeInput:Y,onCodeKeyDown:F,onCellInput:K,onTableChange:w,cellSel:P,onCellSel:A,onAdd:_,onMenu:V,onToggle:D,onVoidChange:v,onVoidKey:R,onPreview:x,dragRef:S,onReorder:O,children:N}){let L=W0(null);l(()=>{let y=L.current;if(y&&Z.type!=="code"){let E=J8(Z.content);if(y.innerHTML!==E&&zZ(y.innerHTML)!==Z.content)y.innerHTML=E}},[X,Z.type]);let B=tZ(Z),M="block b-"+Z.type+(Z.type==="todo"&&Z.checked?" b-done":"")+(B?" list-code-host":"")+(z?" selected":"");return $("div",{class:"block-wrap"+(Q?" nested":""),children:[$("div",{class:M,"data-bid":Z.id,onDragOver:(y)=>{if(S.current&&S.current!==Z.id){if(y.preventDefault(),y.dataTransfer)y.dataTransfer.dropEffect="move";U3(y.currentTarget,y)}},onDrop:(y)=>{if(S.current){y.preventDefault(),y.stopPropagation();let E=y.currentTarget.classList.contains("drop-after")?"after":"before",c=S.current;S.current=null,TZ(),O(c,E)}},children:[$("div",{class:"gutter",children:[$("button",{title:"在下方插入",onClick:_,children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"grip",title:"拖拽移动 · 点击菜单",draggable:!0,onClick:V,onDragStart:(y)=>{if(S.current=Z.id,y.dataTransfer)y.dataTransfer.effectAllowed="move",y.dataTransfer.setData("text/plain",Z.id);y.currentTarget.closest(".block").classList.add("dragging")},onDragEnd:(y)=>{y.currentTarget.closest(".block").classList.remove("dragging"),TZ()},children:$(f,{name:"grip",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.type==="divider"?$("hr",{},void 0,!1,void 0,this):Z.type==="table"?$(UG,{block:Z,renderKey:X,onCellInput:K,onTableChange:w,cellSel:P,onCellSel:A},void 0,!1,void 0,this):Z.type==="image"||Z.type==="video"||Z.type==="audio"||Z.type==="file"||Z.type==="html"||Z.type==="uploading"?$("div",{class:"void-host",tabindex:0,onKeyDown:(y)=>R(y),children:Z.type==="image"?$(D$,{block:Z,selected:z,onResize:(y)=>v({width:y}),onPreview:x},void 0,!1,void 0,this):Z.type==="video"?$(x$,{block:Z},void 0,!1,void 0,this):Z.type==="audio"?$(m$,{block:Z},void 0,!1,void 0,this):Z.type==="file"?$(u$,{block:Z},void 0,!1,void 0,this):Z.type==="uploading"?$(h$,{block:Z},void 0,!1,void 0,this):$(E$,{block:Z,selected:z,onChange:(y)=>v({content:y})},void 0,!1,void 0,this)},void 0,!1,void 0,this):$(o,{children:[Z.type==="bullet"&&$("div",{class:"marker",children:"•"},void 0,!1,void 0,this),Z.type==="numbered"&&$("div",{class:"marker",children:[J,"."]},void 0,!0,void 0,this),Z.type==="todo"&&$("div",{class:"marker",children:$("input",{type:"checkbox",checked:!!Z.checked,onChange:D},void 0,!1,void 0,this)},void 0,!1,void 0,this),B?null:Z.type==="code"?$(FG,{block:Z,renderKey:X,onInput:Y,onLangChange:q,onKeyDown:F},void 0,!1,void 0,this):$("div",{ref:L,class:"editable",contentEditable:!0,"data-ph":YG(Z.type),"data-ph-hint":KG(Z.type)?"slash":"kind",onInput:(y)=>W(y.currentTarget),onPaste:(y)=>G(y,y.currentTarget),onKeyDown:(y)=>H(y,y.currentTarget)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),N]},void 0,!0,void 0,this)}var F3={h1:"标题 1",h2:"标题 2",h3:"标题 3",code:"输入代码…",quote:"引用"};function YG(Z){return F3[Z]??"输入文本,“/” 唤出命令"}function KG(Z){return!(Z in F3)}function FG({block:Z,renderKey:J,onInput:Q,onLangChange:X,onKeyDown:z}){let W=W0(null),G=W0(null),q=W0(null),[H,Y]=k(!1),F=(P)=>{if(G.current)G.current.innerHTML=WG(P,Z.lang);if(q.current){let _=P.split(`
|
|
144
|
+
`).length,V="1";for(let D=2;D<=_;D++)V+=`
|
|
145
|
+
`+D;q.current.textContent=V}let A=W.current;if(A)A.style.height="auto",A.style.height=A.scrollHeight+"px"};l(()=>{let P=W.current;if(P&&P.value!==Z.content)P.value=Z.content;F(Z.content)},[J,Z.lang]);let K=Z.lang??"",w=k1.some((P)=>P.id===K);return $("div",{class:"codeblock",children:[$("div",{class:"code-body",children:[$("div",{ref:q,class:"code-gutter","aria-hidden":"true",children:"1"},void 0,!1,void 0,this),$("div",{class:"code-scroll",children:[$("pre",{class:"code-hl","aria-hidden":"true",children:$("code",{ref:G,class:"hljs"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("textarea",{ref:W,class:"code-input",rows:1,spellcheck:!1,wrap:"off",placeholder:"输入代码…",onInput:(P)=>{let A=P.currentTarget;Q(A.value),F(A.value)},onKeyDown:(P)=>z(P,P.currentTarget),onScroll:(P)=>{let A=G.current?.parentElement;if(A)A.scrollLeft=P.currentTarget.scrollLeft}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"code-tools",children:[$("span",{class:"code-lang",children:[$("select",{value:K,onChange:(P)=>X(P.currentTarget.value),children:[!w&&$("option",{value:K,children:K||"纯文本"},void 0,!1,void 0,this),k1.map((P)=>$("option",{value:P.id,children:P.label},P.id,!1,void 0,this))]},void 0,!0,void 0,this),$(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"code-copy"+(H?" ok":""),title:"复制代码",onClick:()=>{let P=W.current?.value??Z.content;navigator.clipboard?.writeText(P).then(()=>{Y(!0),setTimeout(()=>Y(!1),1400)}).catch(()=>{})},children:[$(f,{name:H?"check":"copy",cls:"ico sm"},void 0,!1,void 0,this),H?"已复制":"复制"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function UG({block:Z,renderKey:J,onCellInput:Q,onTableChange:X,cellSel:z,onCellSel:W}){let G=Z.rows??[],q=G[0]?.length??0,H=Z.align??[],Y=W0(null),F=z?$Z(z):null,K=W0([]);if(K.current.length!==q)K.current=Array.from({length:q},(L,B)=>K.current[B]??160);let w=()=>{Z.rows=[...G,Array(q).fill("")],X()},P=()=>{Z.rows=G.map((L)=>[...L,""]),Z.align=[...H,null],X()},A=(L)=>{Z.rows=G.map((M)=>{let y=[...M];return y.splice(L,0,""),y});let B=[...H];B.splice(L,0,null),Z.align=B,X()},_=(L)=>{if(q<=1)return;Z.rows=G.map((B)=>B.filter((M,y)=>y!==L)),Z.align=H.filter((B,M)=>M!==L),X()},V=(L)=>{if(L===0||G.length<=2)return;Z.rows=G.filter((B,M)=>M!==L),X()},D=(L,B)=>{let M=Array.from({length:q},(y,E)=>H[E]??null);M[L]=B,Z.align=M,X()},v=(L,B)=>{let M=Y.current?.querySelector(`.doc-td[data-r="${L}"][data-c="${B}"]`);if(!M)return!1;M.focus();let y=document.createRange();y.selectNodeContents(M),y.collapse(!1);let E=getSelection();return E?.removeAllRanges(),E?.addRange(y),!0},R=(L,B,M)=>{if(L.isComposing||L.keyCode===229)return;if(L.key==="Tab"){if(L.preventDefault(),L.shiftKey){if(M>0)v(B,M-1);else if(B>0)v(B-1,q-1)}else if(M<q-1)v(B,M+1);else if(B<G.length-1)v(B+1,0);else w(),requestAnimationFrame(()=>v(G.length,0));return}if(L.key==="Enter"){if(L.preventDefault(),B<G.length-1)v(B+1,M);else w(),requestAnimationFrame(()=>v(G.length,M));return}},x=(L,B,M)=>{if(L.button!==0)return;if(L.target.closest("button,a,.doc-col-resizer"))return;let y=()=>{document.activeElement?.blur?.(),getSelection()?.removeAllRanges()};if(L.shiftKey&&z){L.preventDefault(),y();let r=z.a;W({a:r,b:{r:B,c:M}}),P9(L,{onMove:($0)=>{let m=document.elementFromPoint($0.clientX,$0.clientY)?.closest?.(".doc-td");if(!m||m.dataset.r==null)return;W({a:r,b:{r:Number(m.dataset.r),c:Number(m.dataset.c)}})}});return}let E={r:B,c:M},c=!1;if(P9(L,{onMove:(r)=>{let $0=document.elementFromPoint(r.clientX,r.clientY)?.closest?.(".doc-td");if(!$0||$0.dataset.r==null)return;let m=Number($0.dataset.r),g=Number($0.dataset.c);if(!c){if(m===E.r&&g===E.c)return;c=!0,y(),document.body.classList.add("cell-selecting")}W({a:E,b:{r:m,c:g}})},onEnd:()=>document.body.classList.remove("cell-selecting")}),z)W(null)},S=(L)=>{if(!F)return;L.preventDefault(),L.stopPropagation();let B={r:F.r0,c:F.c0};document.activeElement?.blur?.(),getSelection()?.removeAllRanges(),P9(L,{threshold:0,onStart:()=>document.body.classList.add("cell-selecting"),onMove:(M)=>{let y=document.elementFromPoint(M.clientX,M.clientY)?.closest?.(".doc-td");if(!y||y.dataset.r==null)return;W({a:B,b:{r:Number(y.dataset.r),c:Number(y.dataset.c)}})},onEnd:()=>document.body.classList.remove("cell-selecting")})},O=(L,B)=>{L.preventDefault(),L.stopPropagation(),S8(L,{col:Y.current?.querySelector(`col[data-tcol="${B}"]`)??null,startWidth:K.current[B]??160,min:60,onDone:(M)=>{K.current[B]=M}})},N=(L,B)=>{L.preventDefault(),L.stopPropagation(),y0(L,(M)=>$(o,{children:[$(j0,{children:"对齐方式"},void 0,!1,void 0,this),$(z0,{icon:"alignLeft",label:"左对齐",checked:(H[B]??null)===null||H[B]==="left",onClick:()=>{D(B,"left"),M()}},void 0,!1,void 0,this),$(z0,{icon:"alignCenter",label:"居中",checked:H[B]==="center",onClick:()=>{D(B,"center"),M()}},void 0,!1,void 0,this),$(z0,{icon:"alignRight",label:"右对齐",checked:H[B]==="right",onClick:()=>{D(B,"right"),M()}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"在左侧插入列",onClick:()=>{A(B),M()}},void 0,!1,void 0,this),$(z0,{icon:"cornerUpRight",label:"在右侧插入列",onClick:()=>{A(B+1),M()}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除列",danger:!0,onClick:()=>{_(B),M()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"doc-table-wrap",children:$("div",{class:"doc-table-scroll",children:$("div",{class:"doc-table-inner",children:[$("div",{class:"doc-table-row",children:[$("table",{ref:Y,class:"doc-table"+(F?" cells-active":""),children:[$("colgroup",{children:Array.from({length:q},(L,B)=>$("col",{"data-tcol":B,style:{width:K.current[B]}},B,!1,void 0,this))},void 0,!1,void 0,this),$("tbody",{children:G.map((L,B)=>$("tr",{children:L.map((M,y)=>{let E=F!=null&&x8(F,B,y),c=F!=null&&B===F.r1&&y===F.c1;return $("td",{class:(B===0?"doc-th":"")+(E?" cellsel":""),style:F?{boxShadow:m8(F,B,y)}:void 0,onPointerDown:(r)=>x(r,B,y),children:[$(LG,{value:M,renderKey:J,r:B,c:y,align:H[y]??null,onInput:(r)=>Q(B,y,r),onKeyDown:(r)=>R(r,B,y)},void 0,!1,void 0,this),c&&$("div",{class:"doc-cell-handle",onPointerDown:(r)=>S(r)},void 0,!1,void 0,this),B===0&&$(o,{children:[$("button",{class:"doc-col-menu",title:"列选项",onMouseDown:(r)=>N(r,y),children:$(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"doc-col-resizer",onPointerDown:(r)=>O(r,y)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y===0&&B>0&&G.length>2&&$("button",{class:"doc-row-del",title:"删除行",onMouseDown:(r)=>{r.preventDefault(),r.stopPropagation(),V(B)},children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},y,!0,void 0,this)})},B,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addcol",title:"新增列",onMouseDown:(L)=>{L.preventDefault(),P()},children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"doc-table-addrow",title:"新增行",onMouseDown:(L)=>{L.preventDefault(),w()},children:$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function LG({value:Z,renderKey:J,r:Q,c:X,align:z,onInput:W,onKeyDown:G}){let q=W0(null);return l(()=>{let H=q.current;if(H){let Y=J8(Z);if(H.innerHTML!==Y&&zZ(H.innerHTML)!==Z)H.innerHTML=Y}},[J]),$("div",{ref:q,class:"doc-td","data-r":Q,"data-c":X,contentEditable:!0,"data-ph":Q===0?"表头":"",style:z?{textAlign:z}:void 0,onInput:(H)=>W(zZ(H.currentTarget.innerHTML)),onKeyDown:(H)=>G(H)},void 0,!1,void 0,this)}function PG({term:Z,caseSensitive:J,wholeWord:Q,idx:X,total:z,onTerm:W,onToggleCase:G,onToggleWord:q,onStep:H,onClose:Y}){let F=(K)=>K.preventDefault();return $("div",{class:"find-bar",role:"search",children:[$(f,{name:"search",cls:"ico sm find-ico"},void 0,!1,void 0,this),$("input",{type:"text",placeholder:"在文档中查找",value:Z,autoFocus:!0,onInput:(K)=>W(K.currentTarget.value),onKeyDown:(K)=>{if(K.key==="Enter")K.preventDefault(),H(K.shiftKey?-1:1);else if(K.key==="Escape")K.preventDefault(),Y()}},void 0,!1,void 0,this),$("span",{class:"find-count",children:z?`${X+1} / ${z}`:Z?"无结果":""},void 0,!1,void 0,this),$("button",{class:"find-opt"+(J?" on":""),title:"区分大小写",onMouseDown:F,onClick:G,children:"Aa"},void 0,!1,void 0,this),$("button",{class:"find-opt"+(Q?" on":""),title:"全词匹配",onMouseDown:F,onClick:q,children:"全词"},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"上一个 (Shift+Enter)",disabled:!z,onMouseDown:F,onClick:()=>H(-1),children:$(f,{name:"chevronDown",cls:"ico sm find-prev"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav",title:"下一个 (Enter)",disabled:!z,onMouseDown:F,onClick:()=>H(1),children:$(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"find-nav find-close",title:"关闭 (Esc)",onClick:Y,children:$(f,{name:"x",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function BG({x:Z,y:J,onCommand:Q}){let X=(z)=>(W)=>{W.preventDefault(),Q(z)};return $("div",{class:"pop",style:{left:Math.max(8,Math.min(Z,innerWidth-220)),top:J-46,minWidth:0,padding:3,display:"flex",gap:1},children:[["bold","bold"],["italic","italic"],["underline","underline"],["strikeThrough","strike"],["code","code"],["createLink","link"]].map(([z,W])=>$("button",{class:"item",style:{width:34,justifyContent:"center",padding:"7px 0"},onMouseDown:X(z),children:$(f,{name:W,cls:"ico sm"},void 0,!1,void 0,this)},z,!1,void 0,this))},void 0,!1,void 0,this)}function OG(){let Z=getSelection();if(!Z||Z.isCollapsed)return;document.execCommand("insertHTML",!1,`<code>${Z8(Z.toString())}</code>`)}function WZ(Z){document.querySelectorAll(".doc .block[data-bid]").forEach((J)=>AG(Z,J))}function AG(Z,J){let Q=J.matches(".block[data-bid]")?J:J.closest(".block[data-bid]"),X=Q?.getAttribute("data-bid"),z=X?T0(Z,X)?.block:null;if(!z||!Q)return;let W=Q.querySelector(".editable"),G=Q.querySelector(".code-input");if(W)z.content=$8(z,W);else if(G)z.content=G.value}function NG(Z){return(Z instanceof HTMLElement?Z:Z.parentElement)?.closest(".block[data-bid]")??null}function G3(){return document.activeElement?.closest?.(".doc .block[data-bid]")?.getAttribute("data-bid")??null}function c1(Z){document.querySelector(".doc")?.classList.toggle("selecting",Z)}function $6(){getSelection()?.removeAllRanges(),document.activeElement?.blur?.(),c1(!0)}function p1(Z){let J=getSelection();if(!J||J.isCollapsed||!J.rangeCount)return Z(null);if(!J.anchorNode?.parentElement?.closest?.(".editable"))return Z(null);let X=J.getRangeAt(0),z=X.getBoundingClientRect(),W=z.width||z.height?z:X.getClientRects()[0];if(!W)return Z(null);Z({x:W.left,y:W.top})}function wG(Z){let J=getSelection()?.anchorNode?.parentElement?.closest?.(".editable"),X=J?.closest(".block")?.getAttribute("data-bid"),z=X?T0(Z,X)?.block:null;if(z&&J)z.content=$8(z,J)}function $8(Z,J){return zZ(J.innerHTML)}function d1(){let Z=getSelection();return!!Z&&!Z.isCollapsed}function MG(Z){let J=getSelection();if(!J||!J.rangeCount)return 0;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return 0;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length}function Q6(Z){let J=document.querySelector(`.block[data-bid="${Z}"]`),Q=document.activeElement;if(!J||!Q||!J.contains(Q))return null;if(Q instanceof HTMLTextAreaElement)return Q.selectionStart;let X=J.querySelector(".editable");return X?MG(X):null}function X6(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .code-input`);if(Q){Q.focus();let X=Math.min(J,Q.value.length);Q.setSelectionRange(X,X);return}i1(Z,J)}function CG(Z){let J=getSelection();if(!J||!J.rangeCount||!J.isCollapsed)return!1;let Q=J.getRangeAt(0);if(!Z.contains(Q.startContainer))return!1;let X=document.createRange();return X.selectNodeContents(Z),X.setEnd(Q.startContainer,Q.startOffset),X.toString().length===0}function yG(){let Z=getSelection();if(!Z||!Z.rangeCount)return{x:80,y:120};let J=Z.getRangeAt(0).getBoundingClientRect();return{x:J.left||80,y:J.top||120}}function q3(Z){let J=getSelection();if(!J||!J.rangeCount)return{first:!0,last:!0};let Q=J.getRangeAt(0).getBoundingClientRect(),X=Z.getBoundingClientRect();if(!Q.height&&!Q.top)return{first:!0,last:!0};let z=parseFloat(getComputedStyle(Z).lineHeight)||Q.height||20;return{first:Q.top-X.top<z*0.5,last:X.bottom-Q.bottom<z*0.5}}function _G(Z){let J=Z.textContent??"";if(J.trim()==="")return!0;let Q=getSelection();if(!Q||!Q.rangeCount||Q.isCollapsed)return!1;if(!Z.contains(Q.anchorNode)||!Z.contains(Q.focusNode))return!1;return Q.toString().length>=J.length}function z6(Z){let J=getSelection();if(!J||!J.rangeCount||!Z.contains(J.getRangeAt(0).startContainer))return{before:zZ(Z.innerHTML),after:""};let Q=J.getRangeAt(0),X=(z)=>{let W=document.createRange();W.selectNodeContents(Z),z(W);let G=document.createElement("div");return G.appendChild(W.cloneContents()),zZ(G.innerHTML)};return{before:X((z)=>z.setEnd(Q.startContainer,Q.startOffset)),after:X((z)=>z.setStart(Q.endContainer,Q.endOffset))}}function H3(Z){let J=document.createElement("div");return J.innerHTML=J8(Z),(J.textContent??"").length}function i1(Z,J){let Q=document.querySelector(`.block[data-bid="${Z}"] .editable`);if(!Q)return;Q.focus();let X=document.createTreeWalker(Q,NodeFilter.SHOW_TEXT),z=J,W=null;for(let H=X.nextNode();H;H=X.nextNode()){if(W=H,z<=H.data.length)break;z-=H.data.length}let G=document.createRange();if(W)G.setStart(W,Math.min(z,W.data.length));else G.selectNodeContents(Q);G.collapse(!0);let q=getSelection();q?.removeAllRanges(),q?.addRange(G)}function x0(Z,J=!1){let Q=`.block[data-bid="${Z}"] .editable, .block[data-bid="${Z}"] .code-input, .block[data-bid="${Z}"] .void-host`,X=document.querySelector(Q);if(!X)return;if(X.focus(),X.classList.contains("void-host"))return;if(X instanceof HTMLTextAreaElement){let G=J?X.value.length:0;X.setSelectionRange(G,G);return}let z=document.createRange();z.selectNodeContents(X),z.collapse(!J);let W=getSelection();W?.removeAllRanges(),W?.addRange(z)}function Y3(Z){Z.style.height="auto",Z.style.height=Z.scrollHeight+"px"}var TZ=A9;function U3(Z,J){I8(Z,J,"y")}function K3(Z,J){if(!Z)return null;let Q=Array.from(Z.querySelectorAll(":scope > .block-wrap > .block")),X=null,z=1/0;for(let W of Q){let G=W.getBoundingClientRect();if(J>=G.top&&J<=G.bottom)return W;let q=J<G.top?G.top-J:J-G.bottom;if(q<z)z=q,X=W}return X}var RZ=function(Z,J){let z=Z,W=Q8[J],G=null,q=0,H=null,Y=[],F={},K=function(N,L){if(q=z*4+17,G=function(B){let M=Array(B);for(let y=0;y<B;y+=1){M[y]=Array(B);for(let E=0;E<B;E+=1)M[y][E]=null}return M}(q),w(0,0),w(q-7,0),w(0,q-7),_(),A(),D(N,L),z>=7)V(N);if(H==null)H=x(z,W,Y);v(H,L)},w=function(N,L){for(let B=-1;B<=7;B+=1){if(N+B<=-1||q<=N+B)continue;for(let M=-1;M<=7;M+=1){if(L+M<=-1||q<=L+M)continue;if(0<=B&&B<=6&&(M==0||M==6)||0<=M&&M<=6&&(B==0||B==6)||2<=B&&B<=4&&2<=M&&M<=4)G[N+B][L+M]=!0;else G[N+B][L+M]=!1}}},P=function(){let N=0,L=0;for(let B=0;B<8;B+=1){K(!0,B);let M=u9.getLostPoint(F);if(B==0||N>M)N=M,L=B}return L},A=function(){for(let N=8;N<q-8;N+=1){if(G[N][6]!=null)continue;G[N][6]=N%2==0}for(let N=8;N<q-8;N+=1){if(G[6][N]!=null)continue;G[6][N]=N%2==0}},_=function(){let N=u9.getPatternPosition(z);for(let L=0;L<N.length;L+=1)for(let B=0;B<N.length;B+=1){let M=N[L],y=N[B];if(G[M][y]!=null)continue;for(let E=-2;E<=2;E+=1)for(let c=-2;c<=2;c+=1)if(E==-2||E==2||c==-2||c==2||E==0&&c==0)G[M+E][y+c]=!0;else G[M+E][y+c]=!1}},V=function(N){let L=u9.getBCHTypeNumber(z);for(let B=0;B<18;B+=1){let M=!N&&(L>>B&1)==1;G[Math.floor(B/3)][B%3+q-8-3]=M}for(let B=0;B<18;B+=1){let M=!N&&(L>>B&1)==1;G[B%3+q-8-3][Math.floor(B/3)]=M}},D=function(N,L){let B=W<<3|L,M=u9.getBCHTypeInfo(B);for(let y=0;y<15;y+=1){let E=!N&&(M>>y&1)==1;if(y<6)G[y][8]=E;else if(y<8)G[y+1][8]=E;else G[q-15+y][8]=E}for(let y=0;y<15;y+=1){let E=!N&&(M>>y&1)==1;if(y<8)G[8][q-y-1]=E;else if(y<9)G[8][15-y-1+1]=E;else G[8][15-y-1]=E}G[q-8][8]=!N},v=function(N,L){let B=-1,M=q-1,y=7,E=0,c=u9.getMaskFunction(L);for(let r=q-1;r>0;r-=2){if(r==6)r-=1;while(!0){for(let $0=0;$0<2;$0+=1)if(G[M][r-$0]==null){let m=!1;if(E<N.length)m=(N[E]>>>y&1)==1;if(c(M,r-$0))m=!m;if(G[M][r-$0]=m,y-=1,y==-1)E+=1,y=7}if(M+=B,M<0||q<=M){M-=B,B=-B;break}}}},R=function(N,L){let B=0,M=0,y=0,E=Array(L.length),c=Array(L.length);for(let g=0;g<L.length;g+=1){let u=L[g].dataCount,I=L[g].totalCount-u;M=Math.max(M,u),y=Math.max(y,I),E[g]=Array(u);for(let Q0=0;Q0<E[g].length;Q0+=1)E[g][Q0]=255&N.getBuffer()[Q0+B];B+=u;let n=u9.getErrorCorrectPolynomial(I),q0=X8(E[g],n.getLength()-1).mod(n);c[g]=Array(n.getLength()-1);for(let Q0=0;Q0<c[g].length;Q0+=1){let J0=Q0+q0.getLength()-c[g].length;c[g][Q0]=J0>=0?q0.getAt(J0):0}}let r=0;for(let g=0;g<L.length;g+=1)r+=L[g].totalCount;let $0=Array(r),m=0;for(let g=0;g<M;g+=1)for(let u=0;u<L.length;u+=1)if(g<E[u].length)$0[m]=E[u][g],m+=1;for(let g=0;g<y;g+=1)for(let u=0;u<L.length;u+=1)if(g<c[u].length)$0[m]=c[u][g],m+=1;return $0},x=function(N,L,B){let M=L3.getRSBlocks(N,L),y=P3();for(let c=0;c<B.length;c+=1){let r=B[c];y.put(r.getMode(),4),y.put(r.getLength(),u9.getLengthInBits(r.getMode(),N)),r.write(y)}let E=0;for(let c=0;c<M.length;c+=1)E+=M[c].dataCount;if(y.getLengthInBits()>E*8)throw"code length overflow. ("+y.getLengthInBits()+">"+E*8+")";if(y.getLengthInBits()+4<=E*8)y.put(0,4);while(y.getLengthInBits()%8!=0)y.putBit(!1);while(!0){if(y.getLengthInBits()>=E*8)break;if(y.put(236,8),y.getLengthInBits()>=E*8)break;y.put(17,8)}return R(y,M)};F.addData=function(N,L){L=L||"Byte";let B=null;switch(L){case"Numeric":B=vG(N);break;case"Alphanumeric":B=TG(N);break;case"Byte":B=RG(N);break;case"Kanji":B=kG(N);break;default:throw"mode:"+L}Y.push(B),H=null},F.isDark=function(N,L){if(N<0||q<=N||L<0||q<=L)throw N+","+L;return G[N][L]},F.getModuleCount=function(){return q},F.make=function(){if(z<1){let N=1;for(;N<40;N++){let L=L3.getRSBlocks(N,W),B=P3();for(let y=0;y<Y.length;y++){let E=Y[y];B.put(E.getMode(),4),B.put(E.getLength(),u9.getLengthInBits(E.getMode(),N)),E.write(B)}let M=0;for(let y=0;y<L.length;y++)M+=L[y].dataCount;if(B.getLengthInBits()<=M*8)break}z=N}K(!1,P())},F.createTableTag=function(N,L){N=N||2,L=typeof L>"u"?N*4:L;let B="";B+='<table style="',B+=" border-width: 0px; border-style: none;",B+=" border-collapse: collapse;",B+=" padding: 0px; margin: "+L+"px;",B+='">',B+="<tbody>";for(let M=0;M<F.getModuleCount();M+=1){B+="<tr>";for(let y=0;y<F.getModuleCount();y+=1)B+='<td style="',B+=" border-width: 0px; border-style: none;",B+=" border-collapse: collapse;",B+=" padding: 0px; margin: 0px;",B+=" width: "+N+"px;",B+=" height: "+N+"px;",B+=" background-color: ",B+=F.isDark(M,y)?"#000000":"#ffffff",B+=";",B+='"/>';B+="</tr>"}return B+="</tbody>",B+="</table>",B},F.createSvgTag=function(N,L,B,M){let y={};if(typeof arguments[0]=="object")y=arguments[0],N=y.cellSize,L=y.margin,B=y.alt,M=y.title;N=N||2,L=typeof L>"u"?N*4:L,B=typeof B==="string"?{text:B}:B||{},B.text=B.text||null,B.id=B.text?B.id||"qrcode-description":null,M=typeof M==="string"?{text:M}:M||{},M.text=M.text||null,M.id=M.text?M.id||"qrcode-title":null;let E=F.getModuleCount()*N+L*2,c,r,$0,m,g="",u;u="l"+N+",0 0,"+N+" -"+N+",0 0,-"+N+"z ",g+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',g+=!y.scalable?' width="'+E+'px" height="'+E+'px"':"",g+=' viewBox="0 0 '+E+" "+E+'" ',g+=' preserveAspectRatio="xMinYMin meet"',g+=M.text||B.text?' role="img" aria-labelledby="'+S([M.id,B.id].join(" ").trim())+'"':"",g+=">",g+=M.text?'<title id="'+S(M.id)+'">'+S(M.text)+"</title>":"",g+=B.text?'<description id="'+S(B.id)+'">'+S(B.text)+"</description>":"",g+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',g+='<path d="';for($0=0;$0<F.getModuleCount();$0+=1){m=$0*N+L;for(c=0;c<F.getModuleCount();c+=1)if(F.isDark($0,c))r=c*N+L,g+="M"+r+","+m+u}return g+='" stroke="transparent" fill="black"/>',g+="</svg>",g},F.createDataURL=function(N,L){N=N||2,L=typeof L>"u"?N*4:L;let B=F.getModuleCount()*N+L*2,M=L,y=B-L;return fG(B,B,function(E,c){if(M<=E&&E<y&&M<=c&&c<y){let r=Math.floor((E-M)/N),$0=Math.floor((c-M)/N);return F.isDark($0,r)?0:1}else return 1})},F.createImgTag=function(N,L,B){N=N||2,L=typeof L>"u"?N*4:L;let M=F.getModuleCount()*N+L*2,y="";if(y+="<img",y+=' src="',y+=F.createDataURL(N,L),y+='"',y+=' width="',y+=M,y+='"',y+=' height="',y+=M,y+='"',B)y+=' alt="',y+=S(B),y+='"';return y+="/>",y};let S=function(N){let L="";for(let B=0;B<N.length;B+=1){let M=N.charAt(B);switch(M){case"<":L+="<";break;case">":L+=">";break;case"&":L+="&";break;case'"':L+=""";break;default:L+=M;break}}return L},O=function(N){N=typeof N>"u"?2:N;let B=F.getModuleCount()*1+N*2,M=N,y=B-N,E,c,r,$0,m,g={"██":"█","█ ":"▀"," █":"▄"," ":" "},u={"██":"▀","█ ":"▀"," █":" "," ":" "},I="";for(E=0;E<B;E+=2){r=Math.floor((E-M)/1),$0=Math.floor((E+1-M)/1);for(c=0;c<B;c+=1){if(m="█",M<=c&&c<y&&M<=E&&E<y&&F.isDark(r,Math.floor((c-M)/1)))m=" ";if(M<=c&&c<y&&M<=E+1&&E+1<y&&F.isDark($0,Math.floor((c-M)/1)))m+=" ";else m+="█";I+=N<1&&E+1>=y?u[m]:g[m]}I+=`
|
|
146
|
+
`}if(B%2&&N>0)return I.substring(0,I.length-B-1)+Array(B+1).join("▀");return I.substring(0,I.length-1)};return F.createASCII=function(N,L){if(N=N||1,N<2)return O(L);N-=1,L=typeof L>"u"?N*2:L;let B=F.getModuleCount()*N+L*2,M=L,y=B-L,E,c,r,$0,m=Array(N+1).join("██"),g=Array(N+1).join(" "),u="",I="";for(E=0;E<B;E+=1){r=Math.floor((E-M)/N),I="";for(c=0;c<B;c+=1){if($0=1,M<=c&&c<y&&M<=E&&E<y&&F.isDark(r,Math.floor((c-M)/N)))$0=0;I+=$0?m:g}for(r=0;r<N;r+=1)u+=I+`
|
|
147
|
+
`}return u.substring(0,u.length-1)},F.renderTo2dContext=function(N,L){L=L||2;let B=F.getModuleCount();for(let M=0;M<B;M++)for(let y=0;y<B;y++)N.fillStyle=F.isDark(M,y)?"black":"white",N.fillRect(y*L,M*L,L,L)},F};RZ.stringToBytes=function(Z){let J=[];for(let Q=0;Q<Z.length;Q+=1){let X=Z.charCodeAt(Q);J.push(X&255)}return J};RZ.createStringToBytes=function(Z,J){let Q=function(){let z=SG(Z),W=function(){let H=z.read();if(H==-1)throw"eof";return H},G=0,q={};while(!0){let H=z.read();if(H==-1)break;let Y=W(),F=W(),K=W(),w=String.fromCharCode(H<<8|Y),P=F<<8|K;q[w]=P,G+=1}if(G!=J)throw G+" != "+J;return q}(),X=63;return function(z){let W=[];for(let G=0;G<z.length;G+=1){let q=z.charCodeAt(G);if(q<128)W.push(q);else{let H=Q[z.charAt(G)];if(typeof H=="number")if((H&255)==H)W.push(H);else W.push(H>>>8),W.push(H&255);else W.push(63)}}return W}};var s0={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},Q8={L:1,M:0,Q:3,H:2},m9={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},u9=function(){let Z=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],J=1335,Q=7973,X=21522,z={},W=function(G){let q=0;while(G!=0)q+=1,G>>>=1;return q};return z.getBCHTypeInfo=function(G){let q=G<<10;while(W(q)-W(1335)>=0)q^=1335<<W(q)-W(1335);return(G<<10|q)^21522},z.getBCHTypeNumber=function(G){let q=G<<12;while(W(q)-W(7973)>=0)q^=7973<<W(q)-W(7973);return G<<12|q},z.getPatternPosition=function(G){return Z[G-1]},z.getMaskFunction=function(G){switch(G){case m9.PATTERN000:return function(q,H){return(q+H)%2==0};case m9.PATTERN001:return function(q,H){return q%2==0};case m9.PATTERN010:return function(q,H){return H%3==0};case m9.PATTERN011:return function(q,H){return(q+H)%3==0};case m9.PATTERN100:return function(q,H){return(Math.floor(q/2)+Math.floor(H/3))%2==0};case m9.PATTERN101:return function(q,H){return q*H%2+q*H%3==0};case m9.PATTERN110:return function(q,H){return(q*H%2+q*H%3)%2==0};case m9.PATTERN111:return function(q,H){return(q*H%3+(q+H)%2)%2==0};default:throw"bad maskPattern:"+G}},z.getErrorCorrectPolynomial=function(G){let q=X8([1],0);for(let H=0;H<G;H+=1)q=q.multiply(X8([1,E9.gexp(H)],0));return q},z.getLengthInBits=function(G,q){if(1<=q&&q<10)switch(G){case s0.MODE_NUMBER:return 10;case s0.MODE_ALPHA_NUM:return 9;case s0.MODE_8BIT_BYTE:return 8;case s0.MODE_KANJI:return 8;default:throw"mode:"+G}else if(q<27)switch(G){case s0.MODE_NUMBER:return 12;case s0.MODE_ALPHA_NUM:return 11;case s0.MODE_8BIT_BYTE:return 16;case s0.MODE_KANJI:return 10;default:throw"mode:"+G}else if(q<41)switch(G){case s0.MODE_NUMBER:return 14;case s0.MODE_ALPHA_NUM:return 13;case s0.MODE_8BIT_BYTE:return 16;case s0.MODE_KANJI:return 12;default:throw"mode:"+G}else throw"type:"+q},z.getLostPoint=function(G){let q=G.getModuleCount(),H=0;for(let K=0;K<q;K+=1)for(let w=0;w<q;w+=1){let P=0,A=G.isDark(K,w);for(let _=-1;_<=1;_+=1){if(K+_<0||q<=K+_)continue;for(let V=-1;V<=1;V+=1){if(w+V<0||q<=w+V)continue;if(_==0&&V==0)continue;if(A==G.isDark(K+_,w+V))P+=1}}if(P>5)H+=3+P-5}for(let K=0;K<q-1;K+=1)for(let w=0;w<q-1;w+=1){let P=0;if(G.isDark(K,w))P+=1;if(G.isDark(K+1,w))P+=1;if(G.isDark(K,w+1))P+=1;if(G.isDark(K+1,w+1))P+=1;if(P==0||P==4)H+=3}for(let K=0;K<q;K+=1)for(let w=0;w<q-6;w+=1)if(G.isDark(K,w)&&!G.isDark(K,w+1)&&G.isDark(K,w+2)&&G.isDark(K,w+3)&&G.isDark(K,w+4)&&!G.isDark(K,w+5)&&G.isDark(K,w+6))H+=40;for(let K=0;K<q;K+=1)for(let w=0;w<q-6;w+=1)if(G.isDark(w,K)&&!G.isDark(w+1,K)&&G.isDark(w+2,K)&&G.isDark(w+3,K)&&G.isDark(w+4,K)&&!G.isDark(w+5,K)&&G.isDark(w+6,K))H+=40;let Y=0;for(let K=0;K<q;K+=1)for(let w=0;w<q;w+=1)if(G.isDark(w,K))Y+=1;let F=Math.abs(100*Y/q/q-50)/5;return H+=F*10,H},z}(),E9=function(){let Z=Array(256),J=Array(256);for(let X=0;X<8;X+=1)Z[X]=1<<X;for(let X=8;X<256;X+=1)Z[X]=Z[X-4]^Z[X-5]^Z[X-6]^Z[X-8];for(let X=0;X<255;X+=1)J[Z[X]]=X;let Q={};return Q.glog=function(X){if(X<1)throw"glog("+X+")";return J[X]},Q.gexp=function(X){while(X<0)X+=255;while(X>=256)X-=255;return Z[X]},Q}(),X8=function(Z,J){if(typeof Z.length>"u")throw Z.length+"/"+J;let Q=function(){let z=0;while(z<Z.length&&Z[z]==0)z+=1;let W=Array(Z.length-z+J);for(let G=0;G<Z.length-z;G+=1)W[G]=Z[G+z];return W}(),X={};return X.getAt=function(z){return Q[z]},X.getLength=function(){return Q.length},X.multiply=function(z){let W=Array(X.getLength()+z.getLength()-1);for(let G=0;G<X.getLength();G+=1)for(let q=0;q<z.getLength();q+=1)W[G+q]^=E9.gexp(E9.glog(X.getAt(G))+E9.glog(z.getAt(q)));return X8(W,0)},X.mod=function(z){if(X.getLength()-z.getLength()<0)return X;let W=E9.glog(X.getAt(0))-E9.glog(z.getAt(0)),G=Array(X.getLength());for(let q=0;q<X.getLength();q+=1)G[q]=X.getAt(q);for(let q=0;q<z.getLength();q+=1)G[q]^=E9.gexp(E9.glog(z.getAt(q))+W);return X8(G,0).mod(z)},X},L3=function(){let Z=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],J=function(z,W){let G={};return G.totalCount=z,G.dataCount=W,G},Q={},X=function(z,W){switch(W){case Q8.L:return Z[(z-1)*4+0];case Q8.M:return Z[(z-1)*4+1];case Q8.Q:return Z[(z-1)*4+2];case Q8.H:return Z[(z-1)*4+3];default:return}};return Q.getRSBlocks=function(z,W){let G=X(z,W);if(typeof G>"u")throw"bad rs block @ typeNumber:"+z+"/errorCorrectionLevel:"+W;let q=G.length/3,H=[];for(let Y=0;Y<q;Y+=1){let F=G[Y*3+0],K=G[Y*3+1],w=G[Y*3+2];for(let P=0;P<F;P+=1)H.push(J(K,w))}return H},Q}(),P3=function(){let Z=[],J=0,Q={};return Q.getBuffer=function(){return Z},Q.getAt=function(X){let z=Math.floor(X/8);return(Z[z]>>>7-X%8&1)==1},Q.put=function(X,z){for(let W=0;W<z;W+=1)Q.putBit((X>>>z-W-1&1)==1)},Q.getLengthInBits=function(){return J},Q.putBit=function(X){let z=Math.floor(J/8);if(Z.length<=z)Z.push(0);if(X)Z[z]|=128>>>J%8;J+=1},Q},vG=function(Z){let J=s0.MODE_NUMBER,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(G){return Q.length},X.write=function(G){let q=Q,H=0;while(H+2<q.length)G.put(z(q.substring(H,H+3)),10),H+=3;if(H<q.length){if(q.length-H==1)G.put(z(q.substring(H,H+1)),4);else if(q.length-H==2)G.put(z(q.substring(H,H+2)),7)}};let z=function(G){let q=0;for(let H=0;H<G.length;H+=1)q=q*10+W(G.charAt(H));return q},W=function(G){if("0"<=G&&G<="9")return G.charCodeAt(0)-48;throw"illegal char :"+G};return X},TG=function(Z){let J=s0.MODE_ALPHA_NUM,Q=Z,X={};X.getMode=function(){return J},X.getLength=function(W){return Q.length},X.write=function(W){let G=Q,q=0;while(q+1<G.length)W.put(z(G.charAt(q))*45+z(G.charAt(q+1)),11),q+=2;if(q<G.length)W.put(z(G.charAt(q)),6)};let z=function(W){if("0"<=W&&W<="9")return W.charCodeAt(0)-48;else if("A"<=W&&W<="Z")return W.charCodeAt(0)-65+10;else switch(W){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+W}};return X},RG=function(Z){let J=s0.MODE_8BIT_BYTE,Q=Z,X=RZ.stringToBytes(Z),z={};return z.getMode=function(){return J},z.getLength=function(W){return X.length},z.write=function(W){for(let G=0;G<X.length;G+=1)W.put(X[G],8)},z},kG=function(Z){let J=s0.MODE_KANJI,Q=Z,X=RZ.stringToBytes;(function(G,q){let H=X(G);if(H.length!=2||(H[0]<<8|H[1])!=q)throw"sjis not supported."})("友",38726);let z=X(Z),W={};return W.getMode=function(){return J},W.getLength=function(G){return~~(z.length/2)},W.write=function(G){let q=z,H=0;while(H+1<q.length){let Y=(255&q[H])<<8|255&q[H+1];if(33088<=Y&&Y<=40956)Y-=33088;else if(57408<=Y&&Y<=60351)Y-=49472;else throw"illegal char at "+(H+1)+"/"+Y;Y=(Y>>>8&255)*192+(Y&255),G.put(Y,13),H+=2}if(H<q.length)throw"illegal char at "+(H+1)},W},B3=function(){let Z=[],J={};return J.writeByte=function(Q){Z.push(Q&255)},J.writeShort=function(Q){J.writeByte(Q),J.writeByte(Q>>>8)},J.writeBytes=function(Q,X,z){X=X||0,z=z||Q.length;for(let W=0;W<z;W+=1)J.writeByte(Q[W+X])},J.writeString=function(Q){for(let X=0;X<Q.length;X+=1)J.writeByte(Q.charCodeAt(X))},J.toByteArray=function(){return Z},J.toString=function(){let Q="";Q+="[";for(let X=0;X<Z.length;X+=1){if(X>0)Q+=",";Q+=Z[X]}return Q+="]",Q},J},IG=function(){let Z=0,J=0,Q=0,X="",z={},W=function(q){X+=String.fromCharCode(G(q&63))},G=function(q){if(q<0)throw"n:"+q;else if(q<26)return 65+q;else if(q<52)return 97+(q-26);else if(q<62)return 48+(q-52);else if(q==62)return 43;else if(q==63)return 47;else throw"n:"+q};return z.writeByte=function(q){Z=Z<<8|q&255,J+=8,Q+=1;while(J>=6)W(Z>>>J-6),J-=6},z.flush=function(){if(J>0)W(Z<<6-J),Z=0,J=0;if(Q%3!=0){let q=3-Q%3;for(let H=0;H<q;H+=1)X+="="}},z.toString=function(){return X},z},SG=function(Z){let J=Z,Q=0,X=0,z=0,W={};W.read=function(){while(z<8){if(Q>=J.length){if(z==0)return-1;throw"unexpected end of file./"+z}let H=J.charAt(Q);if(Q+=1,H=="=")return z=0,-1;else if(H.match(/^\s$/))continue;X=X<<6|G(H.charCodeAt(0)),z+=6}let q=X>>>z-8&255;return z-=8,q};let G=function(q){if(65<=q&&q<=90)return q-65;else if(97<=q&&q<=122)return q-97+26;else if(48<=q&&q<=57)return q-48+52;else if(q==43)return 62;else if(q==47)return 63;else throw"c:"+q};return W},VG=function(Z,J){let Q=Z,X=J,z=Array(Z*J),W={};W.setPixel=function(Y,F,K){z[F*Q+Y]=K},W.write=function(Y){Y.writeString("GIF87a"),Y.writeShort(Q),Y.writeShort(X),Y.writeByte(128),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(0),Y.writeByte(255),Y.writeByte(255),Y.writeByte(255),Y.writeString(","),Y.writeShort(0),Y.writeShort(0),Y.writeShort(Q),Y.writeShort(X),Y.writeByte(0);let F=2,K=q(F);Y.writeByte(F);let w=0;while(K.length-w>255)Y.writeByte(255),Y.writeBytes(K,w,255),w+=255;Y.writeByte(K.length-w),Y.writeBytes(K,w,K.length-w),Y.writeByte(0),Y.writeString(";")};let G=function(Y){let F=Y,K=0,w=0,P={};return P.write=function(A,_){if(A>>>_!=0)throw"length over";while(K+_>=8)F.writeByte(255&(A<<K|w)),_-=8-K,A>>>=8-K,w=0,K=0;w=A<<K|w,K=K+_},P.flush=function(){if(K>0)F.writeByte(w)},P},q=function(Y){let F=1<<Y,K=(1<<Y)+1,w=Y+1,P=H();for(let v=0;v<F;v+=1)P.add(String.fromCharCode(v));P.add(String.fromCharCode(F)),P.add(String.fromCharCode(K));let A=B3(),_=G(A);_.write(F,w);let V=0,D=String.fromCharCode(z[V]);V+=1;while(V<z.length){let v=String.fromCharCode(z[V]);if(V+=1,P.contains(D+v))D=D+v;else{if(_.write(P.indexOf(D),w),P.size()<4095){if(P.size()==1<<w)w+=1;P.add(D+v)}D=v}}return _.write(P.indexOf(D),w),_.write(K,w),_.flush(),A.toByteArray()},H=function(){let Y={},F=0,K={};return K.add=function(w){if(K.contains(w))throw"dup key:"+w;Y[w]=F,F+=1},K.size=function(){return F},K.indexOf=function(w){return Y[w]},K.contains=function(w){return typeof Y[w]<"u"},K};return W},fG=function(Z,J,Q){let X=VG(Z,J);for(let q=0;q<J;q+=1)for(let H=0;H<Z;H+=1)X.setPixel(H,q,Q(H,q));let z=B3();X.write(z);let W=IG(),G=z.toByteArray();for(let q=0;q<G.length;q+=1)W.writeByte(G[q]);return W.flush(),"data:image/gif;base64,"+W},O3=RZ,sK=RZ.stringToBytes;function a1(){let Z=localStorage.getItem("mh-theme");return Z==="light"||Z==="dark"||Z==="system"?Z:"system"}function n1(){let Z=a1(),J=Z==="dark"||Z!=="light"&&matchMedia("(prefers-color-scheme: dark)").matches;document.documentElement.dataset.resolved=J?"dark":"light"}function A3(Z){localStorage.setItem("mh-theme",Z),n1(),G6()}function G6(){let Z=document.getElementById("theme-color-meta");if(!Z)return;let J=document.body.classList.contains("mobile")&&!document.body.classList.contains("mobile-content"),Q=getComputedStyle(document.documentElement).getPropertyValue(J?"--sidebar":"--bg").trim();if(Q)Z.setAttribute("content",Q)}var l1="__MH_WEBUI_VERSION__".startsWith("__MH_")?null:"__MH_WEBUI_VERSION__";function GZ(Z,J){let Q=Z.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0),X=J.replace(/^v/,"").split(".").map((z)=>parseInt(z,10)||0);for(let z=0;z<Math.max(Q.length,X.length);z++){let W=(Q[z]??0)-(X[z]??0);if(W!==0)return W}return 0}function gG(Z){if(Z.kind==="local")return{title:"Blob 管理",subtitle:"已下载到这台设备的图片和大文件。清理只删本机副本,需要时从云端重新取回;桶里的原件始终不动。",deleteSemantics:"evict",list:async()=>{let[J,Q]=await Promise.all([G5(),f0("blobRefs").catch(()=>[])]),X=new Set(Q);return J.map((z)=>({hash:z.hash,size:z.size,contentType:z.content_type,lastAccess:z.accessed,pinned:z.pinned,pending:z.pending,clearable:!z.pinned&&!z.pending,referenced:X.has(z.hash)}))},clear:(J)=>g6(J),remove:(J)=>q5(J),pin:async(J,Q)=>{await Q5(J,Q)}};return{title:"Blob 管理",subtitle:"图片和大文件的本机副本。可清理项随时能腾空间(用时自动取回);没被任何文档或站点引用的孤儿可彻底删除。",deleteSemantics:"purge",list:()=>a.blobs(),clear:(J)=>a.clearBlobs(J),remove:(J)=>a.deleteBlobs(J),pin:async(J,Q)=>{await a.pinBlob(J,Q)}}}function o1(Z){W9($(mG,{source:gG(Z)},void 0,!1,void 0,this))}function qZ(Z){if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(1)} KB`;if(Z<1073741824)return`${(Z/1024/1024).toFixed(1)} MB`;return`${(Z/1024/1024/1024).toFixed(2)} GB`}function bG(Z){if(!Z)return"—";let J=Math.max(0,Math.round((Date.now()-Z)/1000));if(J<60)return"刚刚";let Q=Math.round(J/60);if(Q<60)return`${Q} 分钟前`;let X=Math.round(Q/60);if(X<24)return`${X} 小时前`;return`${Math.round(X/24)} 天前`}var q6={image:"图片",video:"视频",audio:"音频",file:"文件",other:"其他"},jG={image:"image",video:"video",audio:"audio",file:"file",other:"file"};function z8(Z){if(!Z)return"other";let J=Z.toLowerCase();if(J.startsWith("image/"))return"image";if(J.startsWith("video/"))return"video";if(J.startsWith("audio/"))return"audio";if(J.startsWith("application/")||J.startsWith("text/"))return"file";return"other"}function hG(Z){if(Z.pending)return"pending";if(Z.pinned)return"pinned";if(!Z.referenced)return"orphan";if(Z.clearable)return"clearable";return"retained"}var DG={pending:"待上传",pinned:"已固定",orphan:"孤儿",clearable:"可清理",retained:"保留"},r1={size:"大小",type:"类型",access:"最近使用"},N3=[{key:"all",label:"全部类型"},{key:"image",label:"图片"},{key:"video",label:"视频"},{key:"audio",label:"音频"},{key:"file",label:"文件"},{key:"other",label:"其他"}],w3=[{key:"all",label:"全部状态"},{key:"clearable",label:"可清理"},{key:"retained",label:"保留中"},{key:"pinned",label:"已固定"},{key:"pending",label:"待上传"},{key:"orphan",label:"孤儿"}];function xG({row:Z}){let J=z8(Z.contentType),[Q,X]=k(!1);if(J==="image"&&!Q)return $("img",{class:"blob-mgr-thumb",src:`/blob/${Z.hash}`,loading:"lazy",alt:"",onError:()=>X(!0)},void 0,!1,void 0,this);return $("span",{class:"blob-mgr-ico",children:$(f,{name:jG[J],cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function mG({source:Z}){let[J,Q]=k(null),[X,z]=k(null),[W,G]=k(!1),[q,H]=k(""),[Y,F]=k("all"),[K,w]=k("all"),[P,A]=k({key:"size",desc:!0}),[_,V]=k(new Set),D=async()=>{try{let I=await Z.list();Q(I),z(null),V((n)=>new Set([...n].filter((Z0)=>I.some((q0)=>q0.hash===Z0))))}catch(I){z(I.message)}};l(()=>{D()},[]);let v=(I,n)=>{if(n==="all")return!0;if(n==="clearable")return I.clearable&&!I.pinned;if(n==="retained")return!I.clearable&&!I.pending&&I.referenced;if(n==="pinned")return I.pinned;if(n==="pending")return I.pending;if(n==="orphan")return!I.referenced;return!0},R=_9(()=>{let I=q.trim().toLowerCase(),n=(J??[]).filter((q0)=>{let Q0=z8(q0.contentType);if(Y!=="all"&&Q0!==Y)return!1;if(!v(q0,K))return!1;if(I){if(!`${q0.hash} ${q0.contentType??""} ${q6[Q0]}`.toLowerCase().includes(I))return!1}return!0}),Z0=P.desc?-1:1;return[...n].sort((q0,Q0)=>{let J0=0;if(P.key==="size")J0=q0.size-Q0.size;else if(P.key==="access")J0=(q0.lastAccess??0)-(Q0.lastAccess??0);else J0=q6[z8(q0.contentType)].localeCompare(q6[z8(Q0.contentType)],"zh")||q0.size-Q0.size;return Z0*J0})},[J,q,Y,K,P]),x=(I)=>V((n)=>{let Z0=new Set(n);if(Z0.has(I))Z0.delete(I);else Z0.add(I);return Z0}),S=R.length>0&&R.every((I)=>_.has(I.hash)),O=()=>V((I)=>{if(R.every((n)=>I.has(n.hash))){let n=new Set(I);for(let Z0 of R)n.delete(Z0.hash);return n}return new Set([...I,...R.map((n)=>n.hash)])}),N=(J??[]).filter((I)=>_.has(I.hash)),L=N.filter((I)=>I.clearable&&!I.pinned),B=N.filter((I)=>!I.referenced),M=N.reduce((I,n)=>I+n.size,0),y=async(I)=>{G(!0);try{await Z.pin(I.hash,!I.pinned),await D()}catch(n){s(n.message)}finally{G(!1)}},E=async()=>{let I=L.map((n)=>n.hash);if(!I.length)return;G(!0);try{let n=await Z.clear(I);s(n.cleared?`已清理 ${n.cleared} 项 · 腾出 ${qZ(n.freedBytes)}`:"没有可清理的项"),await D()}catch(n){s(n.message)}finally{G(!1)}},c=async()=>{let I=B;if(!I.length)return;let n=I.reduce((Q0,J0)=>Q0+J0.size,0),Z0=Z.deleteSemantics==="evict";if(!await R0({title:"删除孤儿 blob",message:Z0?`将从这台设备移除 ${I.length} 个未被任何文档/站点引用的 blob,约 ${qZ(n)}。桶里的原件不动,需要时仍可重新下载。`:`将永久删除 ${I.length} 个未被任何文档/站点引用的 blob,约 ${qZ(n)}。此操作不可恢复。`,confirmLabel:"删除",danger:!0}))return;G(!0);try{let Q0=await Z.remove(I.map((J0)=>J0.hash));s(Q0.removed?`已删除 ${Q0.removed} 项 · 腾出 ${qZ(Q0.freedBytes)}`:"没有可删除的孤儿"),await D()}catch(Q0){s(Q0.message)}finally{G(!1)}},r=(I)=>y0(I,(n)=>$(o,{children:[$(j0,{children:"排序依据"},void 0,!1,void 0,this),Object.keys(r1).map((Z0)=>$(z0,{label:r1[Z0]+(P.key===Z0?P.desc?" ↓":" ↑":""),checked:P.key===Z0,onClick:()=>{A((q0)=>({key:Z0,desc:q0.key===Z0?!q0.desc:!0})),n()}},Z0,!1,void 0,this))]},void 0,!0,void 0,this)),$0=(I)=>y0(I,(n)=>$(o,{children:[$(j0,{children:"按类型"},void 0,!1,void 0,this),N3.map((Z0)=>$(z0,{label:Z0.label,checked:Y===Z0.key,onClick:()=>{F(Z0.key),n()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),m=(I)=>y0(I,(n)=>$(o,{children:[$(j0,{children:"按状态"},void 0,!1,void 0,this),w3.map((Z0)=>$(z0,{label:Z0.label,checked:K===Z0.key,onClick:()=>{w(Z0.key),n()}},Z0.key,!1,void 0,this))]},void 0,!0,void 0,this)),g=N3.find((I)=>I.key===Y).label,u=w3.find((I)=>I.key===K).label;return $(q9,{title:Z.title,sub:Z.subtitle,width:760,footer:$(o,{children:[$("div",{class:"blob-mgr-selsum",children:_.size>0?$(o,{children:["已选 ",$("b",{children:_.size},void 0,!1,void 0,this)," 项 · ",qZ(M)]},void 0,!0,void 0,this):J?$(o,{children:["共 ",J.length," 项 · ",qZ(J.reduce((I,n)=>I+n.size,0))]},void 0,!0,void 0,this):""},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",disabled:W||!L.length,onClick:()=>void E(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"清理所选",L.length?`(${L.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-danger",disabled:W||!B.length,onClick:()=>void c(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),"删除孤儿",B.length?`(${B.length})`:""]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",onClick:()=>c0(),children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:$("div",{class:"blob-mgr",children:[$("div",{class:"blob-mgr-bar",children:[$("div",{class:"blob-mgr-search",children:[$(f,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{class:"blob-mgr-search-in",placeholder:"搜索 hash 或类型…",value:q,onInput:(I)=>H(I.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn"+(Y!=="all"?" on":""),onClick:(I)=>$0(I),children:[$(f,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),g]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn"+(K!=="all"?" on":""),onClick:(I)=>m(I),children:[$(f,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),u]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-mgr-fbtn",onClick:(I)=>r(I),children:[$(f,{name:"sort",cls:"ico sm"},void 0,!1,void 0,this),r1[P.key],P.desc?" ↓":" ↑"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),X?$("div",{class:"blob-mgr-empty",children:["无法读取:",X]},void 0,!0,void 0,this):!J?$("div",{class:"blob-mgr-empty",children:"加载中…"},void 0,!1,void 0,this):R.length===0?$("div",{class:"blob-mgr-empty",children:J.length?"没有符合条件的项":"这台设备还没有缓存的 blob"},void 0,!1,void 0,this):$("div",{class:"blob-mgr-list",children:[$("div",{class:"blob-mgr-row blob-mgr-head",children:[$("label",{class:"blob-mgr-check",children:$("input",{type:"checkbox",checked:S,onChange:O},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{},void 0,!1,void 0,this),$("span",{children:"名称"},void 0,!1,void 0,this),$("span",{class:"blob-mgr-r",children:"大小"},void 0,!1,void 0,this),$("span",{children:"状态"},void 0,!1,void 0,this),$("span",{class:"blob-mgr-age",children:"最近使用"},void 0,!1,void 0,this),$("span",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R.map((I)=>{let n=z8(I.contentType),Z0=hG(I);return $("div",{class:"blob-mgr-row"+(_.has(I.hash)?" sel":""),children:[$("label",{class:"blob-mgr-check",children:$("input",{type:"checkbox",checked:_.has(I.hash),onChange:()=>x(I.hash)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(xG,{row:I},void 0,!1,void 0,this),$("div",{class:"blob-mgr-name",children:[$("span",{class:"blob-mgr-hash",children:I.hash.slice(0,12)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-type",children:I.contentType??q6[n]},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("span",{class:"blob-mgr-r blob-mgr-size",children:qZ(I.size)},void 0,!1,void 0,this),$("span",{class:"blob-mgr-badge s-"+Z0,children:DG[Z0]},void 0,!1,void 0,this),$("span",{class:"blob-mgr-age",children:bG(I.lastAccess)},void 0,!1,void 0,this),$("button",{class:"blob-mgr-pin"+(I.pinned?" on":""),disabled:W||I.pending,title:I.pinned?"取消固定":"固定(不被自动清理)",onClick:()=>void y(I),children:$(f,{name:"pin",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},I.hash,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var W8={localDevice:{label:"本机",subtitle:"这台设备上的副本",icon:"monitor"},cloudWorkspace:{label:"云端工作区",subtitle:"你常用的在线工作区",icon:"globe"},localWorkspace:{label:"本机工作区",subtitle:"这台电脑上的工作区",icon:"monitor"}};function M3(){return{id:"local",kind:"local",label:W8.localDevice.label,subtitle:W8.localDevice.subtitle,icon:W8.localDevice.icon,isDefault:!1,routeOp:{via:"replica"},deleteSemantics:"evict"}}function H6(Z){let J=Z==="desktop"?W8.localWorkspace:W8.cloudWorkspace;return{id:"server",kind:"server",label:J.label,subtitle:J.subtitle,icon:J.icon,isDefault:!1,routeOp:{via:"http"},deleteSemantics:"purge"}}function uG(Z){if(Z.surface==="cli")return"cli";if(Z.surface==="desktop")return"sidecar";if(Z.dataHome==="local")return"bucket-replica";return Z.hold==="replica"?"offline-replica":"thin"}function C3(Z){let J=uG(Z),Q;switch(J){case"thin":Q=[H6(Z.surface)];break;case"offline-replica":Q=[M3(),H6(Z.surface)];break;case"bucket-replica":Q=[M3()];break;case"sidecar":Q=[H6(Z.surface)];break;case"cli":Q=[H6(Z.surface)];break;default:throw Error(`scopesFor: unhandled cell ${J}`)}return Q.map((X,z)=>({...X,isDefault:z===0}))}function y3({scopes:Z,value:J,onChange:Q,variant:X,sub:z}){if(Z.length===0)return null;let W=Z.find((H)=>H.id===J)??Z[0],G=z&&W.subtitle?$("div",{class:"scope-sub",children:W.subtitle},void 0,!1,void 0,this):null;if(Z.length===1)return $("div",{class:"scope-pick",children:[$("span",{class:"scope-pill",children:[$(f,{name:W.icon},void 0,!1,void 0,this),W.label]},void 0,!0,void 0,this),G]},void 0,!0,void 0,this);if((X??(Z.length>3?"menu":"segmented"))==="menu")return $("div",{class:"scope-pick",children:[$("button",{class:"btn btn-secondary scope-trigger",onClick:(H)=>y0(H,(Y)=>Z.map((F)=>$(z0,{icon:F.icon,label:F.label,sublabel:F.subtitle,checked:F.id===W.id,onClick:()=>{Q(F.id),Y()}},F.id,!1,void 0,this))),children:[$(f,{name:W.icon},void 0,!1,void 0,this),W.label,$(f,{name:"chevronDown",cls:"ico sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G]},void 0,!0,void 0,this);return $("div",{class:"scope-pick",children:[$("div",{class:"scope-seg",role:"tablist",children:Z.map((H)=>$("button",{class:"scope-seg-item"+(H.id===W.id?" sel":""),role:"tab","aria-selected":H.id===W.id,onClick:()=>Q(H.id),children:[$(f,{name:H.icon},void 0,!1,void 0,this),H.label]},H.id,!0,void 0,this))},void 0,!1,void 0,this),G]},void 0,!0,void 0,this)}var v3=()=>V9().surface==="desktop",EG=[{value:"light",icon:"sun",name:"浅色",desc:"始终使用明亮界面"},{value:"dark",icon:"moon",name:"深色",desc:"始终使用暗色界面"},{value:"system",icon:"monitor",name:"跟随系统",desc:"随操作系统外观自动切换"}];function G8({id:Z,label:J,children:Q}){return $("div",{class:"set-group",id:Z,children:[$("div",{class:"set-group-label",children:J},void 0,!1,void 0,this),$("div",{class:"set-panel",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var M9={appearance:"appearance",quicknote:"quicknote",sync:"sync",storage:"storage",devices:"devices"},pG=[{id:M9.appearance,label:"外观",icon:"sun",show:()=>!0},{id:M9.quicknote,label:"快速笔记",icon:"pin",show:()=>typeof window<"u"&&!!window.metahubDesktop?.quicknote},{id:M9.sync,label:"同步",icon:"cloudCheck",show:()=>!0},{id:M9.storage,label:"存储",icon:"database",show:()=>!0},{id:M9.devices,label:"设备与授权",icon:"monitor",show:()=>!U9()}];function dG({sections:Z}){let[J,Q]=k(Z[0]?.id??""),X=W0(null),z=W0(0),W=Z.map((q)=>q.id).join("|");l(()=>{let q=document.querySelector(".content"),H=0,Y=()=>{if(Date.now()<z.current)return;if(q?q.scrollTop+q.clientHeight>=q.scrollHeight-2:window.innerHeight+window.scrollY>=document.documentElement.scrollHeight-2){Q(Z[Z.length-1].id);return}let P=Math.max(q?q.getBoundingClientRect().top:0,0)+72,A=Z[0].id;for(let _ of Z){let V=document.getElementById(_.id);if(!V)continue;if(V.getBoundingClientRect().top-P<=1)A=_.id;else break}Q(A)},F=()=>{if(H)return;H=requestAnimationFrame(()=>{H=0,Y()})};Y();let K=new IntersectionObserver(Y,{root:q,rootMargin:"-72px 0px -70% 0px",threshold:[0,1]});for(let w of Z){let P=document.getElementById(w.id);if(P)K.observe(P)}return q?.addEventListener("scroll",F,{passive:!0}),window.addEventListener("scroll",F,{passive:!0}),()=>{if(K.disconnect(),q?.removeEventListener("scroll",F),window.removeEventListener("scroll",F),H)cancelAnimationFrame(H)}},[W]),l(()=>{let q=X.current;if(!q)return;let H=q.querySelector(`.set-rail-row[data-sec="${J}"]`);if(!H)return;q.style.setProperty("--mark-y",`${H.offsetTop}px`),q.style.setProperty("--mark-h",`${H.offsetHeight}px`)},[J,W]);let G=(q)=>{z.current=Date.now()+600,Q(q),document.getElementById(q)?.scrollIntoView({behavior:"smooth",block:"start"})};return $("div",{class:"set-rail-slot",children:$("nav",{class:"set-rail",ref:X,"aria-label":"设置区块",children:[$("span",{class:"set-rail-mark"},void 0,!1,void 0,this),Z.map((q)=>$("button",{"data-sec":q.id,class:"set-rail-row"+(q.id===J?" active":""),"aria-current":q.id===J?"true":void 0,onClick:()=>G(q.id),children:[$("span",{class:"set-rail-ico",children:$(f,{name:q.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"set-rail-label",children:q.label},void 0,!1,void 0,this)]},q.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function T3({onUpdatePending:Z}={}){let[J,Q]=k(a1()),X=(W)=>{A3(W),Q(W)},z=pG.filter((W)=>W.show());return $("div",{class:"set-shell",children:$("div",{class:"set-page",children:[z.length>=2&&$(dG,{sections:z},void 0,!1,void 0,this),$("div",{class:"set-title",children:"设置"},void 0,!1,void 0,this),$("div",{class:"set-sub",children:"个性化你的 Metahub 工作区。"},void 0,!1,void 0,this),$(G8,{id:M9.appearance,label:"外观",children:$("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"颜色主题"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择界面的明暗外观。"},void 0,!1,void 0,this),$("div",{class:"theme-grid",children:EG.map((W)=>$("button",{class:"theme-card"+(J===W.value?" sel":""),"aria-pressed":J===W.value,onClick:()=>X(W.value),children:[$("span",{class:"tc-check",children:$(f,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(f,{name:W.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-name",children:W.name},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:W.desc},void 0,!1,void 0,this)]},W.value,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),typeof window<"u"&&window.metahubDesktop?.quicknote&&$(G8,{id:M9.quicknote,label:"快速笔记",children:$(Fq,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(G8,{id:M9.sync,label:"同步",children:[!v3()&&$(sG,{},void 0,!1,void 0,this),$(Zq,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(G8,{id:M9.storage,label:"存储",children:$(cG,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),!U9()&&$(G8,{id:M9.devices,label:"设备与授权",children:[$(Uq,{},void 0,!1,void 0,this),$(Lq,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$(Yq,{onUpdatePending:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function cG(){let Z=C3(V9()).filter((W)=>W.kind!=="bucket"),[J,Q]=k(Z[0]?.id??"server"),X=Z.find((W)=>W.id===J)??Z[0],z=Z.length>1;return $(o,{children:[$("div",{class:"set-block",children:[z&&$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"管理哪里的存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(y3,{scopes:Z,value:X.id,onChange:Q,sub:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X.kind==="local"?$(rG,{scope:X},void 0,!1,void 0,this):$(lG,{scope:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function n0(Z){if(Z<1024)return`${Z} B`;if(Z<1048576)return`${(Z/1024).toFixed(1)} KB`;if(Z<1073741824)return`${(Z/1024/1024).toFixed(1)} MB`;return`${(Z/1024/1024/1024).toFixed(2)} GB`}function iG(Z){let J=Math.max(0,Math.round((Date.now()-Z)/1000));if(J<60)return"刚刚";let Q=Math.round(J/60);if(Q<60)return`${Q} 分钟前`;let X=Math.round(Q/60);if(X<24)return`${X} 小时前`;return`${Math.round(X/24)} 天前`}var aG=300000,nG=()=>typeof matchMedia<"u"&&matchMedia("(prefers-reduced-motion: reduce)").matches;function R3(Z,J=600){let[Q,X]=k(Z),z=W0(Z);return l(()=>{if(nG()){z.current=Z,X(Z);return}let W=z.current,G=performance.now(),q=0,H=(Y)=>{let F=Math.min(1,(Y-G)/J),K=1-Math.pow(1-F,3);if(X(Math.round(W+(Z-W)*K)),F<1)q=requestAnimationFrame(H);else z.current=Z};return q=requestAnimationFrame(H),()=>cancelAnimationFrame(q)},[Z]),Q}function lG({scope:Z}){let[J,Q]=k(null),[X,z]=k(null),[W,G]=k(!1),[q,H]=k(!1),Y=()=>{a.blobCache().then((J0)=>{Q(J0),z(null)}).catch((J0)=>z(J0.message))},F=async(J0=!1)=>{H(!0);try{Q(await a.verifyBlobCache()),z(null)}catch(B0){if(J0)s(B0.message)}finally{H(!1)}};l(()=>{Y(),F()},[]);let[K,w]=k(!1);l(()=>{let J0=requestAnimationFrame(()=>w(!0));return()=>cancelAnimationFrame(J0)},[]);let P=R3(J?.stats.clearableBytes??0);if(X||!J)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:X?`无法读取缓存信息:${X}`:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{stats:A,policy:_,nodes:V,buckets:D,quotaBytes:v,pinnedBytes:R}=J,x=[...D,..._.fullNodes.filter((J0)=>J0.startsWith("s3://")&&!D.some((B0)=>B0.url===J0)).map((J0)=>({url:J0,label:null,bucket:null}))],S=async(J0)=>{G(!0);try{await a.setBlobPolicy({full_nodes:J0}),await F()}catch(B0){s(B0.message)}finally{G(!1)}},O=(J0)=>{let B0=new Set(_.fullNodes);if(B0.has(J0))B0.delete(J0);else B0.add(J0);S([...B0])},N=async(J0)=>{G(!0);try{await a.setBlobPolicy({redundancy:J0}),await F()}catch(B0){s(B0.message)}finally{G(!1)}},L=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${n0(A.clearableBytes)}。只删别处已备份的副本,文件不会丢,用到时自动取回。`,confirmLabel:"清理"}))return;G(!0);try{let B0=await a.clearBlobCache();s(B0.cleared?`已腾出 ${n0(B0.freedBytes)}(${B0.cleared} 项)`:"暂时没有可清理的"),Y()}catch(B0){s(B0.message)}finally{G(!1)}},B=Math.max(1,A.totalBytes),M=Math.max(0,A.retainedBytes-R),y=(J0)=>J0/B*100,E=y(A.clearableBytes),c=y(M),r=y(R),$0=A.clearableBytes>0,m=_.fullNodes.length===0,g=V.find((J0)=>J0.self),u=!!g&&_.fullNodes.includes(g.nodeId),I=!m&&!u&&J.lastVerifiedAt==null,n=u?"self-full":m?"no-anchor":I?"unverified":$0?"free":"safe",Z0=J.lastVerifiedAt==null||Date.now()-J.lastVerifiedAt>aG,q0=v>0&&A.totalBytes>v&&(J.unreachableAnchors.length>0||Z0),Q0=(J0)=>K?J0:0;return $("div",{class:"set-block blob-pane",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"图片和大文件会先存在这台设备上,打开快。只要别处留了一份长期备份,这里随时能清——文件不会丢,需要时自动取回。"},void 0,!1,void 0,this),$("div",{class:"blob-hero",children:[$("div",{class:"blob-hero-main",children:[$("div",{class:"blob-legend",children:[$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot free"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"可释放"},void 0,!1,void 0,this),$("b",{children:n0(A.clearableBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot keep"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"保留中"},void 0,!1,void 0,this),$("b",{children:n0(M)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),R>0&&$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot pin"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"已固定"},void 0,!1,void 0,this),$("b",{children:n0(R)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-total",children:["共 ",A.count," 项 · ",n0(A.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:W||q||!$0,onClick:()=>void L(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),$0?`清理腾出 ${n0(A.clearableBytes)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-verify-btn",disabled:W||q,onClick:()=>void F(!0),children:[$(f,{name:"history",cls:"ico sm"+(q?" spin":"")},void 0,!1,void 0,this),q?"检查中…":"重新检查"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-manage-btn",onClick:()=>o1(Z),children:[$(f,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),"Blob 管理"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-verify-at",children:q?"":J.lastVerifiedAt!=null?`${iG(J.lastVerifiedAt)}检查过`:"未检查"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-ring"+(n==="free"?" has-free":n==="safe"?" all-safe":" locked"),children:[$("svg",{viewBox:"0 0 100 100",class:"blob-ring-svg","aria-hidden":"true",children:$("g",{transform:"rotate(-90 50 50)",children:[$("circle",{class:"blob-ring-track",cx:"50",cy:"50",r:"42",pathLength:100},void 0,!1,void 0,this),r>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Q0(r)} ${100-Q0(r)}`,"stroke-dashoffset":-(E+c)},void 0,!1,void 0,this),$("circle",{class:"blob-seg keep",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Q0(c)} ${100-Q0(c)}`,"stroke-dashoffset":-E},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${Q0(E)} ${100-Q0(E)}`,"stroke-dashoffset":0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-center",children:[n==="free"&&$(o,{children:[$("div",{class:"blob-ring-big",children:n0(P)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),n==="safe"&&$(o,{children:[$("div",{class:"blob-ring-check",children:$(f,{name:"check",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"都备份好了"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"暂时无需清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),n==="no-anchor"&&$(o,{children:[$("div",{class:"blob-ring-lock",children:$(f,{name:"lock",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"未设置长期备份"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"指定后才能清理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),n==="unverified"&&$(o,{children:[$("div",{class:"blob-ring-lock",children:$(f,{name:"history",cls:"ico"+(q?" spin":"")},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:q?"检查中…":"未检查"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"检查后才知道"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),n==="self-full"&&$(o,{children:[$("div",{class:"blob-ring-lock",children:$(f,{name:"database",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"本机长期备份库"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"保留全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-anchors",children:[$("div",{class:"blob-sub-title",children:"长期备份保存在"},void 0,!1,void 0,this),V.map((J0)=>{let B0=_.fullNodes.includes(J0.nodeId);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(f,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[J0.label||J0.nodeId,J0.self?" · 本机":""]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:B0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(B0?" on":""),role:"switch","aria-checked":B0,disabled:W,onClick:()=>O(J0.nodeId),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},J0.nodeId,!0,void 0,this)}),x.map((J0)=>{let B0=_.fullNodes.includes(J0.url);return $("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(f,{name:"database",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:[J0.label||J0.bucket||J0.url," · 云端"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:B0?"正在长期保存全部副本":"开启后保存全部副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"switch"+(B0?" on":""),role:"switch","aria-checked":B0,disabled:W,onClick:()=>O(J0.url),children:$("span",{class:"switch-knob"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},J0.url,!0,void 0,this)}),m&&$("div",{class:"blob-hint",children:"还没设置长期备份。先指定一处,之后就能放心清理这台设备。"},void 0,!1,void 0,this),_.fullNodes.length>1&&$("div",{class:"blob-strategy",children:[$("div",{class:"blob-sub-title",children:"清理前先确认"},void 0,!1,void 0,this),$("div",{class:"seg",children:[$("button",{class:"seg-opt"+(_.redundancy==="any"?" on":""),disabled:W||q,onClick:()=>void N("any"),children:[$("span",{class:"seg-opt-t",children:"有一处备份就行"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更省空间"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"seg-opt"+(_.redundancy==="all"?" on":""),disabled:W||q,onClick:()=>void N("all"),children:[$("span",{class:"seg-opt-t",children:"每处都备份好"},void 0,!1,void 0,this),$("span",{class:"seg-opt-s",children:"更稳妥"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),J.unreachableAnchors.length>0&&$("div",{class:"blob-hint warn",children:"部分长期备份连不上,相关文件暂不清理。"},void 0,!1,void 0,this),q0&&$("div",{class:"blob-hint warn",children:"空间超了,但备份暂时离线,先没清理。"},void 0,!1,void 0,this),v>0&&$("div",{class:"blob-foot",children:["缓存超过 ",n0(v)," 时,自动清理最久没用、已有备份的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function rG({scope:Z}){let[J,Q]=k(null),[X,z]=k({count:0,bytes:0}),[W,G]=k(null),[q,H]=k(null),[Y,F]=k(!1),K=async()=>{try{let[B,M]=await Promise.all([z5(),xZ()]);Q(B),z({count:M.length,bytes:M.reduce((y,E)=>y+E.bytes.byteLength,0)})}catch{}if(navigator.storage?.estimate)try{let B=await navigator.storage.estimate();if(B.usage!=null)G(B.usage)}catch{}if(navigator.storage?.persisted)try{H(await navigator.storage.persisted())}catch{}};l(()=>{K()},[]);let[w,P]=k(!1);l(()=>{let B=requestAnimationFrame(()=>P(!0));return()=>cancelAnimationFrame(B)},[]);let A=J?Math.max(0,J.totalBytes-J.pinnedBytes):0,_=R3(A);if(!J)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"加载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let V=async()=>{if(!await R0({title:"清理腾空间",message:`将释放约 ${n0(A)}。只清本机缓存,文件已存在云桶,用到时自动取回。待上传的内容不会动。`,confirmLabel:"清理"}))return;F(!0);try{let M=await W5();s(M.cleared?`已腾出 ${n0(M.freedBytes)}(${M.cleared} 项)`:"暂时没有可清理的"),await K()}catch(M){s(M.message)}finally{F(!1)}},D=async()=>{if(!navigator.storage?.persist)return;F(!0);try{let B=await navigator.storage.persist();H(B),s(B?"已设为常驻,系统不会自动清理":"浏览器暂未授予常驻")}catch(B){s(B.message)}finally{F(!1)}},v=Math.max(1,J.totalBytes),R=(B)=>B/v*100,x=R(A),S=R(J.pinnedBytes),O=(B)=>w?B:0,N=A>0,L=N?"free":"safe";return $("div",{class:"set-block blob-pane",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"本机存储"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"图片和大文件会先缓存在这台设备上,打开快。云桶里始终有一份,所以这里随时能清——文件不会丢,需要时自动取回。"},void 0,!1,void 0,this),$("div",{class:"blob-hero",children:[$("div",{class:"blob-hero-main",children:[$("div",{class:"blob-legend",children:[$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot free"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"可释放"},void 0,!1,void 0,this),$("b",{children:n0(A)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J.pinnedBytes>0&&$("div",{class:"blob-legend-row",children:[$("span",{class:"blob-dot pin"},void 0,!1,void 0,this)," ",$("span",{class:"blob-legend-k",children:"已固定"},void 0,!1,void 0,this),$("b",{children:n0(J.pinnedBytes)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-total",children:["共 ",J.count," 项 · ",n0(J.totalBytes)]},void 0,!0,void 0,this),$("div",{class:"blob-actions",children:[$("button",{class:"btn btn-secondary blob-clear",disabled:Y||!N,onClick:()=>void V(),children:[$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this),N?`清理腾出 ${n0(A)}`:"无需清理"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost blob-manage-btn",onClick:()=>o1(Z),children:[$(f,{name:"filter",cls:"ico sm"},void 0,!1,void 0,this),"Blob 管理"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-ring"+(L==="free"?" has-free":" all-safe"),children:[$("svg",{viewBox:"0 0 100 100",class:"blob-ring-svg","aria-hidden":"true",children:$("g",{transform:"rotate(-90 50 50)",children:[$("circle",{class:"blob-ring-track",cx:"50",cy:"50",r:"42",pathLength:100},void 0,!1,void 0,this),S>0&&$("circle",{class:"blob-seg pin",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${O(S)} ${100-O(S)}`,"stroke-dashoffset":-x},void 0,!1,void 0,this),$("circle",{class:"blob-seg free",cx:"50",cy:"50",r:"42",pathLength:100,"stroke-dasharray":`${O(x)} ${100-O(x)}`,"stroke-dashoffset":0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-center",children:L==="free"?$(o,{children:[$("div",{class:"blob-ring-big",children:n0(_)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"可释放"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$(o,{children:[$("div",{class:"blob-ring-check",children:$(f,{name:"check",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap strong",children:"已是最省"},void 0,!1,void 0,this),$("div",{class:"blob-ring-cap",children:"暂无缓存可清"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"blob-anchors",children:[X.count>0&&$("div",{class:"blob-hint warn",children:[X.count," 项(约 ",n0(X.bytes),")还没上传到云桶,仅存在这台设备上。建议先「立即同步」再清理——清理不会动这些待上传的内容。"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-row",children:[$("span",{class:"blob-anchor-ico",children:$(f,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"blob-anchor-main",children:[$("div",{class:"blob-anchor-name",children:["常驻存储",q==null?"":q?" · 已开启":" · 未开启"]},void 0,!0,void 0,this),$("div",{class:"blob-anchor-sub",children:q?"系统空间紧张时不会自动清掉本地数据。":"开启后,系统空间紧张时也不会自动清掉本地数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q!==!0&&$("button",{class:"btn btn-ghost",disabled:Y||!navigator.storage?.persist,onClick:()=>void D(),children:"请求常驻"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W!=null&&$("div",{class:"blob-foot",children:["此浏览器为本工作区共占用约 ",n0(W),"(含本地数据库与缓存)。缓存超过 ",n0(sJ)," 时自动清理最久没用、已在云桶的,你固定的不动。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function oG(){if(typeof Worker>"u"||typeof navigator>"u")return"此浏览器不支持 Web Worker。";if(!window.isSecureContext)return"需要 HTTPS(安全上下文)。当前是 http:// 访问,浏览器不开放离线所需的 OPFS 与 Service Worker——给服务器配置 TLS(--tls-cert/--tls-key,或 Caddy / Tailscale Serve 反代;iPhone 需要受信任的证书),或在本机用 localhost 访问。";if(!navigator.storage?.getDirectory)return"此浏览器不支持 OPFS 本地存储(需要 Safari 17+ / Chrome / Firefox 较新版本)。";return null}function tG({kind:Z,noOrigin:J,hasServerBucket:Q,deviceDirect:X}){let z=Z==="trusted",W=!J,G=W&&Q,q=X,H=G||q,Y=q&&W&&H;return $("span",{class:"md-graph"+(z?" trusted":" light")+(Y?" has-direct":""),"aria-hidden":"true",children:[$("span",{class:"md-node self",children:[$("span",{class:"md-node-ico",children:$(f,{name:"monitor",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"本设备"},void 0,!1,void 0,this),$("span",{class:"md-node-tag",children:z?"存一份":"不留存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W&&$(o,{children:[$("span",{class:"md-wire bi"},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(f,{name:"globe",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"服务器"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),H&&$(o,{children:[$("span",{class:"md-wire "+(W?"to":"bi")},void 0,!1,void 0,this),$("span",{class:"md-node",children:[$("span",{class:"md-node-ico",children:$(f,{name:"cube",cls:"ico"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"md-node-name",children:"云桶"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y&&$("span",{class:"md-direct","data-label":"直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sG(){let Z=oG(),[J,Q]=k(H9()),[X,z]=k(jZ()),[W,G]=k(!1),[q,H]=k(null),Y=U9(),[F,K]=k(!1),[w,P]=k(!1);l(()=>{let N=!0,L=async()=>{let M=H9()?(await f0("listStoragePeers").catch(()=>[])).length>0:!1,y=Y?!1:(await a.listServerS3Peers().catch(()=>[])).length>0;if(!N)return;P(M),K(y)};L();let B=F9(L);return()=>{N=!1,B()}},[Y]);let[A,_]=k(null),V=(N,L)=>{let B=L.currentTarget,M=B?.closest(".set-panel"),y=B?.closest(".sync-holds");if(!M||!y)return;let E=M.getBoundingClientRect(),c=248,r=28;if(window.innerWidth-E.right<c+r)return _(null);(async()=>{let $0=H9()?(await f0("listStoragePeers").catch(()=>[])).length>0:!1,m=Y?!1:(await a.listServerS3Peers().catch(()=>[])).length>0;P($0),K(m)})(),_({kind:N,left:E.right+r,top:y.getBoundingClientRect().top})},D=()=>_(null);l(()=>F9((N)=>z({...N})),[]),l(()=>{if(!J||!navigator.storage?.estimate)return;let N=!0,L=()=>navigator.storage.estimate().then((M)=>{if(N&&M.usage!=null)H((M.usage/1024/1024).toFixed(1))});L();let B=F9(()=>void L());return()=>{N=!1,B()}},[J]);let v=async()=>{if(!await R0({title:"重置本地副本",message:"将删除此浏览器里的全部本地数据(服务器数据不受影响),并停用离线副本。未同步的本地修改会丢失——建议先「立即同步」。",confirmLabel:"删除并重置",danger:!0}))return;G(!0);try{await oJ(),Q(!1),s("本地副本已重置")}catch(L){s(`重置失败:${L.message}`)}finally{G(!1)}},R=async()=>{G(!0);try{await nJ(),Q(!0),s("离线副本已启用,正在下载数据…")}catch(N){s(`启用失败:${N.message}`)}finally{G(!1)}},x=async()=>{if(!await R0({title:"停用离线副本",message:"此浏览器将恢复纯在线模式。已下载的本地数据保留在浏览器里,重新启用后从断点续传。",confirmLabel:"停用",danger:!0}))return;let L=typeof navigator<"u"&&"serviceWorker"in navigator&&navigator.serviceWorker.controller!=null;G(!0);try{if(await rJ(),Q(!1),s("已停用离线副本"),L)location.reload()}finally{G(!1)}},S=()=>{if(!J)return"轻量模式 · 仅在线读写,断网不可用。";if(X.state==="error")return`副本异常(已自动回退在线模式):${X.error??"未知错误"}`;if(X.state==="hydrating")return`正在下载数据… 已接收 ${X.hydrated??0} 条变更`;if(X.lastSync){let N=kZ(X.lastSync.at);return X.lastSync.ok?`本地优先已生效 · 上次同步 ${N}(推送 ${X.lastSync.pushed} / 拉取 ${X.lastSync.pulled})`:`上次同步失败(${N}):${X.lastSync.error??""} — 本地读写不受影响,恢复网络后自动重试`}return"等待首次同步…"};if(Z)return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"这台设备为轻量模式:仅在线读写,不在本机保存。"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["⚠ 此设备无法「信任并本机保存」:",Z]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);let O=(N)=>$(tG,{kind:N,noOrigin:Y,hasServerBucket:F,deviceDirect:N==="trusted"&&w},void 0,!1,void 0,this);return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"设置这台设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"选择这台设备如何使用工作区,之后可随时修改。"},void 0,!1,void 0,this),$("div",{class:"theme-grid sync-holds",children:[$("button",{class:"theme-card mode-card"+(!J?" sel":""),"aria-pressed":!J,disabled:W,onClick:()=>J&&x(),onMouseEnter:(N)=>V("light",N),onMouseLeave:D,onFocus:(N)=>V("light",N),onBlur:D,children:[$("span",{class:"tc-check",children:$(f,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(f,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"轻量模式"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:"仅在线使用"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"theme-card mode-card"+(J?" sel":""),"aria-pressed":J,disabled:W,onClick:()=>!J&&R(),onMouseEnter:(N)=>V("trusted",N),onMouseLeave:D,onFocus:(N)=>V("trusted",N),onBlur:D,children:[$("span",{class:"tc-check",children:$(f,{name:"check"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"tc-ico",children:$(f,{name:"lock"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"mode-text",children:[$("span",{class:"tc-name",children:"信任此设备"},void 0,!1,void 0,this),$("span",{class:"tc-desc",children:W&&!J?"启用中…":"本机保存,支持同步"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),A&&$("div",{class:"mode-aside",style:{top:A.top+"px",left:A.left+"px"},children:$("div",{class:"mp-show",children:[O(A.kind),$("span",{class:"mp-cap",children:A.kind==="trusted"?"本机存一份 · 离线也能读写":"仅在线读写 · 不在本机保存"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),J&&$("div",{class:"peer-actions",style:{marginTop:12},children:[$("button",{class:"btn btn-secondary",disabled:W,onClick:()=>o9(),children:[$(f,{name:"share",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost",disabled:W,onClick:v,children:"重置本地副本"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:[S(),J&&X.node?` · 节点 ${X.node}`:"",J&&q?` · 本地占用 ${q} MB`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Y6(Z){try{return new URL(Z).host}catch{return Z}}function eG(Z){return Z.length<=8?Z.slice(0,2)+"…":Z.slice(0,4)+"…"+Z.slice(-4)}function Zq(){let Z=U9(),J=v3(),[Q,X]=k(H9()),[z,W]=k(null),[G,q]=k(null),H=()=>{if(H9())f0("listStoragePeers").then(q).catch(()=>{});else q(null)},Y=()=>{if(H(),!Z)a.listServerS3Peers().then(W).catch((O)=>s(`加载失败:${O.message}`))};l(()=>{return Y(),F9(()=>{X(H9()),H()})},[]);let F=new Set((G??[]).map((O)=>O.url)),K=!J&&Q,w=()=>W9($(Hq,{toServer:!Z,alsoReplica:!Z&&K,onDone:()=>{c0(),Y()}},void 0,!1,void 0,this)),P=(O)=>W9($(Jq,{peer:O,onDone:()=>{c0(),Y()}},void 0,!1,void 0,this)),A=async()=>{try{if(Z)await f0("sync");else if(await Promise.all((z??[]).map((O)=>a.syncPeer(O.url))),K)await f0("sync").catch(()=>{});s("已触发同步"),Y()}catch(O){s(`同步失败:${O.message}`)}},_=async(O,N)=>{if(!await R0({title:"移除存储桶",message:`确定移除 ${N}?将停止与该存储桶同步(桶内数据不受影响)。`,confirmLabel:"移除",danger:!0}))return;if(Z)await f0("removeStorageReplica",O).catch((B)=>s(B.message));else if(await a.removePeer(O).catch((B)=>s(B.message)),K)await f0("removeStorageReplica",O).catch(()=>{});Y()},V=async(O,N)=>{if(!await R0({title:"取消本设备直连",message:`这台设备将不再直连 ${N}(存储桶仍在服务器上;本设备在线时照常经服务器同步)。`,confirmLabel:"取消直连",danger:!0}))return;await f0("removeStorageReplica",O).catch((B)=>s(B.message)),Y()},D=(O)=>Z?f0("storagePeerConfig",O):a.serverS3Config(O),v=((Z?G:z)??[]).map((O)=>({url:O.url,name:O.label||O.bucket||O.url})),R=()=>W9($(Gq,{buckets:v,getConfig:D,server:!Z,onPaired:()=>{c0(),Y()}},void 0,!1,void 0,this)),x=(O,N,L)=>y0(O,(B)=>$(o,{children:[L&&$(z0,{icon:"link",label:"取消本设备直连",onClick:()=>{B(),V(N.url,N.label||N.bucket||N.url)}},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"移除存储桶",danger:!0,onClick:()=>{B(),_(N.url,N.label||N.bucket||N.url)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)),S=(Z?G:z)?.length?!0:!1;return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"在所有设备间同步"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"连一个云端存储桶,手机、电脑就保持同步——不必开公网服务器,对方离线也收得到,内容端到端加密。"},void 0,!1,void 0,this),$("div",{class:"set-meta",children:$("span",{class:"set-meta-item",children:[$(f,{name:J||!Z?"globe":"cube",cls:"ico sm"},void 0,!1,void 0,this),J?"连一个云端存储桶,这台设备就和你的手机、其他电脑自动保持同步。":Z?"这台设备就是工作区的家,其他设备扫码加入即可一起同步。":"存储桶连在服务器上,所有设备自动共享;信任本设备后,它离线、在外时也能直接同步。"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("details",{class:"set-disclosure",children:[$("summary",{children:"它是怎么工作的"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:['存储桶只当"哑"中转:每台设备把自己的变更加密上传、再拉取别人的——谁都不必同时在线,也不需要公网 IP。',J?"这台设备把自己的变更发布到桶,其他设备从桶拉取;新设备扫码加入即可一起同步。":Z?"这台设备把整个工作区发布到桶,新设备扫码加入后从桶秒恢复。":"密钥只存在服务器,不会同步到浏览器;信任的设备重输一次密钥即可直接同步,离线、在外也不中断。添加时会自动为本站点开通桶的访问权限(CORS)。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z&&!Q?$("div",{class:"peer-sub",style:"margin-top:12px",children:"⚠ 请先在上方把这台设备设为「信任此设备」,再连接存储桶。"},void 0,!1,void 0,this):$(o,{children:[$("div",{class:"peer-actions",style:{marginTop:14},children:[$("button",{class:"btn btn-primary",onClick:w,children:[$(f,{name:"cube",cls:"ico sm"},void 0,!1,void 0,this)," 连接存储桶"]},void 0,!0,void 0,this),(!Z||v.length>0)&&$("button",{class:"btn btn-secondary",onClick:R,children:[$(f,{name:"monitor",cls:"ico sm"},void 0,!1,void 0,this)," 添加设备"]},void 0,!0,void 0,this),S&&$("button",{class:"btn btn-secondary",onClick:A,children:[$(f,{name:"cloudUp",cls:"ico sm"},void 0,!1,void 0,this)," 立即同步"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-list flush",children:J?z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能保持同步。"},void 0,!1,void 0,this):z.map((O)=>{let N=O.label||O.bucket||O.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(O.enabled?O.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:N},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[O.endpoint?Y6(O.endpoint)+" · ":"","最近同步 ",kZ(O.lastSyncAt),O.status==="error"&&O.error?` · 错误:${O.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>_(O.url,N),children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O.url,!0,void 0,this)}):Z?G==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,手机、电脑就能免公网服务器互通。"},void 0,!1,void 0,this):G.map((O)=>{let N=O.label||O.bucket||O.url;return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(O.enabled?O.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:N},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:$("span",{class:"peer-tag",children:[$(f,{name:"upload",cls:"ico"},void 0,!1,void 0,this)," 本机发布"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[O.endpoint?Y6(O.endpoint)+" · ":"","最近同步 ",kZ(O.lastSyncAt),O.status==="error"&&O.error?` · 错误:${O.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"移除",onClick:()=>_(O.url,N),children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O.url,!0,void 0,this)}):z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):z.length===0?$("div",{class:"muted",children:"还没连接存储桶——连一个,所有设备就能免公网服务器互通。"},void 0,!1,void 0,this):z.map((O)=>{let N=O.label||O.bucket||O.url,L=Q&&F.has(O.url);return $("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(O.enabled?O.status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:N},void 0,!1,void 0,this),$("div",{class:"peer-tags",children:[$("span",{class:"peer-tag",children:[$(f,{name:"globe",cls:"ico"},void 0,!1,void 0,this)," 服务器同步"]},void 0,!0,void 0,this),Q?L?$("span",{class:"peer-tag ok",children:[$(f,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 本机已直连"]},void 0,!0,void 0,this):$("button",{class:"peer-tag act",onClick:()=>P(O),children:[$(f,{name:"link",cls:"ico"},void 0,!1,void 0,this)," 让本机直接同步"]},void 0,!0,void 0,this):$("span",{class:"peer-tag muted",children:"信任本设备后可直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peer-sub",children:[O.endpoint?Y6(O.endpoint)+" · ":"","最近同步 ",kZ(O.lastSyncAt),O.status==="error"&&O.error?` · 错误:${O.error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"更多",onClick:(B)=>x(B,O,L),children:$(f,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},O.url,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Jq({peer:Z,onDone:J}){let[Q,X]=k(""),[z,W]=k(""),[G,q]=k(!1),H=Z.endpoint?Y6(Z.endpoint):"",Y=async()=>{if(!Q.trim())return s("密钥必填");if(Z.encrypt&&!z)return s("加密口令必填");if(!Z.endpoint||!Z.bucket||!Z.accessKeyId)return s("服务器未提供该桶的完整配置,无法在本设备激活");q(!0);try{let F={endpoint:Z.endpoint,region:Z.region||"auto",bucket:Z.bucket,prefix:Z.prefix||"metahub",accessKeyId:Z.accessKeyId,secretAccessKey:Q.trim(),encrypt:Z.encrypt,...Z.virtualHostedStyle!=null?{virtualHostedStyle:Z.virtualHostedStyle}:{},publish:!1};await f0("addStorageReplica",F,z),s("已让本机直连存储桶 · 离线、在外也能直接同步"),J()}catch(F){let K=F.message;s(I3(K)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`启用失败:${K}`),q(!1)}};return $(q9,{title:"在本设备启用直连",sub:"服务器已配置这个存储桶。为保护密钥,服务器不会把它同步到浏览器——再输入一次密钥,这台设备就能与桶直接同步(离线、在外也不中断)。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,disabled:G,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:Y,disabled:G,children:G?"连接中…":"启用直连"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"activate-id",children:[$("div",{class:"activate-id-row",children:[$("span",{children:"存储桶"},void 0,!1,void 0,this),$("b",{children:Z.bucket},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H&&$("div",{class:"activate-id-row",children:[$("span",{children:"服务地址"},void 0,!1,void 0,this),$("b",{children:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z.accessKeyId&&$("div",{class:"activate-id-row",children:[$("span",{children:"访问密钥 ID"},void 0,!1,void 0,this),$("b",{children:eG(Z.accessKeyId)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:!0,placeholder:"重新输入该桶的密钥",value:Q,onInput:(F)=>X(F.target.value),onKeyDown:(F)=>!Z.encrypt&&F.key==="Enter"&&Y()},void 0,!1,void 0,this),Z.encrypt&&$(o,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"与其它设备相同的加密口令",value:z,onInput:(F)=>W(F.target.value),onKeyDown:(F)=>F.key==="Enter"&&Y()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"跨设备共用的那把加密钥——用它解开桶里别人的数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var t1="mh_shell_base";function $q(Z,J){return`${(Z||location.origin).replace(/\/+$/,"")}/#enroll=${D6(J)}`}function k3({data:Z}){let J=O3(0,"H");J.addData(Z),J.make();let Q=J.getModuleCount(),X=2,z=Q/2,W=Math.max(5,Math.floor(Q*0.22)),G=W/2,q=(P,A)=>P<7&&A<7||P<7&&A>=Q-7||P>=Q-7&&A<7,H=(P,A)=>Math.abs(P+0.5-z)<G&&Math.abs(A+0.5-z)<G,Y=[];for(let P=0;P<Q;P++)for(let A=0;A<Q;A++){if(!J.isDark(P,A)||q(P,A)||H(P,A))continue;Y.push($("circle",{cx:A+0.5,cy:P+0.5,r:0.45,fill:"var(--qr-fg)"},P*Q+A,!1,void 0,this))}let F=(P,A)=>$(o,{children:[$("rect",{x:A+0.5,y:P+0.5,width:6,height:6,rx:2,ry:2,fill:"none",stroke:"var(--qr-fg)","stroke-width":1},void 0,!1,void 0,this),$("rect",{x:A+2,y:P+2,width:3,height:3,rx:1,fill:"var(--qr-fg)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K=W+0.6,w=W*0.62/24;return $("div",{class:"qr-box",children:$("svg",{viewBox:`${-X} ${-X} ${Q+X*2} ${Q+X*2}`,"shape-rendering":"geometricPrecision",children:[Y,F(0,0),F(0,Q-7),F(Q-7,0),$("rect",{x:z-K/2,y:z-K/2,width:K,height:K,rx:K*0.26,ry:K*0.26,fill:"var(--qr-bg)"},void 0,!1,void 0,this),$("g",{class:"qr-cube",transform:`translate(${z} ${z}) scale(${w}) translate(-12 -12)`,fill:"none",stroke:"var(--qr-fg)","stroke-width":1.6,"stroke-linejoin":"round","stroke-linecap":"round",children:[$("path",{class:"qr-cube-edge qr-cube-outer",pathLength:1,d:x6},void 0,!1,void 0,this),$("path",{class:"qr-cube-edge qr-cube-inner",pathLength:1,d:m6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:x6},void 0,!1,void 0,this),$("path",{class:"qr-cube-glint",pathLength:1,d:m6},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function H8({text:Z,label:J,done:Q,primary:X}){return $("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),style:{width:"100%",marginTop:10},onClick:()=>{navigator.clipboard?.writeText(Z),s(Q)},children:[$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)," ",J]},void 0,!0,void 0,this)}function Qq({config:Z}){let[J,Q]=k(()=>{try{return localStorage.getItem(t1)||location.origin}catch{return location.origin}}),X=$q(J,Z),z=(W)=>{Q(W);try{W?localStorage.setItem(t1,W):localStorage.removeItem(t1)}catch{}};return $(o,{children:[$(k3,{data:X},void 0,!1,void 0,this),$("div",{class:"field-label",children:"壳地址(手机访问的静态站点域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:J,onInput:(W)=>z(W.target.value)},void 0,!1,void 0,this),$(H8,{text:X,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"手机相机扫码打开,输入加密口令即可同步。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Xq({config:Z}){let J=D6(Z),Q=`mh config peer add --s3 --enroll ${J}`;return $(o,{children:[$("div",{class:"field-label",children:"在另一台电脑的终端运行"},void 0,!1,void 0,this),$("div",{class:"enroll-cmd",children:Q},void 0,!1,void 0,this),$(H8,{text:Q,label:"复制命令",done:"已复制命令",primary:!0},void 0,!1,void 0,this),$(H8,{text:J,label:"复制接入码",done:"已复制接入码"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:["对方运行后会提示输入加密口令。也可在 ",$("code",{children:"mh config"},void 0,!1,void 0,this)," 向导选「粘贴接入码加入存储」。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function zq({code:Z,exp:J}){let[Q,X]=k(Math.max(0,Math.round((J-Date.now())/1000)));l(()=>{let G=setInterval(()=>X(Math.max(0,Math.round((J-Date.now())/1000))),1000);return()=>clearInterval(G)},[J]);let z=Math.floor(Q/60),W=String(Q%60).padStart(2,"0");return $(o,{children:[$("div",{class:"pair-code",children:Z},void 0,!1,void 0,this),$("div",{class:"muted",style:{textAlign:"center",marginTop:8},children:Q>0?`${z}:${W} 后过期`:"已过期,请重新生成"},void 0,!1,void 0,this),$(H8,{text:Z,label:"复制配对码",done:"已复制配对码"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Wq({onPaired:Z}){let[J,Q]=k(null),[X,z]=k(!1),W=async()=>{z(!0);try{Q(await a.newPairingCode())}catch(R){s(`生成失败:${R.message}`)}finally{z(!1)}},[G,q]=k(""),[H,Y]=k(""),[F,K]=k(location.origin),[w,P]=k(!1),A=async()=>{if(!G.trim()||!H.trim())return s("地址和配对码必填");P(!0);try{let R=await a.addPeerByPairing({url:G.trim(),code:H.trim(),self_url:F.trim()||void 0});await a.syncPeer(R.url).catch(()=>{}),s(`已配对 ${R.url}`),Z()}catch(R){s(`配对失败:${R.message}`),P(!1)}},[_,V]=k(()=>{try{return localStorage.getItem(s1)||location.origin}catch{return location.origin}}),D=(R)=>{V(R);try{R?localStorage.setItem(s1,R):localStorage.removeItem(s1)}catch{}},v=qq(_,P5());return $(o,{children:[$("div",{class:"enroll-section",children:"邀请另一台服务器配对"},void 0,!1,void 0,this),J?$(zq,{code:J.code,exp:J.exp},void 0,!1,void 0,this):$("button",{class:"btn btn-secondary",style:{width:"100%"},disabled:X,onClick:W,children:[$(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)," ",X?"生成中…":"生成本机配对码"]},void 0,!0,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"已有对方的配对码?"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"对方服务器地址"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"http://192.168.1.10:7777",value:G,onInput:(R)=>q(R.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"配对码"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"对方「生成本机配对码」得到的码",value:H,onInput:(R)=>Y(R.target.value),onKeyDown:(R)=>R.key==="Enter"&&A()},void 0,!1,void 0,this),$("div",{class:"field-label",children:"本机可达地址(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"留空则仅本机主动同步",value:F,onInput:(R)=>K(R.target.value)},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",style:{width:"100%",marginTop:10},disabled:w,onClick:A,children:w?"配对中…":"配对"},void 0,!1,void 0,this),$("div",{class:"enroll-sep"},void 0,!1,void 0,this),$("div",{class:"enroll-section",children:"在手机上打开本服务器"},void 0,!1,void 0,this),$(k3,{data:v},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务器地址(手机访问的域名;留空用当前地址)"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:location.origin,value:_,onInput:(R)=>D(R.target.value)},void 0,!1,void 0,this),$(H8,{text:v,label:"复制链接",done:"已复制链接"},void 0,!1,void 0,this),$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 含访问令牌,请勿公开分享。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Gq({buckets:Z,getConfig:J,server:Q,onPaired:X}){let z=Z.length>0,W=[...z?[{id:"phone",label:"手机扫码"},{id:"cli",label:"电脑 / 命令行"}]:[],...Q?[{id:"server",label:"高级:服务器配对"}]:[]],[G,q]=k(W[0]?.id??"server"),[H,Y]=k(Z[0]?.url??""),[F,K]=k(null),[w,P]=k("");return l(()=>{if(!z||!H)return;let A=!0;return K(null),P(""),J(H).then((_)=>{if(!A)return;_?K(_):P("找不到该存储的配置")}).catch((_)=>A&&P(_.message)),()=>{A=!1}},[H]),$(q9,{title:"添加设备",sub:"让另一台设备加入同一个工作区——手机扫码,或在电脑上粘贴接入码。",footer:$("button",{class:"btn btn-primary",onClick:c0,children:"完成"},void 0,!1,void 0,this),width:420,children:[W.length>1&&$("div",{class:"add-tabs",children:W.map((A)=>$("button",{class:"add-tab"+(G===A.id?" on":""),onClick:()=>q(A.id),children:A.label},A.id,!1,void 0,this))},void 0,!1,void 0,this),(G==="phone"||G==="cli")&&$(o,{children:[Z.length>1&&$(o,{children:[$("div",{class:"field-label",children:"存储桶"},void 0,!1,void 0,this),$("select",{class:"text-input",value:H,onChange:(A)=>Y(A.target.value),children:Z.map((A)=>$("option",{value:A.url,children:A.name},A.url,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w?$("div",{class:"enroll-err",children:w},void 0,!1,void 0,this):!F?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):G==="phone"?$(Qq,{config:F},void 0,!1,void 0,this):$(Xq,{config:F},void 0,!1,void 0,this),F&&$("div",{class:"peer-sub",style:"margin-top:8px",children:"⚠ 接入码含桶访问密钥,请勿公开分享;不含加密口令——新设备需另输口令。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G==="server"&&$(Wq,{onPaired:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function I3(Z){return/failed to fetch|load failed|networkerror|cors/i.test(Z)}var s1="mh_server_base";function qq(Z,J){let Q=(Z||location.origin).replace(/\/+$/,"");return J?`${Q}/?token=${encodeURIComponent(J)}`:Q}var q8=[{id:"r2",name:"Cloudflare R2",region:"auto",ph:"https://<账户ID>.r2.cloudflarestorage.com",hint:"R2 控制台 → 管理 R2 API 令牌,创建 S3 凭据;区域填 auto。免费额度 10GB。"},{id:"s3",name:"Amazon S3",region:"us-east-1",ph:"https://s3.<区域>.amazonaws.com",hint:"IAM 用户的访问密钥;区域如 us-east-1。"},{id:"minio",name:"MinIO",region:"us-east-1",ph:"https://minio.你的域名",hint:"自建 MinIO 的访问地址与 access / secret key。"},{id:"cos",name:"腾讯云 COS",region:"ap-shanghai",ph:"https://<桶名-APPID>.cos.<区域>.myqcloud.com",hint:"桶名须含 APPID,用虚拟主机风格地址(host 以桶名开头)。"},{id:"custom",name:"自定义",region:"auto",ph:"https://s3.example.com",hint:"任何 S3 兼容对象存储。"}];function Hq({onDone:Z,toServer:J,alsoReplica:Q}){let[X,z]=k(""),[W,G]=k(""),[q,H]=k("auto"),[Y,F]=k(""),[K,w]=k(""),[P,A]=k("metahub"),[_,V]=k(!0),[D,v]=k(""),[R,x]=k(!1),[S,O]=k("r2"),N=q8.find((M)=>M.id===S)??q8[4],L=(M)=>{O(M);let y=q8.find((E)=>E.id===M);if(y&&q8.some((E)=>E.region===q))H(y.region)},B=async()=>{if(!X.trim()||!W.trim()||!Y.trim()||!K.trim()){s("服务地址、桶名称、访问密钥 ID、密钥都要填");return}if(_&&!D){s("加密口令必填(或关闭加密)");return}x(!0);try{let M={endpoint:X.trim(),region:q.trim()||"auto",bucket:W.trim(),prefix:P.trim()||"metahub",accessKeyId:Y.trim(),secretAccessKey:K.trim(),encrypt:_};if(J){if(await a.addServerS3Peer({...M,passphrase:D,corsOrigins:[location.origin]}),Q)await f0("addStorageReplica",{...M,publish:!1},D)}else await f0("addStorageReplica",M,D);s(J?Q?"已连接存储桶 · 服务器开始同步到桶,这台设备也直接同步":"已连接存储桶 · 服务器开始同步到桶":"已连接存储桶 · 这台设备开始同步到桶"),Z()}catch(M){let y=M.message;s(I3(y)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE(R2 控制台一条规则即可)。":`添加失败:${y}`),x(!1)}};return $(q9,{title:"连接存储桶",sub:"连接一个 S3 兼容存储桶,所有设备就能同步——不需要公网服务器。新桶自动初始化;已有桶用相同加密口令即可加入。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,disabled:R,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:B,disabled:R,children:R?"连接中…":"连接"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"set-hint",style:{marginTop:0,marginBottom:12},children:J?"连接后,云端工作区负责把整库同步到这个桶;这台设备和其他设备都从它同步。":"连接后,这台设备(本机)把整库同步到这个桶;新设备扫码加入即可一起用。"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"存储服务商"},void 0,!1,void 0,this),$("div",{class:"provider-grid",children:q8.map((M)=>$("button",{class:"provider-chip"+(S===M.id?" sel":""),"aria-pressed":S===M.id,onClick:()=>L(M.id),children:M.name},M.id,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"set-hint",children:N.hint},void 0,!1,void 0,this),$("div",{class:"field-label",children:"服务地址"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,placeholder:N.ph,value:X,onInput:(M)=>z(M.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"桶名称"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"my-metahub",value:W,onInput:(M)=>G(M.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"访问密钥 ID"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"Access Key ID",value:Y,onInput:(M)=>F(M.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"密钥"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"Secret Access Key",value:K,onInput:(M)=>w(M.target.value)},void 0,!1,void 0,this),$("label",{class:"set-check-row",style:{marginTop:14},children:[$("input",{type:"checkbox",checked:_,onChange:(M)=>V(M.target.checked)},void 0,!1,void 0,this),$("span",{children:"端到端加密(强烈建议;关闭后文件以明文存放,仅限完全信任的存储)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_&&$(o,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",placeholder:"新桶以此创建;其它设备用同一口令加入",value:D,onInput:(M)=>v(M.target.value),onKeyDown:(M)=>M.key==="Enter"&&B()},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"这是跨设备共用的一把加密钥——记牢它,换设备 / 加入已有桶时都要用它解开数据。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("details",{class:"set-disclosure",style:{marginTop:14},children:[$("summary",{children:"进阶"},void 0,!1,void 0,this),$("div",{class:"set-disclosure-body",children:[$("div",{class:"field-label",style:{marginTop:0},children:"区域"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:N.region,value:q,onInput:(M)=>H(M.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"大多按服务商默认即可(R2 用 auto)。"},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"metahub",value:P,onInput:(M)=>A(M.target.value)},void 0,!1,void 0,this),$("div",{class:"set-hint",children:"同一个桶里隔离多个工作区时用;默认 metahub。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Yq({onUpdatePending:Z}){let J=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0,[Q,X]=k(null),[z,W]=k(null),[G,q]=k(null),[H,Y]=k(null),[F,K]=k("idle"),[w,P]=k(""),[A,_]=k(null);l(()=>{a.version().then((N)=>W(N.version)).catch(()=>W(null)),(typeof window<"u"?window.metahubDesktop:void 0)?.appVersion?.().then(X).catch(()=>X(null)),J?.installedVersion().then(q).catch(()=>q(null))},[]),l(()=>{if(F==="idle"&&z&&G&&GZ(G,z)>0)K("staged"),Z?.(!0)},[z,G]);let V=()=>{if(z&&G)return GZ(G,z)>0?G:z;return G??z},D=()=>!!(z&&G&&GZ(G,z)>0),v=async()=>{K("checking"),P("");try{let{latest:O}=await J.check();if(!O){P("无法获取最新版本(网络不可用或 GitHub API 受限)"),K("error");return}let N=V();if(!N||GZ(O,N)>0)Y(O),K("available"),Z?.(!0);else s("已是最新版本"),K(D()?"staged":"idle")}catch(O){P(O.message),K("error")}},R=async()=>{K("downloading"),_(null),P("");let O=J.onDownloadProgress?.((N)=>_(N));try{let N=await J.download();if(N)q(N),K("staged"),Z?.(!0),s(`已下载 v${N}`);else s("已是最新版本"),K(D()?"staged":"idle")}catch(N){P(N.message),K("error")}finally{O?.()}},x=null;if(J)switch(F){case"checking":x=$("span",{class:"ver-act","aria-disabled":"true",children:"检查中…"},void 0,!1,void 0,this);break;case"downloading":{let O=A&&A.total>0?Math.min(100,Math.round(A.received/A.total*100)):null;x=$("span",{class:"ver-up ver-dl",children:[$("span",{class:`ver-bar${O==null?" indet":""}`,children:$("span",{class:"ver-bar-fill",style:O!=null?{width:`${O}%`}:void 0},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"ver-num",children:O!=null?`${O}%`:"下载中…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break}case"available":x=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:["新版本 ",$("span",{class:"ver-num",children:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:R,title:`下载并更新到 v${H}`,children:"下载"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"staged":x=$("span",{class:"ver-up",children:[$("span",{class:"ver-dot pulse"},void 0,!1,void 0,this),$("span",{children:[$("span",{class:"ver-num",children:G},void 0,!1,void 0,this)," 待重启"]},void 0,!0,void 0,this),$("button",{class:"ver-act accent",onClick:()=>void J.restart(),title:`重启应用以更新到 v${G}`,children:"重启"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;case"error":x=$("span",{class:"ver-up err",children:[$("span",{class:"ver-msg",children:"检查失败"},void 0,!1,void 0,this),$("button",{class:"ver-act",onClick:v,title:w||"重试",children:"重试"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);break;default:x=$("button",{class:"ver-act",onClick:v,children:"检查更新"},void 0,!1,void 0,this)}let S=!Q&&!z&&l1;return $("div",{class:"set-footer",children:[Q&&$("span",{children:["App ",$("span",{class:"ver-num",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Q&&z&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),z&&$("span",{children:["Core ",$("span",{class:"ver-num",children:z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),S&&$("span",{class:"ver-num",children:["v",l1]},void 0,!0,void 0,this),x&&(z||Q||S)&&$("span",{class:"set-footer-sep",children:"·"},void 0,!1,void 0,this),x]},void 0,!0,void 0,this)}var e1="CommandOrControl+Shift+Space";function Kq(Z){if(["Control","Meta","Alt","Shift"].includes(Z.key))return null;let J=[];if(Z.metaKey||Z.ctrlKey)J.push("CommandOrControl");if(Z.altKey)J.push("Alt");if(Z.shiftKey)J.push("Shift");let Q=Z.key;if(Q===" ")Q="Space";else if(Q.startsWith("Arrow"))Q=Q.slice(5);else if(Q.length===1)Q=Q.toUpperCase();if(J.length===0)return null;return J.push(Q),J.join("+")}function _3(Z){let J=typeof window<"u"&&window.metahubDesktop?.platform==="darwin";return Z.replace("CommandOrControl",J?"⌘":"Ctrl").replace("Alt",J?"⌥":"Alt").replace("Shift",J?"⇧":"Shift").split("+").join(J?" ":"+")}function Fq(){let Z=window.metahubDesktop.quicknote,[J,Q]=k(e1),[X,z]=k(!1),[W,G]=k(!1);l(()=>{Z.getSettings().then((F)=>{Q(F.shortcut),z(F.alwaysOnTop)}).catch((F)=>s(`加载失败:${F.message}`))},[]);let q=async(F)=>{try{let K=await Z.setShortcut(F);Q(K.shortcut),s(`快捷键已设为 ${_3(K.shortcut)}`)}catch(K){s(`设置失败:${K.message}`)}},H=(F)=>{if(F.preventDefault(),F.key==="Escape"){G(!1);return}let K=Kq(F);if(!K)return;G(!1),q(K)},Y=async()=>{let F=!X;z(F);try{z(await Z.setAlwaysOnTop(F))}catch(K){z(!F),s(`设置失败:${K.message}`)}};return $("div",{class:"set-block",children:[$("div",{class:"set-block-desc",children:"用全局快捷键随时唤起小窗记录想法。小窗也可从菜单栏图标打开。"},void 0,!1,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"唤起快捷键"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"点击下方按钮,然后按下你想用的组合键。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary qn-shortcut"+(W?" capturing":""),onClick:()=>G(!0),onBlur:()=>G(!1),onKeyDown:W?H:void 0,children:W?"按下组合键…":_3(J)},void 0,!1,void 0,this),J!==e1&&$("button",{class:"btn btn-ghost",title:"重置默认",onClick:()=>void q(e1),children:"重置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"qn-set-row",children:[$("div",{class:"qn-set-main",children:[$("div",{class:"qn-set-name",children:"默认始终置顶"},void 0,!1,void 0,this),$("div",{class:"qn-set-desc",children:"小窗浮在其他窗口之上;也可在小窗内用 \uD83D\uDCCC 按钮切换。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn "+(X?"btn-primary":"btn-secondary"),"aria-pressed":X,onClick:()=>void Y(),children:X?"已开启":"已关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function kZ(Z){if(!Z)return"从未";return new Date(Z).toLocaleString()}function Uq(){let[Z,J]=k(null),Q=()=>a.listPeers().then(J).catch((q)=>s(`加载失败:${q.message}`));l(()=>{Q()},[]);let X=async(q)=>{try{let H=await a.syncPeer(q.url);s(H.ok?`已同步:推送 ${H.pushed},拉取 ${H.pulled}`:`同步失败:${H.error}`),Q()}catch(H){s(`同步失败:${H.message}`)}},z=async(q)=>{await a.updatePeer(q.url,{enabled:!q.enabled}).catch((H)=>s(H.message)),Q()},W=async(q)=>{if(!await R0({title:"移除同步设备",message:`确定移除 ${q.url}?将停止与该设备的数据同步。`,confirmLabel:"移除",danger:!0}))return;await a.removePeer(q.url).catch((Y)=>s(Y.message)),Q()},G=(q,H)=>y0(q,(Y)=>$(o,{children:[$(z0,{icon:"share",label:"立即同步",onClick:()=>{Y(),X(H)}},void 0,!1,void 0,this),$(z0,{icon:H.enabled?"eyeOff":"check",label:H.enabled?"禁用":"启用",onClick:()=>{Y(),z(H)}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"移除",danger:!0,onClick:()=>{Y(),W(H)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"同步设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"已直接配对的设备(服务器 HTTP 双向同步)。新增请用上方「同步 → 添加设备 → 高级:服务器配对」。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有配对的设备。"},void 0,!1,void 0,this):Z.map((q)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot"+(q.enabled?q.last_status==="error"?" err":" on":" off")},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:q.label||q.url},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[q.enabled?"已启用":"已禁用"," · 最近同步 ",kZ(q.last_success_at),q.last_status==="error"&&q.last_error?` · 错误:${q.last_error}`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",onClick:(H)=>G(H,q),children:$(f,{name:"dots",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},q.url,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Lq(){let[Z,J]=k(null),Q=()=>a.listGrants().then(J).catch((z)=>s(`加载失败:${z.message}`));l(()=>{Q()},[]);let X=async(z)=>{if(!await R0({title:"吊销凭据",message:`吊销后,持有此凭据的设备${z.peer_url?`(${z.peer_url})`:""}将无法再同步进本机。`,confirmLabel:"吊销",danger:!0}))return;await a.revokeGrant(z.token).catch((G)=>s(G.message)),Q()};return $("div",{class:"set-block",children:[$("div",{class:"set-block-head",children:$("span",{class:"set-block-title",children:"已授权设备"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"set-block-desc",children:"本机签发、允许其他设备同步进来的凭据。吊销即断开对方的入站访问。"},void 0,!1,void 0,this),$("div",{class:"peer-list flush",children:Z==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"muted",children:"还没有签发任何凭据。"},void 0,!1,void 0,this):Z.map((z)=>$("div",{class:"peer-row",children:[$("span",{class:"peer-dot on"},void 0,!1,void 0,this),$("div",{class:"peer-main",children:[$("div",{class:"peer-url",children:z.peer_url||"(未知地址)"},void 0,!1,void 0,this),$("div",{class:"peer-sub",children:[z.token.slice(0,8),"… · 签发于 ",kZ(z.created_at)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-ghost peer-menu",title:"吊销",onClick:()=>X(z),children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},z.token,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var K6=(Z)=>location.origin+"/sites/"+Z+"/",V3=(Z)=>"/"+Z+"/",Pq=(Z)=>(/\.([a-z0-9]+)$/i.exec(Z)?.[1]??"").toLowerCase(),f3=(Z)=>Z.startsWith("image/");function g3(Z){let J=Number(Z.split("-")[0]);if(!Number.isFinite(J)||J<=0)return"—";return new Date(J).toISOString().slice(0,10)}function Bq(Z){let J=Pq(Z.path);if(["html","htm","js","mjs","css","json","xml"].includes(J))return"code";if(f3(Z.content_type))return"file";if(["md","txt"].includes(J))return"text";return"file"}function Y8(Z){navigator.clipboard?.writeText(Z).catch(()=>{}),s("已复制")}function b3(){let[Z,J]=k(null),[Q,X]=k(null),[z,W]=k(null),G=BZ(),q=()=>a.listSites().then((F)=>{J(F),X((K)=>K?F.find((w)=>w.id===K.id)??null:null)}).catch((F)=>s(`加载失败:${F.message}`));l(()=>{q()},[]);let H=()=>W9($(Oq,{onCreated:(F)=>{q(),X(F)}},void 0,!1,void 0,this)),Y=(F,K,w)=>{y0(F,(P)=>$(o,{children:[$(z0,{icon:"externalLink",label:"复制访问地址",onClick:()=>{P(),Y8(K6(K.name))}},void 0,!1,void 0,this),$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{P(),N9({kind:"site",ref:K.id,title:K.title??K.name})}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"修改标题…",onClick:async()=>{P();let A=await Y9({title:"修改标题",label:"标题",value:K.title??K.name});if(A==null)return;try{await a.updateSite(K.id,{title:A})}catch(_){return s(_.message)}q()}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除站点",danger:!0,onClick:async()=>{if(P(),!await R0({title:"删除站点?",message:`「${K.name}」及其 ${K.file_count} 个文件将被删除。`,confirmLabel:"删除",danger:!0}))return;try{await a.deleteSite(K.id)}catch(_){return s(_.message)}if(w)X(null);q()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $("div",{class:"db sites-page",children:[$("div",{class:"db-head",children:[$("div",{children:[$("div",{class:"db-title",children:"站点管理"},void 0,!1,void 0,this),$("div",{class:"db-desc",children:"发布静态站点,生成可分享的访问链接。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-primary site-new",onClick:H,children:[$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z==null?$("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):Z.length===0?$("div",{class:"site-empty",children:[$("div",{class:"ei",children:$(f,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"et",children:"还没有站点"},void 0,!1,void 0,this),$("div",{class:"ed",children:"站点是一个命名文件桶,发布后可通过 /sites/<name>/ 直接访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:H,children:[$(f,{name:"plus",cls:"ico sm"},void 0,!1,void 0,this),"新建站点"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$(o,{children:[$("div",{class:"sites-grid",children:Z.map((F,K)=>$("div",{class:"site-card",style:`--i:${K}`,onClick:()=>X(F),children:[$("div",{class:"site-card-head",children:[$("span",{class:"si",children:$(f,{name:"globe"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"site-card-id",children:[$("div",{class:"slug",children:F.name},void 0,!1,void 0,this),$("div",{class:"ttl"+(F.title?"":" muted"),children:F.title||"未命名站点"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G.has(F.id)&&$("span",{class:"share-badge",title:"已分享 · 管理分享",style:{marginLeft:"auto"},onClick:(w)=>{w.stopPropagation(),N9({kind:"site",ref:F.id,title:F.title??F.name})},children:$(f,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"site-addr",title:"点击复制访问地址",onClick:(w)=>{w.stopPropagation(),Y8(K6(F.name))},children:[$(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:V3(F.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-meta",children:[$("span",{children:[$("b",{children:F.file_count},void 0,!1,void 0,this)," 文件"]},void 0,!0,void 0,this),$("span",{class:"dot",children:"·"},void 0,!1,void 0,this),$("span",{children:g3(F.created_hlc)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-card-foot",children:[$("button",{class:"btn btn-secondary",style:{flex:1},onClick:(w)=>{w.stopPropagation(),W(F)},children:[$(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),"访问"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(w)=>{w.stopPropagation(),Y(w,F)},children:$(f,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},F.id,!0,void 0,this))},void 0,!1,void 0,this),$("div",{class:"gridfoot",children:[$("span",{children:["共 ",Z.length," 个站点"]},void 0,!0,void 0,this),$("span",{children:[Z.reduce((F,K)=>F+K.file_count,0)," 个文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Q&&$(Aq,{site:Q,onClose:()=>X(null),onVisit:()=>W(Q),onMenu:(F)=>Y(F,Q,!0),onChanged:q},void 0,!1,void 0,this),z&&$(Nq,{site:z,onClose:()=>W(null)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Oq({onCreated:Z}){let[J,Q]=k(""),[X,z]=k(""),W=async()=>{let G=J.trim().toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"");if(!G)return s("请填写站点名称");try{let q=await a.createSite({name:G,title:X.trim()||void 0});c0(),s(`已创建站点「${G}」`),Z(q)}catch(q){s(q.message)}};return $(q9,{title:"新建站点",sub:"创建一个命名文件桶,随同步无冲突复制。",footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:c0,children:"取消"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:W,children:"创建"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{class:"field-label",children:"名称(slug)"},void 0,!1,void 0,this),$("input",{class:"text-input",autofocus:!0,value:J,placeholder:"例如:docs、demo、status",onInput:(G)=>Q(G.target.value),onKeyDown:(G)=>{if(G.key==="Enter")W()}},void 0,!1,void 0,this),$("div",{class:"field-label",children:"标题(可选)"},void 0,!1,void 0,this),$("input",{class:"text-input",value:X,placeholder:"人类可读的标题",onInput:(G)=>z(G.target.value),onKeyDown:(G)=>{if(G.key==="Enter")W()}},void 0,!1,void 0,this),$("div",{class:"muted",style:{fontSize:12,marginTop:10},children:["将通过 ",$("span",{style:{fontFamily:"var(--mono)"},children:"/sites/<名称>/"},void 0,!1,void 0,this)," 对外提供。"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Aq({site:Z,onClose:J,onVisit:Q,onMenu:X,onChanged:z}){let[W,G]=k(null),q=W0(null),{open:H,close:Y}=e9(J),F=()=>a.listSiteFiles(Z.id).then(G).catch((_)=>s(_.message));l(()=>{let _=!1;return G(null),a.listSiteFiles(Z.id).then((V)=>!_&&G(V)).catch((V)=>!_&&s(V.message)),()=>{_=!0}},[Z.id]);let K=async(_)=>{let V=_.target,D=Array.from(V.files??[]);if(V.value="",!D.length)return;let v=0;try{for(let R of D)await a.uploadSiteFile(Z.id,R.name,R),v++;s(`已上传 ${v} 个文件`)}catch(R){s(`已上传 ${v}/${D.length} 个,其余失败:${R.message}`)}finally{F(),z()}},w=async(_)=>{if(!await R0({title:"删除文件?",message:`「${_.path}」将从站点「${Z.name}」中删除。`,confirmLabel:"删除",danger:!0}))return;try{await a.deleteSiteFile(Z.id,_.path)}catch(D){return s(D.message)}F(),z()},P=K6(Z.name),A=V3(Z.name);return $(o,{children:[$("div",{class:"scrim"+(H?" open":""),onClick:Y},void 0,!1,void 0,this),$("div",{class:"peek"+(H?" open":""),children:[$("div",{class:"peek-head",children:[$("button",{class:"iconbtn",onClick:Y,children:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{style:{flex:1,display:"flex",alignItems:"center",gap:8,minWidth:0,fontWeight:600,fontSize:14},children:[$(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this),$("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(f,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this),$("button",{class:"iconbtn",title:"更多",onClick:(_)=>X(_),children:$(f,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("input",{ref:q,type:"file",multiple:!0,style:{display:"none"},onChange:K},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"peek-body",children:[$("h2",{style:{margin:"0 0 20px"},children:Z.title||Z.name},void 0,!1,void 0,this),$("div",{class:"acc-link",children:[$("span",{class:"url",children:A},void 0,!1,void 0,this),$("button",{title:"复制地址",onClick:()=>Y8(P),children:$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"accent",title:"访问站点",onClick:Q,children:$(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"site-meta",children:[$("span",{children:[$("b",{children:W?.length??Z.file_count},void 0,!1,void 0,this)," 个文件"]},void 0,!0,void 0,this),$("span",{children:["创建于 ",g3(Z.created_hlc)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"files-head",children:[$("span",{children:"文件"},void 0,!1,void 0,this),$("span",{children:W?.length??""},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):W.length===0?$("div",{class:"site-empty",style:{marginTop:4},children:[$("div",{class:"ei",children:"\uD83D\uDCC1"},void 0,!1,void 0,this),$("div",{class:"et",children:"站点还没有文件"},void 0,!1,void 0,this),$("div",{class:"ed",children:"上传文件后即可通过站点地址访问。"},void 0,!1,void 0,this),$("button",{class:"btn btn-secondary",onClick:()=>q.current?.click(),children:[$(f,{name:"upload",cls:"ico sm"},void 0,!1,void 0,this),"上传文件"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):$("div",{children:W.map((_)=>$("div",{class:"filerow",onClick:()=>W9($(S3,{site:Z,file:_},void 0,!1,void 0,this)),children:[$("span",{class:"fi",children:$(f,{name:Bq(_),cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"fpath",children:_.path},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(_.encoding==="blob"?" blob":""),children:_.encoding},void 0,!1,void 0,this),$("div",{class:"facts",children:[$("button",{title:"预览",onClick:(V)=>{V.stopPropagation(),W9($(S3,{site:Z,file:_},void 0,!1,void 0,this))},children:$(f,{name:"eye",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{title:"复制路径",onClick:(V)=>{V.stopPropagation(),Y8("/sites/"+Z.name+"/"+_.path)},children:$(f,{name:"copy",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"del",title:"删除",onClick:(V)=>{V.stopPropagation(),w(_)},children:$(f,{name:"trash",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},_.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function S3({site:Z,file:J}){let Q="/sites/"+Z.name+"/"+J.path,[X,z]=k(null),W=f3(J.content_type),G=!W&&(J.encoding==="utf8"||/text\/|json|javascript|xml/.test(J.content_type));return l(()=>{if(!G)return;fetch(Q).then((q)=>q.text()).then(z).catch(()=>z("(无法加载内容)"))},[Q]),$(q9,{title:J.path,sub:Q,width:680,footer:$(o,{children:[$("button",{class:"btn btn-secondary",onClick:()=>Y8(Q),children:"复制路径"},void 0,!1,void 0,this),$("button",{class:"btn btn-primary",onClick:c0,children:"关闭"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[$("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center",color:"var(--muted)",fontSize:12,marginBottom:12},children:[$("span",{children:J.content_type},void 0,!1,void 0,this),$("span",{class:"enc-badge"+(J.encoding==="blob"?" blob":""),children:J.encoding},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W?$("img",{src:Q,style:{maxWidth:"100%",borderRadius:"var(--radius)",border:"1px solid var(--line)"}},void 0,!1,void 0,this):G?X==null?$("div",{class:"muted",children:"加载中…"},void 0,!1,void 0,this):$("div",{class:"preview-box",children:X},void 0,!1,void 0,this):$("div",{class:"preview-bin",children:[$("div",{class:"pi",children:"\uD83D\uDCE6"},void 0,!1,void 0,this),$("div",{class:"pt",children:"二进制文件 · 在新标签打开查看"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Nq({site:Z,onClose:J}){l(()=>{let X=(z)=>{if(z.key==="Escape")J()};return addEventListener("keydown",X),()=>removeEventListener("keydown",X)},[]);let Q="/sites/"+Z.name+"/";return $("div",{class:"spv-scrim open",onClick:(X)=>{if(X.target===X.currentTarget)J()},children:$("div",{class:"spv",children:[$("div",{class:"spv-chrome",children:[$("div",{class:"spv-dots",children:[$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this),$("i",{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"spv-url",children:[$(f,{name:"lock",cls:"ico sm"},void 0,!1,void 0,this),$("span",{children:K6(Z.name)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"spv-btn",title:"在新标签打开",onClick:()=>window.open(Q,"_blank"),children:[$(f,{name:"externalLink",cls:"ico sm"},void 0,!1,void 0,this),"新标签"]},void 0,!0,void 0,this),$("button",{class:"spv-btn icon",title:"关闭",onClick:J,children:$(f,{name:"x"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("iframe",{class:"spv-frame",src:Q,sandbox:"allow-scripts allow-same-origin"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var wq={doc:"file",database:"database",site:"globe"};function Mq(Z){if(Z==null)return{text:"永久",warn:!1,dead:!1};let J=Z-Date.now();if(J<=0)return{text:"已过期",warn:!0,dead:!0};let Q=Math.floor(J/86400000),X=Math.floor(J/3600000);if(Q>=1)return{text:`${Q} 天后过期`,warn:Q<=2,dead:!1};if(X>=1)return{text:`${X} 小时后过期`,warn:!0,dead:!1};return{text:"即将过期",warn:!0,dead:!1}}function j3({onNavigate:Z}){let[J,Q]=k(null),[X,z]=k("all"),[W,G]=k(""),q=()=>a.listShares().then(Q).catch((P)=>s(`加载失败:${P.message}`));l(()=>{return q(),document.addEventListener(PZ,q),()=>document.removeEventListener(PZ,q)},[]);let{copyShare:H,revoke:Y,renew:F}=o6(q,s,s),K=_9(()=>{let P=J??[],A=W.trim().toLowerCase();return P.filter((_)=>(X==="all"||_.transport===X)&&(!A||_.title.toLowerCase().includes(A)||_.source.toLowerCase().includes(A)))},[J,X,W]),w=(P)=>{if(P.kind==="doc")Z({kind:"doc",id:P.target_id});else if(P.kind==="database")Z({kind:"db",id:P.target_id});else Z({kind:"sites"})};return $("div",{class:"db shares-page",children:[$("div",{class:"db-head",children:[$("div",{children:[$("div",{class:"db-title",children:"分享"},void 0,!1,void 0,this),$("div",{class:"db-desc",children:"通过服务器或对象存储对外分享的文档、表格与站点。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-tools",children:[$("div",{class:"shv-seg",role:"tablist",children:["all","server","s3"].map((P)=>$("button",{class:"shv-seg-btn"+(X===P?" active":""),onClick:()=>z(P),children:P==="all"?"全部":P==="server"?"服务器":"对象存储"},P,!1,void 0,this))},void 0,!1,void 0,this),$("div",{class:"shv-search",children:[$(f,{name:"search",cls:"ico sm"},void 0,!1,void 0,this),$("input",{placeholder:"搜索标题 / 来源…",value:W,onInput:(P)=>G(P.currentTarget.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),J==null?$("div",{class:"muted",style:{padding:20},children:"加载中…"},void 0,!1,void 0,this):K.length===0?$("div",{class:"site-empty",children:[$("div",{class:"ei",children:$(f,{name:"link"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"et",children:J.length===0?"还没有公开分享":"没有匹配的分享"},void 0,!1,void 0,this),$("div",{class:"ed",children:"在文档、表格或站点里点「通过设备分享」即可创建——可经服务器(支持可编辑)或对象存储(只读、端到端加密)。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$("ul",{class:"shv-list",children:K.map((P)=>{let A=Mq(P.expiresAt);return $("li",{class:"shv-row",children:[$("span",{class:"shv-ico k-"+P.kind,children:$(f,{name:wq[P.kind]??"file"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"shv-main",children:[$("div",{class:"shv-titleline",children:[$("button",{class:"shv-title",onClick:()=>w(P),title:"打开对象",children:P.title},void 0,!1,void 0,this),$("span",{class:"shv-pill t-"+P.transport,children:P.transport==="s3"?"对象存储":"服务器"},void 0,!1,void 0,this),$("span",{class:"shv-pill p-"+P.permission,children:P.permission==="edit"?"可编辑":"只读"},void 0,!1,void 0,this),P.hasPassword&&$("span",{class:"shv-lock",title:"口令保护",children:"\uD83D\uDD12"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-meta",children:["经 ",P.source,$("span",{class:"shv-exp"+(A.warn?" warn":"")+(A.dead?" dead":""),children:["· ",A.text]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$("div",{class:"shv-actions",children:[$("button",{class:"btn btn-secondary",onClick:()=>H(P),children:"复制链接"},void 0,!1,void 0,this),P.transport==="s3"&&$("button",{class:"btn btn-secondary",onClick:()=>F(P),children:"续期"},void 0,!1,void 0,this),P.url&&$("a",{class:"btn btn-secondary",href:P.url,target:"_blank",rel:"noreferrer",children:"打开"},void 0,!1,void 0,this),$("button",{class:"btn btn-danger",onClick:()=>Y(P),children:"撤销"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},P.slug,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ZJ(Z){switch(Z.kind){case"db":return`#/db/${encodeURIComponent(Z.id)}`;case"doc":return`#/doc/${encodeURIComponent(Z.id)}`;case"search":return`#/search?q=${encodeURIComponent(Z.q)}`;case"settings":return"#/settings";case"sites":return"#/sites";case"shares":return"#/shares";case"empty":return"#/"}}function JJ(Z){if(!Z.startsWith("#/"))return{kind:"empty"};let[J="",Q=""]=Z.slice(2).split("?",2),[X,z=""]=J.split("/",2);try{if(X==="db"&&z)return{kind:"db",id:decodeURIComponent(z)};if(X==="doc"&&z)return{kind:"doc",id:decodeURIComponent(z)};if(X==="search"){let W=new URLSearchParams(Q).get("q");if(W)return{kind:"search",q:W}}if(X==="settings")return{kind:"settings"};if(X==="sites")return{kind:"sites"};if(X==="shares")return{kind:"shares"}}catch{}return{kind:"empty"}}var h3="mh-quicknote-last",D3="mh-quicknote-parent",x3="Quick Notes";function Cq(Z,J){return(J.created_hlc??"").localeCompare(Z.created_hlc??"")}async function yq(){let Z=localStorage.getItem(D3);if(Z)try{return await a.getDocument(Z),Z}catch{}let X=(await a.listDocuments()).find((z)=>z.parent_id==null&&z.title===x3)?.id??(await a.createDocument({title:x3})).id;return localStorage.setItem(D3,X),X}function m3(){let[Z,J]=k(null),[Q,X]=k([]),[z,W]=k(null),[G,q]=k(""),[H,Y]=k(!1),F=W0(null),K=typeof window<"u"?window.metahubDesktop?.quicknote:void 0,w=n9(async(R)=>{let x=(await a.listDocumentsByParent(R)).sort(Cq);return X(x),x},[]);l(()=>{if(!Z)return;let R,x=()=>{clearTimeout(R),R=setTimeout(()=>void w(Z),80)};return document.addEventListener(L9,x),()=>{clearTimeout(R),document.removeEventListener(L9,x)}},[Z,w]);let P=n9(async(R)=>{let x=await a.createDocument({title:"",parent_id:R});return await w(R),x.id},[w]);l(()=>{(async()=>{try{let R=await yq();J(R);let x=await w(R),S=localStorage.getItem(h3),O=S&&x.some((N)=>N.id===S)&&S||x[0]?.id||await P(R);W(O)}catch(R){q(String(R.message))}})()},[w,P]),l(()=>{if(z)localStorage.setItem(h3,z)},[z]),l(()=>{K?.getAlwaysOnTop().then(Y).catch(()=>{})},[K]),l(()=>{if(!K)return;let R=(x)=>{if(x.key==="Escape")K.hide()};return addEventListener("keydown",R),()=>removeEventListener("keydown",R)},[K]);let A=async()=>{if(!Z)return;try{W(await P(Z))}catch(R){q(String(R.message))}},_=async()=>{if(!K)return;let R=!H;Y(R);try{Y(await K.setAlwaysOnTop(R))}catch{Y(!R)}},V=async()=>{if(!z||!Z)return;if(!await R0({title:"删除笔记?",message:"该快速笔记将被删除。",confirmLabel:"删除",danger:!0}))return;await a.deleteDocument(z);let x=await w(Z);W(x[0]?.id??await P(Z))},D=(R)=>{y0(R,(x)=>$(o,{children:[$(j0,{children:"快速笔记"},void 0,!1,void 0,this),Q.length===0&&$("div",{class:"lbl",children:"还没有笔记"},void 0,!1,void 0,this),Q.map((S)=>$(z0,{icon:"file",label:S.title||"无标题",checked:S.id===z,onClick:()=>{x(),W(S.id)}},S.id,!1,void 0,this)),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"plus",label:"新建笔记",onClick:()=>{x(),A()}},void 0,!1,void 0,this),z&&$(z0,{icon:"trash",label:"删除当前笔记",danger:!0,onClick:()=>{x(),V()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),{minWidth:220})},v=Q.find((R)=>R.id===z)?.title;return $("div",{class:"qn",children:[$("div",{class:"qn-bar",children:[$("span",{class:"qn-brand",children:v||"快速笔记"},void 0,!1,void 0,this),$("div",{class:"qn-actions",children:[$("button",{class:"iconbtn",title:"新建笔记",onClick:()=>void A(),children:$(f,{name:"plus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("button",{class:"iconbtn",title:"笔记列表",onClick:D,children:$(f,{name:"list"},void 0,!1,void 0,this)},void 0,!1,void 0,this),K&&$("button",{class:"iconbtn"+(H?" active":""),title:H?"取消置顶":"始终置顶",onClick:()=>void _(),children:$(f,{name:"pin"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),G&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",G,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"qn-body",children:z?$(W6,{docId:z,onError:q,onHandle:(R)=>F.current=R},z,!1,void 0,this):$("div",{class:"empty",children:$("div",{children:"加载中…"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$(g8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _q(){let Z=typeof location<"u"?location.hash:"",J=Z.includes("?")?Z.slice(Z.indexOf("?")+1):"",Q=new URLSearchParams(J);return{src:Q.get("src")||"",name:Q.get("name")||void 0,blockId:Q.get("bid")||""}}function u3(){let Z=_q(),[J,Q]=k(Z.src),X=async(z)=>{try{let W=await a.uploadDocBlob(new File([z],"annotated.png",{type:"image/png"}));try{let G=new BroadcastChannel("mh-doc-image");G.postMessage({action:"replace",blockId:Z.blockId,url:W.url}),G.close()}catch{}Q(W.url)}catch(W){s(`保存失败:${W.message}`)}};return $("div",{class:"lightbox preview-win",children:$(j1,{src:J,name:Z.name,draggableBar:!0,onClose:()=>window.close(),onReplace:X},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var vq=/[",\r\n]/;function Tq(Z){return vq.test(Z)?`"${Z.replace(/"/g,'""')}"`:Z}function E3(Z){return Z.map((J)=>J.map(Tq).join(",")).join(`
|
|
148
|
+
`)}function $J(Z,J){let Q=J.startsWith(".")?J:"."+J,X=Z.trim().replace(/[\\/:*?"<>|\x00-\x1f]/g,"-").replace(/\s+/g," ").replace(/^\.+$/,"").slice(0,90)||"untitled";return X.toLowerCase().endsWith(Q.toLowerCase())?X:X+Q}function QJ(Z,J,Q){let X=URL.createObjectURL(new Blob([J],{type:Q})),z=document.createElement("a");z.href=X,z.download=Z,document.body.appendChild(z),z.click(),z.remove(),setTimeout(()=>URL.revokeObjectURL(X),0)}function p3(Z,J){let Q=["id",...Z.map((z)=>z.name)],X=J.map((z)=>[z.id,...Z.map((W)=>Rq(z.cells[W.id]))]);return E3([Q,...X])}function Rq(Z){if(Z==null)return"";if(typeof Z==="boolean")return Z?"true":"false";if(typeof Z==="object")return JSON.stringify(Z);return String(Z)}function kq(){let[Z,J]=k(()=>typeof window<"u"&&window.matchMedia(V8).matches);return l(()=>{let Q=window.matchMedia(V8),X=()=>J(Q.matches);return Q.addEventListener("change",X),()=>Q.removeEventListener("change",X)},[]),Z}function Iq(){let[Z,J]=k([]),[Q,X]=k([]),[z,W]=k(()=>JJ(location.hash)),[G,q]=k(""),[H,Y]=k(!1),[F,K]=k(268),[w,P]=k("blocks"),[A,_]=k(!1),[V,D]=k(!1),[v,R]=k(!1),[x,S]=k(!1),[O,N]=k(()=>jZ()),[L,B]=k(!1),[M,y]=k(!1),E=W0(null),c=W0(!1),r=W0(null),$0=kq(),m=n9((T)=>q(T),[]),g=n9((T)=>{E.current=T},[]),u=n9(async()=>{let[T,p]=await Promise.all([a.listDatabases(),a.listDocuments()]);J(T),X(p),_(!0)},[]);l(()=>{u().catch((T)=>m(String(T.message)))},[u]),l(()=>{let T,p=()=>{clearTimeout(T),T=setTimeout(()=>u().catch((i)=>m(String(i.message))),80)};return document.addEventListener(L9,p),()=>{clearTimeout(T),document.removeEventListener(L9,p)}},[u,m]),l(()=>{if(V9().surface==="desktop")return;tJ()},[]),l(()=>F9((T)=>N({...T})),[]),l(()=>{if(Boolean(O.bucketDirty||O.bucketSyncing)){c.current=!0,B(!1);return}if(!c.current||O.bucketError)return;c.current=!1,B(!0);let p=setTimeout(()=>B(!1),900);return()=>clearTimeout(p)},[O.bucketDirty,O.bucketSyncing,O.bucketError]),l(()=>{k6().then(()=>R8())},[]);let[I,n]=k(typeof navigator<"u"&&!navigator.onLine);l(()=>{let T=()=>n(!1),p=()=>n(!0);return window.addEventListener("online",T),window.addEventListener("offline",p),()=>{window.removeEventListener("online",T),window.removeEventListener("offline",p)}},[]),l(()=>{let T=typeof window<"u"?window.metahubDesktop?.coreUpdate:void 0;if(!T)return;Promise.all([a.version().then((p)=>p.version).catch(()=>null),T.installedVersion().catch(()=>null)]).then(([p,i])=>{if(p&&i&&GZ(i,p)>0)D(!0)})},[]);let Z0=(T,p)=>{let i=ZJ(T);if(location.hash!==i)history[p?.replace?"replaceState":"pushState"](null,"",i);W(T)};l(()=>{if(location.hash&&!location.hash.startsWith("#/"))history.replaceState(null,"","#/");let T=()=>W(JJ(location.hash));return window.addEventListener("hashchange",T),()=>window.removeEventListener("hashchange",T)},[]);let q0=()=>a.createDocument({title:""}).then((T)=>Z0({kind:"doc",id:T.id})).catch((T)=>m(String(T.message))),Q0=z.kind==="db"?Z.find((T)=>T.id===z.id):void 0,J0=z.kind==="doc"?Q.find((T)=>T.id===z.id):void 0,B0=z.kind==="doc"?z.id:null,p0=z.kind==="db"?z.id:null;l(()=>{P("blocks"),R(!1)},[B0]),l(()=>{S(!1)},[p0]);let i0=z.kind!=="empty",m0=W0(0);l(()=>{let T=$0&&i0;if(T&&!document.body.classList.contains("mobile-content"))m0.current=window.scrollY;if(document.body.classList.toggle("mobile",$0),document.body.classList.toggle("mobile-content",T),G6(),$0)window.scrollTo(0,T?0:m0.current)},[$0,i0,z]),l(()=>{let T=(p)=>{if((p.metaKey||p.ctrlKey)&&p.key.toLowerCase()==="k"){p.preventDefault(),document.querySelector(".sb-search input")?.focus();return}if((p.metaKey||p.ctrlKey)&&p.key.toLowerCase()==="s"){if(r.current?.())p.preventDefault()}};return window.addEventListener("keydown",T),()=>window.removeEventListener("keydown",T)},[]),l(()=>{let T=window.matchMedia("(prefers-color-scheme: dark)"),p=()=>{n1(),G6()};return T.addEventListener("change",p),()=>T.removeEventListener("change",p)},[]);let d0=(T)=>{let p=E.current?.snapshotMarkdown();E.current?.flushSave(),(p==null?a.getDocument(T.id).then((F0)=>F0.body??""):Promise.resolve(p)).then((F0)=>QJ($J(T.title||T.id,".md"),F0,"text/markdown;charset=utf-8")).catch((F0)=>m(String(F0.message)))},g0=(T)=>{Promise.all([a.listProperties(T.id),a.listRecords(T.id)]).then(([p,i])=>QJ($J(T.name||T.id,".csv"),p3(p,i),"text/csv;charset=utf-8")).catch((p)=>m(String(p.message)))},h0=(T)=>{y0(T,(p)=>$(o,{children:[$(z0,{icon:"link",label:"复制链接",onClick:()=>{p(),navigator.clipboard.writeText(location.origin+location.pathname+ZJ(z)).then(()=>s("链接已复制")).catch((i)=>m(String(i.message)))}},void 0,!1,void 0,this),z.kind==="doc"&&J0&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{p(),N9({kind:"doc",ref:J0.id,title:J0.title})}},void 0,!1,void 0,this),z.kind==="db"&&Q0&&$(z0,{icon:"link",label:"通过设备分享…",onClick:()=>{p(),N9({kind:"database",ref:Q0.id,title:Q0.name})}},void 0,!1,void 0,this),z.kind==="doc"&&J0&&$(z0,{icon:"download",label:"导出 Markdown",onClick:()=>{p(),d0(J0)}},void 0,!1,void 0,this),z.kind==="db"&&Q0&&$(z0,{icon:"download",label:"导出 CSV",onClick:()=>{p(),g0(Q0)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))},_0=e0()&&(O.bucketDirty||O.bucketSyncing||O.bucketError||L)?O.bucketSyncing?"saving":L?"saved":O.bucketError?"error":"dirty":"share",a0=_0==="saving"?"保存中…":_0==="saved"?"已保存":_0==="share"?"分享":"保存",O0=_0==="share"?"share":_0==="saved"?"cloudCheck":_0==="saving"?"spinner":_0==="error"?"cloudOff":"cloudUp",u0=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform),r0=_0==="share"?"分享":_0==="error"?`保存到云端失败:${O.bucketError??""}`:`保存到云端${$0?"":u0?" · ⌘S":" · Ctrl+S"}`,K0=async()=>{try{await E.current?.flushSave(),await aJ();let T=jZ();if(T.bucketError)throw Error(T.bucketError);if(T.bucketDirty)throw Error("仍有改动尚未保存到云端")}catch(T){s(`保存失败:${T.message}`)}},l0=()=>{y(!0),window.setTimeout(()=>y(!1),320)},w0=(T)=>{if(_0==="share"){h0(T);return}if(_0==="saving"||_0==="saved")return;K0()};r.current=()=>{if(z.kind!=="doc"&&z.kind!=="db")return!1;if(_0==="saving"||_0==="saved")return!0;if(_0==="dirty"||_0==="error")K0(),l0();else if(e0())s("已是最新"),l0();return!0};let h=(T)=>{if(z.kind==="doc"&&J0)y0(T,(p)=>$(o,{children:[$(z0,{icon:"code",label:w==="source"?"块方式显示":"代码方式显示",checked:w==="source",onClick:()=>{p(),E.current?.setMode(w==="source"?"blocks":"source")}},void 0,!1,void 0,this),$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{p(),E.current?.flushSave();try{let i=await a.duplicateDocument(J0.id,{title:`${J0.title||"无标题"} 副本`});Z0({kind:"doc",id:i.id}),s("已创建副本")}catch(i){m(String(i.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"版本历史",onClick:()=>{p(),E.current?.flushSave(),R(!0)}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{p(),navigator.clipboard?.writeText(J0.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{p();let i=await Y9({title:"重命名文档",value:J0.title});if(i)await a.updateDocument(J0.id,{title:i})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除文档",danger:!0,onClick:async()=>{if(p(),await R0({title:"删除文档?",message:`「${J0.title||"无标题"}」将被删除。`,confirmLabel:"删除",danger:!0}))await a.deleteDocument(J0.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this));else if(z.kind==="db"&&Q0)y0(T,(p)=>$(o,{children:[$(z0,{icon:"copy",label:"创建副本",onClick:async()=>{p();try{let i=await a.duplicateDatabase(Q0.id,{name:`${Q0.name} 副本`});Z0({kind:"db",id:i.id}),s("已创建副本")}catch(i){m(String(i.message))}}},void 0,!1,void 0,this),$(z0,{icon:"history",label:"最近动态",onClick:()=>{p(),S(!0)}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"hash",label:"复制 ID",onClick:()=>{p(),navigator.clipboard?.writeText(Q0.id).then(()=>s("已复制 ID"))}},void 0,!1,void 0,this),$(z0,{icon:"settings",label:"重命名…",onClick:async()=>{p();let i=await Y9({title:"重命名数据库",value:Q0.name});if(i&&i!==Q0.name)await a.updateDatabase(Q0.id,{name:i})}},void 0,!1,void 0,this),$(S0,{},void 0,!1,void 0,this),$(z0,{icon:"trash",label:"删除数据库",danger:!0,onClick:async()=>{if(p(),await R0({title:"删除数据库?",message:`「${Q0.name}」及其所有记录将被永久删除。`,confirmLabel:"删除",danger:!0}))await a.deleteDatabase(Q0.id),Z0({kind:"empty"},{replace:!0})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this))};return $(o,{children:[$(_5,{databases:Z,docs:Q,view:z,navigate:Z0,width:F,collapsed:H,onResize:K,onCollapse:()=>Y(!0),updatePending:V,onError:m},void 0,!1,void 0,this),$("div",{class:"main",children:[$("div",{class:"topbar"+(z.kind==="empty"?" bare":""),children:[$("button",{class:"iconbtn hamburger"+(H?" show-collapsed":""),title:$0?"返回":H?"展开侧栏":"菜单",onClick:()=>$0?Z0({kind:"empty"}):Y(!1),children:$(f,{name:$0?"arrowLeft":"panelLeft"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("div",{class:"crumb",children:[z.kind==="doc"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{name:"file",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:J0?.title||"无标题"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="db"&&$(o,{children:[$("span",{class:"emoji",children:Q0?.icon||"\uD83D\uDDC2️"},void 0,!1,void 0,this),$("span",{children:Q0?.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="search"&&$("span",{children:["搜索:“",z.q,"”"]},void 0,!0,void 0,this),z.kind==="settings"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{name:"settings",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"设置"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="sites"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{name:"globe",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"站点管理"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.kind==="shares"&&$(o,{children:[$("span",{class:"emoji",children:$(f,{name:"link",cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{children:"分享"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),(z.kind==="doc"||z.kind==="db")&&$(o,{children:[$("button",{class:`btn share-save share-save-${_0}${M?" share-save-kbd":""}`,title:r0,disabled:_0==="saving"||_0==="saved",onClick:w0,children:[$("span",{class:"share-save-ico",children:$(f,{name:O0,cls:"ico sm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("span",{class:"share-save-label",children:a0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("button",{class:"iconbtn",onClick:h,children:$(f,{name:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),I&&$("div",{class:"offline-bar",children:e0()?"⚡ 离线 — 本地副本模式:可正常查看和编辑全部内容,恢复连接后自动同步":"⚡ 离线 — 可浏览已缓存的内容,修改会失败;恢复网络后自动恢复"},void 0,!1,void 0,this),G&&$("div",{class:"error-bar",onClick:()=>q(""),children:["⚠ ",G,"(点击关闭)"]},void 0,!0,void 0,this),$("div",{class:"content",children:[z.kind==="empty"&&$(Sq,{onNewDoc:q0},void 0,!1,void 0,this),z.kind==="db"&&Q0&&$(c5,{db:Q0,onError:m},Q0.id,!1,void 0,this),z.kind==="db"&&!Q0&&$("div",{class:"empty",children:A?"数据库不存在或已被删除。":"加载中…"},void 0,!1,void 0,this),z.kind==="doc"&&$(W6,{docId:z.id,onError:m,onModeChange:P,onHandle:g},z.id,!1,void 0,this),z.kind==="search"&&$(fq,{q:z.q,onOpenDoc:(T)=>Z0({kind:"doc",id:T}),onOpenDb:(T)=>Z0({kind:"db",id:T})},void 0,!1,void 0,this),z.kind==="settings"&&$(T3,{onUpdatePending:D},void 0,!1,void 0,this),z.kind==="sites"&&$(b3,{},void 0,!1,void 0,this),z.kind==="shares"&&$(j3,{onNavigate:Z0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),v&&z.kind==="doc"&&$(g5,{docId:z.id,onClose:()=>R(!1),onReverted:()=>E.current?.reload()},void 0,!1,void 0,this),x&&z.kind==="db"&&$(b5,{dbId:z.id,onClose:()=>S(!1)},void 0,!1,void 0,this),$(g8,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Sq({onNewDoc:Z}){return $("div",{class:"empty",children:[$("svg",{class:"estate-art",viewBox:"0 0 220 190",fill:"none","aria-hidden":"true",children:[$("ellipse",{class:"kg-ground ground",cx:"110",cy:"176",rx:"62",ry:"8"},void 0,!1,void 0,this),$("circle",{class:"kg-glow fill-soft",cx:"116",cy:"88",r:"42"},void 0,!1,void 0,this),$("g",{class:"kg-plant",children:[$("path",{class:"kg-stem stroke-a draw",pathLength:"100",d:"M110 134 C110 117 108 106 113 92 C116 83 122 77 128 72"},void 0,!1,void 0,this),$("g",{class:"kg-leaf l1",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M108 108 C90 100 86 88 88 80 C102 80 111 90 108 108 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l2",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M118 90 C133 83 144 86 150 94 C139 105 125 104 118 90 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$("g",{class:"kg-leaf l3",children:$("g",{class:"kg-grow",children:$("path",{class:"fill-a",d:"M128 72 C128 57 136 48 146 45 C150 58 144 69 128 72 Z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("rect",{class:"kg-cardB fill-soft",x:"76",y:"124",width:"68",height:"44",rx:"8",transform:"rotate(7 110 146)"},void 0,!1,void 0,this),$("g",{class:"kg-cardA",children:[$("rect",{class:"fill-surface stroke",x:"66",y:"128",width:"76",height:"46",rx:"9",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-a",x:"74",y:"136",width:"18",height:"18",rx:"5",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"139",width:"34",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this),$("rect",{class:"fill-soft",x:"98",y:"150",width:"24",height:"6",rx:"3",transform:"rotate(-5 104 151)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("circle",{class:"kg-particle p1 fill-a",cx:"44",cy:"62",r:"2.6"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p2 fill-soft",cx:"178",cy:"74",r:"3"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p3 fill-a",cx:"40",cy:"120",r:"2"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p4 fill-soft",cx:"182",cy:"126",r:"2.4"},void 0,!1,void 0,this),$("circle",{class:"kg-particle p5 fill-a",cx:"150",cy:"44",r:"2.2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$("p",{class:"estate-title",children:"空空如也"},void 0,!1,void 0,this),$("p",{class:"estate-hint",children:"从左侧选择一个数据库或文档,或新建一个开始。"},void 0,!1,void 0,this),$("button",{class:"estate-link",onClick:Z,children:"+ 新建文档"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Vq({text:Z}){let J=Z.split(/\[([^\[\]]*)\]/g);return $(o,{children:J.map((Q,X)=>X%2?$("mark",{children:Q},X,!1,void 0,this):Q)},void 0,!1,void 0,this)}function fq({q:Z,onOpenDoc:J,onOpenDb:Q}){let[X,z]=k(null);return l(()=>{z(null),a.search(Z).then(z).catch(()=>z([]))},[Z]),$("div",{class:"db",children:[$("div",{class:"db-title",style:{marginBottom:14},children:["搜索:“",Z,"”"]},void 0,!0,void 0,this),X===null&&$("p",{class:"muted",children:"搜索中…"},void 0,!1,void 0,this),X?.length===0&&$("p",{class:"muted",children:"没有匹配结果。"},void 0,!1,void 0,this),X?.map((W)=>$("div",{class:"search-hit",onClick:()=>W.type==="document"?J(W.id):W.database_id&&Q(W.database_id),children:[$("strong",{children:W.title||W.id},void 0,!1,void 0,this)," ",$("span",{class:"muted",children:W.type==="document"?"文档":"记录"},void 0,!1,void 0,this),$("div",{class:"muted",children:$(Vq,{text:W.snippet},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},W.id,!0,void 0,this))]},void 0,!0,void 0,this)}function d3({text:Z}){return $("div",{class:"enroll-splash",children:[$("div",{class:"enroll-spinner"},void 0,!1,void 0,this),$("div",{class:"muted",children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function gq(){let Z=/[#&]enroll=([^&]+)/.exec(location.hash);if(!Z)return null;try{return A5(Z[1])}catch{return null}}function bq({onDone:Z}){let J=gq(),[Q,X]=k(J?.endpoint??""),[z,W]=k(J?.bucket??""),[G,q]=k(J?.region??"auto"),[H,Y]=k(J?.accessKeyId??""),[F,K]=k(J?.secretAccessKey??""),[w,P]=k(J?.prefix??"metahub"),[A,_]=k(J?.encrypt??!0),[V,D]=k(""),[v,R]=k(!1),[x,S]=k(""),O=J!=null,N=async()=>{if(!Q.trim()||!z.trim()||!H.trim()||!F.trim()){S("endpoint、bucket、access key、secret key 必填");return}if(A&&!V){S("加密口令必填");return}R(!0),S("");try{await lJ({endpoint:Q.trim(),region:G.trim()||"auto",bucket:z.trim(),prefix:w.trim()||"metahub",accessKeyId:H.trim(),secretAccessKey:F.trim(),encrypt:A,virtualHostedStyle:J?.virtualHostedStyle},V),Z()}catch(L){let B=L.message;S(/failed to fetch|load failed|networkerror|cors/i.test(B)?"连接被浏览器拦截:请给存储桶配置 CORS,允许此源的 GET/PUT/HEAD/DELETE。":`连接失败:${B}`),R(!1)}};return $("div",{class:"enroll",children:$("div",{class:"enroll-card",children:[$("div",{class:"enroll-title",children:"连接你的存储桶"},void 0,!1,void 0,this),$("div",{class:"enroll-sub",children:O?"已从二维码读取桶信息,输入加密口令即可同步你的数据。":"填入 S3 兼容存储桶(R2/COS/MinIO/S3)的连接信息;数据上传前端到端加密。"},void 0,!1,void 0,this),!O&&$(o,{children:[$("div",{class:"field-label",children:"Endpoint"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"https://<bucket>.cos.<region>.myqcloud.com",value:Q,onInput:(L)=>X(L.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Bucket"},void 0,!1,void 0,this),$("input",{class:"text-input",value:z,onInput:(L)=>W(L.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Region"},void 0,!1,void 0,this),$("input",{class:"text-input",placeholder:"auto",value:G,onInput:(L)=>q(L.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Access Key ID"},void 0,!1,void 0,this),$("input",{class:"text-input",value:H,onInput:(L)=>Y(L.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"Secret Access Key"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",value:F,onInput:(L)=>K(L.target.value)},void 0,!1,void 0,this),$("div",{class:"field-label",children:"路径前缀"},void 0,!1,void 0,this),$("input",{class:"text-input",value:w,onInput:(L)=>P(L.target.value)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O&&$("div",{class:"enroll-bucket muted",children:["桶:",z]},void 0,!0,void 0,this),A&&$(o,{children:[$("div",{class:"field-label",children:"加密口令"},void 0,!1,void 0,this),$("input",{class:"text-input",type:"password",autofocus:O,placeholder:"与其他设备相同的口令",value:V,onInput:(L)=>D(L.target.value),onKeyDown:(L)=>L.key==="Enter"&&N()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x&&$("div",{class:"enroll-err",children:x},void 0,!1,void 0,this),$("button",{class:"btn btn-primary enroll-go",disabled:v,onClick:N,children:v?"连接中…":"连接并同步"},void 0,!1,void 0,this),$("div",{class:"enroll-hint muted",children:"提示:iPhone 请用 Safari 的「分享 → 添加到主屏」装成 App,离线与持久存储才生效。"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function jq(){let[Z,J]=k("detecting");if(l(()=>{k6().then((Q)=>{if(Q==="server")return J("app");if(!H9())return J("enroll");hZ(),J(e0()?"app":"hydrating")})},[]),l(()=>{if(Z!=="hydrating")return;if(e0())return J("app");return F9(()=>{if(e0())J("app")})},[Z]),Z==="detecting")return $(d3,{text:"加载中…"},void 0,!1,void 0,this);if(Z==="enroll")return $(bq,{onDone:()=>J(e0()?"app":"hydrating")},void 0,!1,void 0,this);if(Z==="hydrating")return $(d3,{text:"正在从云端水合本地副本…"},void 0,!1,void 0,this);return $(Iq,{},void 0,!1,void 0,this)}if(typeof window<"u"&&window.metahubDesktop){if(document.body.classList.add("desktop"),window.metahubDesktop.platform==="darwin")document.body.classList.add("desktop-mac")}if(location.hash.startsWith("#preview"))document.body.classList.add("preview-window"),a9($(u3,{},void 0,!1,void 0,this),document.getElementById("app"));else if(location.hash==="#quick"&&V9().surface==="desktop")document.body.classList.add("quicknote"),a9($(m3,{},void 0,!1,void 0,this),document.getElementById("app"));else a9($(jq,{},void 0,!1,void 0,this),document.getElementById("app"));
|