@gkd-kit/inspect 0.0.1788881107893 → 0.0.1790160668392

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