@gkd-kit/inspect 0.0.1788318829065 → 0.0.1788335250494
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-YHv4iq9A.js → LogPage-C1yiUmHJ.js} +2 -2
- package/dist/assets/{LogPage-YHv4iq9A.js.map → LogPage-C1yiUmHJ.js.map} +1 -1
- package/dist/assets/SnapshotPage-QAGCebjq.js +90 -0
- package/dist/assets/SnapshotPage-QAGCebjq.js.map +1 -0
- package/dist/assets/chunk-b1pD882I.js +1 -1
- package/dist/assets/{index-DuglLeBL.css → index-BqnmSqbH.css} +1 -1
- package/dist/assets/{index-Caf4ctBu.js → index-CPOqVXAz.js} +7 -10
- package/dist/assets/index-CPOqVXAz.js.map +1 -0
- package/dist/assets/{sql-wasm-browser-CVduZJdb.js → sql-wasm-browser-J3_O0yPB.js} +2 -2
- package/dist/assets/{sql-wasm-browser-CVduZJdb.js.map → sql-wasm-browser-J3_O0yPB.js.map} +1 -1
- package/dist/assets/{worker-entry-retrace.worker-OZ-QGs6s.js → worker-entry-retrace.worker-X1XSEkdm.js} +2 -2
- package/dist/assets/{worker-entry-retrace.worker-OZ-QGs6s.js.map → worker-entry-retrace.worker-X1XSEkdm.js.map} +1 -1
- package/dist/assets/{worker-entry-sqlite.worker-CVPb-Ur3.js → worker-entry-sqlite.worker-CFNgsksJ.js} +2 -2
- package/dist/assets/{worker-entry-sqlite.worker-CVPb-Ur3.js.map → worker-entry-sqlite.worker-CFNgsksJ.js.map} +1 -1
- package/dist/index.html +16 -16
- package/package.json +1 -1
- package/dist/assets/SnapshotPage-DNbjRhLE.js +0 -90
- package/dist/assets/SnapshotPage-DNbjRhLE.js.map +0 -1
- package/dist/assets/index-Caf4ctBu.js.map +0 -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.1788335250494/files/dist/assets/polyfills-KVwCYglC.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.1788335250494/files/dist/assets/index-CPOqVXAz.js"></script>
|
|
16
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/chunk-62oNxeRG.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/preload-helper-xBbMyY7u.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/runtime-core.esm-bundler-spSacuTK.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/dist-B2Pcnxhs.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/gkd-selector-CB_8ygle.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/buildMatchPatternFn-CZEJ4ft3.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/log_url-WCrpXKNG.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/discrete-DmM4SDKb.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/vue-router-CcUhA2y_.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/others-CK-a5s9u.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/global-0JiT2NGT.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/check-CS17j5yC.js">
|
|
28
|
+
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/others-D6OXBwtH.css">
|
|
29
|
+
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1788335250494/files/dist/assets/index-BqnmSqbH.css">
|
|
30
30
|
</head>
|
|
31
31
|
<body>
|
|
32
32
|
</body>
|
|
@@ -533,5 +533,5 @@ import{i as e}from"./chunk-62oNxeRG.js";import{C as t,Cn as n,D as r,Dt as i,E a
|
|
|
533
533
|
border-top: 1px solid var(--n-tab-border-color);
|
|
534
534
|
`),j(`tabs-pad`,`
|
|
535
535
|
border-top: 1px solid var(--n-tab-border-color);
|
|
536
|
-
`)])])])]),an=Tt,on=Z({name:`Tabs`,props:Object.assign(Object.assign({},c.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}){let{mergedClsPrefixRef:r,inlineThemeDisabled:a,mergedComponentPropsRef:o}=O(e),s=c(`Tabs`,`-tabs`,rn,qt,e,r),l=G(null),d=G(null),f=G(null),p=G(null),m=G(null),h=G(null),g=G(!0),_=G(!0),v=ue(e,[`labelSize`,`size`]),y=K(()=>v.value?v.value:o?.value?.Tabs?.size||`medium`),b=ue(e,[`activeName`,`value`]),S=G(b.value??e.defaultValue??(t.default?i(t.default())[0]?.props?.name:null)),C=Ye(b,S),ee={id:0},w=K(()=>{if(!(!e.justifyContent||e.type===`card`))return{display:`flex`,justifyContent:e.justifyContent}});Te(C,()=>{ee.id=0,ne(),k()});function T(){let{value:e}=C;return e===null?null:l.value?.querySelector(`[data-name="${e}"]`)}function E(t){if(e.type===`card`)return;let{value:n}=d;if(!n)return;let i=n.style.opacity===`0`;if(t){let a=`${r.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(te([`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`,i&&(n.style.transition=`none`),n.offsetWidth,i&&(n.style.transition=``,n.style.opacity=`1`)}else{if(te([`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`,i&&(n.style.transition=`none`),n.offsetHeight,i&&(n.style.transition=``,n.style.opacity=`1`)}}}function D(){if(e.type===`card`)return;let{value:t}=d;t&&(t.style.opacity=`0`)}function te(e){let{value:t}=d;if(t)for(let n of e)t.style[n]=``}function ne(){if(e.type===`card`)return;let t=T();t?E(t):D()}function k(){let e=m.value?.$el;if(!e)return;let t=T();if(!t)return;let{scrollLeft:n,offsetWidth:r}=e,{offsetLeft:i,offsetWidth:a}=t;n>i?e.scrollTo({top:0,left:i,behavior:`smooth`}):i+a>n+r&&e.scrollTo({top:0,left:i+a-r,behavior:`smooth`})}let ae=G(null),oe=0,se=null;function A(e){let t=ae.value;if(t){oe=e.getBoundingClientRect().height;let n=`${oe}px`,r=()=>{t.style.height=n,t.style.maxHeight=n};se?(r(),se(),se=null):se=r}}function j(e){let t=ae.value;if(t){let n=e.getBoundingClientRect().height,r=()=>{document.body.offsetHeight,t.style.maxHeight=`${n}px`,t.style.height=`${Math.max(oe,n)}px`};se?(se(),se=null,r()):se=r}}function ce(){let t=ae.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 le={value:[]},M=G(`next`);function N(e){let t=C.value,n=`next`;for(let r of le.value){if(r===t)break;if(r===e){n=`prev`;break}}M.value=n,de(e)}function de(t){let{onActiveNameChange:n,onUpdateValue:r,"onUpdate:value":i}=e;n&&u(n,t),r&&u(r,t),i&&u(i,t),S.value=t}function fe(t){let{onClose:n}=e;n&&u(n,t)}let pe=!0;function he(){let{value:e}=d;if(!e)return;pe||=!1;let t=`transition-disabled`;e.classList.add(t),ne(),e.classList.remove(t)}let P=G(null);function ge({transitionDisabled:e}){let t=l.value;if(!t)return;e&&t.classList.add(`transition-disabled`);let n=T();n&&P.value&&(P.value.style.width=`${n.offsetWidth}px`,P.value.style.height=`${n.offsetHeight}px`,P.value.style.transform=`translateX(${n.offsetLeft-x(getComputedStyle(t).paddingLeft)}px)`,e&&P.value.offsetWidth),e&&t.classList.remove(`transition-disabled`)}Te([C],()=>{e.type===`segment`&&xe(()=>{ge({transitionDisabled:!1})})}),De(()=>{e.type===`segment`&&ge({transitionDisabled:!0})});let _e=0;function ve(t){if(t.contentRect.width===0&&t.contentRect.height===0||_e===t.contentRect.width)return;_e=t.contentRect.width;let{type:n}=e;if((n===`line`||n===`bar`)&&(pe||e.justifyContent?.startsWith(`space`))&&he(),n!==`segment`){let{placement:t}=e;Ce((t===`top`||t===`bottom`?m.value?.$el:h.value)||null)}}let ye=an(ve,64);Te([()=>e.justifyContent,()=>e.size],()=>{xe(()=>{let{type:t}=e;(t===`line`||t===`bar`)&&he()})});let F=G(!1);function be(t){let{target:n,contentRect:{width:r,height:i}}=t,a=n.parentElement.parentElement.offsetWidth,o=n.parentElement.parentElement.offsetHeight,{placement:s}=e;if(!F.value)s===`top`||s===`bottom`?a<r&&(F.value=!0):o<i&&(F.value=!0);else{let{value:e}=p;if(!e)return;s===`top`||s===`bottom`?a-r>e.$el.offsetWidth&&(F.value=!1):o-i>e.$el.offsetHeight&&(F.value=!1)}Ce(m.value?.$el||null)}let I=an(be,64);function Se(){let{onAdd:t}=e;t&&t(),xe(()=>{let e=T(),{value:t}=m;!e||!t||t.scrollTo({left:e.offsetLeft,top:0,behavior:`smooth`})})}function Ce(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=an(e=>{Ce(e.target)},64);we($t,{triggerRef:q(e,`trigger`),tabStyleRef:q(e,`tabStyle`),tabClassRef:q(e,`tabClass`),addTabStyleRef:q(e,`addTabStyle`),addTabClassRef:q(e,`addTabClass`),paneClassRef:q(e,`paneClass`),paneStyleRef:q(e,`paneStyle`),mergedClsPrefixRef:r,typeRef:q(e,`type`),closableRef:q(e,`closable`),valueRef:C,tabChangeIdRef:ee,onBeforeLeaveRef:q(e,`onBeforeLeave`),activateTab:N,handleClose:fe,handleAdd:Se}),me(()=>{ne(),k()}),Ie(()=>{let{value:e}=f;if(!e)return;let{value:t}=r,n=`${t}-tabs-nav-scroll-wrapper--shadow-start`,i=`${t}-tabs-nav-scroll-wrapper--shadow-end`;g.value?e.classList.remove(n):e.classList.add(n),_.value?e.classList.remove(i):e.classList.add(i)});let R={syncBarPosition:()=>{ne()}},Ee=()=>{ge({transitionDisabled:!0})},Oe=K(()=>{let{value:t}=y,{type:r}=e,i=`${t}${{card:`Card`,bar:`Bar`,line:`Line`,segment:`Segment`}[r]}`,{self:{barColor:a,closeIconColor:o,closeIconColorHover:c,closeIconColorPressed:l,tabColor:u,tabBorderColor:d,paneTextColor:f,tabFontWeight:p,tabBorderRadius:m,tabFontWeightActive:h,colorSegment:g,fontWeightStrong:_,tabColorSegment:v,closeSize:b,closeIconSize:x,closeColorHover:S,closeColorPressed:C,closeBorderRadius:ee,[n(`panePadding`,t)]:w,[n(`tabPadding`,i)]:T,[n(`tabPaddingVertical`,i)]:E,[n(`tabGap`,i)]:D,[n(`tabGap`,`${i}Vertical`)]:O,[n(`tabTextColor`,r)]:te,[n(`tabTextColorActive`,r)]:ne,[n(`tabTextColorHover`,r)]:k,[n(`tabTextColorDisabled`,r)]:ie,[n(`tabFontSize`,t)]:ae},common:{cubicBezierEaseInOut:oe}}=s.value;return{"--n-bezier":oe,"--n-color-segment":g,"--n-bar-color":a,"--n-tab-font-size":ae,"--n-tab-text-color":te,"--n-tab-text-color-active":ne,"--n-tab-text-color-disabled":ie,"--n-tab-text-color-hover":k,"--n-pane-text-color":f,"--n-tab-border-color":d,"--n-tab-border-radius":m,"--n-close-size":b,"--n-close-icon-size":x,"--n-close-color-hover":S,"--n-close-color-pressed":C,"--n-close-border-radius":ee,"--n-close-icon-color":o,"--n-close-icon-color-hover":c,"--n-close-icon-color-pressed":l,"--n-tab-color":u,"--n-tab-font-weight":p,"--n-tab-font-weight-active":h,"--n-tab-padding":T,"--n-tab-padding-vertical":E,"--n-tab-gap":D,"--n-tab-gap-vertical":O,"--n-pane-padding-left":re(w,`left`),"--n-pane-padding-right":re(w,`right`),"--n-pane-padding-top":re(w,`top`),"--n-pane-padding-bottom":re(w,`bottom`),"--n-font-weight-strong":_,"--n-tab-color-segment":v}}),ke=a?ie(`tabs`,K(()=>`${y.value[0]}${e.type[0]}`),Oe,e):void 0;return Object.assign({mergedClsPrefix:r,mergedValue:C,renderedNames:new Set,segmentCapsuleElRef:P,tabsPaneWrapperRef:ae,tabsElRef:l,barElRef:d,addTabInstRef:p,xScrollInstRef:m,scrollWrapperElRef:f,addTabFixed:F,tabWrapperStyle:w,handleNavResize:ye,mergedSize:y,handleScroll:L,handleTabsResize:I,cssVars:a?void 0:Oe,themeClass:ke?.themeClass,animationDirection:M,renderNameListRef:le,yScrollElRef:h,handleSegmentResize:Ee,onAnimationBeforeLeave:A,onAnimationEnter:j,onAnimationAfterEnter:ce,onRender:ke?.onRender},R)},render(){let{mergedClsPrefix:e,type:t,placement:n,addTabFixed:r,addable:a,mergedSize:o,renderNameListRef:s,onRender:c,paneWrapperClass:u,paneWrapperStyle:d,$slots:{default:p,prefix:m,suffix:h}}=this;c?.();let g=p?i(p()).filter(e=>e.type.__TAB_PANE__===!0):[],_=p?i(p()).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=Q(`div`,{style:this.tabWrapperStyle,class:`${e}-tabs-wrapper`},x?null:Q(`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),un(Q(nn,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),un(t!==0&&!x?ln(e):e))),!r&&a&&y?cn(a,(v?g.length:_.length)!==0):null,x?null:Q(`div`,{class:`${e}-tabs-scroll-padding`,style:{width:`${this.tabsPadding}px`}}));return Q(`div`,{ref:`tabsElRef`,class:`${e}-tabs-nav-scroll-content`},y&&a?Q(l,{onResize:this.handleTabsResize},{default:()=>t}):t,y?Q(`div`,{class:`${e}-tabs-pad`}):null,y?null:Q(`div`,{ref:`barElRef`,class:`${e}-tabs-bar`}))},C=b?`top`:n;return Q(`div`,{class:[`${e}-tabs`,this.themeClass,`${e}-tabs--${t}-type`,`${e}-tabs--${o}-size`,x&&`${e}-tabs--flex`,`${e}-tabs--${C}`],style:this.cssVars},Q(`div`,{class:[`${e}-tabs-nav--${t}-type`,`${e}-tabs-nav--${C}`,`${e}-tabs-nav`]},f(m,t=>t&&Q(`div`,{class:`${e}-tabs-nav__prefix`},t)),b?Q(l,{onResize:this.handleSegmentResize},{default:()=>Q(`div`,{class:`${e}-tabs-rail`,ref:`tabsElRef`},Q(`div`,{class:`${e}-tabs-capsule`,ref:`segmentCapsuleElRef`},Q(`div`,{class:`${e}-tabs-wrapper`},Q(`div`,{class:`${e}-tabs-tab`}))),v?g.map((e,t)=>(s.value.push(e.props.name),Q(nn,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:ln(e))))}):Q(l,{onResize:this.handleNavResize},{default:()=>Q(`div`,{class:`${e}-tabs-nav-scroll-wrapper`,ref:`scrollWrapperElRef`},[`top`,`bottom`].includes(C)?Q(St,{ref:`xScrollInstRef`,onScroll:this.handleScroll},{default:S}):Q(`div`,{class:`${e}-tabs-nav-y-scroll`,onScroll:this.handleScroll,ref:`yScrollElRef`},S()))}),r&&a&&y?cn(a,!0):null,f(h,t=>t&&Q(`div`,{class:`${e}-tabs-nav__suffix`},t))),v&&(this.animated&&(C===`top`||C===`bottom`)?Q(`div`,{ref:`tabsPaneWrapperRef`,style:d,class:[`${e}-tabs-pane-wrapper`,u]},sn(g,this.mergedValue,this.renderedNames,this.onAnimationBeforeLeave,this.onAnimationEnter,this.onAnimationAfterEnter,this.animationDirection)):sn(g,this.mergedValue,this.renderedNames)))}});function sn(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,[[C,c]]):e)}}),o?Q(te,{name:`${o}-transition`,onBeforeLeave:r,onEnter:i,onAfterEnter:a},{default:()=>s}):s}function cn(e,t){return Q(nn,{ref:`addTabInstRef`,key:`__addable`,name:`__addable`,internalCreatedByPane:!0,internalAddable:!0,internalLeftPadded:t,disabled:typeof e==`object`&&e.disabled})}function ln(e){let t=Ne(e);return t.props?t.props.internalLeftPadded=!0:t.props={internalLeftPadded:!0},t}function un(e){return Array.isArray(e.dynamicProps)?e.dynamicProps.includes(`internalLeftPadded`)||e.dynamicProps.push(`internalLeftPadded`):e.dynamicProps=[`internalLeftPadded`],e}var dn=Z({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=G(null),n=G(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(){return n.value?.listElRef}function l(){return n.value?.itemsElRef}return{scrollTo:s,scrollbarInstRef:t,virtualListInstRef:n,getScrollContainer:c,getScrollContent:l,handleScroll:i,handleResize:a,handleWheel:o}},render(){return Q(M,Object.assign({},this.scrollbarProps,{ref:`scrollbarInstRef`,container:this.getScrollContainer,content:this.getScrollContent}),{default:()=>Q(he,{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;return(n=this.$slots).default?.call(n,{item:e,index:t})}})})}}),fn=1e4,pn=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},mn=e=>typeof e==`object`&&!!e&&pn(e)==null,hn=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},gn=e=>e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`,_n=e=>gn(e)?!0:Array.isArray(e)?e.every(gn):typeof e==`object`&&!!e&&Object.keys(e).length==0,vn=e=>{if(typeof e!=`object`||!e||mn(e))return;let t=Object.entries(e);if(!(t.length==0||!t.every(([,e])=>_n(e))))return t.map(([e,t])=>({key:e,value:t}))},yn=e=>JSON.stringify(e)??String(e),bn=(e,t)=>{if(hn(e))return t;try{return JSON.stringify(e,null,2)??t}catch{return t}},xn=()=>({matchCase:!1,wholeWord:!1,useRegex:!1}),Sn=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Cn=(e,t,n=!0)=>{let r=e.trim();if(!r)return;let i=t.useRegex?r:Sn(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}},wn=(e,t)=>!e.trim()||!t.useRegex||!!Cn(e,t),Tn=(e,t,n)=>{let r=Cn(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},En=(e,t,n)=>{let r=Cn(t,n);if(!r)return 0;let i=0,a;for(;a=r.exec(e);)a[0].length?i++:r.lastIndex++;return i},Dn=(e,t,n)=>e.split(/\r\n|\n|\r/).reduce((e,r)=>e+En(r,t,n),0),On=(e,t,n)=>Cn(t,n,!1)?.test(e)||!1,kn=/\b([A-Za-z\d]+\.kt):(\d+)\b/g,An=/^[A-Za-z\d_.-]+$/,jn=/^[a-f\d]{7,40}$/i,Mn=1024,Nn=64,Pn=255,Fn=e=>/^gkd(?:-[^/]+)?\.json$/i.test(e),In=e=>{try{let t=JSON.parse(Rn(e));if(!Ln(t)||typeof t.buildKey!=`string`)return;let n=t.buildKey.trim();return!n||n.length>256?void 0:n}catch{}},Ln=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Rn=e=>e.replace(/^\uFEFF/,``),zn=(e,t)=>{if(typeof e==`string`)try{let n=new URL(e);if(n.protocol!=`https:`||n.hostname.toLowerCase()!=`github.com`||n.port||n.username||n.password)return;let r=n.pathname.split(`/`).filter(Boolean).map(decodeURIComponent);if(r.length!=4||r[2]?.toLowerCase()!=`commit`)return;let[i,a,,o]=r;return!i||!a||!o||!An.test(i)||!An.test(a)||!jn.test(o)||t!=null&&(typeof t!=`string`||t.toLowerCase()!=o.toLowerCase())?void 0:{repositoryUrl:`https://github.com/${i}/${a}`,commitId:o,commitUrl:`https://github.com/${i}/${a}/commit/${o}`}}catch{}},Bn=e=>{try{let t=JSON.parse(Rn(e));return Ln(t)?zn(t.commitUrl,t.commitId):void 0}catch{}},Vn=e=>{try{let t=JSON.parse(Rn(e));if(!Ln(t))return;let n=zn(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{}},Hn=e=>{let t=e.trim().replaceAll(`\\`,`/`);if(!t||t.length>Mn||t.startsWith(`/`)||/^[A-Za-z]:\//.test(t)||!t.toLowerCase().endsWith(`.kt`))return;let n=t.split(`/`);if(!(n.length>Nn||n.some(e=>!e||e==`.`||e==`..`||e.length>Pn)))return t},Un=e=>{let t=new Map,n=Rn(e).split(/\r\n|\n|\r/);for(let e of n){let n=Hn(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},Wn=(e,t)=>{if(t==null)return;let n=Bn(e);if(!n)return;let r=Un(t);if(r.size!=0)return{...n,pathsByFileName:r}},Gn=(e,t,n)=>{let r=t.split(`/`).map(encodeURIComponent).join(`/`);return`${e.repositoryUrl}/blob/${e.commitId}/${r}#L${n}`},Kn=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]||``})},qn=(e,t)=>{if(!t||!e.includes(`.kt:`))return[{text:e}];let n=[],r=0;kn.lastIndex=0;let i;for(;i=kn.exec(e);){let a=i[1],o=Number(i[2]),s=a?t.pathsByFileName.get(a):void 0;if(!s?.length||!Number.isSafeInteger(o)||o<1)continue;i.index>r&&n.push({text:e.slice(r,i.index)});let c=Kn(s);n.push({text:i[0],sourceTargets:s.map((e,n)=>({path:e,displayPath:c[n]||e,url:Gn(t,e,o)}))}),r=i.index+i[0].length}return r<e.length&&n.push({text:e.slice(r)}),n.length?n:[{text:e}]},Jn=e=>e.split(/\r\n|\n|\r/).map((e,t)=>({key:t,number:t+1,text:e})),Yn=(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},[Xn,Zn]=b(e=>{let t=Y(``),n=Y(-1),r=Fe(xn()),i=Y(!1),a=Y(),o=Y(),s=Y(0),c=Y(600),l=Y(),u=Y(),d=0,f=K(()=>Jn(e.value.value)),p=K(()=>t.value.trim()),m=K(()=>Dn(e.value.value,t.value,r)),h=K(()=>m.value?Math.min(Math.max(n.value,0),m.value-1)+1:0),g=K(()=>!wn(t.value,r)),_=K(()=>Math.max(Math.floor(s.value/20)-8,0)),v=K(()=>Math.min(Math.ceil((s.value+c.value)/20)+8,f.value.length)),y=K(()=>f.value.slice(_.value,v.value)),b=K(()=>f.value.length*20);oe(o,e=>{let t=e[0]?.contentRect.height;t&&(c.value=t)});let x=()=>{s.value=o.value?.scrollTop||0},S=e=>{e instanceof HTMLElement&&(u.value=e)},C=t=>{let n=p.value?Tn(t.text,p.value,r):[],i=l.value?.lineKey==t.key?l.value.rangeIndex:void 0,a=qn(t.text,e.sourceLinkContext.value),o=0;return a.map(e=>{let t={fragments:Yn(e.text,o,n,i),sourceTargets:e.sourceTargets};return o+=e.text.length,t})},ee=async()=>{await navigator.clipboard.writeText(e.value.value),Ke.success(`已复制当前文件内容`)},w=async()=>{s.value=0,await xe(),o.value?.scrollTo({top:0}),a.value?.scrollTo({index:0})},T=async e=>{if(e!=d)return;l.value=void 0,u.value=void 0;let t=p.value,i=n.value;if(!t||i<0)return;let c=i,m=-1;for(let e=0;e<f.value.length;e++){let n=f.value[e];if(!n)continue;let i=Tn(n.text,t,r);if(c<i.length){m=e,l.value={lineKey:n.key,rangeIndex:c};break}c-=i.length}m<0||(s.value=m*20,await xe(),e==d&&(o.value?.scrollTo({top:s.value}),a.value?.scrollTo({index:m}),await xe(),requestAnimationFrame(()=>{e==d&&u.value?.scrollIntoView({block:`nearest`,inline:`nearest`})})))},E=async()=>{let e=++d,t=m.value;n.value=p.value&&t?0:-1,await T(e)},D=e=>{t.value=e,E()},O=e=>{r[e]=!r[e],E()},te=e=>{!p.value||!m.value||(n.value=((n.value>=0?n.value:0)+e+m.value)%m.value,T(++d))},ne=e=>{te(e.shiftKey?-1:1)},k=e=>{i.value=e,w()};return{...e,query:t,resultIndex:n,searchOptions:r,wrap:i,virtualList:a,scrollContainer:o,lineHeight:20,lines:f,visibleStart:_,visibleLines:y,virtualHeight:b,normalizedQuery:p,matchCount:m,displayedResultIndex:h,invalidRegex:g,updateQuery:D,toggleSearchOption:O,selectRelativeResult:te,handleSearchEnter:ne,handleScroll:x,setActiveMatchElement:S,getLineTokens:C,copyText:ee,setWrap:k}}),Qn=Xn,$n=()=>{let e=Zn();if(!e)throw Error(`TextViewer 子组件必须在 TextViewer 内部使用`);return e},er=Z({__name:`CopyButton`,setup(e){let{copyable:t,copyText:n}=$n();return(e,r)=>{let i=Re(`SvgIcon`),a=S;return B(t)?(L(),z(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:B(n)},{icon:R(()=>[U(i,{name:`copy`})]),_:1},8,[`onClick`])):H(``,!0)}}}),tr={name:`text-viewer-search`,class:`w-520px max-w-full min-w-0 flex flex-[0_1_520px] items-center gap-6px`},nr=[`title`],rr=[`disabled`],ir=[`disabled`],ar={name:`text-viewer-search-options`,class:`flex items-center gap-2px`},or=[`aria-pressed`],sr=[`aria-pressed`],cr=[`aria-pressed`],lr=Z({__name:`SearchBar`,setup(e){let{query:t,searchOptions:n,searchPlaceholder:r,normalizedQuery:i,matchCount:a,displayedResultIndex:o,invalidRegex:s,updateQuery:c,toggleSearchOption:l,selectRelativeResult:u,handleSearchEnter:d}=$n();return(e,f)=>{let p=Re(`SvgIcon`),m=Xe;return L(),J(`div`,tr,[X(`div`,{name:`text-viewer-navigation`,class:Ae([`w-116px min-w-116px flex items-center justify-between gap-2px`,B(i)?`visible`:`invisible`])},[X(`span`,{class:`w-62px overflow-hidden text-right text-ellipsis whitespace-nowrap text-12px text-[#64748b]`,title:`第 ${B(o).toLocaleString()} 处,共 ${B(a).toLocaleString()} 处`},I(B(o).toLocaleString())+` / `+I(B(a).toLocaleString()),9,nr),X(`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:!B(a),"aria-label":`上一个匹配项`,title:`上一个匹配项 (Shift+Enter)`,onMousedown:f[0]||=k(()=>{},[`prevent`]),onClick:f[1]||=e=>B(u)(-1)},[U(p,{name:`arrow`,class:`h-16px w-16px rotate-180`})],40,rr),X(`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:!B(a),"aria-label":`下一个匹配项`,title:`下一个匹配项 (Enter)`,onMousedown:f[2]||=k(()=>{},[`prevent`]),onClick:f[3]||=e=>B(u)(1)},[U(p,{name:`arrow`,class:`h-16px w-16px`})],40,ir)],2),U(m,{value:B(t),clearable:``,size:`small`,status:B(s)?`error`:void 0,placeholder:B(r),class:`min-w-0 flex-1`,onKeydown:g(k(B(d),[`prevent`]),[`enter`]),"onUpdate:value":B(c)},{suffix:R(()=>[X(`div`,ar,[X(`button`,{type:`button`,class:Ae([`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`,B(n).matchCase?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":B(n).matchCase,"aria-label":`区分大小写`,title:`区分大小写`,onMousedown:f[4]||=k(()=>{},[`prevent`]),onClick:f[5]||=e=>B(l)(`matchCase`)},` Aa `,42,or),X(`button`,{type:`button`,class:Ae([`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`,B(n).wholeWord?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":B(n).wholeWord,"aria-label":`全词匹配`,title:`全词匹配`,onMousedown:f[6]||=k(()=>{},[`prevent`]),onClick:f[7]||=e=>B(l)(`wholeWord`)},` ab `,42,sr),X(`button`,{type:`button`,class:Ae([`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`,B(n).useRegex?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":B(n).useRegex,"aria-label":`使用正则表达式`,title:`使用正则表达式`,onMousedown:f[8]||=k(()=>{},[`prevent`]),onClick:f[9]||=e=>B(l)(`useRegex`)},` .* `,42,cr)])]),_:1},8,[`value`,`status`,`placeholder`,`onKeydown`,`onUpdate:value`])])}}}),ur={class:`sticky left-0 z-1 box-border select-none border-r border-[#e5e7eb] bg-[#f8fafc] px-10px text-right text-[#94a3b8]`},dr=[`href`],fr=[`onKeydown`],pr={class:`max-w-640px flex flex-col gap-4px`},mr=[`href`,`title`],hr=Z({__name:`TextLine`,props:{line:{}},setup(e){let t=e,{wrap:n,getLineTokens:r,setActiveMatchElement:i}=$n(),a=K(()=>r(t.line)),o=e=>U(Pe,null,[e.fragments.map((e,t)=>e.match?U(`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 L(),J(`div`,{name:`text-viewer-line`,class:Ae([`grid min-h-20px min-w-full leading-20px`,B(n)?`w-full grid-cols-[64px_minmax(0,1fr)]`:`w-max grid-cols-[64px_max-content]`])},[X(`span`,ur,I(e.line.number),1),X(`span`,{class:Ae([`box-border min-w-0 px-10px [font:inherit] [tab-size:2]`,B(n)?`whitespace-pre-wrap [overflow-wrap:anywhere]`:`whitespace-pre`])},[(L(!0),J(Pe,null,Ee(B(a),(e,t)=>(L(),J(Pe,{key:t},[e.sourceTargets?.length==1?(L(),J(`a`,{key:0,href:e.sourceTargets[0]?.url,target:`_blank`,rel:`noopener noreferrer`,class:`text-[#2563eb] underline decoration-transparent underline-offset-2 hover:decoration-current`},[U(o,{fragments:e.fragments},null,8,[`fragments`])],8,dr)):e.sourceTargets&&e.sourceTargets.length>1?(L(),z(i,{key:1,trigger:`click`,placement:`bottom-start`},{trigger:R(()=>[X(`span`,{role:`button`,tabindex:`0`,class:`cursor-pointer text-[#2563eb] underline decoration-dashed underline-offset-2`,onKeydown:[g(k(s,[`prevent`]),[`enter`]),g(k(s,[`prevent`]),[`space`])]},[U(o,{fragments:e.fragments},null,8,[`fragments`])],40,fr)]),default:R(()=>[X(`div`,pr,[(L(!0),J(Pe,null,Ee(e.sourceTargets,e=>(L(),J(`a`,{key:e.path,href:e.url,title:e.path,target:`_blank`,rel:`noopener noreferrer`,class:`break-all text-[#2563eb] hover:underline`},I(e.displayPath),9,mr))),128))])]),_:2},1024)):(L(),z(o,{key:2,fragments:e.fragments},null,8,[`fragments`]))],64))),128))],2)],2)}}}),gr={name:`text-viewer-viewport`,class:`h-full min-h-0 min-w-0`},_r=Z({__name:`Viewport`,setup(e){let{wrap:t,virtualList:n,scrollContainer:r,lineHeight:i,lines:a,visibleStart:o,visibleLines:s,virtualHeight:c,handleScroll:l}=$n();return(e,u)=>{let d=dn;return L(),J(`div`,gr,[B(t)?(L(),z(d,{key:0,ref_key:`virtualList`,ref:n,items:B(a),"item-size":B(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:R(({item:e})=>[U(hr,{line:e},null,8,[`line`])]),_:1},8,[`items`,`item-size`])):(L(),J(`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)=>B(l)&&B(l)(...e)},[X(`div`,{name:`text-viewer-spacer`,class:`relative min-w-full`,style:Ce({height:`${B(c)}px`})},[X(`div`,{name:`text-viewer-visible`,class:`absolute left-0 top-0 min-w-full w-max`,style:Ce({transform:`translateY(${B(o)*B(i)}px)`})},[(L(!0),J(Pe,null,Ee(B(s),e=>(L(),z(hr,{key:e.key,line:e},null,8,[`line`]))),128))],4)],4)],544))])}}}),vr={name:`text-viewer`,class:`min-h-0 min-w-0 flex flex-1 flex-col gap-8px`},yr={name:`text-viewer-toolbar`,class:`min-h-28px min-w-0 flex items-center gap-10px`},br={name:`text-viewer-content`,class:`relative min-h-0 min-w-0 flex-1`},xr=Z({__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,setWrap:i}=Qn({value:q(t,`value`),documentKey:q(t,`documentKey`),searchPlaceholder:q(t,`searchPlaceholder`),allowWrap:q(t,`allowWrap`),copyable:q(t,`copyable`),sourceLinkContext:q(t,`sourceLinkContext`)});return(e,t)=>{let a=ge;return L(),J(`div`,vr,[X(`div`,yr,[Oe(e.$slots,`toolbar-start`),t[1]||=X(`div`,{name:`text-viewer-toolbar-spacer`,class:`min-w-0 flex-1`},null,-1),U(lr),B(n)?(L(),z(a,{key:0,checked:B(r),"onUpdate:checked":B(i)},{default:R(()=>[...t[0]||=[W(` 自动换行 `,-1)]]),_:1},8,[`checked`,`onUpdate:checked`])):H(``,!0)]),X(`div`,br,[U(_r),U(er)])])}}}),Sr={name:`raw-json-preview`,class:`h-full`},Cr=Z({__name:`RawJsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=K(()=>bn(t.value,t.raw));return(e,t)=>(L(),J(`div`,Sr,[U(xr,{value:B(n),"search-placeholder":`搜索原始 JSON`,class:`h-full`},null,8,[`value`])]))}}),wr={name:`text-search`,class:`w-full min-w-0 flex items-center gap-6px`},Tr={name:`text-search-options`,class:`flex items-center gap-2px`},Er=[`aria-pressed`],Dr=[`aria-pressed`],Or=[`aria-pressed`],kr=Z({__name:`TextSearchInput`,props:ke({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=K(()=>!wn(n.value,{matchCase:r.value,wholeWord:i.value,useRegex:a.value}));return(e,s)=>{let c=Xe;return L(),J(`div`,wr,[U(c,{value:n.value,"onUpdate:value":s[6]||=e=>n.value=e,clearable:``,size:t.size,status:B(o)?`error`:void 0,placeholder:t.placeholder,class:`min-w-0 flex-1`},{suffix:R(()=>[X(`div`,Tr,[X(`button`,{type:`button`,class:Ae([`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]||=k(()=>{},[`prevent`]),onClick:s[1]||=e=>r.value=!r.value},` Aa `,42,Er),X(`button`,{type:`button`,class:Ae([`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]||=k(()=>{},[`prevent`]),onClick:s[3]||=e=>i.value=!i.value},` ab `,42,Dr),X(`button`,{type:`button`,class:Ae([`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]||=k(()=>{},[`prevent`]),onClick:s[5]||=e=>a.value=!a.value},` .* `,42,Or)])]),_:1},8,[`value`,`size`,`status`,`placeholder`])])}}}),Ar={name:`apps-preview`,class:`h-full min-h-0 flex flex-col`},jr={key:0,name:`user-apps`,class:`h-full min-h-0 min-w-0 flex flex-col gap-10px`},Mr={name:`user-apps-header`,class:`min-w-0 flex items-center gap-16px`},Nr=Z({__name:`AppsPreview`,props:{data:{},value:{},raw:{},view:{}},setup(e){let t=e,n=Y(t.data.users[0]?.id),r=K(()=>t.data.users.find(e=>e.id==n.value)||t.data.users[0]),i=K(()=>t.data.users.map(e=>({label:`${e.name} · 用户 ${e.id} · ${e.apps.length} 个应用`,value:e.id}))),a=Y(``),o=Fe(xn()),s=K(()=>{let e=r.value?.apps||[],t=a.value.trim();return t?e.filter(e=>[e.name,e.id,e.versionName||``,e.versionCode==null?``:String(e.versionCode)].some(e=>On(e,t,o))):e}),c=[{key:`name`,title:`应用名称`},{key:`id`,title:`包名`},{key:`version`,title:`版本`,render(e){return e.versionName&&e.versionCode!=null?`${e.versionName} (${e.versionCode})`:e.versionName||e.versionCode?.toString()||`-`}},{key:`isSystem`,title:`类型`,render(e){return e.isSystem==null?`-`:U(et,{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,l)=>{let u=Qe,d=P,f=$e;return L(),J(`div`,Ar,[e.view==`users`&&B(r)?(L(),J(`div`,jr,[X(`div`,Mr,[U(u,{value:B(n),"onUpdate:value":l[0]||=e=>ve(n)?n.value=e:null,options:B(i),"aria-label":`设备用户`,class:`min-w-280px w-40% max-w-420px`},null,8,[`value`,`options`]),U(kr,{modelValue:B(a),"onUpdate:modelValue":l[1]||=e=>ve(a)?a.value=e:null,"match-case":B(o).matchCase,"onUpdate:matchCase":l[2]||=e=>B(o).matchCase=e,"whole-word":B(o).wholeWord,"onUpdate:wholeWord":l[3]||=e=>B(o).wholeWord=e,"use-regex":B(o).useRegex,"onUpdate:useRegex":l[4]||=e=>B(o).useRegex=e,placeholder:`搜索应用名称、包名或版本`,class:`ml-auto min-w-320px w-50% max-w-460px`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`])]),B(s).length==0?(L(),z(d,{key:0,description:B(a).trim()?`没有匹配的应用`:`该用户没有应用记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(f,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:c,data:B(s),pagination:!1,rowKey:e=>e.id,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`]))])):(L(),z(Cr,{key:1,value:e.value,raw:e.raw},null,8,[`value`,`raw`]))])}}}),Pr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Fr=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Ir=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Lr=e=>typeof e==`string`?e:void 0,Rr=e=>typeof e==`boolean`?e:void 0,zr=e=>{if(!Pr(e)||!Array.isArray(e.apps)||e.apps.length>1e4||Array.isArray(e.otherUsers)&&e.otherUsers.length>1e4)return;let t=Fr(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(!Pr(e))return;let n=Fr(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(!Pr(e)||typeof e.id!=`string`||typeof e.name!=`string`)return;let n=Fr(e.userId)??t,a=r(n,n==t?`当前用户`:`用户 ${n}`,n==t),o={id:e.id,name:e.name,userId:n},s=Ir(e.versionCode),c=Lr(e.versionName),l=Rr(e.isSystem),u=Rr(e.hidden),d=Rr(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}},Br=`__crash_preview__`,Vr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Hr=e=>typeof e==`string`&&e.trim()?e:void 0,Ur=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Wr=e=>{if(e==null)return;let t=Math.abs(e)<1e11?e*1e3:e;return Number.isNaN(new Date(t).getTime())?void 0:t},Gr=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()},Kr=e=>({path:e,fileName:e.split(`/`).at(-1)||e,status:`incomplete`,timestamp:Gr(e)}),qr=(e,t)=>{let n=Kr(t);if(!Vr(e))return{summary:n};n.id=Ur(e.id),n.mtime=Ur(e.mtime),n.timestamp=Wr(n.mtime)||Wr(n.id)||n.timestamp,n.device=Hr(e.device),n.androidVersionCode=Ur(e.androidVersionCode),n.androidVersionName=Hr(e.androidVersionName),n.versionCode=Ur(e.versionCode),n.versionName=Hr(e.versionName),n.name=Hr(e.name),n.message=Hr(e.message),n.thread=Hr(e.thread);let r=Hr(e.stackTrace);return n.status=n.name&&r?`valid`:`incomplete`,{summary:n,stackTrace:r}},Jr=e=>e instanceof Error?e.message:String(e),Yr=e=>/^crash\/.+/i.test(e.replaceAll(`\\`,`/`)),Xr=e=>Yr(e)&&e.toLowerCase().endsWith(`.json`),Zr=e=>e.filter(e=>Yr(e.path)),Qr=(e,t)=>{try{return qr(JSON.parse(e),t).summary}catch(e){return{...Kr(t),status:`invalid`,error:Jr(e)}}},$r=(e,t)=>{try{let n=JSON.parse(e),{summary:r,stackTrace:i}=qr(n,t);return{...r,parsed:!0,raw:e,value:n,stackTrace:i}}catch(n){return{...Kr(t),status:`invalid`,error:Jr(n),parsed:!1,raw:e}}},ei=(e,t)=>({...Kr(e),status:`invalid`,error:Jr(t)}),ti=(e,t)=>({...ei(e,t),parsed:!1,raw:``}),ni=e=>({...Kr(e),status:`unsupported`,error:`仅支持 JSON 崩溃记录`}),ri=e=>({...ni(e),parsed:!1,raw:``}),ii=e=>e.toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),ai=async(e,t)=>{let n=yt(4);return ii(await Promise.all(Zr(e).map(e=>n(async()=>{if(!Xr(e.path))return ni(e.path);try{return Qr(await t(e),e.path)}catch(t){return ei(e.path,t)}}))))},oi=(e,t=2)=>e.toString().padStart(t,`0`),si=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${oi(t.getMonth()+1)}-${oi(t.getDate())} ${oi(t.getHours())}:${oi(t.getMinutes())}:${oi(t.getSeconds())}.${oi(t.getMilliseconds(),3)}`},ci={name:`directory-preview-header`,class:`h-40px flex flex-none items-stretch`},li={class:`flex flex-none items-center gap-8px pr-14px font-600`},ui=[`aria-pressed`],di={key:0,class:`min-w-0 flex items-center gap-10px pl-14px`},fi=[`title`],pi={key:0,class:`flex-none text-12px text-[#64748b]`},mi=Z({__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=et;return L(),J(`div`,ci,[X(`div`,li,[X(`span`,null,I(e.title),1),U(i,{size:`small`,round:``},{default:R(()=>[W(I(e.count),1)]),_:1})]),X(`button`,{type:`button`,class:Ae([`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`)},I(e.listLabel),11,ui),r[1]||=X(`div`,{class:`min-w-0 flex-1`},null,-1),!e.listActive&&e.detailText?(L(),J(`div`,di,[X(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:e.detailTitle||e.detailText},I(e.detailText),9,fi),e.detailMeta?(L(),J(`span`,pi,I(e.detailMeta),1)):H(``,!0)])):H(``,!0)])}}}),hi=Z({__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=S;return e.available?(L(),z(i,{key:0,size:`small`,secondary:``,type:`primary`,loading:e.loading,onClick:r[0]||=e=>n(`toggle`)},{default:R(()=>[W(I(e.retraced?`原始堆栈`:`还原堆栈`),1)]),_:1},8,[`loading`])):H(``,!0)}}}),gi={name:`crash-preview`,class:`h-full min-h-0 flex flex-col`},_i={key:0,name:`crash-list`,class:`min-h-0 flex flex-1 flex-col gap-10px`},vi={key:1,name:`crash-detail`,class:`min-h-0 flex flex-1 flex-col gap-10px`};function yi(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var bi=50,xi=Z({__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=Y(`list`),a=Y(``),o=Y(``),s=Fe(xn()),c=Y(1),l=K(()=>{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=>On(t,e,s))):n.items}),u=()=>{c.value=1},d=K(()=>{let e=(c.value-1)*bi;return l.value.slice(e,e+bi)}),f=K(()=>n.items.find(e=>e.path==a.value)),p=(e,t)=>e&&t!=null?`${e} (${t})`:e||t?.toString()||`-`,m=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,h=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,g=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},_=[{key:`timestamp`,title:`时间`,width:190,sorter:(e,t)=>(e.timestamp||0)-(t.timestamp||0),render:e=>si(e.timestamp)},{key:`name`,title:`异常类型`,width:280,ellipsis:{tooltip:!0},render(e){let t;return U(`div`,{class:`min-w-0 flex items-center gap-6px`},[U(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:U(et,{size:`small`,type:h(e.status)},yi(t=m(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=>p(e.versionName,e.versionCode)},{key:`android`,title:`Android`,width:140,render:e=>p(e.androidVersionName,e.androidVersionCode)},{key:`device`,title:`设备`,width:260,ellipsis:{tooltip:!0},render:e=>e.device||`-`}],v=e=>({class:`cursor-pointer`,onClick:()=>g(e)});return(t,n)=>{let a=P,m=$e,h=tt,g=Xt,y=jt,b=Bt,x=Rt,S=tn,C=on;return L(),J(`div`,gi,[U(mi,{title:`崩溃记录`,count:e.items.length,listLabel:`崩溃列表`,listActive:B(i)==`list`,detailText:B(f)?.fileName,detailTitle:B(f)?.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),B(i)==`list`?(L(),J(`div`,_i,[U(kr,{modelValue:B(o),"onUpdate:modelValue":[n[1]||=e=>ve(o)?o.value=e:null,u],"match-case":B(s).matchCase,"onUpdate:matchCase":[n[2]||=e=>B(s).matchCase=e,u],"whole-word":B(s).wholeWord,"onUpdate:wholeWord":[n[3]||=e=>B(s).wholeWord=e,u],"use-regex":B(s).useRegex,"onUpdate:useRegex":[n[4]||=e=>B(s).useRegex=e,u],placeholder:`搜索异常类型、消息、设备或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(d).length==0?(L(),z(a,{key:0,description:B(o).trim()?`没有匹配的崩溃记录`:`没有崩溃记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(m,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:_,data:B(d),pagination:!1,rowKey:e=>e.path,rowProps:v,scrollX:1510,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),B(l).length>bi?(L(),z(h,{key:2,page:B(c),"onUpdate:page":n[5]||=e=>ve(c)?c.value=e:null,pageSize:bi,itemCount:B(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):H(``,!0)])):(L(),J(`div`,vi,[e.detailLoading?(L(),z(g,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(L(),J(Pe,{key:2},[e.detail.error?(L(),z(y,{key:0,type:`warning`,title:`该记录无法完整解析`,class:`flex-none`},{default:R(()=>[W(I(e.detail.error),1)]),_:1})):H(``,!0),U(x,{bordered:``,size:`small`,column:3,labelPlacement:`left`,class:`flex-none`},{default:R(()=>[U(b,{label:`时间`},{default:R(()=>[W(I(B(si)(e.detail.timestamp)),1)]),_:1}),U(b,{label:`线程`},{default:R(()=>[W(I(e.detail.thread||`-`),1)]),_:1}),U(b,{label:`GKD 版本`},{default:R(()=>[W(I(p(e.detail.versionName,e.detail.versionCode)),1)]),_:1}),U(b,{label:`Android`},{default:R(()=>[W(I(p(e.detail.androidVersionName,e.detail.androidVersionCode)),1)]),_:1}),U(b,{label:`设备`,span:2},{default:R(()=>[W(I(e.detail.device||`-`),1)]),_:1})]),_:1}),U(C,{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:R(()=>[U(S,{name:`stack`,tab:`堆栈`},{default:R(()=>[e.detail.stackTrace?(L(),z(xr,{key:`${e.detail.path}:stack`,value:e.detail.stackTrace,documentKey:e.detail.path,"search-placeholder":`搜索崩溃堆栈`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`h-full`},{"toolbar-start":R(()=>[U(hi,{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`])):(L(),z(a,{key:1,description:`该记录没有堆栈信息`}))]),_:1}),U(S,{name:`raw`,tab:`原始 JSON`},{default:R(()=>[e.detail.parsed?(L(),z(Cr,{key:0,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.raw?(L(),z(xr,{key:`${e.detail.path}:raw`,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`h-full`},null,8,[`value`])):(L(),z(a,{key:2,description:`无法读取原始内容`}))]),_:1})]),_:1})],64)):(L(),z(a,{key:1,description:`请选择一条崩溃记录`}))]))])}}}),Si=`__log_directory_preview__`,Ci=`__subscription_directory_preview__`,wi=e=>e.replaceAll(`\\`,`/`),Ti=(e,t)=>wi(e).toLowerCase().startsWith(`${t}/`),Ei=e=>Ti(e,`log`),Di=e=>Ti(e,`subscription`),Oi=e=>e.filter(e=>Ei(e.path)),ki=e=>e.filter(e=>Di(e.path)),Ai=e=>e.split(`/`).at(-1)||e,ji=e=>{let t=Ai(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()},Mi=e=>Oi(e).map(e=>({path:e.path,fileName:Ai(e.path),size:e.size||0,timestamp:ji(e.path)})).toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),Ni=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Pi=e=>typeof e==`string`&&e.trim()?e:void 0,Fi=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Ii=e=>Array.isArray(e)?e.length:void 0,Li=e=>{let t=Number(Ai(e).replace(/\.json$/i,``));return Number.isSafeInteger(t)?t:void 0},Ri=e=>({path:e,fileName:Ai(e),status:`incomplete`,id:Li(e)}),zi=(e,t)=>{let n=Ri(t);return Ni(e)?(n.id=Fi(e.id)??n.id,n.name=Pi(e.name),n.version=Fi(e.version),n.author=Pi(e.author),n.appsCount=Ii(e.apps),n.globalGroupsCount=Ii(e.globalGroups),n.categoriesCount=Ii(e.categories),n.status=n.id!=null&&n.name&&n.version!=null?`valid`:`incomplete`,n):n},Bi=e=>e instanceof Error?e.message:String(e),Vi=e=>Di(e)&&e.toLowerCase().endsWith(`.json`),Hi=(e,t)=>{try{return zi(JSON.parse(e),t)}catch(e){return{...Ri(t),status:`invalid`,error:Bi(e)}}},Ui=(e,t)=>{try{let n=JSON.parse(e);return{...zi(n,t),parsed:!0,raw:e,value:n}}catch(n){return{...Ri(t),status:`invalid`,error:Bi(n),parsed:!1,raw:e}}},Wi=(e,t)=>({...Ri(e),status:`invalid`,error:Bi(t)}),Gi=(e,t)=>({...Wi(e,t),parsed:!1,raw:``}),Ki=e=>({...Ri(e),status:`unsupported`,error:`仅支持 JSON 订阅文件`}),qi=e=>({...Ki(e),parsed:!1,raw:``}),Ji=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`)),Yi=async(e,t)=>{let n=yt(4);return Ji(await Promise.all(ki(e).map(e=>n(async()=>{if(!Vi(e.path))return Ki(e.path);try{return Hi(await t(e),e.path)}catch(t){return Wi(e.path,t)}}))))},Xi=e=>e.toString().padStart(2,`0`),Zi=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${Xi(t.getMonth()+1)}-${Xi(t.getDate())}`},Qi={name:`json-basic-table`,class:`mb-10px mt-6px`},$i=Z({__name:`JsonBasicTable`,props:{rows:{},indexed:{type:Boolean,default:!1}},setup(e){let t=e,n=K(()=>[{key:`key`,title:t.indexed?`索引`:`键`,width:220,ellipsis:{tooltip:!0}},{key:`value`,title:`值`,render(e){return U(`span`,{class:`whitespace-pre-wrap font-mono [overflow-wrap:anywhere]`},[yn(e.value)])}}]),r=K(()=>t.rows.length>200?{pageSize:200,showSizePicker:!1}:!1),i=e=>e.key;return(t,a)=>{let o=$e;return L(),J(`div`,Qi,[U(o,{striped:``,size:`small`,columns:B(n),data:e.rows,rowKey:i,pagination:B(r)},null,8,[`columns`,`data`,`pagination`])])}}}),ea={flex:``,"flex-col":``,"gap-10px":``,"h-full":``},ta={name:`json-structure-scroll`,class:`min-h-0 flex-1 overflow-auto px-4px pb-24px pt-8px font-mono text-13px`},na={key:1,name:`json-search-results`,class:`flex flex-col gap-6px`},ra={class:`text-[#7c3aed]`},ia={class:`mt-4px text-[#374151] [overflow-wrap:anywhere]`},aa=Z({__name:`JsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=K(()=>hn(t.value)),r=e=>{if(Array.isArray(e))return`Array(${e.length})`;if(e&&typeof e==`object`){let t=pn(e);return t==null?`Object(>${fn})`:`Object(${t})`}return typeof e==`string`?JSON.stringify(e):String(e)},i=Z({name:`JsonNode`,props:{value:{type:null,required:!0},name:{type:String,required:!0},depth:{type:Number,default:0}},setup(e){let t=G(e.depth==0);return()=>{let n=mn(e.value),a=e.value!=null&&typeof e.value==`object`&&!n,o=a?Object.entries(e.value):[],s=a?vn(e.value):void 0;return U(`div`,Se({name:`json-node`},{class:`block`}),[U(`div`,Se({name:`json-node-line`},{class:`min-h-28px flex items-center gap-6px`}),[a?U(S,{quaternary:!0,size:`tiny`,class:`w-24px min-w-24px font-inherit`,onClick:()=>t.value=!t.value},{default:()=>[t.value?`−`:`+`]}):U(`span`,{class:`inline-block w-24px`},null),U(`span`,{class:`text-[#7c3aed]`},[e.name]),U(`span`,{class:`text-[#6b7280]`},[W(`:`)]),U(`span`,{class:a?`text-[#6b7280]`:`text-[#0f766e] [overflow-wrap:anywhere]`},[r(e.value)]),n?U(`span`,{class:`text-[#b45309]`},[W(`结构过大,请切换到原始 JSON 查看`)]):null]),a&&t.value?U(`div`,Se({name:`json-children`},{class:`ml-15px border-l border-[#e5e7eb] pl-10px`}),[s?U($i,{rows:s,indexed:Array.isArray(e.value)},null):o.map(([t,n])=>U(i,{key:t,name:t,value:n,depth:e.depth+1},null))]):null])}}}),a=Y(``),o=Fe(xn()),s=K(()=>{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(mn(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(On(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);On(c,e,o)&&i.push({path:a||`$`,value:c})}return i});return(t,r)=>{let c=jt,l=P,u=tn,d=on;return L(),z(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:R(()=>[U(u,{name:`structured`,tab:`结构化`},{default:R(()=>[X(`div`,ea,[U(kr,{modelValue:B(a),"onUpdate:modelValue":r[0]||=e=>ve(a)?a.value=e:null,"match-case":B(o).matchCase,"onUpdate:matchCase":r[1]||=e=>B(o).matchCase=e,"whole-word":B(o).wholeWord,"onUpdate:wholeWord":r[2]||=e=>B(o).wholeWord=e,"use-regex":B(o).useRegex,"onUpdate:useRegex":r[3]||=e=>B(o).useRegex=e,placeholder:`搜索键或值,最多展示 200 条结果`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),X(`div`,ta,[B(n)?(L(),z(c,{key:0,type:`warning`,title:`JSON 结构过大`},{default:R(()=>[...r[4]||=[W(` 为避免占用过多内存,请切换到“原始 JSON”查看和搜索。 `,-1)]]),_:1})):B(a).trim()?(L(),J(Pe,{key:1},[B(s).length==0?(L(),z(l,{key:0,description:`没有匹配项`})):(L(),J(`div`,na,[(L(!0),J(Pe,null,Ee(B(s),e=>(L(),J(`div`,{key:`${e.path}:${e.value}`,name:`json-search-item`,class:`rounded-4px border border-[#e5e7eb] px-10px py-8px`},[X(`div`,ra,I(e.path),1),X(`div`,ia,I(e.value),1)]))),128))]))],64)):(L(),z(B(i),{key:2,name:`$`,value:e.value,depth:0},null,8,[`value`]))])])]),_:1}),U(u,{name:`raw`,tab:`原始 JSON`},{default:R(()=>[U(Cr,{value:e.value,raw:e.raw},null,8,[`value`,`raw`])]),_:1})]),_:1})}}}),oa=e=>typeof e==`object`&&!!e&&!Array.isArray(e),sa=e=>{if(!oa(e)||!Array.isArray(e.apps))return{};let t=[];return e.apps.forEach(e=>{oa(e)&&(typeof e.id!=`string`||typeof e.name!=`string`||t.push([e.id,e.name]))}),Object.fromEntries(t)},ca=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},la=e=>{if(ca(e))return[String(e.id),e.name]},ua=101010256,da=33639248,fa=22,pa=65535,ma=(e,t)=>{if(e.byteLength<fa)throw Error(`不是有效的 ZIP 文件`);let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=Math.max(0,e.byteLength-fa-pa),i=-1;for(let t=e.byteLength-fa;t>=r;t--)if(n.getUint32(t,!0)==ua&&t+fa+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)!=da)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}},ha=50*1024*1024,ga=200*1024*1024,_a=2e3,va=20*1024*1024,ya=2*1024*1024,ba=100*1024*1024,xa=5e5,Sa=1024,Ca=new Set([`.log`,`.txt`,`.sql`,`.xml`,`.md`,`.yaml`,`.yml`,`.csv`]),wa=new Set([`.db`,`.sqlite`,`.sqlite3`]),Ta=e=>{let t=e.split(`/`).at(-1)||e,n=t.lastIndexOf(`.`);return n>=0?t.slice(n).toLowerCase():``},Ea=e=>{let t=e.toLowerCase();if(t.endsWith(`-wal`)||t.endsWith(`-shm`))return`database-sidecar`;let n=Ta(e);return n==`.json`?`json`:wa.has(n)?`database`:Ca.has(n)?`text`:`binary`},Da=e=>e.extension==`.log`?0:e.kind==`text`?1:e.kind==`json`?2:e.kind==`database`?3:4,Oa=e=>e.entries.filter(e=>e.kind==`text`||e.kind==`json`||e.kind==`database`).toSorted((e,t)=>Da(e)-Da(t))[0],ka=async(e,t)=>{let n=e instanceof Blob?e.size:e.byteLength;if(n>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ha)}`);let r=e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e),i=ma(r,{maxEntries:_a,maxEntryNameSize:Sa,maxUncompressedSize:ga}),a=await vt(r),o=Object.values(a.files).filter(e=>!e.dir);if(o.length>2e3)throw Error(`ZIP 内文件数量不能超过 ${_a}`);let s=0,c={total:0,sizes:new Map},l=o.map(e=>{let t=e;if(t.unsafeOriginalName&&t.unsafeOriginalName.replaceAll(`\\`,`/`)!=t.name)throw Error(`ZIP 包含不安全路径: ${t.unsafeOriginalName}`);let n=t._data?.uncompressedSize||0;s+=n;let r=t.name.replaceAll(`\\`,`/`).replace(/^\/+/,``),i=r.split(`/`);if(r.length>1024||i.length>64||i.some(e=>!e||e.length>255))throw Error(`ZIP 条目路径超出预览限制: ${r}`);return{path:r,name:r.split(`/`).at(-1)||r,extension:Ta(r),size:n,kind:Ea(r),file:e,readBudget:c}});if(s>209715200)throw Error(`ZIP 解压后总大小不能超过 ${Xa(ga)}`);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]))}},Aa=new WeakMap,ja=new WeakMap,Ma=async(e,t=va)=>{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()})},$=(e,t=va)=>{let n=ja.get(e.file)?.get(t);if(n)return Promise.reject(n);let r=Aa.get(e.file);r||(r=new Map,Aa.set(e.file,r));let i=r.get(t);return i||(i=Ma(e,t),r.set(t,i),i.then(()=>r?.delete(t),n=>{r?.delete(t);let i=ja.get(e.file);i||(i=new Map,ja.set(e.file,i)),i.set(t,n instanceof Error?n:Error(String(n)))})),i},Na=async(e,t)=>{let n=e.entryMap.get(`${t.path}-wal`),r=e.entryMap.get(`${t.path}-shm`);if(t.size+(n?.size||0)+(r?.size||0)>104857600)throw Error(`数据库文件组超过可预览上限 ${Xa(ba)}`);let i=await $(t,ba);return{database:i,wal:n?await $(n,ba-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(`文本行数不能超过 ${xa}`);return t},Fa=new WeakMap,Ia=e=>e.entries.filter(e=>Fn(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=Vn(Pa(await $(n,ya)));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 In(Pa(await $(t,ya)))}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 $(t,ya)),r=[];for(let t of n)try{let n=Wn(Pa(await $(t,ya)),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 $(t,ya));return sa(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 $(e,ya)),r=la(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=Z({__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=Y(`list`),a=Y(``),o=Y(``),s=Fe(xn()),c=K(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,Zi(t.timestamp)].some(t=>On(t,e,s))):n.items}),l=K(()=>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=>Zi(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)=>{let a=P,u=$e,p=Xt,m=jt;return L(),J(`div`,Za,[U(mi,{title:`运行日志`,count:e.items.length,listLabel:`日志列表`,listActive:B(i)==`list`,detailText:B(l)?.fileName,detailTitle:B(l)?.path,detailMeta:B(l)?B(Xa)(B(l).size):void 0,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`,`detailMeta`]),B(i)==`list`?(L(),J(`div`,Qa,[U(kr,{modelValue:B(o),"onUpdate:modelValue":n[1]||=e=>ve(o)?o.value=e:null,"match-case":B(s).matchCase,"onUpdate:matchCase":n[2]||=e=>B(s).matchCase=e,"whole-word":B(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>B(s).wholeWord=e,"use-regex":B(s).useRegex,"onUpdate:useRegex":n[4]||=e=>B(s).useRegex=e,placeholder:`搜索日志日期或文件名`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(c).length==0?(L(),z(a,{key:0,description:B(o).trim()?`没有匹配的日志文件`:`没有日志文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(u,{key:1,striped:``,columns:d,data:B(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`]))])):(L(),J(`div`,$a,[e.detailLoading?(L(),z(p,{key:0,show:``,class:`min-h-0 flex-1`})):e.detailError?(L(),z(m,{key:1,type:`error`,title:`日志文件读取失败`},{default:R(()=>[W(I(e.detailError),1)]),_:1})):e.detailPath&&e.detailText!=null?(L(),z(xr,{key:e.detailPath,value:e.detailText,"search-placeholder":`搜索当前日志文件`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`min-h-0 flex-1`},{"toolbar-start":R(()=>[U(hi,{available:e.retraceAvailable,loading:e.retraceLoading,retraced:e.retraceActive,onToggle:n[5]||=e=>r(`toggleRetrace`)},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`sourceLinkContext`])):(L(),z(a,{key:3,description:`请选择一个日志文件`}))]))])}}}),to=async(e,t)=>{let n=e.body?.getReader();if(!n){let n=await e.arrayBuffer();if(n.byteLength>t)throw Error(`响应内容超过大小限制`);return n}let r=[],i=0;for(;;){let{done:e,value:a}=await n.read();if(e)break;if(i+=a.byteLength,i>t)throw await n.cancel(`响应内容超过大小限制`),Error(`响应内容超过大小限制`);r.push(a)}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.byteLength;return a.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=Z({__name:`SubscriptionPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=K(()=>no(t.value.updateUrl)),r=K(()=>no(t.value.supportUri)),i=e=>e==null?[]:Array.isArray(e)?e:[e],a=K(()=>t.value.apps||[]),o=K(()=>t.value.globalGroups||[]),s=K(()=>t.value.categories||[]),c=K(()=>{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=Y(``),u=Fe(xn()),d=Y(1),f=K(()=>{let e=l.value.trim();return e?a.value.filter(t=>On(t.id,e,u)||On(t.name||``,e,u)):a.value}),p=()=>{d.value=1},m=K(()=>{let e=(d.value-1)*po;return f.value.slice(e,e+po)}),h=(e,t)=>typeof e==`string`?`规则 ${t+1}`:e&&typeof e==`object`?String(e.name||`规则 ${t+1}`):`规则 ${t+1}`,g=e=>{let t;return U(at,{accordion:!0},fo(t=i(e.rules).map((e,t)=>U(it,{key:t,name:t,title:h(e,t)},{default:()=>[U(`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]})},_=e=>U(`div`,Se({name:`subscription-groups`},{class:`flex flex-col gap-10px`}),[e.groups.map(e=>U(We,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:()=>[e.desc?U(`div`,{class:`mb-10px text-[#6b7280]`},[e.desc]):null,g(e)]}))]),v=[{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 h=Bt,y=Rt,b=Qt,x=P,S=it,C=at,ee=tt,w=tn,T=We,E=$e,D=on;return L(),J(`div`,ro,[U(y,{bordered:``,size:`small`,column:3,labelPlacement:`left`},{default:R(()=>[U(h,{label:`名称`},{default:R(()=>[W(I(e.value.name),1)]),_:1}),U(h,{label:`ID`},{default:R(()=>[W(I(e.value.id),1)]),_:1}),U(h,{label:`版本`},{default:R(()=>[W(I(e.value.version),1)]),_:1}),e.value.author?(L(),z(h,{key:0,label:`作者`},{default:R(()=>[W(I(e.value.author),1)]),_:1})):H(``,!0),B(n)?(L(),z(h,{key:1,label:`更新地址`},{default:R(()=>[X(`a`,{href:B(n),target:`_blank`,rel:`noopener noreferrer`},I(e.value.updateUrl),9,io)]),_:1})):H(``,!0),B(r)?(L(),z(h,{key:2,label:`反馈地址`},{default:R(()=>[X(`a`,{href:B(r),target:`_blank`,rel:`noopener noreferrer`},I(e.value.supportUri),9,ao)]),_:1})):H(``,!0)]),_:1}),X(`div`,oo,[B(c).apps?(L(),z(b,{key:0,label:`应用`,value:B(c).apps,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).appGroups?(L(),z(b,{key:1,label:`应用规则组`,value:B(c).appGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).appRules?(L(),z(b,{key:2,label:`应用规则`,value:B(c).appRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).globalGroups?(L(),z(b,{key:3,label:`全局规则组`,value:B(c).globalGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).globalRules?(L(),z(b,{key:4,label:`全局规则`,value:B(c).globalRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).categories?(L(),z(b,{key:5,label:`分类`,value:B(c).categories,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0)]),U(D,{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:R(()=>[B(a).length?(L(),z(w,{key:0,name:`apps`,tab:`应用规则`},{default:R(()=>[X(`div`,so,[U(kr,{modelValue:B(l),"onUpdate:modelValue":[i[0]||=e=>ve(l)?l.value=e:null,p],"match-case":B(u).matchCase,"onUpdate:matchCase":[i[1]||=e=>B(u).matchCase=e,p],"whole-word":B(u).wholeWord,"onUpdate:wholeWord":[i[2]||=e=>B(u).wholeWord=e,p],"use-regex":B(u).useRegex,"onUpdate:useRegex":[i[3]||=e=>B(u).useRegex=e,p],placeholder:`搜索应用名称或包名`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(m).length==0?(L(),z(x,{key:0,description:`没有匹配的应用`})):(L(),z(C,{key:1,accordion:``,class:`min-h-0 flex-1 overflow-auto`},{default:R(()=>[(L(!0),J(Pe,null,Ee(B(m),e=>(L(),z(S,{key:e.id,name:e.id,title:`${e.name||e.id} · ${e.groups.length} 个规则组`},{default:R(()=>[X(`div`,co,I(e.id),1),(L(),z(F(()=>_(e))))]),_:2},1032,[`name`,`title`]))),128))]),_:1})),B(f).length>po?(L(),z(ee,{key:2,page:B(d),"onUpdate:page":i[4]||=e=>ve(d)?d.value=e:null,pageSize:po,itemCount:B(f).length},null,8,[`page`,`itemCount`])):H(``,!0)])]),_:1})):H(``,!0),B(o).length?(L(),z(w,{key:1,name:`global`,tab:`全局规则`},{default:R(()=>[X(`div`,lo,[(L(!0),J(Pe,null,Ee(B(o),e=>(L(),z(T,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:R(()=>[e.desc?(L(),J(`div`,uo,I(e.desc),1)):H(``,!0),(L(),z(F(()=>g(e))))]),_:2},1032,[`title`]))),128))])]),_:1})):H(``,!0),B(s).length?(L(),z(w,{key:2,name:`categories`,tab:`分类`},{default:R(()=>[U(E,{striped:``,columns:v,data:B(s),pagination:!1},null,8,[`data`])]),_:1})):H(``,!0),U(w,{name:`raw`,tab:`原始 JSON`},{default:R(()=>[U(Cr,{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=Z({__name:`SubscriptionDirectoryPreview`,props:{items:{},detail:{},detailStructured:{type:Boolean},detailLoading:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=Y(`list`),a=Y(``),o=Y(``),s=Fe(xn()),c=Y(1),l=K(()=>{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=>On(t,e,s))):n.items}),u=()=>{c.value=1},d=K(()=>{let e=(c.value-1)*xo;return l.value.slice(e,e+xo)}),f=K(()=>n.items.find(e=>e.path==a.value)),p=K(()=>{if(!(!n.detailStructured||!n.detail?.parsed))return n.detail.value}),m=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,h=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,g=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},_=[{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 U(`div`,{class:`min-w-0 flex items-center gap-6px`},[U(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:U(et,{size:`small`,type:h(e.status)},bo(t=m(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??`-`}],v=e=>({class:`cursor-pointer`,onClick:()=>g(e)});return(t,n)=>{let r=P,a=$e,m=tt,h=Xt,g=jt;return L(),J(`div`,ho,[U(mi,{title:`订阅文件`,count:e.items.length,listLabel:`订阅列表`,listActive:B(i)==`list`,detailText:B(f)?.name||B(f)?.fileName,detailTitle:B(f)?.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),B(i)==`list`?(L(),J(`div`,go,[U(kr,{modelValue:B(o),"onUpdate:modelValue":[n[1]||=e=>ve(o)?o.value=e:null,u],"match-case":B(s).matchCase,"onUpdate:matchCase":[n[2]||=e=>B(s).matchCase=e,u],"whole-word":B(s).wholeWord,"onUpdate:wholeWord":[n[3]||=e=>B(s).wholeWord=e,u],"use-regex":B(s).useRegex,"onUpdate:useRegex":[n[4]||=e=>B(s).useRegex=e,u],placeholder:`搜索订阅 ID、名称、作者或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(d).length==0?(L(),z(r,{key:0,description:B(o).trim()?`没有匹配的订阅`:`没有订阅文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(a,{key:1,striped:``,columns:_,data:B(d),pagination:!1,rowKey:e=>e.path,rowProps:v,scrollX:1020,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),B(l).length>xo?(L(),z(m,{key:2,page:B(c),"onUpdate:page":n[5]||=e=>ve(c)?c.value=e:null,pageSize:xo,itemCount:B(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):H(``,!0)])):(L(),J(`div`,_o,[e.detailLoading?(L(),z(h,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(L(),J(`div`,vo,[B(p)?(L(),z(mo,{key:e.detail.path,value:B(p),raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.parsed?(L(),z(aa,{key:e.detail.path,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):(L(),J(`div`,yo,[U(g,{type:`warning`,title:`订阅 JSON 解析失败`,class:`flex-none`},{default:R(()=>[W(I(e.detail.error),1)]),_:1}),e.detail.raw?(L(),z(xr,{key:e.detail.path,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`min-h-0 flex-1`},null,8,[`value`])):(L(),z(r,{key:1,description:`无法读取原始内容`}))]))])):(L(),z(r,{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=Z({__name:`SqlitePreview`,props:{database:{},wal:{},appNames:{},subscriptionNames:{}},setup(e){let t=e,n=Y(!0),r=Y(!1),i=Y(``),a=Y(``),o=Y([]),s=Y(``),c=Y([]),l=Y([]),u=Y([]),d=Y(``),f=Fe(xn()),p=new Worker(new URL(``+globalThis.location.origin+`/assets/worker-entry-sqlite.worker-CVPb-Ur3.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=K(()=>o.value.find(e=>e.name==s.value)),y=K(()=>{let e=d.value.trim();return e?o.value.filter(t=>On(t.name,e,f)):o.value}),b,x=e=>{if(b===void 0&&(b=document.createElement(`canvas`).getContext(`2d`),b)){let{fontFamily:e,fontSize:t}=getComputedStyle(document.body);b.font=`${t} ${e}`}return b?.measureText(e).width??Array.from(e).length*8},C=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:x})),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)}},ee=async e=>{s.value!=e&&(s.value=e,await C())};De(async()=>{n.value=!0,i.value=``;try{let e=t.database,n=t.wal,r=[e.buffer];n&&r.push(n.buffer);let i=await _({type:`open`,database:e,wal:n},r);o.value=i.tables,s.value=i.tables[0]?.name||``,await C()}catch(e){i.value=e instanceof Error?e.message:String(e)}finally{n.value=!1}}),ye(()=>{p.terminate();for(let e of g.values())e.reject(Error(`组件已卸载`));g.clear()});let w=(e,n,r)=>{if(r==null)return U(`span`,{class:`italic text-[#9ca3af]`},[W(`NULL`)]);if(typeof r==`object`)return U(et,{size:`small`},{default:()=>[`BLOB · ${r.byteLength} bytes`]});if(Oo(e,n)&&typeof r==`string`){let e=t.appNames?.[r];if(e)return U(`span`,{class:`whitespace-pre`,title:r},[e])}if(ko(e,n)&&(typeof r==`number`||typeof r==`string`)){let e=t.subscriptionNames?.[String(r)];if(e)return U(`span`,{class:`whitespace-pre`,title:String(r)},[e])}let i=Ao(e,n,r);return i?U(`span`,{class:`whitespace-nowrap tabular-nums`,title:String(r)},[Mo(i)]):U(`span`,{class:`whitespace-pre`},[String(r)])},T=K(()=>{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(U(`span`,{class:`inline-block w-max`},[w(e,t,r[t]??null)]),[[nt,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}]])}}))}),E=K(()=>zo(l.value)),D=K(()=>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=jt,l=P,u=et,p=S,m=$e,h=tn,g=on,_=Xt;return L(),z(_,{show:B(n),class:`h-full min-h-0 [&_.n-spin-content]:h-full [&_.n-spin-content]:min-h-0`},{default:R(()=>[B(i)?(L(),z(c,{key:0,type:`error`,title:`数据库无法预览`},{default:R(()=>[W(I(B(i)),1)]),_:1})):!B(n)&&B(o).length==0?(L(),z(l,{key:1,description:`数据库中没有可展示的数据表`})):(L(),J(`div`,Bo,[X(`div`,Vo,[U(kr,{modelValue:B(d),"onUpdate:modelValue":t[0]||=e=>ve(d)?d.value=e:null,"match-case":B(f).matchCase,"onUpdate:matchCase":t[1]||=e=>B(f).matchCase=e,"whole-word":B(f).wholeWord,"onUpdate:wholeWord":t[2]||=e=>B(f).wholeWord=e,"use-regex":B(f).useRegex,"onUpdate:useRegex":t[3]||=e=>B(f).useRegex=e,placeholder:`搜索数据表`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),X(`div`,Ho,[(L(!0),J(Pe,null,Ee(B(y),e=>(L(),z(p,{key:e.name,block:``,text:``,type:e.name==B(s)?`primary`:`default`,class:`h-34px justify-between px-6px`,onClick:t=>ee(e.name)},{default:R(()=>[X(`span`,Uo,I(e.name),1),U(u,{size:`small`,bordered:!1},{default:R(()=>[W(I(e.count??`?`),1)]),_:2},1024)]),_:2},1032,[`type`,`onClick`]))),128))])]),B(v)?(L(),J(`div`,Wo,[U(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:R(()=>[U(h,{name:`data`,tab:B(v).count==null?`数据`:`数据 · ${B(v).count}`},{default:R(()=>[X(`div`,Go,[B(a)?(L(),z(c,{key:0,type:`warning`,title:`当前数据表无法读取`,class:`w-full flex-none`},{default:R(()=>[W(I(B(a)),1)]),_:1})):H(``,!0),X(`div`,Ko,[U(m,{striped:``,"virtual-scroll":``,"flex-height":``,scrollX:B(E)||void 0,loading:B(r),columns:B(T),data:B(D),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`]),U(h,{name:`schema`,tab:`表结构`},{default:R(()=>[X(`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:I(B(v).sql)},null,8,qo)]),_:1})]),_:1})])):H(``,!0)]))]),_:1},8,[`show`])}}}),Yo=e(gt(),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=_t(`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 bt(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{buildKey;worker;workerReadyTask;rejectWorkerReady;initializeTask;releaseBuildAssetTask;nextRequestId=1;disposed=!1;pendingRequests=new Map;constructor(e){this.buildKey=e}dispose(){this.disposed||(this.disposed=!0,this.releaseBuildAssetTask?.(),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-OZ-QGs6s.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?.(),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){this.worker?.terminate(),this.worker=void 0,this.rejectWorkerReady?.(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=Z({__name:`LogPage`,setup(e){let t=dt(),n=pt(),r=Y(),i=Y(``),a=Y(!1),o=Y(!1),s=Y(``),c=Y(``),l=Y(`none`),u=Y(``),d=Y(),f=Y(),p=Y(`users`),m=Y([]),h=Y(),_=Y(!1),v=Y([]),y=Y(``),b=Y(),x=Y(``),C=Y(!1),ee=Y(),w=Y(),T=Y(),E=Y(),D=Y(),O=Y(),te=Y([]),k=Y(),re=Y(!1),ie=Y(!1),ae=Y(``),oe=Y(),se=Y(),A=Y({}),j=Y({}),ce=Y(),le=Y(!1),M=0,N=0,ue=0,de,fe=0,pe=0,me,he,ge,_e=new Map,F=K(()=>r.value?.entryMap.get(i.value)),be=()=>{ge?.dispose(),ge=void 0,T.value=void 0,_e.clear(),E.value=void 0,D.value=void 0,O.value=void 0},xe=(e,t)=>{let n=_e.get(e);if(n?.originalText==t)return n;let r=Fe({originalText:t,available:us(t),loading:!1,active:!1,autoAttempted:!1});return _e.set(e,r),r},Se=e=>e.active&&e.retracedText!=null?e.retracedText:e.originalText,Ce=async(e,t,n,r)=>{let i=T.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=ge||=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}},we=(e,t,n,r)=>{!e?.available||e.autoAttempted||(e.autoAttempted=!0,Ce(e,t,n,r))},Te=()=>{let e=E.value;Ce(e,`log`,()=>E.value==e,t=>{E.value==e&&(u.value=t)})},Ee=()=>{let e=D.value;Ce(e,`crash`,()=>D.value==e,t=>{D.value!=e||!h.value||(h.value=V({...h.value,stackTrace:t}))})},Oe=()=>{let e=O.value;Ce(e,`log`,()=>O.value==e,t=>{O.value==e&&(b.value=t)})},ke=()=>{ue++,h.value=void 0,D.value=void 0,_.value=!1},je=()=>{de=void 0,m.value=[],ke()},Me=()=>{fe++,y.value=``,b.value=void 0,O.value=void 0,x.value=``,C.value=!1},Ne=()=>{pe++,k.value=void 0,re.value=!1,ie.value=!1},Pe=()=>{v.value=[],ee.value=void 0,w.value=void 0,te.value=[],me=void 0,Me(),Ne()},G=()=>{o.value=!1,l.value=`none`,u.value=``,E.value=void 0,d.value=void 0,f.value=void 0,p.value=`users`,ae.value=``,oe.value=void 0,se.value=void 0,A.value={},j.value={},ke(),Me(),Ne()},q=async e=>{let t=++N;if(s.value=``,G(),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;oe.value=V(n.database),se.value=n.wal?V(n.wal):void 0,A.value=V(i),j.value=V(a),l.value=`database`;return}if(e.kind==`text`){let n=await $(e);if(t!=N)return;let r=Pa(n),i=xe(`text:${e.path}`,r);E.value=i,u.value=Se(i),l.value=`text`,we(i,`log`,()=>E.value==i,e=>{E.value==i&&(u.value=e)});return}if(e.kind==`json`){let n=Pa(await $(e,ya));if(t!=N)return;u.value=n;try{let t=JSON.parse(n);d.value=t;let r=hn(t),i=e.path.toLowerCase().split(`/`).at(-1)==`apps.json`&&!r?zr(t):void 0;i?(f.value=V(i),l.value=`apps`):!r&&Ya(e,t)?l.value=`subscription`:l.value=`json`}catch(e){ae.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=Zr(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,G(),i.value=Br,l.value=`crash`,m.value.length!=t.length){o.value=!0;try{de||=ai(t,async e=>Pa(await $(e,ya)));let a=await de;if(n!=N||e!=r.value||i.value!=Br)return;m.value=V(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)}}},Z=async e=>{let t=r.value,n=t?.entryMap.get(e);if(!t||!n||!Yr(n.path))return;let i=++ue;if(h.value=void 0,D.value=void 0,_.value=!0,!Xr(n.path)){h.value=V(ri(n.path)),_.value=!1;return}try{let e=Pa(await $(n,ya));if(i!=ue||t!=r.value||l.value!=`crash`)return;let a=$r(e,n.path);if(a.stackTrace){let e=xe(`crash:${n.path}`,a.stackTrace);D.value=e,h.value=V({...a,stackTrace:Se(e)}),we(e,`crash`,()=>D.value==e,t=>{D.value!=e||!h.value||(h.value=V({...h.value,stackTrace:t}))})}else h.value=V(a)}catch(e){if(i!=ue)return;h.value=V(ti(n.path,e))}finally{i==ue&&(_.value=!1)}},Le=()=>{let e=r.value;if(!e)return;let t=Oi(e.entries);t.length!=0&&(N++,s.value=``,G(),i.value=Si,v.value=V(Mi(t)),l.value=`log-directory`)},Q=async e=>{let t=r.value,n=t?.entryMap.get(e);if(!t||!n||!Ei(n.path))return;let i=++fe;y.value=n.path,b.value=void 0,O.value=void 0,x.value=``,C.value=!0;try{let e=Pa(await $(n));if(i!=fe||t!=r.value||l.value!=`log-directory`)return;let a=xe(`log:${n.path}`,e);O.value=a,b.value=Se(a),we(a,`log`,()=>O.value==a,e=>{O.value==a&&(b.value=e)})}catch(e){if(i!=fe)return;x.value=e instanceof Error?e.message:String(e)}finally{i==fe&&(C.value=!1)}},ze=async()=>{let e=r.value;if(!e)return;let t=ki(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,G(),i.value=Ci,l.value=`subscription-directory`,te.value.length!=t.length){o.value=!0;try{me||=Yi(t,async e=>Pa(await $(e,ya)));let a=await me;if(n!=N||e!=r.value||i.value!=Ci)return;te.value=V(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?.entryMap.get(e);if(!t||!n||!Di(n.path))return;let i=++pe;if(k.value=void 0,re.value=!1,ie.value=!0,!Vi(n.path)){k.value=V(qi(n.path)),ie.value=!1;return}try{let e=Pa(await $(n,ya));if(i!=pe||t!=r.value||l.value!=`subscription-directory`)return;let a=Ui(e,n.path);k.value=V(a),re.value=a.parsed&&Ja(a.value)}catch(e){if(i!=pe)return;k.value=V(Gi(n.path,e))}finally{i==pe&&(ie.value=!1)}},Ve=async(e,t,n=++M)=>{be(),N++,je(),Pe(),a.value=!0,s.value=``,G(),r.value=void 0,i.value=``;try{let i=await ka(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?V(a):void 0,ee.value=o?V(o):void 0,T.value=s;let c=Oa(i);return c&&Ei(c.path)?Le():c&&Yr(c.path)?await Ie():c&&Di(c.path)?await ze():c?await q(c):Oi(i.entries).length?Le():Zr(i.entries).length?await Ie():ki(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)=>{let n=e.headers.get(`content-disposition`)||``,r=n.match(/filename\*=UTF-8''([^;]+)/i)?.[1],i=n.match(/filename="?([^";]+)"?/i)?.[1],a=r||i;if(a)try{return decodeURIComponent(a)}catch{return a}if(t.name?.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 ht(e.url,{credentials:`omit`,signal:n.signal},e=>({...e,anonymous:!0,onprogress(t){e.onprogress?.call(t,t),t.loaded>52428800&&(i=!0,n.abort())}}))}catch(e){throw i?Error(`ZIP 文件不能超过 ${Xa(ha)}`,{cause:e}):e}if(!o.ok)throw Error(`HTTP ${o.status}`);if(Number(o.headers.get(`content-length`)||0)>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ha)}`);let c;try{c=await to(o,ha)}catch(e){throw e instanceof Error&&e.message==`响应内容超过大小限制`?Error(`ZIP 文件不能超过 ${Xa(ha)}`,{cause:e}):e}if(t!=M)return;let l=He(o,e);await Ve(c,l,t)&&ts(e.url,l,c)},We=e=>e.path==`/log`?ut(e.query.url):ct(e.params.pathMatch),Ge=async(e=t)=>{he?.abort(),be();let n=new AbortController;he=n;let o=We(e),l=++M;if(N++,je(),Pe(),r.value=void 0,i.value=``,G(),s.value=``,!o){a.value=!1,c.value=``;return}c.value=o.url,a.value=!0;try{await Ue(o,l,n)}catch(e){if(l!=M)return;s.value=e instanceof Error?e.message:String(e),a.value=!1}};De(()=>Ge(t)),ft(e=>Ge(e)),ye(()=>{he?.abort(),be()});let qe=async()=>{let e=st(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?.abort(),he=void 0,M++,t.fullPath!=`/log`&&await n.replace(`/log`),c.value=``,await Ve(r,r.name))},Ye=()=>ce.value?.click(),Qe=()=>{let e=ce.value;if(!e)return;let t=[...e.files||[]];e.value=``,Je(t)};ne(document.body,`dragover`,e=>e.preventDefault()),ne(document.body,`drop`,e=>{e.preventDefault();let t=mt(e);if(!t.some(e=>e.name.toLowerCase().endsWith(`.zip`))){Ke.warning(`请拖入 ZIP 文件`);return}Je(t)});let $e=K(()=>{let e=[],t=new Map,n=r.value?.entries||[],i=Zr(n),a=Oi(n),o=ki(n);for(let r of n){if(Yr(r.path)||Ei(r.path)||Di(r.path))continue;let n=r.path.split(`/`).filter(Boolean),i=e,a=``;n.forEach((e,o)=>{a=a?`${a}/${e}`:e;let s=t.get(a);if(!s){let c=o==n.length-1;s={key:a,label:e,path:c?r.path:void 0,isFile:c,children:c?void 0:[]},t.set(a,s),i.push(s)}i=s.children||[]})}return i.length&&e.push({key:Br,label:`crash (${i.length})`,isFile:!0}),a.length&&e.push({key:Si,label:`log (${a.length})`,isFile:!0}),o.length&&e.push({key:Ci,label:`subscription (${o.length})`,isFile:!0}),e.sort((e,t)=>String(e.label||``).localeCompare(String(t.label||``),`zh-CN`)),e}),et=e=>{let t=String(e[0]||``);if(t==Br){Ie();return}if(t==Si){Le();return}if(t==Ci){ze();return}let n=r.value?.entryMap.get(t);n&&q(n)};return(e,t)=>{let n=S,ne=Re(`RouterLink`),M=Xe,N=Ze,ue=jt,de=Re(`SvgIcon`),fe=ot,pe=rt,me=Xt,he=P;return L(),J(`div`,gs,[X(`div`,_s,[U(ne,{to:`/`,flex:``,"items-center":``},{default:R(()=>[U(n,{quaternary:``},{default:R(()=>[...t[5]||=[W(`返回首页`,-1)]]),_:1})]),_:1}),t[8]||=X(`div`,{name:`log-title`,class:`flex-none text-18px font-600`},` 日志包查看器 `,-1),B(w)?(L(),J(`a`,{key:0,href:B(w).commitUrl,target:`_blank`,rel:`noopener noreferrer`,class:`flex-none text-14px text-[#2563eb] hover:underline`},I(B(w).versionName)+` (`+I(B(w).versionCode)+`) `,9,vs)):H(``,!0),U(N,{class:`ml-auto min-w-420px max-w-720px`},{default:R(()=>[U(M,{value:B(c),"onUpdate:value":t[0]||=e=>ve(c)?c.value=e:null,clearable:``,placeholder:`粘贴 GitHub、f.gkd.li 或其他 ZIP 链接`,onKeyup:g(qe,[`enter`])},null,8,[`value`]),U(n,{type:`primary`,loading:B(a),onClick:qe},{default:R(()=>[...t[6]||=[W(` 加载链接 `,-1)]]),_:1},8,[`loading`])]),_:1}),U(n,{disabled:B(a),onClick:Ye},{default:R(()=>[...t[7]||=[W(` 选择本地 ZIP `,-1)]]),_:1},8,[`disabled`]),X(`input`,{ref_key:`localFileInput`,ref:ce,hidden:``,type:`file`,accept:`.zip,application/zip`,onChange:Qe},null,544)]),B(s)?(L(),z(ue,{key:0,type:`error`,closable:``,onClose:t[1]||=e=>s.value=``},{default:R(()=>[W(I(B(s)),1)]),_:1})):H(``,!0),B(r)?(L(),J(`div`,ys,[X(`div`,{name:`log-file-panel`,class:Ae([`box-border flex min-h-0 flex-col rounded-6px border border-[#e2e8f0] bg-white transition-[width,min-width] duration-180 ease`,B(le)?`w-44px min-w-44px`:`w-300px min-w-300px`])},[X(`div`,{name:`archive-meta`,class:Ae([`flex min-w-0 items-start gap-8px`,B(le)?`justify-center border-b-0 p-8px`:`border-b border-[#e5e7eb] p-12px`])},[B(le)?H(``,!0):(L(),J(`div`,bs,[X(`div`,{name:`archive-name`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:B(r).name},I(B(r).name),9,xs),X(`div`,Ss,I(B(r).entries.length)+` 个文件 · `+I(B(Xa)(B(r).uncompressedSize)),1)])),X(`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":!B(le),"aria-label":B(le)?`展开文件列表`:`收起文件列表`,title:B(le)?`展开文件列表`:`收起文件列表`,onClick:t[2]||=e=>le.value=!B(le)},[U(de,{name:`arrow`,class:Ae([`h-17px w-17px transition-transform duration-180 ease`,B(le)?`-rotate-90`:`rotate-90`])},null,8,[`class`])],8,Cs)],2),B(le)?H(``,!0):(L(),z(fe,{key:0,blockLine:``,virtualScroll:``,defaultExpandAll:``,data:B($e),selectedKeys:B(i)?[B(i)]:[],class:`min-h-0 flex-1 p-8px`,"onUpdate:selectedKeys":et},null,8,[`data`,`selectedKeys`]))],2),X(`div`,ws,[B(F)&&B(F).kind!=`text`&&B(l)!=`invalid-json`?(L(),J(`div`,Ts,[X(`div`,Es,[X(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:B(F).path},I(B(F).path),9,Ds),X(`div`,Os,I(B(Xa)(B(F).size)),1)]),B(l)==`apps`&&B(f)?(L(),J(`div`,ks,[U(pe,{size:`small`},{default:R(()=>[U(n,{type:B(p)==`users`?`primary`:`default`,secondary:B(p)==`users`,onClick:t[3]||=e=>p.value=`users`},{default:R(()=>[...t[9]||=[W(` 按用户查看 `,-1)]]),_:1},8,[`type`,`secondary`]),U(n,{type:B(p)==`raw`?`primary`:`default`,secondary:B(p)==`raw`,onClick:t[4]||=e=>p.value=`raw`},{default:R(()=>[...t[10]||=[W(` 原始 JSON `,-1)]]),_:1},8,[`type`,`secondary`])]),_:1}),t[11]||=X(`span`,{class:`mx-6px h-16px border-l border-[#e2e8f0]`},null,-1),t[12]||=X(`span`,{class:`text-[#64748b]`},`应用安装记录`,-1),X(`span`,As,I(B(f).totalApps),1),t[13]||=X(`span`,{class:`mx-4px text-[#cbd5e1]`},`·`,-1),t[14]||=X(`span`,{class:`text-[#64748b]`},`设备用户`,-1),X(`span`,js,I(B(f).users.length),1)])):H(``,!0)])):H(``,!0),X(`div`,Ms,[B(o)?(L(),z(me,{key:0,show:``,class:`h-full w-full`})):B(l)==`none`?(L(),z(he,{key:1,description:`该日志包没有可预览内容`})):B(l)==`text`||B(l)==`invalid-json`?(L(),J(`div`,Ns,[B(l)==`invalid-json`?(L(),z(ue,{key:0,type:`warning`,title:`JSON 解析失败,以下为原始内容`,class:`flex-none`},{default:R(()=>[W(I(B(ae)),1)]),_:1})):H(``,!0),(L(),z(xr,{key:B(F)?.path,value:B(u),documentKey:B(F)?.path,"search-placeholder":`搜索当前文件`,"allow-wrap":``,copyable:``},{"toolbar-start":R(()=>[B(F)?(L(),J(`div`,Ps,[X(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:B(F).path},I(B(F).path),9,Fs),X(`div`,Is,I(B(Xa)(B(F).size)),1)])):H(``,!0),U(hi,{available:!!B(T)&&!!B(E)?.available,loading:B(E)?.loading,retraced:B(E)?.active,onToggle:Te},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`documentKey`]))])):B(l)==`json`?(L(),z(aa,{key:B(i),value:B(d),raw:B(u)},null,8,[`value`,`raw`])):B(l)==`crash`?(L(),z(xi,{key:B(i),items:B(m),detail:B(h),detailLoading:B(_),retraceAvailable:!!B(T)&&!!B(D)?.available,retraceLoading:B(D)?.loading,retraceActive:B(D)?.active,sourceLinkContext:B(ee),onSelect:Z,onToggleRetrace:Ee},null,8,[`items`,`detail`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):B(l)==`log-directory`?(L(),z(eo,{key:B(i),items:B(v),detailPath:B(y),detailText:B(b),detailError:B(x),detailLoading:B(C),retraceAvailable:!!B(T)&&!!B(O)?.available,retraceLoading:B(O)?.loading,retraceActive:B(O)?.active,sourceLinkContext:B(ee),onSelect:Q,onToggleRetrace:Oe},null,8,[`items`,`detailPath`,`detailText`,`detailError`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):B(l)==`subscription-directory`?(L(),z(So,{key:B(i),items:B(te),detail:B(k),detailStructured:B(re),detailLoading:B(ie),onSelect:Be},null,8,[`items`,`detail`,`detailStructured`,`detailLoading`])):B(l)==`apps`&&B(f)?(L(),z(Nr,{key:B(i),data:B(f),value:B(d),raw:B(u),view:B(p)},null,8,[`data`,`value`,`raw`,`view`])):B(l)==`subscription`&&B(Ja)(B(d))?(L(),z(mo,{key:B(i),value:B(d),raw:B(u)},null,8,[`value`,`raw`])):B(l)==`database`&&B(oe)?(L(),z(Jo,{key:B(i),database:B(oe),wal:B(se),"app-names":B(A),"subscription-names":B(j)},null,8,[`database`,`wal`,`app-names`,`subscription-names`])):(L(),z(he,{key:10,description:`该文件不支持预览`}))])])])):(L(),J(`div`,Ls,[U(me,{show:B(a)},{default:R(()=>[X(`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},[U(de,{name:`import`,class:`mb-18px h-48px w-48px`}),X(`div`,Rs,I(B(a)?`正在下载并解析日志包…`:`拖拽 ZIP 到这里`),1),t[15]||=X(`div`,{name:`drop-description`,class:`mt-8px text-[#64748b]`},` 或点击选择本地 ZIP 文件 `,-1),t[16]||=X(`div`,{name:`privacy-tip`,class:`mt-24px text-12px text-[#94a3b8]`},` 文件只在当前浏览器中解析,不会上传;远程日志会在本机缓存最多 7 天 `,-1)])]),_:1},8,[`show`])]))])}}});export{zs as default};
|
|
537
|
-
//# sourceMappingURL=LogPage-
|
|
536
|
+
`)])])])]),an=Tt,on=Z({name:`Tabs`,props:Object.assign(Object.assign({},c.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}){let{mergedClsPrefixRef:r,inlineThemeDisabled:a,mergedComponentPropsRef:o}=O(e),s=c(`Tabs`,`-tabs`,rn,qt,e,r),l=G(null),d=G(null),f=G(null),p=G(null),m=G(null),h=G(null),g=G(!0),_=G(!0),v=ue(e,[`labelSize`,`size`]),y=K(()=>v.value?v.value:o?.value?.Tabs?.size||`medium`),b=ue(e,[`activeName`,`value`]),S=G(b.value??e.defaultValue??(t.default?i(t.default())[0]?.props?.name:null)),C=Ye(b,S),ee={id:0},w=K(()=>{if(!(!e.justifyContent||e.type===`card`))return{display:`flex`,justifyContent:e.justifyContent}});Te(C,()=>{ee.id=0,ne(),k()});function T(){let{value:e}=C;return e===null?null:l.value?.querySelector(`[data-name="${e}"]`)}function E(t){if(e.type===`card`)return;let{value:n}=d;if(!n)return;let i=n.style.opacity===`0`;if(t){let a=`${r.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(te([`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`,i&&(n.style.transition=`none`),n.offsetWidth,i&&(n.style.transition=``,n.style.opacity=`1`)}else{if(te([`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`,i&&(n.style.transition=`none`),n.offsetHeight,i&&(n.style.transition=``,n.style.opacity=`1`)}}}function D(){if(e.type===`card`)return;let{value:t}=d;t&&(t.style.opacity=`0`)}function te(e){let{value:t}=d;if(t)for(let n of e)t.style[n]=``}function ne(){if(e.type===`card`)return;let t=T();t?E(t):D()}function k(){let e=m.value?.$el;if(!e)return;let t=T();if(!t)return;let{scrollLeft:n,offsetWidth:r}=e,{offsetLeft:i,offsetWidth:a}=t;n>i?e.scrollTo({top:0,left:i,behavior:`smooth`}):i+a>n+r&&e.scrollTo({top:0,left:i+a-r,behavior:`smooth`})}let ae=G(null),oe=0,se=null;function A(e){let t=ae.value;if(t){oe=e.getBoundingClientRect().height;let n=`${oe}px`,r=()=>{t.style.height=n,t.style.maxHeight=n};se?(r(),se(),se=null):se=r}}function j(e){let t=ae.value;if(t){let n=e.getBoundingClientRect().height,r=()=>{document.body.offsetHeight,t.style.maxHeight=`${n}px`,t.style.height=`${Math.max(oe,n)}px`};se?(se(),se=null,r()):se=r}}function ce(){let t=ae.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 le={value:[]},M=G(`next`);function N(e){let t=C.value,n=`next`;for(let r of le.value){if(r===t)break;if(r===e){n=`prev`;break}}M.value=n,de(e)}function de(t){let{onActiveNameChange:n,onUpdateValue:r,"onUpdate:value":i}=e;n&&u(n,t),r&&u(r,t),i&&u(i,t),S.value=t}function fe(t){let{onClose:n}=e;n&&u(n,t)}let pe=!0;function he(){let{value:e}=d;if(!e)return;pe||=!1;let t=`transition-disabled`;e.classList.add(t),ne(),e.classList.remove(t)}let P=G(null);function ge({transitionDisabled:e}){let t=l.value;if(!t)return;e&&t.classList.add(`transition-disabled`);let n=T();n&&P.value&&(P.value.style.width=`${n.offsetWidth}px`,P.value.style.height=`${n.offsetHeight}px`,P.value.style.transform=`translateX(${n.offsetLeft-x(getComputedStyle(t).paddingLeft)}px)`,e&&P.value.offsetWidth),e&&t.classList.remove(`transition-disabled`)}Te([C],()=>{e.type===`segment`&&xe(()=>{ge({transitionDisabled:!1})})}),De(()=>{e.type===`segment`&&ge({transitionDisabled:!0})});let _e=0;function ve(t){if(t.contentRect.width===0&&t.contentRect.height===0||_e===t.contentRect.width)return;_e=t.contentRect.width;let{type:n}=e;if((n===`line`||n===`bar`)&&(pe||e.justifyContent?.startsWith(`space`))&&he(),n!==`segment`){let{placement:t}=e;Ce((t===`top`||t===`bottom`?m.value?.$el:h.value)||null)}}let ye=an(ve,64);Te([()=>e.justifyContent,()=>e.size],()=>{xe(()=>{let{type:t}=e;(t===`line`||t===`bar`)&&he()})});let F=G(!1);function be(t){let{target:n,contentRect:{width:r,height:i}}=t,a=n.parentElement.parentElement.offsetWidth,o=n.parentElement.parentElement.offsetHeight,{placement:s}=e;if(!F.value)s===`top`||s===`bottom`?a<r&&(F.value=!0):o<i&&(F.value=!0);else{let{value:e}=p;if(!e)return;s===`top`||s===`bottom`?a-r>e.$el.offsetWidth&&(F.value=!1):o-i>e.$el.offsetHeight&&(F.value=!1)}Ce(m.value?.$el||null)}let I=an(be,64);function Se(){let{onAdd:t}=e;t&&t(),xe(()=>{let e=T(),{value:t}=m;!e||!t||t.scrollTo({left:e.offsetLeft,top:0,behavior:`smooth`})})}function Ce(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=an(e=>{Ce(e.target)},64);we($t,{triggerRef:q(e,`trigger`),tabStyleRef:q(e,`tabStyle`),tabClassRef:q(e,`tabClass`),addTabStyleRef:q(e,`addTabStyle`),addTabClassRef:q(e,`addTabClass`),paneClassRef:q(e,`paneClass`),paneStyleRef:q(e,`paneStyle`),mergedClsPrefixRef:r,typeRef:q(e,`type`),closableRef:q(e,`closable`),valueRef:C,tabChangeIdRef:ee,onBeforeLeaveRef:q(e,`onBeforeLeave`),activateTab:N,handleClose:fe,handleAdd:Se}),me(()=>{ne(),k()}),Ie(()=>{let{value:e}=f;if(!e)return;let{value:t}=r,n=`${t}-tabs-nav-scroll-wrapper--shadow-start`,i=`${t}-tabs-nav-scroll-wrapper--shadow-end`;g.value?e.classList.remove(n):e.classList.add(n),_.value?e.classList.remove(i):e.classList.add(i)});let R={syncBarPosition:()=>{ne()}},Ee=()=>{ge({transitionDisabled:!0})},Oe=K(()=>{let{value:t}=y,{type:r}=e,i=`${t}${{card:`Card`,bar:`Bar`,line:`Line`,segment:`Segment`}[r]}`,{self:{barColor:a,closeIconColor:o,closeIconColorHover:c,closeIconColorPressed:l,tabColor:u,tabBorderColor:d,paneTextColor:f,tabFontWeight:p,tabBorderRadius:m,tabFontWeightActive:h,colorSegment:g,fontWeightStrong:_,tabColorSegment:v,closeSize:b,closeIconSize:x,closeColorHover:S,closeColorPressed:C,closeBorderRadius:ee,[n(`panePadding`,t)]:w,[n(`tabPadding`,i)]:T,[n(`tabPaddingVertical`,i)]:E,[n(`tabGap`,i)]:D,[n(`tabGap`,`${i}Vertical`)]:O,[n(`tabTextColor`,r)]:te,[n(`tabTextColorActive`,r)]:ne,[n(`tabTextColorHover`,r)]:k,[n(`tabTextColorDisabled`,r)]:ie,[n(`tabFontSize`,t)]:ae},common:{cubicBezierEaseInOut:oe}}=s.value;return{"--n-bezier":oe,"--n-color-segment":g,"--n-bar-color":a,"--n-tab-font-size":ae,"--n-tab-text-color":te,"--n-tab-text-color-active":ne,"--n-tab-text-color-disabled":ie,"--n-tab-text-color-hover":k,"--n-pane-text-color":f,"--n-tab-border-color":d,"--n-tab-border-radius":m,"--n-close-size":b,"--n-close-icon-size":x,"--n-close-color-hover":S,"--n-close-color-pressed":C,"--n-close-border-radius":ee,"--n-close-icon-color":o,"--n-close-icon-color-hover":c,"--n-close-icon-color-pressed":l,"--n-tab-color":u,"--n-tab-font-weight":p,"--n-tab-font-weight-active":h,"--n-tab-padding":T,"--n-tab-padding-vertical":E,"--n-tab-gap":D,"--n-tab-gap-vertical":O,"--n-pane-padding-left":re(w,`left`),"--n-pane-padding-right":re(w,`right`),"--n-pane-padding-top":re(w,`top`),"--n-pane-padding-bottom":re(w,`bottom`),"--n-font-weight-strong":_,"--n-tab-color-segment":v}}),ke=a?ie(`tabs`,K(()=>`${y.value[0]}${e.type[0]}`),Oe,e):void 0;return Object.assign({mergedClsPrefix:r,mergedValue:C,renderedNames:new Set,segmentCapsuleElRef:P,tabsPaneWrapperRef:ae,tabsElRef:l,barElRef:d,addTabInstRef:p,xScrollInstRef:m,scrollWrapperElRef:f,addTabFixed:F,tabWrapperStyle:w,handleNavResize:ye,mergedSize:y,handleScroll:L,handleTabsResize:I,cssVars:a?void 0:Oe,themeClass:ke?.themeClass,animationDirection:M,renderNameListRef:le,yScrollElRef:h,handleSegmentResize:Ee,onAnimationBeforeLeave:A,onAnimationEnter:j,onAnimationAfterEnter:ce,onRender:ke?.onRender},R)},render(){let{mergedClsPrefix:e,type:t,placement:n,addTabFixed:r,addable:a,mergedSize:o,renderNameListRef:s,onRender:c,paneWrapperClass:u,paneWrapperStyle:d,$slots:{default:p,prefix:m,suffix:h}}=this;c?.();let g=p?i(p()).filter(e=>e.type.__TAB_PANE__===!0):[],_=p?i(p()).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=Q(`div`,{style:this.tabWrapperStyle,class:`${e}-tabs-wrapper`},x?null:Q(`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),un(Q(nn,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),un(t!==0&&!x?ln(e):e))),!r&&a&&y?cn(a,(v?g.length:_.length)!==0):null,x?null:Q(`div`,{class:`${e}-tabs-scroll-padding`,style:{width:`${this.tabsPadding}px`}}));return Q(`div`,{ref:`tabsElRef`,class:`${e}-tabs-nav-scroll-content`},y&&a?Q(l,{onResize:this.handleTabsResize},{default:()=>t}):t,y?Q(`div`,{class:`${e}-tabs-pad`}):null,y?null:Q(`div`,{ref:`barElRef`,class:`${e}-tabs-bar`}))},C=b?`top`:n;return Q(`div`,{class:[`${e}-tabs`,this.themeClass,`${e}-tabs--${t}-type`,`${e}-tabs--${o}-size`,x&&`${e}-tabs--flex`,`${e}-tabs--${C}`],style:this.cssVars},Q(`div`,{class:[`${e}-tabs-nav--${t}-type`,`${e}-tabs-nav--${C}`,`${e}-tabs-nav`]},f(m,t=>t&&Q(`div`,{class:`${e}-tabs-nav__prefix`},t)),b?Q(l,{onResize:this.handleSegmentResize},{default:()=>Q(`div`,{class:`${e}-tabs-rail`,ref:`tabsElRef`},Q(`div`,{class:`${e}-tabs-capsule`,ref:`segmentCapsuleElRef`},Q(`div`,{class:`${e}-tabs-wrapper`},Q(`div`,{class:`${e}-tabs-tab`}))),v?g.map((e,t)=>(s.value.push(e.props.name),Q(nn,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:ln(e))))}):Q(l,{onResize:this.handleNavResize},{default:()=>Q(`div`,{class:`${e}-tabs-nav-scroll-wrapper`,ref:`scrollWrapperElRef`},[`top`,`bottom`].includes(C)?Q(St,{ref:`xScrollInstRef`,onScroll:this.handleScroll},{default:S}):Q(`div`,{class:`${e}-tabs-nav-y-scroll`,onScroll:this.handleScroll,ref:`yScrollElRef`},S()))}),r&&a&&y?cn(a,!0):null,f(h,t=>t&&Q(`div`,{class:`${e}-tabs-nav__suffix`},t))),v&&(this.animated&&(C===`top`||C===`bottom`)?Q(`div`,{ref:`tabsPaneWrapperRef`,style:d,class:[`${e}-tabs-pane-wrapper`,u]},sn(g,this.mergedValue,this.renderedNames,this.onAnimationBeforeLeave,this.onAnimationEnter,this.onAnimationAfterEnter,this.animationDirection)):sn(g,this.mergedValue,this.renderedNames)))}});function sn(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,[[C,c]]):e)}}),o?Q(te,{name:`${o}-transition`,onBeforeLeave:r,onEnter:i,onAfterEnter:a},{default:()=>s}):s}function cn(e,t){return Q(nn,{ref:`addTabInstRef`,key:`__addable`,name:`__addable`,internalCreatedByPane:!0,internalAddable:!0,internalLeftPadded:t,disabled:typeof e==`object`&&e.disabled})}function ln(e){let t=Ne(e);return t.props?t.props.internalLeftPadded=!0:t.props={internalLeftPadded:!0},t}function un(e){return Array.isArray(e.dynamicProps)?e.dynamicProps.includes(`internalLeftPadded`)||e.dynamicProps.push(`internalLeftPadded`):e.dynamicProps=[`internalLeftPadded`],e}var dn=Z({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=G(null),n=G(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(){return n.value?.listElRef}function l(){return n.value?.itemsElRef}return{scrollTo:s,scrollbarInstRef:t,virtualListInstRef:n,getScrollContainer:c,getScrollContent:l,handleScroll:i,handleResize:a,handleWheel:o}},render(){return Q(M,Object.assign({},this.scrollbarProps,{ref:`scrollbarInstRef`,container:this.getScrollContainer,content:this.getScrollContent}),{default:()=>Q(he,{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;return(n=this.$slots).default?.call(n,{item:e,index:t})}})})}}),fn=1e4,pn=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},mn=e=>typeof e==`object`&&!!e&&pn(e)==null,hn=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},gn=e=>e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`,_n=e=>gn(e)?!0:Array.isArray(e)?e.every(gn):typeof e==`object`&&!!e&&Object.keys(e).length==0,vn=e=>{if(typeof e!=`object`||!e||mn(e))return;let t=Object.entries(e);if(!(t.length==0||!t.every(([,e])=>_n(e))))return t.map(([e,t])=>({key:e,value:t}))},yn=e=>JSON.stringify(e)??String(e),bn=(e,t)=>{if(hn(e))return t;try{return JSON.stringify(e,null,2)??t}catch{return t}},xn=()=>({matchCase:!1,wholeWord:!1,useRegex:!1}),Sn=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Cn=(e,t,n=!0)=>{let r=e.trim();if(!r)return;let i=t.useRegex?r:Sn(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}},wn=(e,t)=>!e.trim()||!t.useRegex||!!Cn(e,t),Tn=(e,t,n)=>{let r=Cn(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},En=(e,t,n)=>{let r=Cn(t,n);if(!r)return 0;let i=0,a;for(;a=r.exec(e);)a[0].length?i++:r.lastIndex++;return i},Dn=(e,t,n)=>e.split(/\r\n|\n|\r/).reduce((e,r)=>e+En(r,t,n),0),On=(e,t,n)=>Cn(t,n,!1)?.test(e)||!1,kn=/\b([A-Za-z\d]+\.kt):(\d+)\b/g,An=/^[A-Za-z\d_.-]+$/,jn=/^[a-f\d]{7,40}$/i,Mn=1024,Nn=64,Pn=255,Fn=e=>/^gkd(?:-[^/]+)?\.json$/i.test(e),In=e=>{try{let t=JSON.parse(Rn(e));if(!Ln(t)||typeof t.buildKey!=`string`)return;let n=t.buildKey.trim();return!n||n.length>256?void 0:n}catch{}},Ln=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Rn=e=>e.replace(/^\uFEFF/,``),zn=(e,t)=>{if(typeof e==`string`)try{let n=new URL(e);if(n.protocol!=`https:`||n.hostname.toLowerCase()!=`github.com`||n.port||n.username||n.password)return;let r=n.pathname.split(`/`).filter(Boolean).map(decodeURIComponent);if(r.length!=4||r[2]?.toLowerCase()!=`commit`)return;let[i,a,,o]=r;return!i||!a||!o||!An.test(i)||!An.test(a)||!jn.test(o)||t!=null&&(typeof t!=`string`||t.toLowerCase()!=o.toLowerCase())?void 0:{repositoryUrl:`https://github.com/${i}/${a}`,commitId:o,commitUrl:`https://github.com/${i}/${a}/commit/${o}`}}catch{}},Bn=e=>{try{let t=JSON.parse(Rn(e));return Ln(t)?zn(t.commitUrl,t.commitId):void 0}catch{}},Vn=e=>{try{let t=JSON.parse(Rn(e));if(!Ln(t))return;let n=zn(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{}},Hn=e=>{let t=e.trim().replaceAll(`\\`,`/`);if(!t||t.length>Mn||t.startsWith(`/`)||/^[A-Za-z]:\//.test(t)||!t.toLowerCase().endsWith(`.kt`))return;let n=t.split(`/`);if(!(n.length>Nn||n.some(e=>!e||e==`.`||e==`..`||e.length>Pn)))return t},Un=e=>{let t=new Map,n=Rn(e).split(/\r\n|\n|\r/);for(let e of n){let n=Hn(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},Wn=(e,t)=>{if(t==null)return;let n=Bn(e);if(!n)return;let r=Un(t);if(r.size!=0)return{...n,pathsByFileName:r}},Gn=(e,t,n)=>{let r=t.split(`/`).map(encodeURIComponent).join(`/`);return`${e.repositoryUrl}/blob/${e.commitId}/${r}#L${n}`},Kn=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]||``})},qn=(e,t)=>{if(!t||!e.includes(`.kt:`))return[{text:e}];let n=[],r=0;kn.lastIndex=0;let i;for(;i=kn.exec(e);){let a=i[1],o=Number(i[2]),s=a?t.pathsByFileName.get(a):void 0;if(!s?.length||!Number.isSafeInteger(o)||o<1)continue;i.index>r&&n.push({text:e.slice(r,i.index)});let c=Kn(s);n.push({text:i[0],sourceTargets:s.map((e,n)=>({path:e,displayPath:c[n]||e,url:Gn(t,e,o)}))}),r=i.index+i[0].length}return r<e.length&&n.push({text:e.slice(r)}),n.length?n:[{text:e}]},Jn=e=>e.split(/\r\n|\n|\r/).map((e,t)=>({key:t,number:t+1,text:e})),Yn=(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},[Xn,Zn]=b(e=>{let t=Y(``),n=Y(-1),r=Fe(xn()),i=Y(!1),a=Y(),o=Y(),s=Y(0),c=Y(600),l=Y(),u=Y(),d=0,f=K(()=>Jn(e.value.value)),p=K(()=>t.value.trim()),m=K(()=>Dn(e.value.value,t.value,r)),h=K(()=>m.value?Math.min(Math.max(n.value,0),m.value-1)+1:0),g=K(()=>!wn(t.value,r)),_=K(()=>Math.max(Math.floor(s.value/20)-8,0)),v=K(()=>Math.min(Math.ceil((s.value+c.value)/20)+8,f.value.length)),y=K(()=>f.value.slice(_.value,v.value)),b=K(()=>f.value.length*20);oe(o,e=>{let t=e[0]?.contentRect.height;t&&(c.value=t)});let x=()=>{s.value=o.value?.scrollTop||0},S=e=>{e instanceof HTMLElement&&(u.value=e)},C=t=>{let n=p.value?Tn(t.text,p.value,r):[],i=l.value?.lineKey==t.key?l.value.rangeIndex:void 0,a=qn(t.text,e.sourceLinkContext.value),o=0;return a.map(e=>{let t={fragments:Yn(e.text,o,n,i),sourceTargets:e.sourceTargets};return o+=e.text.length,t})},ee=async()=>{await navigator.clipboard.writeText(e.value.value),Ke.success(`已复制当前文件内容`)},w=async()=>{s.value=0,await xe(),o.value?.scrollTo({top:0}),a.value?.scrollTo({index:0})},T=async e=>{if(e!=d)return;l.value=void 0,u.value=void 0;let t=p.value,i=n.value;if(!t||i<0)return;let c=i,m=-1;for(let e=0;e<f.value.length;e++){let n=f.value[e];if(!n)continue;let i=Tn(n.text,t,r);if(c<i.length){m=e,l.value={lineKey:n.key,rangeIndex:c};break}c-=i.length}m<0||(s.value=m*20,await xe(),e==d&&(o.value?.scrollTo({top:s.value}),a.value?.scrollTo({index:m}),await xe(),requestAnimationFrame(()=>{e==d&&u.value?.scrollIntoView({block:`nearest`,inline:`nearest`})})))},E=async()=>{let e=++d,t=m.value;n.value=p.value&&t?0:-1,await T(e)},D=e=>{t.value=e,E()},O=e=>{r[e]=!r[e],E()},te=e=>{!p.value||!m.value||(n.value=((n.value>=0?n.value:0)+e+m.value)%m.value,T(++d))},ne=e=>{te(e.shiftKey?-1:1)},k=e=>{i.value=e,w()};return{...e,query:t,resultIndex:n,searchOptions:r,wrap:i,virtualList:a,scrollContainer:o,lineHeight:20,lines:f,visibleStart:_,visibleLines:y,virtualHeight:b,normalizedQuery:p,matchCount:m,displayedResultIndex:h,invalidRegex:g,updateQuery:D,toggleSearchOption:O,selectRelativeResult:te,handleSearchEnter:ne,handleScroll:x,setActiveMatchElement:S,getLineTokens:C,copyText:ee,setWrap:k}}),Qn=Xn,$n=()=>{let e=Zn();if(!e)throw Error(`TextViewer 子组件必须在 TextViewer 内部使用`);return e},er=Z({__name:`CopyButton`,setup(e){let{copyable:t,copyText:n}=$n();return(e,r)=>{let i=Re(`SvgIcon`),a=S;return B(t)?(L(),z(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:B(n)},{icon:R(()=>[U(i,{name:`copy`})]),_:1},8,[`onClick`])):H(``,!0)}}}),tr={name:`text-viewer-search`,class:`w-520px max-w-full min-w-0 flex flex-[0_1_520px] items-center gap-6px`},nr=[`title`],rr=[`disabled`],ir=[`disabled`],ar={name:`text-viewer-search-options`,class:`flex items-center gap-2px`},or=[`aria-pressed`],sr=[`aria-pressed`],cr=[`aria-pressed`],lr=Z({__name:`SearchBar`,setup(e){let{query:t,searchOptions:n,searchPlaceholder:r,normalizedQuery:i,matchCount:a,displayedResultIndex:o,invalidRegex:s,updateQuery:c,toggleSearchOption:l,selectRelativeResult:u,handleSearchEnter:d}=$n();return(e,f)=>{let p=Re(`SvgIcon`),m=Xe;return L(),J(`div`,tr,[X(`div`,{name:`text-viewer-navigation`,class:Ae([`w-116px min-w-116px flex items-center justify-between gap-2px`,B(i)?`visible`:`invisible`])},[X(`span`,{class:`w-62px overflow-hidden text-right text-ellipsis whitespace-nowrap text-12px text-[#64748b]`,title:`第 ${B(o).toLocaleString()} 处,共 ${B(a).toLocaleString()} 处`},I(B(o).toLocaleString())+` / `+I(B(a).toLocaleString()),9,nr),X(`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:!B(a),"aria-label":`上一个匹配项`,title:`上一个匹配项 (Shift+Enter)`,onMousedown:f[0]||=k(()=>{},[`prevent`]),onClick:f[1]||=e=>B(u)(-1)},[U(p,{name:`arrow`,class:`h-16px w-16px rotate-180`})],40,rr),X(`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:!B(a),"aria-label":`下一个匹配项`,title:`下一个匹配项 (Enter)`,onMousedown:f[2]||=k(()=>{},[`prevent`]),onClick:f[3]||=e=>B(u)(1)},[U(p,{name:`arrow`,class:`h-16px w-16px`})],40,ir)],2),U(m,{value:B(t),clearable:``,size:`small`,status:B(s)?`error`:void 0,placeholder:B(r),class:`min-w-0 flex-1`,onKeydown:g(k(B(d),[`prevent`]),[`enter`]),"onUpdate:value":B(c)},{suffix:R(()=>[X(`div`,ar,[X(`button`,{type:`button`,class:Ae([`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`,B(n).matchCase?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":B(n).matchCase,"aria-label":`区分大小写`,title:`区分大小写`,onMousedown:f[4]||=k(()=>{},[`prevent`]),onClick:f[5]||=e=>B(l)(`matchCase`)},` Aa `,42,or),X(`button`,{type:`button`,class:Ae([`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`,B(n).wholeWord?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":B(n).wholeWord,"aria-label":`全词匹配`,title:`全词匹配`,onMousedown:f[6]||=k(()=>{},[`prevent`]),onClick:f[7]||=e=>B(l)(`wholeWord`)},` ab `,42,sr),X(`button`,{type:`button`,class:Ae([`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`,B(n).useRegex?`bg-[#dbeafe] text-[#1d4ed8]`:`bg-transparent text-[#475569] hover:bg-[#e2e8f0]`]),"aria-pressed":B(n).useRegex,"aria-label":`使用正则表达式`,title:`使用正则表达式`,onMousedown:f[8]||=k(()=>{},[`prevent`]),onClick:f[9]||=e=>B(l)(`useRegex`)},` .* `,42,cr)])]),_:1},8,[`value`,`status`,`placeholder`,`onKeydown`,`onUpdate:value`])])}}}),ur={class:`sticky left-0 z-1 box-border select-none border-r border-[#e5e7eb] bg-[#f8fafc] px-10px text-right text-[#94a3b8]`},dr=[`href`],fr=[`onKeydown`],pr={class:`max-w-640px flex flex-col gap-4px`},mr=[`href`,`title`],hr=Z({__name:`TextLine`,props:{line:{}},setup(e){let t=e,{wrap:n,getLineTokens:r,setActiveMatchElement:i}=$n(),a=K(()=>r(t.line)),o=e=>U(Pe,null,[e.fragments.map((e,t)=>e.match?U(`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 L(),J(`div`,{name:`text-viewer-line`,class:Ae([`grid min-h-20px min-w-full leading-20px`,B(n)?`w-full grid-cols-[64px_minmax(0,1fr)]`:`w-max grid-cols-[64px_max-content]`])},[X(`span`,ur,I(e.line.number),1),X(`span`,{class:Ae([`box-border min-w-0 px-10px [font:inherit] [tab-size:2]`,B(n)?`whitespace-pre-wrap [overflow-wrap:anywhere]`:`whitespace-pre`])},[(L(!0),J(Pe,null,Ee(B(a),(e,t)=>(L(),J(Pe,{key:t},[e.sourceTargets?.length==1?(L(),J(`a`,{key:0,href:e.sourceTargets[0]?.url,target:`_blank`,rel:`noopener noreferrer`,class:`text-[#2563eb] underline decoration-transparent underline-offset-2 hover:decoration-current`},[U(o,{fragments:e.fragments},null,8,[`fragments`])],8,dr)):e.sourceTargets&&e.sourceTargets.length>1?(L(),z(i,{key:1,trigger:`click`,placement:`bottom-start`},{trigger:R(()=>[X(`span`,{role:`button`,tabindex:`0`,class:`cursor-pointer text-[#2563eb] underline decoration-dashed underline-offset-2`,onKeydown:[g(k(s,[`prevent`]),[`enter`]),g(k(s,[`prevent`]),[`space`])]},[U(o,{fragments:e.fragments},null,8,[`fragments`])],40,fr)]),default:R(()=>[X(`div`,pr,[(L(!0),J(Pe,null,Ee(e.sourceTargets,e=>(L(),J(`a`,{key:e.path,href:e.url,title:e.path,target:`_blank`,rel:`noopener noreferrer`,class:`break-all text-[#2563eb] hover:underline`},I(e.displayPath),9,mr))),128))])]),_:2},1024)):(L(),z(o,{key:2,fragments:e.fragments},null,8,[`fragments`]))],64))),128))],2)],2)}}}),gr={name:`text-viewer-viewport`,class:`h-full min-h-0 min-w-0`},_r=Z({__name:`Viewport`,setup(e){let{wrap:t,virtualList:n,scrollContainer:r,lineHeight:i,lines:a,visibleStart:o,visibleLines:s,virtualHeight:c,handleScroll:l}=$n();return(e,u)=>{let d=dn;return L(),J(`div`,gr,[B(t)?(L(),z(d,{key:0,ref_key:`virtualList`,ref:n,items:B(a),"item-size":B(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:R(({item:e})=>[U(hr,{line:e},null,8,[`line`])]),_:1},8,[`items`,`item-size`])):(L(),J(`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)=>B(l)&&B(l)(...e)},[X(`div`,{name:`text-viewer-spacer`,class:`relative min-w-full`,style:Ce({height:`${B(c)}px`})},[X(`div`,{name:`text-viewer-visible`,class:`absolute left-0 top-0 min-w-full w-max`,style:Ce({transform:`translateY(${B(o)*B(i)}px)`})},[(L(!0),J(Pe,null,Ee(B(s),e=>(L(),z(hr,{key:e.key,line:e},null,8,[`line`]))),128))],4)],4)],544))])}}}),vr={name:`text-viewer`,class:`min-h-0 min-w-0 flex flex-1 flex-col gap-8px`},yr={name:`text-viewer-toolbar`,class:`min-h-28px min-w-0 flex items-center gap-10px`},br={name:`text-viewer-content`,class:`relative min-h-0 min-w-0 flex-1`},xr=Z({__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,setWrap:i}=Qn({value:q(t,`value`),documentKey:q(t,`documentKey`),searchPlaceholder:q(t,`searchPlaceholder`),allowWrap:q(t,`allowWrap`),copyable:q(t,`copyable`),sourceLinkContext:q(t,`sourceLinkContext`)});return(e,t)=>{let a=ge;return L(),J(`div`,vr,[X(`div`,yr,[Oe(e.$slots,`toolbar-start`),t[1]||=X(`div`,{name:`text-viewer-toolbar-spacer`,class:`min-w-0 flex-1`},null,-1),U(lr),B(n)?(L(),z(a,{key:0,checked:B(r),"onUpdate:checked":B(i)},{default:R(()=>[...t[0]||=[W(` 自动换行 `,-1)]]),_:1},8,[`checked`,`onUpdate:checked`])):H(``,!0)]),X(`div`,br,[U(_r),U(er)])])}}}),Sr={name:`raw-json-preview`,class:`h-full`},Cr=Z({__name:`RawJsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=K(()=>bn(t.value,t.raw));return(e,t)=>(L(),J(`div`,Sr,[U(xr,{value:B(n),"search-placeholder":`搜索原始 JSON`,class:`h-full`},null,8,[`value`])]))}}),wr={name:`text-search`,class:`w-full min-w-0 flex items-center gap-6px`},Tr={name:`text-search-options`,class:`flex items-center gap-2px`},Er=[`aria-pressed`],Dr=[`aria-pressed`],Or=[`aria-pressed`],kr=Z({__name:`TextSearchInput`,props:ke({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=K(()=>!wn(n.value,{matchCase:r.value,wholeWord:i.value,useRegex:a.value}));return(e,s)=>{let c=Xe;return L(),J(`div`,wr,[U(c,{value:n.value,"onUpdate:value":s[6]||=e=>n.value=e,clearable:``,size:t.size,status:B(o)?`error`:void 0,placeholder:t.placeholder,class:`min-w-0 flex-1`},{suffix:R(()=>[X(`div`,Tr,[X(`button`,{type:`button`,class:Ae([`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]||=k(()=>{},[`prevent`]),onClick:s[1]||=e=>r.value=!r.value},` Aa `,42,Er),X(`button`,{type:`button`,class:Ae([`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]||=k(()=>{},[`prevent`]),onClick:s[3]||=e=>i.value=!i.value},` ab `,42,Dr),X(`button`,{type:`button`,class:Ae([`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]||=k(()=>{},[`prevent`]),onClick:s[5]||=e=>a.value=!a.value},` .* `,42,Or)])]),_:1},8,[`value`,`size`,`status`,`placeholder`])])}}}),Ar={name:`apps-preview`,class:`h-full min-h-0 flex flex-col`},jr={key:0,name:`user-apps`,class:`h-full min-h-0 min-w-0 flex flex-col gap-10px`},Mr={name:`user-apps-header`,class:`min-w-0 flex items-center gap-16px`},Nr=Z({__name:`AppsPreview`,props:{data:{},value:{},raw:{},view:{}},setup(e){let t=e,n=Y(t.data.users[0]?.id),r=K(()=>t.data.users.find(e=>e.id==n.value)||t.data.users[0]),i=K(()=>t.data.users.map(e=>({label:`${e.name} · 用户 ${e.id} · ${e.apps.length} 个应用`,value:e.id}))),a=Y(``),o=Fe(xn()),s=K(()=>{let e=r.value?.apps||[],t=a.value.trim();return t?e.filter(e=>[e.name,e.id,e.versionName||``,e.versionCode==null?``:String(e.versionCode)].some(e=>On(e,t,o))):e}),c=[{key:`name`,title:`应用名称`},{key:`id`,title:`包名`},{key:`version`,title:`版本`,render(e){return e.versionName&&e.versionCode!=null?`${e.versionName} (${e.versionCode})`:e.versionName||e.versionCode?.toString()||`-`}},{key:`isSystem`,title:`类型`,render(e){return e.isSystem==null?`-`:U(et,{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,l)=>{let u=Qe,d=P,f=$e;return L(),J(`div`,Ar,[e.view==`users`&&B(r)?(L(),J(`div`,jr,[X(`div`,Mr,[U(u,{value:B(n),"onUpdate:value":l[0]||=e=>ve(n)?n.value=e:null,options:B(i),"aria-label":`设备用户`,class:`min-w-280px w-40% max-w-420px`},null,8,[`value`,`options`]),U(kr,{modelValue:B(a),"onUpdate:modelValue":l[1]||=e=>ve(a)?a.value=e:null,"match-case":B(o).matchCase,"onUpdate:matchCase":l[2]||=e=>B(o).matchCase=e,"whole-word":B(o).wholeWord,"onUpdate:wholeWord":l[3]||=e=>B(o).wholeWord=e,"use-regex":B(o).useRegex,"onUpdate:useRegex":l[4]||=e=>B(o).useRegex=e,placeholder:`搜索应用名称、包名或版本`,class:`ml-auto min-w-320px w-50% max-w-460px`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`])]),B(s).length==0?(L(),z(d,{key:0,description:B(a).trim()?`没有匹配的应用`:`该用户没有应用记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(f,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:c,data:B(s),pagination:!1,rowKey:e=>e.id,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`]))])):(L(),z(Cr,{key:1,value:e.value,raw:e.raw},null,8,[`value`,`raw`]))])}}}),Pr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Fr=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Ir=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Lr=e=>typeof e==`string`?e:void 0,Rr=e=>typeof e==`boolean`?e:void 0,zr=e=>{if(!Pr(e)||!Array.isArray(e.apps)||e.apps.length>1e4||Array.isArray(e.otherUsers)&&e.otherUsers.length>1e4)return;let t=Fr(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(!Pr(e))return;let n=Fr(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(!Pr(e)||typeof e.id!=`string`||typeof e.name!=`string`)return;let n=Fr(e.userId)??t,a=r(n,n==t?`当前用户`:`用户 ${n}`,n==t),o={id:e.id,name:e.name,userId:n},s=Ir(e.versionCode),c=Lr(e.versionName),l=Rr(e.isSystem),u=Rr(e.hidden),d=Rr(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}},Br=`__crash_preview__`,Vr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Hr=e=>typeof e==`string`&&e.trim()?e:void 0,Ur=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Wr=e=>{if(e==null)return;let t=Math.abs(e)<1e11?e*1e3:e;return Number.isNaN(new Date(t).getTime())?void 0:t},Gr=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()},Kr=e=>({path:e,fileName:e.split(`/`).at(-1)||e,status:`incomplete`,timestamp:Gr(e)}),qr=(e,t)=>{let n=Kr(t);if(!Vr(e))return{summary:n};n.id=Ur(e.id),n.mtime=Ur(e.mtime),n.timestamp=Wr(n.mtime)||Wr(n.id)||n.timestamp,n.device=Hr(e.device),n.androidVersionCode=Ur(e.androidVersionCode),n.androidVersionName=Hr(e.androidVersionName),n.versionCode=Ur(e.versionCode),n.versionName=Hr(e.versionName),n.name=Hr(e.name),n.message=Hr(e.message),n.thread=Hr(e.thread);let r=Hr(e.stackTrace);return n.status=n.name&&r?`valid`:`incomplete`,{summary:n,stackTrace:r}},Jr=e=>e instanceof Error?e.message:String(e),Yr=e=>/^crash\/.+/i.test(e.replaceAll(`\\`,`/`)),Xr=e=>Yr(e)&&e.toLowerCase().endsWith(`.json`),Zr=e=>e.filter(e=>Yr(e.path)),Qr=(e,t)=>{try{return qr(JSON.parse(e),t).summary}catch(e){return{...Kr(t),status:`invalid`,error:Jr(e)}}},$r=(e,t)=>{try{let n=JSON.parse(e),{summary:r,stackTrace:i}=qr(n,t);return{...r,parsed:!0,raw:e,value:n,stackTrace:i}}catch(n){return{...Kr(t),status:`invalid`,error:Jr(n),parsed:!1,raw:e}}},ei=(e,t)=>({...Kr(e),status:`invalid`,error:Jr(t)}),ti=(e,t)=>({...ei(e,t),parsed:!1,raw:``}),ni=e=>({...Kr(e),status:`unsupported`,error:`仅支持 JSON 崩溃记录`}),ri=e=>({...ni(e),parsed:!1,raw:``}),ii=e=>e.toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),ai=async(e,t)=>{let n=yt(4);return ii(await Promise.all(Zr(e).map(e=>n(async()=>{if(!Xr(e.path))return ni(e.path);try{return Qr(await t(e),e.path)}catch(t){return ei(e.path,t)}}))))},oi=(e,t=2)=>e.toString().padStart(t,`0`),si=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${oi(t.getMonth()+1)}-${oi(t.getDate())} ${oi(t.getHours())}:${oi(t.getMinutes())}:${oi(t.getSeconds())}.${oi(t.getMilliseconds(),3)}`},ci={name:`directory-preview-header`,class:`h-40px flex flex-none items-stretch`},li={class:`flex flex-none items-center gap-8px pr-14px font-600`},ui=[`aria-pressed`],di={key:0,class:`min-w-0 flex items-center gap-10px pl-14px`},fi=[`title`],pi={key:0,class:`flex-none text-12px text-[#64748b]`},mi=Z({__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=et;return L(),J(`div`,ci,[X(`div`,li,[X(`span`,null,I(e.title),1),U(i,{size:`small`,round:``},{default:R(()=>[W(I(e.count),1)]),_:1})]),X(`button`,{type:`button`,class:Ae([`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`)},I(e.listLabel),11,ui),r[1]||=X(`div`,{class:`min-w-0 flex-1`},null,-1),!e.listActive&&e.detailText?(L(),J(`div`,di,[X(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:e.detailTitle||e.detailText},I(e.detailText),9,fi),e.detailMeta?(L(),J(`span`,pi,I(e.detailMeta),1)):H(``,!0)])):H(``,!0)])}}}),hi=Z({__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=S;return e.available?(L(),z(i,{key:0,size:`small`,secondary:``,type:`primary`,loading:e.loading,onClick:r[0]||=e=>n(`toggle`)},{default:R(()=>[W(I(e.retraced?`原始堆栈`:`还原堆栈`),1)]),_:1},8,[`loading`])):H(``,!0)}}}),gi={name:`crash-preview`,class:`h-full min-h-0 flex flex-col`},_i={key:0,name:`crash-list`,class:`min-h-0 flex flex-1 flex-col gap-10px`},vi={key:1,name:`crash-detail`,class:`min-h-0 flex flex-1 flex-col gap-10px`};function yi(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!Le(e)}var bi=50,xi=Z({__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=Y(`list`),a=Y(``),o=Y(``),s=Fe(xn()),c=Y(1),l=K(()=>{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=>On(t,e,s))):n.items}),u=()=>{c.value=1},d=K(()=>{let e=(c.value-1)*bi;return l.value.slice(e,e+bi)}),f=K(()=>n.items.find(e=>e.path==a.value)),p=(e,t)=>e&&t!=null?`${e} (${t})`:e||t?.toString()||`-`,m=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,h=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,g=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},_=[{key:`timestamp`,title:`时间`,width:190,sorter:(e,t)=>(e.timestamp||0)-(t.timestamp||0),render:e=>si(e.timestamp)},{key:`name`,title:`异常类型`,width:280,ellipsis:{tooltip:!0},render(e){let t;return U(`div`,{class:`min-w-0 flex items-center gap-6px`},[U(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:U(et,{size:`small`,type:h(e.status)},yi(t=m(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=>p(e.versionName,e.versionCode)},{key:`android`,title:`Android`,width:140,render:e=>p(e.androidVersionName,e.androidVersionCode)},{key:`device`,title:`设备`,width:260,ellipsis:{tooltip:!0},render:e=>e.device||`-`}],v=e=>({class:`cursor-pointer`,onClick:()=>g(e)});return(t,n)=>{let a=P,m=$e,h=tt,g=Xt,y=jt,b=Bt,x=Rt,S=tn,C=on;return L(),J(`div`,gi,[U(mi,{title:`崩溃记录`,count:e.items.length,listLabel:`崩溃列表`,listActive:B(i)==`list`,detailText:B(f)?.fileName,detailTitle:B(f)?.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),B(i)==`list`?(L(),J(`div`,_i,[U(kr,{modelValue:B(o),"onUpdate:modelValue":[n[1]||=e=>ve(o)?o.value=e:null,u],"match-case":B(s).matchCase,"onUpdate:matchCase":[n[2]||=e=>B(s).matchCase=e,u],"whole-word":B(s).wholeWord,"onUpdate:wholeWord":[n[3]||=e=>B(s).wholeWord=e,u],"use-regex":B(s).useRegex,"onUpdate:useRegex":[n[4]||=e=>B(s).useRegex=e,u],placeholder:`搜索异常类型、消息、设备或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(d).length==0?(L(),z(a,{key:0,description:B(o).trim()?`没有匹配的崩溃记录`:`没有崩溃记录`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(m,{key:1,striped:``,flexHeight:``,virtualScroll:``,columns:_,data:B(d),pagination:!1,rowKey:e=>e.path,rowProps:v,scrollX:1510,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),B(l).length>bi?(L(),z(h,{key:2,page:B(c),"onUpdate:page":n[5]||=e=>ve(c)?c.value=e:null,pageSize:bi,itemCount:B(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):H(``,!0)])):(L(),J(`div`,vi,[e.detailLoading?(L(),z(g,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(L(),J(Pe,{key:2},[e.detail.error?(L(),z(y,{key:0,type:`warning`,title:`该记录无法完整解析`,class:`flex-none`},{default:R(()=>[W(I(e.detail.error),1)]),_:1})):H(``,!0),U(x,{bordered:``,size:`small`,column:3,labelPlacement:`left`,class:`flex-none`},{default:R(()=>[U(b,{label:`时间`},{default:R(()=>[W(I(B(si)(e.detail.timestamp)),1)]),_:1}),U(b,{label:`线程`},{default:R(()=>[W(I(e.detail.thread||`-`),1)]),_:1}),U(b,{label:`GKD 版本`},{default:R(()=>[W(I(p(e.detail.versionName,e.detail.versionCode)),1)]),_:1}),U(b,{label:`Android`},{default:R(()=>[W(I(p(e.detail.androidVersionName,e.detail.androidVersionCode)),1)]),_:1}),U(b,{label:`设备`,span:2},{default:R(()=>[W(I(e.detail.device||`-`),1)]),_:1})]),_:1}),U(C,{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:R(()=>[U(S,{name:`stack`,tab:`堆栈`},{default:R(()=>[e.detail.stackTrace?(L(),z(xr,{key:`${e.detail.path}:stack`,value:e.detail.stackTrace,documentKey:e.detail.path,"search-placeholder":`搜索崩溃堆栈`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`h-full`},{"toolbar-start":R(()=>[U(hi,{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`])):(L(),z(a,{key:1,description:`该记录没有堆栈信息`}))]),_:1}),U(S,{name:`raw`,tab:`原始 JSON`},{default:R(()=>[e.detail.parsed?(L(),z(Cr,{key:0,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.raw?(L(),z(xr,{key:`${e.detail.path}:raw`,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`h-full`},null,8,[`value`])):(L(),z(a,{key:2,description:`无法读取原始内容`}))]),_:1})]),_:1})],64)):(L(),z(a,{key:1,description:`请选择一条崩溃记录`}))]))])}}}),Si=`__log_directory_preview__`,Ci=`__subscription_directory_preview__`,wi=e=>e.replaceAll(`\\`,`/`),Ti=(e,t)=>wi(e).toLowerCase().startsWith(`${t}/`),Ei=e=>Ti(e,`log`),Di=e=>Ti(e,`subscription`),Oi=e=>e.filter(e=>Ei(e.path)),ki=e=>e.filter(e=>Di(e.path)),Ai=e=>e.split(`/`).at(-1)||e,ji=e=>{let t=Ai(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()},Mi=e=>Oi(e).map(e=>({path:e.path,fileName:Ai(e.path),size:e.size||0,timestamp:ji(e.path)})).toSorted((e,t)=>(t.timestamp||0)-(e.timestamp||0)||t.path.localeCompare(e.path,`zh-CN`)),Ni=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Pi=e=>typeof e==`string`&&e.trim()?e:void 0,Fi=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:void 0,Ii=e=>Array.isArray(e)?e.length:void 0,Li=e=>{let t=Number(Ai(e).replace(/\.json$/i,``));return Number.isSafeInteger(t)?t:void 0},Ri=e=>({path:e,fileName:Ai(e),status:`incomplete`,id:Li(e)}),zi=(e,t)=>{let n=Ri(t);return Ni(e)?(n.id=Fi(e.id)??n.id,n.name=Pi(e.name),n.version=Fi(e.version),n.author=Pi(e.author),n.appsCount=Ii(e.apps),n.globalGroupsCount=Ii(e.globalGroups),n.categoriesCount=Ii(e.categories),n.status=n.id!=null&&n.name&&n.version!=null?`valid`:`incomplete`,n):n},Bi=e=>e instanceof Error?e.message:String(e),Vi=e=>Di(e)&&e.toLowerCase().endsWith(`.json`),Hi=(e,t)=>{try{return zi(JSON.parse(e),t)}catch(e){return{...Ri(t),status:`invalid`,error:Bi(e)}}},Ui=(e,t)=>{try{let n=JSON.parse(e);return{...zi(n,t),parsed:!0,raw:e,value:n}}catch(n){return{...Ri(t),status:`invalid`,error:Bi(n),parsed:!1,raw:e}}},Wi=(e,t)=>({...Ri(e),status:`invalid`,error:Bi(t)}),Gi=(e,t)=>({...Wi(e,t),parsed:!1,raw:``}),Ki=e=>({...Ri(e),status:`unsupported`,error:`仅支持 JSON 订阅文件`}),qi=e=>({...Ki(e),parsed:!1,raw:``}),Ji=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`)),Yi=async(e,t)=>{let n=yt(4);return Ji(await Promise.all(ki(e).map(e=>n(async()=>{if(!Vi(e.path))return Ki(e.path);try{return Hi(await t(e),e.path)}catch(t){return Wi(e.path,t)}}))))},Xi=e=>e.toString().padStart(2,`0`),Zi=e=>{if(e==null)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:`${t.getFullYear()}-${Xi(t.getMonth()+1)}-${Xi(t.getDate())}`},Qi={name:`json-basic-table`,class:`mb-10px mt-6px`},$i=Z({__name:`JsonBasicTable`,props:{rows:{},indexed:{type:Boolean,default:!1}},setup(e){let t=e,n=K(()=>[{key:`key`,title:t.indexed?`索引`:`键`,width:220,ellipsis:{tooltip:!0}},{key:`value`,title:`值`,render(e){return U(`span`,{class:`whitespace-pre-wrap font-mono [overflow-wrap:anywhere]`},[yn(e.value)])}}]),r=K(()=>t.rows.length>200?{pageSize:200,showSizePicker:!1}:!1),i=e=>e.key;return(t,a)=>{let o=$e;return L(),J(`div`,Qi,[U(o,{striped:``,size:`small`,columns:B(n),data:e.rows,rowKey:i,pagination:B(r)},null,8,[`columns`,`data`,`pagination`])])}}}),ea={flex:``,"flex-col":``,"gap-10px":``,"h-full":``},ta={name:`json-structure-scroll`,class:`min-h-0 flex-1 overflow-auto px-4px pb-24px pt-8px font-mono text-13px`},na={key:1,name:`json-search-results`,class:`flex flex-col gap-6px`},ra={class:`text-[#7c3aed]`},ia={class:`mt-4px text-[#374151] [overflow-wrap:anywhere]`},aa=Z({__name:`JsonPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=K(()=>hn(t.value)),r=e=>{if(Array.isArray(e))return`Array(${e.length})`;if(e&&typeof e==`object`){let t=pn(e);return t==null?`Object(>${fn})`:`Object(${t})`}return typeof e==`string`?JSON.stringify(e):String(e)},i=Z({name:`JsonNode`,props:{value:{type:null,required:!0},name:{type:String,required:!0},depth:{type:Number,default:0}},setup(e){let t=G(e.depth==0);return()=>{let n=mn(e.value),a=e.value!=null&&typeof e.value==`object`&&!n,o=a?Object.entries(e.value):[],s=a?vn(e.value):void 0;return U(`div`,Se({name:`json-node`},{class:`block`}),[U(`div`,Se({name:`json-node-line`},{class:`min-h-28px flex items-center gap-6px`}),[a?U(S,{quaternary:!0,size:`tiny`,class:`w-24px min-w-24px font-inherit`,onClick:()=>t.value=!t.value},{default:()=>[t.value?`−`:`+`]}):U(`span`,{class:`inline-block w-24px`},null),U(`span`,{class:`text-[#7c3aed]`},[e.name]),U(`span`,{class:`text-[#6b7280]`},[W(`:`)]),U(`span`,{class:a?`text-[#6b7280]`:`text-[#0f766e] [overflow-wrap:anywhere]`},[r(e.value)]),n?U(`span`,{class:`text-[#b45309]`},[W(`结构过大,请切换到原始 JSON 查看`)]):null]),a&&t.value?U(`div`,Se({name:`json-children`},{class:`ml-15px border-l border-[#e5e7eb] pl-10px`}),[s?U($i,{rows:s,indexed:Array.isArray(e.value)},null):o.map(([t,n])=>U(i,{key:t,name:t,value:n,depth:e.depth+1},null))]):null])}}}),a=Y(``),o=Fe(xn()),s=K(()=>{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(mn(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(On(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);On(c,e,o)&&i.push({path:a||`$`,value:c})}return i});return(t,r)=>{let c=jt,l=P,u=tn,d=on;return L(),z(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:R(()=>[U(u,{name:`structured`,tab:`结构化`},{default:R(()=>[X(`div`,ea,[U(kr,{modelValue:B(a),"onUpdate:modelValue":r[0]||=e=>ve(a)?a.value=e:null,"match-case":B(o).matchCase,"onUpdate:matchCase":r[1]||=e=>B(o).matchCase=e,"whole-word":B(o).wholeWord,"onUpdate:wholeWord":r[2]||=e=>B(o).wholeWord=e,"use-regex":B(o).useRegex,"onUpdate:useRegex":r[3]||=e=>B(o).useRegex=e,placeholder:`搜索键或值,最多展示 200 条结果`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),X(`div`,ta,[B(n)?(L(),z(c,{key:0,type:`warning`,title:`JSON 结构过大`},{default:R(()=>[...r[4]||=[W(` 为避免占用过多内存,请切换到“原始 JSON”查看和搜索。 `,-1)]]),_:1})):B(a).trim()?(L(),J(Pe,{key:1},[B(s).length==0?(L(),z(l,{key:0,description:`没有匹配项`})):(L(),J(`div`,na,[(L(!0),J(Pe,null,Ee(B(s),e=>(L(),J(`div`,{key:`${e.path}:${e.value}`,name:`json-search-item`,class:`rounded-4px border border-[#e5e7eb] px-10px py-8px`},[X(`div`,ra,I(e.path),1),X(`div`,ia,I(e.value),1)]))),128))]))],64)):(L(),z(B(i),{key:2,name:`$`,value:e.value,depth:0},null,8,[`value`]))])])]),_:1}),U(u,{name:`raw`,tab:`原始 JSON`},{default:R(()=>[U(Cr,{value:e.value,raw:e.raw},null,8,[`value`,`raw`])]),_:1})]),_:1})}}}),oa=e=>typeof e==`object`&&!!e&&!Array.isArray(e),sa=e=>{if(!oa(e)||!Array.isArray(e.apps))return{};let t=[];return e.apps.forEach(e=>{oa(e)&&(typeof e.id!=`string`||typeof e.name!=`string`||t.push([e.id,e.name]))}),Object.fromEntries(t)},ca=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},la=e=>{if(ca(e))return[String(e.id),e.name]},ua=101010256,da=33639248,fa=22,pa=65535,ma=(e,t)=>{if(e.byteLength<fa)throw Error(`不是有效的 ZIP 文件`);let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=Math.max(0,e.byteLength-fa-pa),i=-1;for(let t=e.byteLength-fa;t>=r;t--)if(n.getUint32(t,!0)==ua&&t+fa+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)!=da)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}},ha=50*1024*1024,ga=200*1024*1024,_a=2e3,va=20*1024*1024,ya=2*1024*1024,ba=100*1024*1024,xa=5e5,Sa=1024,Ca=new Set([`.log`,`.txt`,`.sql`,`.xml`,`.md`,`.yaml`,`.yml`,`.csv`]),wa=new Set([`.db`,`.sqlite`,`.sqlite3`]),Ta=e=>{let t=e.split(`/`).at(-1)||e,n=t.lastIndexOf(`.`);return n>=0?t.slice(n).toLowerCase():``},Ea=e=>{let t=e.toLowerCase();if(t.endsWith(`-wal`)||t.endsWith(`-shm`))return`database-sidecar`;let n=Ta(e);return n==`.json`?`json`:wa.has(n)?`database`:Ca.has(n)?`text`:`binary`},Da=e=>e.extension==`.log`?0:e.kind==`text`?1:e.kind==`json`?2:e.kind==`database`?3:4,Oa=e=>e.entries.filter(e=>e.kind==`text`||e.kind==`json`||e.kind==`database`).toSorted((e,t)=>Da(e)-Da(t))[0],ka=async(e,t)=>{let n=e instanceof Blob?e.size:e.byteLength;if(n>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ha)}`);let r=e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof Uint8Array?e:new Uint8Array(e),i=ma(r,{maxEntries:_a,maxEntryNameSize:Sa,maxUncompressedSize:ga}),a=await vt(r),o=Object.values(a.files).filter(e=>!e.dir);if(o.length>2e3)throw Error(`ZIP 内文件数量不能超过 ${_a}`);let s=0,c={total:0,sizes:new Map},l=o.map(e=>{let t=e;if(t.unsafeOriginalName&&t.unsafeOriginalName.replaceAll(`\\`,`/`)!=t.name)throw Error(`ZIP 包含不安全路径: ${t.unsafeOriginalName}`);let n=t._data?.uncompressedSize||0;s+=n;let r=t.name.replaceAll(`\\`,`/`).replace(/^\/+/,``),i=r.split(`/`);if(r.length>1024||i.length>64||i.some(e=>!e||e.length>255))throw Error(`ZIP 条目路径超出预览限制: ${r}`);return{path:r,name:r.split(`/`).at(-1)||r,extension:Ta(r),size:n,kind:Ea(r),file:e,readBudget:c}});if(s>209715200)throw Error(`ZIP 解压后总大小不能超过 ${Xa(ga)}`);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]))}},Aa=new WeakMap,ja=new WeakMap,Ma=async(e,t=va)=>{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()})},$=(e,t=va)=>{let n=ja.get(e.file)?.get(t);if(n)return Promise.reject(n);let r=Aa.get(e.file);r||(r=new Map,Aa.set(e.file,r));let i=r.get(t);return i||(i=Ma(e,t),r.set(t,i),i.then(()=>r?.delete(t),n=>{r?.delete(t);let i=ja.get(e.file);i||(i=new Map,ja.set(e.file,i)),i.set(t,n instanceof Error?n:Error(String(n)))})),i},Na=async(e,t)=>{let n=e.entryMap.get(`${t.path}-wal`),r=e.entryMap.get(`${t.path}-shm`);if(t.size+(n?.size||0)+(r?.size||0)>104857600)throw Error(`数据库文件组超过可预览上限 ${Xa(ba)}`);let i=await $(t,ba);return{database:i,wal:n?await $(n,ba-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(`文本行数不能超过 ${xa}`);return t},Fa=new WeakMap,Ia=e=>e.entries.filter(e=>Fn(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=Vn(Pa(await $(n,ya)));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 In(Pa(await $(t,ya)))}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 $(t,ya)),r=[];for(let t of n)try{let n=Wn(Pa(await $(t,ya)),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 $(t,ya));return sa(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 $(e,ya)),r=la(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=Z({__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=Y(`list`),a=Y(``),o=Y(``),s=Fe(xn()),c=K(()=>{let e=o.value.trim();return e?n.items.filter(t=>[t.fileName,Zi(t.timestamp)].some(t=>On(t,e,s))):n.items}),l=K(()=>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=>Zi(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)=>{let a=P,u=$e,p=Xt,m=jt;return L(),J(`div`,Za,[U(mi,{title:`运行日志`,count:e.items.length,listLabel:`日志列表`,listActive:B(i)==`list`,detailText:B(l)?.fileName,detailTitle:B(l)?.path,detailMeta:B(l)?B(Xa)(B(l).size):void 0,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`,`detailMeta`]),B(i)==`list`?(L(),J(`div`,Qa,[U(kr,{modelValue:B(o),"onUpdate:modelValue":n[1]||=e=>ve(o)?o.value=e:null,"match-case":B(s).matchCase,"onUpdate:matchCase":n[2]||=e=>B(s).matchCase=e,"whole-word":B(s).wholeWord,"onUpdate:wholeWord":n[3]||=e=>B(s).wholeWord=e,"use-regex":B(s).useRegex,"onUpdate:useRegex":n[4]||=e=>B(s).useRegex=e,placeholder:`搜索日志日期或文件名`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(c).length==0?(L(),z(a,{key:0,description:B(o).trim()?`没有匹配的日志文件`:`没有日志文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(u,{key:1,striped:``,columns:d,data:B(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`]))])):(L(),J(`div`,$a,[e.detailLoading?(L(),z(p,{key:0,show:``,class:`min-h-0 flex-1`})):e.detailError?(L(),z(m,{key:1,type:`error`,title:`日志文件读取失败`},{default:R(()=>[W(I(e.detailError),1)]),_:1})):e.detailPath&&e.detailText!=null?(L(),z(xr,{key:e.detailPath,value:e.detailText,"search-placeholder":`搜索当前日志文件`,"allow-wrap":``,copyable:``,sourceLinkContext:e.sourceLinkContext,class:`min-h-0 flex-1`},{"toolbar-start":R(()=>[U(hi,{available:e.retraceAvailable,loading:e.retraceLoading,retraced:e.retraceActive,onToggle:n[5]||=e=>r(`toggleRetrace`)},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`sourceLinkContext`])):(L(),z(a,{key:3,description:`请选择一个日志文件`}))]))])}}}),to=async(e,t)=>{let n=e.body?.getReader();if(!n){let n=await e.arrayBuffer();if(n.byteLength>t)throw Error(`响应内容超过大小限制`);return n}let r=[],i=0;for(;;){let{done:e,value:a}=await n.read();if(e)break;if(i+=a.byteLength,i>t)throw await n.cancel(`响应内容超过大小限制`),Error(`响应内容超过大小限制`);r.push(a)}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.byteLength;return a.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=Z({__name:`SubscriptionPreview`,props:{value:{},raw:{}},setup(e){let t=e,n=K(()=>no(t.value.updateUrl)),r=K(()=>no(t.value.supportUri)),i=e=>e==null?[]:Array.isArray(e)?e:[e],a=K(()=>t.value.apps||[]),o=K(()=>t.value.globalGroups||[]),s=K(()=>t.value.categories||[]),c=K(()=>{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=Y(``),u=Fe(xn()),d=Y(1),f=K(()=>{let e=l.value.trim();return e?a.value.filter(t=>On(t.id,e,u)||On(t.name||``,e,u)):a.value}),p=()=>{d.value=1},m=K(()=>{let e=(d.value-1)*po;return f.value.slice(e,e+po)}),h=(e,t)=>typeof e==`string`?`规则 ${t+1}`:e&&typeof e==`object`?String(e.name||`规则 ${t+1}`):`规则 ${t+1}`,g=e=>{let t;return U(at,{accordion:!0},fo(t=i(e.rules).map((e,t)=>U(it,{key:t,name:t,title:h(e,t)},{default:()=>[U(`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]})},_=e=>U(`div`,Se({name:`subscription-groups`},{class:`flex flex-col gap-10px`}),[e.groups.map(e=>U(We,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:()=>[e.desc?U(`div`,{class:`mb-10px text-[#6b7280]`},[e.desc]):null,g(e)]}))]),v=[{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 h=Bt,y=Rt,b=Qt,x=P,S=it,C=at,ee=tt,w=tn,T=We,E=$e,D=on;return L(),J(`div`,ro,[U(y,{bordered:``,size:`small`,column:3,labelPlacement:`left`},{default:R(()=>[U(h,{label:`名称`},{default:R(()=>[W(I(e.value.name),1)]),_:1}),U(h,{label:`ID`},{default:R(()=>[W(I(e.value.id),1)]),_:1}),U(h,{label:`版本`},{default:R(()=>[W(I(e.value.version),1)]),_:1}),e.value.author?(L(),z(h,{key:0,label:`作者`},{default:R(()=>[W(I(e.value.author),1)]),_:1})):H(``,!0),B(n)?(L(),z(h,{key:1,label:`更新地址`},{default:R(()=>[X(`a`,{href:B(n),target:`_blank`,rel:`noopener noreferrer`},I(e.value.updateUrl),9,io)]),_:1})):H(``,!0),B(r)?(L(),z(h,{key:2,label:`反馈地址`},{default:R(()=>[X(`a`,{href:B(r),target:`_blank`,rel:`noopener noreferrer`},I(e.value.supportUri),9,ao)]),_:1})):H(``,!0)]),_:1}),X(`div`,oo,[B(c).apps?(L(),z(b,{key:0,label:`应用`,value:B(c).apps,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).appGroups?(L(),z(b,{key:1,label:`应用规则组`,value:B(c).appGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).appRules?(L(),z(b,{key:2,label:`应用规则`,value:B(c).appRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).globalGroups?(L(),z(b,{key:3,label:`全局规则组`,value:B(c).globalGroups,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).globalRules?(L(),z(b,{key:4,label:`全局规则`,value:B(c).globalRules,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0),B(c).categories?(L(),z(b,{key:5,label:`分类`,value:B(c).categories,class:`min-w-120px rounded-6px border border-[#e5e7eb] bg-[#fafafa] px-14px py-10px`},null,8,[`value`])):H(``,!0)]),U(D,{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:R(()=>[B(a).length?(L(),z(w,{key:0,name:`apps`,tab:`应用规则`},{default:R(()=>[X(`div`,so,[U(kr,{modelValue:B(l),"onUpdate:modelValue":[i[0]||=e=>ve(l)?l.value=e:null,p],"match-case":B(u).matchCase,"onUpdate:matchCase":[i[1]||=e=>B(u).matchCase=e,p],"whole-word":B(u).wholeWord,"onUpdate:wholeWord":[i[2]||=e=>B(u).wholeWord=e,p],"use-regex":B(u).useRegex,"onUpdate:useRegex":[i[3]||=e=>B(u).useRegex=e,p],placeholder:`搜索应用名称或包名`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(m).length==0?(L(),z(x,{key:0,description:`没有匹配的应用`})):(L(),z(C,{key:1,accordion:``,class:`min-h-0 flex-1 overflow-auto`},{default:R(()=>[(L(!0),J(Pe,null,Ee(B(m),e=>(L(),z(S,{key:e.id,name:e.id,title:`${e.name||e.id} · ${e.groups.length} 个规则组`},{default:R(()=>[X(`div`,co,I(e.id),1),(L(),z(F(()=>_(e))))]),_:2},1032,[`name`,`title`]))),128))]),_:1})),B(f).length>po?(L(),z(ee,{key:2,page:B(d),"onUpdate:page":i[4]||=e=>ve(d)?d.value=e:null,pageSize:po,itemCount:B(f).length},null,8,[`page`,`itemCount`])):H(``,!0)])]),_:1})):H(``,!0),B(o).length?(L(),z(w,{key:1,name:`global`,tab:`全局规则`},{default:R(()=>[X(`div`,lo,[(L(!0),J(Pe,null,Ee(B(o),e=>(L(),z(T,{key:e.key,size:`small`,title:`${e.name} · #${e.key}`},{default:R(()=>[e.desc?(L(),J(`div`,uo,I(e.desc),1)):H(``,!0),(L(),z(F(()=>g(e))))]),_:2},1032,[`title`]))),128))])]),_:1})):H(``,!0),B(s).length?(L(),z(w,{key:2,name:`categories`,tab:`分类`},{default:R(()=>[U(E,{striped:``,columns:v,data:B(s),pagination:!1},null,8,[`data`])]),_:1})):H(``,!0),U(w,{name:`raw`,tab:`原始 JSON`},{default:R(()=>[U(Cr,{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=Z({__name:`SubscriptionDirectoryPreview`,props:{items:{},detail:{},detailStructured:{type:Boolean},detailLoading:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=Y(`list`),a=Y(``),o=Y(``),s=Fe(xn()),c=Y(1),l=K(()=>{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=>On(t,e,s))):n.items}),u=()=>{c.value=1},d=K(()=>{let e=(c.value-1)*xo;return l.value.slice(e,e+xo)}),f=K(()=>n.items.find(e=>e.path==a.value)),p=K(()=>{if(!(!n.detailStructured||!n.detail?.parsed))return n.detail.value}),m=e=>e==`valid`?`完整`:e==`incomplete`?`字段不完整`:e==`invalid`?`解析失败`:`不支持`,h=e=>e==`valid`?`success`:e==`incomplete`?`warning`:e==`invalid`?`error`:`default`,g=e=>{a.value=e.path,i.value=`detail`,r(`select`,e.path)},_=[{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 U(`div`,{class:`min-w-0 flex items-center gap-6px`},[U(`span`,{class:`min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`},[e.name||e.fileName]),e.status==`valid`?null:U(et,{size:`small`,type:h(e.status)},bo(t=m(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??`-`}],v=e=>({class:`cursor-pointer`,onClick:()=>g(e)});return(t,n)=>{let r=P,a=$e,m=tt,h=Xt,g=jt;return L(),J(`div`,ho,[U(mi,{title:`订阅文件`,count:e.items.length,listLabel:`订阅列表`,listActive:B(i)==`list`,detailText:B(f)?.name||B(f)?.fileName,detailTitle:B(f)?.path,onSelectList:n[0]||=e=>i.value=`list`},null,8,[`count`,`listActive`,`detailText`,`detailTitle`]),B(i)==`list`?(L(),J(`div`,go,[U(kr,{modelValue:B(o),"onUpdate:modelValue":[n[1]||=e=>ve(o)?o.value=e:null,u],"match-case":B(s).matchCase,"onUpdate:matchCase":[n[2]||=e=>B(s).matchCase=e,u],"whole-word":B(s).wholeWord,"onUpdate:wholeWord":[n[3]||=e=>B(s).wholeWord=e,u],"use-regex":B(s).useRegex,"onUpdate:useRegex":[n[4]||=e=>B(s).useRegex=e,u],placeholder:`搜索订阅 ID、名称、作者或版本`,class:`flex-none`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),B(d).length==0?(L(),z(r,{key:0,description:B(o).trim()?`没有匹配的订阅`:`没有订阅文件`,class:`min-h-0 flex-1`},null,8,[`description`])):(L(),z(a,{key:1,striped:``,columns:_,data:B(d),pagination:!1,rowKey:e=>e.path,rowProps:v,scrollX:1020,class:`min-h-0 flex-1 [&_.n-data-table-wrapper]:h-full`},null,8,[`data`,`rowKey`])),B(l).length>xo?(L(),z(m,{key:2,page:B(c),"onUpdate:page":n[5]||=e=>ve(c)?c.value=e:null,pageSize:xo,itemCount:B(l).length,class:`flex-none justify-end`},null,8,[`page`,`itemCount`])):H(``,!0)])):(L(),J(`div`,_o,[e.detailLoading?(L(),z(h,{key:0,show:``,class:`min-h-0 flex-1`})):e.detail?(L(),J(`div`,vo,[B(p)?(L(),z(mo,{key:e.detail.path,value:B(p),raw:e.detail.raw},null,8,[`value`,`raw`])):e.detail.parsed?(L(),z(aa,{key:e.detail.path,value:e.detail.value,raw:e.detail.raw},null,8,[`value`,`raw`])):(L(),J(`div`,yo,[U(g,{type:`warning`,title:`订阅 JSON 解析失败`,class:`flex-none`},{default:R(()=>[W(I(e.detail.error),1)]),_:1}),e.detail.raw?(L(),z(xr,{key:e.detail.path,value:e.detail.raw,"search-placeholder":`搜索原始内容`,"allow-wrap":``,copyable:``,class:`min-h-0 flex-1`},null,8,[`value`])):(L(),z(r,{key:1,description:`无法读取原始内容`}))]))])):(L(),z(r,{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=Z({__name:`SqlitePreview`,props:{database:{},wal:{},appNames:{},subscriptionNames:{}},setup(e){let t=e,n=Y(!0),r=Y(!1),i=Y(``),a=Y(``),o=Y([]),s=Y(``),c=Y([]),l=Y([]),u=Y([]),d=Y(``),f=Fe(xn()),p=new Worker(new URL(``+globalThis.location.origin+`/assets/worker-entry-sqlite.worker-CFNgsksJ.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=K(()=>o.value.find(e=>e.name==s.value)),y=K(()=>{let e=d.value.trim();return e?o.value.filter(t=>On(t.name,e,f)):o.value}),b,x=e=>{if(b===void 0&&(b=document.createElement(`canvas`).getContext(`2d`),b)){let{fontFamily:e,fontSize:t}=getComputedStyle(document.body);b.font=`${t} ${e}`}return b?.measureText(e).width??Array.from(e).length*8},C=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:x})),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)}},ee=async e=>{s.value!=e&&(s.value=e,await C())};De(async()=>{n.value=!0,i.value=``;try{let e=t.database,n=t.wal,r=[e.buffer];n&&r.push(n.buffer);let i=await _({type:`open`,database:e,wal:n},r);o.value=i.tables,s.value=i.tables[0]?.name||``,await C()}catch(e){i.value=e instanceof Error?e.message:String(e)}finally{n.value=!1}}),ye(()=>{p.terminate();for(let e of g.values())e.reject(Error(`组件已卸载`));g.clear()});let w=(e,n,r)=>{if(r==null)return U(`span`,{class:`italic text-[#9ca3af]`},[W(`NULL`)]);if(typeof r==`object`)return U(et,{size:`small`},{default:()=>[`BLOB · ${r.byteLength} bytes`]});if(Oo(e,n)&&typeof r==`string`){let e=t.appNames?.[r];if(e)return U(`span`,{class:`whitespace-pre`,title:r},[e])}if(ko(e,n)&&(typeof r==`number`||typeof r==`string`)){let e=t.subscriptionNames?.[String(r)];if(e)return U(`span`,{class:`whitespace-pre`,title:String(r)},[e])}let i=Ao(e,n,r);return i?U(`span`,{class:`whitespace-nowrap tabular-nums`,title:String(r)},[Mo(i)]):U(`span`,{class:`whitespace-pre`},[String(r)])},T=K(()=>{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(U(`span`,{class:`inline-block w-max`},[w(e,t,r[t]??null)]),[[nt,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}]])}}))}),E=K(()=>zo(l.value)),D=K(()=>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=jt,l=P,u=et,p=S,m=$e,h=tn,g=on,_=Xt;return L(),z(_,{show:B(n),class:`h-full min-h-0 [&_.n-spin-content]:h-full [&_.n-spin-content]:min-h-0`},{default:R(()=>[B(i)?(L(),z(c,{key:0,type:`error`,title:`数据库无法预览`},{default:R(()=>[W(I(B(i)),1)]),_:1})):!B(n)&&B(o).length==0?(L(),z(l,{key:1,description:`数据库中没有可展示的数据表`})):(L(),J(`div`,Bo,[X(`div`,Vo,[U(kr,{modelValue:B(d),"onUpdate:modelValue":t[0]||=e=>ve(d)?d.value=e:null,"match-case":B(f).matchCase,"onUpdate:matchCase":t[1]||=e=>B(f).matchCase=e,"whole-word":B(f).wholeWord,"onUpdate:wholeWord":t[2]||=e=>B(f).wholeWord=e,"use-regex":B(f).useRegex,"onUpdate:useRegex":t[3]||=e=>B(f).useRegex=e,placeholder:`搜索数据表`},null,8,[`modelValue`,`match-case`,`whole-word`,`use-regex`]),X(`div`,Ho,[(L(!0),J(Pe,null,Ee(B(y),e=>(L(),z(p,{key:e.name,block:``,text:``,type:e.name==B(s)?`primary`:`default`,class:`h-34px justify-between px-6px`,onClick:t=>ee(e.name)},{default:R(()=>[X(`span`,Uo,I(e.name),1),U(u,{size:`small`,bordered:!1},{default:R(()=>[W(I(e.count??`?`),1)]),_:2},1024)]),_:2},1032,[`type`,`onClick`]))),128))])]),B(v)?(L(),J(`div`,Wo,[U(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:R(()=>[U(h,{name:`data`,tab:B(v).count==null?`数据`:`数据 · ${B(v).count}`},{default:R(()=>[X(`div`,Go,[B(a)?(L(),z(c,{key:0,type:`warning`,title:`当前数据表无法读取`,class:`w-full flex-none`},{default:R(()=>[W(I(B(a)),1)]),_:1})):H(``,!0),X(`div`,Ko,[U(m,{striped:``,"virtual-scroll":``,"flex-height":``,scrollX:B(E)||void 0,loading:B(r),columns:B(T),data:B(D),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`]),U(h,{name:`schema`,tab:`表结构`},{default:R(()=>[X(`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:I(B(v).sql)},null,8,qo)]),_:1})]),_:1})])):H(``,!0)]))]),_:1},8,[`show`])}}}),Yo=e(gt(),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=_t(`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 bt(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{buildKey;worker;workerReadyTask;rejectWorkerReady;initializeTask;releaseBuildAssetTask;nextRequestId=1;disposed=!1;pendingRequests=new Map;constructor(e){this.buildKey=e}dispose(){this.disposed||(this.disposed=!0,this.releaseBuildAssetTask?.(),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-X1XSEkdm.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?.(),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){this.worker?.terminate(),this.worker=void 0,this.rejectWorkerReady?.(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=Z({__name:`LogPage`,setup(e){let t=dt(),n=pt(),r=Y(),i=Y(``),a=Y(!1),o=Y(!1),s=Y(``),c=Y(``),l=Y(`none`),u=Y(``),d=Y(),f=Y(),p=Y(`users`),m=Y([]),h=Y(),_=Y(!1),v=Y([]),y=Y(``),b=Y(),x=Y(``),C=Y(!1),ee=Y(),w=Y(),T=Y(),E=Y(),D=Y(),O=Y(),te=Y([]),k=Y(),re=Y(!1),ie=Y(!1),ae=Y(``),oe=Y(),se=Y(),A=Y({}),j=Y({}),ce=Y(),le=Y(!1),M=0,N=0,ue=0,de,fe=0,pe=0,me,he,ge,_e=new Map,F=K(()=>r.value?.entryMap.get(i.value)),be=()=>{ge?.dispose(),ge=void 0,T.value=void 0,_e.clear(),E.value=void 0,D.value=void 0,O.value=void 0},xe=(e,t)=>{let n=_e.get(e);if(n?.originalText==t)return n;let r=Fe({originalText:t,available:us(t),loading:!1,active:!1,autoAttempted:!1});return _e.set(e,r),r},Se=e=>e.active&&e.retracedText!=null?e.retracedText:e.originalText,Ce=async(e,t,n,r)=>{let i=T.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=ge||=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}},we=(e,t,n,r)=>{!e?.available||e.autoAttempted||(e.autoAttempted=!0,Ce(e,t,n,r))},Te=()=>{let e=E.value;Ce(e,`log`,()=>E.value==e,t=>{E.value==e&&(u.value=t)})},Ee=()=>{let e=D.value;Ce(e,`crash`,()=>D.value==e,t=>{D.value!=e||!h.value||(h.value=V({...h.value,stackTrace:t}))})},Oe=()=>{let e=O.value;Ce(e,`log`,()=>O.value==e,t=>{O.value==e&&(b.value=t)})},ke=()=>{ue++,h.value=void 0,D.value=void 0,_.value=!1},je=()=>{de=void 0,m.value=[],ke()},Me=()=>{fe++,y.value=``,b.value=void 0,O.value=void 0,x.value=``,C.value=!1},Ne=()=>{pe++,k.value=void 0,re.value=!1,ie.value=!1},Pe=()=>{v.value=[],ee.value=void 0,w.value=void 0,te.value=[],me=void 0,Me(),Ne()},G=()=>{o.value=!1,l.value=`none`,u.value=``,E.value=void 0,d.value=void 0,f.value=void 0,p.value=`users`,ae.value=``,oe.value=void 0,se.value=void 0,A.value={},j.value={},ke(),Me(),Ne()},q=async e=>{let t=++N;if(s.value=``,G(),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;oe.value=V(n.database),se.value=n.wal?V(n.wal):void 0,A.value=V(i),j.value=V(a),l.value=`database`;return}if(e.kind==`text`){let n=await $(e);if(t!=N)return;let r=Pa(n),i=xe(`text:${e.path}`,r);E.value=i,u.value=Se(i),l.value=`text`,we(i,`log`,()=>E.value==i,e=>{E.value==i&&(u.value=e)});return}if(e.kind==`json`){let n=Pa(await $(e,ya));if(t!=N)return;u.value=n;try{let t=JSON.parse(n);d.value=t;let r=hn(t),i=e.path.toLowerCase().split(`/`).at(-1)==`apps.json`&&!r?zr(t):void 0;i?(f.value=V(i),l.value=`apps`):!r&&Ya(e,t)?l.value=`subscription`:l.value=`json`}catch(e){ae.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=Zr(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,G(),i.value=Br,l.value=`crash`,m.value.length!=t.length){o.value=!0;try{de||=ai(t,async e=>Pa(await $(e,ya)));let a=await de;if(n!=N||e!=r.value||i.value!=Br)return;m.value=V(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)}}},Z=async e=>{let t=r.value,n=t?.entryMap.get(e);if(!t||!n||!Yr(n.path))return;let i=++ue;if(h.value=void 0,D.value=void 0,_.value=!0,!Xr(n.path)){h.value=V(ri(n.path)),_.value=!1;return}try{let e=Pa(await $(n,ya));if(i!=ue||t!=r.value||l.value!=`crash`)return;let a=$r(e,n.path);if(a.stackTrace){let e=xe(`crash:${n.path}`,a.stackTrace);D.value=e,h.value=V({...a,stackTrace:Se(e)}),we(e,`crash`,()=>D.value==e,t=>{D.value!=e||!h.value||(h.value=V({...h.value,stackTrace:t}))})}else h.value=V(a)}catch(e){if(i!=ue)return;h.value=V(ti(n.path,e))}finally{i==ue&&(_.value=!1)}},Le=()=>{let e=r.value;if(!e)return;let t=Oi(e.entries);t.length!=0&&(N++,s.value=``,G(),i.value=Si,v.value=V(Mi(t)),l.value=`log-directory`)},Q=async e=>{let t=r.value,n=t?.entryMap.get(e);if(!t||!n||!Ei(n.path))return;let i=++fe;y.value=n.path,b.value=void 0,O.value=void 0,x.value=``,C.value=!0;try{let e=Pa(await $(n));if(i!=fe||t!=r.value||l.value!=`log-directory`)return;let a=xe(`log:${n.path}`,e);O.value=a,b.value=Se(a),we(a,`log`,()=>O.value==a,e=>{O.value==a&&(b.value=e)})}catch(e){if(i!=fe)return;x.value=e instanceof Error?e.message:String(e)}finally{i==fe&&(C.value=!1)}},ze=async()=>{let e=r.value;if(!e)return;let t=ki(e.entries);if(t.length==0)return;let n=++N;if(s.value=``,G(),i.value=Ci,l.value=`subscription-directory`,te.value.length!=t.length){o.value=!0;try{me||=Yi(t,async e=>Pa(await $(e,ya)));let a=await me;if(n!=N||e!=r.value||i.value!=Ci)return;te.value=V(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?.entryMap.get(e);if(!t||!n||!Di(n.path))return;let i=++pe;if(k.value=void 0,re.value=!1,ie.value=!0,!Vi(n.path)){k.value=V(qi(n.path)),ie.value=!1;return}try{let e=Pa(await $(n,ya));if(i!=pe||t!=r.value||l.value!=`subscription-directory`)return;let a=Ui(e,n.path);k.value=V(a),re.value=a.parsed&&Ja(a.value)}catch(e){if(i!=pe)return;k.value=V(Gi(n.path,e))}finally{i==pe&&(ie.value=!1)}},Ve=async(e,t,n=++M)=>{be(),N++,je(),Pe(),a.value=!0,s.value=``,G(),r.value=void 0,i.value=``;try{let i=await ka(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?V(a):void 0,ee.value=o?V(o):void 0,T.value=s;let c=Oa(i);return c&&Ei(c.path)?Le():c&&Yr(c.path)?await Ie():c&&Di(c.path)?await ze():c?await q(c):Oi(i.entries).length?Le():Zr(i.entries).length?await Ie():ki(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)=>{let n=e.headers.get(`content-disposition`)||``,r=n.match(/filename\*=UTF-8''([^;]+)/i)?.[1],i=n.match(/filename="?([^";]+)"?/i)?.[1],a=r||i;if(a)try{return decodeURIComponent(a)}catch{return a}if(t.name?.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 ht(e.url,{credentials:`omit`,signal:n.signal},e=>({...e,anonymous:!0,onprogress(t){e.onprogress?.call(t,t),t.loaded>52428800&&(i=!0,n.abort())}}))}catch(e){throw i?Error(`ZIP 文件不能超过 ${Xa(ha)}`,{cause:e}):e}if(!o.ok)throw Error(`HTTP ${o.status}`);if(Number(o.headers.get(`content-length`)||0)>52428800)throw Error(`ZIP 文件不能超过 ${Xa(ha)}`);let c;try{c=await to(o,ha)}catch(e){throw e instanceof Error&&e.message==`响应内容超过大小限制`?Error(`ZIP 文件不能超过 ${Xa(ha)}`,{cause:e}):e}if(t!=M)return;let l=He(o,e);await Ve(c,l,t)&&ts(e.url,l,c)},We=e=>e.path==`/log`?ut(e.query.url):ct(e.params.pathMatch),Ge=async(e=t)=>{he?.abort(),be();let n=new AbortController;he=n;let o=We(e),l=++M;if(N++,je(),Pe(),r.value=void 0,i.value=``,G(),s.value=``,!o){a.value=!1,c.value=``;return}c.value=o.url,a.value=!0;try{await Ue(o,l,n)}catch(e){if(l!=M)return;s.value=e instanceof Error?e.message:String(e),a.value=!1}};De(()=>Ge(t)),ft(e=>Ge(e)),ye(()=>{he?.abort(),be()});let qe=async()=>{let e=st(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?.abort(),he=void 0,M++,t.fullPath!=`/log`&&await n.replace(`/log`),c.value=``,await Ve(r,r.name))},Ye=()=>ce.value?.click(),Qe=()=>{let e=ce.value;if(!e)return;let t=[...e.files||[]];e.value=``,Je(t)};ne(document.body,`dragover`,e=>e.preventDefault()),ne(document.body,`drop`,e=>{e.preventDefault();let t=mt(e);if(!t.some(e=>e.name.toLowerCase().endsWith(`.zip`))){Ke.warning(`请拖入 ZIP 文件`);return}Je(t)});let $e=K(()=>{let e=[],t=new Map,n=r.value?.entries||[],i=Zr(n),a=Oi(n),o=ki(n);for(let r of n){if(Yr(r.path)||Ei(r.path)||Di(r.path))continue;let n=r.path.split(`/`).filter(Boolean),i=e,a=``;n.forEach((e,o)=>{a=a?`${a}/${e}`:e;let s=t.get(a);if(!s){let c=o==n.length-1;s={key:a,label:e,path:c?r.path:void 0,isFile:c,children:c?void 0:[]},t.set(a,s),i.push(s)}i=s.children||[]})}return i.length&&e.push({key:Br,label:`crash (${i.length})`,isFile:!0}),a.length&&e.push({key:Si,label:`log (${a.length})`,isFile:!0}),o.length&&e.push({key:Ci,label:`subscription (${o.length})`,isFile:!0}),e.sort((e,t)=>String(e.label||``).localeCompare(String(t.label||``),`zh-CN`)),e}),et=e=>{let t=String(e[0]||``);if(t==Br){Ie();return}if(t==Si){Le();return}if(t==Ci){ze();return}let n=r.value?.entryMap.get(t);n&&q(n)};return(e,t)=>{let n=S,ne=Re(`RouterLink`),M=Xe,N=Ze,ue=jt,de=Re(`SvgIcon`),fe=ot,pe=rt,me=Xt,he=P;return L(),J(`div`,gs,[X(`div`,_s,[U(ne,{to:`/`,flex:``,"items-center":``},{default:R(()=>[U(n,{quaternary:``},{default:R(()=>[...t[5]||=[W(`返回首页`,-1)]]),_:1})]),_:1}),t[8]||=X(`div`,{name:`log-title`,class:`flex-none text-18px font-600`},` 日志包查看器 `,-1),B(w)?(L(),J(`a`,{key:0,href:B(w).commitUrl,target:`_blank`,rel:`noopener noreferrer`,class:`flex-none text-14px text-[#2563eb] hover:underline`},I(B(w).versionName)+` (`+I(B(w).versionCode)+`) `,9,vs)):H(``,!0),U(N,{class:`ml-auto min-w-420px max-w-720px`},{default:R(()=>[U(M,{value:B(c),"onUpdate:value":t[0]||=e=>ve(c)?c.value=e:null,clearable:``,placeholder:`粘贴 GitHub、f.gkd.li 或其他 ZIP 链接`,onKeyup:g(qe,[`enter`])},null,8,[`value`]),U(n,{type:`primary`,loading:B(a),onClick:qe},{default:R(()=>[...t[6]||=[W(` 加载链接 `,-1)]]),_:1},8,[`loading`])]),_:1}),U(n,{disabled:B(a),onClick:Ye},{default:R(()=>[...t[7]||=[W(` 选择本地 ZIP `,-1)]]),_:1},8,[`disabled`]),X(`input`,{ref_key:`localFileInput`,ref:ce,hidden:``,type:`file`,accept:`.zip,application/zip`,onChange:Qe},null,544)]),B(s)?(L(),z(ue,{key:0,type:`error`,closable:``,onClose:t[1]||=e=>s.value=``},{default:R(()=>[W(I(B(s)),1)]),_:1})):H(``,!0),B(r)?(L(),J(`div`,ys,[X(`div`,{name:`log-file-panel`,class:Ae([`box-border flex min-h-0 flex-col rounded-6px border border-[#e2e8f0] bg-white transition-[width,min-width] duration-180 ease`,B(le)?`w-44px min-w-44px`:`w-300px min-w-300px`])},[X(`div`,{name:`archive-meta`,class:Ae([`flex min-w-0 items-start gap-8px`,B(le)?`justify-center border-b-0 p-8px`:`border-b border-[#e5e7eb] p-12px`])},[B(le)?H(``,!0):(L(),J(`div`,bs,[X(`div`,{name:`archive-name`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:B(r).name},I(B(r).name),9,xs),X(`div`,Ss,I(B(r).entries.length)+` 个文件 · `+I(B(Xa)(B(r).uncompressedSize)),1)])),X(`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":!B(le),"aria-label":B(le)?`展开文件列表`:`收起文件列表`,title:B(le)?`展开文件列表`:`收起文件列表`,onClick:t[2]||=e=>le.value=!B(le)},[U(de,{name:`arrow`,class:Ae([`h-17px w-17px transition-transform duration-180 ease`,B(le)?`-rotate-90`:`rotate-90`])},null,8,[`class`])],8,Cs)],2),B(le)?H(``,!0):(L(),z(fe,{key:0,blockLine:``,virtualScroll:``,defaultExpandAll:``,data:B($e),selectedKeys:B(i)?[B(i)]:[],class:`min-h-0 flex-1 p-8px`,"onUpdate:selectedKeys":et},null,8,[`data`,`selectedKeys`]))],2),X(`div`,ws,[B(F)&&B(F).kind!=`text`&&B(l)!=`invalid-json`?(L(),J(`div`,Ts,[X(`div`,Es,[X(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:B(F).path},I(B(F).path),9,Ds),X(`div`,Os,I(B(Xa)(B(F).size)),1)]),B(l)==`apps`&&B(f)?(L(),J(`div`,ks,[U(pe,{size:`small`},{default:R(()=>[U(n,{type:B(p)==`users`?`primary`:`default`,secondary:B(p)==`users`,onClick:t[3]||=e=>p.value=`users`},{default:R(()=>[...t[9]||=[W(` 按用户查看 `,-1)]]),_:1},8,[`type`,`secondary`]),U(n,{type:B(p)==`raw`?`primary`:`default`,secondary:B(p)==`raw`,onClick:t[4]||=e=>p.value=`raw`},{default:R(()=>[...t[10]||=[W(` 原始 JSON `,-1)]]),_:1},8,[`type`,`secondary`])]),_:1}),t[11]||=X(`span`,{class:`mx-6px h-16px border-l border-[#e2e8f0]`},null,-1),t[12]||=X(`span`,{class:`text-[#64748b]`},`应用安装记录`,-1),X(`span`,As,I(B(f).totalApps),1),t[13]||=X(`span`,{class:`mx-4px text-[#cbd5e1]`},`·`,-1),t[14]||=X(`span`,{class:`text-[#64748b]`},`设备用户`,-1),X(`span`,js,I(B(f).users.length),1)])):H(``,!0)])):H(``,!0),X(`div`,Ms,[B(o)?(L(),z(me,{key:0,show:``,class:`h-full w-full`})):B(l)==`none`?(L(),z(he,{key:1,description:`该日志包没有可预览内容`})):B(l)==`text`||B(l)==`invalid-json`?(L(),J(`div`,Ns,[B(l)==`invalid-json`?(L(),z(ue,{key:0,type:`warning`,title:`JSON 解析失败,以下为原始内容`,class:`flex-none`},{default:R(()=>[W(I(B(ae)),1)]),_:1})):H(``,!0),(L(),z(xr,{key:B(F)?.path,value:B(u),documentKey:B(F)?.path,"search-placeholder":`搜索当前文件`,"allow-wrap":``,copyable:``},{"toolbar-start":R(()=>[B(F)?(L(),J(`div`,Ps,[X(`div`,{name:`preview-path`,class:`overflow-hidden text-ellipsis whitespace-nowrap font-600`,title:B(F).path},I(B(F).path),9,Fs),X(`div`,Is,I(B(Xa)(B(F).size)),1)])):H(``,!0),U(hi,{available:!!B(T)&&!!B(E)?.available,loading:B(E)?.loading,retraced:B(E)?.active,onToggle:Te},null,8,[`available`,`loading`,`retraced`])]),_:1},8,[`value`,`documentKey`]))])):B(l)==`json`?(L(),z(aa,{key:B(i),value:B(d),raw:B(u)},null,8,[`value`,`raw`])):B(l)==`crash`?(L(),z(xi,{key:B(i),items:B(m),detail:B(h),detailLoading:B(_),retraceAvailable:!!B(T)&&!!B(D)?.available,retraceLoading:B(D)?.loading,retraceActive:B(D)?.active,sourceLinkContext:B(ee),onSelect:Z,onToggleRetrace:Ee},null,8,[`items`,`detail`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):B(l)==`log-directory`?(L(),z(eo,{key:B(i),items:B(v),detailPath:B(y),detailText:B(b),detailError:B(x),detailLoading:B(C),retraceAvailable:!!B(T)&&!!B(O)?.available,retraceLoading:B(O)?.loading,retraceActive:B(O)?.active,sourceLinkContext:B(ee),onSelect:Q,onToggleRetrace:Oe},null,8,[`items`,`detailPath`,`detailText`,`detailError`,`detailLoading`,`retraceAvailable`,`retraceLoading`,`retraceActive`,`sourceLinkContext`])):B(l)==`subscription-directory`?(L(),z(So,{key:B(i),items:B(te),detail:B(k),detailStructured:B(re),detailLoading:B(ie),onSelect:Be},null,8,[`items`,`detail`,`detailStructured`,`detailLoading`])):B(l)==`apps`&&B(f)?(L(),z(Nr,{key:B(i),data:B(f),value:B(d),raw:B(u),view:B(p)},null,8,[`data`,`value`,`raw`,`view`])):B(l)==`subscription`&&B(Ja)(B(d))?(L(),z(mo,{key:B(i),value:B(d),raw:B(u)},null,8,[`value`,`raw`])):B(l)==`database`&&B(oe)?(L(),z(Jo,{key:B(i),database:B(oe),wal:B(se),"app-names":B(A),"subscription-names":B(j)},null,8,[`database`,`wal`,`app-names`,`subscription-names`])):(L(),z(he,{key:10,description:`该文件不支持预览`}))])])])):(L(),J(`div`,Ls,[U(me,{show:B(a)},{default:R(()=>[X(`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},[U(de,{name:`import`,class:`mb-18px h-48px w-48px`}),X(`div`,Rs,I(B(a)?`正在下载并解析日志包…`:`拖拽 ZIP 到这里`),1),t[15]||=X(`div`,{name:`drop-description`,class:`mt-8px text-[#64748b]`},` 或点击选择本地 ZIP 文件 `,-1),t[16]||=X(`div`,{name:`privacy-tip`,class:`mt-24px text-12px text-[#94a3b8]`},` 文件只在当前浏览器中解析,不会上传;远程日志会在本机缓存最多 7 天 `,-1)])]),_:1},8,[`show`])]))])}}});export{zs as default};
|
|
537
|
+
//# sourceMappingURL=LogPage-C1yiUmHJ.js.map
|