@gkd-kit/inspect 0.0.1787845264330 → 0.0.1788032644344
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/404.html +16 -16
- package/dist/assets/{LogPage-CX3_UR8r.js → LogPage-sbyqnztd.js} +2 -2
- package/dist/assets/{LogPage-CX3_UR8r.js.map → LogPage-sbyqnztd.js.map} +1 -1
- package/dist/assets/SnapshotPage-BKP3fAAQ.js +1 -1
- package/dist/assets/chunk-dBTUWv3m.js +1 -1
- package/dist/assets/{index-XfbxlcV9.js → index-DGoFYVM7.js} +7 -7
- package/dist/assets/{index-XfbxlcV9.js.map → index-DGoFYVM7.js.map} +1 -1
- package/dist/assets/{index-BR4WvJax.css → index-zTbuIQ-Q.css} +1 -1
- package/dist/assets/{sql-wasm-browser-D_1c2kgW.js → sql-wasm-browser-DyMNAMHs.js} +2 -2
- package/dist/assets/{sql-wasm-browser-D_1c2kgW.js.map → sql-wasm-browser-DyMNAMHs.js.map} +1 -1
- package/dist/assets/{worker-entry-retrace.worker-DqRAmOwS.js → worker-entry-retrace.worker-D-7uprht.js} +2 -2
- package/dist/assets/{worker-entry-retrace.worker-DqRAmOwS.js.map → worker-entry-retrace.worker-D-7uprht.js.map} +1 -1
- package/dist/assets/{worker-entry-sqlite.worker-CKZxcxJX.js → worker-entry-sqlite.worker-CKaCUOTj.js} +2 -2
- package/dist/assets/{worker-entry-sqlite.worker-CKZxcxJX.js.map → worker-entry-sqlite.worker-CKaCUOTj.js.map} +1 -1
- package/dist/index.html +16 -16
- package/package.json +1 -1
package/dist/404.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
2
|
<html lang="zh">
|
|
3
3
|
<head>
|
|
4
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
4
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/polyfills-BaNoxw_m.js"></script>
|
|
5
5
|
|
|
6
6
|
<meta charset="UTF-8" />
|
|
7
7
|
<link
|
|
@@ -12,21 +12,21 @@
|
|
|
12
12
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
13
13
|
<meta name="referrer" content="no-referrer" />
|
|
14
14
|
<title>GKD</title>
|
|
15
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
16
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
17
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
18
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
19
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
20
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
21
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
22
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
23
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
24
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
25
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
26
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
27
|
-
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
28
|
-
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
29
|
-
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
15
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/index-DGoFYVM7.js"></script>
|
|
16
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/chunk-62oNxeRG.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/preload-helper-CGzYWM-b.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/runtime-core.esm-bundler-spSacuTK.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/dist-WvcSYhpE.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/gkd-selector-CB_8ygle.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/buildMatchPatternFn-D1PSIMpZ.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/log_url-CTN2rJgH.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/discrete-JP1z-mul.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/vue-router-BwzYYogk.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/others-wzuXTv8I.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/global-Be78SEQg.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/check-CxS-_SqU.js">
|
|
28
|
+
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/others-D6OXBwtH.css">
|
|
29
|
+
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788032644344/files/dist/assets/index-zTbuIQ-Q.css">
|
|
30
30
|
</head>
|
|
31
31
|
<body>
|
|
32
32
|
</body>
|
|
@@ -533,5 +533,5 @@ import{i as e}from"./chunk-62oNxeRG.js";import{At as t,Cn as n,Ct as r,D as i,E
|
|
|
533
533
|
border-top: 1px solid var(--n-tab-border-color);
|
|
534
534
|
`),N(`tabs-pad`,`
|
|
535
535
|
border-top: 1px solid var(--n-tab-border-color);
|
|
536
|
-
`)])])])]),rn=wt,an=Q({name:`Tabs`,props:Object.assign(Object.assign({},p.props),{value:[String,Number],defaultValue:[String,Number],trigger:{type:String,default:`click`},type:{type:String,default:`bar`},closable:Boolean,justifyContent:String,size:String,placement:{type:String,default:`top`},tabStyle:[String,Object],tabClass:String,addTabStyle:[String,Object],addTabClass:String,barWidth:Number,paneClass:String,paneStyle:[String,Object],paneWrapperClass:String,paneWrapperStyle:[String,Object],addable:[Boolean,Object],tabsPadding:{type:Number,default:0},animated:Boolean,onBeforeLeave:Function,onAdd:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onClose:[Function,Array],labelSize:String,activeName:[String,Number],onActiveNameChange:[Function,Array]}),slots:Object,setup(e,{slots:t}){var n,r;let{mergedClsPrefixRef:i,inlineThemeDisabled:a,mergedComponentPropsRef:o}=T(e),s=p(`Tabs`,`-tabs`,nn,Kt,e,i),c=K(null),l=K(null),u=K(null),d=K(null),m=K(null),h=K(null),g=K(!0),_=K(!0),v=ue(e,[`labelSize`,`size`]),y=q(()=>{var e,t;return v.value?v.value:((t=(e=o==null?void 0:o.value)==null?void 0:e.Tabs)==null?void 0:t.size)||`medium`}),b=ue(e,[`activeName`,`value`]),x=K(b.value??e.defaultValue??(t.default?(r=(n=f(t.default())[0])==null?void 0:n.props)==null?void 0:r.name:null)),S=Ye(b,x),C={id:0},ee=q(()=>{if(!(!e.justifyContent||e.type===`card`))return{display:`flex`,justifyContent:e.justifyContent}});R(S,()=>{C.id=0,oe(),se()});function D(){var e;let{value:t}=S;return t===null?null:(e=c.value)==null?void 0:e.querySelector(`[data-name="${t}"]`)}function re(t){if(e.type===`card`)return;let{value:n}=l;if(!n)return;let r=n.style.opacity===`0`;if(t){let a=`${i.value}-tabs-bar--disabled`,{barWidth:o,placement:s}=e;if(t.dataset.disabled===`true`?n.classList.add(a):n.classList.remove(a),[`top`,`bottom`].includes(s)){if(ae([`top`,`maxHeight`,`height`]),typeof o==`number`&&t.offsetWidth>=o){let e=Math.floor((t.offsetWidth-o)/2)+t.offsetLeft;n.style.left=`${e}px`,n.style.maxWidth=`${o}px`}else n.style.left=`${t.offsetLeft}px`,n.style.maxWidth=`${t.offsetWidth}px`;n.style.width=`8192px`,r&&(n.style.transition=`none`),n.offsetWidth,r&&(n.style.transition=``,n.style.opacity=`1`)}else{if(ae([`left`,`maxWidth`,`width`]),typeof o==`number`&&t.offsetHeight>=o){let e=Math.floor((t.offsetHeight-o)/2)+t.offsetTop;n.style.top=`${e}px`,n.style.maxHeight=`${o}px`}else n.style.top=`${t.offsetTop}px`,n.style.maxHeight=`${t.offsetHeight}px`;n.style.height=`8192px`,r&&(n.style.transition=`none`),n.offsetHeight,r&&(n.style.transition=``,n.style.opacity=`1`)}}}function ie(){if(e.type===`card`)return;let{value:t}=l;t&&(t.style.opacity=`0`)}function ae(e){let{value:t}=l;if(t)for(let n of e)t.style[n]=``}function oe(){if(e.type===`card`)return;let t=D();t?re(t):ie()}function se(){var e;let t=(e=m.value)==null?void 0:e.$el;if(!t)return;let n=D();if(!n)return;let{scrollLeft:r,offsetWidth:i}=t,{offsetLeft:a,offsetWidth:o}=n;r>a?t.scrollTo({top:0,left:a,behavior:`smooth`}):a+o>r+i&&t.scrollTo({top:0,left:a+o-i,behavior:`smooth`})}let O=K(null),ce=0,k=null;function le(e){let t=O.value;if(t){ce=e.getBoundingClientRect().height;let n=`${ce}px`,r=()=>{t.style.height=n,t.style.maxHeight=n};k?(r(),k(),k=null):k=r}}function j(e){let t=O.value;if(t){let n=e.getBoundingClientRect().height,r=()=>{document.body.offsetHeight,t.style.maxHeight=`${n}px`,t.style.height=`${Math.max(ce,n)}px`};k?(k(),k=null,r()):k=r}}function M(){let t=O.value;if(t){t.style.maxHeight=``,t.style.height=``;let{paneWrapperStyle:n}=e;if(typeof n==`string`)t.style.cssText=n;else if(n){let{maxHeight:e,height:r}=n;e!==void 0&&(t.style.maxHeight=e),r!==void 0&&(t.style.height=r)}}}let N={value:[]},de=K(`next`);function fe(e){let t=S.value,n=`next`;for(let r of N.value){if(r===t)break;if(r===e){n=`prev`;break}}de.value=n,pe(e)}function pe(t){let{onActiveNameChange:n,onUpdateValue:r,"onUpdate:value":i}=e;n&&E(n,t),r&&E(r,t),i&&E(i,t),x.value=t}function he(t){let{onClose:n}=e;n&&E(n,t)}let ge=!0;function _e(){let{value:e}=l;if(!e)return;ge||=!1;let t=`transition-disabled`;e.classList.add(t),oe(),e.classList.remove(t)}let ve=K(null);function ye({transitionDisabled:e}){let t=c.value;if(!t)return;e&&t.classList.add(`transition-disabled`);let n=D();n&&ve.value&&(ve.value.style.width=`${n.offsetWidth}px`,ve.value.style.height=`${n.offsetHeight}px`,ve.value.style.transform=`translateX(${n.offsetLeft-w(getComputedStyle(t).paddingLeft)}px)`,e&&ve.value.offsetWidth),e&&t.classList.remove(`transition-disabled`)}R([S],()=>{e.type===`segment`&&Ce(()=>{ye({transitionDisabled:!1})})}),Oe(()=>{e.type===`segment`&&ye({transitionDisabled:!0})});let P=0;function be(t){var n,r;if(t.contentRect.width===0&&t.contentRect.height===0||P===t.contentRect.width)return;P=t.contentRect.width;let{type:i}=e;if((i===`line`||i===`bar`)&&(ge||(n=e.justifyContent)!=null&&n.startsWith(`space`))&&_e(),i!==`segment`){let{placement:t}=e;I((t===`top`||t===`bottom`?(r=m.value)==null?void 0:r.$el:h.value)||null)}}let xe=rn(be,64);R([()=>e.justifyContent,()=>e.size],()=>{Ce(()=>{let{type:t}=e;(t===`line`||t===`bar`)&&_e()})});let Se=K(!1);function F(t){var n;let{target:r,contentRect:{width:i,height:a}}=t,o=r.parentElement.parentElement.offsetWidth,s=r.parentElement.parentElement.offsetHeight,{placement:c}=e;if(!Se.value)c===`top`||c===`bottom`?o<i&&(Se.value=!0):s<a&&(Se.value=!0);else{let{value:e}=d;if(!e)return;c===`top`||c===`bottom`?o-i>e.$el.offsetWidth&&(Se.value=!1):s-a>e.$el.offsetHeight&&(Se.value=!1)}I(((n=m.value)==null?void 0:n.$el)||null)}let we=rn(F,64);function Te(){let{onAdd:t}=e;t&&t(),Ce(()=>{let e=D(),{value:t}=m;!e||!t||t.scrollTo({left:e.offsetLeft,top:0,behavior:`smooth`})})}function I(t){if(!t)return;let{placement:n}=e;if(n===`top`||n===`bottom`){let{scrollLeft:e,scrollWidth:n,offsetWidth:r}=t;g.value=e<=0,_.value=e+r>=n}else{let{scrollTop:e,scrollHeight:n,offsetHeight:r}=t;g.value=e<=0,_.value=e+r>=n}}let L=rn(e=>{I(e.target)},64);Ee(Qt,{triggerRef:J(e,`trigger`),tabStyleRef:J(e,`tabStyle`),tabClassRef:J(e,`tabClass`),addTabStyleRef:J(e,`addTabStyle`),addTabClassRef:J(e,`addTabClass`),paneClassRef:J(e,`paneClass`),paneStyleRef:J(e,`paneStyle`),mergedClsPrefixRef:i,typeRef:J(e,`type`),closableRef:J(e,`closable`),valueRef:S,tabChangeIdRef:C,onBeforeLeaveRef:J(e,`onBeforeLeave`),activateTab:fe,handleClose:he,handleAdd:Te}),me(()=>{oe(),se()}),Ie(()=>{let{value:e}=u;if(!e)return;let{value:t}=i,n=`${t}-tabs-nav-scroll-wrapper--shadow-start`,r=`${t}-tabs-nav-scroll-wrapper--shadow-end`;g.value?e.classList.remove(n):e.classList.add(n),_.value?e.classList.remove(r):e.classList.add(r)});let De={syncBarPosition:()=>{oe()}},ke=()=>{ye({transitionDisabled:!0})},Ae=q(()=>{let{value:t}=y,{type:n}=e,r=`${t}${{card:`Card`,bar:`Bar`,line:`Line`,segment:`Segment`}[n]}`,{self:{barColor:i,closeIconColor:a,closeIconColorHover:o,closeIconColorPressed:c,tabColor:l,tabBorderColor:u,paneTextColor:d,tabFontWeight:f,tabBorderRadius:p,tabFontWeightActive:m,colorSegment:h,fontWeightStrong:g,tabColorSegment:_,closeSize:v,closeIconSize:b,closeColorHover:x,closeColorPressed:S,closeBorderRadius:C,[A(`panePadding`,t)]:w,[A(`tabPadding`,r)]:ee,[A(`tabPaddingVertical`,r)]:T,[A(`tabGap`,r)]:E,[A(`tabGap`,`${r}Vertical`)]:D,[A(`tabTextColor`,n)]:ne,[A(`tabTextColorActive`,n)]:re,[A(`tabTextColorHover`,n)]:ie,[A(`tabTextColorDisabled`,n)]:ae,[A(`tabFontSize`,t)]:oe},common:{cubicBezierEaseInOut:se}}=s.value;return{"--n-bezier":se,"--n-color-segment":h,"--n-bar-color":i,"--n-tab-font-size":oe,"--n-tab-text-color":ne,"--n-tab-text-color-active":re,"--n-tab-text-color-disabled":ae,"--n-tab-text-color-hover":ie,"--n-pane-text-color":d,"--n-tab-border-color":u,"--n-tab-border-radius":p,"--n-close-size":v,"--n-close-icon-size":b,"--n-close-color-hover":x,"--n-close-color-pressed":S,"--n-close-border-radius":C,"--n-close-icon-color":a,"--n-close-icon-color-hover":o,"--n-close-icon-color-pressed":c,"--n-tab-color":l,"--n-tab-font-weight":f,"--n-tab-font-weight-active":m,"--n-tab-padding":ee,"--n-tab-padding-vertical":T,"--n-tab-gap":E,"--n-tab-gap-vertical":D,"--n-pane-padding-left":te(w,`left`),"--n-pane-padding-right":te(w,`right`),"--n-pane-padding-top":te(w,`top`),"--n-pane-padding-bottom":te(w,`bottom`),"--n-font-weight-strong":g,"--n-tab-color-segment":_}}),z=a?ne(`tabs`,q(()=>`${y.value[0]}${e.type[0]}`),Ae,e):void 0;return Object.assign({mergedClsPrefix:i,mergedValue:S,renderedNames:new Set,segmentCapsuleElRef:ve,tabsPaneWrapperRef:O,tabsElRef:c,barElRef:l,addTabInstRef:d,xScrollInstRef:m,scrollWrapperElRef:u,addTabFixed:Se,tabWrapperStyle:ee,handleNavResize:xe,mergedSize:y,handleScroll:L,handleTabsResize:we,cssVars:a?void 0:Ae,themeClass:z==null?void 0:z.themeClass,animationDirection:de,renderNameListRef:N,yScrollElRef:h,handleSegmentResize:ke,onAnimationBeforeLeave:le,onAnimationEnter:j,onAnimationAfterEnter:M,onRender:z==null?void 0:z.onRender},De)},render(){let{mergedClsPrefix:e,type:t,placement:n,addTabFixed:i,addable:a,mergedSize:o,renderNameListRef:s,onRender:c,paneWrapperClass:l,paneWrapperStyle:u,$slots:{default:d,prefix:p,suffix:h}}=this;c==null||c();let g=d?f(d()).filter(e=>e.type.__TAB_PANE__===!0):[],_=d?f(d()).filter(e=>e.type.__TAB__===!0):[],v=!_.length,y=t===`card`,b=t===`segment`,x=!y&&!b&&this.justifyContent;s.value=[];let S=()=>{let t=$(`div`,{style:this.tabWrapperStyle,class:`${e}-tabs-wrapper`},x?null:$(`div`,{class:`${e}-tabs-scroll-padding`,style:n===`top`||n===`bottom`?{width:`${this.tabsPadding}px`}:{height:`${this.tabsPadding}px`}}),v?g.map((e,t)=>(s.value.push(e.props.name),ln($(tn,Object.assign({},e.props,{internalCreatedByPane:!0,internalLeftPadded:t!==0&&(!x||x===`center`||x===`start`||x===`end`)}),e.children?{default:e.children.tab}:void 0)))):_.map((e,t)=>(s.value.push(e.props.name),ln(t!==0&&!x?cn(e):e))),!i&&a&&y?sn(a,(v?g.length:_.length)!==0):null,x?null:$(`div`,{class:`${e}-tabs-scroll-padding`,style:{width:`${this.tabsPadding}px`}}));return $(`div`,{ref:`tabsElRef`,class:`${e}-tabs-nav-scroll-content`},y&&a?$(m,{onResize:this.handleTabsResize},{default:()=>t}):t,y?$(`div`,{class:`${e}-tabs-pad`}):null,y?null:$(`div`,{ref:`barElRef`,class:`${e}-tabs-bar`}))},C=b?`top`:n;return $(`div`,{class:[`${e}-tabs`,this.themeClass,`${e}-tabs--${t}-type`,`${e}-tabs--${o}-size`,x&&`${e}-tabs--flex`,`${e}-tabs--${C}`],style:this.cssVars},$(`div`,{class:[`${e}-tabs-nav--${t}-type`,`${e}-tabs-nav--${C}`,`${e}-tabs-nav`]},r(p,t=>t&&$(`div`,{class:`${e}-tabs-nav__prefix`},t)),b?$(m,{onResize:this.handleSegmentResize},{default:()=>$(`div`,{class:`${e}-tabs-rail`,ref:`tabsElRef`},$(`div`,{class:`${e}-tabs-capsule`,ref:`segmentCapsuleElRef`},$(`div`,{class:`${e}-tabs-wrapper`},$(`div`,{class:`${e}-tabs-tab`}))),v?g.map((e,t)=>(s.value.push(e.props.name),$(tn,Object.assign({},e.props,{internalCreatedByPane:!0,internalLeftPadded:t!==0}),e.children?{default:e.children.tab}:void 0))):_.map((e,t)=>(s.value.push(e.props.name),t===0?e:cn(e))))}):$(m,{onResize:this.handleNavResize},{default:()=>$(`div`,{class:`${e}-tabs-nav-scroll-wrapper`,ref:`scrollWrapperElRef`},[`top`,`bottom`].includes(C)?$(xt,{ref:`xScrollInstRef`,onScroll:this.handleScroll},{default:S}):$(`div`,{class:`${e}-tabs-nav-y-scroll`,onScroll:this.handleScroll,ref:`yScrollElRef`},S()))}),i&&a&&y?sn(a,!0):null,r(h,t=>t&&$(`div`,{class:`${e}-tabs-nav__suffix`},t))),v&&(this.animated&&(C===`top`||C===`bottom`)?$(`div`,{ref:`tabsPaneWrapperRef`,style:u,class:[`${e}-tabs-pane-wrapper`,l]},on(g,this.mergedValue,this.renderedNames,this.onAnimationBeforeLeave,this.onAnimationEnter,this.onAnimationAfterEnter,this.animationDirection)):on(g,this.mergedValue,this.renderedNames)))}});function on(e,t,n,r,i,a,o){let s=[];return e.forEach(e=>{let{name:r,displayDirective:i,"display-directive":a}=e.props,o=e=>i===e||a===e,c=t===r;if(e.key!==void 0&&(e.key=r),c||o(`show`)||o(`show:lazy`)&&n.has(r)){n.has(r)||n.add(r);let t=!o(`if`);s.push(t?Me(e,[[b,c]]):e)}}),o?$(oe,{name:`${o}-transition`,onBeforeLeave:r,onEnter:i,onAfterEnter:a},{default:()=>s}):s}function sn(e,t){return $(tn,{ref:`addTabInstRef`,key:`__addable`,name:`__addable`,internalCreatedByPane:!0,internalAddable:!0,internalLeftPadded:t,disabled:typeof e==`object`&&e.disabled})}function cn(e){let t=Ne(e);return t.props?t.props.internalLeftPadded=!0:t.props={internalLeftPadded:!0},t}function ln(e){return Array.isArray(e.dynamicProps)?e.dynamicProps.includes(`internalLeftPadded`)||e.dynamicProps.push(`internalLeftPadded`):e.dynamicProps=[`internalLeftPadded`],e}var un=Q({name:`VirtualList`,props:{scrollbarProps:Object,items:{type:Array,default:()=>[]},itemSize:{type:Number,required:!0},itemResizable:Boolean,itemsStyle:[String,Object],visibleItemsTag:{type:[String,Object],default:`div`},visibleItemsProps:Object,ignoreItemResize:Boolean,onScroll:Function,onWheel:Function,onResize:Function,defaultScrollKey:[Number,String],defaultScrollIndex:Number,keyField:{type:String,default:`key`},paddingTop:{type:[Number,String],default:0},paddingBottom:{type:[Number,String],default:0}},setup(e){let t=K(null),n=K(null);function r(){let{value:e}=t;e&&e.sync()}function i(t){var n;r(),(n=e.onScroll)==null||n.call(e,t)}function a(t){var n;r(),(n=e.onResize)==null||n.call(e,t)}function o(t){var n;(n=e.onWheel)==null||n.call(e,t)}function s(e,t){var r,i;typeof e==`number`?(r=n.value)==null||r.scrollTo(e,t??0):(i=n.value)==null||i.scrollTo(e)}function c(){var e;return(e=n.value)==null?void 0:e.listElRef}function l(){var e;return(e=n.value)==null?void 0:e.itemsElRef}return{scrollTo:s,scrollbarInstRef:t,virtualListInstRef:n,getScrollContainer:c,getScrollContent:l,handleScroll:i,handleResize:a,handleWheel:o}},render(){return $(h,Object.assign({},this.scrollbarProps,{ref:`scrollbarInstRef`,container:this.getScrollContainer,content:this.getScrollContent}),{default:()=>$(ye,{ref:`virtualListInstRef`,showScrollbar:!1,items:this.items,itemSize:this.itemSize,itemResizable:this.itemResizable,itemsStyle:this.itemsStyle,visibleItemsTag:this.visibleItemsTag,visibleItemsProps:this.visibleItemsProps,ignoreItemResize:this.ignoreItemResize,keyField:this.keyField,defaultScrollKey:this.defaultScrollKey,defaultScrollIndex:this.defaultScrollIndex,paddingTop:this.paddingTop,paddingBottom:this.paddingBottom,onScroll:this.handleScroll,onResize:this.handleResize,onWheel:this.handleWheel},{default:({item:e,index:t})=>{var n,r;return(r=(n=this.$slots).default)==null?void 0:r.call(n,{item:e,index:t})}})})}}),dn=1e4,fn=e=>{if(typeof e!=`object`||!e)return 0;if(Array.isArray(e))return e.length<=1e4?e.length:void 0;let t=0;for(let n in e)if(Object.hasOwn(e,n)&&(t++,t>1e4))return;return t},pn=e=>typeof e==`object`&&!!e&&fn(e)==null,mn=e=>{if(typeof e!=`object`||!e)return!1;let t=[{value:e,depth:0,pathSize:0}],n=new WeakSet,r=0;for(;t.length;){let e=t.pop();if(!(!e||n.has(e.value))){if(e.depth>=128)return!0;if(n.add(e.value),Array.isArray(e.value)){if(r+=e.value.length,r>1e5)return!0;for(let n=0;n<e.value.length;n++){let r=e.value[n],i=e.pathSize+String(n).length+1;if(i>4096)return!0;typeof r==`object`&&r&&t.push({value:r,depth:e.depth+1,pathSize:i})}continue}for(let n in e.value){if(!Object.hasOwn(e.value,n))continue;if(n.length>256||(r++,r>1e5))return!0;let i=e.pathSize+n.length+1;if(i>4096)return!0;let a=e.value[n];typeof a==`object`&&a&&t.push({value:a,depth:e.depth+1,pathSize:i})}}}return!1},hn=e=>e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`,gn=e=>hn(e)?!0:Array.isArray(e)?e.every(hn):typeof e==`object`&&!!e&&Object.keys(e).length==0,_n=e=>{if(typeof e!=`object`||!e||pn(e))return;let t=Object.entries(e);if(!(t.length==0||!t.every(([,e])=>gn(e))))return t.map(([e,t])=>({key:e,value:t}))},vn=e=>JSON.stringify(e)??String(e),yn=(e,t)=>{if(mn(e))return t;try{return JSON.stringify(e,null,2)??t}catch{return t}},bn=()=>({matchCase:!1,wholeWord:!1,useRegex:!1}),xn=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Sn=(e,t,n=!0)=>{let r=e.trim();if(!r)return;let i=t.useRegex?r:xn(r);if(t.wholeWord){let e=`[\\p{L}\\p{N}_]`;i=`(?<!${e})(?:${i})(?!${e})`}try{return new RegExp(i,`${n?`g`:``}${t.matchCase?``:`i`}u`)}catch{return}},Cn=(e,t)=>!e.trim()||!t.useRegex||!!Sn(e,t),wn=(e,t,n)=>{let r=Sn(t,n);if(!r)return[];let i=[],a;for(;a=r.exec(e);)a[0].length?i.push({start:a.index,end:a.index+a[0].length}):r.lastIndex++;return i},Tn=(e,t,n)=>{let r=Sn(t,n);if(!r)return 0;let i=0,a;for(;a=r.exec(e);)a[0].length?i++:r.lastIndex++;return i},En=(e,t,n)=>e.split(/\r\n|\n|\r/).reduce((e,r)=>e+Tn(r,t,n),0),Dn=(e,t,n)=>{let r=Sn(t,n,!1);return(r==null?void 0:r.test(e))||!1},On=/\b([A-Za-z\d]+\.kt):(\d+)\b/g,kn=/^[A-Za-z\d_.-]+$/,An=/^[a-f\d]{7,40}$/i,jn=1024,Mn=64,Nn=255,Pn=e=>/^gkd(?:-[^/]+)?\.json$/i.test(e),Fn=e=>{try{let t=JSON.parse(Ln(e));if(!In(t)||typeof t.buildKey!=`string`)return;let n=t.buildKey.trim();return!n||n.length>256?void 0:n}catch{}},In=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ln=e=>e.replace(/^\uFEFF/,``),Rn=(e,t)=>{if(typeof e==`string`)try{var n;let r=new URL(e);if(r.protocol!=`https:`||r.hostname.toLowerCase()!=`github.com`||r.port||r.username||r.password)return;let i=r.pathname.split(`/`).filter(Boolean).map(decodeURIComponent);if(i.length!=4||((n=i[2])==null?void 0:n.toLowerCase())!=`commit`)return;let[a,o,,s]=i;return!a||!o||!s||!kn.test(a)||!kn.test(o)||!An.test(s)||t!=null&&(typeof t!=`string`||t.toLowerCase()!=s.toLowerCase())?void 0:{repositoryUrl:`https://github.com/${a}/${o}`,commitId:s,commitUrl:`https://github.com/${a}/${o}/commit/${s}`}}catch{}},zn=e=>{try{let t=JSON.parse(Ln(e));return In(t)?Rn(t.commitUrl,t.commitId):void 0}catch{}},Bn=e=>{try{let t=JSON.parse(Ln(e));if(!In(t))return;let n=Rn(t.commitUrl,t.commitId);return!n||typeof t.versionName!=`string`||!t.versionName.trim()||typeof t.versionCode!=`number`||!Number.isSafeInteger(t.versionCode)?void 0:{versionName:t.versionName.trim(),versionCode:t.versionCode,commitUrl:n.commitUrl}}catch{}},Vn=e=>{let t=e.trim().replaceAll(`\\`,`/`);if(!t||t.length>jn||t.startsWith(`/`)||/^[A-Za-z]:\//.test(t)||!t.toLowerCase().endsWith(`.kt`))return;let n=t.split(`/`);if(!(n.length>Mn||n.some(e=>!e||e==`.`||e==`..`||e.length>Nn)))return t},Hn=e=>{let t=new Map,n=Ln(e).split(/\r\n|\n|\r/);for(let e of n){let n=Vn(e);if(!n)continue;let r=n.split(`/`).at(-1);if(!r)continue;let i=t.get(r)||[];i.includes(n)||i.push(n),t.set(r,i)}for(let e of t.values())e.sort((e,t)=>e.localeCompare(t,`en`));return t},Un=(e,t)=>{if(t==null)return;let n=zn(e);if(!n)return;let r=Hn(t);if(r.size!=0)return{...n,pathsByFileName:r}},Wn=(e,t,n)=>{let r=t.split(`/`).map(encodeURIComponent).join(`/`);return`${e.repositoryUrl}/blob/${e.commitId}/${r}#L${n}`},Gn=e=>{let t=e.map(e=>e.split(`/`));return t.map((n,r)=>{for(let e=1;e<=n.length;e++){let i=n.slice(-e).join(`/`);if(t.every((t,n)=>n==r||t.slice(-e).join(`/`)!=i))return i}return e[r]||``})},Kn=(e,t)=>{if(!t||!e.includes(`.kt:`))return[{text:e}];let n=[],r=0;On.lastIndex=0;let i;for(;i=On.exec(e);){let a=i[1],o=Number(i[2]),s=a?t.pathsByFileName.get(a):void 0;if(!(s!=null&&s.length)||!Number.isSafeInteger(o)||o<1)continue;i.index>r&&n.push({text:e.slice(r,i.index)});let c=Gn(s);n.push({text:i[0],sourceTargets:s.map((e,n)=>({path:e,displayPath:c[n]||e,url:Wn(t,e,o)}))}),r=i.index+i[0].length}return r<e.length&&n.push({text:e.slice(r)}),n.length?n:[{text:e}]},qn=e=>e.split(/\r\n|\n|\r/).map((e,t)=>({key:t,number:t+1,text:e})),Jn=(e,t,n,r)=>{if(!e)return[{text:` `,match:!1,active:!1}];let i=new Set([0,e.length]),a=t+e.length;n.forEach(n=>{n.end<=t||n.start>=a||(i.add(Math.max(n.start-t,0)),i.add(Math.min(n.end-t,e.length)))});let o=[...i].toSorted((e,t)=>e-t),s=[];for(let i=0;i<o.length-1;i++){let a=o[i],c=o[i+1];if(a==null||c==null||a==c)continue;let l=t+a,u=n.findIndex(e=>e.start<=l&&e.end>l);s.push({text:e.slice(a,c),match:u>=0,active:u>=0&&u==r})}return s},[Yn,Xn]=C(e=>{let t=X(``),n=X(-1),r=Fe(bn()),i=X(!1),a=X(),o=X(),s=X(0),c=X(600),l=X(),u=X(),d=q(()=>qn(e.value.value)),f=q(()=>t.value.trim()),p=q(()=>En(e.value.value,t.value,r)),m=q(()=>p.value?Math.min(Math.max(n.value,0),p.value-1)+1:0),h=q(()=>!Cn(t.value,r)),g=q(()=>Math.max(Math.floor(s.value/20)-8,0)),_=q(()=>Math.min(Math.ceil((s.value+c.value)/20)+8,d.value.length)),v=q(()=>d.value.slice(g.value,_.value)),y=q(()=>d.value.length*20);se(o,e=>{var t;let n=(t=e[0])==null?void 0:t.contentRect.height;n&&(c.value=n)});let b=e=>{!f.value||!p.value||(n.value=((n.value>=0?n.value:0)+e+p.value)%p.value)},x=e=>{b(e.shiftKey?-1:1)},S=()=>{var e;s.value=((e=o.value)==null?void 0:e.scrollTop)||0},C=e=>{e instanceof HTMLElement&&(u.value=e)},w=t=>{var n;let i=f.value?wn(t.text,f.value,r):[],a=((n=l.value)==null?void 0:n.lineKey)==t.key?l.value.rangeIndex:void 0,o=Kn(t.text,e.sourceLinkContext.value),s=0;return o.map(e=>{let t={fragments:Jn(e.text,s,i,a),sourceTargets:e.sourceTargets};return s+=e.text.length,t})},ee=async()=>{await navigator.clipboard.writeText(e.value.value),Ke.success(`已复制当前文件内容`)};return R(e.documentKey,()=>{t.value=``,n.value=-1}),R([e.documentKey,i],async()=>{var e,t;s.value=0,await Ce(),(e=o.value)==null||e.scrollTo({top:0}),(t=a.value)==null||t.scrollTo({index:0})}),R([t,()=>r.matchCase,()=>r.wholeWord,()=>r.useRegex,p],([e,t,r,i,a],o)=>{if(!e.trim()||!a){n.value=-1;return}(!o||e!=o[0]||t!=o[1]||r!=o[2]||i!=o[3]||n.value<0||n.value>=a)&&(n.value=0)},{immediate:!0}),R([f,()=>r.matchCase,()=>r.wholeWord,()=>r.useRegex,n],async([e,,,,t])=>{var n,i;if(l.value=void 0,u.value=void 0,!e||t<0)return;let c=t,f=-1;for(let t=0;t<d.value.length;t++){let n=d.value[t];if(!n)continue;let i=wn(n.text,e,r);if(c<i.length){f=t,l.value={lineKey:n.key,rangeIndex:c};break}c-=i.length}f<0||(s.value=f*20,await Ce(),(n=o.value)==null||n.scrollTo({top:s.value}),(i=a.value)==null||i.scrollTo({index:f}),await Ce(),requestAnimationFrame(()=>{var e;(e=u.value)==null||e.scrollIntoView({block:`nearest`,inline:`nearest`})}))},{flush:`post`}),{...e,query:t,resultIndex:n,searchOptions:r,wrap:i,virtualList:a,scrollContainer:o,lineHeight:20,lines:d,visibleStart:g,visibleLines:v,virtualHeight:y,normalizedQuery:f,matchCount:p,displayedResultIndex:m,invalidRegex:h,selectRelativeResult:b,handleSearchEnter:x,handleScroll:S,setActiveMatchElement:C,getLineTokens:w,copyText:ee}}),Zn=Yn,Qn=()=>{let e=Xn();if(!e)throw Error(`TextViewer 子组件必须在 TextViewer 内部使用`);return e},$n=Q({__name:`CopyButton`,setup(e){let{copyable:t,copyText:n}=Qn();return(e,r)=>{let i=Re(`SvgIcon`),a=y;return V(t)?(I(),B(a,{key:0,quaternary:``,circle:``,size:`small`,class:`absolute right-16px top-8px z-3 border border-[#e2e8f0] bg-white/92 shadow-[0_1px_3px_rgb(15_23_42_/_12%)] backdrop-blur-4px`,title:`复制当前文件内容`,"aria-label":`复制当前文件内容`,onClick:V(n)},{icon:L(()=>[W(i,{name:`copy`})]),_:1},8,[`onClick`])):U(``,!0)}}}),er={name:`text-viewer-search`,class:`w-520px max-w-full min-w-0 flex flex-[0_1_520px] items-center gap-6px`},tr=[`title`],nr=[`disabled`],rr=[`disabled`],ir={name:`text-viewer-search-options`,class:`flex items-center gap-2px`},ar=[`aria-pressed`],or=[`aria-pressed`],sr=[`aria-pressed`],cr=Q({__name:`SearchBar`,setup(e){let{query:t,searchOptions:n,searchPlaceholder:r,normalizedQuery:i,matchCount:a,displayedResultIndex:o,invalidRegex:s,selectRelativeResult:c,handleSearchEnter:l}=Qn();return(e,u)=>{let d=Re(`SvgIcon`),f=Xe;return I(),Y(`div`,er,[Z(`div`,{name:`text-viewer-navigation`,class:z([`w-116px min-w-116px flex items-center justify-between gap-2px`,V(i)?`visible`:`invisible`])},[Z(`span`,{class:`w-62px overflow-hidden text-right text-ellipsis whitespace-nowrap text-12px text-[#64748b]`,title:`第 ${V(o).toLocaleString()} 处,共 ${V(a).toLocaleString()} 处`},F(V(o).toLocaleString())+` / `+F(V(a).toLocaleString()),9,tr),Z(`button`,{type:`button`,class:`inline-grid h-22px w-24px cursor-pointer place-items-center rounded-3px border-0 bg-transparent p-0 leading-22px text-[#475569] enabled:hover:bg-[#e2e8f0] disabled:cursor-default disabled:opacity-40 focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,disabled:!V(a),"aria-label":`上一个匹配项`,title:`上一个匹配项 (Shift+Enter)`,onMousedown:u[0]||=O(()=>{},[`prevent`]),onClick:u[1]||=e=>V(c)(-1)},[W(d,{name:`arrow`,class:`h-16px w-16px rotate-180`})],40,nr),Z(`button`,{type:`button`,class:`inline-grid h-22px w-24px cursor-pointer place-items-center rounded-3px border-0 bg-transparent p-0 leading-22px text-[#475569] enabled:hover:bg-[#e2e8f0] disabled:cursor-default disabled:opacity-40 focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,disabled:!V(a),"aria-label":`下一个匹配项`,title:`下一个匹配项 (Enter)`,onMousedown:u[2]||=O(()=>{},[`prevent`]),onClick:u[3]||=e=>V(c)(1)},[W(d,{name:`arrow`,class:`h-16px w-16px`})],40,rr)],2),W(f,{value:V(t),"onUpdate:value":u[10]||=e=>P(t)?t.value=e:null,clearable:``,size:`small`,status:V(s)?`error`:void 0,placeholder:V(r),class:`min-w-0 flex-1`,onKeydown:ae(O(V(l),[`prevent`]),[`enter`])},{suffix:L(()=>[Z(`div`,ir,[Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,V(n).matchCase?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":V(n).matchCase,"aria-label":`区分大小写`,title:`区分大小写`,onMousedown:u[4]||=O(()=>{},[`prevent`]),onClick:u[5]||=e=>V(n).matchCase=!V(n).matchCase},` Aa `,42,ar),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px underline [text-underline-offset:2px] focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,V(n).wholeWord?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":V(n).wholeWord,"aria-label":`全词匹配`,title:`全词匹配`,onMousedown:u[6]||=O(()=>{},[`prevent`]),onClick:u[7]||=e=>V(n).wholeWord=!V(n).wholeWord},` ab `,42,or),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,V(n).useRegex?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":V(n).useRegex,"aria-label":`使用正则表达式`,title:`使用正则表达式`,onMousedown:u[8]||=O(()=>{},[`prevent`]),onClick:u[9]||=e=>V(n).useRegex=!V(n).useRegex},` .* `,42,sr)])]),_:1},8,[`value`,`status`,`placeholder`,`onKeydown`])])}}}),lr={class:`sticky left-0 z-1 box-border select-none border-r border-[#e5e7eb] bg-[#f8fafc] px-10px text-right text-[#94a3b8]`},ur=[`href`],dr=[`onKeydown`],fr={class:`max-w-640px flex flex-col gap-4px`},pr=[`href`,`title`],mr=Q({__name:`TextLine`,props:{line:{}},setup(e){let t=e,{wrap:n,getLineTokens:r,setActiveMatchElement:i}=Qn(),a=q(()=>r(t.line)),o=e=>W(Pe,null,[e.fragments.map((e,t)=>e.match?W(`span`,{key:t,ref:e.active?i:void 0,"data-name":`text-viewer-match`,"data-active":e.active?``:void 0,class:[`rounded-2px text-inherit`,e.active?`bg-[#fb923c] text-[#7c2d12]`:`bg-[#fde68a]`]},[e.text]):e.text)]),s=e=>{e.currentTarget instanceof HTMLElement&&e.currentTarget.click()};return(t,r)=>{let i=fe;return I(),Y(`div`,{name:`text-viewer-line`,class:z([`grid min-h-20px min-w-full leading-20px`,V(n)?`w-full grid-cols-[64px_minmax(0,1fr)]`:`w-max grid-cols-[64px_max-content]`])},[Z(`span`,lr,F(e.line.number),1),Z(`span`,{class:z([`box-border min-w-0 px-10px [font:inherit] [tab-size:2]`,V(n)?`whitespace-pre-wrap [overflow-wrap:anywhere]`:`whitespace-pre`])},[(I(!0),Y(Pe,null,De(V(a),(e,t)=>{var n,r;return I(),Y(Pe,{key:t},[((n=e.sourceTargets)==null?void 0:n.length)==1?(I(),Y(`a`,{key:0,href:(r=e.sourceTargets[0])==null?void 0:r.url,target:`_blank`,rel:`noopener noreferrer`,class:`text-[#2563eb] underline decoration-transparent underline-offset-2 hover:decoration-current`},[W(o,{fragments:e.fragments},null,8,[`fragments`])],8,ur)):e.sourceTargets&&e.sourceTargets.length>1?(I(),B(i,{key:1,trigger:`click`,placement:`bottom-start`},{trigger:L(()=>[Z(`span`,{role:`button`,tabindex:`0`,class:`cursor-pointer text-[#2563eb] underline decoration-dashed underline-offset-2`,onKeydown:[ae(O(s,[`prevent`]),[`enter`]),ae(O(s,[`prevent`]),[`space`])]},[W(o,{fragments:e.fragments},null,8,[`fragments`])],40,dr)]),default:L(()=>[Z(`div`,fr,[(I(!0),Y(Pe,null,De(e.sourceTargets,e=>(I(),Y(`a`,{key:e.path,href:e.url,title:e.path,target:`_blank`,rel:`noopener noreferrer`,class:`break-all text-[#2563eb] hover:underline`},F(e.displayPath),9,pr))),128))])]),_:2},1024)):(I(),B(o,{key:2,fragments:e.fragments},null,8,[`fragments`]))],64)}),128))],2)],2)}}}),hr={name:`text-viewer-viewport`,class:`h-full min-h-0 min-w-0`},gr=Q({__name:`Viewport`,setup(e){let{wrap:t,virtualList:n,scrollContainer:r,lineHeight:i,lines:a,visibleStart:o,visibleLines:s,virtualHeight:c,handleScroll:l}=Qn();return(e,u)=>{let d=un;return I(),Y(`div`,hr,[V(t)?(I(),B(d,{key:0,ref_key:`virtualList`,ref:n,items:V(a),"item-size":V(i),"item-resizable":``,keyField:`key`,class:`h-full min-h-0 min-w-0 rounded-4px border border-[#e5e7eb] bg-white font-mono text-13px leading-20px`},{default:L(({item:e})=>[W(mr,{line:e},null,8,[`line`])]),_:1},8,[`items`,`item-size`])):(I(),Y(`div`,{key:1,ref_key:`scrollContainer`,ref:r,class:`h-full min-h-0 min-w-0 overflow-auto rounded-4px border border-[#e5e7eb] bg-white font-mono text-13px leading-20px`,onScroll:u[0]||=(...e)=>V(l)&&V(l)(...e)},[Z(`div`,{name:`text-viewer-spacer`,class:`relative min-w-full`,style:Te({height:`${V(c)}px`})},[Z(`div`,{name:`text-viewer-visible`,class:`absolute left-0 top-0 min-w-full w-max`,style:Te({transform:`translateY(${V(o)*V(i)}px)`})},[(I(!0),Y(Pe,null,De(V(s),e=>(I(),B(mr,{key:e.key,line:e},null,8,[`line`]))),128))],4)],4)],544))])}}}),_r={name:`text-viewer`,class:`min-h-0 min-w-0 flex flex-1 flex-col gap-8px`},vr={name:`text-viewer-toolbar`,class:`min-h-28px min-w-0 flex items-center gap-10px`},yr={name:`text-viewer-content`,class:`relative min-h-0 min-w-0 flex-1`},br=Q({__name:`TextViewer`,props:{value:{},documentKey:{},searchPlaceholder:{default:`搜索`},allowWrap:{type:Boolean,default:!1},copyable:{type:Boolean,default:!1},sourceLinkContext:{}},setup(e){let t=e,{allowWrap:n,wrap:r}=Zn({value:J(t,`value`),documentKey:J(t,`documentKey`),searchPlaceholder:J(t,`searchPlaceholder`),allowWrap:J(t,`allowWrap`),copyable:J(t,`copyable`),sourceLinkContext:J(t,`sourceLinkContext`)});return(e,t)=>{let i=ve;return I(),Y(`div`,_r,[Z(`div`,vr,[ke(e.$slots,`toolbar-start`),t[2]||=Z(`div`,{name:`text-viewer-toolbar-spacer`,class:`min-w-0 flex-1`},null,-1),W(cr),V(n)?(I(),B(i,{key:0,checked:V(r),"onUpdate:checked":t[0]||=e=>P(r)?r.value=e:null},{default:L(()=>[...t[1]||=[G(` 自动换行 `,-1)]]),_:1},8,[`checked`])):U(``,!0)]),Z(`div`,yr,[W(gr),W($n)])])}}}),xr={name:`raw-json-preview`,class:`h-full`},Sr=Q({__name:`RawJsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=q(()=>yn(t.value,t.raw));return(e,t)=>(I(),Y(`div`,xr,[W(br,{value:V(n),"search-placeholder":`搜索原始 JSON`,class:`h-full`},null,8,[`value`])]))}}),Cr={name:`text-search`,class:`w-full min-w-0 flex items-center gap-6px`},wr={name:`text-search-options`,class:`flex items-center gap-2px`},Tr=[`aria-pressed`],Er=[`aria-pressed`],Dr=[`aria-pressed`],Or=Q({__name:`TextSearchInput`,props:Ae({placeholder:{default:`搜索`},size:{default:`medium`}},{modelValue:{required:!0},modelModifiers:{},matchCase:{type:Boolean,default:!1},matchCaseModifiers:{},wholeWord:{type:Boolean,default:!1},wholeWordModifiers:{},useRegex:{type:Boolean,default:!1},useRegexModifiers:{}}),emits:[`update:modelValue`,`update:matchCase`,`update:wholeWord`,`update:useRegex`],setup(e){let t=e,n=je(e,`modelValue`),r=je(e,`matchCase`),i=je(e,`wholeWord`),a=je(e,`useRegex`),o=q(()=>!Cn(n.value,{matchCase:r.value,wholeWord:i.value,useRegex:a.value}));return(e,s)=>{let c=Xe;return I(),Y(`div`,Cr,[W(c,{value:n.value,"onUpdate:value":s[6]||=e=>n.value=e,clearable:``,size:t.size,status:V(o)?`error`:void 0,placeholder:t.placeholder,class:`min-w-0 flex-1`},{suffix:L(()=>[Z(`div`,wr,[Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,r.value?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":r.value,"aria-label":`区分大小写`,title:`区分大小写`,onMousedown:s[0]||=O(()=>{},[`prevent`]),onClick:s[1]||=e=>r.value=!r.value},` Aa `,42,Tr),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px underline [text-underline-offset:2px] focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,i.value?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":i.value,"aria-label":`全词匹配`,title:`全词匹配`,onMousedown:s[2]||=O(()=>{},[`prevent`]),onClick:s[3]||=e=>i.value=!i.value},` ab `,42,Er),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,a.value?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":a.value,"aria-label":`使用正则表达式`,title:`使用正则表达式`,onMousedown:s[4]||=O(()=>{},[`prevent`]),onClick:s[5]||=e=>a.value=!a.value},` .* `,42,Dr)])]),_:1},8,[`value`,`size`,`status`,`placeholder`])])}}}),kr={name:`apps-preview`,class:`h-full min-h-0 flex flex-col`},Ar={key:0,name:`user-apps`,class:`h-full min-h-0 min-w-0 flex flex-col gap-10px`},jr={name:`user-apps-header`,class:`min-w-0 flex items-center gap-16px`},Mr=Q({__name:`AppsPreview`,props:{data:{},value:{},raw:{},view:{}},setup(e){var t;let n=e,r=X((t=n.data.users[0])==null?void 0:t.id);R(()=>n.data,e=>{var t;return r.value=(t=e.users[0])==null?void 0:t.id});let i=q(()=>n.data.users.find(e=>e.id==r.value)||n.data.users[0]),a=q(()=>n.data.users.map(e=>({label:`${e.name} · 用户 ${e.id} · ${e.apps.length} 个应用`,value:e.id}))),o=X(``),s=Fe(bn()),c=q(()=>{var e;let t=((e=i.value)==null?void 0:e.apps)||[],n=o.value.trim();return n?t.filter(e=>[e.name,e.id,e.versionName||``,e.versionCode==null?``:String(e.versionCode)].some(e=>Dn(e,n,s))):t}),l=[{key:`name`,title:`应用名称`},{key:`id`,title:`包名`},{key:`version`,title:`版本`,render(e){var t;return e.versionName&&e.versionCode!=null?`${e.versionName} (${e.versionCode})`:e.versionName||((t=e.versionCode)==null?void 0:t.toString())||`-`}},{key:`isSystem`,title:`类型`,render(e){return e.isSystem==null?`-`:W(Ze,{size:`small`,type:e.isSystem?`info`:`default`},{default:()=>[e.isSystem?`系统应用`:`用户应用`]})}},{key:`state`,title:`状态`,render(e){let t=[e.enabled===!1?`已停用`:void 0,e.hidden?`已隐藏`:void 0].filter(Boolean);return t.length?t.join(` · `):`正常`}}];return(t,n)=>{let u=Qe,d=ge,f=$e;return I(),Y(`div`,kr,[e.view==`users`&&V(i)?(I(),Y(`div`,Ar,[Z(`div`,jr,[W(u,{value:V(r),"onUpdate:value":n[0]||=e=>P(r)?r.value=e:null,options:V(a),"aria-label":`设备用户`,class:`min-w-280px w-40% max-w-420px`},null,8,[`value`,`options`]),W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索应用名称、包名或版本`,class:`ml-auto min-w-320px w-50% max-w-460px`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`])]),V(c).length==0?(I(),B(d,{key:0,description:V(o).trim()?`没有匹配的应用`:`该用户没有应用记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(f,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:l,data:V(c),pagination:!1,rowKey:e=>e.id,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`]))])):(I(),B(Sr,{key:1,value:e.value,raw:e.raw},null,8,[`value`,`raw`]))])}}}),Nr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Pr=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Fr=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Ir=e=>typeof e==`string`?e:void 0,Lr=e=>typeof e==`boolean`?e:void 0,Rr=e=>{if(!Nr(e)||!Array.isArray(e.apps)||e.apps.length>1e4||Array.isArray(e.otherUsers)&&e.otherUsers.length>1e4)return;let t=Pr(e.userId)??0,n=new Map,r=(e,t,r=!1)=>{let i=n.get(e);if(i)return i.isCurrent||=r,i;let a={id:e,name:t,isCurrent:r,apps:[]};return n.set(e,a),a};r(t,`当前用户`,!0),Array.isArray(e.otherUsers)&&e.otherUsers.forEach(e=>{if(!Nr(e))return;let n=Pr(e.id);n!=null&&r(n,typeof e.name==`string`&&e.name.trim()?e.name:`用户 ${n}`,n==t)});let i=0;return e.apps.forEach(e=>{if(!Nr(e)||typeof e.id!=`string`||typeof e.name!=`string`)return;let n=Pr(e.userId)??t,a=r(n,n==t?`当前用户`:`用户 ${n}`,n==t),o={id:e.id,name:e.name,userId:n},s=Fr(e.versionCode),c=Ir(e.versionName),l=Lr(e.isSystem),u=Lr(e.hidden),d=Lr(e.enabled);s!=null&&(o.versionCode=s),c!=null&&(o.versionName=c),l!=null&&(o.isSystem=l),u!=null&&(o.hidden=u),d!=null&&(o.enabled=d),a.apps.push(o),i++}),{users:[...n.values()].sort((e,t)=>e.isCurrent==t.isCurrent?e.id-t.id:e.isCurrent?-1:1),totalApps:i}},zr=`__crash_preview__`,Br=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Vr=e=>typeof e==`string`&&e.trim()?e:void 0,Hr=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Ur=e=>{if(e==null)return;let t=Math.abs(e)<1e11?e*1e3:e;return Number.isNaN(new Date(t).getTime())?void 0:t},Wr=e=>{let t=(e.split(`/`).at(-1)||e).match(/gkd_crash-(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})/i);if(!t)return;let[n,r,i,a,o,s]=t.slice(1).map(Number),c=new Date(n,r-1,i,a,o,s);if(!(c.getFullYear()!=n||c.getMonth()!=r-1||c.getDate()!=i||c.getHours()!=a||c.getMinutes()!=o||c.getSeconds()!=s))return c.getTime()},Gr=e=>({path:e,fileName:e.split(`/`).at(-1)||e,status:`incomplete`,timestamp:Wr(e)}),Kr=(e,t)=>{let n=Gr(t);if(!Br(e))return{summary:n};n.id=Hr(e.id),n.mtime=Hr(e.mtime),n.timestamp=Ur(n.mtime)||Ur(n.id)||n.timestamp,n.device=Vr(e.device),n.androidVersionCode=Hr(e.androidVersionCode),n.androidVersionName=Vr(e.androidVersionName),n.versionCode=Hr(e.versionCode),n.versionName=Vr(e.versionName),n.name=Vr(e.name),n.message=Vr(e.message),n.thread=Vr(e.thread);let r=Vr(e.stackTrace);return n.status=n.name&&r?`valid`:`incomplete`,{summary:n,stackTrace:r}},qr=e=>e instanceof Error?e.message:String(e),Jr=e=>/^crash\/.+/i.test(e.replaceAll(`\\`,`/`)),Yr=e=>Jr(e)&&e.toLowerCase().endsWith(`.json`),Xr=e=>e.filter(e=>Jr(e.path)),Zr=(e,t)=>{try{return Kr(JSON.parse(e),t).summary}catch(e){return{...Gr(t),status:`invalid`,error:qr(e)}}},Qr=(e,t)=>{try{let n=JSON.parse(e),{summary:r,stackTrace:i}=Kr(n,t);return{...r,parsed:!0,raw:e,value:n,stackTrace:i}}catch(n){return{...Gr(t),status:`invalid`,error:qr(n),parsed:!1,raw:e}}},$r=(e,t)=>({...Gr(e),status:`invalid`,error:qr(t)}),ei=(e,t)=>({...$r(e,t),parsed:!1,raw:``}),ti=e=>({...Gr(e),status:`unsupported`,error:`仅支持 JSON 崩溃记录`}),ni=e=>({...ti(e),parsed:!1,raw:``}),ri=e=>e.toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),ii=async(e,t)=>{let n=vt(4);return ri(await Promise.all(Xr(e).map(e=>n(async()=>{if(!Yr(e.path))return ti(e.path);try{return Zr(await t(e),e.path)}catch(t){return $r(e.path,t)}}))))},ai=(e,t=2)=>e.toString().padStart(t,`0`),oi=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${ai(t.getMonth()+1)}-${ai(t.getDate())} ${ai(t.getHours())}:${ai(t.getMinutes())}:${ai(t.getSeconds())}.${ai(t.getMilliseconds(),3)}`},si={name:`directory-preview-header`,class:`h-40px flex flex-none items-stretch`},ci={class:`flex flex-none items-center gap-8px pr-14px font-600`},li=[`aria-pressed`],ui={key:0,class:`min-w-0 flex items-center gap-10px pl-14px`},di=[`title`],fi={key:0,class:`flex-none text-12px text-[#64748b]`},pi=Q({__name:`DirectoryPreviewHeader`,props:{title:{},count:{},listLabel:{},listActive:{type:Boolean},detailText:{},detailTitle:{},detailMeta:{}},emits:[`selectList`],setup(e,{emit:t}){let n=t;return(t,r)=>{let i=Ze;return I(),Y(`div`,si,[Z(`div`,ci,[Z(`span`,null,F(e.title),1),W(i,{size:`small`,round:``},{default:L(()=>[G(F(e.count),1)]),_:1})]),Z(`button`,{type:`button`,class:z([`h-full flex-none cursor-pointer border-b-2 bg-transparent px-12px transition-colors`,e.listActive?`border-[#18a058] text-[#18a058] font-600`:`border-transparent text-[#475569] hover:text-[#18a058]`]),"aria-pressed":e.listActive,onClick:r[0]||=e=>n(`selectList`)},F(e.listLabel),11,li),r[1]||=Z(`div`,{class:`min-w-0 flex-1`},null,-1),!e.listActive&&e.detailText?(I(),Y(`div`,ui,[Z(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:e.detailTitle||e.detailText},F(e.detailText),9,di),e.detailMeta?(I(),Y(`span`,fi,F(e.detailMeta),1)):U(``,!0)])):U(``,!0)])}}}),mi=Q({__name:`StackRetraceButton`,props:{available:{type:Boolean},loading:{type:Boolean},retraced:{type:Boolean}},emits:[`toggle`],setup(e,{emit:t}){let n=t;return(t,r)=>{let i=y;return e.available?(I(),B(i,{key:0,size:`small`,secondary:``,type:`primary`,loading:e.loading,onClick:r[0]||=e=>n(`toggle`)},{default:L(()=>[G(F(e.retraced?`原始堆栈`:`还原堆栈`),1)]),_:1},8,[`loading`])):U(``,!0)}}}),hi={name:`crash-preview`,class:`h-full min-h-0 flex flex-col`},gi={key:0,name:`crash-list`,class:`min-h-0 flex flex-1 flex-col gap-10px`},_i={key:1,name:`crash-detail`,class:`min-h-0 flex flex-1 flex-col gap-10px`};function vi(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var yi=50,bi=Q({__name:`CrashPreview`,props:{items:{},detail:{},detailLoading:{type:Boolean},retraceAvailable:{type:Boolean},retraceLoading:{type:Boolean},retraceActive:{type:Boolean},sourceLinkContext:{}},emits:[`select`,`toggleRetrace`],setup(e,{emit:t}){let n=e,r=t,i=X(`list`),a=X(``),o=X(``),s=Fe(bn()),c=X(1),l=q(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,t.name||``,t.message||``,t.thread||``,t.device||``,t.versionName||``,t.versionCode==null?``:String(t.versionCode),t.androidVersionName||``,t.androidVersionCode==null?``:String(t.androidVersionCode),t.error||``].some(t=>Dn(t,e,s))):n.items});R(l,()=>c.value=1),R(()=>n.items,e=>{e.some(e=>e.path==a.value)||(a.value=``,i.value=`list`)});let u=q(()=>{let e=(c.value-1)*yi;return l.value.slice(e,e+yi)}),d=q(()=>n.items.find(e=>e.path==a.value)),f=(e,t)=>e&&t!=null?`${e} (${t})`:e||(t==null?void 0:t.toString())||`-`,p=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,m=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,h=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},g=[{key:`timestamp`,title:`时间`,width:190,sorter:(e,t)=>(e.timestamp||0)-(t.timestamp||0),render:e=>oi(e.timestamp)},{key:`name`,title:`异常类型`,width:280,ellipsis:{tooltip:!0},render(e){let t;return W(`div`,{class:`min-w-0 flex items-center gap-6px`},[W(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:W(Ze,{size:`small`,type:m(e.status)},vi(t=p(e.status))?t:{default:()=>[t]})])}},{key:`message`,title:`异常消息`,width:360,ellipsis:{tooltip:!0},render:e=>e.message||e.error||`-`},{key:`thread`,title:`线程`,width:100,render:e=>e.thread||`-`},{key:`version`,title:`GKD 版本`,width:180,render:e=>f(e.versionName,e.versionCode)},{key:`android`,title:`Android`,width:140,render:e=>f(e.androidVersionName,e.androidVersionCode)},{key:`device`,title:`设备`,width:260,ellipsis:{tooltip:!0},render:e=>e.device||`-`}],_=e=>({class:`cursor-pointer`,onClick:()=>h(e)});return(t,n)=>{var a,p;let m=ge,h=$e,v=et,y=Yt,b=At,x=zt,S=Lt,C=en,w=an;return I(),Y(`div`,hi,[W(pi,{title:`崩溃记录`,count:e.items.length,listLabel:`崩溃列表`,listActive:V(i)==`list`,detailText:(a=V(d))==null?void 0:a.fileName,detailTitle:(p=V(d))==null?void 0:p.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),V(i)==`list`?(I(),Y(`div`,gi,[W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索异常类型、消息、设备或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(u).length==0?(I(),B(m,{key:0,description:V(o).trim()?`没有匹配的崩溃记录`:`没有崩溃记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(h,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:g,data:V(u),pagination:!1,rowKey:e=>e.path,rowProps:_,scrollX:1510,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),V(l).length>yi?(I(),B(v,{key:2,page:V(c),"onUpdate:page":n[5]||=e=>P(c)?c.value=e:null,pageSize:yi,itemCount:V(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):U(``,!0)])):(I(),Y(`div`,_i,[e.detailLoading?(I(),B(y,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(I(),Y(Pe,{key:2},[e.detail.error?(I(),B(b,{key:0,type:`warning`,title:`该记录无法完整解析`,class:`flex-none`},{default:L(()=>[G(F(e.detail.error),1)]),_:1})):U(``,!0),W(S,{bordered:``,size:`small`,column:3,labelPlacement:`left`,class:`flex-none`},{default:L(()=>[W(x,{label:`时间`},{default:L(()=>[G(F(V(oi)(e.detail.timestamp)),1)]),_:1}),W(x,{label:`线程`},{default:L(()=>[G(F(e.detail.thread||`-`),1)]),_:1}),W(x,{label:`GKD 版本`},{default:L(()=>[G(F(f(e.detail.versionName,e.detail.versionCode)),1)]),_:1}),W(x,{label:`Android`},{default:L(()=>[G(F(f(e.detail.androidVersionName,e.detail.androidVersionCode)),1)]),_:1}),W(x,{label:`设备`,span:2},{default:L(()=>[G(F(e.detail.device||`-`),1)]),_:1})]),_:1}),W(w,{type:`line`,animated:``,class:`min-h-0 flex-1 [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0`},{default:L(()=>[W(C,{name:`stack`,tab:`堆栈`},{default:L(()=>[e.detail.stackTrace?(I(),B(br,{key:0,value:e.detail.stackTrace,documentKey:e.detail.path,"search-placeholder":`搜索崩溃堆栈`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`h-full`},{"toolbar-start":L(()=>[W(mi,{available:e.retraceAvailable,loading:e.retraceLoading,retraced:e.retraceActive,onToggle:n[6]||=e=>r(`toggleRetrace`)},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`documentKey`,`sourceLinkContext`])):(I(),B(m,{key:1,description:`该记录没有堆栈信息`}))]),_:1}),W(C,{name:`raw`,tab:`原始 JSON`},{default:L(()=>[e.detail.parsed?(I(),B(Sr,{key:0,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.raw?(I(),B(br,{key:1,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`h-full`},null,8,[`value`])):(I(),B(m,{key:2,description:`无法读取原始内容`}))]),_:1})]),_:1})],64)):(I(),B(m,{key:1,description:`请选择一条崩溃记录`}))]))])}}}),xi=`__log_directory_preview__`,Si=`__subscription_directory_preview__`,Ci=e=>e.replaceAll(`\\`,`/`),wi=(e,t)=>Ci(e).toLowerCase().startsWith(`${t}/`),Ti=e=>wi(e,`log`),Ei=e=>wi(e,`subscription`),Di=e=>e.filter(e=>Ti(e.path)),Oi=e=>e.filter(e=>Ei(e.path)),ki=e=>e.split(`/`).at(-1)||e,Ai=e=>{let t=ki(e).match(/gkd-(\d{4})(\d{2})(\d{2})\.log$/i);if(!t)return;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]),a=new Date(n,r-1,i);if(!(a.getFullYear()!=n||a.getMonth()!=r-1||a.getDate()!=i))return a.getTime()},ji=e=>Di(e).map(e=>({path:e.path,fileName:ki(e.path),size:e.size||0,timestamp:Ai(e.path)})).toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),Mi=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ni=e=>typeof e==`string`&&e.trim()?e:void 0,Pi=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Fi=e=>Array.isArray(e)?e.length:void 0,Ii=e=>{let t=Number(ki(e).replace(/\.json$/i,``));return Number.isSafeInteger(t)?t:void 0},Li=e=>({path:e,fileName:ki(e),status:`incomplete`,id:Ii(e)}),Ri=(e,t)=>{let n=Li(t);return Mi(e)?(n.id=Pi(e.id)??n.id,n.name=Ni(e.name),n.version=Pi(e.version),n.author=Ni(e.author),n.appsCount=Fi(e.apps),n.globalGroupsCount=Fi(e.globalGroups),n.categoriesCount=Fi(e.categories),n.status=n.id!=null&&n.name&&n.version!=null?`valid`:`incomplete`,n):n},zi=e=>e instanceof Error?e.message:String(e),Bi=e=>Ei(e)&&e.toLowerCase().endsWith(`.json`),Vi=(e,t)=>{try{return Ri(JSON.parse(e),t)}catch(e){return{...Li(t),status:`invalid`,error:zi(e)}}},Hi=(e,t)=>{try{let n=JSON.parse(e);return{...Ri(n,t),parsed:!0,raw:e,value:n}}catch(n){return{...Li(t),status:`invalid`,error:zi(n),parsed:!1,raw:e}}},Ui=(e,t)=>({...Li(e),status:`invalid`,error:zi(t)}),Wi=(e,t)=>({...Ui(e,t),parsed:!1,raw:``}),Gi=e=>({...Li(e),status:`unsupported`,error:`仅支持 JSON 订阅文件`}),Ki=e=>({...Gi(e),parsed:!1,raw:``}),qi=e=>e.toSorted((e,t)=>e.id!=null&&t.id!=null&&e.id!=t.id?e.id-t.id:e.id!=null&&t.id==null?-1:e.id==null&&t.id!=null?1:e.path.localeCompare(t.path,`zh-CN`)),Ji=async(e,t)=>{let n=vt(4);return qi(await Promise.all(Oi(e).map(e=>n(async()=>{if(!Bi(e.path))return Gi(e.path);try{return Vi(await t(e),e.path)}catch(t){return Ui(e.path,t)}}))))},Yi=e=>e.toString().padStart(2,`0`),Xi=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${Yi(t.getMonth()+1)}-${Yi(t.getDate())}`},Zi={name:`json-basic-table`,class:`mb-10px mt-6px`},Qi=Q({__name:`JsonBasicTable`,props:{rows:{},indexed:{type:Boolean,default:!1}},setup(e){let t=e,n=q(()=>[{key:`key`,title:t.indexed?`索引`:`键`,width:220,ellipsis:{tooltip:!0}},{key:`value`,title:`值`,render(e){return W(`span`,{class:`whitespace-pre-wrap font-mono [overflow-wrap:anywhere]`},[vn(e.value)])}}]),r=q(()=>t.rows.length>200?{pageSize:200,showSizePicker:!1}:!1),i=e=>e.key;return(t,a)=>{let o=$e;return I(),Y(`div`,Zi,[W(o,{striped:``,size:`small`,columns:V(n),data:e.rows,rowKey:i,pagination:V(r)},null,8,[`columns`,`data`,`pagination`])])}}}),$i={flex:``,"flex-col":``,"gap-10px":``,"h-full":``},ea={name:`json-structure-scroll`,class:`min-h-0 flex-1 overflow-auto px-4px pb-24px pt-8px font-mono text-13px`},ta={key:1,name:`json-search-results`,class:`flex flex-col gap-6px`},na={class:`text-[#7c3aed]`},ra={class:`mt-4px text-[#374151] [overflow-wrap:anywhere]`},ia=Q({__name:`JsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=q(()=>mn(t.value)),r=e=>{if(Array.isArray(e))return`Array(${e.length})`;if(e&&typeof e==`object`){let t=fn(e);return t==null?`Object(>${dn})`:`Object(${t})`}return typeof e==`string`?JSON.stringify(e):String(e)},i=Q({name:`JsonNode`,props:{value:{type:null,required:!0},name:{type:String,required:!0},depth:{type:Number,default:0}},setup(e){let t=K(e.depth==0);return()=>{let n=pn(e.value),a=e.value!=null&&typeof e.value==`object`&&!n,o=a?Object.entries(e.value):[],s=a?_n(e.value):void 0;return W(`div`,we({name:`json-node`},{class:`block`}),[W(`div`,we({name:`json-node-line`},{class:`min-h-28px flex items-center gap-6px`}),[a?W(y,{quaternary:!0,size:`tiny`,class:`w-24px min-w-24px font-inherit`,onClick:()=>t.value=!t.value},{default:()=>[t.value?`−`:`+`]}):W(`span`,{class:`inline-block w-24px`},null),W(`span`,{class:`text-[#7c3aed]`},[e.name]),W(`span`,{class:`text-[#6b7280]`},[G(`:`)]),W(`span`,{class:a?`text-[#6b7280]`:`text-[#0f766e] [overflow-wrap:anywhere]`},[r(e.value)]),n?W(`span`,{class:`text-[#b45309]`},[G(`结构过大,请切换到原始 JSON 查看`)]):null]),a&&t.value?W(`div`,we({name:`json-children`},{class:`ml-15px border-l border-[#e5e7eb] pl-10px`}),[s?W(Qi,{rows:s,indexed:Array.isArray(e.value)},null):o.map(([t,n])=>W(i,{key:t,name:t,value:n,depth:e.depth+1},null))]):null])}}}),a=X(``),o=Fe(bn()),s=q(()=>{let e=a.value.trim();if(!e||n.value)return[];let i=[],s=[{value:t.value,path:``}];for(;s.length&&i.length<200;){let t=s.pop();if(!t)break;let{value:n,path:a}=t;if(typeof n==`object`&&n){if(pn(n))continue;let t=Object.entries(n);for(let n=t.length-1;n>=0;n--){let[c,l]=t[n],u=a?`${a}.${c}`:c;if(Dn(c,e,o)&&(i.push({path:u,value:r(l)}),i.length>=200))break;s.push({value:l,path:u})}continue}let c=r(n);Dn(c,e,o)&&i.push({path:a||`$`,value:c})}return i});return(t,r)=>{let c=At,l=ge,u=en,d=an;return I(),B(d,{type:`line`,animated:``,class:`h-full [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0`},{default:L(()=>[W(u,{name:`structured`,tab:`结构化`},{default:L(()=>[Z(`div`,$i,[W(Or,{modelValue:V(a),"onUpdate:modelValue":r[0]||=e=>P(a)?a.value=e:null,"match-case":V(o).matchCase,"onUpdate:matchCase":r[1]||=e=>V(o).matchCase=e,"whole-word":V(o).wholeWord,"onUpdate:wholeWord":r[2]||=e=>V(o).wholeWord=e,"use-regex":V(o).useRegex,"onUpdate:useRegex":r[3]||=e=>V(o).useRegex=e,placeholder:`搜索键或值,最多展示 200 条结果`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),Z(`div`,ea,[V(n)?(I(),B(c,{key:0,type:`warning`,title:`JSON 结构过大`},{default:L(()=>[...r[4]||=[G(` 为避免占用过多内存,请切换到“原始 JSON”查看和搜索。 `,-1)]]),_:1})):V(a).trim()?(I(),Y(Pe,{key:1},[V(s).length==0?(I(),B(l,{key:0,description:`没有匹配项`})):(I(),Y(`div`,ta,[(I(!0),Y(Pe,null,De(V(s),e=>(I(),Y(`div`,{key:`${e.path}:${e.value}`,name:`json-search-item`,class:`rounded-4px border border-[#e5e7eb] px-10px py-8px`},[Z(`div`,na,F(e.path),1),Z(`div`,ra,F(e.value),1)]))),128))]))],64)):(I(),B(V(i),{key:2,name:`$`,value:e.value,depth:0},null,8,[`value`]))])])]),_:1}),W(u,{name:`raw`,tab:`原始 JSON`},{default:L(()=>[W(Sr,{value:e.value,raw:e.raw},null,8,[`value`,`raw`])]),_:1})]),_:1})}}}),aa=e=>typeof e==`object`&&!!e&&!Array.isArray(e),oa=e=>{if(!aa(e)||!Array.isArray(e.apps))return{};let t=[];return e.apps.forEach(e=>{aa(e)&&(typeof e.id!=`string`||typeof e.name!=`string`||t.push([e.id,e.name]))}),Object.fromEntries(t)},sa=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`number`&&Number.isSafeInteger(t.id)&&typeof t.name==`string`&&t.name.length>0},ca=e=>{if(sa(e))return[String(e.id),e.name]},la=101010256,ua=33639248,da=22,fa=65535,pa=(e,t)=>{if(e.byteLength<da)throw Error(`不是有效的 ZIP 文件`);let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=Math.max(0,e.byteLength-da-fa),i=-1;for(let t=e.byteLength-da;t>=r;t--)if(n.getUint32(t,!0)==la&&t+da+n.getUint16(t+20,!0)==e.byteLength){i=t;break}if(i<0)throw Error(`不是有效的 ZIP 文件`);let a=n.getUint16(i+4,!0),o=n.getUint16(i+6,!0),s=n.getUint16(i+8,!0),c=n.getUint16(i+10,!0),l=n.getUint32(i+12,!0),u=n.getUint32(i+16,!0);if(a!=0||o!=0||s!=c||c==65535||l==4294967295||u==4294967295)throw Error(`不支持分卷或 ZIP64 日志包`);if(c>t.maxEntries)throw Error(`ZIP 内条目数量不能超过 ${t.maxEntries}`);if(u>i||l>i-u||u+l!=i)throw Error(`ZIP 中央目录损坏`);let d=u,f=0,p=0;for(;d<i;){if(d+46>i||n.getUint32(d,!0)!=ua)throw Error(`ZIP 中央目录损坏`);let e=n.getUint32(d+20,!0),r=n.getUint32(d+24,!0);if(e==4294967295||r==4294967295)throw Error(`不支持 ZIP64 日志包`);let a=n.getUint16(d+28,!0);if(a>t.maxEntryNameSize)throw Error(`ZIP 条目路径过长`);let o=n.getUint16(d+30,!0),s=n.getUint16(d+32,!0),c=d+46+a+o+s;if(c>i)throw Error(`ZIP 中央目录损坏`);if(f++,f>t.maxEntries)throw Error(`ZIP 内条目数量不能超过 ${t.maxEntries}`);if(p+=r,!Number.isSafeInteger(p)||p>t.maxUncompressedSize)throw Error(`ZIP 解压后总大小超过限制`);d=c}if(f!=c||d!=i)throw Error(`ZIP 中央目录条目数量不一致`);return{entryCount:c,totalUncompressedSize:p}},ma=50*1024*1024,ha=200*1024*1024,ga=2e3,_a=20*1024*1024,va=2*1024*1024,ya=100*1024*1024,ba=5e5,xa=1024,Sa=new Set([`.log`,`.txt`,`.sql`,`.xml`,`.md`,`.yaml`,`.yml`,`.csv`]),Ca=new Set([`.db`,`.sqlite`,`.sqlite3`]),wa=e=>{let t=e.split(`/`).at(-1)||e,n=t.lastIndexOf(`.`);return n>=0?t.slice(n).toLowerCase():``},Ta=e=>{let t=e.toLowerCase();if(t.endsWith(`-wal`)||t.endsWith(`-shm`))return`database-sidecar`;let n=wa(e);return n==`.json`?`json`:Ca.has(n)?`database`:Sa.has(n)?`text`:`binary`},Ea=e=>e.extension==`.log`?0:e.kind==`text`?1:e.kind==`json`?2:e.kind==`database`?3:4,Da=e=>e.entries.filter(e=>e.kind==`text`||e.kind==`json`||e.kind==`database`).toSorted((e,t)=>Ea(e)-Ea(t))[0],Oa=async(e,t)=>{let n=e instanceof Blob?e.size:e.byteLength;if(n>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ma)}`);let r=e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e),i=pa(r,{maxEntries:ga,maxEntryNameSize:xa,maxUncompressedSize:ha}),a=await _t(r),o=Object.values(a.files).filter(e=>!e.dir);if(o.length>2e3)throw Error(`ZIP 内文件数量不能超过 ${ga}`);let s=0,c={total:0,sizes:new Map},l=o.map(e=>{var t;let n=e;if(n.unsafeOriginalName&&n.unsafeOriginalName.replaceAll(`\\`,`/`)!=n.name)throw Error(`ZIP 包含不安全路径: ${n.unsafeOriginalName}`);let r=((t=n._data)==null?void 0:t.uncompressedSize)||0;s+=r;let i=n.name.replaceAll(`\\`,`/`).replace(/^\/+/,``),a=i.split(`/`);if(i.length>1024||a.length>64||a.some(e=>!e||e.length>255))throw Error(`ZIP 条目路径超出预览限制: ${i}`);return{path:i,name:i.split(`/`).at(-1)||i,extension:wa(i),size:r,kind:Ta(i),file:e,readBudget:c}});if(s>209715200)throw Error(`ZIP 解压后总大小不能超过 ${Xa(ha)}`);if(s!=i.totalUncompressedSize)throw Error(`ZIP 中央目录大小信息不一致`);let u=new Set(l.map(e=>e.path));for(let e of l){let t=e.path.split(`/`),n=t[0];for(let e=1;e<t.length;e++){if(u.has(n))throw Error(`ZIP 同时包含文件及其子路径: ${n}`);n+=`/${t[e]}`}}return l.sort((e,t)=>e.path.localeCompare(t.path,`zh-CN`)),{name:t,compressedSize:n,uncompressedSize:s,entries:l,entryMap:new Map(l.map(e=>[e.path,e]))}},ka=new WeakMap,Aa=new WeakMap,ja=async(e,t=_a)=>{if(e.size>t)throw Error(`${e.name} 超过可预览上限 ${Xa(t)}`);let n=e.readBudget.sizes.get(e.path);return new Promise((r,i)=>{let a=[],o=0,s=!1,c=e.file.internalStream(`uint8array`),l=e=>{s||(s=!0,c.pause(),i(e instanceof Error?e:Error(String(e))))};c.on(`data`,r=>{if(!s){if(o+r.byteLength>t){l(Error(`${e.name} 超过可预览上限 ${Xa(t)}`));return}if(n==null&&e.readBudget.total+r.byteLength>209715200){l(Error(`ZIP 实际解压大小超过可预览上限`));return}o+=r.byteLength,n??(e.readBudget.total+=r.byteLength),a.push(r)}}).on(`error`,l).on(`end`,()=>{if(s)return;s=!0;let t=new Uint8Array(o),i=0;for(let e of a)t.set(e,i),i+=e.byteLength;n??e.readBudget.sizes.set(e.path,o),r(t)}).resume()})},Ma=(e,t=_a)=>{var n;let r=(n=Aa.get(e.file))==null?void 0:n.get(t);if(r)return Promise.reject(r);let i=ka.get(e.file);i||(i=new Map,ka.set(e.file,i));let a=i.get(t);return a||(a=ja(e,t),i.set(t,a),a.then(()=>i==null?void 0:i.delete(t),n=>{i==null||i.delete(t);let r=Aa.get(e.file);r||(r=new Map,Aa.set(e.file,r)),r.set(t,n instanceof Error?n:Error(String(n)))})),a},Na=async(e,t)=>{let n=e.entryMap.get(`${t.path}-wal`),r=e.entryMap.get(`${t.path}-shm`);if(t.size+((n==null?void 0:n.size)||0)+((r==null?void 0:r.size)||0)>104857600)throw Error(`数据库文件组超过可预览上限 ${Xa(ya)}`);let i=await Ma(t,ya);return{database:i,wal:n?await Ma(n,ya-i.byteLength):void 0,walEntry:n,shmEntry:r}},Pa=e=>{let t=new TextDecoder().decode(e),n=1;for(let e=0;e<t.length;e++)if((t.charCodeAt(e)==10||t.charCodeAt(e)==13&&t.charCodeAt(e+1)!=10)&&n++,n>5e5)throw Error(`文本行数不能超过 ${ba}`);return t},Fa=new WeakMap,Ia=e=>e.entries.filter(e=>Pn(e.path)),La=new WeakMap,Ra=e=>{let t=La.get(e);return t||(t=(async()=>{let t=[];for(let n of Ia(e))try{let e=Bn(Pa(await Ma(n,va)));e&&t.push(e)}catch{}let n=t[0];if(n&&!t.some(e=>e.versionName!=n.versionName||e.versionCode!=n.versionCode||e.commitUrl!=n.commitUrl))return n})(),La.set(e,t),t)},za=new WeakMap,Ba=e=>{let t=za.get(e);return t||(t=(async()=>{let t=e.entries.find(e=>e.path.toLowerCase()==`gkd.json`);if(t)try{return Fn(Pa(await Ma(t,va)))}catch{}})(),za.set(e,t),t)},Va=e=>{let t=Fa.get(e);return t||(t=(async()=>{let t=e.entries.find(e=>e.path.toLowerCase()==`source-paths.txt`);if(!t)return;let n=Ia(e);if(n.length!=0)try{let e=Pa(await Ma(t,va)),r=[];for(let t of n)try{let n=Un(Pa(await Ma(t,va)),e);n&&r.push(n)}catch{}let i=r[0];return!i||r.some(e=>e.repositoryUrl!=i.repositoryUrl||e.commitId.toLowerCase()!=i.commitId.toLowerCase())?void 0:i}catch{}})(),Fa.set(e,t),t)},Ha=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ua=1e4,Wa=new WeakMap,Ga=e=>{let t=Wa.get(e);return t||(t=(async()=>{let t=e.entries.find(e=>{let t=e.path.toLowerCase();return t==`apps.json`||t.endsWith(`/apps.json`)});if(!t)return{};try{let e=Pa(await Ma(t,va));return oa(JSON.parse(e))}catch{return{}}})(),Wa.set(e,t),t)},Ka=new WeakMap,qa=e=>{let t=Ka.get(e);return t||(t=(async()=>{let t=e.entries.filter(e=>/^subscription\/[^/]+\.json$/i.test(e.path)),n=[];for(let e of t)try{let t=Pa(await Ma(e,va)),r=ca(JSON.parse(t));r&&n.push(r)}catch{}return Object.fromEntries(n.filter(e=>e!=null))})(),Ka.set(e,t),t)},Ja=e=>{if(!Ha(e)||typeof e.id!=`number`||!Number.isSafeInteger(e.id)||typeof e.name!=`string`||typeof e.version!=`number`||!Number.isSafeInteger(e.version)||![`apps`,`globalGroups`,`categories`].every(t=>e[t]==null||Array.isArray(e[t])))return!1;let t=Array.isArray(e.apps)?e.apps:[],n=Array.isArray(e.globalGroups)?e.globalGroups:[],r=Array.isArray(e.categories)?e.categories:[];if(t.length>Ua||n.length>Ua||r.length>Ua||!r.every(Ha))return!1;let i=t.length+n.length+r.length,a=e=>{let t=e.rules;return i+=Array.isArray(t)?t.length:t==null?0:1,i<=Ua};for(let e of t){if(!Ha(e)||typeof e.id!=`string`||!Array.isArray(e.groups)||(i+=e.groups.length,i>Ua))return!1;for(let t of e.groups)if(!Ha(t)||!a(t))return!1}for(let e of n)if(!Ha(e)||!a(e))return!1;return!0},Ya=(e,t)=>Ja(t)&&(e.path.toLowerCase().startsWith(`subscription/`)||[`apps`,`globalGroups`,`categories`].some(e=>e in t)),Xa=e=>{if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KiB`,`MiB`,`GiB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;let i=r==0||n>=100?0:n>=10?1:2;return`${n.toFixed(i)} ${t[r]}`},Za={name:`log-directory-preview`,class:`h-full min-h-0 flex flex-col`},Qa={key:0,class:`min-h-0 flex flex-1 flex-col gap-10px`},$a={key:1,class:`min-h-0 flex flex-1 flex-col`},eo=Q({__name:`LogDirectoryPreview`,props:{items:{},detailPath:{},detailText:{},detailError:{},detailLoading:{type:Boolean},retraceAvailable:{type:Boolean},retraceLoading:{type:Boolean},retraceActive:{type:Boolean},sourceLinkContext:{}},emits:[`select`,`toggleRetrace`],setup(e,{emit:t}){let n=e,r=t,i=X(`list`),a=X(``),o=X(``),s=Fe(bn()),c=q(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,Xi(t.timestamp)].some(t=>Dn(t,e,s))):n.items});R(()=>n.items,e=>{e.some(e=>e.path==a.value)||(a.value=``,i.value=`list`)});let l=q(()=>n.items.find(e=>e.path==a.value)),u=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},d=[{key:`date`,title:`日期`,width:180,sorter:(e,t)=>(e.timestamp||0)-(t.timestamp||0),render:e=>Xi(e.timestamp)},{key:`fileName`,title:`文件名`},{key:`size`,title:`大小`,width:140,sorter:(e,t)=>e.size-t.size,render:e=>Xa(e.size)}],f=e=>({class:`cursor-pointer`,onClick:()=>u(e)});return(t,n)=>{var a,u;let p=ge,m=$e,h=Yt,g=At;return I(),Y(`div`,Za,[W(pi,{title:`运行日志`,count:e.items.length,listLabel:`日志列表`,listActive:V(i)==`list`,detailText:(a=V(l))==null?void 0:a.fileName,detailTitle:(u=V(l))==null?void 0:u.path,detailMeta:V(l)?V(Xa)(V(l).size):void 0,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`,`detailMeta`]),V(i)==`list`?(I(),Y(`div`,Qa,[W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索日志日期或文件名`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(c).length==0?(I(),B(p,{key:0,description:V(o).trim()?`没有匹配的日志文件`:`没有日志文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(m,{key:1,striped:``,columns:d,data:V(c),pagination:!1,rowKey:e=>e.path,rowProps:f,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`]))])):(I(),Y(`div`,$a,[e.detailLoading?(I(),B(h,{key:0,show:``,class:`min-h-0 flex-1`})):e.detailError?(I(),B(g,{key:1,type:`error`,title:`日志文件读取失败`},{default:L(()=>[G(F(e.detailError),1)]),_:1})):e.detailPath&&e.detailText!=null?(I(),B(br,{key:e.detailPath,value:e.detailText,"search-placeholder":`搜索当前日志文件`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`min-h-0 flex-1`},{"toolbar-start":L(()=>[W(mi,{available:e.retraceAvailable,loading:e.retraceLoading,retraced:e.retraceActive,onToggle:n[5]||=e=>r(`toggleRetrace`)},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`sourceLinkContext`])):(I(),B(p,{key:3,description:`请选择一个日志文件`}))]))])}}}),to=async(e,t)=>{var n;let r=(n=e.body)==null?void 0:n.getReader();if(!r){let n=await e.arrayBuffer();if(n.byteLength>t)throw Error(`响应内容超过大小限制`);return n}let i=[],a=0;for(;;){let{done:e,value:n}=await r.read();if(e)break;if(a+=n.byteLength,a>t)throw await r.cancel(`响应内容超过大小限制`),Error(`响应内容超过大小限制`);i.push(n)}let o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.byteLength;return o.buffer},no=e=>{if(typeof e==`string`)try{let t=new URL(e);if(t.protocol==`http:`||t.protocol==`https:`)return t.href}catch{}},ro={name:`subscription-preview`,class:`h-full min-h-0 flex flex-col gap-12px`},io=[`href`],ao=[`href`],oo={name:`subscription-stats`,class:`flex flex-wrap gap-12px`},so={name:`subscription-tab-body`,class:`h-full min-h-0 flex flex-col gap-10px`},co={name:`app-id`,class:`mb-10px text-[#6b7280]`},lo={name:`subscription-global-groups`,class:`min-h-0 flex flex-col gap-10px overflow-auto`},uo={key:0,class:`mb-10px text-[#6b7280]`};function fo(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var po=50,mo=Q({__name:`SubscriptionPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=q(()=>no(t.value.updateUrl)),r=q(()=>no(t.value.supportUri)),i=e=>e==null?[]:Array.isArray(e)?e:[e],a=q(()=>t.value.apps||[]),o=q(()=>t.value.globalGroups||[]),s=q(()=>t.value.categories||[]),c=q(()=>{let e=0,t=0;for(let n of a.value){e+=n.groups.length;for(let e of n.groups)t+=i(e.rules).length}let n=0;for(let e of o.value)n+=i(e.rules).length;return{apps:a.value.length,appGroups:e,appRules:t,globalGroups:o.value.length,globalRules:n,categories:s.value.length}}),l=X(``),u=Fe(bn()),d=X(1),f=q(()=>{let e=l.value.trim();return e?a.value.filter(t=>Dn(t.id,e,u)||Dn(t.name||``,e,u)):a.value});R(f,()=>d.value=1);let p=q(()=>{let e=(d.value-1)*po;return f.value.slice(e,e+po)}),m=(e,t)=>typeof e==`string`?`规则 ${t+1}`:e&&typeof e==`object`?String(e.name||`规则 ${t+1}`):`规则 ${t+1}`,h=e=>{let t;return W(it,{accordion:!0},fo(t=i(e.rules).map((e,t)=>W(rt,{key:t,name:t,title:m(e,t)},{default:()=>[W(`div`,{class:`m-0 whitespace-pre-wrap rounded-4px border border-[#e5e7eb] bg-[#fafafa] p-10px font-mono text-12px [overflow-wrap:anywhere]`},[JSON.stringify(e,null,2)])]})))?t:{default:()=>[t]})},g=e=>W(`div`,we({name:`subscription-groups`},{class:`flex flex-col gap-10px`}),[e.groups.map(e=>W(We,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:()=>[e.desc?W(`div`,{class:`mb-10px text-[#6b7280]`},[e.desc]):null,h(e)]}))]),_=[{key:`key`,title:`Key`,width:100},{key:`name`,title:`名称`},{key:`enable`,title:`默认状态`,width:140,render(e){return e.enable==null?`跟随规则组`:e.enable?`启用`:`禁用`}}];return(t,i)=>{let m=zt,v=Lt,y=Zt,b=ge,x=rt,S=it,C=et,w=en,ee=We,T=$e,E=an;return I(),Y(`div`,ro,[W(v,{bordered:``,size:`small`,column:3,labelPlacement:`left`},{default:L(()=>[W(m,{label:`名称`},{default:L(()=>[G(F(e.value.name),1)]),_:1}),W(m,{label:`ID`},{default:L(()=>[G(F(e.value.id),1)]),_:1}),W(m,{label:`版本`},{default:L(()=>[G(F(e.value.version),1)]),_:1}),e.value.author?(I(),B(m,{key:0,label:`作者`},{default:L(()=>[G(F(e.value.author),1)]),_:1})):U(``,!0),V(n)?(I(),B(m,{key:1,label:`更新地址`},{default:L(()=>[Z(`a`,{href:V(n),target:`_blank`,rel:`noopener noreferrer`},F(e.value.updateUrl),9,io)]),_:1})):U(``,!0),V(r)?(I(),B(m,{key:2,label:`反馈地址`},{default:L(()=>[Z(`a`,{href:V(r),target:`_blank`,rel:`noopener noreferrer`},F(e.value.supportUri),9,ao)]),_:1})):U(``,!0)]),_:1}),Z(`div`,oo,[V(c).apps?(I(),B(y,{key:0,label:`应用`,value:V(c).apps,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).appGroups?(I(),B(y,{key:1,label:`应用规则组`,value:V(c).appGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).appRules?(I(),B(y,{key:2,label:`应用规则`,value:V(c).appRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).globalGroups?(I(),B(y,{key:3,label:`全局规则组`,value:V(c).globalGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).globalRules?(I(),B(y,{key:4,label:`全局规则`,value:V(c).globalRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).categories?(I(),B(y,{key:5,label:`分类`,value:V(c).categories,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0)]),W(E,{type:`line`,animated:``,class:`h-full min-h-0 [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0`},{default:L(()=>[V(a).length?(I(),B(w,{key:0,name:`apps`,tab:`应用规则`},{default:L(()=>[Z(`div`,so,[W(Or,{modelValue:V(l),"onUpdate:modelValue":i[0]||=e=>P(l)?l.value=e:null,"match-case":V(u).matchCase,"onUpdate:matchCase":i[1]||=e=>V(u).matchCase=e,"whole-word":V(u).wholeWord,"onUpdate:wholeWord":i[2]||=e=>V(u).wholeWord=e,"use-regex":V(u).useRegex,"onUpdate:useRegex":i[3]||=e=>V(u).useRegex=e,placeholder:`搜索应用名称或包名`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(p).length==0?(I(),B(b,{key:0,description:`没有匹配的应用`})):(I(),B(S,{key:1,accordion:``,class:`min-h-0 flex-1 overflow-auto`},{default:L(()=>[(I(!0),Y(Pe,null,De(V(p),e=>(I(),B(x,{key:e.id,name:e.id,title:`${e.name||e.id} · ${e.groups.length} 个规则组`},{default:L(()=>[Z(`div`,co,F(e.id),1),(I(),B(xe(()=>g(e))))]),_:2},1032,[`name`,`title`]))),128))]),_:1})),V(f).length>po?(I(),B(C,{key:2,page:V(d),"onUpdate:page":i[4]||=e=>P(d)?d.value=e:null,pageSize:po,itemCount:V(f).length},null,8,[`page`,`itemCount`])):U(``,!0)])]),_:1})):U(``,!0),V(o).length?(I(),B(w,{key:1,name:`global`,tab:`全局规则`},{default:L(()=>[Z(`div`,lo,[(I(!0),Y(Pe,null,De(V(o),e=>(I(),B(ee,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:L(()=>[e.desc?(I(),Y(`div`,uo,F(e.desc),1)):U(``,!0),(I(),B(xe(()=>h(e))))]),_:2},1032,[`title`]))),128))])]),_:1})):U(``,!0),V(s).length?(I(),B(w,{key:2,name:`categories`,tab:`分类`},{default:L(()=>[W(T,{striped:``,columns:_,data:V(s),pagination:!1},null,8,[`data`])]),_:1})):U(``,!0),W(w,{name:`raw`,tab:`原始 JSON`},{default:L(()=>[W(Sr,{value:e.value,raw:e.raw},null,8,[`value`,`raw`])]),_:1})]),_:1})])}}}),ho={name:`subscription-directory-preview`,class:`h-full min-h-0 flex flex-col`},go={key:0,class:`min-h-0 flex flex-1 flex-col gap-10px`},_o={key:1,class:`min-h-0 flex flex-1 flex-col gap-10px`},vo={key:2,class:`min-h-0 flex-1`},yo={key:2,class:`h-full min-h-0 flex flex-col gap-8px`};function bo(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var xo=50,So=Q({__name:`SubscriptionDirectoryPreview`,props:{items:{},detail:{},detailStructured:{type:Boolean},detailLoading:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=X(`list`),a=X(``),o=X(``),s=Fe(bn()),c=X(1),l=q(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,t.id==null?``:String(t.id),t.name||``,t.version==null?``:String(t.version),t.author||``,t.error||``].some(t=>Dn(t,e,s))):n.items});R(l,()=>c.value=1),R(()=>n.items,e=>{e.some(e=>e.path==a.value)||(a.value=``,i.value=`list`)});let u=q(()=>{let e=(c.value-1)*xo;return l.value.slice(e,e+xo)}),d=q(()=>n.items.find(e=>e.path==a.value)),f=q(()=>{var e;if(!(!n.detailStructured||!((e=n.detail)!=null&&e.parsed)))return n.detail.value}),p=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,m=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,h=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},g=[{key:`id`,title:`ID`,width:90,sorter:(e,t)=>(e.id||0)-(t.id||0)},{key:`name`,title:`订阅名称`,minWidth:260,ellipsis:{tooltip:!0},render(e){let t;return W(`div`,{class:`min-w-0 flex items-center gap-6px`},[W(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:W(Ze,{size:`small`,type:m(e.status)},bo(t=p(e.status))?t:{default:()=>[t]})])}},{key:`version`,title:`版本`,width:100,render:e=>e.version??`-`},{key:`author`,title:`作者`,width:150,render:e=>e.author||`-`},{key:`appsCount`,title:`应用`,width:100,render:e=>e.appsCount??`-`},{key:`groups`,title:`全局规则组`,width:120,render:e=>e.globalGroupsCount??`-`},{key:`categories`,title:`分类`,width:100,render:e=>e.categoriesCount??`-`}],_=e=>({class:`cursor-pointer`,onClick:()=>h(e)});return(t,n)=>{var r,a,p;let m=ge,h=$e,v=et,y=Yt,b=At;return I(),Y(`div`,ho,[W(pi,{title:`订阅文件`,count:e.items.length,listLabel:`订阅列表`,listActive:V(i)==`list`,detailText:((r=V(d))==null?void 0:r.name)||((a=V(d))==null?void 0:a.fileName),detailTitle:(p=V(d))==null?void 0:p.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),V(i)==`list`?(I(),Y(`div`,go,[W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索订阅 ID、名称、作者或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(u).length==0?(I(),B(m,{key:0,description:V(o).trim()?`没有匹配的订阅`:`没有订阅文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(h,{key:1,striped:``,columns:g,data:V(u),pagination:!1,rowKey:e=>e.path,rowProps:_,scrollX:1020,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),V(l).length>xo?(I(),B(v,{key:2,page:V(c),"onUpdate:page":n[5]||=e=>P(c)?c.value=e:null,pageSize:xo,itemCount:V(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):U(``,!0)])):(I(),Y(`div`,_o,[e.detailLoading?(I(),B(y,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(I(),Y(`div`,vo,[V(f)?(I(),B(mo,{key:e.detail.path,value:V(f),raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.parsed?(I(),B(ia,{key:e.detail.path,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):(I(),Y(`div`,yo,[W(b,{type:`warning`,title:`订阅 JSON 解析失败`,class:`flex-none`},{default:L(()=>[G(F(e.detail.error),1)]),_:1}),e.detail.raw?(I(),B(br,{key:0,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`min-h-0 flex-1`},null,8,[`value`])):(I(),B(m,{key:1,description:`无法读取原始内容`}))]))])):(I(),B(m,{key:1,description:`请选择一个订阅文件`}))]))])}}}),Co=new Set([`ctime`,`mtime`]),wo=new Set([`id`,`ctime`,`mtime`]),To=new Set([`snapshot`,`subs_config`]),Eo=new Set([`app_visit_log`,`subs_config`]),Do=e=>wo.has(e.toLowerCase()),Oo=(e,t)=>{let n=t.toLowerCase();return n==`app_id`||e.toLowerCase()==`app_visit_log`&&n==`id`},ko=(e,t)=>t.toLowerCase()==`subs_id`&&Eo.has(e.toLowerCase()),Ao=(e,t,n)=>{let r=t.toLowerCase();if(!(Co.has(r)||r==`id`&&To.has(e.toLowerCase()))||typeof n!=`number`&&typeof n!=`string`)return;let i=Number(n);if(!Number.isFinite(i))return;let a=Math.abs(i)<1e11?i*1e3:i,o=new Date(a);if(!Number.isNaN(o.getTime()))return o},jo=(e,t=2)=>e.toString().padStart(t,`0`),Mo=e=>`${e.getFullYear()}-${jo(e.getMonth()+1)}-${jo(e.getDate())} ${jo(e.getHours())}:${jo(e.getMinutes())}:${jo(e.getSeconds())}.${jo(e.getMilliseconds(),3)}`,No=64,Po=16,Fo=19,Io=(e,t)=>Math.max(...e.split(/\r\n|\r|\n/).map(t)),Lo=({title:e,values:t,sortable:n,measureText:r})=>{let i=r(e)+Po+(n?Fo:0),a=Math.max(0,...t.map(e=>Io(e,r)+Po));return Math.ceil(Math.max(No,i,a))},Ro=(e,t)=>Math.ceil(Math.max(e,t+Po)),zo=e=>e.reduce((e,t)=>e+t,0),Bo={key:2,name:`sqlite-layout`,class:`h-full min-h-0 flex gap-12px`},Vo={name:`sqlite-table-list`,class:`w-250px min-w-250px flex flex-col gap-8px border-r border-[#e5e7eb] pr-10px`},Ho={name:`sqlite-table-scroll`,class:`min-h-0 overflow-auto`},Uo={class:`flex-1 overflow-hidden text-left text-ellipsis leading-20px`},Wo={key:0,name:`sqlite-table-content`,class:`h-full min-h-0 min-w-0 flex-1`},Go={name:`sqlite-data-pane`,class:`h-full min-h-0 flex flex-col items-end gap-10px`},Ko={name:`sqlite-data-table-scroll`,class:`w-full min-h-0 flex-1`},qo=[`textContent`],Jo=Q({__name:`SqlitePreview`,props:{database:{},wal:{},appNames:{},subscriptionNames:{}},setup(e){let t=e,n=X(!0),r=X(!1),i=X(``),a=X(``),o=X([]),s=X(``),c=X([]),l=X([]),u=X([]),d=X(``),f=Fe(bn()),p=new Worker(new URL(``+globalThis.location.origin+`/assets/worker-entry-sqlite.worker-CKZxcxJX.js`,``+import.meta.url),{type:`module`}),m=1,h=0,g=new Map;p.onmessage=e=>{let t=e.data,n=g.get(t.id);n&&(g.delete(t.id),t.ok?n.resolve(t.result):n.reject(Error(t.error)))},p.onerror=e=>{let t=Error(e.message||`SQLite Worker 运行失败`);for(let e of g.values())e.reject(t);g.clear()};let _=(e,t=[])=>{let n=m++;return new Promise((r,i)=>{g.set(n,{resolve:e=>r(e),reject:i}),p.postMessage({...e,id:n},t)})},v=q(()=>o.value.find(e=>e.name==s.value)),b=q(()=>{let e=d.value.trim();return e?o.value.filter(t=>Dn(t.name,e,f)):o.value}),x,S=e=>{if(x===void 0&&(x=document.createElement(`canvas`).getContext(`2d`),x)){let{fontFamily:e,fontSize:t}=getComputedStyle(document.body);x.font=`${t} ${e}`}return(x==null?void 0:x.measureText(e).width)??Array.from(e).length*8};R(s,async()=>{if(!s.value)return;let e=++h,t=s.value;r.value=!0,a.value=``;try{let n=await _({type:`data`,table:t});if(e!=h||t!=s.value)return;l.value=n.columns.map(e=>Lo({title:e,values:[],sortable:Do(e),measureText:S})),c.value=n.columns,u.value=n.rows}catch(t){if(e!=h)return;a.value=t instanceof Error?t.message:String(t)}finally{e==h&&(r.value=!1)}}),Oe(async()=>{n.value=!0,i.value=``;try{var e;let n=t.database,r=t.wal,i=[n.buffer];r&&i.push(r.buffer);let a=await _({type:`open`,database:n,wal:r},i);o.value=a.tables,s.value=((e=a.tables[0])==null?void 0:e.name)||``}catch(e){i.value=e instanceof Error?e.message:String(e)}finally{n.value=!1}}),be(()=>{p.terminate();for(let e of g.values())e.reject(Error(`组件已卸载`));g.clear()});let C=(e,n,r)=>{if(r==null)return W(`span`,{class:`italic text-[#9ca3af]`},[G(`NULL`)]);if(typeof r==`object`)return W(Ze,{size:`small`},{default:()=>[`BLOB · ${r.byteLength} bytes`]});if(Oo(e,n)&&typeof r==`string`){var i;let e=(i=t.appNames)==null?void 0:i[r];if(e)return W(`span`,{class:`whitespace-pre`,title:r},[e])}if(ko(e,n)&&(typeof r==`number`||typeof r==`string`)){var a;let e=(a=t.subscriptionNames)==null?void 0:a[String(r)];if(e)return W(`span`,{class:`whitespace-pre`,title:String(r)},[e])}let o=Ao(e,n,r);return o?W(`span`,{class:`whitespace-nowrap tabular-nums`,title:String(r)},[Mo(o)]):W(`span`,{class:`whitespace-pre`},[String(r)])},w=q(()=>{let e=s.value;return c.value.map((t,n)=>({key:t,title:t,width:l.value[n],sorter:Do(t)?`default`:void 0,render(r){return Me(W(`span`,{class:`inline-block w-max`},[C(e,t,r[t]??null)]),[[tt,t=>{if(e!=s.value)return;let r=l.value[n];if(r==null)return;let i=Ro(r,t.width);if(i==r)return;let a=[...l.value];a[n]=i,l.value=a}]])}}))}),ee=q(()=>zo(l.value)),T=q(()=>u.value.map((e,t)=>{let n={__rowIndex:t};return c.value.forEach((t,r)=>{n[t]=e[r]??null}),n}));return(e,t)=>{let c=At,l=ge,u=Ze,p=y,m=$e,h=en,g=an,_=Yt;return I(),B(_,{show:V(n),class:`h-full min-h-0 [&_.n-spin-content]:h-full [&_.n-spin-content]:min-h-0`},{default:L(()=>[V(i)?(I(),B(c,{key:0,type:`error`,title:`数据库无法预览`},{default:L(()=>[G(F(V(i)),1)]),_:1})):!V(n)&&V(o).length==0?(I(),B(l,{key:1,description:`数据库中没有可展示的数据表`})):(I(),Y(`div`,Bo,[Z(`div`,Vo,[W(Or,{modelValue:V(d),"onUpdate:modelValue":t[0]||=e=>P(d)?d.value=e:null,"match-case":V(f).matchCase,"onUpdate:matchCase":t[1]||=e=>V(f).matchCase=e,"whole-word":V(f).wholeWord,"onUpdate:wholeWord":t[2]||=e=>V(f).wholeWord=e,"use-regex":V(f).useRegex,"onUpdate:useRegex":t[3]||=e=>V(f).useRegex=e,placeholder:`搜索数据表`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),Z(`div`,Ho,[(I(!0),Y(Pe,null,De(V(b),e=>(I(),B(p,{key:e.name,block:``,text:``,type:e.name==V(s)?`primary`:`default`,class:`h-34px justify-between px-6px`,onClick:t=>s.value=e.name},{default:L(()=>[Z(`span`,Uo,F(e.name),1),W(u,{size:`small`,bordered:!1},{default:L(()=>[G(F(e.count??`?`),1)]),_:2},1024)]),_:2},1032,[`type`,`onClick`]))),128))])]),V(v)?(I(),Y(`div`,Wo,[W(g,{type:`line`,animated:``,class:`h-full min-h-0 min-w-0 flex-1 [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tab-pane]:min-w-0 [&_.n-tab-pane]:flex-1 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0 [&_.n-tabs-pane-wrapper]:min-w-0 [&_.n-tabs-pane-wrapper]:flex-1`},{default:L(()=>[W(h,{name:`data`,tab:V(v).count==null?`数据`:`数据 · ${V(v).count}`},{default:L(()=>[Z(`div`,Go,[V(a)?(I(),B(c,{key:0,type:`warning`,title:`当前数据表无法读取`,class:`w-full flex-none`},{default:L(()=>[G(F(V(a)),1)]),_:1})):U(``,!0),Z(`div`,Ko,[W(m,{striped:``,"virtual-scroll":``,"flex-height":``,scrollX:V(ee)||void 0,loading:V(r),columns:V(w),data:V(T),pagination:!1,rowKey:e=>Number(e.__rowIndex),size:`small`,class:`h-full w-full [&_.n-data-table-table]:min-w-full [&_.n-data-table-th]:whitespace-nowrap`},null,8,[`scrollX`,`loading`,`columns`,`data`,`rowKey`])])])]),_:1},8,[`tab`]),W(h,{name:`schema`,tab:`表结构`},{default:L(()=>[Z(`div`,{name:`sqlite-schema`,class:`box-border m-0 h-full overflow-auto whitespace-pre-wrap rounded-4px border border-[#e5e7eb] bg-[#fafafa] p-12px font-mono`,textContent:F(V(v).sql)},null,8,qo)]),_:1})]),_:1})])):U(``,!0)]))]),_:1},8,[`show`])}}}),Yo=e(ht(),1),Xo=10080*60*1e3,Zo=Yo.default.createInstance({name:`gkd-inspect-log`,storeName:`remote_logs`,version:1,driver:Yo.default.INDEXEDDB}),Qo=(e,t=Date.now())=>{if(!e||typeof e!=`object`)return!1;let n=e;return n.version==1&&typeof n.cachedAt==`number`&&Number.isFinite(n.cachedAt)&&typeof n.expiresAt==`number`&&Number.isFinite(n.expiresAt)&&n.expiresAt>t&&typeof n.name==`string`&&n.data instanceof ArrayBuffer},$o=async e=>{try{await Zo.removeItem(e)}catch{}},es=async e=>{try{let t=await Zo.getItem(e);if(Qo(t))return t;t&&await Zo.removeItem(e)}catch{}},ts=async(e,t,n)=>{let r=Date.now();try{let i=[];for(let t of await Zo.keys()){let n=await Zo.getItem(t);Qo(n,r)?t!=e&&i.push({key:t,value:n}):await Zo.removeItem(t)}i.sort((e,t)=>e.value.cachedAt-t.value.cachedAt);let a=i.reduce((e,t)=>e+t.value.data.byteLength,n.byteLength);for(;i.length>=10||a>209715200;){let e=i.shift();if(!e)break;a-=e.value.data.byteLength,await Zo.removeItem(e.key)}await Zo.setItem(e,{version:1,cachedAt:r,expiresAt:r+Xo,name:t,data:n})}catch{}},ns=10080*60*1e3,rs=Yo.default.createInstance({name:`gkd-inspect-log`,storeName:`build_assets`,version:1,driver:Yo.default.INDEXEDDB}),is=(e,t=Date.now())=>{if(!e||typeof e!=`object`)return!1;let n=e;return n.version==1&&typeof n.assetId==`number`&&Number.isSafeInteger(n.assetId)&&n.assetId>0&&typeof n.cachedAt==`number`&&Number.isFinite(n.cachedAt)&&typeof n.expiresAt==`number`&&Number.isFinite(n.expiresAt)&&n.expiresAt>t&&n.data instanceof ArrayBuffer},as=e=>String(e),os=async e=>{try{await rs.removeItem(as(e))}catch{}},ss=async e=>{let t=as(e);try{let n=await rs.getItem(t);if(is(n)&&n.assetId==e)return n;n&&await rs.removeItem(t)}catch{}},cs=async(e,t)=>{let n=Date.now();try{let r=[];for(let t of await rs.keys()){let i=await rs.getItem(t);is(i,n)?t!=as(e)&&r.push({key:t,value:i}):await rs.removeItem(t)}r.sort((e,t)=>e.value.cachedAt-t.value.cachedAt);let i=r.reduce((e,t)=>e+t.value.data.byteLength,t.byteLength);for(;r.length>=10||i>209715200;){let e=r.shift();if(!e)break;i-=e.value.data.byteLength,await rs.removeItem(e.key)}await rs.setItem(as(e),{version:1,assetId:e,cachedAt:n,expiresAt:n+ns,data:t})}catch{}},ls=RegExp(`^[\\t ]*at[\\t ]+[^\\r\\n]*r8-map-id-[a-f\\d]{64}(?=[:)\\s]|$)`,`im`),us=e=>ls.test(e),ds=50*1024*1024,fs=e=>e instanceof Error?e:Error(String(e)),ps=async(e,t)=>{let n=gt(`https://f.gkd.li/${e}`);if(!n)throw Error(`无法生成构建附件下载地址`);let r=await fetch(n,{credentials:`omit`,signal:t});if(!r.ok)throw Error(`构建附件下载失败: HTTP ${r.status}`);if(Number(r.headers.get(`content-length`)||0)>52428800)throw Error(`构建附件 ZIP 超过大小限制`);try{return await to(r,ds)}catch(e){throw e instanceof Error&&e.message==`响应内容超过大小限制`?Error(`构建附件 ZIP 超过大小限制`,{cause:e}):e}},ms=(e=>{let t=new Map;return n=>{let r=t.get(n);if(!r){let i=new AbortController,a=e(n,i.signal);r={task:a,controller:i,consumers:0,settled:!1},t.set(n,r),a.finally(()=>{r.settled=!0,t.get(n)==r&&t.delete(n)}).catch(()=>{})}r.consumers++;let i=!1;return{task:r.task,release:()=>{i||(i=!0,r.consumers--,!r.settled&&r.consumers==0&&r.controller.abort())}}}})(async(e,t)=>{let n=await yt(e,t);if(!n)throw Error(`未找到该版本的构建附件`);t.throwIfAborted();let r=await ss(n.assetId);if(t.throwIfAborted(),r)return{assetId:n.assetId,data:r.data};let i=await ps(n.assetId,t);return t.throwIfAborted(),await cs(n.assetId,i),t.throwIfAborted(),{assetId:n.assetId,data:i}}),hs=class{constructor(e){ut(this,`buildKey`,void 0),ut(this,`worker`,void 0),ut(this,`workerReadyTask`,void 0),ut(this,`rejectWorkerReady`,void 0),ut(this,`initializeTask`,void 0),ut(this,`releaseBuildAssetTask`,void 0),ut(this,`nextRequestId`,1),ut(this,`disposed`,!1),ut(this,`pendingRequests`,new Map),this.buildKey=e}dispose(){var e;this.disposed||(this.disposed=!0,(e=this.releaseBuildAssetTask)==null||e.call(this),this.releaseBuildAssetTask=void 0,this.stopWorker(new DOMException(`Retrace session disposed`,`AbortError`)))}async retrace(e,t){return this.disposed||!us(e)?e:(await this.ensureInitialized(),this.request({type:t==`crash`?`retrace-crash`:`retrace-log`,text:e}))}ensureInitialized(){if(!this.initializeTask){let e=this.initialize();this.initializeTask=e,e.catch(()=>{this.initializeTask==e&&(this.initializeTask=void 0)})}return this.initializeTask}async initialize(){let e=ms(this.buildKey);this.releaseBuildAssetTask=e.release;let t;try{if(t=await e.task,this.disposed)throw new DOMException(`Retrace session disposed`,`AbortError`);await this.register(t.data.slice(0))}catch(e){throw t&&!(e instanceof DOMException&&e.name==`AbortError`)&&await os(t.assetId),this.stopWorker(fs(e)),e}finally{this.releaseBuildAssetTask==e.release&&(this.releaseBuildAssetTask=void 0),e.release()}}async register(e){await this.request({type:`register`,data:e},[e])}getWorker(){if(this.worker)return this.worker;if(this.disposed)throw new DOMException(`Retrace session disposed`,`AbortError`);let e=new Worker(new URL(``+globalThis.location.origin+`/assets/worker-entry-retrace.worker-DqRAmOwS.js`,``+import.meta.url),{type:`module`}),t;return this.workerReadyTask=new Promise((e,n)=>{t=e,this.rejectWorkerReady=n}),e.onmessage=e=>{let n=e.data;if(`type`in n){t==null||t(),t=void 0,this.rejectWorkerReady=void 0;return}let r=this.pendingRequests.get(n.id);r&&(this.pendingRequests.delete(n.id),`error`in n?r.reject(Error(n.error)):r.resolve(n.result))},e.onerror=e=>{this.stopWorker(Error(e.message||`Retrace Worker 运行失败`))},this.worker=e,e}request(e,t=[]){return new Promise((n,r)=>{let i;try{i=this.getWorker()}catch(e){r(fs(e));return}let a=this.nextRequestId++;this.pendingRequests.set(a,{resolve:e=>n(e),reject:r}),this.workerReadyTask.then(()=>{if(this.pendingRequests.has(a))try{i.postMessage({id:a,...e},t)}catch(e){this.pendingRequests.delete(a),r(fs(e))}},e=>{this.pendingRequests.delete(a)&&r(fs(e))})})}stopWorker(e){var t,n;(t=this.worker)==null||t.terminate(),this.worker=void 0,(n=this.rejectWorkerReady)==null||n.call(this,e),this.workerReadyTask=void 0,this.rejectWorkerReady=void 0,this.initializeTask=void 0;for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}},gs={name:`log-page`,"page-size":``,class:`box-border flex min-h-700px min-w-1200px flex-col gap-10px bg-[#f8fafc] p-10px`},_s={name:`log-toolbar`,class:`h-42px flex items-center gap-10px`},vs=[`href`],ys={key:1,name:`log-workspace`,class:`flex min-h-0 flex-1 gap-10px`},bs={key:0,name:`archive-meta-content`,class:`min-w-0 flex-1`},xs=[`title`],Ss={name:`archive-stats`,class:`mt-3px text-12px text-[#64748b]`},Cs=[`aria-expanded`,`aria-label`,`title`],ws={name:`log-preview-panel`,class:`box-border flex min-h-0 min-w-0 flex-1 flex-col rounded-6px border border-[#e2e8f0] bg-white`},Ts={key:0,name:`preview-header`,class:`box-border min-h-52px flex items-center gap-10px border-b border-[#e5e7eb] px-12px py-8px [&>:first-child]:flex-1`},Es={"min-w-0":``},Ds=[`title`],Os={name:`preview-size`,class:`mt-3px text-12px text-[#64748b]`},ks={key:0,name:`apps-overview`,class:`flex flex-none items-center gap-6px whitespace-nowrap text-13px`},As={class:`font-600`},js={class:`font-600`},Ms={name:`preview-body`,class:`min-h-0 flex-1 p-12px`},Ns={key:2,name:`text-preview-wrapper`,class:`h-full min-h-0 flex flex-col gap-8px`},Ps={key:0,name:`text-preview-file-meta`,class:`min-w-0 max-w-260px flex-[0_1_260px] text-left`},Fs=[`title`],Is={name:`preview-size`,class:`mt-3px text-12px text-[#64748b]`},Ls={key:2,name:`log-empty-state`,class:`grid min-h-0 flex-1 place-items-center`},Rs={name:`drop-title`,class:`text-20px font-600`},zs=Q({__name:`LogPage`,setup(e){let t=ft(),n=dt(),r=X(),i=X(``),a=X(!1),o=X(!1),s=X(``),c=X(``),l=X(`none`),u=X(``),d=X(),f=X(),p=X(`users`),m=X([]),h=X(),g=X(!1),_=X([]),v=X(``),b=X(),x=X(``),S=X(!1),C=X(),w=X(),ee=X(),T=X(),E=X(),D=X(),te=X([]),ne=X(),re=X(!1),oe=X(!1),se=X(``),O=X(),ce=X(),k=X({}),le=X({}),A=X(),j=X(!1),M=0,N=0,ue=0,de,fe=0,pe=0,me,he,ve,ye=new Map,xe=q(()=>{var e;return(e=r.value)==null?void 0:e.entryMap.get(i.value)}),Se=()=>{ve==null||ve.dispose(),ve=void 0,ee.value=void 0,ye.clear(),T.value=void 0,E.value=void 0,D.value=void 0},Ce=(e,t)=>{let n=ye.get(e);if((n==null?void 0:n.originalText)==t)return n;let r=Fe({originalText:t,available:us(t),loading:!1,active:!1,autoAttempted:!1});return ye.set(e,r),r},we=e=>e.active&&e.retracedText!=null?e.retracedText:e.originalText,Te=async(e,t,n,r)=>{let i=ee.value;if(!e||!e.available||!i||e.loading)return;if(e.active){e.active=!1,r(e.originalText);return}if(e.retracedText!=null){e.active=!0,r(e.retracedText);return}let a=ve||=new hs(i);e.loading=!0;try{let i=await a.retrace(e.originalText,t);if(i==e.originalText){n()&&Ke.warning(`没有找到与当前 mapping 匹配的堆栈`);return}if(e.retracedText=i,e.active=!0,!n())return;r(i)}catch(e){if(e instanceof DOMException&&e.name==`AbortError`||!n())return;Ke.error(`堆栈还原失败: ${e instanceof Error?e.message:String(e)}`)}finally{e.loading=!1}},Ee=(e,t,n,r)=>{!(e!=null&&e.available)||e.autoAttempted||(e.autoAttempted=!0,Te(e,t,n,r))},De=()=>{let e=T.value;Te(e,`log`,()=>T.value==e,t=>{T.value==e&&(u.value=t)})},Oe=()=>{let e=E.value;Te(e,`crash`,()=>E.value==e,t=>{E.value!=e||!h.value||(h.value=H({...h.value,stackTrace:t}))})},ke=()=>{let e=D.value;Te(e,`log`,()=>D.value==e,t=>{D.value==e&&(b.value=t)})},Ae=()=>{ue++,h.value=void 0,E.value=void 0,g.value=!1},je=()=>{de=void 0,m.value=[],Ae()},Me=()=>{fe++,v.value=``,b.value=void 0,D.value=void 0,x.value=``,S.value=!1},Ne=()=>{pe++,ne.value=void 0,re.value=!1,oe.value=!1},Pe=()=>{_.value=[],C.value=void 0,w.value=void 0,te.value=[],me=void 0,Me(),Ne()},K=()=>{o.value=!1,l.value=`none`,u.value=``,T.value=void 0,d.value=void 0,f.value=void 0,p.value=`users`,se.value=``,O.value=void 0,ce.value=void 0,k.value={},le.value={},Ae(),Me(),Ne()},J=async e=>{let t=++N;if(s.value=``,K(),e){i.value=e.path,o.value=!0;try{if(e.kind==`database`){if(!r.value)return;let[n,i,a]=await Promise.all([Na(r.value,e),Ga(r.value),qa(r.value)]);if(t!=N)return;O.value=H(n.database),ce.value=n.wal?H(n.wal):void 0,k.value=H(i),le.value=H(a),l.value=`database`;return}if(e.kind==`text`){let n=await Ma(e);if(t!=N)return;let r=Pa(n),i=Ce(`text:${e.path}`,r);T.value=i,u.value=we(i),l.value=`text`,Ee(i,`log`,()=>T.value==i,e=>{T.value==i&&(u.value=e)});return}if(e.kind==`json`){let n=Pa(await Ma(e,va));if(t!=N)return;u.value=n;try{let t=JSON.parse(n);d.value=t;let r=mn(t),i=e.path.toLowerCase().split(`/`).at(-1)==`apps.json`&&!r?Rr(t):void 0;i?(f.value=H(i),l.value=`apps`):!r&&Ya(e,t)?l.value=`subscription`:l.value=`json`}catch(e){se.value=e instanceof Error?e.message:String(e),l.value=`invalid-json`}return}l.value=`unsupported`}catch(e){if(t!=N)return;s.value=e instanceof Error?e.message:String(e),l.value=`unsupported`}finally{t==N&&(o.value=!1)}}},Ie=async()=>{let e=r.value;if(!e)return;let t=Xr(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,K(),i.value=zr,l.value=`crash`,m.value.length!=t.length){o.value=!0;try{de||=ii(t,async e=>Pa(await Ma(e,va)));let a=await de;if(n!=N||e!=r.value||i.value!=zr)return;m.value=H(a)}catch(e){if(n!=N)return;s.value=e instanceof Error?e.message:String(e),l.value=`unsupported`}finally{n==N&&(o.value=!1)}}},Q=async e=>{let t=r.value,n=t==null?void 0:t.entryMap.get(e);if(!t||!n||!Jr(n.path))return;let i=++ue;if(h.value=void 0,E.value=void 0,g.value=!0,!Yr(n.path)){h.value=H(ni(n.path)),g.value=!1;return}try{let e=Pa(await Ma(n,va));if(i!=ue||t!=r.value||l.value!=`crash`)return;let a=Qr(e,n.path);if(a.stackTrace){let e=Ce(`crash:${n.path}`,a.stackTrace);E.value=e,h.value=H({...a,stackTrace:we(e)}),Ee(e,`crash`,()=>E.value==e,t=>{E.value!=e||!h.value||(h.value=H({...h.value,stackTrace:t}))})}else h.value=H(a)}catch(e){if(i!=ue)return;h.value=H(ei(n.path,e))}finally{i==ue&&(g.value=!1)}},Le=()=>{let e=r.value;if(!e)return;let t=Di(e.entries);t.length!=0&&(N++,s.value=``,K(),i.value=xi,_.value=H(ji(t)),l.value=`log-directory`)},$=async e=>{let t=r.value,n=t==null?void 0:t.entryMap.get(e);if(!t||!n||!Ti(n.path))return;let i=++fe;v.value=n.path,b.value=void 0,D.value=void 0,x.value=``,S.value=!0;try{let e=Pa(await Ma(n));if(i!=fe||t!=r.value||l.value!=`log-directory`)return;let a=Ce(`log:${n.path}`,e);D.value=a,b.value=we(a),Ee(a,`log`,()=>D.value==a,e=>{D.value==a&&(b.value=e)})}catch(e){if(i!=fe)return;x.value=e instanceof Error?e.message:String(e)}finally{i==fe&&(S.value=!1)}},ze=async()=>{let e=r.value;if(!e)return;let t=Oi(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,K(),i.value=Si,l.value=`subscription-directory`,te.value.length!=t.length){o.value=!0;try{me||=Ji(t,async e=>Pa(await Ma(e,va)));let a=await me;if(n!=N||e!=r.value||i.value!=Si)return;te.value=H(a)}catch(e){if(n!=N)return;s.value=e instanceof Error?e.message:String(e),l.value=`unsupported`}finally{n==N&&(o.value=!1)}}},Be=async e=>{let t=r.value,n=t==null?void 0:t.entryMap.get(e);if(!t||!n||!Ei(n.path))return;let i=++pe;if(ne.value=void 0,re.value=!1,oe.value=!0,!Bi(n.path)){ne.value=H(Ki(n.path)),oe.value=!1;return}try{let e=Pa(await Ma(n,va));if(i!=pe||t!=r.value||l.value!=`subscription-directory`)return;let a=Hi(e,n.path);ne.value=H(a),re.value=a.parsed&&Ja(a.value)}catch(e){if(i!=pe)return;ne.value=H(Wi(n.path,e))}finally{i==pe&&(oe.value=!1)}},Ve=async(e,t,n=++M)=>{Se(),N++,je(),Pe(),a.value=!0,s.value=``,K(),r.value=void 0,i.value=``;try{let i=await Oa(e,t||`log.zip`);if(n!=M)return;let[a,o,s]=await Promise.all([Ra(i),Va(i),Ba(i)]);if(n!=M)return;r.value=i,w.value=a?H(a):void 0,C.value=o?H(o):void 0,ee.value=s;let c=Da(i);return c&&Ti(c.path)?Le():c&&Jr(c.path)?await Ie():c&&Ei(c.path)?await ze():c?await J(c):Di(i.entries).length?Le():Xr(i.entries).length?await Ie():Oi(i.entries).length&&await ze(),n==M}catch(e){return n==M?(s.value=e instanceof Error?e.message:String(e),!1):void 0}finally{n==M&&(a.value=!1)}},He=(e,t)=>{var n,r,i;let a=e.headers.get(`content-disposition`)||``,o=(n=a.match(/filename\*=UTF-8''([^;]+)/i))==null?void 0:n[1],s=(r=a.match(/filename="?([^";]+)"?/i))==null?void 0:r[1],c=o||s;if(c)try{return decodeURIComponent(c)}catch{return c}if((i=t.name)!=null&&i.toLowerCase().endsWith(`.zip`))return t.name;try{let n=new URL(e.url||t.url).pathname.split(`/`).filter(Boolean).at(-1);if(n)return decodeURIComponent(n)}catch{}return`log.zip`},Ue=async(e,t,n)=>{let r=await es(e.url);if(t!=M)return;if(r){if(await Ve(r.data,r.name,t)||t!=M)return;await $o(e.url),a.value=!0,s.value=``}let i=!1,o;try{o=await mt(e.url,{credentials:`omit`,signal:n.signal},e=>({...e,anonymous:!0,onprogress(t){var r;(r=e.onprogress)==null||r.call(t,t),t.loaded>52428800&&(i=!0,n.abort())}}))}catch(e){throw i?Error(`ZIP 文件不能超过 ${Xa(ma)}`,{cause:e}):e}if(!o.ok)throw Error(`HTTP ${o.status}`);if(Number(o.headers.get(`content-length`)||0)>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ma)}`);let c;try{c=await to(o,ma)}catch(e){throw e instanceof Error&&e.message==`响应内容超过大小限制`?Error(`ZIP 文件不能超过 ${Xa(ma)}`,{cause:e}):e}if(t!=M)return;let l=He(o,e);await Ve(c,l,t)&&ts(e.url,l,c)},We=()=>t.path==`/log`?lt(t.query.url):st(t.params.pathMatch),Ge=async()=>{he==null||he.abort(),Se();let e=new AbortController;he=e;let t=We(),n=++M;if(N++,je(),Pe(),r.value=void 0,i.value=``,K(),s.value=``,!t){a.value=!1,c.value=``;return}c.value=t.url,a.value=!0;try{await Ue(t,n,e)}catch(e){if(n!=M)return;s.value=e instanceof Error?e.message:String(e),a.value=!1}};R(()=>t.fullPath,Ge,{immediate:!0}),be(()=>{he==null||he.abort(),Se()});let qe=async()=>{let e=ot(c.value);if(!e){Ke.warning(`请输入有效的 HTTP/HTTPS 链接`);return}n.resolve(e).fullPath==t.fullPath?await Ge():await n.push(e)},Je=async e=>{let r=e.find(e=>e.name.toLowerCase().endsWith(`.zip`));r&&(he==null||he.abort(),he=void 0,M++,t.fullPath!=`/log`&&await n.replace(`/log`),c.value=``,await Ve(r,r.name))},Ye=()=>{var e;return(e=A.value)==null?void 0:e.click()},Ze=()=>{let e=A.value;if(!e)return;let t=[...e.files||[]];e.value=``,Je(t)};ie(document.body,`dragover`,e=>e.preventDefault()),ie(document.body,`drop`,e=>{e.preventDefault();let t=pt(e);if(!t.some(e=>e.name.toLowerCase().endsWith(`.zip`))){Ke.warning(`请拖入 ZIP 文件`);return}Je(t)});let Qe=q(()=>{var e;let t=[],n=new Map,i=((e=r.value)==null?void 0:e.entries)||[],a=Xr(i),o=Di(i),s=Oi(i);for(let e of i){if(Jr(e.path)||Ti(e.path)||Ei(e.path))continue;let r=e.path.split(`/`).filter(Boolean),i=t,a=``;r.forEach((t,o)=>{a=a?`${a}/${t}`:t;let s=n.get(a);if(!s){let c=o==r.length-1;s={key:a,label:t,path:c?e.path:void 0,isFile:c,children:c?void 0:[]},n.set(a,s),i.push(s)}i=s.children||[]})}return a.length&&t.push({key:zr,label:`crash (${a.length})`,isFile:!0}),o.length&&t.push({key:xi,label:`log (${o.length})`,isFile:!0}),s.length&&t.push({key:Si,label:`subscription (${s.length})`,isFile:!0}),t.sort((e,t)=>String(e.label||``).localeCompare(String(t.label||``),`zh-CN`)),t}),$e=e=>{var t;let n=String(e[0]||``);if(n==zr){Ie();return}if(n==xi){Le();return}if(n==Si){ze();return}let i=(t=r.value)==null?void 0:t.entryMap.get(n);i&&J(i)};return(e,t)=>{var n,ie,M,N,ue,de,fe;let pe=y,me=Re(`RouterLink`),he=Xe,ve=_e,ye=At,be=Re(`SvgIcon`),Se=at,Ce=nt,we=Yt,Te=ge;return I(),Y(`div`,gs,[Z(`div`,_s,[W(me,{to:`/`,flex:``,"items-center":``},{default:L(()=>[W(pe,{quaternary:``},{default:L(()=>[...t[5]||=[G(`返回首页`,-1)]]),_:1})]),_:1}),t[8]||=Z(`div`,{name:`log-title`,class:`flex-none text-18px font-600`},` 日志包查看器 `,-1),V(w)?(I(),Y(`a`,{key:0,href:V(w).commitUrl,target:`_blank`,rel:`noopener noreferrer`,class:`flex-none text-14px text-[#2563eb] hover:underline`},F(V(w).versionName)+` (`+F(V(w).versionCode)+`) `,9,vs)):U(``,!0),W(ve,{class:`ml-auto min-w-420px max-w-720px`},{default:L(()=>[W(he,{value:V(c),"onUpdate:value":t[0]||=e=>P(c)?c.value=e:null,clearable:``,placeholder:`粘贴 GitHub、f.gkd.li 或其他 ZIP 链接`,onKeyup:ae(qe,[`enter`])},null,8,[`value`]),W(pe,{type:`primary`,loading:V(a),onClick:qe},{default:L(()=>[...t[6]||=[G(` 加载链接 `,-1)]]),_:1},8,[`loading`])]),_:1}),W(pe,{disabled:V(a),onClick:Ye},{default:L(()=>[...t[7]||=[G(` 选择本地 ZIP `,-1)]]),_:1},8,[`disabled`]),Z(`input`,{ref_key:`localFileInput`,ref:A,hidden:``,type:`file`,accept:`.zip,application/zip`,onChange:Ze},null,544)]),V(s)?(I(),B(ye,{key:0,type:`error`,closable:``,onClose:t[1]||=e=>s.value=``},{default:L(()=>[G(F(V(s)),1)]),_:1})):U(``,!0),V(r)?(I(),Y(`div`,ys,[Z(`div`,{name:`log-file-panel`,class:z([`box-border flex min-h-0 flex-col rounded-6px border border-[#e2e8f0] bg-white transition-[width,min-width] duration-180 ease`,V(j)?`w-44px min-w-44px`:`w-300px min-w-300px`])},[Z(`div`,{name:`archive-meta`,class:z([`flex min-w-0 items-start gap-8px`,V(j)?`justify-center border-b-0 p-8px`:`border-b border-[#e5e7eb] p-12px`])},[V(j)?U(``,!0):(I(),Y(`div`,bs,[Z(`div`,{name:`archive-name`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:V(r).name},F(V(r).name),9,xs),Z(`div`,Ss,F(V(r).entries.length)+` 个文件 · `+F(V(Xa)(V(r).uncompressedSize)),1)])),Z(`button`,{type:`button`,class:`inline-grid h-26px w-26px flex-none cursor-pointer place-items-center rounded-4px border-0 bg-transparent p-0 text-[#64748b] hover:bg-[#e2e8f0] hover:text-[#0f172a] focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,"aria-expanded":!V(j),"aria-label":V(j)?`展开文件列表`:`收起文件列表`,title:V(j)?`展开文件列表`:`收起文件列表`,onClick:t[2]||=e=>j.value=!V(j)},[W(be,{name:`arrow`,class:z([`h-17px w-17px transition-transform duration-180 ease`,V(j)?`-rotate-90`:`rotate-90`])},null,8,[`class`])],8,Cs)],2),V(j)?U(``,!0):(I(),B(Se,{key:0,blockLine:``,virtualScroll:``,defaultExpandAll:``,data:V(Qe),selectedKeys:V(i)?[V(i)]:[],class:`min-h-0 flex-1 p-8px`,"onUpdate:selectedKeys":$e},null,8,[`data`,`selectedKeys`]))],2),Z(`div`,ws,[V(xe)&&V(xe).kind!=`text`&&V(l)!=`invalid-json`?(I(),Y(`div`,Ts,[Z(`div`,Es,[Z(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:V(xe).path},F(V(xe).path),9,Ds),Z(`div`,Os,F(V(Xa)(V(xe).size)),1)]),V(l)==`apps`&&V(f)?(I(),Y(`div`,ks,[W(Ce,{size:`small`},{default:L(()=>[W(pe,{type:V(p)==`users`?`primary`:`default`,secondary:V(p)==`users`,onClick:t[3]||=e=>p.value=`users`},{default:L(()=>[...t[9]||=[G(` 按用户查看 `,-1)]]),_:1},8,[`type`,`secondary`]),W(pe,{type:V(p)==`raw`?`primary`:`default`,secondary:V(p)==`raw`,onClick:t[4]||=e=>p.value=`raw`},{default:L(()=>[...t[10]||=[G(` 原始 JSON `,-1)]]),_:1},8,[`type`,`secondary`])]),_:1}),t[11]||=Z(`span`,{class:`mx-6px h-16px border-l border-[#e2e8f0]`},null,-1),t[12]||=Z(`span`,{class:`text-[#64748b]`},`应用安装记录`,-1),Z(`span`,As,F(V(f).totalApps),1),t[13]||=Z(`span`,{class:`mx-4px text-[#cbd5e1]`},`·`,-1),t[14]||=Z(`span`,{class:`text-[#64748b]`},`设备用户`,-1),Z(`span`,js,F(V(f).users.length),1)])):U(``,!0)])):U(``,!0),Z(`div`,Ms,[V(o)?(I(),B(we,{key:0,show:``,class:`h-full w-full`})):V(l)==`none`?(I(),B(Te,{key:1,description:`该日志包没有可预览内容`})):V(l)==`text`||V(l)==`invalid-json`?(I(),Y(`div`,Ns,[V(l)==`invalid-json`?(I(),B(ye,{key:0,type:`warning`,title:`JSON 解析失败,以下为原始内容`,class:`flex-none`},{default:L(()=>[G(F(V(se)),1)]),_:1})):U(``,!0),W(br,{value:V(u),documentKey:(n=V(xe))==null?void 0:n.path,"search-placeholder":`搜索当前文件`,"allow-wrap":``,copyable:``},{"toolbar-start":L(()=>{var e,t,n;return[V(xe)?(I(),Y(`div`,Ps,[Z(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:V(xe).path},F(V(xe).path),9,Fs),Z(`div`,Is,F(V(Xa)(V(xe).size)),1)])):U(``,!0),W(mi,{available:!!V(ee)&&!!((e=V(T))!=null&&e.available),loading:(t=V(T))==null?void 0:t.loading,retraced:(n=V(T))==null?void 0:n.active,onToggle:De},null,8,[`available`,`loading`,`retraced`])]}),_:1},8,[`value`,`documentKey`])])):V(l)==`json`?(I(),B(ia,{key:V(i),value:V(d),raw:V(u)},null,8,[`value`,`raw`])):V(l)==`crash`?(I(),B(bi,{key:4,items:V(m),detail:V(h),detailLoading:V(g),retraceAvailable:!!V(ee)&&!!((ie=V(E))!=null&&ie.available),retraceLoading:(M=V(E))==null?void 0:M.loading,retraceActive:(N=V(E))==null?void 0:N.active,sourceLinkContext:V(C),onSelect:Q,onToggleRetrace:Oe},null,8,[`items`,`detail`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):V(l)==`log-directory`?(I(),B(eo,{key:5,items:V(_),detailPath:V(v),detailText:V(b),detailError:V(x),detailLoading:V(S),retraceAvailable:!!V(ee)&&!!((ue=V(D))!=null&&ue.available),retraceLoading:(de=V(D))==null?void 0:de.loading,retraceActive:(fe=V(D))==null?void 0:fe.active,sourceLinkContext:V(C),onSelect:$,onToggleRetrace:ke},null,8,[`items`,`detailPath`,`detailText`,`detailError`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):V(l)==`subscription-directory`?(I(),B(So,{key:6,items:V(te),detail:V(ne),detailStructured:V(re),detailLoading:V(oe),onSelect:Be},null,8,[`items`,`detail`,`detailStructured`,`detailLoading`])):V(l)==`apps`&&V(f)?(I(),B(Mr,{key:V(i),data:V(f),value:V(d),raw:V(u),view:V(p)},null,8,[`data`,`value`,`raw`,`view`])):V(l)==`subscription`&&V(Ja)(V(d))?(I(),B(mo,{key:V(i),value:V(d),raw:V(u)},null,8,[`value`,`raw`])):V(l)==`database`&&V(O)?(I(),B(Jo,{key:V(i),database:V(O),wal:V(ce),"app-names":V(k),"subscription-names":V(le)},null,8,[`database`,`wal`,`app-names`,`subscription-names`])):(I(),B(Te,{key:10,description:`该文件不支持预览`}))])])])):(I(),Y(`div`,Ls,[W(we,{show:V(a)},{default:L(()=>[Z(`div`,{name:`drop-zone`,class:`box-border h-300px w-620px flex cursor-pointer flex-col items-center justify-center rounded-12px border-2 border-[#94a3b8] border-dashed bg-white transition-colors duration-200 hover:border-[#18a058]`,onClick:Ye},[W(be,{name:`import`,class:`mb-18px h-48px w-48px`}),Z(`div`,Rs,F(V(a)?`正在下载并解析日志包…`:`拖拽 ZIP 到这里`),1),t[15]||=Z(`div`,{name:`drop-description`,class:`mt-8px text-[#64748b]`},` 或点击选择本地 ZIP 文件 `,-1),t[16]||=Z(`div`,{name:`privacy-tip`,class:`mt-24px text-12px text-[#94a3b8]`},` 文件只在当前浏览器中解析,不会上传;远程日志会在本机缓存最多 7 天 `,-1)])]),_:1},8,[`show`])]))])}}});export{zs as default};
|
|
537
|
-
//# sourceMappingURL=LogPage-
|
|
536
|
+
`)])])])]),rn=wt,an=Q({name:`Tabs`,props:Object.assign(Object.assign({},p.props),{value:[String,Number],defaultValue:[String,Number],trigger:{type:String,default:`click`},type:{type:String,default:`bar`},closable:Boolean,justifyContent:String,size:String,placement:{type:String,default:`top`},tabStyle:[String,Object],tabClass:String,addTabStyle:[String,Object],addTabClass:String,barWidth:Number,paneClass:String,paneStyle:[String,Object],paneWrapperClass:String,paneWrapperStyle:[String,Object],addable:[Boolean,Object],tabsPadding:{type:Number,default:0},animated:Boolean,onBeforeLeave:Function,onAdd:Function,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onClose:[Function,Array],labelSize:String,activeName:[String,Number],onActiveNameChange:[Function,Array]}),slots:Object,setup(e,{slots:t}){var n,r;let{mergedClsPrefixRef:i,inlineThemeDisabled:a,mergedComponentPropsRef:o}=T(e),s=p(`Tabs`,`-tabs`,nn,Kt,e,i),c=K(null),l=K(null),u=K(null),d=K(null),m=K(null),h=K(null),g=K(!0),_=K(!0),v=ue(e,[`labelSize`,`size`]),y=q(()=>{var e,t;return v.value?v.value:((t=(e=o==null?void 0:o.value)==null?void 0:e.Tabs)==null?void 0:t.size)||`medium`}),b=ue(e,[`activeName`,`value`]),x=K(b.value??e.defaultValue??(t.default?(r=(n=f(t.default())[0])==null?void 0:n.props)==null?void 0:r.name:null)),S=Ye(b,x),C={id:0},ee=q(()=>{if(!(!e.justifyContent||e.type===`card`))return{display:`flex`,justifyContent:e.justifyContent}});R(S,()=>{C.id=0,oe(),se()});function D(){var e;let{value:t}=S;return t===null?null:(e=c.value)==null?void 0:e.querySelector(`[data-name="${t}"]`)}function re(t){if(e.type===`card`)return;let{value:n}=l;if(!n)return;let r=n.style.opacity===`0`;if(t){let a=`${i.value}-tabs-bar--disabled`,{barWidth:o,placement:s}=e;if(t.dataset.disabled===`true`?n.classList.add(a):n.classList.remove(a),[`top`,`bottom`].includes(s)){if(ae([`top`,`maxHeight`,`height`]),typeof o==`number`&&t.offsetWidth>=o){let e=Math.floor((t.offsetWidth-o)/2)+t.offsetLeft;n.style.left=`${e}px`,n.style.maxWidth=`${o}px`}else n.style.left=`${t.offsetLeft}px`,n.style.maxWidth=`${t.offsetWidth}px`;n.style.width=`8192px`,r&&(n.style.transition=`none`),n.offsetWidth,r&&(n.style.transition=``,n.style.opacity=`1`)}else{if(ae([`left`,`maxWidth`,`width`]),typeof o==`number`&&t.offsetHeight>=o){let e=Math.floor((t.offsetHeight-o)/2)+t.offsetTop;n.style.top=`${e}px`,n.style.maxHeight=`${o}px`}else n.style.top=`${t.offsetTop}px`,n.style.maxHeight=`${t.offsetHeight}px`;n.style.height=`8192px`,r&&(n.style.transition=`none`),n.offsetHeight,r&&(n.style.transition=``,n.style.opacity=`1`)}}}function ie(){if(e.type===`card`)return;let{value:t}=l;t&&(t.style.opacity=`0`)}function ae(e){let{value:t}=l;if(t)for(let n of e)t.style[n]=``}function oe(){if(e.type===`card`)return;let t=D();t?re(t):ie()}function se(){var e;let t=(e=m.value)==null?void 0:e.$el;if(!t)return;let n=D();if(!n)return;let{scrollLeft:r,offsetWidth:i}=t,{offsetLeft:a,offsetWidth:o}=n;r>a?t.scrollTo({top:0,left:a,behavior:`smooth`}):a+o>r+i&&t.scrollTo({top:0,left:a+o-i,behavior:`smooth`})}let O=K(null),ce=0,k=null;function le(e){let t=O.value;if(t){ce=e.getBoundingClientRect().height;let n=`${ce}px`,r=()=>{t.style.height=n,t.style.maxHeight=n};k?(r(),k(),k=null):k=r}}function j(e){let t=O.value;if(t){let n=e.getBoundingClientRect().height,r=()=>{document.body.offsetHeight,t.style.maxHeight=`${n}px`,t.style.height=`${Math.max(ce,n)}px`};k?(k(),k=null,r()):k=r}}function M(){let t=O.value;if(t){t.style.maxHeight=``,t.style.height=``;let{paneWrapperStyle:n}=e;if(typeof n==`string`)t.style.cssText=n;else if(n){let{maxHeight:e,height:r}=n;e!==void 0&&(t.style.maxHeight=e),r!==void 0&&(t.style.height=r)}}}let N={value:[]},de=K(`next`);function fe(e){let t=S.value,n=`next`;for(let r of N.value){if(r===t)break;if(r===e){n=`prev`;break}}de.value=n,pe(e)}function pe(t){let{onActiveNameChange:n,onUpdateValue:r,"onUpdate:value":i}=e;n&&E(n,t),r&&E(r,t),i&&E(i,t),x.value=t}function he(t){let{onClose:n}=e;n&&E(n,t)}let ge=!0;function _e(){let{value:e}=l;if(!e)return;ge||=!1;let t=`transition-disabled`;e.classList.add(t),oe(),e.classList.remove(t)}let ve=K(null);function ye({transitionDisabled:e}){let t=c.value;if(!t)return;e&&t.classList.add(`transition-disabled`);let n=D();n&&ve.value&&(ve.value.style.width=`${n.offsetWidth}px`,ve.value.style.height=`${n.offsetHeight}px`,ve.value.style.transform=`translateX(${n.offsetLeft-w(getComputedStyle(t).paddingLeft)}px)`,e&&ve.value.offsetWidth),e&&t.classList.remove(`transition-disabled`)}R([S],()=>{e.type===`segment`&&Ce(()=>{ye({transitionDisabled:!1})})}),Oe(()=>{e.type===`segment`&&ye({transitionDisabled:!0})});let P=0;function be(t){var n,r;if(t.contentRect.width===0&&t.contentRect.height===0||P===t.contentRect.width)return;P=t.contentRect.width;let{type:i}=e;if((i===`line`||i===`bar`)&&(ge||(n=e.justifyContent)!=null&&n.startsWith(`space`))&&_e(),i!==`segment`){let{placement:t}=e;I((t===`top`||t===`bottom`?(r=m.value)==null?void 0:r.$el:h.value)||null)}}let xe=rn(be,64);R([()=>e.justifyContent,()=>e.size],()=>{Ce(()=>{let{type:t}=e;(t===`line`||t===`bar`)&&_e()})});let Se=K(!1);function F(t){var n;let{target:r,contentRect:{width:i,height:a}}=t,o=r.parentElement.parentElement.offsetWidth,s=r.parentElement.parentElement.offsetHeight,{placement:c}=e;if(!Se.value)c===`top`||c===`bottom`?o<i&&(Se.value=!0):s<a&&(Se.value=!0);else{let{value:e}=d;if(!e)return;c===`top`||c===`bottom`?o-i>e.$el.offsetWidth&&(Se.value=!1):s-a>e.$el.offsetHeight&&(Se.value=!1)}I(((n=m.value)==null?void 0:n.$el)||null)}let we=rn(F,64);function Te(){let{onAdd:t}=e;t&&t(),Ce(()=>{let e=D(),{value:t}=m;!e||!t||t.scrollTo({left:e.offsetLeft,top:0,behavior:`smooth`})})}function I(t){if(!t)return;let{placement:n}=e;if(n===`top`||n===`bottom`){let{scrollLeft:e,scrollWidth:n,offsetWidth:r}=t;g.value=e<=0,_.value=e+r>=n}else{let{scrollTop:e,scrollHeight:n,offsetHeight:r}=t;g.value=e<=0,_.value=e+r>=n}}let L=rn(e=>{I(e.target)},64);Ee(Qt,{triggerRef:J(e,`trigger`),tabStyleRef:J(e,`tabStyle`),tabClassRef:J(e,`tabClass`),addTabStyleRef:J(e,`addTabStyle`),addTabClassRef:J(e,`addTabClass`),paneClassRef:J(e,`paneClass`),paneStyleRef:J(e,`paneStyle`),mergedClsPrefixRef:i,typeRef:J(e,`type`),closableRef:J(e,`closable`),valueRef:S,tabChangeIdRef:C,onBeforeLeaveRef:J(e,`onBeforeLeave`),activateTab:fe,handleClose:he,handleAdd:Te}),me(()=>{oe(),se()}),Ie(()=>{let{value:e}=u;if(!e)return;let{value:t}=i,n=`${t}-tabs-nav-scroll-wrapper--shadow-start`,r=`${t}-tabs-nav-scroll-wrapper--shadow-end`;g.value?e.classList.remove(n):e.classList.add(n),_.value?e.classList.remove(r):e.classList.add(r)});let De={syncBarPosition:()=>{oe()}},ke=()=>{ye({transitionDisabled:!0})},Ae=q(()=>{let{value:t}=y,{type:n}=e,r=`${t}${{card:`Card`,bar:`Bar`,line:`Line`,segment:`Segment`}[n]}`,{self:{barColor:i,closeIconColor:a,closeIconColorHover:o,closeIconColorPressed:c,tabColor:l,tabBorderColor:u,paneTextColor:d,tabFontWeight:f,tabBorderRadius:p,tabFontWeightActive:m,colorSegment:h,fontWeightStrong:g,tabColorSegment:_,closeSize:v,closeIconSize:b,closeColorHover:x,closeColorPressed:S,closeBorderRadius:C,[A(`panePadding`,t)]:w,[A(`tabPadding`,r)]:ee,[A(`tabPaddingVertical`,r)]:T,[A(`tabGap`,r)]:E,[A(`tabGap`,`${r}Vertical`)]:D,[A(`tabTextColor`,n)]:ne,[A(`tabTextColorActive`,n)]:re,[A(`tabTextColorHover`,n)]:ie,[A(`tabTextColorDisabled`,n)]:ae,[A(`tabFontSize`,t)]:oe},common:{cubicBezierEaseInOut:se}}=s.value;return{"--n-bezier":se,"--n-color-segment":h,"--n-bar-color":i,"--n-tab-font-size":oe,"--n-tab-text-color":ne,"--n-tab-text-color-active":re,"--n-tab-text-color-disabled":ae,"--n-tab-text-color-hover":ie,"--n-pane-text-color":d,"--n-tab-border-color":u,"--n-tab-border-radius":p,"--n-close-size":v,"--n-close-icon-size":b,"--n-close-color-hover":x,"--n-close-color-pressed":S,"--n-close-border-radius":C,"--n-close-icon-color":a,"--n-close-icon-color-hover":o,"--n-close-icon-color-pressed":c,"--n-tab-color":l,"--n-tab-font-weight":f,"--n-tab-font-weight-active":m,"--n-tab-padding":ee,"--n-tab-padding-vertical":T,"--n-tab-gap":E,"--n-tab-gap-vertical":D,"--n-pane-padding-left":te(w,`left`),"--n-pane-padding-right":te(w,`right`),"--n-pane-padding-top":te(w,`top`),"--n-pane-padding-bottom":te(w,`bottom`),"--n-font-weight-strong":g,"--n-tab-color-segment":_}}),z=a?ne(`tabs`,q(()=>`${y.value[0]}${e.type[0]}`),Ae,e):void 0;return Object.assign({mergedClsPrefix:i,mergedValue:S,renderedNames:new Set,segmentCapsuleElRef:ve,tabsPaneWrapperRef:O,tabsElRef:c,barElRef:l,addTabInstRef:d,xScrollInstRef:m,scrollWrapperElRef:u,addTabFixed:Se,tabWrapperStyle:ee,handleNavResize:xe,mergedSize:y,handleScroll:L,handleTabsResize:we,cssVars:a?void 0:Ae,themeClass:z==null?void 0:z.themeClass,animationDirection:de,renderNameListRef:N,yScrollElRef:h,handleSegmentResize:ke,onAnimationBeforeLeave:le,onAnimationEnter:j,onAnimationAfterEnter:M,onRender:z==null?void 0:z.onRender},De)},render(){let{mergedClsPrefix:e,type:t,placement:n,addTabFixed:i,addable:a,mergedSize:o,renderNameListRef:s,onRender:c,paneWrapperClass:l,paneWrapperStyle:u,$slots:{default:d,prefix:p,suffix:h}}=this;c==null||c();let g=d?f(d()).filter(e=>e.type.__TAB_PANE__===!0):[],_=d?f(d()).filter(e=>e.type.__TAB__===!0):[],v=!_.length,y=t===`card`,b=t===`segment`,x=!y&&!b&&this.justifyContent;s.value=[];let S=()=>{let t=$(`div`,{style:this.tabWrapperStyle,class:`${e}-tabs-wrapper`},x?null:$(`div`,{class:`${e}-tabs-scroll-padding`,style:n===`top`||n===`bottom`?{width:`${this.tabsPadding}px`}:{height:`${this.tabsPadding}px`}}),v?g.map((e,t)=>(s.value.push(e.props.name),ln($(tn,Object.assign({},e.props,{internalCreatedByPane:!0,internalLeftPadded:t!==0&&(!x||x===`center`||x===`start`||x===`end`)}),e.children?{default:e.children.tab}:void 0)))):_.map((e,t)=>(s.value.push(e.props.name),ln(t!==0&&!x?cn(e):e))),!i&&a&&y?sn(a,(v?g.length:_.length)!==0):null,x?null:$(`div`,{class:`${e}-tabs-scroll-padding`,style:{width:`${this.tabsPadding}px`}}));return $(`div`,{ref:`tabsElRef`,class:`${e}-tabs-nav-scroll-content`},y&&a?$(m,{onResize:this.handleTabsResize},{default:()=>t}):t,y?$(`div`,{class:`${e}-tabs-pad`}):null,y?null:$(`div`,{ref:`barElRef`,class:`${e}-tabs-bar`}))},C=b?`top`:n;return $(`div`,{class:[`${e}-tabs`,this.themeClass,`${e}-tabs--${t}-type`,`${e}-tabs--${o}-size`,x&&`${e}-tabs--flex`,`${e}-tabs--${C}`],style:this.cssVars},$(`div`,{class:[`${e}-tabs-nav--${t}-type`,`${e}-tabs-nav--${C}`,`${e}-tabs-nav`]},r(p,t=>t&&$(`div`,{class:`${e}-tabs-nav__prefix`},t)),b?$(m,{onResize:this.handleSegmentResize},{default:()=>$(`div`,{class:`${e}-tabs-rail`,ref:`tabsElRef`},$(`div`,{class:`${e}-tabs-capsule`,ref:`segmentCapsuleElRef`},$(`div`,{class:`${e}-tabs-wrapper`},$(`div`,{class:`${e}-tabs-tab`}))),v?g.map((e,t)=>(s.value.push(e.props.name),$(tn,Object.assign({},e.props,{internalCreatedByPane:!0,internalLeftPadded:t!==0}),e.children?{default:e.children.tab}:void 0))):_.map((e,t)=>(s.value.push(e.props.name),t===0?e:cn(e))))}):$(m,{onResize:this.handleNavResize},{default:()=>$(`div`,{class:`${e}-tabs-nav-scroll-wrapper`,ref:`scrollWrapperElRef`},[`top`,`bottom`].includes(C)?$(xt,{ref:`xScrollInstRef`,onScroll:this.handleScroll},{default:S}):$(`div`,{class:`${e}-tabs-nav-y-scroll`,onScroll:this.handleScroll,ref:`yScrollElRef`},S()))}),i&&a&&y?sn(a,!0):null,r(h,t=>t&&$(`div`,{class:`${e}-tabs-nav__suffix`},t))),v&&(this.animated&&(C===`top`||C===`bottom`)?$(`div`,{ref:`tabsPaneWrapperRef`,style:u,class:[`${e}-tabs-pane-wrapper`,l]},on(g,this.mergedValue,this.renderedNames,this.onAnimationBeforeLeave,this.onAnimationEnter,this.onAnimationAfterEnter,this.animationDirection)):on(g,this.mergedValue,this.renderedNames)))}});function on(e,t,n,r,i,a,o){let s=[];return e.forEach(e=>{let{name:r,displayDirective:i,"display-directive":a}=e.props,o=e=>i===e||a===e,c=t===r;if(e.key!==void 0&&(e.key=r),c||o(`show`)||o(`show:lazy`)&&n.has(r)){n.has(r)||n.add(r);let t=!o(`if`);s.push(t?Me(e,[[b,c]]):e)}}),o?$(oe,{name:`${o}-transition`,onBeforeLeave:r,onEnter:i,onAfterEnter:a},{default:()=>s}):s}function sn(e,t){return $(tn,{ref:`addTabInstRef`,key:`__addable`,name:`__addable`,internalCreatedByPane:!0,internalAddable:!0,internalLeftPadded:t,disabled:typeof e==`object`&&e.disabled})}function cn(e){let t=Ne(e);return t.props?t.props.internalLeftPadded=!0:t.props={internalLeftPadded:!0},t}function ln(e){return Array.isArray(e.dynamicProps)?e.dynamicProps.includes(`internalLeftPadded`)||e.dynamicProps.push(`internalLeftPadded`):e.dynamicProps=[`internalLeftPadded`],e}var un=Q({name:`VirtualList`,props:{scrollbarProps:Object,items:{type:Array,default:()=>[]},itemSize:{type:Number,required:!0},itemResizable:Boolean,itemsStyle:[String,Object],visibleItemsTag:{type:[String,Object],default:`div`},visibleItemsProps:Object,ignoreItemResize:Boolean,onScroll:Function,onWheel:Function,onResize:Function,defaultScrollKey:[Number,String],defaultScrollIndex:Number,keyField:{type:String,default:`key`},paddingTop:{type:[Number,String],default:0},paddingBottom:{type:[Number,String],default:0}},setup(e){let t=K(null),n=K(null);function r(){let{value:e}=t;e&&e.sync()}function i(t){var n;r(),(n=e.onScroll)==null||n.call(e,t)}function a(t){var n;r(),(n=e.onResize)==null||n.call(e,t)}function o(t){var n;(n=e.onWheel)==null||n.call(e,t)}function s(e,t){var r,i;typeof e==`number`?(r=n.value)==null||r.scrollTo(e,t??0):(i=n.value)==null||i.scrollTo(e)}function c(){var e;return(e=n.value)==null?void 0:e.listElRef}function l(){var e;return(e=n.value)==null?void 0:e.itemsElRef}return{scrollTo:s,scrollbarInstRef:t,virtualListInstRef:n,getScrollContainer:c,getScrollContent:l,handleScroll:i,handleResize:a,handleWheel:o}},render(){return $(h,Object.assign({},this.scrollbarProps,{ref:`scrollbarInstRef`,container:this.getScrollContainer,content:this.getScrollContent}),{default:()=>$(ye,{ref:`virtualListInstRef`,showScrollbar:!1,items:this.items,itemSize:this.itemSize,itemResizable:this.itemResizable,itemsStyle:this.itemsStyle,visibleItemsTag:this.visibleItemsTag,visibleItemsProps:this.visibleItemsProps,ignoreItemResize:this.ignoreItemResize,keyField:this.keyField,defaultScrollKey:this.defaultScrollKey,defaultScrollIndex:this.defaultScrollIndex,paddingTop:this.paddingTop,paddingBottom:this.paddingBottom,onScroll:this.handleScroll,onResize:this.handleResize,onWheel:this.handleWheel},{default:({item:e,index:t})=>{var n,r;return(r=(n=this.$slots).default)==null?void 0:r.call(n,{item:e,index:t})}})})}}),dn=1e4,fn=e=>{if(typeof e!=`object`||!e)return 0;if(Array.isArray(e))return e.length<=1e4?e.length:void 0;let t=0;for(let n in e)if(Object.hasOwn(e,n)&&(t++,t>1e4))return;return t},pn=e=>typeof e==`object`&&!!e&&fn(e)==null,mn=e=>{if(typeof e!=`object`||!e)return!1;let t=[{value:e,depth:0,pathSize:0}],n=new WeakSet,r=0;for(;t.length;){let e=t.pop();if(!(!e||n.has(e.value))){if(e.depth>=128)return!0;if(n.add(e.value),Array.isArray(e.value)){if(r+=e.value.length,r>1e5)return!0;for(let n=0;n<e.value.length;n++){let r=e.value[n],i=e.pathSize+String(n).length+1;if(i>4096)return!0;typeof r==`object`&&r&&t.push({value:r,depth:e.depth+1,pathSize:i})}continue}for(let n in e.value){if(!Object.hasOwn(e.value,n))continue;if(n.length>256||(r++,r>1e5))return!0;let i=e.pathSize+n.length+1;if(i>4096)return!0;let a=e.value[n];typeof a==`object`&&a&&t.push({value:a,depth:e.depth+1,pathSize:i})}}}return!1},hn=e=>e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`,gn=e=>hn(e)?!0:Array.isArray(e)?e.every(hn):typeof e==`object`&&!!e&&Object.keys(e).length==0,_n=e=>{if(typeof e!=`object`||!e||pn(e))return;let t=Object.entries(e);if(!(t.length==0||!t.every(([,e])=>gn(e))))return t.map(([e,t])=>({key:e,value:t}))},vn=e=>JSON.stringify(e)??String(e),yn=(e,t)=>{if(mn(e))return t;try{return JSON.stringify(e,null,2)??t}catch{return t}},bn=()=>({matchCase:!1,wholeWord:!1,useRegex:!1}),xn=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Sn=(e,t,n=!0)=>{let r=e.trim();if(!r)return;let i=t.useRegex?r:xn(r);if(t.wholeWord){let e=`[\\p{L}\\p{N}_]`;i=`(?<!${e})(?:${i})(?!${e})`}try{return new RegExp(i,`${n?`g`:``}${t.matchCase?``:`i`}u`)}catch{return}},Cn=(e,t)=>!e.trim()||!t.useRegex||!!Sn(e,t),wn=(e,t,n)=>{let r=Sn(t,n);if(!r)return[];let i=[],a;for(;a=r.exec(e);)a[0].length?i.push({start:a.index,end:a.index+a[0].length}):r.lastIndex++;return i},Tn=(e,t,n)=>{let r=Sn(t,n);if(!r)return 0;let i=0,a;for(;a=r.exec(e);)a[0].length?i++:r.lastIndex++;return i},En=(e,t,n)=>e.split(/\r\n|\n|\r/).reduce((e,r)=>e+Tn(r,t,n),0),Dn=(e,t,n)=>{let r=Sn(t,n,!1);return(r==null?void 0:r.test(e))||!1},On=/\b([A-Za-z\d]+\.kt):(\d+)\b/g,kn=/^[A-Za-z\d_.-]+$/,An=/^[a-f\d]{7,40}$/i,jn=1024,Mn=64,Nn=255,Pn=e=>/^gkd(?:-[^/]+)?\.json$/i.test(e),Fn=e=>{try{let t=JSON.parse(Ln(e));if(!In(t)||typeof t.buildKey!=`string`)return;let n=t.buildKey.trim();return!n||n.length>256?void 0:n}catch{}},In=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ln=e=>e.replace(/^\uFEFF/,``),Rn=(e,t)=>{if(typeof e==`string`)try{var n;let r=new URL(e);if(r.protocol!=`https:`||r.hostname.toLowerCase()!=`github.com`||r.port||r.username||r.password)return;let i=r.pathname.split(`/`).filter(Boolean).map(decodeURIComponent);if(i.length!=4||((n=i[2])==null?void 0:n.toLowerCase())!=`commit`)return;let[a,o,,s]=i;return!a||!o||!s||!kn.test(a)||!kn.test(o)||!An.test(s)||t!=null&&(typeof t!=`string`||t.toLowerCase()!=s.toLowerCase())?void 0:{repositoryUrl:`https://github.com/${a}/${o}`,commitId:s,commitUrl:`https://github.com/${a}/${o}/commit/${s}`}}catch{}},zn=e=>{try{let t=JSON.parse(Ln(e));return In(t)?Rn(t.commitUrl,t.commitId):void 0}catch{}},Bn=e=>{try{let t=JSON.parse(Ln(e));if(!In(t))return;let n=Rn(t.commitUrl,t.commitId);return!n||typeof t.versionName!=`string`||!t.versionName.trim()||typeof t.versionCode!=`number`||!Number.isSafeInteger(t.versionCode)?void 0:{versionName:t.versionName.trim(),versionCode:t.versionCode,commitUrl:n.commitUrl}}catch{}},Vn=e=>{let t=e.trim().replaceAll(`\\`,`/`);if(!t||t.length>jn||t.startsWith(`/`)||/^[A-Za-z]:\//.test(t)||!t.toLowerCase().endsWith(`.kt`))return;let n=t.split(`/`);if(!(n.length>Mn||n.some(e=>!e||e==`.`||e==`..`||e.length>Nn)))return t},Hn=e=>{let t=new Map,n=Ln(e).split(/\r\n|\n|\r/);for(let e of n){let n=Vn(e);if(!n)continue;let r=n.split(`/`).at(-1);if(!r)continue;let i=t.get(r)||[];i.includes(n)||i.push(n),t.set(r,i)}for(let e of t.values())e.sort((e,t)=>e.localeCompare(t,`en`));return t},Un=(e,t)=>{if(t==null)return;let n=zn(e);if(!n)return;let r=Hn(t);if(r.size!=0)return{...n,pathsByFileName:r}},Wn=(e,t,n)=>{let r=t.split(`/`).map(encodeURIComponent).join(`/`);return`${e.repositoryUrl}/blob/${e.commitId}/${r}#L${n}`},Gn=e=>{let t=e.map(e=>e.split(`/`));return t.map((n,r)=>{for(let e=1;e<=n.length;e++){let i=n.slice(-e).join(`/`);if(t.every((t,n)=>n==r||t.slice(-e).join(`/`)!=i))return i}return e[r]||``})},Kn=(e,t)=>{if(!t||!e.includes(`.kt:`))return[{text:e}];let n=[],r=0;On.lastIndex=0;let i;for(;i=On.exec(e);){let a=i[1],o=Number(i[2]),s=a?t.pathsByFileName.get(a):void 0;if(!(s!=null&&s.length)||!Number.isSafeInteger(o)||o<1)continue;i.index>r&&n.push({text:e.slice(r,i.index)});let c=Gn(s);n.push({text:i[0],sourceTargets:s.map((e,n)=>({path:e,displayPath:c[n]||e,url:Wn(t,e,o)}))}),r=i.index+i[0].length}return r<e.length&&n.push({text:e.slice(r)}),n.length?n:[{text:e}]},qn=e=>e.split(/\r\n|\n|\r/).map((e,t)=>({key:t,number:t+1,text:e})),Jn=(e,t,n,r)=>{if(!e)return[{text:` `,match:!1,active:!1}];let i=new Set([0,e.length]),a=t+e.length;n.forEach(n=>{n.end<=t||n.start>=a||(i.add(Math.max(n.start-t,0)),i.add(Math.min(n.end-t,e.length)))});let o=[...i].toSorted((e,t)=>e-t),s=[];for(let i=0;i<o.length-1;i++){let a=o[i],c=o[i+1];if(a==null||c==null||a==c)continue;let l=t+a,u=n.findIndex(e=>e.start<=l&&e.end>l);s.push({text:e.slice(a,c),match:u>=0,active:u>=0&&u==r})}return s},[Yn,Xn]=C(e=>{let t=X(``),n=X(-1),r=Fe(bn()),i=X(!1),a=X(),o=X(),s=X(0),c=X(600),l=X(),u=X(),d=q(()=>qn(e.value.value)),f=q(()=>t.value.trim()),p=q(()=>En(e.value.value,t.value,r)),m=q(()=>p.value?Math.min(Math.max(n.value,0),p.value-1)+1:0),h=q(()=>!Cn(t.value,r)),g=q(()=>Math.max(Math.floor(s.value/20)-8,0)),_=q(()=>Math.min(Math.ceil((s.value+c.value)/20)+8,d.value.length)),v=q(()=>d.value.slice(g.value,_.value)),y=q(()=>d.value.length*20);se(o,e=>{var t;let n=(t=e[0])==null?void 0:t.contentRect.height;n&&(c.value=n)});let b=e=>{!f.value||!p.value||(n.value=((n.value>=0?n.value:0)+e+p.value)%p.value)},x=e=>{b(e.shiftKey?-1:1)},S=()=>{var e;s.value=((e=o.value)==null?void 0:e.scrollTop)||0},C=e=>{e instanceof HTMLElement&&(u.value=e)},w=t=>{var n;let i=f.value?wn(t.text,f.value,r):[],a=((n=l.value)==null?void 0:n.lineKey)==t.key?l.value.rangeIndex:void 0,o=Kn(t.text,e.sourceLinkContext.value),s=0;return o.map(e=>{let t={fragments:Jn(e.text,s,i,a),sourceTargets:e.sourceTargets};return s+=e.text.length,t})},ee=async()=>{await navigator.clipboard.writeText(e.value.value),Ke.success(`已复制当前文件内容`)};return R(e.documentKey,()=>{t.value=``,n.value=-1}),R([e.documentKey,i],async()=>{var e,t;s.value=0,await Ce(),(e=o.value)==null||e.scrollTo({top:0}),(t=a.value)==null||t.scrollTo({index:0})}),R([t,()=>r.matchCase,()=>r.wholeWord,()=>r.useRegex,p],([e,t,r,i,a],o)=>{if(!e.trim()||!a){n.value=-1;return}(!o||e!=o[0]||t!=o[1]||r!=o[2]||i!=o[3]||n.value<0||n.value>=a)&&(n.value=0)},{immediate:!0}),R([f,()=>r.matchCase,()=>r.wholeWord,()=>r.useRegex,n],async([e,,,,t])=>{var n,i;if(l.value=void 0,u.value=void 0,!e||t<0)return;let c=t,f=-1;for(let t=0;t<d.value.length;t++){let n=d.value[t];if(!n)continue;let i=wn(n.text,e,r);if(c<i.length){f=t,l.value={lineKey:n.key,rangeIndex:c};break}c-=i.length}f<0||(s.value=f*20,await Ce(),(n=o.value)==null||n.scrollTo({top:s.value}),(i=a.value)==null||i.scrollTo({index:f}),await Ce(),requestAnimationFrame(()=>{var e;(e=u.value)==null||e.scrollIntoView({block:`nearest`,inline:`nearest`})}))},{flush:`post`}),{...e,query:t,resultIndex:n,searchOptions:r,wrap:i,virtualList:a,scrollContainer:o,lineHeight:20,lines:d,visibleStart:g,visibleLines:v,virtualHeight:y,normalizedQuery:f,matchCount:p,displayedResultIndex:m,invalidRegex:h,selectRelativeResult:b,handleSearchEnter:x,handleScroll:S,setActiveMatchElement:C,getLineTokens:w,copyText:ee}}),Zn=Yn,Qn=()=>{let e=Xn();if(!e)throw Error(`TextViewer 子组件必须在 TextViewer 内部使用`);return e},$n=Q({__name:`CopyButton`,setup(e){let{copyable:t,copyText:n}=Qn();return(e,r)=>{let i=Re(`SvgIcon`),a=y;return V(t)?(I(),B(a,{key:0,quaternary:``,circle:``,size:`small`,class:`absolute right-16px top-8px z-3 border border-[#e2e8f0] bg-white/92 shadow-[0_1px_3px_rgb(15_23_42_/_12%)] backdrop-blur-4px`,title:`复制当前文件内容`,"aria-label":`复制当前文件内容`,onClick:V(n)},{icon:L(()=>[W(i,{name:`copy`})]),_:1},8,[`onClick`])):U(``,!0)}}}),er={name:`text-viewer-search`,class:`w-520px max-w-full min-w-0 flex flex-[0_1_520px] items-center gap-6px`},tr=[`title`],nr=[`disabled`],rr=[`disabled`],ir={name:`text-viewer-search-options`,class:`flex items-center gap-2px`},ar=[`aria-pressed`],or=[`aria-pressed`],sr=[`aria-pressed`],cr=Q({__name:`SearchBar`,setup(e){let{query:t,searchOptions:n,searchPlaceholder:r,normalizedQuery:i,matchCount:a,displayedResultIndex:o,invalidRegex:s,selectRelativeResult:c,handleSearchEnter:l}=Qn();return(e,u)=>{let d=Re(`SvgIcon`),f=Xe;return I(),Y(`div`,er,[Z(`div`,{name:`text-viewer-navigation`,class:z([`w-116px min-w-116px flex items-center justify-between gap-2px`,V(i)?`visible`:`invisible`])},[Z(`span`,{class:`w-62px overflow-hidden text-right text-ellipsis whitespace-nowrap text-12px text-[#64748b]`,title:`第 ${V(o).toLocaleString()} 处,共 ${V(a).toLocaleString()} 处`},F(V(o).toLocaleString())+` / `+F(V(a).toLocaleString()),9,tr),Z(`button`,{type:`button`,class:`inline-grid h-22px w-24px cursor-pointer place-items-center rounded-3px border-0 bg-transparent p-0 leading-22px text-[#475569] enabled:hover:bg-[#e2e8f0] disabled:cursor-default disabled:opacity-40 focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,disabled:!V(a),"aria-label":`上一个匹配项`,title:`上一个匹配项 (Shift+Enter)`,onMousedown:u[0]||=O(()=>{},[`prevent`]),onClick:u[1]||=e=>V(c)(-1)},[W(d,{name:`arrow`,class:`h-16px w-16px rotate-180`})],40,nr),Z(`button`,{type:`button`,class:`inline-grid h-22px w-24px cursor-pointer place-items-center rounded-3px border-0 bg-transparent p-0 leading-22px text-[#475569] enabled:hover:bg-[#e2e8f0] disabled:cursor-default disabled:opacity-40 focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,disabled:!V(a),"aria-label":`下一个匹配项`,title:`下一个匹配项 (Enter)`,onMousedown:u[2]||=O(()=>{},[`prevent`]),onClick:u[3]||=e=>V(c)(1)},[W(d,{name:`arrow`,class:`h-16px w-16px`})],40,rr)],2),W(f,{value:V(t),"onUpdate:value":u[10]||=e=>P(t)?t.value=e:null,clearable:``,size:`small`,status:V(s)?`error`:void 0,placeholder:V(r),class:`min-w-0 flex-1`,onKeydown:ae(O(V(l),[`prevent`]),[`enter`])},{suffix:L(()=>[Z(`div`,ir,[Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,V(n).matchCase?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":V(n).matchCase,"aria-label":`区分大小写`,title:`区分大小写`,onMousedown:u[4]||=O(()=>{},[`prevent`]),onClick:u[5]||=e=>V(n).matchCase=!V(n).matchCase},` Aa `,42,ar),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px underline [text-underline-offset:2px] focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,V(n).wholeWord?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":V(n).wholeWord,"aria-label":`全词匹配`,title:`全词匹配`,onMousedown:u[6]||=O(()=>{},[`prevent`]),onClick:u[7]||=e=>V(n).wholeWord=!V(n).wholeWord},` ab `,42,or),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,V(n).useRegex?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":V(n).useRegex,"aria-label":`使用正则表达式`,title:`使用正则表达式`,onMousedown:u[8]||=O(()=>{},[`prevent`]),onClick:u[9]||=e=>V(n).useRegex=!V(n).useRegex},` .* `,42,sr)])]),_:1},8,[`value`,`status`,`placeholder`,`onKeydown`])])}}}),lr={class:`sticky left-0 z-1 box-border select-none border-r border-[#e5e7eb] bg-[#f8fafc] px-10px text-right text-[#94a3b8]`},ur=[`href`],dr=[`onKeydown`],fr={class:`max-w-640px flex flex-col gap-4px`},pr=[`href`,`title`],mr=Q({__name:`TextLine`,props:{line:{}},setup(e){let t=e,{wrap:n,getLineTokens:r,setActiveMatchElement:i}=Qn(),a=q(()=>r(t.line)),o=e=>W(Pe,null,[e.fragments.map((e,t)=>e.match?W(`span`,{key:t,ref:e.active?i:void 0,"data-name":`text-viewer-match`,"data-active":e.active?``:void 0,class:[`rounded-2px text-inherit`,e.active?`bg-[#fb923c] text-[#7c2d12]`:`bg-[#fde68a]`]},[e.text]):e.text)]),s=e=>{e.currentTarget instanceof HTMLElement&&e.currentTarget.click()};return(t,r)=>{let i=fe;return I(),Y(`div`,{name:`text-viewer-line`,class:z([`grid min-h-20px min-w-full leading-20px`,V(n)?`w-full grid-cols-[64px_minmax(0,1fr)]`:`w-max grid-cols-[64px_max-content]`])},[Z(`span`,lr,F(e.line.number),1),Z(`span`,{class:z([`box-border min-w-0 px-10px [font:inherit] [tab-size:2]`,V(n)?`whitespace-pre-wrap [overflow-wrap:anywhere]`:`whitespace-pre`])},[(I(!0),Y(Pe,null,De(V(a),(e,t)=>{var n,r;return I(),Y(Pe,{key:t},[((n=e.sourceTargets)==null?void 0:n.length)==1?(I(),Y(`a`,{key:0,href:(r=e.sourceTargets[0])==null?void 0:r.url,target:`_blank`,rel:`noopener noreferrer`,class:`text-[#2563eb] underline decoration-transparent underline-offset-2 hover:decoration-current`},[W(o,{fragments:e.fragments},null,8,[`fragments`])],8,ur)):e.sourceTargets&&e.sourceTargets.length>1?(I(),B(i,{key:1,trigger:`click`,placement:`bottom-start`},{trigger:L(()=>[Z(`span`,{role:`button`,tabindex:`0`,class:`cursor-pointer text-[#2563eb] underline decoration-dashed underline-offset-2`,onKeydown:[ae(O(s,[`prevent`]),[`enter`]),ae(O(s,[`prevent`]),[`space`])]},[W(o,{fragments:e.fragments},null,8,[`fragments`])],40,dr)]),default:L(()=>[Z(`div`,fr,[(I(!0),Y(Pe,null,De(e.sourceTargets,e=>(I(),Y(`a`,{key:e.path,href:e.url,title:e.path,target:`_blank`,rel:`noopener noreferrer`,class:`break-all text-[#2563eb] hover:underline`},F(e.displayPath),9,pr))),128))])]),_:2},1024)):(I(),B(o,{key:2,fragments:e.fragments},null,8,[`fragments`]))],64)}),128))],2)],2)}}}),hr={name:`text-viewer-viewport`,class:`h-full min-h-0 min-w-0`},gr=Q({__name:`Viewport`,setup(e){let{wrap:t,virtualList:n,scrollContainer:r,lineHeight:i,lines:a,visibleStart:o,visibleLines:s,virtualHeight:c,handleScroll:l}=Qn();return(e,u)=>{let d=un;return I(),Y(`div`,hr,[V(t)?(I(),B(d,{key:0,ref_key:`virtualList`,ref:n,items:V(a),"item-size":V(i),"item-resizable":``,keyField:`key`,class:`h-full min-h-0 min-w-0 rounded-4px border border-[#e5e7eb] bg-white font-mono text-13px leading-20px`},{default:L(({item:e})=>[W(mr,{line:e},null,8,[`line`])]),_:1},8,[`items`,`item-size`])):(I(),Y(`div`,{key:1,ref_key:`scrollContainer`,ref:r,class:`h-full min-h-0 min-w-0 overflow-auto rounded-4px border border-[#e5e7eb] bg-white font-mono text-13px leading-20px`,onScroll:u[0]||=(...e)=>V(l)&&V(l)(...e)},[Z(`div`,{name:`text-viewer-spacer`,class:`relative min-w-full`,style:Te({height:`${V(c)}px`})},[Z(`div`,{name:`text-viewer-visible`,class:`absolute left-0 top-0 min-w-full w-max`,style:Te({transform:`translateY(${V(o)*V(i)}px)`})},[(I(!0),Y(Pe,null,De(V(s),e=>(I(),B(mr,{key:e.key,line:e},null,8,[`line`]))),128))],4)],4)],544))])}}}),_r={name:`text-viewer`,class:`min-h-0 min-w-0 flex flex-1 flex-col gap-8px`},vr={name:`text-viewer-toolbar`,class:`min-h-28px min-w-0 flex items-center gap-10px`},yr={name:`text-viewer-content`,class:`relative min-h-0 min-w-0 flex-1`},br=Q({__name:`TextViewer`,props:{value:{},documentKey:{},searchPlaceholder:{default:`搜索`},allowWrap:{type:Boolean,default:!1},copyable:{type:Boolean,default:!1},sourceLinkContext:{}},setup(e){let t=e,{allowWrap:n,wrap:r}=Zn({value:J(t,`value`),documentKey:J(t,`documentKey`),searchPlaceholder:J(t,`searchPlaceholder`),allowWrap:J(t,`allowWrap`),copyable:J(t,`copyable`),sourceLinkContext:J(t,`sourceLinkContext`)});return(e,t)=>{let i=ve;return I(),Y(`div`,_r,[Z(`div`,vr,[ke(e.$slots,`toolbar-start`),t[2]||=Z(`div`,{name:`text-viewer-toolbar-spacer`,class:`min-w-0 flex-1`},null,-1),W(cr),V(n)?(I(),B(i,{key:0,checked:V(r),"onUpdate:checked":t[0]||=e=>P(r)?r.value=e:null},{default:L(()=>[...t[1]||=[G(` 自动换行 `,-1)]]),_:1},8,[`checked`])):U(``,!0)]),Z(`div`,yr,[W(gr),W($n)])])}}}),xr={name:`raw-json-preview`,class:`h-full`},Sr=Q({__name:`RawJsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=q(()=>yn(t.value,t.raw));return(e,t)=>(I(),Y(`div`,xr,[W(br,{value:V(n),"search-placeholder":`搜索原始 JSON`,class:`h-full`},null,8,[`value`])]))}}),Cr={name:`text-search`,class:`w-full min-w-0 flex items-center gap-6px`},wr={name:`text-search-options`,class:`flex items-center gap-2px`},Tr=[`aria-pressed`],Er=[`aria-pressed`],Dr=[`aria-pressed`],Or=Q({__name:`TextSearchInput`,props:Ae({placeholder:{default:`搜索`},size:{default:`medium`}},{modelValue:{required:!0},modelModifiers:{},matchCase:{type:Boolean,default:!1},matchCaseModifiers:{},wholeWord:{type:Boolean,default:!1},wholeWordModifiers:{},useRegex:{type:Boolean,default:!1},useRegexModifiers:{}}),emits:[`update:modelValue`,`update:matchCase`,`update:wholeWord`,`update:useRegex`],setup(e){let t=e,n=je(e,`modelValue`),r=je(e,`matchCase`),i=je(e,`wholeWord`),a=je(e,`useRegex`),o=q(()=>!Cn(n.value,{matchCase:r.value,wholeWord:i.value,useRegex:a.value}));return(e,s)=>{let c=Xe;return I(),Y(`div`,Cr,[W(c,{value:n.value,"onUpdate:value":s[6]||=e=>n.value=e,clearable:``,size:t.size,status:V(o)?`error`:void 0,placeholder:t.placeholder,class:`min-w-0 flex-1`},{suffix:L(()=>[Z(`div`,wr,[Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,r.value?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":r.value,"aria-label":`区分大小写`,title:`区分大小写`,onMousedown:s[0]||=O(()=>{},[`prevent`]),onClick:s[1]||=e=>r.value=!r.value},` Aa `,42,Tr),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px underline [text-underline-offset:2px] focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,i.value?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":i.value,"aria-label":`全词匹配`,title:`全词匹配`,onMousedown:s[2]||=O(()=>{},[`prevent`]),onClick:s[3]||=e=>i.value=!i.value},` ab `,42,Er),Z(`button`,{type:`button`,class:z([`inline-grid h-22px w-26px cursor-pointer place-items-center rounded-3px border-0 p-0 font-mono text-12px leading-22px focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,a.value?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":a.value,"aria-label":`使用正则表达式`,title:`使用正则表达式`,onMousedown:s[4]||=O(()=>{},[`prevent`]),onClick:s[5]||=e=>a.value=!a.value},` .* `,42,Dr)])]),_:1},8,[`value`,`size`,`status`,`placeholder`])])}}}),kr={name:`apps-preview`,class:`h-full min-h-0 flex flex-col`},Ar={key:0,name:`user-apps`,class:`h-full min-h-0 min-w-0 flex flex-col gap-10px`},jr={name:`user-apps-header`,class:`min-w-0 flex items-center gap-16px`},Mr=Q({__name:`AppsPreview`,props:{data:{},value:{},raw:{},view:{}},setup(e){var t;let n=e,r=X((t=n.data.users[0])==null?void 0:t.id);R(()=>n.data,e=>{var t;return r.value=(t=e.users[0])==null?void 0:t.id});let i=q(()=>n.data.users.find(e=>e.id==r.value)||n.data.users[0]),a=q(()=>n.data.users.map(e=>({label:`${e.name} · 用户 ${e.id} · ${e.apps.length} 个应用`,value:e.id}))),o=X(``),s=Fe(bn()),c=q(()=>{var e;let t=((e=i.value)==null?void 0:e.apps)||[],n=o.value.trim();return n?t.filter(e=>[e.name,e.id,e.versionName||``,e.versionCode==null?``:String(e.versionCode)].some(e=>Dn(e,n,s))):t}),l=[{key:`name`,title:`应用名称`},{key:`id`,title:`包名`},{key:`version`,title:`版本`,render(e){var t;return e.versionName&&e.versionCode!=null?`${e.versionName} (${e.versionCode})`:e.versionName||((t=e.versionCode)==null?void 0:t.toString())||`-`}},{key:`isSystem`,title:`类型`,render(e){return e.isSystem==null?`-`:W(Ze,{size:`small`,type:e.isSystem?`info`:`default`},{default:()=>[e.isSystem?`系统应用`:`用户应用`]})}},{key:`state`,title:`状态`,render(e){let t=[e.enabled===!1?`已停用`:void 0,e.hidden?`已隐藏`:void 0].filter(Boolean);return t.length?t.join(` · `):`正常`}}];return(t,n)=>{let u=Qe,d=ge,f=$e;return I(),Y(`div`,kr,[e.view==`users`&&V(i)?(I(),Y(`div`,Ar,[Z(`div`,jr,[W(u,{value:V(r),"onUpdate:value":n[0]||=e=>P(r)?r.value=e:null,options:V(a),"aria-label":`设备用户`,class:`min-w-280px w-40% max-w-420px`},null,8,[`value`,`options`]),W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索应用名称、包名或版本`,class:`ml-auto min-w-320px w-50% max-w-460px`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`])]),V(c).length==0?(I(),B(d,{key:0,description:V(o).trim()?`没有匹配的应用`:`该用户没有应用记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(f,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:l,data:V(c),pagination:!1,rowKey:e=>e.id,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`]))])):(I(),B(Sr,{key:1,value:e.value,raw:e.raw},null,8,[`value`,`raw`]))])}}}),Nr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Pr=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Fr=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Ir=e=>typeof e==`string`?e:void 0,Lr=e=>typeof e==`boolean`?e:void 0,Rr=e=>{if(!Nr(e)||!Array.isArray(e.apps)||e.apps.length>1e4||Array.isArray(e.otherUsers)&&e.otherUsers.length>1e4)return;let t=Pr(e.userId)??0,n=new Map,r=(e,t,r=!1)=>{let i=n.get(e);if(i)return i.isCurrent||=r,i;let a={id:e,name:t,isCurrent:r,apps:[]};return n.set(e,a),a};r(t,`当前用户`,!0),Array.isArray(e.otherUsers)&&e.otherUsers.forEach(e=>{if(!Nr(e))return;let n=Pr(e.id);n!=null&&r(n,typeof e.name==`string`&&e.name.trim()?e.name:`用户 ${n}`,n==t)});let i=0;return e.apps.forEach(e=>{if(!Nr(e)||typeof e.id!=`string`||typeof e.name!=`string`)return;let n=Pr(e.userId)??t,a=r(n,n==t?`当前用户`:`用户 ${n}`,n==t),o={id:e.id,name:e.name,userId:n},s=Fr(e.versionCode),c=Ir(e.versionName),l=Lr(e.isSystem),u=Lr(e.hidden),d=Lr(e.enabled);s!=null&&(o.versionCode=s),c!=null&&(o.versionName=c),l!=null&&(o.isSystem=l),u!=null&&(o.hidden=u),d!=null&&(o.enabled=d),a.apps.push(o),i++}),{users:[...n.values()].sort((e,t)=>e.isCurrent==t.isCurrent?e.id-t.id:e.isCurrent?-1:1),totalApps:i}},zr=`__crash_preview__`,Br=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Vr=e=>typeof e==`string`&&e.trim()?e:void 0,Hr=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Ur=e=>{if(e==null)return;let t=Math.abs(e)<1e11?e*1e3:e;return Number.isNaN(new Date(t).getTime())?void 0:t},Wr=e=>{let t=(e.split(`/`).at(-1)||e).match(/gkd_crash-(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})/i);if(!t)return;let[n,r,i,a,o,s]=t.slice(1).map(Number),c=new Date(n,r-1,i,a,o,s);if(!(c.getFullYear()!=n||c.getMonth()!=r-1||c.getDate()!=i||c.getHours()!=a||c.getMinutes()!=o||c.getSeconds()!=s))return c.getTime()},Gr=e=>({path:e,fileName:e.split(`/`).at(-1)||e,status:`incomplete`,timestamp:Wr(e)}),Kr=(e,t)=>{let n=Gr(t);if(!Br(e))return{summary:n};n.id=Hr(e.id),n.mtime=Hr(e.mtime),n.timestamp=Ur(n.mtime)||Ur(n.id)||n.timestamp,n.device=Vr(e.device),n.androidVersionCode=Hr(e.androidVersionCode),n.androidVersionName=Vr(e.androidVersionName),n.versionCode=Hr(e.versionCode),n.versionName=Vr(e.versionName),n.name=Vr(e.name),n.message=Vr(e.message),n.thread=Vr(e.thread);let r=Vr(e.stackTrace);return n.status=n.name&&r?`valid`:`incomplete`,{summary:n,stackTrace:r}},qr=e=>e instanceof Error?e.message:String(e),Jr=e=>/^crash\/.+/i.test(e.replaceAll(`\\`,`/`)),Yr=e=>Jr(e)&&e.toLowerCase().endsWith(`.json`),Xr=e=>e.filter(e=>Jr(e.path)),Zr=(e,t)=>{try{return Kr(JSON.parse(e),t).summary}catch(e){return{...Gr(t),status:`invalid`,error:qr(e)}}},Qr=(e,t)=>{try{let n=JSON.parse(e),{summary:r,stackTrace:i}=Kr(n,t);return{...r,parsed:!0,raw:e,value:n,stackTrace:i}}catch(n){return{...Gr(t),status:`invalid`,error:qr(n),parsed:!1,raw:e}}},$r=(e,t)=>({...Gr(e),status:`invalid`,error:qr(t)}),ei=(e,t)=>({...$r(e,t),parsed:!1,raw:``}),ti=e=>({...Gr(e),status:`unsupported`,error:`仅支持 JSON 崩溃记录`}),ni=e=>({...ti(e),parsed:!1,raw:``}),ri=e=>e.toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),ii=async(e,t)=>{let n=vt(4);return ri(await Promise.all(Xr(e).map(e=>n(async()=>{if(!Yr(e.path))return ti(e.path);try{return Zr(await t(e),e.path)}catch(t){return $r(e.path,t)}}))))},ai=(e,t=2)=>e.toString().padStart(t,`0`),oi=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${ai(t.getMonth()+1)}-${ai(t.getDate())} ${ai(t.getHours())}:${ai(t.getMinutes())}:${ai(t.getSeconds())}.${ai(t.getMilliseconds(),3)}`},si={name:`directory-preview-header`,class:`h-40px flex flex-none items-stretch`},ci={class:`flex flex-none items-center gap-8px pr-14px font-600`},li=[`aria-pressed`],ui={key:0,class:`min-w-0 flex items-center gap-10px pl-14px`},di=[`title`],fi={key:0,class:`flex-none text-12px text-[#64748b]`},pi=Q({__name:`DirectoryPreviewHeader`,props:{title:{},count:{},listLabel:{},listActive:{type:Boolean},detailText:{},detailTitle:{},detailMeta:{}},emits:[`selectList`],setup(e,{emit:t}){let n=t;return(t,r)=>{let i=Ze;return I(),Y(`div`,si,[Z(`div`,ci,[Z(`span`,null,F(e.title),1),W(i,{size:`small`,round:``},{default:L(()=>[G(F(e.count),1)]),_:1})]),Z(`button`,{type:`button`,class:z([`h-full flex-none cursor-pointer border-b-2 bg-transparent px-12px transition-colors`,e.listActive?`border-[#18a058] text-[#18a058] font-600`:`border-transparent text-[#475569] hover:text-[#18a058]`]),"aria-pressed":e.listActive,onClick:r[0]||=e=>n(`selectList`)},F(e.listLabel),11,li),r[1]||=Z(`div`,{class:`min-w-0 flex-1`},null,-1),!e.listActive&&e.detailText?(I(),Y(`div`,ui,[Z(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:e.detailTitle||e.detailText},F(e.detailText),9,di),e.detailMeta?(I(),Y(`span`,fi,F(e.detailMeta),1)):U(``,!0)])):U(``,!0)])}}}),mi=Q({__name:`StackRetraceButton`,props:{available:{type:Boolean},loading:{type:Boolean},retraced:{type:Boolean}},emits:[`toggle`],setup(e,{emit:t}){let n=t;return(t,r)=>{let i=y;return e.available?(I(),B(i,{key:0,size:`small`,secondary:``,type:`primary`,loading:e.loading,onClick:r[0]||=e=>n(`toggle`)},{default:L(()=>[G(F(e.retraced?`原始堆栈`:`还原堆栈`),1)]),_:1},8,[`loading`])):U(``,!0)}}}),hi={name:`crash-preview`,class:`h-full min-h-0 flex flex-col`},gi={key:0,name:`crash-list`,class:`min-h-0 flex flex-1 flex-col gap-10px`},_i={key:1,name:`crash-detail`,class:`min-h-0 flex flex-1 flex-col gap-10px`};function vi(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var yi=50,bi=Q({__name:`CrashPreview`,props:{items:{},detail:{},detailLoading:{type:Boolean},retraceAvailable:{type:Boolean},retraceLoading:{type:Boolean},retraceActive:{type:Boolean},sourceLinkContext:{}},emits:[`select`,`toggleRetrace`],setup(e,{emit:t}){let n=e,r=t,i=X(`list`),a=X(``),o=X(``),s=Fe(bn()),c=X(1),l=q(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,t.name||``,t.message||``,t.thread||``,t.device||``,t.versionName||``,t.versionCode==null?``:String(t.versionCode),t.androidVersionName||``,t.androidVersionCode==null?``:String(t.androidVersionCode),t.error||``].some(t=>Dn(t,e,s))):n.items});R(l,()=>c.value=1),R(()=>n.items,e=>{e.some(e=>e.path==a.value)||(a.value=``,i.value=`list`)});let u=q(()=>{let e=(c.value-1)*yi;return l.value.slice(e,e+yi)}),d=q(()=>n.items.find(e=>e.path==a.value)),f=(e,t)=>e&&t!=null?`${e} (${t})`:e||(t==null?void 0:t.toString())||`-`,p=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,m=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,h=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},g=[{key:`timestamp`,title:`时间`,width:190,sorter:(e,t)=>(e.timestamp||0)-(t.timestamp||0),render:e=>oi(e.timestamp)},{key:`name`,title:`异常类型`,width:280,ellipsis:{tooltip:!0},render(e){let t;return W(`div`,{class:`min-w-0 flex items-center gap-6px`},[W(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:W(Ze,{size:`small`,type:m(e.status)},vi(t=p(e.status))?t:{default:()=>[t]})])}},{key:`message`,title:`异常消息`,width:360,ellipsis:{tooltip:!0},render:e=>e.message||e.error||`-`},{key:`thread`,title:`线程`,width:100,render:e=>e.thread||`-`},{key:`version`,title:`GKD 版本`,width:180,render:e=>f(e.versionName,e.versionCode)},{key:`android`,title:`Android`,width:140,render:e=>f(e.androidVersionName,e.androidVersionCode)},{key:`device`,title:`设备`,width:260,ellipsis:{tooltip:!0},render:e=>e.device||`-`}],_=e=>({class:`cursor-pointer`,onClick:()=>h(e)});return(t,n)=>{var a,p;let m=ge,h=$e,v=et,y=Yt,b=At,x=zt,S=Lt,C=en,w=an;return I(),Y(`div`,hi,[W(pi,{title:`崩溃记录`,count:e.items.length,listLabel:`崩溃列表`,listActive:V(i)==`list`,detailText:(a=V(d))==null?void 0:a.fileName,detailTitle:(p=V(d))==null?void 0:p.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),V(i)==`list`?(I(),Y(`div`,gi,[W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索异常类型、消息、设备或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(u).length==0?(I(),B(m,{key:0,description:V(o).trim()?`没有匹配的崩溃记录`:`没有崩溃记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(h,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:g,data:V(u),pagination:!1,rowKey:e=>e.path,rowProps:_,scrollX:1510,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),V(l).length>yi?(I(),B(v,{key:2,page:V(c),"onUpdate:page":n[5]||=e=>P(c)?c.value=e:null,pageSize:yi,itemCount:V(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):U(``,!0)])):(I(),Y(`div`,_i,[e.detailLoading?(I(),B(y,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(I(),Y(Pe,{key:2},[e.detail.error?(I(),B(b,{key:0,type:`warning`,title:`该记录无法完整解析`,class:`flex-none`},{default:L(()=>[G(F(e.detail.error),1)]),_:1})):U(``,!0),W(S,{bordered:``,size:`small`,column:3,labelPlacement:`left`,class:`flex-none`},{default:L(()=>[W(x,{label:`时间`},{default:L(()=>[G(F(V(oi)(e.detail.timestamp)),1)]),_:1}),W(x,{label:`线程`},{default:L(()=>[G(F(e.detail.thread||`-`),1)]),_:1}),W(x,{label:`GKD 版本`},{default:L(()=>[G(F(f(e.detail.versionName,e.detail.versionCode)),1)]),_:1}),W(x,{label:`Android`},{default:L(()=>[G(F(f(e.detail.androidVersionName,e.detail.androidVersionCode)),1)]),_:1}),W(x,{label:`设备`,span:2},{default:L(()=>[G(F(e.detail.device||`-`),1)]),_:1})]),_:1}),W(w,{type:`line`,animated:``,class:`min-h-0 flex-1 [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0`},{default:L(()=>[W(C,{name:`stack`,tab:`堆栈`},{default:L(()=>[e.detail.stackTrace?(I(),B(br,{key:0,value:e.detail.stackTrace,documentKey:e.detail.path,"search-placeholder":`搜索崩溃堆栈`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`h-full`},{"toolbar-start":L(()=>[W(mi,{available:e.retraceAvailable,loading:e.retraceLoading,retraced:e.retraceActive,onToggle:n[6]||=e=>r(`toggleRetrace`)},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`documentKey`,`sourceLinkContext`])):(I(),B(m,{key:1,description:`该记录没有堆栈信息`}))]),_:1}),W(C,{name:`raw`,tab:`原始 JSON`},{default:L(()=>[e.detail.parsed?(I(),B(Sr,{key:0,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.raw?(I(),B(br,{key:1,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`h-full`},null,8,[`value`])):(I(),B(m,{key:2,description:`无法读取原始内容`}))]),_:1})]),_:1})],64)):(I(),B(m,{key:1,description:`请选择一条崩溃记录`}))]))])}}}),xi=`__log_directory_preview__`,Si=`__subscription_directory_preview__`,Ci=e=>e.replaceAll(`\\`,`/`),wi=(e,t)=>Ci(e).toLowerCase().startsWith(`${t}/`),Ti=e=>wi(e,`log`),Ei=e=>wi(e,`subscription`),Di=e=>e.filter(e=>Ti(e.path)),Oi=e=>e.filter(e=>Ei(e.path)),ki=e=>e.split(`/`).at(-1)||e,Ai=e=>{let t=ki(e).match(/gkd-(\d{4})(\d{2})(\d{2})\.log$/i);if(!t)return;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]),a=new Date(n,r-1,i);if(!(a.getFullYear()!=n||a.getMonth()!=r-1||a.getDate()!=i))return a.getTime()},ji=e=>Di(e).map(e=>({path:e.path,fileName:ki(e.path),size:e.size||0,timestamp:Ai(e.path)})).toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),Mi=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ni=e=>typeof e==`string`&&e.trim()?e:void 0,Pi=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Fi=e=>Array.isArray(e)?e.length:void 0,Ii=e=>{let t=Number(ki(e).replace(/\.json$/i,``));return Number.isSafeInteger(t)?t:void 0},Li=e=>({path:e,fileName:ki(e),status:`incomplete`,id:Ii(e)}),Ri=(e,t)=>{let n=Li(t);return Mi(e)?(n.id=Pi(e.id)??n.id,n.name=Ni(e.name),n.version=Pi(e.version),n.author=Ni(e.author),n.appsCount=Fi(e.apps),n.globalGroupsCount=Fi(e.globalGroups),n.categoriesCount=Fi(e.categories),n.status=n.id!=null&&n.name&&n.version!=null?`valid`:`incomplete`,n):n},zi=e=>e instanceof Error?e.message:String(e),Bi=e=>Ei(e)&&e.toLowerCase().endsWith(`.json`),Vi=(e,t)=>{try{return Ri(JSON.parse(e),t)}catch(e){return{...Li(t),status:`invalid`,error:zi(e)}}},Hi=(e,t)=>{try{let n=JSON.parse(e);return{...Ri(n,t),parsed:!0,raw:e,value:n}}catch(n){return{...Li(t),status:`invalid`,error:zi(n),parsed:!1,raw:e}}},Ui=(e,t)=>({...Li(e),status:`invalid`,error:zi(t)}),Wi=(e,t)=>({...Ui(e,t),parsed:!1,raw:``}),Gi=e=>({...Li(e),status:`unsupported`,error:`仅支持 JSON 订阅文件`}),Ki=e=>({...Gi(e),parsed:!1,raw:``}),qi=e=>e.toSorted((e,t)=>e.id!=null&&t.id!=null&&e.id!=t.id?e.id-t.id:e.id!=null&&t.id==null?-1:e.id==null&&t.id!=null?1:e.path.localeCompare(t.path,`zh-CN`)),Ji=async(e,t)=>{let n=vt(4);return qi(await Promise.all(Oi(e).map(e=>n(async()=>{if(!Bi(e.path))return Gi(e.path);try{return Vi(await t(e),e.path)}catch(t){return Ui(e.path,t)}}))))},Yi=e=>e.toString().padStart(2,`0`),Xi=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${Yi(t.getMonth()+1)}-${Yi(t.getDate())}`},Zi={name:`json-basic-table`,class:`mb-10px mt-6px`},Qi=Q({__name:`JsonBasicTable`,props:{rows:{},indexed:{type:Boolean,default:!1}},setup(e){let t=e,n=q(()=>[{key:`key`,title:t.indexed?`索引`:`键`,width:220,ellipsis:{tooltip:!0}},{key:`value`,title:`值`,render(e){return W(`span`,{class:`whitespace-pre-wrap font-mono [overflow-wrap:anywhere]`},[vn(e.value)])}}]),r=q(()=>t.rows.length>200?{pageSize:200,showSizePicker:!1}:!1),i=e=>e.key;return(t,a)=>{let o=$e;return I(),Y(`div`,Zi,[W(o,{striped:``,size:`small`,columns:V(n),data:e.rows,rowKey:i,pagination:V(r)},null,8,[`columns`,`data`,`pagination`])])}}}),$i={flex:``,"flex-col":``,"gap-10px":``,"h-full":``},ea={name:`json-structure-scroll`,class:`min-h-0 flex-1 overflow-auto px-4px pb-24px pt-8px font-mono text-13px`},ta={key:1,name:`json-search-results`,class:`flex flex-col gap-6px`},na={class:`text-[#7c3aed]`},ra={class:`mt-4px text-[#374151] [overflow-wrap:anywhere]`},ia=Q({__name:`JsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=q(()=>mn(t.value)),r=e=>{if(Array.isArray(e))return`Array(${e.length})`;if(e&&typeof e==`object`){let t=fn(e);return t==null?`Object(>${dn})`:`Object(${t})`}return typeof e==`string`?JSON.stringify(e):String(e)},i=Q({name:`JsonNode`,props:{value:{type:null,required:!0},name:{type:String,required:!0},depth:{type:Number,default:0}},setup(e){let t=K(e.depth==0);return()=>{let n=pn(e.value),a=e.value!=null&&typeof e.value==`object`&&!n,o=a?Object.entries(e.value):[],s=a?_n(e.value):void 0;return W(`div`,we({name:`json-node`},{class:`block`}),[W(`div`,we({name:`json-node-line`},{class:`min-h-28px flex items-center gap-6px`}),[a?W(y,{quaternary:!0,size:`tiny`,class:`w-24px min-w-24px font-inherit`,onClick:()=>t.value=!t.value},{default:()=>[t.value?`−`:`+`]}):W(`span`,{class:`inline-block w-24px`},null),W(`span`,{class:`text-[#7c3aed]`},[e.name]),W(`span`,{class:`text-[#6b7280]`},[G(`:`)]),W(`span`,{class:a?`text-[#6b7280]`:`text-[#0f766e] [overflow-wrap:anywhere]`},[r(e.value)]),n?W(`span`,{class:`text-[#b45309]`},[G(`结构过大,请切换到原始 JSON 查看`)]):null]),a&&t.value?W(`div`,we({name:`json-children`},{class:`ml-15px border-l border-[#e5e7eb] pl-10px`}),[s?W(Qi,{rows:s,indexed:Array.isArray(e.value)},null):o.map(([t,n])=>W(i,{key:t,name:t,value:n,depth:e.depth+1},null))]):null])}}}),a=X(``),o=Fe(bn()),s=q(()=>{let e=a.value.trim();if(!e||n.value)return[];let i=[],s=[{value:t.value,path:``}];for(;s.length&&i.length<200;){let t=s.pop();if(!t)break;let{value:n,path:a}=t;if(typeof n==`object`&&n){if(pn(n))continue;let t=Object.entries(n);for(let n=t.length-1;n>=0;n--){let[c,l]=t[n],u=a?`${a}.${c}`:c;if(Dn(c,e,o)&&(i.push({path:u,value:r(l)}),i.length>=200))break;s.push({value:l,path:u})}continue}let c=r(n);Dn(c,e,o)&&i.push({path:a||`$`,value:c})}return i});return(t,r)=>{let c=At,l=ge,u=en,d=an;return I(),B(d,{type:`line`,animated:``,class:`h-full [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0`},{default:L(()=>[W(u,{name:`structured`,tab:`结构化`},{default:L(()=>[Z(`div`,$i,[W(Or,{modelValue:V(a),"onUpdate:modelValue":r[0]||=e=>P(a)?a.value=e:null,"match-case":V(o).matchCase,"onUpdate:matchCase":r[1]||=e=>V(o).matchCase=e,"whole-word":V(o).wholeWord,"onUpdate:wholeWord":r[2]||=e=>V(o).wholeWord=e,"use-regex":V(o).useRegex,"onUpdate:useRegex":r[3]||=e=>V(o).useRegex=e,placeholder:`搜索键或值,最多展示 200 条结果`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),Z(`div`,ea,[V(n)?(I(),B(c,{key:0,type:`warning`,title:`JSON 结构过大`},{default:L(()=>[...r[4]||=[G(` 为避免占用过多内存,请切换到“原始 JSON”查看和搜索。 `,-1)]]),_:1})):V(a).trim()?(I(),Y(Pe,{key:1},[V(s).length==0?(I(),B(l,{key:0,description:`没有匹配项`})):(I(),Y(`div`,ta,[(I(!0),Y(Pe,null,De(V(s),e=>(I(),Y(`div`,{key:`${e.path}:${e.value}`,name:`json-search-item`,class:`rounded-4px border border-[#e5e7eb] px-10px py-8px`},[Z(`div`,na,F(e.path),1),Z(`div`,ra,F(e.value),1)]))),128))]))],64)):(I(),B(V(i),{key:2,name:`$`,value:e.value,depth:0},null,8,[`value`]))])])]),_:1}),W(u,{name:`raw`,tab:`原始 JSON`},{default:L(()=>[W(Sr,{value:e.value,raw:e.raw},null,8,[`value`,`raw`])]),_:1})]),_:1})}}}),aa=e=>typeof e==`object`&&!!e&&!Array.isArray(e),oa=e=>{if(!aa(e)||!Array.isArray(e.apps))return{};let t=[];return e.apps.forEach(e=>{aa(e)&&(typeof e.id!=`string`||typeof e.name!=`string`||t.push([e.id,e.name]))}),Object.fromEntries(t)},sa=e=>{if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`number`&&Number.isSafeInteger(t.id)&&typeof t.name==`string`&&t.name.length>0},ca=e=>{if(sa(e))return[String(e.id),e.name]},la=101010256,ua=33639248,da=22,fa=65535,pa=(e,t)=>{if(e.byteLength<da)throw Error(`不是有效的 ZIP 文件`);let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=Math.max(0,e.byteLength-da-fa),i=-1;for(let t=e.byteLength-da;t>=r;t--)if(n.getUint32(t,!0)==la&&t+da+n.getUint16(t+20,!0)==e.byteLength){i=t;break}if(i<0)throw Error(`不是有效的 ZIP 文件`);let a=n.getUint16(i+4,!0),o=n.getUint16(i+6,!0),s=n.getUint16(i+8,!0),c=n.getUint16(i+10,!0),l=n.getUint32(i+12,!0),u=n.getUint32(i+16,!0);if(a!=0||o!=0||s!=c||c==65535||l==4294967295||u==4294967295)throw Error(`不支持分卷或 ZIP64 日志包`);if(c>t.maxEntries)throw Error(`ZIP 内条目数量不能超过 ${t.maxEntries}`);if(u>i||l>i-u||u+l!=i)throw Error(`ZIP 中央目录损坏`);let d=u,f=0,p=0;for(;d<i;){if(d+46>i||n.getUint32(d,!0)!=ua)throw Error(`ZIP 中央目录损坏`);let e=n.getUint32(d+20,!0),r=n.getUint32(d+24,!0);if(e==4294967295||r==4294967295)throw Error(`不支持 ZIP64 日志包`);let a=n.getUint16(d+28,!0);if(a>t.maxEntryNameSize)throw Error(`ZIP 条目路径过长`);let o=n.getUint16(d+30,!0),s=n.getUint16(d+32,!0),c=d+46+a+o+s;if(c>i)throw Error(`ZIP 中央目录损坏`);if(f++,f>t.maxEntries)throw Error(`ZIP 内条目数量不能超过 ${t.maxEntries}`);if(p+=r,!Number.isSafeInteger(p)||p>t.maxUncompressedSize)throw Error(`ZIP 解压后总大小超过限制`);d=c}if(f!=c||d!=i)throw Error(`ZIP 中央目录条目数量不一致`);return{entryCount:c,totalUncompressedSize:p}},ma=50*1024*1024,ha=200*1024*1024,ga=2e3,_a=20*1024*1024,va=2*1024*1024,ya=100*1024*1024,ba=5e5,xa=1024,Sa=new Set([`.log`,`.txt`,`.sql`,`.xml`,`.md`,`.yaml`,`.yml`,`.csv`]),Ca=new Set([`.db`,`.sqlite`,`.sqlite3`]),wa=e=>{let t=e.split(`/`).at(-1)||e,n=t.lastIndexOf(`.`);return n>=0?t.slice(n).toLowerCase():``},Ta=e=>{let t=e.toLowerCase();if(t.endsWith(`-wal`)||t.endsWith(`-shm`))return`database-sidecar`;let n=wa(e);return n==`.json`?`json`:Ca.has(n)?`database`:Sa.has(n)?`text`:`binary`},Ea=e=>e.extension==`.log`?0:e.kind==`text`?1:e.kind==`json`?2:e.kind==`database`?3:4,Da=e=>e.entries.filter(e=>e.kind==`text`||e.kind==`json`||e.kind==`database`).toSorted((e,t)=>Ea(e)-Ea(t))[0],Oa=async(e,t)=>{let n=e instanceof Blob?e.size:e.byteLength;if(n>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ma)}`);let r=e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e),i=pa(r,{maxEntries:ga,maxEntryNameSize:xa,maxUncompressedSize:ha}),a=await _t(r),o=Object.values(a.files).filter(e=>!e.dir);if(o.length>2e3)throw Error(`ZIP 内文件数量不能超过 ${ga}`);let s=0,c={total:0,sizes:new Map},l=o.map(e=>{var t;let n=e;if(n.unsafeOriginalName&&n.unsafeOriginalName.replaceAll(`\\`,`/`)!=n.name)throw Error(`ZIP 包含不安全路径: ${n.unsafeOriginalName}`);let r=((t=n._data)==null?void 0:t.uncompressedSize)||0;s+=r;let i=n.name.replaceAll(`\\`,`/`).replace(/^\/+/,``),a=i.split(`/`);if(i.length>1024||a.length>64||a.some(e=>!e||e.length>255))throw Error(`ZIP 条目路径超出预览限制: ${i}`);return{path:i,name:i.split(`/`).at(-1)||i,extension:wa(i),size:r,kind:Ta(i),file:e,readBudget:c}});if(s>209715200)throw Error(`ZIP 解压后总大小不能超过 ${Xa(ha)}`);if(s!=i.totalUncompressedSize)throw Error(`ZIP 中央目录大小信息不一致`);let u=new Set(l.map(e=>e.path));for(let e of l){let t=e.path.split(`/`),n=t[0];for(let e=1;e<t.length;e++){if(u.has(n))throw Error(`ZIP 同时包含文件及其子路径: ${n}`);n+=`/${t[e]}`}}return l.sort((e,t)=>e.path.localeCompare(t.path,`zh-CN`)),{name:t,compressedSize:n,uncompressedSize:s,entries:l,entryMap:new Map(l.map(e=>[e.path,e]))}},ka=new WeakMap,Aa=new WeakMap,ja=async(e,t=_a)=>{if(e.size>t)throw Error(`${e.name} 超过可预览上限 ${Xa(t)}`);let n=e.readBudget.sizes.get(e.path);return new Promise((r,i)=>{let a=[],o=0,s=!1,c=e.file.internalStream(`uint8array`),l=e=>{s||(s=!0,c.pause(),i(e instanceof Error?e:Error(String(e))))};c.on(`data`,r=>{if(!s){if(o+r.byteLength>t){l(Error(`${e.name} 超过可预览上限 ${Xa(t)}`));return}if(n==null&&e.readBudget.total+r.byteLength>209715200){l(Error(`ZIP 实际解压大小超过可预览上限`));return}o+=r.byteLength,n??(e.readBudget.total+=r.byteLength),a.push(r)}}).on(`error`,l).on(`end`,()=>{if(s)return;s=!0;let t=new Uint8Array(o),i=0;for(let e of a)t.set(e,i),i+=e.byteLength;n??e.readBudget.sizes.set(e.path,o),r(t)}).resume()})},Ma=(e,t=_a)=>{var n;let r=(n=Aa.get(e.file))==null?void 0:n.get(t);if(r)return Promise.reject(r);let i=ka.get(e.file);i||(i=new Map,ka.set(e.file,i));let a=i.get(t);return a||(a=ja(e,t),i.set(t,a),a.then(()=>i==null?void 0:i.delete(t),n=>{i==null||i.delete(t);let r=Aa.get(e.file);r||(r=new Map,Aa.set(e.file,r)),r.set(t,n instanceof Error?n:Error(String(n)))})),a},Na=async(e,t)=>{let n=e.entryMap.get(`${t.path}-wal`),r=e.entryMap.get(`${t.path}-shm`);if(t.size+((n==null?void 0:n.size)||0)+((r==null?void 0:r.size)||0)>104857600)throw Error(`数据库文件组超过可预览上限 ${Xa(ya)}`);let i=await Ma(t,ya);return{database:i,wal:n?await Ma(n,ya-i.byteLength):void 0,walEntry:n,shmEntry:r}},Pa=e=>{let t=new TextDecoder().decode(e),n=1;for(let e=0;e<t.length;e++)if((t.charCodeAt(e)==10||t.charCodeAt(e)==13&&t.charCodeAt(e+1)!=10)&&n++,n>5e5)throw Error(`文本行数不能超过 ${ba}`);return t},Fa=new WeakMap,Ia=e=>e.entries.filter(e=>Pn(e.path)),La=new WeakMap,Ra=e=>{let t=La.get(e);return t||(t=(async()=>{let t=[];for(let n of Ia(e))try{let e=Bn(Pa(await Ma(n,va)));e&&t.push(e)}catch{}let n=t[0];if(n&&!t.some(e=>e.versionName!=n.versionName||e.versionCode!=n.versionCode||e.commitUrl!=n.commitUrl))return n})(),La.set(e,t),t)},za=new WeakMap,Ba=e=>{let t=za.get(e);return t||(t=(async()=>{let t=e.entries.find(e=>e.path.toLowerCase()==`gkd.json`);if(t)try{return Fn(Pa(await Ma(t,va)))}catch{}})(),za.set(e,t),t)},Va=e=>{let t=Fa.get(e);return t||(t=(async()=>{let t=e.entries.find(e=>e.path.toLowerCase()==`source-paths.txt`);if(!t)return;let n=Ia(e);if(n.length!=0)try{let e=Pa(await Ma(t,va)),r=[];for(let t of n)try{let n=Un(Pa(await Ma(t,va)),e);n&&r.push(n)}catch{}let i=r[0];return!i||r.some(e=>e.repositoryUrl!=i.repositoryUrl||e.commitId.toLowerCase()!=i.commitId.toLowerCase())?void 0:i}catch{}})(),Fa.set(e,t),t)},Ha=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ua=1e4,Wa=new WeakMap,Ga=e=>{let t=Wa.get(e);return t||(t=(async()=>{let t=e.entries.find(e=>{let t=e.path.toLowerCase();return t==`apps.json`||t.endsWith(`/apps.json`)});if(!t)return{};try{let e=Pa(await Ma(t,va));return oa(JSON.parse(e))}catch{return{}}})(),Wa.set(e,t),t)},Ka=new WeakMap,qa=e=>{let t=Ka.get(e);return t||(t=(async()=>{let t=e.entries.filter(e=>/^subscription\/[^/]+\.json$/i.test(e.path)),n=[];for(let e of t)try{let t=Pa(await Ma(e,va)),r=ca(JSON.parse(t));r&&n.push(r)}catch{}return Object.fromEntries(n.filter(e=>e!=null))})(),Ka.set(e,t),t)},Ja=e=>{if(!Ha(e)||typeof e.id!=`number`||!Number.isSafeInteger(e.id)||typeof e.name!=`string`||typeof e.version!=`number`||!Number.isSafeInteger(e.version)||![`apps`,`globalGroups`,`categories`].every(t=>e[t]==null||Array.isArray(e[t])))return!1;let t=Array.isArray(e.apps)?e.apps:[],n=Array.isArray(e.globalGroups)?e.globalGroups:[],r=Array.isArray(e.categories)?e.categories:[];if(t.length>Ua||n.length>Ua||r.length>Ua||!r.every(Ha))return!1;let i=t.length+n.length+r.length,a=e=>{let t=e.rules;return i+=Array.isArray(t)?t.length:t==null?0:1,i<=Ua};for(let e of t){if(!Ha(e)||typeof e.id!=`string`||!Array.isArray(e.groups)||(i+=e.groups.length,i>Ua))return!1;for(let t of e.groups)if(!Ha(t)||!a(t))return!1}for(let e of n)if(!Ha(e)||!a(e))return!1;return!0},Ya=(e,t)=>Ja(t)&&(e.path.toLowerCase().startsWith(`subscription/`)||[`apps`,`globalGroups`,`categories`].some(e=>e in t)),Xa=e=>{if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KiB`,`MiB`,`GiB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;let i=r==0||n>=100?0:n>=10?1:2;return`${n.toFixed(i)} ${t[r]}`},Za={name:`log-directory-preview`,class:`h-full min-h-0 flex flex-col`},Qa={key:0,class:`min-h-0 flex flex-1 flex-col gap-10px`},$a={key:1,class:`min-h-0 flex flex-1 flex-col`},eo=Q({__name:`LogDirectoryPreview`,props:{items:{},detailPath:{},detailText:{},detailError:{},detailLoading:{type:Boolean},retraceAvailable:{type:Boolean},retraceLoading:{type:Boolean},retraceActive:{type:Boolean},sourceLinkContext:{}},emits:[`select`,`toggleRetrace`],setup(e,{emit:t}){let n=e,r=t,i=X(`list`),a=X(``),o=X(``),s=Fe(bn()),c=q(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,Xi(t.timestamp)].some(t=>Dn(t,e,s))):n.items});R(()=>n.items,e=>{e.some(e=>e.path==a.value)||(a.value=``,i.value=`list`)});let l=q(()=>n.items.find(e=>e.path==a.value)),u=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},d=[{key:`date`,title:`日期`,width:180,sorter:(e,t)=>(e.timestamp||0)-(t.timestamp||0),render:e=>Xi(e.timestamp)},{key:`fileName`,title:`文件名`},{key:`size`,title:`大小`,width:140,sorter:(e,t)=>e.size-t.size,render:e=>Xa(e.size)}],f=e=>({class:`cursor-pointer`,onClick:()=>u(e)});return(t,n)=>{var a,u;let p=ge,m=$e,h=Yt,g=At;return I(),Y(`div`,Za,[W(pi,{title:`运行日志`,count:e.items.length,listLabel:`日志列表`,listActive:V(i)==`list`,detailText:(a=V(l))==null?void 0:a.fileName,detailTitle:(u=V(l))==null?void 0:u.path,detailMeta:V(l)?V(Xa)(V(l).size):void 0,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`,`detailMeta`]),V(i)==`list`?(I(),Y(`div`,Qa,[W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索日志日期或文件名`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(c).length==0?(I(),B(p,{key:0,description:V(o).trim()?`没有匹配的日志文件`:`没有日志文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(m,{key:1,striped:``,columns:d,data:V(c),pagination:!1,rowKey:e=>e.path,rowProps:f,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`]))])):(I(),Y(`div`,$a,[e.detailLoading?(I(),B(h,{key:0,show:``,class:`min-h-0 flex-1`})):e.detailError?(I(),B(g,{key:1,type:`error`,title:`日志文件读取失败`},{default:L(()=>[G(F(e.detailError),1)]),_:1})):e.detailPath&&e.detailText!=null?(I(),B(br,{key:e.detailPath,value:e.detailText,"search-placeholder":`搜索当前日志文件`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`min-h-0 flex-1`},{"toolbar-start":L(()=>[W(mi,{available:e.retraceAvailable,loading:e.retraceLoading,retraced:e.retraceActive,onToggle:n[5]||=e=>r(`toggleRetrace`)},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`sourceLinkContext`])):(I(),B(p,{key:3,description:`请选择一个日志文件`}))]))])}}}),to=async(e,t)=>{var n;let r=(n=e.body)==null?void 0:n.getReader();if(!r){let n=await e.arrayBuffer();if(n.byteLength>t)throw Error(`响应内容超过大小限制`);return n}let i=[],a=0;for(;;){let{done:e,value:n}=await r.read();if(e)break;if(a+=n.byteLength,a>t)throw await r.cancel(`响应内容超过大小限制`),Error(`响应内容超过大小限制`);i.push(n)}let o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.byteLength;return o.buffer},no=e=>{if(typeof e==`string`)try{let t=new URL(e);if(t.protocol==`http:`||t.protocol==`https:`)return t.href}catch{}},ro={name:`subscription-preview`,class:`h-full min-h-0 flex flex-col gap-12px`},io=[`href`],ao=[`href`],oo={name:`subscription-stats`,class:`flex flex-wrap gap-12px`},so={name:`subscription-tab-body`,class:`h-full min-h-0 flex flex-col gap-10px`},co={name:`app-id`,class:`mb-10px text-[#6b7280]`},lo={name:`subscription-global-groups`,class:`min-h-0 flex flex-col gap-10px overflow-auto`},uo={key:0,class:`mb-10px text-[#6b7280]`};function fo(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var po=50,mo=Q({__name:`SubscriptionPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=q(()=>no(t.value.updateUrl)),r=q(()=>no(t.value.supportUri)),i=e=>e==null?[]:Array.isArray(e)?e:[e],a=q(()=>t.value.apps||[]),o=q(()=>t.value.globalGroups||[]),s=q(()=>t.value.categories||[]),c=q(()=>{let e=0,t=0;for(let n of a.value){e+=n.groups.length;for(let e of n.groups)t+=i(e.rules).length}let n=0;for(let e of o.value)n+=i(e.rules).length;return{apps:a.value.length,appGroups:e,appRules:t,globalGroups:o.value.length,globalRules:n,categories:s.value.length}}),l=X(``),u=Fe(bn()),d=X(1),f=q(()=>{let e=l.value.trim();return e?a.value.filter(t=>Dn(t.id,e,u)||Dn(t.name||``,e,u)):a.value});R(f,()=>d.value=1);let p=q(()=>{let e=(d.value-1)*po;return f.value.slice(e,e+po)}),m=(e,t)=>typeof e==`string`?`规则 ${t+1}`:e&&typeof e==`object`?String(e.name||`规则 ${t+1}`):`规则 ${t+1}`,h=e=>{let t;return W(it,{accordion:!0},fo(t=i(e.rules).map((e,t)=>W(rt,{key:t,name:t,title:m(e,t)},{default:()=>[W(`div`,{class:`m-0 whitespace-pre-wrap rounded-4px border border-[#e5e7eb] bg-[#fafafa] p-10px font-mono text-12px [overflow-wrap:anywhere]`},[JSON.stringify(e,null,2)])]})))?t:{default:()=>[t]})},g=e=>W(`div`,we({name:`subscription-groups`},{class:`flex flex-col gap-10px`}),[e.groups.map(e=>W(We,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:()=>[e.desc?W(`div`,{class:`mb-10px text-[#6b7280]`},[e.desc]):null,h(e)]}))]),_=[{key:`key`,title:`Key`,width:100},{key:`name`,title:`名称`},{key:`enable`,title:`默认状态`,width:140,render(e){return e.enable==null?`跟随规则组`:e.enable?`启用`:`禁用`}}];return(t,i)=>{let m=zt,v=Lt,y=Zt,b=ge,x=rt,S=it,C=et,w=en,ee=We,T=$e,E=an;return I(),Y(`div`,ro,[W(v,{bordered:``,size:`small`,column:3,labelPlacement:`left`},{default:L(()=>[W(m,{label:`名称`},{default:L(()=>[G(F(e.value.name),1)]),_:1}),W(m,{label:`ID`},{default:L(()=>[G(F(e.value.id),1)]),_:1}),W(m,{label:`版本`},{default:L(()=>[G(F(e.value.version),1)]),_:1}),e.value.author?(I(),B(m,{key:0,label:`作者`},{default:L(()=>[G(F(e.value.author),1)]),_:1})):U(``,!0),V(n)?(I(),B(m,{key:1,label:`更新地址`},{default:L(()=>[Z(`a`,{href:V(n),target:`_blank`,rel:`noopener noreferrer`},F(e.value.updateUrl),9,io)]),_:1})):U(``,!0),V(r)?(I(),B(m,{key:2,label:`反馈地址`},{default:L(()=>[Z(`a`,{href:V(r),target:`_blank`,rel:`noopener noreferrer`},F(e.value.supportUri),9,ao)]),_:1})):U(``,!0)]),_:1}),Z(`div`,oo,[V(c).apps?(I(),B(y,{key:0,label:`应用`,value:V(c).apps,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).appGroups?(I(),B(y,{key:1,label:`应用规则组`,value:V(c).appGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).appRules?(I(),B(y,{key:2,label:`应用规则`,value:V(c).appRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).globalGroups?(I(),B(y,{key:3,label:`全局规则组`,value:V(c).globalGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).globalRules?(I(),B(y,{key:4,label:`全局规则`,value:V(c).globalRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0),V(c).categories?(I(),B(y,{key:5,label:`分类`,value:V(c).categories,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):U(``,!0)]),W(E,{type:`line`,animated:``,class:`h-full min-h-0 [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0`},{default:L(()=>[V(a).length?(I(),B(w,{key:0,name:`apps`,tab:`应用规则`},{default:L(()=>[Z(`div`,so,[W(Or,{modelValue:V(l),"onUpdate:modelValue":i[0]||=e=>P(l)?l.value=e:null,"match-case":V(u).matchCase,"onUpdate:matchCase":i[1]||=e=>V(u).matchCase=e,"whole-word":V(u).wholeWord,"onUpdate:wholeWord":i[2]||=e=>V(u).wholeWord=e,"use-regex":V(u).useRegex,"onUpdate:useRegex":i[3]||=e=>V(u).useRegex=e,placeholder:`搜索应用名称或包名`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(p).length==0?(I(),B(b,{key:0,description:`没有匹配的应用`})):(I(),B(S,{key:1,accordion:``,class:`min-h-0 flex-1 overflow-auto`},{default:L(()=>[(I(!0),Y(Pe,null,De(V(p),e=>(I(),B(x,{key:e.id,name:e.id,title:`${e.name||e.id} · ${e.groups.length} 个规则组`},{default:L(()=>[Z(`div`,co,F(e.id),1),(I(),B(xe(()=>g(e))))]),_:2},1032,[`name`,`title`]))),128))]),_:1})),V(f).length>po?(I(),B(C,{key:2,page:V(d),"onUpdate:page":i[4]||=e=>P(d)?d.value=e:null,pageSize:po,itemCount:V(f).length},null,8,[`page`,`itemCount`])):U(``,!0)])]),_:1})):U(``,!0),V(o).length?(I(),B(w,{key:1,name:`global`,tab:`全局规则`},{default:L(()=>[Z(`div`,lo,[(I(!0),Y(Pe,null,De(V(o),e=>(I(),B(ee,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:L(()=>[e.desc?(I(),Y(`div`,uo,F(e.desc),1)):U(``,!0),(I(),B(xe(()=>h(e))))]),_:2},1032,[`title`]))),128))])]),_:1})):U(``,!0),V(s).length?(I(),B(w,{key:2,name:`categories`,tab:`分类`},{default:L(()=>[W(T,{striped:``,columns:_,data:V(s),pagination:!1},null,8,[`data`])]),_:1})):U(``,!0),W(w,{name:`raw`,tab:`原始 JSON`},{default:L(()=>[W(Sr,{value:e.value,raw:e.raw},null,8,[`value`,`raw`])]),_:1})]),_:1})])}}}),ho={name:`subscription-directory-preview`,class:`h-full min-h-0 flex flex-col`},go={key:0,class:`min-h-0 flex flex-1 flex-col gap-10px`},_o={key:1,class:`min-h-0 flex flex-1 flex-col gap-10px`},vo={key:2,class:`min-h-0 flex-1`},yo={key:2,class:`h-full min-h-0 flex flex-col gap-8px`};function bo(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var xo=50,So=Q({__name:`SubscriptionDirectoryPreview`,props:{items:{},detail:{},detailStructured:{type:Boolean},detailLoading:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=X(`list`),a=X(``),o=X(``),s=Fe(bn()),c=X(1),l=q(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,t.id==null?``:String(t.id),t.name||``,t.version==null?``:String(t.version),t.author||``,t.error||``].some(t=>Dn(t,e,s))):n.items});R(l,()=>c.value=1),R(()=>n.items,e=>{e.some(e=>e.path==a.value)||(a.value=``,i.value=`list`)});let u=q(()=>{let e=(c.value-1)*xo;return l.value.slice(e,e+xo)}),d=q(()=>n.items.find(e=>e.path==a.value)),f=q(()=>{var e;if(!(!n.detailStructured||!((e=n.detail)!=null&&e.parsed)))return n.detail.value}),p=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,m=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,h=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},g=[{key:`id`,title:`ID`,width:90,sorter:(e,t)=>(e.id||0)-(t.id||0)},{key:`name`,title:`订阅名称`,minWidth:260,ellipsis:{tooltip:!0},render(e){let t;return W(`div`,{class:`min-w-0 flex items-center gap-6px`},[W(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:W(Ze,{size:`small`,type:m(e.status)},bo(t=p(e.status))?t:{default:()=>[t]})])}},{key:`version`,title:`版本`,width:100,render:e=>e.version??`-`},{key:`author`,title:`作者`,width:150,render:e=>e.author||`-`},{key:`appsCount`,title:`应用`,width:100,render:e=>e.appsCount??`-`},{key:`groups`,title:`全局规则组`,width:120,render:e=>e.globalGroupsCount??`-`},{key:`categories`,title:`分类`,width:100,render:e=>e.categoriesCount??`-`}],_=e=>({class:`cursor-pointer`,onClick:()=>h(e)});return(t,n)=>{var r,a,p;let m=ge,h=$e,v=et,y=Yt,b=At;return I(),Y(`div`,ho,[W(pi,{title:`订阅文件`,count:e.items.length,listLabel:`订阅列表`,listActive:V(i)==`list`,detailText:((r=V(d))==null?void 0:r.name)||((a=V(d))==null?void 0:a.fileName),detailTitle:(p=V(d))==null?void 0:p.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),V(i)==`list`?(I(),Y(`div`,go,[W(Or,{modelValue:V(o),"onUpdate:modelValue":n[1]||=e=>P(o)?o.value=e:null,"match-case":V(s).matchCase,"onUpdate:matchCase":n[2]||=e=>V(s).matchCase=e,"whole-word":V(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>V(s).wholeWord=e,"use-regex":V(s).useRegex,"onUpdate:useRegex":n[4]||=e=>V(s).useRegex=e,placeholder:`搜索订阅 ID、名称、作者或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),V(u).length==0?(I(),B(m,{key:0,description:V(o).trim()?`没有匹配的订阅`:`没有订阅文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(I(),B(h,{key:1,striped:``,columns:g,data:V(u),pagination:!1,rowKey:e=>e.path,rowProps:_,scrollX:1020,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),V(l).length>xo?(I(),B(v,{key:2,page:V(c),"onUpdate:page":n[5]||=e=>P(c)?c.value=e:null,pageSize:xo,itemCount:V(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):U(``,!0)])):(I(),Y(`div`,_o,[e.detailLoading?(I(),B(y,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(I(),Y(`div`,vo,[V(f)?(I(),B(mo,{key:e.detail.path,value:V(f),raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.parsed?(I(),B(ia,{key:e.detail.path,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):(I(),Y(`div`,yo,[W(b,{type:`warning`,title:`订阅 JSON 解析失败`,class:`flex-none`},{default:L(()=>[G(F(e.detail.error),1)]),_:1}),e.detail.raw?(I(),B(br,{key:0,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`min-h-0 flex-1`},null,8,[`value`])):(I(),B(m,{key:1,description:`无法读取原始内容`}))]))])):(I(),B(m,{key:1,description:`请选择一个订阅文件`}))]))])}}}),Co=new Set([`ctime`,`mtime`]),wo=new Set([`id`,`ctime`,`mtime`]),To=new Set([`snapshot`,`subs_config`]),Eo=new Set([`app_visit_log`,`subs_config`]),Do=e=>wo.has(e.toLowerCase()),Oo=(e,t)=>{let n=t.toLowerCase();return n==`app_id`||e.toLowerCase()==`app_visit_log`&&n==`id`},ko=(e,t)=>t.toLowerCase()==`subs_id`&&Eo.has(e.toLowerCase()),Ao=(e,t,n)=>{let r=t.toLowerCase();if(!(Co.has(r)||r==`id`&&To.has(e.toLowerCase()))||typeof n!=`number`&&typeof n!=`string`)return;let i=Number(n);if(!Number.isFinite(i))return;let a=Math.abs(i)<1e11?i*1e3:i,o=new Date(a);if(!Number.isNaN(o.getTime()))return o},jo=(e,t=2)=>e.toString().padStart(t,`0`),Mo=e=>`${e.getFullYear()}-${jo(e.getMonth()+1)}-${jo(e.getDate())} ${jo(e.getHours())}:${jo(e.getMinutes())}:${jo(e.getSeconds())}.${jo(e.getMilliseconds(),3)}`,No=64,Po=16,Fo=19,Io=(e,t)=>Math.max(...e.split(/\r\n|\r|\n/).map(t)),Lo=({title:e,values:t,sortable:n,measureText:r})=>{let i=r(e)+Po+(n?Fo:0),a=Math.max(0,...t.map(e=>Io(e,r)+Po));return Math.ceil(Math.max(No,i,a))},Ro=(e,t)=>Math.ceil(Math.max(e,t+Po)),zo=e=>e.reduce((e,t)=>e+t,0),Bo={key:2,name:`sqlite-layout`,class:`h-full min-h-0 flex gap-12px`},Vo={name:`sqlite-table-list`,class:`w-250px min-w-250px flex flex-col gap-8px border-r border-[#e5e7eb] pr-10px`},Ho={name:`sqlite-table-scroll`,class:`min-h-0 overflow-auto`},Uo={class:`flex-1 overflow-hidden text-left text-ellipsis leading-20px`},Wo={key:0,name:`sqlite-table-content`,class:`h-full min-h-0 min-w-0 flex-1`},Go={name:`sqlite-data-pane`,class:`h-full min-h-0 flex flex-col items-end gap-10px`},Ko={name:`sqlite-data-table-scroll`,class:`w-full min-h-0 flex-1`},qo=[`textContent`],Jo=Q({__name:`SqlitePreview`,props:{database:{},wal:{},appNames:{},subscriptionNames:{}},setup(e){let t=e,n=X(!0),r=X(!1),i=X(``),a=X(``),o=X([]),s=X(``),c=X([]),l=X([]),u=X([]),d=X(``),f=Fe(bn()),p=new Worker(new URL(``+globalThis.location.origin+`/assets/worker-entry-sqlite.worker-CKaCUOTj.js`,``+import.meta.url),{type:`module`}),m=1,h=0,g=new Map;p.onmessage=e=>{let t=e.data,n=g.get(t.id);n&&(g.delete(t.id),t.ok?n.resolve(t.result):n.reject(Error(t.error)))},p.onerror=e=>{let t=Error(e.message||`SQLite Worker 运行失败`);for(let e of g.values())e.reject(t);g.clear()};let _=(e,t=[])=>{let n=m++;return new Promise((r,i)=>{g.set(n,{resolve:e=>r(e),reject:i}),p.postMessage({...e,id:n},t)})},v=q(()=>o.value.find(e=>e.name==s.value)),b=q(()=>{let e=d.value.trim();return e?o.value.filter(t=>Dn(t.name,e,f)):o.value}),x,S=e=>{if(x===void 0&&(x=document.createElement(`canvas`).getContext(`2d`),x)){let{fontFamily:e,fontSize:t}=getComputedStyle(document.body);x.font=`${t} ${e}`}return(x==null?void 0:x.measureText(e).width)??Array.from(e).length*8};R(s,async()=>{if(!s.value)return;let e=++h,t=s.value;r.value=!0,a.value=``;try{let n=await _({type:`data`,table:t});if(e!=h||t!=s.value)return;l.value=n.columns.map(e=>Lo({title:e,values:[],sortable:Do(e),measureText:S})),c.value=n.columns,u.value=n.rows}catch(t){if(e!=h)return;a.value=t instanceof Error?t.message:String(t)}finally{e==h&&(r.value=!1)}}),Oe(async()=>{n.value=!0,i.value=``;try{var e;let n=t.database,r=t.wal,i=[n.buffer];r&&i.push(r.buffer);let a=await _({type:`open`,database:n,wal:r},i);o.value=a.tables,s.value=((e=a.tables[0])==null?void 0:e.name)||``}catch(e){i.value=e instanceof Error?e.message:String(e)}finally{n.value=!1}}),be(()=>{p.terminate();for(let e of g.values())e.reject(Error(`组件已卸载`));g.clear()});let C=(e,n,r)=>{if(r==null)return W(`span`,{class:`italic text-[#9ca3af]`},[G(`NULL`)]);if(typeof r==`object`)return W(Ze,{size:`small`},{default:()=>[`BLOB · ${r.byteLength} bytes`]});if(Oo(e,n)&&typeof r==`string`){var i;let e=(i=t.appNames)==null?void 0:i[r];if(e)return W(`span`,{class:`whitespace-pre`,title:r},[e])}if(ko(e,n)&&(typeof r==`number`||typeof r==`string`)){var a;let e=(a=t.subscriptionNames)==null?void 0:a[String(r)];if(e)return W(`span`,{class:`whitespace-pre`,title:String(r)},[e])}let o=Ao(e,n,r);return o?W(`span`,{class:`whitespace-nowrap tabular-nums`,title:String(r)},[Mo(o)]):W(`span`,{class:`whitespace-pre`},[String(r)])},w=q(()=>{let e=s.value;return c.value.map((t,n)=>({key:t,title:t,width:l.value[n],sorter:Do(t)?`default`:void 0,render(r){return Me(W(`span`,{class:`inline-block w-max`},[C(e,t,r[t]??null)]),[[tt,t=>{if(e!=s.value)return;let r=l.value[n];if(r==null)return;let i=Ro(r,t.width);if(i==r)return;let a=[...l.value];a[n]=i,l.value=a}]])}}))}),ee=q(()=>zo(l.value)),T=q(()=>u.value.map((e,t)=>{let n={__rowIndex:t};return c.value.forEach((t,r)=>{n[t]=e[r]??null}),n}));return(e,t)=>{let c=At,l=ge,u=Ze,p=y,m=$e,h=en,g=an,_=Yt;return I(),B(_,{show:V(n),class:`h-full min-h-0 [&_.n-spin-content]:h-full [&_.n-spin-content]:min-h-0`},{default:L(()=>[V(i)?(I(),B(c,{key:0,type:`error`,title:`数据库无法预览`},{default:L(()=>[G(F(V(i)),1)]),_:1})):!V(n)&&V(o).length==0?(I(),B(l,{key:1,description:`数据库中没有可展示的数据表`})):(I(),Y(`div`,Bo,[Z(`div`,Vo,[W(Or,{modelValue:V(d),"onUpdate:modelValue":t[0]||=e=>P(d)?d.value=e:null,"match-case":V(f).matchCase,"onUpdate:matchCase":t[1]||=e=>V(f).matchCase=e,"whole-word":V(f).wholeWord,"onUpdate:wholeWord":t[2]||=e=>V(f).wholeWord=e,"use-regex":V(f).useRegex,"onUpdate:useRegex":t[3]||=e=>V(f).useRegex=e,placeholder:`搜索数据表`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),Z(`div`,Ho,[(I(!0),Y(Pe,null,De(V(b),e=>(I(),B(p,{key:e.name,block:``,text:``,type:e.name==V(s)?`primary`:`default`,class:`h-34px justify-between px-6px`,onClick:t=>s.value=e.name},{default:L(()=>[Z(`span`,Uo,F(e.name),1),W(u,{size:`small`,bordered:!1},{default:L(()=>[G(F(e.count??`?`),1)]),_:2},1024)]),_:2},1032,[`type`,`onClick`]))),128))])]),V(v)?(I(),Y(`div`,Wo,[W(g,{type:`line`,animated:``,class:`h-full min-h-0 min-w-0 flex-1 [&_.n-tab-pane]:h-full [&_.n-tab-pane]:min-h-0 [&_.n-tab-pane]:min-w-0 [&_.n-tab-pane]:flex-1 [&_.n-tabs-pane-wrapper]:h-full [&_.n-tabs-pane-wrapper]:min-h-0 [&_.n-tabs-pane-wrapper]:min-w-0 [&_.n-tabs-pane-wrapper]:flex-1`},{default:L(()=>[W(h,{name:`data`,tab:V(v).count==null?`数据`:`数据 · ${V(v).count}`},{default:L(()=>[Z(`div`,Go,[V(a)?(I(),B(c,{key:0,type:`warning`,title:`当前数据表无法读取`,class:`w-full flex-none`},{default:L(()=>[G(F(V(a)),1)]),_:1})):U(``,!0),Z(`div`,Ko,[W(m,{striped:``,"virtual-scroll":``,"flex-height":``,scrollX:V(ee)||void 0,loading:V(r),columns:V(w),data:V(T),pagination:!1,rowKey:e=>Number(e.__rowIndex),size:`small`,class:`h-full w-full [&_.n-data-table-table]:min-w-full [&_.n-data-table-th]:whitespace-nowrap`},null,8,[`scrollX`,`loading`,`columns`,`data`,`rowKey`])])])]),_:1},8,[`tab`]),W(h,{name:`schema`,tab:`表结构`},{default:L(()=>[Z(`div`,{name:`sqlite-schema`,class:`box-border m-0 h-full overflow-auto whitespace-pre-wrap rounded-4px border border-[#e5e7eb] bg-[#fafafa] p-12px font-mono`,textContent:F(V(v).sql)},null,8,qo)]),_:1})]),_:1})])):U(``,!0)]))]),_:1},8,[`show`])}}}),Yo=e(ht(),1),Xo=10080*60*1e3,Zo=Yo.default.createInstance({name:`gkd-inspect-log`,storeName:`remote_logs`,version:1,driver:Yo.default.INDEXEDDB}),Qo=(e,t=Date.now())=>{if(!e||typeof e!=`object`)return!1;let n=e;return n.version==1&&typeof n.cachedAt==`number`&&Number.isFinite(n.cachedAt)&&typeof n.expiresAt==`number`&&Number.isFinite(n.expiresAt)&&n.expiresAt>t&&typeof n.name==`string`&&n.data instanceof ArrayBuffer},$o=async e=>{try{await Zo.removeItem(e)}catch{}},es=async e=>{try{let t=await Zo.getItem(e);if(Qo(t))return t;t&&await Zo.removeItem(e)}catch{}},ts=async(e,t,n)=>{let r=Date.now();try{let i=[];for(let t of await Zo.keys()){let n=await Zo.getItem(t);Qo(n,r)?t!=e&&i.push({key:t,value:n}):await Zo.removeItem(t)}i.sort((e,t)=>e.value.cachedAt-t.value.cachedAt);let a=i.reduce((e,t)=>e+t.value.data.byteLength,n.byteLength);for(;i.length>=10||a>209715200;){let e=i.shift();if(!e)break;a-=e.value.data.byteLength,await Zo.removeItem(e.key)}await Zo.setItem(e,{version:1,cachedAt:r,expiresAt:r+Xo,name:t,data:n})}catch{}},ns=10080*60*1e3,rs=Yo.default.createInstance({name:`gkd-inspect-log`,storeName:`build_assets`,version:1,driver:Yo.default.INDEXEDDB}),is=(e,t=Date.now())=>{if(!e||typeof e!=`object`)return!1;let n=e;return n.version==1&&typeof n.assetId==`number`&&Number.isSafeInteger(n.assetId)&&n.assetId>0&&typeof n.cachedAt==`number`&&Number.isFinite(n.cachedAt)&&typeof n.expiresAt==`number`&&Number.isFinite(n.expiresAt)&&n.expiresAt>t&&n.data instanceof ArrayBuffer},as=e=>String(e),os=async e=>{try{await rs.removeItem(as(e))}catch{}},ss=async e=>{let t=as(e);try{let n=await rs.getItem(t);if(is(n)&&n.assetId==e)return n;n&&await rs.removeItem(t)}catch{}},cs=async(e,t)=>{let n=Date.now();try{let r=[];for(let t of await rs.keys()){let i=await rs.getItem(t);is(i,n)?t!=as(e)&&r.push({key:t,value:i}):await rs.removeItem(t)}r.sort((e,t)=>e.value.cachedAt-t.value.cachedAt);let i=r.reduce((e,t)=>e+t.value.data.byteLength,t.byteLength);for(;r.length>=10||i>209715200;){let e=r.shift();if(!e)break;i-=e.value.data.byteLength,await rs.removeItem(e.key)}await rs.setItem(as(e),{version:1,assetId:e,cachedAt:n,expiresAt:n+ns,data:t})}catch{}},ls=RegExp(`^[\\t ]*at[\\t ]+[^\\r\\n]*r8-map-id-[a-f\\d]{64}(?=[:)\\s]|$)`,`im`),us=e=>ls.test(e),ds=50*1024*1024,fs=e=>e instanceof Error?e:Error(String(e)),ps=async(e,t)=>{let n=gt(`https://f.gkd.li/${e}`);if(!n)throw Error(`无法生成构建附件下载地址`);let r=await fetch(n,{credentials:`omit`,signal:t});if(!r.ok)throw Error(`构建附件下载失败: HTTP ${r.status}`);if(Number(r.headers.get(`content-length`)||0)>52428800)throw Error(`构建附件 ZIP 超过大小限制`);try{return await to(r,ds)}catch(e){throw e instanceof Error&&e.message==`响应内容超过大小限制`?Error(`构建附件 ZIP 超过大小限制`,{cause:e}):e}},ms=(e=>{let t=new Map;return n=>{let r=t.get(n);if(!r){let i=new AbortController,a=e(n,i.signal);r={task:a,controller:i,consumers:0,settled:!1},t.set(n,r),a.finally(()=>{r.settled=!0,t.get(n)==r&&t.delete(n)}).catch(()=>{})}r.consumers++;let i=!1;return{task:r.task,release:()=>{i||(i=!0,r.consumers--,!r.settled&&r.consumers==0&&r.controller.abort())}}}})(async(e,t)=>{let n=await yt(e,t);if(!n)throw Error(`未找到该版本的构建附件`);t.throwIfAborted();let r=await ss(n.assetId);if(t.throwIfAborted(),r)return{assetId:n.assetId,data:r.data};let i=await ps(n.assetId,t);return t.throwIfAborted(),await cs(n.assetId,i),t.throwIfAborted(),{assetId:n.assetId,data:i}}),hs=class{constructor(e){ut(this,`buildKey`,void 0),ut(this,`worker`,void 0),ut(this,`workerReadyTask`,void 0),ut(this,`rejectWorkerReady`,void 0),ut(this,`initializeTask`,void 0),ut(this,`releaseBuildAssetTask`,void 0),ut(this,`nextRequestId`,1),ut(this,`disposed`,!1),ut(this,`pendingRequests`,new Map),this.buildKey=e}dispose(){var e;this.disposed||(this.disposed=!0,(e=this.releaseBuildAssetTask)==null||e.call(this),this.releaseBuildAssetTask=void 0,this.stopWorker(new DOMException(`Retrace session disposed`,`AbortError`)))}async retrace(e,t){return this.disposed||!us(e)?e:(await this.ensureInitialized(),this.request({type:t==`crash`?`retrace-crash`:`retrace-log`,text:e}))}ensureInitialized(){if(!this.initializeTask){let e=this.initialize();this.initializeTask=e,e.catch(()=>{this.initializeTask==e&&(this.initializeTask=void 0)})}return this.initializeTask}async initialize(){let e=ms(this.buildKey);this.releaseBuildAssetTask=e.release;let t;try{if(t=await e.task,this.disposed)throw new DOMException(`Retrace session disposed`,`AbortError`);await this.register(t.data.slice(0))}catch(e){throw t&&!(e instanceof DOMException&&e.name==`AbortError`)&&await os(t.assetId),this.stopWorker(fs(e)),e}finally{this.releaseBuildAssetTask==e.release&&(this.releaseBuildAssetTask=void 0),e.release()}}async register(e){await this.request({type:`register`,data:e},[e])}getWorker(){if(this.worker)return this.worker;if(this.disposed)throw new DOMException(`Retrace session disposed`,`AbortError`);let e=new Worker(new URL(``+globalThis.location.origin+`/assets/worker-entry-retrace.worker-D-7uprht.js`,``+import.meta.url),{type:`module`}),t;return this.workerReadyTask=new Promise((e,n)=>{t=e,this.rejectWorkerReady=n}),e.onmessage=e=>{let n=e.data;if(`type`in n){t==null||t(),t=void 0,this.rejectWorkerReady=void 0;return}let r=this.pendingRequests.get(n.id);r&&(this.pendingRequests.delete(n.id),`error`in n?r.reject(Error(n.error)):r.resolve(n.result))},e.onerror=e=>{this.stopWorker(Error(e.message||`Retrace Worker 运行失败`))},this.worker=e,e}request(e,t=[]){return new Promise((n,r)=>{let i;try{i=this.getWorker()}catch(e){r(fs(e));return}let a=this.nextRequestId++;this.pendingRequests.set(a,{resolve:e=>n(e),reject:r}),this.workerReadyTask.then(()=>{if(this.pendingRequests.has(a))try{i.postMessage({id:a,...e},t)}catch(e){this.pendingRequests.delete(a),r(fs(e))}},e=>{this.pendingRequests.delete(a)&&r(fs(e))})})}stopWorker(e){var t,n;(t=this.worker)==null||t.terminate(),this.worker=void 0,(n=this.rejectWorkerReady)==null||n.call(this,e),this.workerReadyTask=void 0,this.rejectWorkerReady=void 0,this.initializeTask=void 0;for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}},gs={name:`log-page`,"page-size":``,class:`box-border flex min-h-700px min-w-1200px flex-col gap-10px bg-[#f8fafc] p-10px`},_s={name:`log-toolbar`,class:`h-42px flex items-center gap-10px`},vs=[`href`],ys={key:1,name:`log-workspace`,class:`flex min-h-0 flex-1 gap-10px`},bs={key:0,name:`archive-meta-content`,class:`min-w-0 flex-1`},xs=[`title`],Ss={name:`archive-stats`,class:`mt-3px text-12px text-[#64748b]`},Cs=[`aria-expanded`,`aria-label`,`title`],ws={name:`log-preview-panel`,class:`box-border flex min-h-0 min-w-0 flex-1 flex-col rounded-6px border border-[#e2e8f0] bg-white`},Ts={key:0,name:`preview-header`,class:`box-border min-h-52px flex items-center gap-10px border-b border-[#e5e7eb] px-12px py-8px [&>:first-child]:flex-1`},Es={"min-w-0":``},Ds=[`title`],Os={name:`preview-size`,class:`mt-3px text-12px text-[#64748b]`},ks={key:0,name:`apps-overview`,class:`flex flex-none items-center gap-6px whitespace-nowrap text-13px`},As={class:`font-600`},js={class:`font-600`},Ms={name:`preview-body`,class:`min-h-0 flex-1 p-12px`},Ns={key:2,name:`text-preview-wrapper`,class:`h-full min-h-0 flex flex-col gap-8px`},Ps={key:0,name:`text-preview-file-meta`,class:`min-w-0 max-w-260px flex-[0_1_260px] text-left`},Fs=[`title`],Is={name:`preview-size`,class:`mt-3px text-12px text-[#64748b]`},Ls={key:2,name:`log-empty-state`,class:`grid min-h-0 flex-1 place-items-center`},Rs={name:`drop-title`,class:`text-20px font-600`},zs=Q({__name:`LogPage`,setup(e){let t=ft(),n=dt(),r=X(),i=X(``),a=X(!1),o=X(!1),s=X(``),c=X(``),l=X(`none`),u=X(``),d=X(),f=X(),p=X(`users`),m=X([]),h=X(),g=X(!1),_=X([]),v=X(``),b=X(),x=X(``),S=X(!1),C=X(),w=X(),ee=X(),T=X(),E=X(),D=X(),te=X([]),ne=X(),re=X(!1),oe=X(!1),se=X(``),O=X(),ce=X(),k=X({}),le=X({}),A=X(),j=X(!1),M=0,N=0,ue=0,de,fe=0,pe=0,me,he,ve,ye=new Map,xe=q(()=>{var e;return(e=r.value)==null?void 0:e.entryMap.get(i.value)}),Se=()=>{ve==null||ve.dispose(),ve=void 0,ee.value=void 0,ye.clear(),T.value=void 0,E.value=void 0,D.value=void 0},Ce=(e,t)=>{let n=ye.get(e);if((n==null?void 0:n.originalText)==t)return n;let r=Fe({originalText:t,available:us(t),loading:!1,active:!1,autoAttempted:!1});return ye.set(e,r),r},we=e=>e.active&&e.retracedText!=null?e.retracedText:e.originalText,Te=async(e,t,n,r)=>{let i=ee.value;if(!e||!e.available||!i||e.loading)return;if(e.active){e.active=!1,r(e.originalText);return}if(e.retracedText!=null){e.active=!0,r(e.retracedText);return}let a=ve||=new hs(i);e.loading=!0;try{let i=await a.retrace(e.originalText,t);if(i==e.originalText){n()&&Ke.warning(`没有找到与当前 mapping 匹配的堆栈`);return}if(e.retracedText=i,e.active=!0,!n())return;r(i)}catch(e){if(e instanceof DOMException&&e.name==`AbortError`||!n())return;Ke.error(`堆栈还原失败: ${e instanceof Error?e.message:String(e)}`)}finally{e.loading=!1}},Ee=(e,t,n,r)=>{!(e!=null&&e.available)||e.autoAttempted||(e.autoAttempted=!0,Te(e,t,n,r))},De=()=>{let e=T.value;Te(e,`log`,()=>T.value==e,t=>{T.value==e&&(u.value=t)})},Oe=()=>{let e=E.value;Te(e,`crash`,()=>E.value==e,t=>{E.value!=e||!h.value||(h.value=H({...h.value,stackTrace:t}))})},ke=()=>{let e=D.value;Te(e,`log`,()=>D.value==e,t=>{D.value==e&&(b.value=t)})},Ae=()=>{ue++,h.value=void 0,E.value=void 0,g.value=!1},je=()=>{de=void 0,m.value=[],Ae()},Me=()=>{fe++,v.value=``,b.value=void 0,D.value=void 0,x.value=``,S.value=!1},Ne=()=>{pe++,ne.value=void 0,re.value=!1,oe.value=!1},Pe=()=>{_.value=[],C.value=void 0,w.value=void 0,te.value=[],me=void 0,Me(),Ne()},K=()=>{o.value=!1,l.value=`none`,u.value=``,T.value=void 0,d.value=void 0,f.value=void 0,p.value=`users`,se.value=``,O.value=void 0,ce.value=void 0,k.value={},le.value={},Ae(),Me(),Ne()},J=async e=>{let t=++N;if(s.value=``,K(),e){i.value=e.path,o.value=!0;try{if(e.kind==`database`){if(!r.value)return;let[n,i,a]=await Promise.all([Na(r.value,e),Ga(r.value),qa(r.value)]);if(t!=N)return;O.value=H(n.database),ce.value=n.wal?H(n.wal):void 0,k.value=H(i),le.value=H(a),l.value=`database`;return}if(e.kind==`text`){let n=await Ma(e);if(t!=N)return;let r=Pa(n),i=Ce(`text:${e.path}`,r);T.value=i,u.value=we(i),l.value=`text`,Ee(i,`log`,()=>T.value==i,e=>{T.value==i&&(u.value=e)});return}if(e.kind==`json`){let n=Pa(await Ma(e,va));if(t!=N)return;u.value=n;try{let t=JSON.parse(n);d.value=t;let r=mn(t),i=e.path.toLowerCase().split(`/`).at(-1)==`apps.json`&&!r?Rr(t):void 0;i?(f.value=H(i),l.value=`apps`):!r&&Ya(e,t)?l.value=`subscription`:l.value=`json`}catch(e){se.value=e instanceof Error?e.message:String(e),l.value=`invalid-json`}return}l.value=`unsupported`}catch(e){if(t!=N)return;s.value=e instanceof Error?e.message:String(e),l.value=`unsupported`}finally{t==N&&(o.value=!1)}}},Ie=async()=>{let e=r.value;if(!e)return;let t=Xr(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,K(),i.value=zr,l.value=`crash`,m.value.length!=t.length){o.value=!0;try{de||=ii(t,async e=>Pa(await Ma(e,va)));let a=await de;if(n!=N||e!=r.value||i.value!=zr)return;m.value=H(a)}catch(e){if(n!=N)return;s.value=e instanceof Error?e.message:String(e),l.value=`unsupported`}finally{n==N&&(o.value=!1)}}},Q=async e=>{let t=r.value,n=t==null?void 0:t.entryMap.get(e);if(!t||!n||!Jr(n.path))return;let i=++ue;if(h.value=void 0,E.value=void 0,g.value=!0,!Yr(n.path)){h.value=H(ni(n.path)),g.value=!1;return}try{let e=Pa(await Ma(n,va));if(i!=ue||t!=r.value||l.value!=`crash`)return;let a=Qr(e,n.path);if(a.stackTrace){let e=Ce(`crash:${n.path}`,a.stackTrace);E.value=e,h.value=H({...a,stackTrace:we(e)}),Ee(e,`crash`,()=>E.value==e,t=>{E.value!=e||!h.value||(h.value=H({...h.value,stackTrace:t}))})}else h.value=H(a)}catch(e){if(i!=ue)return;h.value=H(ei(n.path,e))}finally{i==ue&&(g.value=!1)}},Le=()=>{let e=r.value;if(!e)return;let t=Di(e.entries);t.length!=0&&(N++,s.value=``,K(),i.value=xi,_.value=H(ji(t)),l.value=`log-directory`)},$=async e=>{let t=r.value,n=t==null?void 0:t.entryMap.get(e);if(!t||!n||!Ti(n.path))return;let i=++fe;v.value=n.path,b.value=void 0,D.value=void 0,x.value=``,S.value=!0;try{let e=Pa(await Ma(n));if(i!=fe||t!=r.value||l.value!=`log-directory`)return;let a=Ce(`log:${n.path}`,e);D.value=a,b.value=we(a),Ee(a,`log`,()=>D.value==a,e=>{D.value==a&&(b.value=e)})}catch(e){if(i!=fe)return;x.value=e instanceof Error?e.message:String(e)}finally{i==fe&&(S.value=!1)}},ze=async()=>{let e=r.value;if(!e)return;let t=Oi(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,K(),i.value=Si,l.value=`subscription-directory`,te.value.length!=t.length){o.value=!0;try{me||=Ji(t,async e=>Pa(await Ma(e,va)));let a=await me;if(n!=N||e!=r.value||i.value!=Si)return;te.value=H(a)}catch(e){if(n!=N)return;s.value=e instanceof Error?e.message:String(e),l.value=`unsupported`}finally{n==N&&(o.value=!1)}}},Be=async e=>{let t=r.value,n=t==null?void 0:t.entryMap.get(e);if(!t||!n||!Ei(n.path))return;let i=++pe;if(ne.value=void 0,re.value=!1,oe.value=!0,!Bi(n.path)){ne.value=H(Ki(n.path)),oe.value=!1;return}try{let e=Pa(await Ma(n,va));if(i!=pe||t!=r.value||l.value!=`subscription-directory`)return;let a=Hi(e,n.path);ne.value=H(a),re.value=a.parsed&&Ja(a.value)}catch(e){if(i!=pe)return;ne.value=H(Wi(n.path,e))}finally{i==pe&&(oe.value=!1)}},Ve=async(e,t,n=++M)=>{Se(),N++,je(),Pe(),a.value=!0,s.value=``,K(),r.value=void 0,i.value=``;try{let i=await Oa(e,t||`log.zip`);if(n!=M)return;let[a,o,s]=await Promise.all([Ra(i),Va(i),Ba(i)]);if(n!=M)return;r.value=i,w.value=a?H(a):void 0,C.value=o?H(o):void 0,ee.value=s;let c=Da(i);return c&&Ti(c.path)?Le():c&&Jr(c.path)?await Ie():c&&Ei(c.path)?await ze():c?await J(c):Di(i.entries).length?Le():Xr(i.entries).length?await Ie():Oi(i.entries).length&&await ze(),n==M}catch(e){return n==M?(s.value=e instanceof Error?e.message:String(e),!1):void 0}finally{n==M&&(a.value=!1)}},He=(e,t)=>{var n,r,i;let a=e.headers.get(`content-disposition`)||``,o=(n=a.match(/filename\*=UTF-8''([^;]+)/i))==null?void 0:n[1],s=(r=a.match(/filename="?([^";]+)"?/i))==null?void 0:r[1],c=o||s;if(c)try{return decodeURIComponent(c)}catch{return c}if((i=t.name)!=null&&i.toLowerCase().endsWith(`.zip`))return t.name;try{let n=new URL(e.url||t.url).pathname.split(`/`).filter(Boolean).at(-1);if(n)return decodeURIComponent(n)}catch{}return`log.zip`},Ue=async(e,t,n)=>{let r=await es(e.url);if(t!=M)return;if(r){if(await Ve(r.data,r.name,t)||t!=M)return;await $o(e.url),a.value=!0,s.value=``}let i=!1,o;try{o=await mt(e.url,{credentials:`omit`,signal:n.signal},e=>({...e,anonymous:!0,onprogress(t){var r;(r=e.onprogress)==null||r.call(t,t),t.loaded>52428800&&(i=!0,n.abort())}}))}catch(e){throw i?Error(`ZIP 文件不能超过 ${Xa(ma)}`,{cause:e}):e}if(!o.ok)throw Error(`HTTP ${o.status}`);if(Number(o.headers.get(`content-length`)||0)>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ma)}`);let c;try{c=await to(o,ma)}catch(e){throw e instanceof Error&&e.message==`响应内容超过大小限制`?Error(`ZIP 文件不能超过 ${Xa(ma)}`,{cause:e}):e}if(t!=M)return;let l=He(o,e);await Ve(c,l,t)&&ts(e.url,l,c)},We=()=>t.path==`/log`?lt(t.query.url):st(t.params.pathMatch),Ge=async()=>{he==null||he.abort(),Se();let e=new AbortController;he=e;let t=We(),n=++M;if(N++,je(),Pe(),r.value=void 0,i.value=``,K(),s.value=``,!t){a.value=!1,c.value=``;return}c.value=t.url,a.value=!0;try{await Ue(t,n,e)}catch(e){if(n!=M)return;s.value=e instanceof Error?e.message:String(e),a.value=!1}};R(()=>t.fullPath,Ge,{immediate:!0}),be(()=>{he==null||he.abort(),Se()});let qe=async()=>{let e=ot(c.value);if(!e){Ke.warning(`请输入有效的 HTTP/HTTPS 链接`);return}n.resolve(e).fullPath==t.fullPath?await Ge():await n.push(e)},Je=async e=>{let r=e.find(e=>e.name.toLowerCase().endsWith(`.zip`));r&&(he==null||he.abort(),he=void 0,M++,t.fullPath!=`/log`&&await n.replace(`/log`),c.value=``,await Ve(r,r.name))},Ye=()=>{var e;return(e=A.value)==null?void 0:e.click()},Ze=()=>{let e=A.value;if(!e)return;let t=[...e.files||[]];e.value=``,Je(t)};ie(document.body,`dragover`,e=>e.preventDefault()),ie(document.body,`drop`,e=>{e.preventDefault();let t=pt(e);if(!t.some(e=>e.name.toLowerCase().endsWith(`.zip`))){Ke.warning(`请拖入 ZIP 文件`);return}Je(t)});let Qe=q(()=>{var e;let t=[],n=new Map,i=((e=r.value)==null?void 0:e.entries)||[],a=Xr(i),o=Di(i),s=Oi(i);for(let e of i){if(Jr(e.path)||Ti(e.path)||Ei(e.path))continue;let r=e.path.split(`/`).filter(Boolean),i=t,a=``;r.forEach((t,o)=>{a=a?`${a}/${t}`:t;let s=n.get(a);if(!s){let c=o==r.length-1;s={key:a,label:t,path:c?e.path:void 0,isFile:c,children:c?void 0:[]},n.set(a,s),i.push(s)}i=s.children||[]})}return a.length&&t.push({key:zr,label:`crash (${a.length})`,isFile:!0}),o.length&&t.push({key:xi,label:`log (${o.length})`,isFile:!0}),s.length&&t.push({key:Si,label:`subscription (${s.length})`,isFile:!0}),t.sort((e,t)=>String(e.label||``).localeCompare(String(t.label||``),`zh-CN`)),t}),$e=e=>{var t;let n=String(e[0]||``);if(n==zr){Ie();return}if(n==xi){Le();return}if(n==Si){ze();return}let i=(t=r.value)==null?void 0:t.entryMap.get(n);i&&J(i)};return(e,t)=>{var n,ie,M,N,ue,de,fe;let pe=y,me=Re(`RouterLink`),he=Xe,ve=_e,ye=At,be=Re(`SvgIcon`),Se=at,Ce=nt,we=Yt,Te=ge;return I(),Y(`div`,gs,[Z(`div`,_s,[W(me,{to:`/`,flex:``,"items-center":``},{default:L(()=>[W(pe,{quaternary:``},{default:L(()=>[...t[5]||=[G(`返回首页`,-1)]]),_:1})]),_:1}),t[8]||=Z(`div`,{name:`log-title`,class:`flex-none text-18px font-600`},` 日志包查看器 `,-1),V(w)?(I(),Y(`a`,{key:0,href:V(w).commitUrl,target:`_blank`,rel:`noopener noreferrer`,class:`flex-none text-14px text-[#2563eb] hover:underline`},F(V(w).versionName)+` (`+F(V(w).versionCode)+`) `,9,vs)):U(``,!0),W(ve,{class:`ml-auto min-w-420px max-w-720px`},{default:L(()=>[W(he,{value:V(c),"onUpdate:value":t[0]||=e=>P(c)?c.value=e:null,clearable:``,placeholder:`粘贴 GitHub、f.gkd.li 或其他 ZIP 链接`,onKeyup:ae(qe,[`enter`])},null,8,[`value`]),W(pe,{type:`primary`,loading:V(a),onClick:qe},{default:L(()=>[...t[6]||=[G(` 加载链接 `,-1)]]),_:1},8,[`loading`])]),_:1}),W(pe,{disabled:V(a),onClick:Ye},{default:L(()=>[...t[7]||=[G(` 选择本地 ZIP `,-1)]]),_:1},8,[`disabled`]),Z(`input`,{ref_key:`localFileInput`,ref:A,hidden:``,type:`file`,accept:`.zip,application/zip`,onChange:Ze},null,544)]),V(s)?(I(),B(ye,{key:0,type:`error`,closable:``,onClose:t[1]||=e=>s.value=``},{default:L(()=>[G(F(V(s)),1)]),_:1})):U(``,!0),V(r)?(I(),Y(`div`,ys,[Z(`div`,{name:`log-file-panel`,class:z([`box-border flex min-h-0 flex-col rounded-6px border border-[#e2e8f0] bg-white transition-[width,min-width] duration-180 ease`,V(j)?`w-44px min-w-44px`:`w-300px min-w-300px`])},[Z(`div`,{name:`archive-meta`,class:z([`flex min-w-0 items-start gap-8px`,V(j)?`justify-center border-b-0 p-8px`:`border-b border-[#e5e7eb] p-12px`])},[V(j)?U(``,!0):(I(),Y(`div`,bs,[Z(`div`,{name:`archive-name`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:V(r).name},F(V(r).name),9,xs),Z(`div`,Ss,F(V(r).entries.length)+` 个文件 · `+F(V(Xa)(V(r).uncompressedSize)),1)])),Z(`button`,{type:`button`,class:`inline-grid h-26px w-26px flex-none cursor-pointer place-items-center rounded-4px border-0 bg-transparent p-0 text-[#64748b] hover:bg-[#e2e8f0] hover:text-[#0f172a] focus-visible:outline focus-visible:outline-1 focus-visible:outline-[#2563eb] focus-visible:outline-offset-1`,"aria-expanded":!V(j),"aria-label":V(j)?`展开文件列表`:`收起文件列表`,title:V(j)?`展开文件列表`:`收起文件列表`,onClick:t[2]||=e=>j.value=!V(j)},[W(be,{name:`arrow`,class:z([`h-17px w-17px transition-transform duration-180 ease`,V(j)?`-rotate-90`:`rotate-90`])},null,8,[`class`])],8,Cs)],2),V(j)?U(``,!0):(I(),B(Se,{key:0,blockLine:``,virtualScroll:``,defaultExpandAll:``,data:V(Qe),selectedKeys:V(i)?[V(i)]:[],class:`min-h-0 flex-1 p-8px`,"onUpdate:selectedKeys":$e},null,8,[`data`,`selectedKeys`]))],2),Z(`div`,ws,[V(xe)&&V(xe).kind!=`text`&&V(l)!=`invalid-json`?(I(),Y(`div`,Ts,[Z(`div`,Es,[Z(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:V(xe).path},F(V(xe).path),9,Ds),Z(`div`,Os,F(V(Xa)(V(xe).size)),1)]),V(l)==`apps`&&V(f)?(I(),Y(`div`,ks,[W(Ce,{size:`small`},{default:L(()=>[W(pe,{type:V(p)==`users`?`primary`:`default`,secondary:V(p)==`users`,onClick:t[3]||=e=>p.value=`users`},{default:L(()=>[...t[9]||=[G(` 按用户查看 `,-1)]]),_:1},8,[`type`,`secondary`]),W(pe,{type:V(p)==`raw`?`primary`:`default`,secondary:V(p)==`raw`,onClick:t[4]||=e=>p.value=`raw`},{default:L(()=>[...t[10]||=[G(` 原始 JSON `,-1)]]),_:1},8,[`type`,`secondary`])]),_:1}),t[11]||=Z(`span`,{class:`mx-6px h-16px border-l border-[#e2e8f0]`},null,-1),t[12]||=Z(`span`,{class:`text-[#64748b]`},`应用安装记录`,-1),Z(`span`,As,F(V(f).totalApps),1),t[13]||=Z(`span`,{class:`mx-4px text-[#cbd5e1]`},`·`,-1),t[14]||=Z(`span`,{class:`text-[#64748b]`},`设备用户`,-1),Z(`span`,js,F(V(f).users.length),1)])):U(``,!0)])):U(``,!0),Z(`div`,Ms,[V(o)?(I(),B(we,{key:0,show:``,class:`h-full w-full`})):V(l)==`none`?(I(),B(Te,{key:1,description:`该日志包没有可预览内容`})):V(l)==`text`||V(l)==`invalid-json`?(I(),Y(`div`,Ns,[V(l)==`invalid-json`?(I(),B(ye,{key:0,type:`warning`,title:`JSON 解析失败,以下为原始内容`,class:`flex-none`},{default:L(()=>[G(F(V(se)),1)]),_:1})):U(``,!0),W(br,{value:V(u),documentKey:(n=V(xe))==null?void 0:n.path,"search-placeholder":`搜索当前文件`,"allow-wrap":``,copyable:``},{"toolbar-start":L(()=>{var e,t,n;return[V(xe)?(I(),Y(`div`,Ps,[Z(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:V(xe).path},F(V(xe).path),9,Fs),Z(`div`,Is,F(V(Xa)(V(xe).size)),1)])):U(``,!0),W(mi,{available:!!V(ee)&&!!((e=V(T))!=null&&e.available),loading:(t=V(T))==null?void 0:t.loading,retraced:(n=V(T))==null?void 0:n.active,onToggle:De},null,8,[`available`,`loading`,`retraced`])]}),_:1},8,[`value`,`documentKey`])])):V(l)==`json`?(I(),B(ia,{key:V(i),value:V(d),raw:V(u)},null,8,[`value`,`raw`])):V(l)==`crash`?(I(),B(bi,{key:4,items:V(m),detail:V(h),detailLoading:V(g),retraceAvailable:!!V(ee)&&!!((ie=V(E))!=null&&ie.available),retraceLoading:(M=V(E))==null?void 0:M.loading,retraceActive:(N=V(E))==null?void 0:N.active,sourceLinkContext:V(C),onSelect:Q,onToggleRetrace:Oe},null,8,[`items`,`detail`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):V(l)==`log-directory`?(I(),B(eo,{key:5,items:V(_),detailPath:V(v),detailText:V(b),detailError:V(x),detailLoading:V(S),retraceAvailable:!!V(ee)&&!!((ue=V(D))!=null&&ue.available),retraceLoading:(de=V(D))==null?void 0:de.loading,retraceActive:(fe=V(D))==null?void 0:fe.active,sourceLinkContext:V(C),onSelect:$,onToggleRetrace:ke},null,8,[`items`,`detailPath`,`detailText`,`detailError`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):V(l)==`subscription-directory`?(I(),B(So,{key:6,items:V(te),detail:V(ne),detailStructured:V(re),detailLoading:V(oe),onSelect:Be},null,8,[`items`,`detail`,`detailStructured`,`detailLoading`])):V(l)==`apps`&&V(f)?(I(),B(Mr,{key:V(i),data:V(f),value:V(d),raw:V(u),view:V(p)},null,8,[`data`,`value`,`raw`,`view`])):V(l)==`subscription`&&V(Ja)(V(d))?(I(),B(mo,{key:V(i),value:V(d),raw:V(u)},null,8,[`value`,`raw`])):V(l)==`database`&&V(O)?(I(),B(Jo,{key:V(i),database:V(O),wal:V(ce),"app-names":V(k),"subscription-names":V(le)},null,8,[`database`,`wal`,`app-names`,`subscription-names`])):(I(),B(Te,{key:10,description:`该文件不支持预览`}))])])])):(I(),Y(`div`,Ls,[W(we,{show:V(a)},{default:L(()=>[Z(`div`,{name:`drop-zone`,class:`box-border h-300px w-620px flex cursor-pointer flex-col items-center justify-center rounded-12px border-2 border-[#94a3b8] border-dashed bg-white transition-colors duration-200 hover:border-[#18a058]`,onClick:Ye},[W(be,{name:`import`,class:`mb-18px h-48px w-48px`}),Z(`div`,Rs,F(V(a)?`正在下载并解析日志包…`:`拖拽 ZIP 到这里`),1),t[15]||=Z(`div`,{name:`drop-description`,class:`mt-8px text-[#64748b]`},` 或点击选择本地 ZIP 文件 `,-1),t[16]||=Z(`div`,{name:`privacy-tip`,class:`mt-24px text-12px text-[#94a3b8]`},` 文件只在当前浏览器中解析,不会上传;远程日志会在本机缓存最多 7 天 `,-1)])]),_:1},8,[`show`])]))])}}});export{zs as default};
|
|
537
|
+
//# sourceMappingURL=LogPage-sbyqnztd.js.map
|