@gkd-kit/inspect 0.0.1787153567522 → 0.0.1787154753644

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