nuxt-devtools-observatory 0.1.0
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/README.md +209 -0
- package/client/dist/assets/index-C76d764s.js +17 -0
- package/client/dist/assets/index-yIuOV1_N.css +1 -0
- package/client/dist/index.html +47 -0
- package/client/index.html +46 -0
- package/client/src/App.vue +114 -0
- package/client/src/main.ts +5 -0
- package/client/src/stores/observatory.ts +65 -0
- package/client/src/style.css +261 -0
- package/client/src/views/ComposableTracker.vue +347 -0
- package/client/src/views/FetchDashboard.vue +492 -0
- package/client/src/views/ProvideInjectGraph.vue +481 -0
- package/client/src/views/RenderHeatmap.vue +492 -0
- package/client/src/views/TransitionTimeline.vue +527 -0
- package/client/tsconfig.json +16 -0
- package/client/vite.config.ts +12 -0
- package/dist/module.d.mts +38 -0
- package/dist/module.json +12 -0
- package/dist/module.mjs +562 -0
- package/dist/runtime/composables/composable-registry.d.ts +40 -0
- package/dist/runtime/composables/composable-registry.js +135 -0
- package/dist/runtime/composables/fetch-registry.d.ts +63 -0
- package/dist/runtime/composables/fetch-registry.js +83 -0
- package/dist/runtime/composables/provide-inject-registry.d.ts +57 -0
- package/dist/runtime/composables/provide-inject-registry.js +96 -0
- package/dist/runtime/composables/render-registry.d.ts +36 -0
- package/dist/runtime/composables/render-registry.js +85 -0
- package/dist/runtime/composables/transition-registry.d.ts +21 -0
- package/dist/runtime/composables/transition-registry.js +125 -0
- package/dist/runtime/plugin.d.ts +2 -0
- package/dist/runtime/plugin.js +66 -0
- package/dist/types.d.mts +3 -0
- package/package.json +89 -0
package/README.md
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# nuxt-devtools-observatory
|
|
2
|
+
|
|
3
|
+
Nuxt DevTools extension providing five missing observability features:
|
|
4
|
+
|
|
5
|
+
- **useFetch Dashboard** — central view of all async data calls, cache keys, waterfall timeline
|
|
6
|
+
- **provide/inject Graph** — interactive tree showing the full injection topology with missing-provider detection
|
|
7
|
+
- **Composable Tracker** — live view of active composables, their reactive state, and leak detection
|
|
8
|
+
- **Render Heatmap** — component tree colour-coded by render frequency and duration
|
|
9
|
+
- **Transition Tracker** — live timeline of every `<Transition>` lifecycle event with phase, duration, and cancellation state
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pnpm add nuxt-devtools-observatory
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
// nuxt.config.ts
|
|
19
|
+
export default defineNuxtConfig({
|
|
20
|
+
modules: ['nuxt-devtools-observatory'],
|
|
21
|
+
|
|
22
|
+
observatory: {
|
|
23
|
+
fetchDashboard: true,
|
|
24
|
+
provideInjectGraph: true,
|
|
25
|
+
composableTracker: true,
|
|
26
|
+
renderHeatmap: true,
|
|
27
|
+
transitionTracker: true,
|
|
28
|
+
heatmapThreshold: 5, // highlight components with 5+ renders
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
devtools: { enabled: true },
|
|
32
|
+
})
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Open the Nuxt DevTools panel — five new tabs will appear.
|
|
36
|
+
|
|
37
|
+
The DevTools client SPA runs on a dedicated Vite development server (port **4949**).
|
|
38
|
+
|
|
39
|
+
## How it works
|
|
40
|
+
|
|
41
|
+
All instrumentation is **dev-only**. The module registers Vite transforms that wrap
|
|
42
|
+
`useFetch`, `provide/inject`, `useX()` composable calls, and `<Transition>` at the
|
|
43
|
+
AST/module level before compilation. In production (`import.meta.dev === false`) the
|
|
44
|
+
transforms are skipped entirely — zero runtime overhead.
|
|
45
|
+
|
|
46
|
+
### useFetch Dashboard
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
A Vite plugin wraps `useFetch` / `useAsyncData` calls with a thin shim that records:
|
|
51
|
+
|
|
52
|
+
- Key, URL, status, origin (SSR/CSR)
|
|
53
|
+
- Payload size and duration
|
|
54
|
+
- Start offset for waterfall rendering
|
|
55
|
+
|
|
56
|
+
A Nitro plugin captures server-side fetch timing independently and tunnels it to the
|
|
57
|
+
client over the HMR WebSocket.
|
|
58
|
+
|
|
59
|
+
### provide/inject Graph
|
|
60
|
+
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
A Vite plugin wraps `provide()` and `inject()` calls with annotated versions that
|
|
64
|
+
carry file and line metadata. At runtime, a `findProvider()` function walks
|
|
65
|
+
`instance.parent` chains to identify which ancestor provided each key.
|
|
66
|
+
Any `inject()` that resolves to `undefined` is flagged immediately.
|
|
67
|
+
|
|
68
|
+
### Composable Tracker
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
A Vite plugin detects all `useXxx()` calls matching Vue's naming convention and
|
|
73
|
+
wraps them with a tracking proxy that:
|
|
74
|
+
|
|
75
|
+
1. Temporarily replaces `window.setInterval`/`clearInterval` during setup to capture
|
|
76
|
+
any intervals started inside the composable
|
|
77
|
+
2. Wraps `watch()` calls to track whether stop functions are called on unmount
|
|
78
|
+
3. Snapshots returned `ref` and `computed` values for the live state panel
|
|
79
|
+
4. Flags any watcher or interval still active after `onUnmounted` fires as a **leak**
|
|
80
|
+
|
|
81
|
+
### Render Heatmap
|
|
82
|
+
|
|
83
|
+

|
|
84
|
+
|
|
85
|
+
Uses Vue's built-in `renderTriggered` mixin hook and `app.config.performance = true`.
|
|
86
|
+
A `PerformanceObserver` reads Vue's native `vue-component-render-start/end` marks for
|
|
87
|
+
accurate duration measurement. Component bounding boxes are captured via `$el.getBoundingClientRect()`
|
|
88
|
+
for the DOM overlay mode.
|
|
89
|
+
|
|
90
|
+
### Transition Tracker
|
|
91
|
+
|
|
92
|
+

|
|
93
|
+
|
|
94
|
+
A Vite plugin intercepts `import ... from 'vue'` in user code and serves a virtual
|
|
95
|
+
proxy module that overrides the `Transition` export with an instrumented wrapper.
|
|
96
|
+
This is necessary because the Vue 3 template compiler generates direct named imports
|
|
97
|
+
(`import { Transition as _Transition } from "vue"`) that bypass `app.component()`
|
|
98
|
+
entirely.
|
|
99
|
+
|
|
100
|
+
The wrapper records every lifecycle phase without interfering with Vue's internal
|
|
101
|
+
CSS/JS timing detection:
|
|
102
|
+
|
|
103
|
+
| Hook | Phase recorded |
|
|
104
|
+
|---|---|
|
|
105
|
+
| `onBeforeEnter` | `entering` |
|
|
106
|
+
| `onAfterEnter` | `entered` |
|
|
107
|
+
| `onEnterCancelled` | `enter-cancelled` |
|
|
108
|
+
| `onBeforeLeave` | `leaving` |
|
|
109
|
+
| `onAfterLeave` | `left` |
|
|
110
|
+
| `onLeaveCancelled` | `leave-cancelled` |
|
|
111
|
+
|
|
112
|
+
> `onEnter` / `onLeave` are intentionally **not** wrapped — Vue inspects their
|
|
113
|
+
> `.length` property to choose CSS-mode vs JS-mode timing, and wrapping changes
|
|
114
|
+
> that length.
|
|
115
|
+
|
|
116
|
+
The Transitions tab shows a live timeline with name, direction, phase, duration,
|
|
117
|
+
parent component, and cancellation state for every transition fired on the page.
|
|
118
|
+
Data is bridged from the Nuxt app (port 3000) to the Observatory SPA (port 4949)
|
|
119
|
+
via `postMessage` since the two origins are cross-origin inside the DevTools iframe.
|
|
120
|
+
|
|
121
|
+
## Opting out
|
|
122
|
+
|
|
123
|
+
Add a `/* @devtools-ignore */` comment before any call to exclude it from instrumentation:
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
/* @devtools-ignore */
|
|
127
|
+
const { data } = useFetch('/api/sensitive')
|
|
128
|
+
|
|
129
|
+
/* @devtools-ignore */
|
|
130
|
+
const result = useMyComposable()
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Development
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Install dependencies
|
|
137
|
+
pnpm install
|
|
138
|
+
|
|
139
|
+
# Run the playground
|
|
140
|
+
pnpm dev
|
|
141
|
+
|
|
142
|
+
# Run tests
|
|
143
|
+
pnpm test
|
|
144
|
+
|
|
145
|
+
# Build the module (client SPA + Nuxt module)
|
|
146
|
+
pnpm build
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Architecture
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
src/
|
|
153
|
+
├── module.ts ← Nuxt module entry — registers transforms, plugins, devtools tabs
|
|
154
|
+
├── transforms/
|
|
155
|
+
│ ├── fetch-transform.ts ← AST wraps useFetch/useAsyncData
|
|
156
|
+
│ ├── provide-inject-transform.ts ← AST wraps provide/inject
|
|
157
|
+
│ ├── composable-transform.ts ← AST wraps useX() composables
|
|
158
|
+
│ └── transition-transform.ts ← Virtual vue proxy — overrides Transition export
|
|
159
|
+
├── runtime/
|
|
160
|
+
│ ├── plugin.ts ← Client runtime bootstrap + postMessage bridge
|
|
161
|
+
│ └── composables/
|
|
162
|
+
│ ├── fetch-registry.ts ← Fetch tracking store + __devFetch shim
|
|
163
|
+
│ ├── provide-inject-registry.ts ← Injection tracking + __devProvide/__devInject
|
|
164
|
+
│ ├── composable-registry.ts ← Composable tracking + __trackComposable + leak detection
|
|
165
|
+
│ ├── render-registry.ts ← Render performance data via PerformanceObserver
|
|
166
|
+
│ └── transition-registry.ts ← Transition lifecycle store
|
|
167
|
+
└── nitro/
|
|
168
|
+
└── fetch-capture.ts ← SSR-side fetch timing
|
|
169
|
+
|
|
170
|
+
client/
|
|
171
|
+
├── index.html
|
|
172
|
+
├── vite.config.ts ← Client SPA Vite config (built to client/dist/)
|
|
173
|
+
├── tsconfig.json
|
|
174
|
+
└── src/
|
|
175
|
+
├── App.vue ← Tab navigation shell
|
|
176
|
+
├── main.ts
|
|
177
|
+
├── style.css ← Design system
|
|
178
|
+
├── components/
|
|
179
|
+
├── stores/
|
|
180
|
+
└── views/
|
|
181
|
+
├── FetchDashboard.vue ← useFetch tab UI
|
|
182
|
+
├── ProvideInjectGraph.vue ← provide/inject tab UI
|
|
183
|
+
├── ComposableTracker.vue ← Composable tab UI
|
|
184
|
+
├── RenderHeatmap.vue ← Heatmap tab UI
|
|
185
|
+
└── TransitionTimeline.vue ← Transition tracker tab UI
|
|
186
|
+
|
|
187
|
+
playground/
|
|
188
|
+
├── app.vue ← Demo app exercising all five features
|
|
189
|
+
├── nuxt.config.ts
|
|
190
|
+
├── composables/
|
|
191
|
+
│ ├── useCounter.ts ← Clean composable (properly cleaned up)
|
|
192
|
+
│ └── useLeakyPoller.ts ← Intentionally leaky (for demo)
|
|
193
|
+
├── components/
|
|
194
|
+
│ ├── ThemeConsumer.vue ← Successfully injects 'theme'
|
|
195
|
+
│ ├── MissingProviderConsumer.vue ← Injects 'cartContext' (no provider — red node)
|
|
196
|
+
│ ├── LeakyComponent.vue ← Mounts useLeakyPoller
|
|
197
|
+
│ ├── HeavyList.vue ← Re-renders on every shuffle (heatmap demo)
|
|
198
|
+
│ ├── PriceDisplay.vue ← Leaf component with high render count
|
|
199
|
+
│ └── transitions/
|
|
200
|
+
│ ├── FadeBox.vue ← Healthy enter/leave transition
|
|
201
|
+
│ ├── BrokenTransition.vue ← Missing CSS classes (enter fires but stays in entering)
|
|
202
|
+
│ └── CancelledTransition.vue ← Rapid toggle triggers enter-cancelled / leave-cancelled
|
|
203
|
+
└── server/api/
|
|
204
|
+
└── product.ts ← Mock API endpoint
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## License
|
|
208
|
+
|
|
209
|
+
MIT
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function s(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=s(r);fetch(r.href,o)}})();/**
|
|
2
|
+
* @vue/shared v3.5.30
|
|
3
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
|
+
* @license MIT
|
|
5
|
+
**/function un(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const Q={},At=[],Ge=()=>{},yr=()=>!1,ks=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),fn=e=>e.startsWith("onUpdate:"),de=Object.assign,dn=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Ro=Object.prototype.hasOwnProperty,J=(e,t)=>Ro.call(e,t),H=Array.isArray,Ot=e=>ns(e)==="[object Map]",br=e=>ns(e)==="[object Set]",Fn=e=>ns(e)==="[object Date]",V=e=>typeof e=="function",ue=e=>typeof e=="string",Je=e=>typeof e=="symbol",Y=e=>e!==null&&typeof e=="object",xr=e=>(Y(e)||V(e))&&V(e.then)&&V(e.catch),wr=Object.prototype.toString,ns=e=>wr.call(e),No=e=>ns(e).slice(8,-1),Cr=e=>ns(e)==="[object Object]",pn=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ut=un(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),$s=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},Do=/-\w/g,Fe=$s(e=>e.replace(Do,t=>t.slice(1).toUpperCase())),jo=/\B([A-Z])/g,Ct=$s(e=>e.replace(jo,"-$1").toLowerCase()),kr=$s(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ds=$s(e=>e?`on${kr(e)}`:""),qe=(e,t)=>!Object.is(e,t),fs=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},$r=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},hn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ho=e=>{const t=ue(e)?Number(e):NaN;return isNaN(t)?e:t};let Ln;const Ss=()=>Ln||(Ln=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ve(e){if(H(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=ue(n)?Ko(n):ve(n);if(r)for(const o in r)t[o]=r[o]}return t}else if(ue(e)||Y(e))return e}const Bo=/;(?![^(]*\))/g,Vo=/:([^]+)/,Uo=/\/\*[^]*?\*\//g;function Ko(e){const t={};return e.replace(Uo,"").split(Bo).forEach(s=>{if(s){const n=s.split(Vo);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function q(e){let t="";if(ue(e))t=e;else if(H(e))for(let s=0;s<e.length;s++){const n=q(e[s]);n&&(t+=n+" ")}else if(Y(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const Wo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",zo=un(Wo);function Sr(e){return!!e||e===""}function qo(e,t){if(e.length!==t.length)return!1;let s=!0;for(let n=0;s&&n<e.length;n++)s=vn(e[n],t[n]);return s}function vn(e,t){if(e===t)return!0;let s=Fn(e),n=Fn(t);if(s||n)return s&&n?e.getTime()===t.getTime():!1;if(s=Je(e),n=Je(t),s||n)return e===t;if(s=H(e),n=H(t),s||n)return s&&n?qo(e,t):!1;if(s=Y(e),n=Y(t),s||n){if(!s||!n)return!1;const r=Object.keys(e).length,o=Object.keys(t).length;if(r!==o)return!1;for(const i in e){const l=e.hasOwnProperty(i),a=t.hasOwnProperty(i);if(l&&!a||!l&&a||!vn(e[i],t[i]))return!1}}return String(e)===String(t)}const Tr=e=>!!(e&&e.__v_isRef===!0),M=e=>ue(e)?e:e==null?"":H(e)||Y(e)&&(e.toString===wr||!V(e.toString))?Tr(e)?M(e.value):JSON.stringify(e,Mr,2):String(e),Mr=(e,t)=>Tr(t)?Mr(e,t.value):Ot(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],o)=>(s[js(n,o)+" =>"]=r,s),{})}:br(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>js(s))}:Je(t)?js(t):Y(t)&&!H(t)&&!Cr(t)?String(t):t,js=(e,t="")=>{var s;return Je(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
|
|
6
|
+
* @vue/reactivity v3.5.30
|
|
7
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
8
|
+
* @license MIT
|
|
9
|
+
**/let Te;class Go{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=Te,!t&&Te&&(this.index=(Te.scopes||(Te.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=Te;try{return Te=this,t()}finally{Te=s}}}on(){++this._on===1&&(this.prevScope=Te,Te=this)}off(){this._on>0&&--this._on===0&&(Te=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Jo(){return Te}let re;const Hs=new WeakSet;class Er{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Te&&Te.active&&Te.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Hs.has(this)&&(Hs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Or(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Rn(this),Pr(this);const t=re,s=Le;re=this,Le=!0;try{return this.fn()}finally{Ir(this),re=t,Le=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)_n(t);this.deps=this.depsTail=void 0,Rn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Hs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Xs(this)&&this.run()}get dirty(){return Xs(this)}}let Ar=0,Kt,Wt;function Or(e,t=!1){if(e.flags|=8,t){e.next=Wt,Wt=e;return}e.next=Kt,Kt=e}function gn(){Ar++}function mn(){if(--Ar>0)return;if(Wt){let t=Wt;for(Wt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Kt;){let t=Kt;for(Kt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Pr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ir(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),_n(n),Yo(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function Xs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Fr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Fr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Yt)||(e.globalVersion=Yt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Xs(e))))return;e.flags|=2;const t=e.dep,s=re,n=Le;re=e,Le=!0;try{Pr(e);const r=e.fn(e._value);(t.version===0||qe(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{re=s,Le=n,Ir(e),e.flags&=-3}}function _n(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)_n(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Yo(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Le=!0;const Lr=[];function st(){Lr.push(Le),Le=!1}function nt(){const e=Lr.pop();Le=e===void 0?!0:e}function Rn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=re;re=void 0;try{t()}finally{re=s}}}let Yt=0;class Xo{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class yn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!re||!Le||re===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==re)s=this.activeLink=new Xo(re,this),re.deps?(s.prevDep=re.depsTail,re.depsTail.nextDep=s,re.depsTail=s):re.deps=re.depsTail=s,Rr(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=re.depsTail,s.nextDep=void 0,re.depsTail.nextDep=s,re.depsTail=s,re.deps===s&&(re.deps=n)}return s}trigger(t){this.version++,Yt++,this.notify(t)}notify(t){gn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{mn()}}}function Rr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Rr(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Zs=new WeakMap,bt=Symbol(""),Qs=Symbol(""),Xt=Symbol("");function ge(e,t,s){if(Le&&re){let n=Zs.get(e);n||Zs.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new yn),r.map=n,r.key=s),r.track()}}function et(e,t,s,n,r,o){const i=Zs.get(e);if(!i){Yt++;return}const l=a=>{a&&a.trigger()};if(gn(),t==="clear")i.forEach(l);else{const a=H(e),p=a&&pn(s);if(a&&s==="length"){const u=Number(n);i.forEach((g,b)=>{(b==="length"||b===Xt||!Je(b)&&b>=u)&&l(g)})}else switch((s!==void 0||i.has(void 0))&&l(i.get(s)),p&&l(i.get(Xt)),t){case"add":a?p&&l(i.get("length")):(l(i.get(bt)),Ot(e)&&l(i.get(Qs)));break;case"delete":a||(l(i.get(bt)),Ot(e)&&l(i.get(Qs)));break;case"set":Ot(e)&&l(i.get(bt));break}}mn()}function kt(e){const t=G(e);return t===e?t:(ge(t,"iterate",Xt),Pe(e)?t:t.map(Re))}function Ts(e){return ge(e=G(e),"iterate",Xt),e}function We(e,t){return rt(e)?Ft(xt(e)?Re(t):t):Re(t)}const Zo={__proto__:null,[Symbol.iterator](){return Bs(this,Symbol.iterator,e=>We(this,e))},concat(...e){return kt(this).concat(...e.map(t=>H(t)?kt(t):t))},entries(){return Bs(this,"entries",e=>(e[1]=We(this,e[1]),e))},every(e,t){return Ye(this,"every",e,t,void 0,arguments)},filter(e,t){return Ye(this,"filter",e,t,s=>s.map(n=>We(this,n)),arguments)},find(e,t){return Ye(this,"find",e,t,s=>We(this,s),arguments)},findIndex(e,t){return Ye(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ye(this,"findLast",e,t,s=>We(this,s),arguments)},findLastIndex(e,t){return Ye(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ye(this,"forEach",e,t,void 0,arguments)},includes(...e){return Vs(this,"includes",e)},indexOf(...e){return Vs(this,"indexOf",e)},join(e){return kt(this).join(e)},lastIndexOf(...e){return Vs(this,"lastIndexOf",e)},map(e,t){return Ye(this,"map",e,t,void 0,arguments)},pop(){return jt(this,"pop")},push(...e){return jt(this,"push",e)},reduce(e,...t){return Nn(this,"reduce",e,t)},reduceRight(e,...t){return Nn(this,"reduceRight",e,t)},shift(){return jt(this,"shift")},some(e,t){return Ye(this,"some",e,t,void 0,arguments)},splice(...e){return jt(this,"splice",e)},toReversed(){return kt(this).toReversed()},toSorted(e){return kt(this).toSorted(e)},toSpliced(...e){return kt(this).toSpliced(...e)},unshift(...e){return jt(this,"unshift",e)},values(){return Bs(this,"values",e=>We(this,e))}};function Bs(e,t,s){const n=Ts(e),r=n[t]();return n!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=s(o.value)),o}),r}const Qo=Array.prototype;function Ye(e,t,s,n,r,o){const i=Ts(e),l=i!==e&&!Pe(e),a=i[t];if(a!==Qo[t]){const g=a.apply(e,o);return l?Re(g):g}let p=s;i!==e&&(l?p=function(g,b){return s.call(this,We(e,g),b,e)}:s.length>2&&(p=function(g,b){return s.call(this,g,b,e)}));const u=a.call(i,p,n);return l&&r?r(u):u}function Nn(e,t,s,n){const r=Ts(e),o=r!==e&&!Pe(e);let i=s,l=!1;r!==e&&(o?(l=n.length===0,i=function(p,u,g){return l&&(l=!1,p=We(e,p)),s.call(this,p,We(e,u),g,e)}):s.length>3&&(i=function(p,u,g){return s.call(this,p,u,g,e)}));const a=r[t](i,...n);return l?We(e,a):a}function Vs(e,t,s){const n=G(e);ge(n,"iterate",Xt);const r=n[t](...s);return(r===-1||r===!1)&&Cn(s[0])?(s[0]=G(s[0]),n[t](...s)):r}function jt(e,t,s=[]){st(),gn();const n=G(e)[t].apply(e,s);return mn(),nt(),n}const ei=un("__proto__,__v_isRef,__isVue"),Nr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Je));function ti(e){Je(e)||(e=String(e));const t=G(this);return ge(t,"has",e),t.hasOwnProperty(e)}class Dr{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return o;if(s==="__v_raw")return n===(r?o?fi:Vr:o?Br:Hr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=H(t);if(!r){let a;if(i&&(a=Zo[s]))return a;if(s==="hasOwnProperty")return ti}const l=Reflect.get(t,s,me(t)?t:n);if((Je(s)?Nr.has(s):ei(s))||(r||ge(t,"get",s),o))return l;if(me(l)){const a=i&&pn(s)?l:l.value;return r&&Y(a)?tn(a):a}return Y(l)?r?tn(l):xn(l):l}}class jr extends Dr{constructor(t=!1){super(!1,t)}set(t,s,n,r){let o=t[s];const i=H(t)&&pn(s);if(!this._isShallow){const p=rt(o);if(!Pe(n)&&!rt(n)&&(o=G(o),n=G(n)),!i&&me(o)&&!me(n))return p||(o.value=n),!0}const l=i?Number(s)<t.length:J(t,s),a=Reflect.set(t,s,n,me(t)?t:r);return t===G(r)&&(l?qe(n,o)&&et(t,"set",s,n):et(t,"add",s,n)),a}deleteProperty(t,s){const n=J(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&et(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!Je(s)||!Nr.has(s))&&ge(t,"has",s),n}ownKeys(t){return ge(t,"iterate",H(t)?"length":bt),Reflect.ownKeys(t)}}class si extends Dr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const ni=new jr,ri=new si,oi=new jr(!0);const en=e=>e,as=e=>Reflect.getPrototypeOf(e);function ii(e,t,s){return function(...n){const r=this.__v_raw,o=G(r),i=Ot(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,p=r[e](...n),u=s?en:t?Ft:Re;return!t&&ge(o,"iterate",a?Qs:bt),de(Object.create(p),{next(){const{value:g,done:b}=p.next();return b?{value:g,done:b}:{value:l?[u(g[0]),u(g[1])]:u(g),done:b}}})}}function cs(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function li(e,t){const s={get(r){const o=this.__v_raw,i=G(o),l=G(r);e||(qe(r,l)&&ge(i,"get",r),ge(i,"get",l));const{has:a}=as(i),p=t?en:e?Ft:Re;if(a.call(i,r))return p(o.get(r));if(a.call(i,l))return p(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&ge(G(r),"iterate",bt),r.size},has(r){const o=this.__v_raw,i=G(o),l=G(r);return e||(qe(r,l)&&ge(i,"has",r),ge(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,a=G(l),p=t?en:e?Ft:Re;return!e&&ge(a,"iterate",bt),l.forEach((u,g)=>r.call(o,p(u),p(g),i))}};return de(s,e?{add:cs("add"),set:cs("set"),delete:cs("delete"),clear:cs("clear")}:{add(r){const o=G(this),i=as(o),l=G(r),a=!t&&!Pe(r)&&!rt(r)?l:r;return i.has.call(o,a)||qe(r,a)&&i.has.call(o,r)||qe(l,a)&&i.has.call(o,l)||(o.add(a),et(o,"add",a,a)),this},set(r,o){!t&&!Pe(o)&&!rt(o)&&(o=G(o));const i=G(this),{has:l,get:a}=as(i);let p=l.call(i,r);p||(r=G(r),p=l.call(i,r));const u=a.call(i,r);return i.set(r,o),p?qe(o,u)&&et(i,"set",r,o):et(i,"add",r,o),this},delete(r){const o=G(this),{has:i,get:l}=as(o);let a=i.call(o,r);a||(r=G(r),a=i.call(o,r)),l&&l.call(o,r);const p=o.delete(r);return a&&et(o,"delete",r,void 0),p},clear(){const r=G(this),o=r.size!==0,i=r.clear();return o&&et(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=ii(r,e,t)}),s}function bn(e,t){const s=li(e,t);return(n,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(J(s,r)&&r in n?s:n,r,o)}const ai={get:bn(!1,!1)},ci={get:bn(!1,!0)},ui={get:bn(!0,!1)};const Hr=new WeakMap,Br=new WeakMap,Vr=new WeakMap,fi=new WeakMap;function di(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pi(e){return e.__v_skip||!Object.isExtensible(e)?0:di(No(e))}function xn(e){return rt(e)?e:wn(e,!1,ni,ai,Hr)}function hi(e){return wn(e,!1,oi,ci,Br)}function tn(e){return wn(e,!0,ri,ui,Vr)}function wn(e,t,s,n,r){if(!Y(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=pi(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?n:s);return r.set(e,l),l}function xt(e){return rt(e)?xt(e.__v_raw):!!(e&&e.__v_isReactive)}function rt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Cn(e){return e?!!e.__v_raw:!1}function G(e){const t=e&&e.__v_raw;return t?G(t):e}function vi(e){return!J(e,"__v_skip")&&Object.isExtensible(e)&&$r(e,"__v_skip",!0),e}const Re=e=>Y(e)?xn(e):e,Ft=e=>Y(e)?tn(e):e;function me(e){return e?e.__v_isRef===!0:!1}function ae(e){return gi(e,!1)}function gi(e,t){return me(e)?e:new mi(e,t)}class mi{constructor(t,s){this.dep=new yn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:G(t),this._value=s?t:Re(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Pe(t)||rt(t);t=n?t:G(t),qe(t,s)&&(this._rawValue=t,this._value=n?t:Re(t),this.dep.trigger())}}function kn(e){return me(e)?e.value:e}const _i={get:(e,t,s)=>t==="__v_raw"?e:kn(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return me(r)&&!me(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function Ur(e){return xt(e)?e:new Proxy(e,_i)}class yi{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new yn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Yt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&re!==this)return Or(this,!0),!0}get value(){const t=this.dep.track();return Fr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function bi(e,t,s=!1){let n,r;return V(e)?n=e:(n=e.get,r=e.set),new yi(n,r,s)}const us={},gs=new WeakMap;let gt;function xi(e,t=!1,s=gt){if(s){let n=gs.get(s);n||gs.set(s,n=[]),n.push(e)}}function wi(e,t,s=Q){const{immediate:n,deep:r,once:o,scheduler:i,augmentJob:l,call:a}=s,p=I=>r?I:Pe(I)||r===!1||r===0?tt(I,1):tt(I);let u,g,b,v,h=!1,$=!1;if(me(e)?(g=()=>e.value,h=Pe(e)):xt(e)?(g=()=>p(e),h=!0):H(e)?($=!0,h=e.some(I=>xt(I)||Pe(I)),g=()=>e.map(I=>{if(me(I))return I.value;if(xt(I))return p(I);if(V(I))return a?a(I,2):I()})):V(e)?t?g=a?()=>a(e,2):e:g=()=>{if(b){st();try{b()}finally{nt()}}const I=gt;gt=u;try{return a?a(e,3,[v]):e(v)}finally{gt=I}}:g=Ge,t&&r){const I=g,W=r===!0?1/0:r;g=()=>tt(I(),W)}const D=Jo(),_=()=>{u.stop(),D&&D.active&&dn(D.effects,u)};if(o&&t){const I=t;t=(...W)=>{I(...W),_()}}let m=$?new Array(e.length).fill(us):us;const w=I=>{if(!(!(u.flags&1)||!u.dirty&&!I))if(t){const W=u.run();if(r||h||($?W.some((oe,U)=>qe(oe,m[U])):qe(W,m))){b&&b();const oe=gt;gt=u;try{const U=[W,m===us?void 0:$&&m[0]===us?[]:m,v];m=W,a?a(t,3,U):t(...U)}finally{gt=oe}}}else u.run()};return l&&l(w),u=new Er(g),u.scheduler=i?()=>i(w,!1):w,v=I=>xi(I,!1,u),b=u.onStop=()=>{const I=gs.get(u);if(I){if(a)a(I,4);else for(const W of I)W();gs.delete(u)}},t?n?w(!0):m=u.run():i?i(w.bind(null,!0),!0):u.run(),_.pause=u.pause.bind(u),_.resume=u.resume.bind(u),_.stop=_,_}function tt(e,t=1/0,s){if(t<=0||!Y(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,me(e))tt(e.value,t,s);else if(H(e))for(let n=0;n<e.length;n++)tt(e[n],t,s);else if(br(e)||Ot(e))e.forEach(n=>{tt(n,t,s)});else if(Cr(e)){for(const n in e)tt(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&tt(e[n],t,s)}return e}/**
|
|
10
|
+
* @vue/runtime-core v3.5.30
|
|
11
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
12
|
+
* @license MIT
|
|
13
|
+
**/function rs(e,t,s,n){try{return n?e(...n):e()}catch(r){Ms(r,t,s)}}function Ne(e,t,s,n){if(V(e)){const r=rs(e,t,s,n);return r&&xr(r)&&r.catch(o=>{Ms(o,t,s)}),r}if(H(e)){const r=[];for(let o=0;o<e.length;o++)r.push(Ne(e[o],t,s,n));return r}}function Ms(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||Q;if(t){let l=t.parent;const a=t.proxy,p=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const u=l.ec;if(u){for(let g=0;g<u.length;g++)if(u[g](e,a,p)===!1)return}l=l.parent}if(o){st(),rs(o,null,10,[e,a,p]),nt();return}}Ci(e,s,r,n,i)}function Ci(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const ye=[];let Ue=-1;const Pt=[];let lt=null,Mt=0;const Kr=Promise.resolve();let ms=null;function ki(e){const t=ms||Kr;return e?t.then(this?e.bind(this):e):t}function $i(e){let t=Ue+1,s=ye.length;for(;t<s;){const n=t+s>>>1,r=ye[n],o=Zt(r);o<e||o===e&&r.flags&2?t=n+1:s=n}return t}function $n(e){if(!(e.flags&1)){const t=Zt(e),s=ye[ye.length-1];!s||!(e.flags&2)&&t>=Zt(s)?ye.push(e):ye.splice($i(t),0,e),e.flags|=1,Wr()}}function Wr(){ms||(ms=Kr.then(qr))}function Si(e){H(e)?Pt.push(...e):lt&&e.id===-1?lt.splice(Mt+1,0,e):e.flags&1||(Pt.push(e),e.flags|=1),Wr()}function Dn(e,t,s=Ue+1){for(;s<ye.length;s++){const n=ye[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;ye.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function zr(e){if(Pt.length){const t=[...new Set(Pt)].sort((s,n)=>Zt(s)-Zt(n));if(Pt.length=0,lt){lt.push(...t);return}for(lt=t,Mt=0;Mt<lt.length;Mt++){const s=lt[Mt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}lt=null,Mt=0}}const Zt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function qr(e){try{for(Ue=0;Ue<ye.length;Ue++){const t=ye[Ue];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),rs(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ue<ye.length;Ue++){const t=ye[Ue];t&&(t.flags&=-2)}Ue=-1,ye.length=0,zr(),ms=null,(ye.length||Pt.length)&&qr()}}let Oe=null,Gr=null;function _s(e){const t=Oe;return Oe=e,Gr=e&&e.type.__scopeId||null,t}function Jr(e,t=Oe,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&xs(-1);const o=_s(t);let i;try{i=e(...r)}finally{_s(o),n._d&&xs(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function Es(e,t){if(Oe===null)return e;const s=Ls(Oe),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[o,i,l,a=Q]=t[r];o&&(V(o)&&(o={mounted:o,updated:o}),o.deep&&tt(i),n.push({dir:o,instance:s,value:i,oldValue:void 0,arg:l,modifiers:a}))}return e}function dt(e,t,s,n){const r=e.dirs,o=t&&t.dirs;for(let i=0;i<r.length;i++){const l=r[i];o&&(l.oldValue=o[i].value);let a=l.dir[n];a&&(st(),Ne(a,s,8,[e.el,l,e,t]),nt())}}function Ti(e,t){if(we){let s=we.provides;const n=we.parent&&we.parent.provides;n===s&&(s=we.provides=Object.create(n)),s[e]=t}}function ds(e,t,s=!1){const n=Eo();if(n||It){let r=It?It._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&V(t)?t.call(n&&n.proxy):t}}const Mi=Symbol.for("v-scx"),Ei=()=>ds(Mi);function Us(e,t,s){return Yr(e,t,s)}function Yr(e,t,s=Q){const{immediate:n,deep:r,flush:o,once:i}=s,l=de({},s),a=t&&n||!t&&o!=="post";let p;if(ts){if(o==="sync"){const v=Ei();p=v.__watcherHandles||(v.__watcherHandles=[])}else if(!a){const v=()=>{};return v.stop=Ge,v.resume=Ge,v.pause=Ge,v}}const u=we;l.call=(v,h,$)=>Ne(v,u,h,$);let g=!1;o==="post"?l.scheduler=v=>{Se(v,u&&u.suspense)}:o!=="sync"&&(g=!0,l.scheduler=(v,h)=>{h?v():$n(v)}),l.augmentJob=v=>{t&&(v.flags|=4),g&&(v.flags|=2,u&&(v.id=u.uid,v.i=u))};const b=wi(e,t,l);return ts&&(p?p.push(b):a&&b()),b}function Ai(e,t,s){const n=this.proxy,r=ue(e)?e.includes(".")?Xr(n,e):()=>n[e]:e.bind(n,n);let o;V(t)?o=t:(o=t.handler,s=t);const i=os(this),l=Yr(r,o.bind(n),s);return i(),l}function Xr(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const Oi=Symbol("_vte"),Zr=e=>e.__isTeleport,Ke=Symbol("_leaveCb"),Ht=Symbol("_enterCb");function Pi(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return io(()=>{e.isMounted=!0}),lo(()=>{e.isUnmounting=!0}),e}const Ae=[Function,Array],Qr={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ae,onEnter:Ae,onAfterEnter:Ae,onEnterCancelled:Ae,onBeforeLeave:Ae,onLeave:Ae,onAfterLeave:Ae,onLeaveCancelled:Ae,onBeforeAppear:Ae,onAppear:Ae,onAfterAppear:Ae,onAppearCancelled:Ae},eo=e=>{const t=e.subTree;return t.component?eo(t.component):t},Ii={name:"BaseTransition",props:Qr,setup(e,{slots:t}){const s=Eo(),n=Pi();return()=>{const r=t.default&&no(t.default(),!0);if(!r||!r.length)return;const o=to(r),i=G(e),{mode:l}=i;if(n.isLeaving)return Ks(o);const a=jn(o);if(!a)return Ks(o);let p=sn(a,i,n,s,g=>p=g);a.type!==xe&&Qt(a,p);let u=s.subTree&&jn(s.subTree);if(u&&u.type!==xe&&!yt(u,a)&&eo(s).type!==xe){let g=sn(u,i,n,s);if(Qt(u,g),l==="out-in"&&a.type!==xe)return n.isLeaving=!0,g.afterLeave=()=>{n.isLeaving=!1,s.job.flags&8||s.update(),delete g.afterLeave,u=void 0},Ks(o);l==="in-out"&&a.type!==xe?g.delayLeave=(b,v,h)=>{const $=so(n,u);$[String(u.key)]=u,b[Ke]=()=>{v(),b[Ke]=void 0,delete p.delayedLeave,u=void 0},p.delayedLeave=()=>{h(),delete p.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return o}}};function to(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==xe){t=s;break}}return t}const Fi=Ii;function so(e,t){const{leavingVNodes:s}=e;let n=s.get(t.type);return n||(n=Object.create(null),s.set(t.type,n)),n}function sn(e,t,s,n,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:p,onAfterEnter:u,onEnterCancelled:g,onBeforeLeave:b,onLeave:v,onAfterLeave:h,onLeaveCancelled:$,onBeforeAppear:D,onAppear:_,onAfterAppear:m,onAppearCancelled:w}=t,I=String(e.key),W=so(s,e),oe=(j,K)=>{j&&Ne(j,n,9,K)},U=(j,K)=>{const Z=K[1];oe(j,K),H(j)?j.every(F=>F.length<=1)&&Z():j.length<=1&&Z()},ie={mode:i,persisted:l,beforeEnter(j){let K=a;if(!s.isMounted)if(o)K=D||a;else return;j[Ke]&&j[Ke](!0);const Z=W[I];Z&&yt(e,Z)&&Z.el[Ke]&&Z.el[Ke](),oe(K,[j])},enter(j){if(W[I]===e)return;let K=p,Z=u,F=g;if(!s.isMounted)if(o)K=_||p,Z=m||u,F=w||g;else return;let te=!1;j[Ht]=Ie=>{te||(te=!0,Ie?oe(F,[j]):oe(Z,[j]),ie.delayedLeave&&ie.delayedLeave(),j[Ht]=void 0)};const ce=j[Ht].bind(null,!1);K?U(K,[j,ce]):ce()},leave(j,K){const Z=String(e.key);if(j[Ht]&&j[Ht](!0),s.isUnmounting)return K();oe(b,[j]);let F=!1;j[Ke]=ce=>{F||(F=!0,K(),ce?oe($,[j]):oe(h,[j]),j[Ke]=void 0,W[Z]===e&&delete W[Z])};const te=j[Ke].bind(null,!1);W[Z]=e,v?U(v,[j,te]):te()},clone(j){const K=sn(j,t,s,n,r);return r&&r(K),K}};return ie}function Ks(e){if(As(e))return e=ct(e),e.children=null,e}function jn(e){if(!As(e))return Zr(e.type)&&e.children?to(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&V(s.default))return s.default()}}function Qt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Qt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function no(e,t=!1,s){let n=[],r=0;for(let o=0;o<e.length;o++){let i=e[o];const l=s==null?i.key:String(s)+String(i.key!=null?i.key:o);i.type===ee?(i.patchFlag&128&&r++,n=n.concat(no(i.children,t,l))):(t||i.type!==xe)&&n.push(l!=null?ct(i,{key:l}):i)}if(r>1)for(let o=0;o<n.length;o++)n[o].patchFlag=-2;return n}function wt(e,t){return V(e)?de({name:e.name},t,{setup:e}):e}function ro(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Hn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const ys=new WeakMap;function zt(e,t,s,n,r=!1){if(H(e)){e.forEach(($,D)=>zt($,t&&(H(t)?t[D]:t),s,n,r));return}if(qt(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&zt(e,t,s,n.component.subTree);return}const o=n.shapeFlag&4?Ls(n.component):n.el,i=r?null:o,{i:l,r:a}=e,p=t&&t.r,u=l.refs===Q?l.refs={}:l.refs,g=l.setupState,b=G(g),v=g===Q?yr:$=>Hn(u,$)?!1:J(b,$),h=($,D)=>!(D&&Hn(u,D));if(p!=null&&p!==a){if(Bn(t),ue(p))u[p]=null,v(p)&&(g[p]=null);else if(me(p)){const $=t;h(p,$.k)&&(p.value=null),$.k&&(u[$.k]=null)}}if(V(a))rs(a,l,12,[i,u]);else{const $=ue(a),D=me(a);if($||D){const _=()=>{if(e.f){const m=$?v(a)?g[a]:u[a]:h()||!e.k?a.value:u[e.k];if(r)H(m)&&dn(m,o);else if(H(m))m.includes(o)||m.push(o);else if($)u[a]=[o],v(a)&&(g[a]=u[a]);else{const w=[o];h(a,e.k)&&(a.value=w),e.k&&(u[e.k]=w)}}else $?(u[a]=i,v(a)&&(g[a]=i)):D&&(h(a,e.k)&&(a.value=i),e.k&&(u[e.k]=i))};if(i){const m=()=>{_(),ys.delete(e)};m.id=-1,ys.set(e,m),Se(m,s)}else Bn(e),_()}}}function Bn(e){const t=ys.get(e);t&&(t.flags|=8,ys.delete(e))}Ss().requestIdleCallback;Ss().cancelIdleCallback;const qt=e=>!!e.type.__asyncLoader,As=e=>e.type.__isKeepAlive;function Li(e,t){oo(e,"a",t)}function Ri(e,t){oo(e,"da",t)}function oo(e,t,s=we){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Os(t,n,s),s){let r=s.parent;for(;r&&r.parent;)As(r.parent.vnode)&&Ni(n,t,s,r),r=r.parent}}function Ni(e,t,s,n){const r=Os(t,e,n,!0);Ps(()=>{dn(n[t],r)},s)}function Os(e,t,s=we,n=!1){if(s){const r=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...i)=>{st();const l=os(s),a=Ne(t,s,e,i);return l(),nt(),a});return n?r.unshift(o):r.push(o),o}}const ot=e=>(t,s=we)=>{(!ts||e==="sp")&&Os(e,(...n)=>t(...n),s)},Di=ot("bm"),io=ot("m"),ji=ot("bu"),Hi=ot("u"),lo=ot("bum"),Ps=ot("um"),Bi=ot("sp"),Vi=ot("rtg"),Ui=ot("rtc");function Ki(e,t=we){Os("ec",e,t)}const Wi=Symbol.for("v-ndc");function be(e,t,s,n){let r;const o=s,i=H(e);if(i||ue(e)){const l=i&&xt(e);let a=!1,p=!1;l&&(a=!Pe(e),p=rt(e),e=Ts(e)),r=new Array(e.length);for(let u=0,g=e.length;u<g;u++)r[u]=t(a?p?Ft(Re(e[u])):Re(e[u]):e[u],u,void 0,o)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,o)}else if(Y(e))if(e[Symbol.iterator])r=Array.from(e,(l,a)=>t(l,a,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let a=0,p=l.length;a<p;a++){const u=l[a];r[a]=t(e[u],u,a,o)}}else r=[];return r}const nn=e=>e?Ao(e)?Ls(e):nn(e.parent):null,Gt=de(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>nn(e.parent),$root:e=>nn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>co(e),$forceUpdate:e=>e.f||(e.f=()=>{$n(e.update)}),$nextTick:e=>e.n||(e.n=ki.bind(e.proxy)),$watch:e=>Ai.bind(e)}),Ws=(e,t)=>e!==Q&&!e.__isScriptSetup&&J(e,t),zi={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:o,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const b=i[t];if(b!==void 0)switch(b){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return o[t]}else{if(Ws(n,t))return i[t]=1,n[t];if(r!==Q&&J(r,t))return i[t]=2,r[t];if(J(o,t))return i[t]=3,o[t];if(s!==Q&&J(s,t))return i[t]=4,s[t];rn&&(i[t]=0)}}const p=Gt[t];let u,g;if(p)return t==="$attrs"&&ge(e.attrs,"get",""),p(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(s!==Q&&J(s,t))return i[t]=4,s[t];if(g=a.config.globalProperties,J(g,t))return g[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:o}=e;return Ws(r,t)?(r[t]=s,!0):n!==Q&&J(n,t)?(n[t]=s,!0):J(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,props:o,type:i}},l){let a;return!!(s[l]||e!==Q&&l[0]!=="$"&&J(e,l)||Ws(t,l)||J(o,l)||J(n,l)||J(Gt,l)||J(r.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:J(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Vn(e){return H(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let rn=!0;function qi(e){const t=co(e),s=e.proxy,n=e.ctx;rn=!1,t.beforeCreate&&Un(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:a,inject:p,created:u,beforeMount:g,mounted:b,beforeUpdate:v,updated:h,activated:$,deactivated:D,beforeDestroy:_,beforeUnmount:m,destroyed:w,unmounted:I,render:W,renderTracked:oe,renderTriggered:U,errorCaptured:ie,serverPrefetch:j,expose:K,inheritAttrs:Z,components:F,directives:te,filters:ce}=t;if(p&&Gi(p,n,null),i)for(const le in i){const se=i[le];V(se)&&(n[le]=se.bind(s))}if(r){const le=r.call(s,s);Y(le)&&(e.data=xn(le))}if(rn=!0,o)for(const le in o){const se=o[le],ut=V(se)?se.bind(s,s):V(se.get)?se.get.bind(s,s):Ge,is=!V(se)&&V(se.set)?se.set.bind(s):Ge,ft=fe({get:ut,set:is});Object.defineProperty(n,le,{enumerable:!0,configurable:!0,get:()=>ft.value,set:De=>ft.value=De})}if(l)for(const le in l)ao(l[le],n,s,le);if(a){const le=V(a)?a.call(s):a;Reflect.ownKeys(le).forEach(se=>{Ti(se,le[se])})}u&&Un(u,e,"c");function pe(le,se){H(se)?se.forEach(ut=>le(ut.bind(s))):se&&le(se.bind(s))}if(pe(Di,g),pe(io,b),pe(ji,v),pe(Hi,h),pe(Li,$),pe(Ri,D),pe(Ki,ie),pe(Ui,oe),pe(Vi,U),pe(lo,m),pe(Ps,I),pe(Bi,j),H(K))if(K.length){const le=e.exposed||(e.exposed={});K.forEach(se=>{Object.defineProperty(le,se,{get:()=>s[se],set:ut=>s[se]=ut,enumerable:!0})})}else e.exposed||(e.exposed={});W&&e.render===Ge&&(e.render=W),Z!=null&&(e.inheritAttrs=Z),F&&(e.components=F),te&&(e.directives=te),j&&ro(e)}function Gi(e,t,s=Ge){H(e)&&(e=on(e));for(const n in e){const r=e[n];let o;Y(r)?"default"in r?o=ds(r.from||n,r.default,!0):o=ds(r.from||n):o=ds(r),me(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[n]=o}}function Un(e,t,s){Ne(H(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function ao(e,t,s,n){let r=n.includes(".")?Xr(s,n):()=>s[n];if(ue(e)){const o=t[e];V(o)&&Us(r,o)}else if(V(e))Us(r,e.bind(s));else if(Y(e))if(H(e))e.forEach(o=>ao(o,t,s,n));else{const o=V(e.handler)?e.handler.bind(s):t[e.handler];V(o)&&Us(r,o,e)}}function co(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!r.length&&!s&&!n?a=t:(a={},r.length&&r.forEach(p=>bs(a,p,i,!0)),bs(a,t,i)),Y(t)&&o.set(t,a),a}function bs(e,t,s,n=!1){const{mixins:r,extends:o}=t;o&&bs(e,o,s,!0),r&&r.forEach(i=>bs(e,i,s,!0));for(const i in t)if(!(n&&i==="expose")){const l=Ji[i]||s&&s[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Ji={data:Kn,props:Wn,emits:Wn,methods:Vt,computed:Vt,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:Vt,directives:Vt,watch:Xi,provide:Kn,inject:Yi};function Kn(e,t){return t?e?function(){return de(V(e)?e.call(this,this):e,V(t)?t.call(this,this):t)}:t:e}function Yi(e,t){return Vt(on(e),on(t))}function on(e){if(H(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function _e(e,t){return e?[...new Set([].concat(e,t))]:t}function Vt(e,t){return e?de(Object.create(null),e,t):t}function Wn(e,t){return e?H(e)&&H(t)?[...new Set([...e,...t])]:de(Object.create(null),Vn(e),Vn(t??{})):t}function Xi(e,t){if(!e)return t;if(!t)return e;const s=de(Object.create(null),e);for(const n in t)s[n]=_e(e[n],t[n]);return s}function uo(){return{app:null,config:{isNativeTag:yr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Zi=0;function Qi(e,t){return function(n,r=null){V(n)||(n=de({},n)),r!=null&&!Y(r)&&(r=null);const o=uo(),i=new WeakSet,l=[];let a=!1;const p=o.app={_uid:Zi++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:Al,get config(){return o.config},set config(u){},use(u,...g){return i.has(u)||(u&&V(u.install)?(i.add(u),u.install(p,...g)):V(u)&&(i.add(u),u(p,...g))),p},mixin(u){return o.mixins.includes(u)||o.mixins.push(u),p},component(u,g){return g?(o.components[u]=g,p):o.components[u]},directive(u,g){return g?(o.directives[u]=g,p):o.directives[u]},mount(u,g,b){if(!a){const v=p._ceVNode||Ce(n,r);return v.appContext=o,b===!0?b="svg":b===!1&&(b=void 0),e(v,u,b),a=!0,p._container=u,u.__vue_app__=p,Ls(v.component)}},onUnmount(u){l.push(u)},unmount(){a&&(Ne(l,p._instance,16),e(null,p._container),delete p._container.__vue_app__)},provide(u,g){return o.provides[u]=g,p},runWithContext(u){const g=It;It=p;try{return u()}finally{It=g}}};return p}}let It=null;const el=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Fe(t)}Modifiers`]||e[`${Ct(t)}Modifiers`];function tl(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||Q;let r=s;const o=t.startsWith("update:"),i=o&&el(n,t.slice(7));i&&(i.trim&&(r=s.map(u=>ue(u)?u.trim():u)),i.number&&(r=s.map(hn)));let l,a=n[l=Ds(t)]||n[l=Ds(Fe(t))];!a&&o&&(a=n[l=Ds(Ct(t))]),a&&Ne(a,e,6,r);const p=n[l+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ne(p,e,6,r)}}const sl=new WeakMap;function fo(e,t,s=!1){const n=s?sl:t.emitsCache,r=n.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!V(e)){const a=p=>{const u=fo(p,t,!0);u&&(l=!0,de(i,u))};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(Y(e)&&n.set(e,null),null):(H(o)?o.forEach(a=>i[a]=null):de(i,o),Y(e)&&n.set(e,i),i)}function Is(e,t){return!e||!ks(t)?!1:(t=t.slice(2).replace(/Once$/,""),J(e,t[0].toLowerCase()+t.slice(1))||J(e,Ct(t))||J(e,t))}function zn(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:a,render:p,renderCache:u,props:g,data:b,setupState:v,ctx:h,inheritAttrs:$}=e,D=_s(e);let _,m;try{if(s.shapeFlag&4){const I=r||n,W=I;_=ze(p.call(W,I,u,g,v,b,h)),m=l}else{const I=t;_=ze(I.length>1?I(g,{attrs:l,slots:i,emit:a}):I(g,null)),m=t.props?l:nl(l)}}catch(I){Jt.length=0,Ms(I,e,1),_=Ce(xe)}let w=_;if(m&&$!==!1){const I=Object.keys(m),{shapeFlag:W}=w;I.length&&W&7&&(o&&I.some(fn)&&(m=rl(m,o)),w=ct(w,m,!1,!0))}return s.dirs&&(w=ct(w,null,!1,!0),w.dirs=w.dirs?w.dirs.concat(s.dirs):s.dirs),s.transition&&Qt(w,s.transition),_=w,_s(D),_}const nl=e=>{let t;for(const s in e)(s==="class"||s==="style"||ks(s))&&((t||(t={}))[s]=e[s]);return t},rl=(e,t)=>{const s={};for(const n in e)(!fn(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function ol(e,t,s){const{props:n,children:r,component:o}=e,{props:i,children:l,patchFlag:a}=t,p=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&a>=0){if(a&1024)return!0;if(a&16)return n?qn(n,i,p):!!i;if(a&8){const u=t.dynamicProps;for(let g=0;g<u.length;g++){const b=u[g];if(po(i,n,b)&&!Is(p,b))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:n===i?!1:n?i?qn(n,i,p):!0:!!i;return!1}function qn(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const o=n[r];if(po(t,e,o)&&!Is(s,o))return!0}return!1}function po(e,t,s){const n=e[s],r=t[s];return s==="style"&&Y(n)&&Y(r)?!vn(n,r):n!==r}function il({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const ho={},vo=()=>Object.create(ho),go=e=>Object.getPrototypeOf(e)===ho;function ll(e,t,s,n=!1){const r={},o=vo();e.propsDefaults=Object.create(null),mo(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);s?e.props=n?r:hi(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function al(e,t,s,n){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=G(r),[a]=e.propsOptions;let p=!1;if((n||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let g=0;g<u.length;g++){let b=u[g];if(Is(e.emitsOptions,b))continue;const v=t[b];if(a)if(J(o,b))v!==o[b]&&(o[b]=v,p=!0);else{const h=Fe(b);r[h]=ln(a,l,h,v,e,!1)}else v!==o[b]&&(o[b]=v,p=!0)}}}else{mo(e,t,r,o)&&(p=!0);let u;for(const g in l)(!t||!J(t,g)&&((u=Ct(g))===g||!J(t,u)))&&(a?s&&(s[g]!==void 0||s[u]!==void 0)&&(r[g]=ln(a,l,g,void 0,e,!0)):delete r[g]);if(o!==l)for(const g in o)(!t||!J(t,g))&&(delete o[g],p=!0)}p&&et(e.attrs,"set","")}function mo(e,t,s,n){const[r,o]=e.propsOptions;let i=!1,l;if(t)for(let a in t){if(Ut(a))continue;const p=t[a];let u;r&&J(r,u=Fe(a))?!o||!o.includes(u)?s[u]=p:(l||(l={}))[u]=p:Is(e.emitsOptions,a)||(!(a in n)||p!==n[a])&&(n[a]=p,i=!0)}if(o){const a=G(s),p=l||Q;for(let u=0;u<o.length;u++){const g=o[u];s[g]=ln(r,a,g,p[g],e,!J(p,g))}}return i}function ln(e,t,s,n,r,o){const i=e[s];if(i!=null){const l=J(i,"default");if(l&&n===void 0){const a=i.default;if(i.type!==Function&&!i.skipFactory&&V(a)){const{propsDefaults:p}=r;if(s in p)n=p[s];else{const u=os(r);n=p[s]=a.call(null,t),u()}}else n=a;r.ce&&r.ce._setProp(s,n)}i[0]&&(o&&!l?n=!1:i[1]&&(n===""||n===Ct(s))&&(n=!0))}return n}const cl=new WeakMap;function _o(e,t,s=!1){const n=s?cl:t.propsCache,r=n.get(e);if(r)return r;const o=e.props,i={},l=[];let a=!1;if(!V(e)){const u=g=>{a=!0;const[b,v]=_o(g,t,!0);de(i,b),v&&l.push(...v)};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!a)return Y(e)&&n.set(e,At),At;if(H(o))for(let u=0;u<o.length;u++){const g=Fe(o[u]);Gn(g)&&(i[g]=Q)}else if(o)for(const u in o){const g=Fe(u);if(Gn(g)){const b=o[u],v=i[g]=H(b)||V(b)?{type:b}:de({},b),h=v.type;let $=!1,D=!0;if(H(h))for(let _=0;_<h.length;++_){const m=h[_],w=V(m)&&m.name;if(w==="Boolean"){$=!0;break}else w==="String"&&(D=!1)}else $=V(h)&&h.name==="Boolean";v[0]=$,v[1]=D,($||J(v,"default"))&&l.push(g)}}const p=[i,l];return Y(e)&&n.set(e,p),p}function Gn(e){return e[0]!=="$"&&!Ut(e)}const Sn=e=>e==="_"||e==="_ctx"||e==="$stable",Tn=e=>H(e)?e.map(ze):[ze(e)],ul=(e,t,s)=>{if(t._n)return t;const n=Jr((...r)=>Tn(t(...r)),s);return n._c=!1,n},yo=(e,t,s)=>{const n=e._ctx;for(const r in e){if(Sn(r))continue;const o=e[r];if(V(o))t[r]=ul(r,o,n);else if(o!=null){const i=Tn(o);t[r]=()=>i}}},bo=(e,t)=>{const s=Tn(t);e.slots.default=()=>s},xo=(e,t,s)=>{for(const n in t)(s||!Sn(n))&&(e[n]=t[n])},fl=(e,t,s)=>{const n=e.slots=vo();if(e.vnode.shapeFlag&32){const r=t._;r?(xo(n,t,s),s&&$r(n,"_",r,!0)):yo(t,n)}else t&&bo(e,t)},dl=(e,t,s)=>{const{vnode:n,slots:r}=e;let o=!0,i=Q;if(n.shapeFlag&32){const l=t._;l?s&&l===1?o=!1:xo(r,t,s):(o=!t.$stable,yo(t,r)),i=t}else t&&(bo(e,t),i={default:1});if(o)for(const l in r)!Sn(l)&&i[l]==null&&delete r[l]},Se=ml;function pl(e){return hl(e)}function hl(e,t){const s=Ss();s.__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:l,createComment:a,setText:p,setElementText:u,parentNode:g,nextSibling:b,setScopeId:v=Ge,insertStaticContent:h}=e,$=(f,d,y,S=null,x=null,C=null,A=void 0,E=null,T=!!d.dynamicChildren)=>{if(f===d)return;f&&!yt(f,d)&&(S=ls(f),De(f,x,C,!0),f=null),d.patchFlag===-2&&(T=!1,d.dynamicChildren=null);const{type:k,ref:N,shapeFlag:P}=d;switch(k){case Fs:D(f,d,y,S);break;case xe:_(f,d,y,S);break;case ps:f==null&&m(d,y,S,A);break;case ee:F(f,d,y,S,x,C,A,E,T);break;default:P&1?W(f,d,y,S,x,C,A,E,T):P&6?te(f,d,y,S,x,C,A,E,T):(P&64||P&128)&&k.process(f,d,y,S,x,C,A,E,T,Nt)}N!=null&&x?zt(N,f&&f.ref,C,d||f,!d):N==null&&f&&f.ref!=null&&zt(f.ref,null,C,f,!0)},D=(f,d,y,S)=>{if(f==null)n(d.el=l(d.children),y,S);else{const x=d.el=f.el;d.children!==f.children&&p(x,d.children)}},_=(f,d,y,S)=>{f==null?n(d.el=a(d.children||""),y,S):d.el=f.el},m=(f,d,y,S)=>{[f.el,f.anchor]=h(f.children,d,y,S,f.el,f.anchor)},w=({el:f,anchor:d},y,S)=>{let x;for(;f&&f!==d;)x=b(f),n(f,y,S),f=x;n(d,y,S)},I=({el:f,anchor:d})=>{let y;for(;f&&f!==d;)y=b(f),r(f),f=y;r(d)},W=(f,d,y,S,x,C,A,E,T)=>{if(d.type==="svg"?A="svg":d.type==="math"&&(A="mathml"),f==null)oe(d,y,S,x,C,A,E,T);else{const k=f.el&&f.el._isVueCE?f.el:null;try{k&&k._beginPatch(),j(f,d,x,C,A,E,T)}finally{k&&k._endPatch()}}},oe=(f,d,y,S,x,C,A,E)=>{let T,k;const{props:N,shapeFlag:P,transition:R,dirs:B}=f;if(T=f.el=i(f.type,C,N&&N.is,N),P&8?u(T,f.children):P&16&&ie(f.children,T,null,S,x,zs(f,C),A,E),B&&dt(f,null,S,"created"),U(T,f,f.scopeId,A,S),N){for(const ne in N)ne!=="value"&&!Ut(ne)&&o(T,ne,null,N[ne],C,S);"value"in N&&o(T,"value",null,N.value,C),(k=N.onVnodeBeforeMount)&&Ve(k,S,f)}B&&dt(f,null,S,"beforeMount");const z=vl(x,R);z&&R.beforeEnter(T),n(T,d,y),((k=N&&N.onVnodeMounted)||z||B)&&Se(()=>{k&&Ve(k,S,f),z&&R.enter(T),B&&dt(f,null,S,"mounted")},x)},U=(f,d,y,S,x)=>{if(y&&v(f,y),S)for(let C=0;C<S.length;C++)v(f,S[C]);if(x){let C=x.subTree;if(d===C||$o(C.type)&&(C.ssContent===d||C.ssFallback===d)){const A=x.vnode;U(f,A,A.scopeId,A.slotScopeIds,x.parent)}}},ie=(f,d,y,S,x,C,A,E,T=0)=>{for(let k=T;k<f.length;k++){const N=f[k]=E?Qe(f[k]):ze(f[k]);$(null,N,d,y,S,x,C,A,E)}},j=(f,d,y,S,x,C,A)=>{const E=d.el=f.el;let{patchFlag:T,dynamicChildren:k,dirs:N}=d;T|=f.patchFlag&16;const P=f.props||Q,R=d.props||Q;let B;if(y&&pt(y,!1),(B=R.onVnodeBeforeUpdate)&&Ve(B,y,d,f),N&&dt(d,f,y,"beforeUpdate"),y&&pt(y,!0),(P.innerHTML&&R.innerHTML==null||P.textContent&&R.textContent==null)&&u(E,""),k?K(f.dynamicChildren,k,E,y,S,zs(d,x),C):A||se(f,d,E,null,y,S,zs(d,x),C,!1),T>0){if(T&16)Z(E,P,R,y,x);else if(T&2&&P.class!==R.class&&o(E,"class",null,R.class,x),T&4&&o(E,"style",P.style,R.style,x),T&8){const z=d.dynamicProps;for(let ne=0;ne<z.length;ne++){const X=z[ne],ke=P[X],$e=R[X];($e!==ke||X==="value")&&o(E,X,ke,$e,x,y)}}T&1&&f.children!==d.children&&u(E,d.children)}else!A&&k==null&&Z(E,P,R,y,x);((B=R.onVnodeUpdated)||N)&&Se(()=>{B&&Ve(B,y,d,f),N&&dt(d,f,y,"updated")},S)},K=(f,d,y,S,x,C,A)=>{for(let E=0;E<d.length;E++){const T=f[E],k=d[E],N=T.el&&(T.type===ee||!yt(T,k)||T.shapeFlag&198)?g(T.el):y;$(T,k,N,null,S,x,C,A,!0)}},Z=(f,d,y,S,x)=>{if(d!==y){if(d!==Q)for(const C in d)!Ut(C)&&!(C in y)&&o(f,C,d[C],null,x,S);for(const C in y){if(Ut(C))continue;const A=y[C],E=d[C];A!==E&&C!=="value"&&o(f,C,E,A,x,S)}"value"in y&&o(f,"value",d.value,y.value,x)}},F=(f,d,y,S,x,C,A,E,T)=>{const k=d.el=f?f.el:l(""),N=d.anchor=f?f.anchor:l("");let{patchFlag:P,dynamicChildren:R,slotScopeIds:B}=d;B&&(E=E?E.concat(B):B),f==null?(n(k,y,S),n(N,y,S),ie(d.children||[],y,N,x,C,A,E,T)):P>0&&P&64&&R&&f.dynamicChildren&&f.dynamicChildren.length===R.length?(K(f.dynamicChildren,R,y,x,C,A,E),(d.key!=null||x&&d===x.subTree)&&wo(f,d,!0)):se(f,d,y,N,x,C,A,E,T)},te=(f,d,y,S,x,C,A,E,T)=>{d.slotScopeIds=E,f==null?d.shapeFlag&512?x.ctx.activate(d,y,S,A,T):ce(d,y,S,x,C,A,T):Ie(f,d,T)},ce=(f,d,y,S,x,C,A)=>{const E=f.component=kl(f,S,x);if(As(f)&&(E.ctx.renderer=Nt),$l(E,!1,A),E.asyncDep){if(x&&x.registerDep(E,pe,A),!f.el){const T=E.subTree=Ce(xe);_(null,T,d,y),f.placeholder=T.el}}else pe(E,f,d,y,x,C,A)},Ie=(f,d,y)=>{const S=d.component=f.component;if(ol(f,d,y))if(S.asyncDep&&!S.asyncResolved){le(S,d,y);return}else S.next=d,S.update();else d.el=f.el,S.vnode=d},pe=(f,d,y,S,x,C,A)=>{const E=()=>{if(f.isMounted){let{next:P,bu:R,u:B,parent:z,vnode:ne}=f;{const He=Co(f);if(He){P&&(P.el=ne.el,le(f,P,A)),He.asyncDep.then(()=>{Se(()=>{f.isUnmounted||k()},x)});return}}let X=P,ke;pt(f,!1),P?(P.el=ne.el,le(f,P,A)):P=ne,R&&fs(R),(ke=P.props&&P.props.onVnodeBeforeUpdate)&&Ve(ke,z,P,ne),pt(f,!0);const $e=zn(f),je=f.subTree;f.subTree=$e,$(je,$e,g(je.el),ls(je),f,x,C),P.el=$e.el,X===null&&il(f,$e.el),B&&Se(B,x),(ke=P.props&&P.props.onVnodeUpdated)&&Se(()=>Ve(ke,z,P,ne),x)}else{let P;const{el:R,props:B}=d,{bm:z,m:ne,parent:X,root:ke,type:$e}=f,je=qt(d);pt(f,!1),z&&fs(z),!je&&(P=B&&B.onVnodeBeforeMount)&&Ve(P,X,d),pt(f,!0);{ke.ce&&ke.ce._hasShadowRoot()&&ke.ce._injectChildStyle($e,f.parent?f.parent.type:void 0);const He=f.subTree=zn(f);$(null,He,y,S,f,x,C),d.el=He.el}if(ne&&Se(ne,x),!je&&(P=B&&B.onVnodeMounted)){const He=d;Se(()=>Ve(P,X,He),x)}(d.shapeFlag&256||X&&qt(X.vnode)&&X.vnode.shapeFlag&256)&&f.a&&Se(f.a,x),f.isMounted=!0,d=y=S=null}};f.scope.on();const T=f.effect=new Er(E);f.scope.off();const k=f.update=T.run.bind(T),N=f.job=T.runIfDirty.bind(T);N.i=f,N.id=f.uid,T.scheduler=()=>$n(N),pt(f,!0),k()},le=(f,d,y)=>{d.component=f;const S=f.vnode.props;f.vnode=d,f.next=null,al(f,d.props,S,y),dl(f,d.children,y),st(),Dn(f),nt()},se=(f,d,y,S,x,C,A,E,T=!1)=>{const k=f&&f.children,N=f?f.shapeFlag:0,P=d.children,{patchFlag:R,shapeFlag:B}=d;if(R>0){if(R&128){is(k,P,y,S,x,C,A,E,T);return}else if(R&256){ut(k,P,y,S,x,C,A,E,T);return}}B&8?(N&16&&Rt(k,x,C),P!==k&&u(y,P)):N&16?B&16?is(k,P,y,S,x,C,A,E,T):Rt(k,x,C,!0):(N&8&&u(y,""),B&16&&ie(P,y,S,x,C,A,E,T))},ut=(f,d,y,S,x,C,A,E,T)=>{f=f||At,d=d||At;const k=f.length,N=d.length,P=Math.min(k,N);let R;for(R=0;R<P;R++){const B=d[R]=T?Qe(d[R]):ze(d[R]);$(f[R],B,y,null,x,C,A,E,T)}k>N?Rt(f,x,C,!0,!1,P):ie(d,y,S,x,C,A,E,T,P)},is=(f,d,y,S,x,C,A,E,T)=>{let k=0;const N=d.length;let P=f.length-1,R=N-1;for(;k<=P&&k<=R;){const B=f[k],z=d[k]=T?Qe(d[k]):ze(d[k]);if(yt(B,z))$(B,z,y,null,x,C,A,E,T);else break;k++}for(;k<=P&&k<=R;){const B=f[P],z=d[R]=T?Qe(d[R]):ze(d[R]);if(yt(B,z))$(B,z,y,null,x,C,A,E,T);else break;P--,R--}if(k>P){if(k<=R){const B=R+1,z=B<N?d[B].el:S;for(;k<=R;)$(null,d[k]=T?Qe(d[k]):ze(d[k]),y,z,x,C,A,E,T),k++}}else if(k>R)for(;k<=P;)De(f[k],x,C,!0),k++;else{const B=k,z=k,ne=new Map;for(k=z;k<=R;k++){const Me=d[k]=T?Qe(d[k]):ze(d[k]);Me.key!=null&&ne.set(Me.key,k)}let X,ke=0;const $e=R-z+1;let je=!1,He=0;const Dt=new Array($e);for(k=0;k<$e;k++)Dt[k]=0;for(k=B;k<=P;k++){const Me=f[k];if(ke>=$e){De(Me,x,C,!0);continue}let Be;if(Me.key!=null)Be=ne.get(Me.key);else for(X=z;X<=R;X++)if(Dt[X-z]===0&&yt(Me,d[X])){Be=X;break}Be===void 0?De(Me,x,C,!0):(Dt[Be-z]=k+1,Be>=He?He=Be:je=!0,$(Me,d[Be],y,null,x,C,A,E,T),ke++)}const On=je?gl(Dt):At;for(X=On.length-1,k=$e-1;k>=0;k--){const Me=z+k,Be=d[Me],Pn=d[Me+1],In=Me+1<N?Pn.el||ko(Pn):S;Dt[k]===0?$(null,Be,y,In,x,C,A,E,T):je&&(X<0||k!==On[X]?ft(Be,y,In,2):X--)}}},ft=(f,d,y,S,x=null)=>{const{el:C,type:A,transition:E,children:T,shapeFlag:k}=f;if(k&6){ft(f.component.subTree,d,y,S);return}if(k&128){f.suspense.move(d,y,S);return}if(k&64){A.move(f,d,y,Nt);return}if(A===ee){n(C,d,y);for(let P=0;P<T.length;P++)ft(T[P],d,y,S);n(f.anchor,d,y);return}if(A===ps){w(f,d,y);return}if(S!==2&&k&1&&E)if(S===0)E.beforeEnter(C),n(C,d,y),Se(()=>E.enter(C),x);else{const{leave:P,delayLeave:R,afterLeave:B}=E,z=()=>{f.ctx.isUnmounted?r(C):n(C,d,y)},ne=()=>{C._isLeaving&&C[Ke](!0),P(C,()=>{z(),B&&B()})};R?R(C,z,ne):ne()}else n(C,d,y)},De=(f,d,y,S=!1,x=!1)=>{const{type:C,props:A,ref:E,children:T,dynamicChildren:k,shapeFlag:N,patchFlag:P,dirs:R,cacheIndex:B}=f;if(P===-2&&(x=!1),E!=null&&(st(),zt(E,null,y,f,!0),nt()),B!=null&&(d.renderCache[B]=void 0),N&256){d.ctx.deactivate(f);return}const z=N&1&&R,ne=!qt(f);let X;if(ne&&(X=A&&A.onVnodeBeforeUnmount)&&Ve(X,d,f),N&6)Lo(f.component,y,S);else{if(N&128){f.suspense.unmount(y,S);return}z&&dt(f,null,d,"beforeUnmount"),N&64?f.type.remove(f,d,y,Nt,S):k&&!k.hasOnce&&(C!==ee||P>0&&P&64)?Rt(k,d,y,!1,!0):(C===ee&&P&384||!x&&N&16)&&Rt(T,d,y),S&&En(f)}(ne&&(X=A&&A.onVnodeUnmounted)||z)&&Se(()=>{X&&Ve(X,d,f),z&&dt(f,null,d,"unmounted")},y)},En=f=>{const{type:d,el:y,anchor:S,transition:x}=f;if(d===ee){Fo(y,S);return}if(d===ps){I(f);return}const C=()=>{r(y),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(f.shapeFlag&1&&x&&!x.persisted){const{leave:A,delayLeave:E}=x,T=()=>A(y,C);E?E(f.el,C,T):T()}else C()},Fo=(f,d)=>{let y;for(;f!==d;)y=b(f),r(f),f=y;r(d)},Lo=(f,d,y)=>{const{bum:S,scope:x,job:C,subTree:A,um:E,m:T,a:k}=f;Jn(T),Jn(k),S&&fs(S),x.stop(),C&&(C.flags|=8,De(A,f,d,y)),E&&Se(E,d),Se(()=>{f.isUnmounted=!0},d)},Rt=(f,d,y,S=!1,x=!1,C=0)=>{for(let A=C;A<f.length;A++)De(f[A],d,y,S,x)},ls=f=>{if(f.shapeFlag&6)return ls(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const d=b(f.anchor||f.el),y=d&&d[Oi];return y?b(y):d};let Ns=!1;const An=(f,d,y)=>{let S;f==null?d._vnode&&(De(d._vnode,null,null,!0),S=d._vnode.component):$(d._vnode||null,f,d,null,null,null,y),d._vnode=f,Ns||(Ns=!0,Dn(S),zr(),Ns=!1)},Nt={p:$,um:De,m:ft,r:En,mt:ce,mc:ie,pc:se,pbc:K,n:ls,o:e};return{render:An,hydrate:void 0,createApp:Qi(An)}}function zs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function pt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function vl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function wo(e,t,s=!1){const n=e.children,r=t.children;if(H(n)&&H(r))for(let o=0;o<n.length;o++){const i=n[o];let l=r[o];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[o]=Qe(r[o]),l.el=i.el),!s&&l.patchFlag!==-2&&wo(i,l)),l.type===Fs&&(l.patchFlag===-1&&(l=r[o]=Qe(l)),l.el=i.el),l.type===xe&&!l.el&&(l.el=i.el)}}function gl(e){const t=e.slice(),s=[0];let n,r,o,i,l;const a=e.length;for(n=0;n<a;n++){const p=e[n];if(p!==0){if(r=s[s.length-1],e[r]<p){t[n]=r,s.push(n);continue}for(o=0,i=s.length-1;o<i;)l=o+i>>1,e[s[l]]<p?o=l+1:i=l;p<e[s[o]]&&(o>0&&(t[n]=s[o-1]),s[o]=n)}}for(o=s.length,i=s[o-1];o-- >0;)s[o]=i,i=t[i];return s}function Co(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Co(t)}function Jn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function ko(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?ko(t.subTree):null}const $o=e=>e.__isSuspense;function ml(e,t){t&&t.pendingBranch?H(e)?t.effects.push(...e):t.effects.push(e):Si(e)}const ee=Symbol.for("v-fgt"),Fs=Symbol.for("v-txt"),xe=Symbol.for("v-cmt"),ps=Symbol.for("v-stc"),Jt=[];let Ee=null;function O(e=!1){Jt.push(Ee=e?null:[])}function _l(){Jt.pop(),Ee=Jt[Jt.length-1]||null}let es=1;function xs(e,t=!1){es+=e,e<0&&Ee&&t&&(Ee.hasOnce=!0)}function So(e){return e.dynamicChildren=es>0?Ee||At:null,_l(),es>0&&Ee&&Ee.push(e),e}function L(e,t,s,n,r,o){return So(c(e,t,s,n,r,o,!0))}function _t(e,t,s,n,r){return So(Ce(e,t,s,n,r,!0))}function ws(e){return e?e.__v_isVNode===!0:!1}function yt(e,t){return e.type===t.type&&e.key===t.key}const To=({key:e})=>e??null,hs=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||me(e)||V(e)?{i:Oe,r:e,k:t,f:!!s}:e:null);function c(e,t=null,s=null,n=0,r=null,o=e===ee?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&To(t),ref:t&&hs(t),scopeId:Gr,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Oe};return l?(Mn(a,s),o&128&&e.normalize(a)):s&&(a.shapeFlag|=ue(s)?8:16),es>0&&!i&&Ee&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&Ee.push(a),a}const Ce=yl;function yl(e,t=null,s=null,n=0,r=null,o=!1){if((!e||e===Wi)&&(e=xe),ws(e)){const l=ct(e,t,!0);return s&&Mn(l,s),es>0&&!o&&Ee&&(l.shapeFlag&6?Ee[Ee.indexOf(e)]=l:Ee.push(l)),l.patchFlag=-2,l}if(El(e)&&(e=e.__vccOpts),t){t=bl(t);let{class:l,style:a}=t;l&&!ue(l)&&(t.class=q(l)),Y(a)&&(Cn(a)&&!H(a)&&(a=de({},a)),t.style=ve(a))}const i=ue(e)?1:$o(e)?128:Zr(e)?64:Y(e)?4:V(e)?2:0;return c(e,t,s,n,r,i,o,!0)}function bl(e){return e?Cn(e)||go(e)?de({},e):e:null}function ct(e,t,s=!1,n=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:a}=e,p=t?xl(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&To(p),ref:t&&t.ref?s&&o?H(o)?o.concat(hs(t)):[o,hs(t)]:hs(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ct(e.ssContent),ssFallback:e.ssFallback&&ct(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&n&&Qt(u,a.clone(u)),u}function at(e=" ",t=0){return Ce(Fs,null,e,t)}function Mo(e,t){const s=Ce(ps,null,e);return s.staticCount=t,s}function he(e="",t=!1){return t?(O(),_t(xe,null,e)):Ce(xe,null,e)}function ze(e){return e==null||typeof e=="boolean"?Ce(xe):H(e)?Ce(ee,null,e.slice()):ws(e)?Qe(e):Ce(Fs,null,String(e))}function Qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ct(e)}function Mn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(H(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Mn(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!go(t)?t._ctx=Oe:r===3&&Oe&&(Oe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else V(t)?(t={default:t,_ctx:Oe},s=32):(t=String(t),n&64?(s=16,t=[at(t)]):s=8);e.children=t,e.shapeFlag|=s}function xl(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=q([t.class,n.class]));else if(r==="style")t.style=ve([t.style,n.style]);else if(ks(r)){const o=t[r],i=n[r];i&&o!==i&&!(H(o)&&o.includes(i))&&(t[r]=o?[].concat(o,i):i)}else r!==""&&(t[r]=n[r])}return t}function Ve(e,t,s,n=null){Ne(e,t,7,[s,n])}const wl=uo();let Cl=0;function kl(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||wl,o={uid:Cl++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Go(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:_o(n,r),emitsOptions:fo(n,r),emit:null,emitted:null,propsDefaults:Q,inheritAttrs:n.inheritAttrs,ctx:Q,data:Q,props:Q,attrs:Q,slots:Q,refs:Q,setupState:Q,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=tl.bind(null,o),e.ce&&e.ce(o),o}let we=null;const Eo=()=>we||Oe;let Cs,an;{const e=Ss(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Cs=t("__VUE_INSTANCE_SETTERS__",s=>we=s),an=t("__VUE_SSR_SETTERS__",s=>ts=s)}const os=e=>{const t=we;return Cs(e),e.scope.on(),()=>{e.scope.off(),Cs(t)}},Yn=()=>{we&&we.scope.off(),Cs(null)};function Ao(e){return e.vnode.shapeFlag&4}let ts=!1;function $l(e,t=!1,s=!1){t&&an(t);const{props:n,children:r}=e.vnode,o=Ao(e);ll(e,n,o,t),fl(e,r,s||t);const i=o?Sl(e,t):void 0;return t&&an(!1),i}function Sl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,zi);const{setup:n}=s;if(n){st();const r=e.setupContext=n.length>1?Ml(e):null,o=os(e),i=rs(n,e,0,[e.props,r]),l=xr(i);if(nt(),o(),(l||e.sp)&&!qt(e)&&ro(e),l){if(i.then(Yn,Yn),t)return i.then(a=>{Xn(e,a)}).catch(a=>{Ms(a,e,0)});e.asyncDep=i}else Xn(e,i)}else Oo(e)}function Xn(e,t,s){V(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Y(t)&&(e.setupState=Ur(t)),Oo(e)}function Oo(e,t,s){const n=e.type;e.render||(e.render=n.render||Ge);{const r=os(e);st();try{qi(e)}finally{nt(),r()}}}const Tl={get(e,t){return ge(e,"get",""),e[t]}};function Ml(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Tl),slots:e.slots,emit:e.emit,expose:t}}function Ls(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ur(vi(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Gt)return Gt[s](e)},has(t,s){return s in t||s in Gt}})):e.proxy}function El(e){return V(e)&&"__vccOpts"in e}const fe=(e,t)=>bi(e,t,ts);function mt(e,t,s){try{xs(-1);const n=arguments.length;return n===2?Y(t)&&!H(t)?ws(t)?Ce(e,null,[t]):Ce(e,t):Ce(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&ws(s)&&(s=[s]),Ce(e,t,s))}finally{xs(1)}}const Al="3.5.30";/**
|
|
14
|
+
* @vue/runtime-dom v3.5.30
|
|
15
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
16
|
+
* @license MIT
|
|
17
|
+
**/let cn;const Zn=typeof window<"u"&&window.trustedTypes;if(Zn)try{cn=Zn.createPolicy("vue",{createHTML:e=>e})}catch{}const Po=cn?e=>cn.createHTML(e):e=>e,Ol="http://www.w3.org/2000/svg",Pl="http://www.w3.org/1998/Math/MathML",Ze=typeof document<"u"?document:null,Qn=Ze&&Ze.createElement("template"),Il={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?Ze.createElementNS(Ol,e):t==="mathml"?Ze.createElementNS(Pl,e):s?Ze.createElement(e,{is:s}):Ze.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>Ze.createTextNode(e),createComment:e=>Ze.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ze.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,o){const i=s?s.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===o||!(r=r.nextSibling)););else{Qn.innerHTML=Po(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=Qn.content;if(n==="svg"||n==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,s)}return[i?i.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},it="transition",Bt="animation",ss=Symbol("_vtc"),Io={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Fl=de({},Qr,Io),Ll=e=>(e.displayName="Transition",e.props=Fl,e),Rl=Ll((e,{slots:t})=>mt(Fi,Nl(e),t)),ht=(e,t=[])=>{H(e)?e.forEach(s=>s(...t)):e&&e(...t)},er=e=>e?H(e)?e.some(t=>t.length>1):e.length>1:!1;function Nl(e){const t={};for(const F in e)F in Io||(t[F]=e[F]);if(e.css===!1)return t;const{name:s="v",type:n,duration:r,enterFromClass:o=`${s}-enter-from`,enterActiveClass:i=`${s}-enter-active`,enterToClass:l=`${s}-enter-to`,appearFromClass:a=o,appearActiveClass:p=i,appearToClass:u=l,leaveFromClass:g=`${s}-leave-from`,leaveActiveClass:b=`${s}-leave-active`,leaveToClass:v=`${s}-leave-to`}=e,h=Dl(r),$=h&&h[0],D=h&&h[1],{onBeforeEnter:_,onEnter:m,onEnterCancelled:w,onLeave:I,onLeaveCancelled:W,onBeforeAppear:oe=_,onAppear:U=m,onAppearCancelled:ie=w}=t,j=(F,te,ce,Ie)=>{F._enterCancelled=Ie,vt(F,te?u:l),vt(F,te?p:i),ce&&ce()},K=(F,te)=>{F._isLeaving=!1,vt(F,g),vt(F,v),vt(F,b),te&&te()},Z=F=>(te,ce)=>{const Ie=F?U:m,pe=()=>j(te,F,ce);ht(Ie,[te,pe]),tr(()=>{vt(te,F?a:o),Xe(te,F?u:l),er(Ie)||sr(te,n,$,pe)})};return de(t,{onBeforeEnter(F){ht(_,[F]),Xe(F,o),Xe(F,i)},onBeforeAppear(F){ht(oe,[F]),Xe(F,a),Xe(F,p)},onEnter:Z(!1),onAppear:Z(!0),onLeave(F,te){F._isLeaving=!0;const ce=()=>K(F,te);Xe(F,g),F._enterCancelled?(Xe(F,b),or(F)):(or(F),Xe(F,b)),tr(()=>{F._isLeaving&&(vt(F,g),Xe(F,v),er(I)||sr(F,n,D,ce))}),ht(I,[F,ce])},onEnterCancelled(F){j(F,!1,void 0,!0),ht(w,[F])},onAppearCancelled(F){j(F,!0,void 0,!0),ht(ie,[F])},onLeaveCancelled(F){K(F),ht(W,[F])}})}function Dl(e){if(e==null)return null;if(Y(e))return[qs(e.enter),qs(e.leave)];{const t=qs(e);return[t,t]}}function qs(e){return Ho(e)}function Xe(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.add(s)),(e[ss]||(e[ss]=new Set)).add(t)}function vt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const s=e[ss];s&&(s.delete(t),s.size||(e[ss]=void 0))}function tr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let jl=0;function sr(e,t,s,n){const r=e._endId=++jl,o=()=>{r===e._endId&&n()};if(s!=null)return setTimeout(o,s);const{type:i,timeout:l,propCount:a}=Hl(e,t);if(!i)return n();const p=i+"end";let u=0;const g=()=>{e.removeEventListener(p,b),o()},b=v=>{v.target===e&&++u>=a&&g()};setTimeout(()=>{u<a&&g()},l+1),e.addEventListener(p,b)}function Hl(e,t){const s=window.getComputedStyle(e),n=h=>(s[h]||"").split(", "),r=n(`${it}Delay`),o=n(`${it}Duration`),i=nr(r,o),l=n(`${Bt}Delay`),a=n(`${Bt}Duration`),p=nr(l,a);let u=null,g=0,b=0;t===it?i>0&&(u=it,g=i,b=o.length):t===Bt?p>0&&(u=Bt,g=p,b=a.length):(g=Math.max(i,p),u=g>0?i>p?it:Bt:null,b=u?u===it?o.length:a.length:0);const v=u===it&&/\b(?:transform|all)(?:,|$)/.test(n(`${it}Property`).toString());return{type:u,timeout:g,propCount:b,hasTransform:v}}function nr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((s,n)=>rr(s)+rr(e[n])))}function rr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function or(e){return(e?e.ownerDocument:document).body.offsetHeight}function Bl(e,t,s){const n=e[ss];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const ir=Symbol("_vod"),Vl=Symbol("_vsh"),Ul=Symbol(""),Kl=/(?:^|;)\s*display\s*:/;function Wl(e,t,s){const n=e.style,r=ue(s);let o=!1;if(s&&!r){if(t)if(ue(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();s[l]==null&&vs(n,l,"")}else for(const i in t)s[i]==null&&vs(n,i,"");for(const i in s)i==="display"&&(o=!0),vs(n,i,s[i])}else if(r){if(t!==s){const i=n[Ul];i&&(s+=";"+i),n.cssText=s,o=Kl.test(s)}}else t&&e.removeAttribute("style");ir in e&&(e[ir]=o?n.display:"",e[Vl]&&(n.display="none"))}const lr=/\s*!important$/;function vs(e,t,s){if(H(s))s.forEach(n=>vs(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=zl(e,t);lr.test(s)?e.setProperty(Ct(n),s.replace(lr,""),"important"):e[n]=s}}const ar=["Webkit","Moz","ms"],Gs={};function zl(e,t){const s=Gs[t];if(s)return s;let n=Fe(t);if(n!=="filter"&&n in e)return Gs[t]=n;n=kr(n);for(let r=0;r<ar.length;r++){const o=ar[r]+n;if(o in e)return Gs[t]=o}return t}const cr="http://www.w3.org/1999/xlink";function ur(e,t,s,n,r,o=zo(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(cr,t.slice(6,t.length)):e.setAttributeNS(cr,t,s):s==null||o&&!Sr(s)?e.removeAttribute(t):e.setAttribute(t,o?"":Je(s)?String(s):s)}function fr(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?Po(s):s);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const l=o==="OPTION"?e.getAttribute("value")||"":e.value,a=s==null?e.type==="checkbox"?"on":"":String(s);(l!==a||!("_value"in e))&&(e.value=a),s==null&&e.removeAttribute(t),e._value=s;return}let i=!1;if(s===""||s==null){const l=typeof e[t];l==="boolean"?s=Sr(s):s==null&&l==="string"?(s="",i=!0):l==="number"&&(s=0,i=!0)}try{e[t]=s}catch{}i&&e.removeAttribute(r||t)}function Et(e,t,s,n){e.addEventListener(t,s,n)}function ql(e,t,s,n){e.removeEventListener(t,s,n)}const dr=Symbol("_vei");function Gl(e,t,s,n,r=null){const o=e[dr]||(e[dr]={}),i=o[t];if(n&&i)i.value=n;else{const[l,a]=Jl(t);if(n){const p=o[t]=Zl(n,r);Et(e,l,p,a)}else i&&(ql(e,l,i,a),o[t]=void 0)}}const pr=/(?:Once|Passive|Capture)$/;function Jl(e){let t;if(pr.test(e)){t={};let n;for(;n=e.match(pr);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Ct(e.slice(2)),t]}let Js=0;const Yl=Promise.resolve(),Xl=()=>Js||(Yl.then(()=>Js=0),Js=Date.now());function Zl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;Ne(Ql(n,s.value),t,5,[n])};return s.value=e,s.attached=Xl(),s}function Ql(e,t){if(H(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const hr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ea=(e,t,s,n,r,o)=>{const i=r==="svg";t==="class"?Bl(e,n,i):t==="style"?Wl(e,s,n):ks(t)?fn(t)||Gl(e,t,s,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ta(e,t,n,i))?(fr(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ur(e,t,n,i,o,t!=="value")):e._isVueCE&&(sa(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ue(n)))?fr(e,Fe(t),n,o,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),ur(e,t,n,i))};function ta(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&hr(t)&&V(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return hr(t)&&ue(s)?!1:t in e}function sa(e,t){const s=e._def.props;if(!s)return!1;const n=Fe(t);return Array.isArray(s)?s.some(r=>Fe(r)===n):Object.keys(s).some(r=>Fe(r)===n)}const vr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return H(t)?s=>fs(t,s):t};function na(e){e.target.composing=!0}function gr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ys=Symbol("_assign");function mr(e,t,s){return t&&(e=e.trim()),s&&(e=hn(e)),e}const Rs={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[Ys]=vr(r);const o=n||r.props&&r.props.type==="number";Et(e,t?"change":"input",i=>{i.target.composing||e[Ys](mr(e.value,s,o))}),(s||o)&&Et(e,"change",()=>{e.value=mr(e.value,s,o)}),t||(Et(e,"compositionstart",na),Et(e,"compositionend",gr),Et(e,"change",gr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:o}},i){if(e[Ys]=vr(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?hn(e.value):e.value,a=t??"";l!==a&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===a)||(e.value=a))}},ra=["ctrl","shift","alt","meta"],oa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ra.some(s=>e[`${s}Key`]&&!t.includes(s))},ia=(e,t)=>{if(!e)return e;const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=((r,...o)=>{for(let i=0;i<t.length;i++){const l=oa[t[i]];if(l&&l(r,t))return}return e(r,...o)}))},la=de({patchProp:ea},Il);let _r;function aa(){return _r||(_r=pl(la))}const ca=((...e)=>{const t=aa().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=fa(n);if(!r)return;const o=t._component;!V(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=s(r,!1,ua(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function ua(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function fa(e){return ue(e)?document.querySelector(e):e}const da={class:"view"},pa={class:"stats-row"},ha={class:"stat-card"},va={class:"stat-val"},ga={class:"stat-card"},ma={class:"stat-val",style:{color:"var(--teal)"}},_a={class:"stat-card"},ya={class:"stat-val",style:{color:"var(--amber)"}},ba={class:"stat-card"},xa={class:"stat-val",style:{color:"var(--red)"}},wa={class:"toolbar"},Ca={class:"split"},ka={class:"table-wrap"},$a={class:"data-table"},Sa=["onClick"],Ta={class:"mono",style:{"font-size":"11px",color:"var(--text2)"}},Ma=["title"],Ea={class:"muted text-sm"},Aa={class:"mono text-sm"},Oa={style:{height:"4px",background:"var(--bg2)","border-radius":"2px",overflow:"hidden"}},Pa={key:0,class:"detail-panel"},Ia={class:"detail-header"},Fa={class:"mono bold",style:{"font-size":"12px"}},La={class:"flex gap-2"},Ra={class:"meta-grid"},Na={class:"muted text-sm"},Da={class:"mono text-sm",style:{"word-break":"break-all"}},ja={class:"payload-box"},Ha={class:"mono text-sm muted"},Ba={key:1,class:"detail-empty"},Va={class:"waterfall"},Ua={class:"mono muted text-sm",style:{width:"140px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap","flex-shrink":"0"}},Ka={class:"wf-track"},Wa={class:"mono muted text-sm",style:{width:"44px","text-align":"right","flex-shrink":"0"}},za=wt({__name:"FetchDashboard",setup(e){const t=ae([{id:"1",key:"product-detail",url:"/api/products/42",status:"ok",origin:"ssr",ms:48,size:3276,cached:!1,startOffset:0,file:"pages/products/[id].vue",line:8},{id:"2",key:"related-products",url:"/api/products?related=42",status:"ok",origin:"ssr",ms:112,size:19148,cached:!1,startOffset:10,file:"pages/products/[id].vue",line:14},{id:"3",key:"user-session",url:"/api/auth/session",status:"cached",origin:"csr",ms:0,size:819,cached:!0,startOffset:0,file:"layouts/default.vue",line:5},{id:"4",key:"cart-summary",url:"/api/cart",status:"ok",origin:"csr",ms:67,size:2150,cached:!1,startOffset:5,file:"components/CartDrawer.vue",line:3},{id:"5",key:"product-reviews",url:"/api/products/42/reviews",status:"pending",origin:"csr",ms:void 0,size:void 0,cached:!1,startOffset:120,file:"components/ReviewList.vue",line:6},{id:"6",key:"recommendations",url:"/api/recommend?u=u_9x3k",status:"ok",origin:"csr",ms:201,size:9626,cached:!1,startOffset:30,file:"components/Recommendations.vue",line:4},{id:"7",key:"inventory-check",url:"/api/inventory/42",status:"error",origin:"csr",ms:503,size:void 0,cached:!1,startOffset:55,file:"components/StockBadge.vue",line:7},{id:"8",key:"nav-links",url:"/api/nav",status:"cached",origin:"ssr",ms:0,size:1126,cached:!0,startOffset:0,file:"layouts/default.vue",line:9}]),s=ae("all"),n=ae(""),r=ae(null),o=fe(()=>({ok:t.value.filter(_=>_.status==="ok").length,pending:t.value.filter(_=>_.status==="pending").length,error:t.value.filter(_=>_.status==="error").length})),i=fe(()=>t.value.filter(_=>{if(s.value!=="all"&&_.status!==s.value)return!1;const m=n.value.toLowerCase();return!(m&&!_.key.includes(m)&&!_.url.includes(m))})),l=fe(()=>{if(!r.value)return[];const _=r.value;return[["url",_.url],["status",_.status],["origin",_.origin],["duration",_.ms!=null?_.ms+"ms":"—"],["size",_.size?h(_.size):"—"],["cached",_.cached?"yes":"no"]]}),a=fe(()=>{if(!r.value)return"";const _=r.value.payload;if(!_)return"(no payload captured yet)";try{return JSON.stringify(_,null,2)}catch{return String(_)}});function p(_){return{ok:"badge-ok",error:"badge-err",pending:"badge-warn",cached:"badge-gray"}[_]??"badge-gray"}function u(_){return{ok:"var(--teal)",error:"var(--red)",pending:"var(--amber)",cached:"var(--border)"}[_]??"var(--border)"}function g(_){const m=Math.max(...t.value.filter(w=>w.ms).map(w=>w.ms),1);return _.ms!=null?Math.max(4,Math.round(_.ms/m*100)):4}function b(_){const m=Math.max(...t.value.map(w=>(w.startOffset??0)+(w.ms??0)),1);return Math.round((_.startOffset??0)/m*100)}function v(_){const m=Math.max(...t.value.map(w=>(w.startOffset??0)+(w.ms??0)),1);return _.ms!=null?Math.round(_.ms/m*100):2}function h(_){return _<1024?_+"B":(_/1024).toFixed(1)+"KB"}function $(){if(!r.value)return;const _=r.value;_.status="pending",_.ms=void 0,setTimeout(()=>{_.status="ok",_.ms=Math.floor(Math.random()*150+20)},700)}function D(){t.value=[],r.value=null}return(_,m)=>(O(),L("div",da,[c("div",pa,[c("div",ha,[m[6]||(m[6]=c("div",{class:"stat-label"},"total",-1)),c("div",va,M(t.value.length),1)]),c("div",ga,[m[7]||(m[7]=c("div",{class:"stat-label"},"success",-1)),c("div",ma,M(o.value.ok),1)]),c("div",_a,[m[8]||(m[8]=c("div",{class:"stat-label"},"pending",-1)),c("div",ya,M(o.value.pending),1)]),c("div",ba,[m[9]||(m[9]=c("div",{class:"stat-label"},"error",-1)),c("div",xa,M(o.value.error),1)])]),c("div",wa,[c("button",{class:q({active:s.value==="all"}),onClick:m[0]||(m[0]=w=>s.value="all")},"all",2),c("button",{class:q({"danger-active":s.value==="error"}),onClick:m[1]||(m[1]=w=>s.value="error")},"errors",2),c("button",{class:q({active:s.value==="pending"}),onClick:m[2]||(m[2]=w=>s.value="pending")},"pending",2),c("button",{class:q({active:s.value==="cached"}),onClick:m[3]||(m[3]=w=>s.value="cached")},"cached",2),Es(c("input",{"onUpdate:modelValue":m[4]||(m[4]=w=>n.value=w),type:"search",placeholder:"search key or url…",style:{"max-width":"240px","margin-left":"auto"}},null,512),[[Rs,n.value]]),c("button",{onClick:D},"clear")]),c("div",Ca,[c("div",ka,[c("table",$a,[m[10]||(m[10]=c("thead",null,[c("tr",null,[c("th",null,"key"),c("th",null,"url"),c("th",null,"status"),c("th",null,"origin"),c("th",null,"size"),c("th",null,"time"),c("th",{style:{"min-width":"80px"}},"bar")])],-1)),c("tbody",null,[(O(!0),L(ee,null,be(i.value,w=>{var I;return O(),L("tr",{key:w.id,class:q({selected:((I=r.value)==null?void 0:I.id)===w.id}),onClick:W=>r.value=w},[c("td",null,[c("span",Ta,M(w.key),1)]),c("td",null,[c("span",{class:"mono",style:{"font-size":"11px","max-width":"200px",display:"block",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:w.url},M(w.url),9,Ma)]),c("td",null,[c("span",{class:q(["badge",p(w.status)])},M(w.status),3)]),c("td",null,[c("span",{class:q(["badge",w.origin==="ssr"?"badge-info":"badge-gray"])},M(w.origin),3)]),c("td",Ea,M(w.size?h(w.size):"—"),1),c("td",Aa,M(w.ms!=null?w.ms+"ms":"—"),1),c("td",null,[c("div",Oa,[c("div",{style:ve({width:g(w)+"%",background:u(w.status),height:"100%",borderRadius:"2px"})},null,4)])])],10,Sa)}),128))])])]),r.value?(O(),L("div",Pa,[c("div",Ia,[c("span",Fa,M(r.value.key),1),c("div",La,[c("button",{onClick:$},"↺ replay"),c("button",{onClick:m[5]||(m[5]=w=>r.value=null)},"×")])]),c("div",Ra,[(O(!0),L(ee,null,be(l.value,([w,I])=>(O(),L(ee,{key:w},[c("span",Na,M(w),1),c("span",Da,M(I),1)],64))),128))]),m[11]||(m[11]=c("div",{class:"section-label"},"payload",-1)),c("pre",ja,M(a.value),1),m[12]||(m[12]=c("div",{class:"section-label",style:{"margin-top":"10px"}},"source",-1)),c("div",Ha,M(r.value.file)+":"+M(r.value.line),1)])):(O(),L("div",Ba,"select a call to inspect"))]),c("div",Va,[m[13]||(m[13]=c("div",{class:"section-label",style:{"margin-bottom":"6px"}},"waterfall",-1)),(O(!0),L(ee,null,be(t.value,w=>(O(),L("div",{key:w.id,class:"wf-row"},[c("span",Ua,M(w.key),1),c("div",Ka,[c("div",{class:"wf-bar",style:ve({left:b(w)+"%",width:Math.max(2,v(w))+"%",background:u(w.status)})},null,4)]),c("span",Wa,M(w.ms!=null?w.ms+"ms":"—"),1)]))),128))])]))}}),Lt=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},qa=Lt(za,[["__scopeId","data-v-00b18b03"]]),Ga={class:"view"},Ja={class:"toolbar"},Ya=["onClick"],Xa={class:"split"},Za={class:"graph-area"},Qa=["width","height","viewBox"],ec=["d"],tc=["onClick"],sc={class:"mono node-label"},nc={key:0,class:"badge badge-ok badge-xs"},rc={key:1,class:"badge badge-err badge-xs"},oc={key:0,class:"detail-panel"},ic={class:"detail-header"},lc={class:"mono bold",style:{"font-size":"12px"}},ac={key:0},cc={class:"section-label"},uc={class:"mono text-sm",style:{"min-width":"100px",color:"var(--text2)"}},fc={class:"mono text-sm muted",style:{flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},dc={class:"section-label"},pc={class:"mono text-sm",style:{"min-width":"100px"}},hc={key:0,class:"badge badge-ok"},vc={key:1,class:"badge badge-err"},gc={class:"mono muted text-sm",style:{"margin-left":"auto"}},mc={key:2,class:"muted text-sm",style:{"margin-top":"8px"}},_c={key:1,class:"detail-empty"},$t=140,St=32,yc=72,Tt=18,bc=wt({__name:"ProvideInjectGraph",setup(e){function t(b){return b.injects.some(v=>!v.ok)?"var(--red)":b.type==="both"?"var(--blue)":b.type==="provider"?"var(--teal)":"var(--text3)"}function s(b,v){return v==="all"?!0:v==="warn"?b.injects.some(h=>!h.ok):b.provides.some(h=>h.key===v)||b.injects.some(h=>h.key===v)}function n(b){return b.children.length===0?1:b.children.reduce((v,h)=>v+n(h),0)}const r=ae([{id:"App",label:"App.vue",type:"provider",provides:[{key:"authContext",val:"{ user, logout }",reactive:!0},{key:"theme",val:'"dark"',reactive:!1}],injects:[],children:[{id:"Layout",label:"Layout.vue",type:"both",provides:[{key:"routerState",val:"useRoute()",reactive:!0}],injects:[{key:"theme",from:"App.vue",ok:!0}],children:[{id:"Sidebar",label:"Sidebar.vue",type:"consumer",provides:[],injects:[{key:"authContext",from:"App.vue",ok:!0},{key:"theme",from:"App.vue",ok:!0}],children:[]},{id:"NavBar",label:"NavBar.vue",type:"consumer",provides:[],injects:[{key:"authContext",from:"App.vue",ok:!0},{key:"routerState",from:"Layout.vue",ok:!0}],children:[]},{id:"ProductList",label:"ProductList.vue",type:"error",provides:[],injects:[{key:"cartContext",from:null,ok:!1},{key:"theme",from:"App.vue",ok:!0}],children:[{id:"ProductCard",label:"ProductCard.vue",type:"error",provides:[],injects:[{key:"cartContext",from:null,ok:!1}],children:[]}]},{id:"UserMenu",label:"UserMenu.vue",type:"consumer",provides:[],injects:[{key:"authContext",from:"App.vue",ok:!0}],children:[]}]}]}]),o=ae("all"),i=ae(null),l=fe(()=>{const b=new Set;function v(h){h.forEach($=>{$.provides.forEach(D=>b.add(D.key)),$.injects.forEach(D=>b.add(D.key)),v($.children)})}return v(r.value),[...b]}),a=fe(()=>{const b=[],v=Tt;function h(D,_,m,w){const W=n(D)*($t+Tt)-Tt;b.push({data:D,parentId:w,x:Math.round(m+W/2),y:Math.round(v+_*(St+yc)+St/2)});let oe=m;for(const U of D.children){const ie=n(U);h(U,_+1,oe,D.id),oe+=ie*($t+Tt)}}let $=v;for(const D of r.value){const _=n(D);h(D,0,$,null),$+=_*($t+Tt)+Tt*2}return b}),p=fe(()=>a.value.reduce((b,v)=>Math.max(b,v.x+$t/2+20),400)),u=fe(()=>a.value.reduce((b,v)=>Math.max(b,v.y+St/2+20),200)),g=fe(()=>{const b=new Map(a.value.map(v=>[v.data.id,v]));return a.value.filter(v=>v.parentId!==null).map(v=>{const h=b.get(v.parentId);return{id:`${h.data.id}--${v.data.id}`,x1:h.x,y1:h.y+St/2,x2:v.x,y2:v.y-St/2}})});return(b,v)=>(O(),L("div",Ga,[c("div",Ja,[c("button",{class:q({active:o.value==="all"}),onClick:v[0]||(v[0]=h=>o.value="all")},"all keys",2),(O(!0),L(ee,null,be(l.value,h=>(O(),L("button",{key:h,style:{"font-family":"var(--mono)"},class:q({active:o.value===h}),onClick:$=>o.value=h},M(h),11,Ya))),128)),c("button",{style:{"margin-left":"auto"},class:q({"danger-active":o.value==="warn"}),onClick:v[1]||(v[1]=h=>o.value="warn")}," warnings only ",2)]),c("div",Xa,[c("div",Za,[v[3]||(v[3]=Mo('<div class="legend" data-v-f3905bc9><span class="dot" style="background:var(--teal);" data-v-f3905bc9></span><span data-v-f3905bc9>provides</span><span class="dot" style="background:var(--blue);" data-v-f3905bc9></span><span data-v-f3905bc9>both</span><span class="dot" style="background:var(--text3);" data-v-f3905bc9></span><span data-v-f3905bc9>injects</span><span class="dot" style="background:var(--red);" data-v-f3905bc9></span><span data-v-f3905bc9>missing provider</span></div>',1)),c("div",{class:"canvas-wrap",style:ve({width:p.value+"px",height:u.value+"px"})},[(O(),L("svg",{class:"edges-svg",width:p.value,height:u.value,viewBox:`0 0 ${p.value} ${u.value}`},[(O(!0),L(ee,null,be(g.value,h=>(O(),L("path",{key:h.id,d:`M ${h.x1},${h.y1} C ${h.x1},${(h.y1+h.y2)/2} ${h.x2},${(h.y1+h.y2)/2} ${h.x2},${h.y2}`,class:"edge",fill:"none"},null,8,ec))),128))],8,Qa)),(O(!0),L(ee,null,be(a.value,h=>{var $;return O(),L("div",{key:h.data.id,class:q(["graph-node",{"is-selected":(($=i.value)==null?void 0:$.id)===h.data.id,"is-dimmed":!s(h.data,o.value)}]),style:ve({left:h.x-$t/2+"px",top:h.y-St/2+"px",width:$t+"px","--node-color":t(h.data)}),onClick:D=>i.value=h.data},[c("span",{class:"node-dot",style:ve({background:t(h.data)})},null,4),c("span",sc,M(h.data.label),1),h.data.provides.length?(O(),L("span",nc,"+"+M(h.data.provides.length),1)):he("",!0),h.data.injects.some(D=>!D.ok)?(O(),L("span",rc,"!")):he("",!0)],14,tc)}),128))],4)]),i.value?(O(),L("div",oc,[c("div",ic,[c("span",lc,M(i.value.label),1),c("button",{onClick:v[2]||(v[2]=h=>i.value=null)},"×")]),i.value.provides.length?(O(),L("div",ac,[c("div",cc,"provides ("+M(i.value.provides.length)+")",1),(O(!0),L(ee,null,be(i.value.provides,h=>(O(),L("div",{key:h.key,class:"provide-row"},[c("span",uc,M(h.key),1),c("span",fc,M(h.val),1),c("span",{class:q(["badge",h.reactive?"badge-ok":"badge-gray"])},M(h.reactive?"reactive":"static"),3)]))),128))])):he("",!0),i.value.injects.length?(O(),L("div",{key:1,style:ve({marginTop:i.value.provides.length?"10px":"0"})},[c("div",dc,"injects ("+M(i.value.injects.length)+")",1),(O(!0),L(ee,null,be(i.value.injects,h=>(O(),L("div",{key:h.key,class:q(["inject-row",{"inject-miss":!h.ok}])},[c("span",pc,M(h.key),1),h.ok?(O(),L("span",hc,"resolved")):(O(),L("span",vc,"no provider")),c("span",gc,M(h.from??"undefined"),1)],2))),128))],4)):he("",!0),!i.value.provides.length&&!i.value.injects.length?(O(),L("div",mc," no provide/inject in this component ")):he("",!0)])):(O(),L("div",_c,"click a node to inspect"))])]))}}),xc=Lt(bc,[["__scopeId","data-v-f3905bc9"]]),wc={class:"view"},Cc={class:"stats-row"},kc={class:"stat-card"},$c={class:"stat-val"},Sc={class:"stat-card"},Tc={class:"stat-val",style:{color:"var(--teal)"}},Mc={class:"stat-card"},Ec={class:"stat-val",style:{color:"var(--red)"}},Ac={class:"stat-card"},Oc={class:"stat-val"},Pc={class:"toolbar"},Ic={class:"list"},Fc=["onClick"],Lc={class:"comp-header"},Rc={class:"mono bold",style:{"font-size":"12px"}},Nc={class:"muted text-sm",style:{"margin-left":"4px"}},Dc={class:"comp-meta"},jc={key:0,class:"muted text-sm"},Hc={key:1,class:"badge badge-warn"},Bc={key:2,class:"badge badge-warn"},Vc={key:3,class:"badge badge-err"},Uc={key:4,class:"badge badge-ok"},Kc={key:5,class:"badge badge-gray"},Wc={key:0,class:"leak-banner"},zc={class:"mono text-sm",style:{"min-width":"90px",color:"var(--text2)"}},qc={class:"mono text-sm muted",style:{flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Gc={class:"badge badge-info text-xs"},Jc={class:"muted text-sm",style:{"min-width":"110px"}},Yc={key:0,class:"muted text-sm",style:{padding:"16px 0"}},Xc=wt({__name:"ComposableTracker",setup(e){const t=ae([{id:"1",name:"useAuth",component:"App.vue",instances:1,status:"mounted",leak:!1,refs:[{key:"user",type:"ref",val:'{ id: "u_9x3k", role: "admin" }'},{key:"isLoggedIn",type:"computed",val:"true"}],watchers:1,intervals:0,lifecycle:{onMounted:!0,onUnmounted:!0,watchersCleaned:!0,intervalsCleaned:!0}},{id:"2",name:"useWebSocket",component:"Dashboard.vue",instances:1,status:"unmounted",leak:!0,leakReason:"socket.close() never called — 2 watchers still running after unmount",refs:[{key:"socket",type:"ref",val:"WebSocket { readyState: 1 }"},{key:"messages",type:"ref",val:"Array(47)"}],watchers:2,intervals:0,lifecycle:{onMounted:!0,onUnmounted:!1,watchersCleaned:!1,intervalsCleaned:!0}},{id:"3",name:"usePoller",component:"StockTicker.vue",instances:2,status:"unmounted",leak:!0,leakReason:"setInterval #37 never cleared — still firing every 2000ms",refs:[{key:"data",type:"ref",val:"{ price: 142.5 }"},{key:"intervalId",type:"ref",val:"37"}],watchers:0,intervals:1,lifecycle:{onMounted:!0,onUnmounted:!1,watchersCleaned:!0,intervalsCleaned:!1}},{id:"4",name:"useCart",component:"CartDrawer.vue",instances:1,status:"mounted",leak:!1,refs:[{key:"items",type:"ref",val:"Array(3)"},{key:"total",type:"computed",val:"248.50"}],watchers:0,intervals:0,lifecycle:{onMounted:!1,onUnmounted:!1,watchersCleaned:!0,intervalsCleaned:!0}},{id:"5",name:"useBreakpoint",component:"Layout.vue",instances:1,status:"mounted",leak:!1,refs:[{key:"isMobile",type:"computed",val:"false"},{key:"width",type:"ref",val:"1280"}],watchers:0,intervals:0,lifecycle:{onMounted:!0,onUnmounted:!0,watchersCleaned:!0,intervalsCleaned:!0}},{id:"6",name:"useIntersectionObserver",component:"LazyImage.vue",instances:4,status:"mounted",leak:!1,refs:[{key:"isVisible",type:"ref",val:"true"}],watchers:0,intervals:0,lifecycle:{onMounted:!0,onUnmounted:!0,watchersCleaned:!0,intervalsCleaned:!0}}]),s=ae("all"),n=ae(""),r=ae(null),o=fe(()=>({mounted:t.value.filter(a=>a.status==="mounted").length,leaks:t.value.filter(a=>a.leak).length})),i=fe(()=>t.value.filter(a=>{if(s.value==="leak"&&!a.leak||s.value==="unmounted"&&a.status!=="unmounted")return!1;const p=n.value.toLowerCase();return!(p&&!a.name.toLowerCase().includes(p)&&!a.component.toLowerCase().includes(p))}));function l(a){return[{label:"onMounted",ok:a.lifecycle.onMounted,status:a.lifecycle.onMounted?"registered":"not used"},{label:"onUnmounted",ok:a.lifecycle.onUnmounted,status:a.lifecycle.onUnmounted?"registered":"missing"},{label:"watchers cleaned",ok:a.lifecycle.watchersCleaned,status:a.lifecycle.watchersCleaned?"all stopped":"NOT stopped"},{label:"intervals cleared",ok:a.lifecycle.intervalsCleaned,status:a.lifecycle.intervalsCleaned?"all cleared":"NOT cleared"}]}return(a,p)=>(O(),L("div",wc,[c("div",Cc,[c("div",kc,[p[5]||(p[5]=c("div",{class:"stat-label"},"total",-1)),c("div",$c,M(t.value.length),1)]),c("div",Sc,[p[6]||(p[6]=c("div",{class:"stat-label"},"mounted",-1)),c("div",Tc,M(o.value.mounted),1)]),c("div",Mc,[p[7]||(p[7]=c("div",{class:"stat-label"},"leaks",-1)),c("div",Ec,M(o.value.leaks),1)]),c("div",Ac,[p[8]||(p[8]=c("div",{class:"stat-label"},"instances",-1)),c("div",Oc,M(t.value.reduce((u,g)=>u+g.instances,0)),1)])]),c("div",Pc,[c("button",{class:q({active:s.value==="all"}),onClick:p[0]||(p[0]=u=>s.value="all")},"all",2),c("button",{class:q({"danger-active":s.value==="leak"}),onClick:p[1]||(p[1]=u=>s.value="leak")},"leaks only",2),c("button",{class:q({active:s.value==="unmounted"}),onClick:p[2]||(p[2]=u=>s.value="unmounted")},"unmounted",2),Es(c("input",{"onUpdate:modelValue":p[3]||(p[3]=u=>n.value=u),type:"search",placeholder:"search composable or component…",style:{"max-width":"220px","margin-left":"auto"}},null,512),[[Rs,n.value]])]),c("div",Ic,[(O(!0),L(ee,null,be(i.value,u=>(O(),L("div",{key:u.id,class:q(["comp-card",{leak:u.leak,expanded:r.value===u.id}]),onClick:g=>r.value=r.value===u.id?null:u.id},[c("div",Lc,[c("span",Rc,M(u.name),1),c("span",Nc,M(u.component),1),c("div",Dc,[u.instances>1?(O(),L("span",jc,M(u.instances)+"×",1)):he("",!0),u.watchers>0&&!u.leak?(O(),L("span",Hc,M(u.watchers)+" watcher"+M(u.watchers>1?"s":""),1)):he("",!0),u.intervals>0&&!u.leak?(O(),L("span",Bc,M(u.intervals)+" interval"+M(u.intervals>1?"s":""),1)):he("",!0),u.leak?(O(),L("span",Vc,"leak detected")):u.status==="mounted"?(O(),L("span",Uc,"mounted")):(O(),L("span",Kc,"unmounted"))])]),r.value===u.id?(O(),L("div",{key:0,class:"comp-detail",onClick:p[4]||(p[4]=ia(()=>{},["stop"]))},[u.leak?(O(),L("div",Wc,M(u.leakReason),1)):he("",!0),p[9]||(p[9]=c("div",{class:"section-label"},"reactive state",-1)),(O(!0),L(ee,null,be(u.refs,g=>(O(),L("div",{key:g.key,class:"ref-row"},[c("span",zc,M(g.key),1),c("span",qc,M(g.val),1),c("span",Gc,M(g.type),1)]))),128)),p[10]||(p[10]=c("div",{class:"section-label",style:{"margin-top":"8px"}},"lifecycle",-1)),(O(!0),L(ee,null,be(l(u),g=>(O(),L("div",{key:g.label,class:"lc-row"},[c("span",{class:"lc-dot",style:ve({background:g.ok?"var(--teal)":"var(--red)"})},null,4),c("span",Jc,M(g.label),1),c("span",{class:"text-sm",style:ve({color:g.ok?"var(--teal)":"var(--red)"})},M(g.status),5)]))),128))])):he("",!0)],10,Fc))),128)),i.value.length?he("",!0):(O(),L("div",Yc,"no composables match"))])]))}}),Zc=Lt(Xc,[["__scopeId","data-v-b2045995"]]),Qc={class:"view"},eu={class:"controls"},tu={class:"mode-group"},su={class:"threshold-group"},nu={class:"mono text-sm"},ru={class:"stats-row"},ou={class:"stat-card"},iu={class:"stat-val"},lu={class:"stat-card"},au={class:"stat-val"},cu={class:"stat-card"},uu={class:"stat-val",style:{color:"var(--red)"}},fu={class:"stat-card"},du={class:"stat-val"},pu={class:"split"},hu={class:"page-frame"},vu={class:"sidebar"},gu={class:"detail-header"},mu={class:"mono bold",style:{"font-size":"12px"}},_u={class:"meta-grid"},yu={class:"mono text-sm"},bu={class:"mono text-sm"},xu={class:"mono text-sm muted"},wu={key:0,class:"muted text-sm"},Cu={key:1,class:"detail-empty"},ku=wt({__name:"RenderHeatmap",setup(e){const t=wt({name:"ComponentBlock",props:{node:Object,mode:String,threshold:Number,hotOnly:Boolean,selected:String},emits:["select"],setup(_,{emit:m}){function w(U){return _.mode==="count"?U.renders:U.avgMs}function I(){let U=1;function ie(j){j.forEach(K=>{const Z=w(K);Z>U&&(U=Z),ie(K.children)})}return ie([_.node]),Math.max(U,_.mode==="count"?40:20)}function W(U,ie){const j=Math.min(U/ie,1);return j<.25?{bg:"#EAF3DE",text:"#27500A",border:"#97C459"}:j<.55?{bg:"#FAEEDA",text:"#633806",border:"#EF9F27"}:j<.8?{bg:"#FAECE7",text:"#712B13",border:"#D85A30"}:{bg:"#FCEBEB",text:"#791F1F",border:"#E24B4A"}}function oe(U){return(_.mode==="count"?U.renders:U.avgMs)>=_.threshold}return()=>{const U=_.node;if(_.hotOnly&&!oe(U)&&!U.children.some(ce=>(_.mode==="count"?ce.renders:ce.avgMs)>=_.threshold))return null;const ie=I(),j=w(U),K=W(j,ie),Z=_.selected===U.id,F=_.mode==="count"?"renders":"ms avg",te=_.mode==="count"?String(j):j.toFixed(1)+"ms";return mt("div",{style:{background:K.bg,border:Z?`2px solid ${K.border}`:`1px solid ${K.border}`,borderRadius:"6px",padding:"6px 9px",marginBottom:"5px",cursor:"pointer"},onClick:()=>m("select",U)},[mt("div",{style:{display:"flex",alignItems:"center",gap:"6px"}},[mt("span",{style:{fontFamily:"var(--mono)",fontSize:"11px",fontWeight:"500",color:K.text}},U.label),mt("span",{style:{fontFamily:"var(--mono)",fontSize:"10px",color:K.text,opacity:"0.7",marginLeft:"auto"}},`${te} ${F}`)]),U.children.length?mt("div",{style:{marginLeft:"10px",borderLeft:`1.5px solid ${K.border}40`,paddingLeft:"8px",marginTop:"5px"}},U.children.map(ce=>mt(t,{node:ce,mode:_.mode,threshold:_.threshold,hotOnly:_.hotOnly,selected:_.selected,onSelect:Ie=>m("select",Ie)}))):null])}}}),s=ae([{id:"NavBar",label:"NavBar.vue",file:"components/NavBar.vue",renders:3,avgMs:1.2,triggers:["props.user changed"],children:[]},{id:"Sidebar",label:"Sidebar.vue",file:"components/Sidebar.vue",renders:2,avgMs:.8,triggers:["parent re-render"],children:[]},{id:"ProductGrid",label:"ProductGrid.vue",file:"components/ProductGrid.vue",renders:18,avgMs:14.3,triggers:["store: products updated","props.filter changed","parent re-render (×16)"],children:[{id:"ProductCard",label:"ProductCard.vue ×12",file:"components/ProductCard.vue",renders:24,avgMs:3.1,triggers:["parent re-render (×24)"],children:[]},{id:"PriceTag",label:"PriceTag.vue ×12",file:"components/PriceTag.vue",renders:36,avgMs:.4,triggers:["props.price changed (×36)"],children:[]}]},{id:"CartSummary",label:"CartSummary.vue",file:"components/CartSummary.vue",renders:9,avgMs:5.7,triggers:["store: cart updated (×9)"],children:[{id:"CartItem",label:"CartItem.vue ×3",file:"components/CartItem.vue",renders:12,avgMs:1.8,triggers:["parent re-render (×12)"],children:[]}]},{id:"FilterBar",label:"FilterBar.vue",file:"components/FilterBar.vue",renders:7,avgMs:2.1,triggers:["store: filters changed (×7)"],children:[]},{id:"Footer",label:"Footer.vue",file:"components/Footer.vue",renders:1,avgMs:.3,triggers:["initial mount"],children:[]}]),n=ae("count"),r=ae(5),o=ae(!1),i=ae(!1),l=ae(null);let a=null;const p=fe(()=>s.value),u=fe(()=>{const _=[];function m(w){w.forEach(I=>{_.push(I),m(I.children)})}return m(s.value),_}),g=fe(()=>u.value.reduce((_,m)=>_+m.renders,0)),b=fe(()=>u.value.filter(_=>h(_)).length),v=fe(()=>{const _=u.value.filter(m=>m.avgMs>0);return _.length?(_.reduce((m,w)=>m+w.avgMs,0)/_.length).toFixed(1):"0.0"});function h(_){return(n.value==="count"?_.renders:_.avgMs)>=r.value}function $(){a=setInterval(()=>{i.value||u.value.forEach(_=>{Math.random()<.3&&(_.renders+=Math.floor(Math.random()*3)+1)})},1800)}function D(){i.value=!i.value}return $(),Ps(()=>{a&&clearInterval(a)}),(_,m)=>(O(),L("div",Qc,[c("div",eu,[c("div",tu,[c("button",{class:q({active:n.value==="count"}),onClick:m[0]||(m[0]=w=>n.value="count")},"render count",2),c("button",{class:q({active:n.value==="time"}),onClick:m[1]||(m[1]=w=>n.value="time")},"render time",2)]),c("div",su,[m[6]||(m[6]=c("span",{class:"muted text-sm"},"threshold",-1)),Es(c("input",{"onUpdate:modelValue":m[2]||(m[2]=w=>r.value=w),type:"range",min:"1",max:"30",step:"1",style:{width:"90px"}},null,512),[[Rs,r.value,void 0,{number:!0}]]),c("span",nu,M(r.value)+"+",1)]),c("button",{class:q({active:o.value}),onClick:m[3]||(m[3]=w=>o.value=!o.value)},"hot only",2),c("button",{class:q({active:i.value}),style:{"margin-left":"auto"},onClick:D},M(i.value?"unfreeze":"freeze snapshot"),3)]),c("div",ru,[c("div",ou,[m[7]||(m[7]=c("div",{class:"stat-label"},"components",-1)),c("div",iu,M(u.value.length),1)]),c("div",lu,[m[8]||(m[8]=c("div",{class:"stat-label"},"total renders",-1)),c("div",au,M(g.value),1)]),c("div",cu,[m[9]||(m[9]=c("div",{class:"stat-label"},"hot",-1)),c("div",uu,M(b.value),1)]),c("div",fu,[m[10]||(m[10]=c("div",{class:"stat-label"},"avg time",-1)),c("div",du,M(v.value)+"ms",1)])]),c("div",pu,[c("div",hu,[m[11]||(m[11]=Mo('<div class="legend" data-v-20c086db><div class="swatch-row" data-v-20c086db><span class="swatch" style="background:#eaf3de;" data-v-20c086db></span><span class="swatch" style="background:#97c459;" data-v-20c086db></span><span class="swatch" style="background:#ef9f27;" data-v-20c086db></span><span class="swatch" style="background:#e24b4a;" data-v-20c086db></span></div><span class="muted text-sm" data-v-20c086db>cool → hot</span></div>',1)),(O(!0),L(ee,null,be(p.value,w=>{var I;return O(),_t(kn(t),{key:w.id,node:w,mode:n.value,threshold:r.value,"hot-only":o.value,selected:(I=l.value)==null?void 0:I.id,onSelect:m[4]||(m[4]=W=>l.value=W)},null,8,["node","mode","threshold","hot-only","selected"])}),128))]),c("div",vu,[l.value?(O(),L(ee,{key:0},[c("div",gu,[c("span",mu,M(l.value.label),1),c("button",{onClick:m[5]||(m[5]=w=>l.value=null)},"×")]),c("div",_u,[m[12]||(m[12]=c("span",{class:"muted text-sm"},"renders",-1)),c("span",yu,M(l.value.renders),1),m[13]||(m[13]=c("span",{class:"muted text-sm"},"avg time",-1)),c("span",bu,M(l.value.avgMs.toFixed(1))+"ms",1),m[14]||(m[14]=c("span",{class:"muted text-sm"},"hot?",-1)),c("span",{class:"text-sm",style:ve({color:h(l.value)?"var(--red)":"var(--teal)"})},M(h(l.value)?"yes":"no"),5),m[15]||(m[15]=c("span",{class:"muted text-sm"},"file",-1)),c("span",xu,M(l.value.file),1)]),m[16]||(m[16]=c("div",{class:"section-label"},"triggers",-1)),(O(!0),L(ee,null,be(l.value.triggers,w=>(O(),L("div",{key:w,class:"trigger-item mono text-sm"},M(w),1))),128)),l.value.triggers.length?he("",!0):(O(),L("div",wu,"no triggers recorded"))],64)):(O(),L("div",Cu,"click a component to inspect"))])])]))}}),$u=Lt(ku,[["__scopeId","data-v-20c086db"]]),Su=500;function Tu(){const e=ae([]),t=ae(!1);function s(){var o;(o=window.top)==null||o.postMessage({type:"observatory:request"},"*")}function n(o){var l;if(((l=o.data)==null?void 0:l.type)!=="observatory:snapshot")return;const i=o.data.data;e.value=i.transitions??[],t.value=!0}window.addEventListener("message",n);const r=setInterval(s,Su);return s(),Ps(()=>{window.removeEventListener("message",n),clearInterval(r)}),{transitions:e,connected:t}}const Mu={class:"timeline-root"},Eu={class:"stats-row"},Au={class:"stat-card"},Ou={class:"stat-val"},Pu={class:"stat-card"},Iu={class:"stat-val",style:{color:"var(--purple)"}},Fu={class:"stat-card"},Lu={class:"stat-val",style:{color:"var(--red)"}},Ru={class:"stat-card"},Nu={class:"stat-val"},Du={class:"toolbar"},ju={class:"filter-group"},Hu={class:"content-area"},Bu={class:"data-table"},Vu=["onClick"],Uu={class:"mono",style:{"font-size":"11px","font-weight":"500"}},Ku={class:"mono",style:{"font-size":"11px",color:"var(--text2)"}},Wu={class:"muted",style:{"font-size":"11px"}},zu={class:"bar-cell"},qu={class:"bar-track"},Gu={key:0},Ju={colspan:"6",style:{"text-align":"center",color:"var(--text3)",padding:"24px"}},Yu={key:0,class:"detail-panel"},Xu={class:"panel-header"},Zu={class:"panel-title"},Qu={class:"panel-section"},ef={class:"panel-row"},tf={class:"panel-row"},sf={class:"panel-row"},nf={class:"panel-val mono"},rf={key:0,class:"panel-row"},of={class:"panel-val mono"},lf={class:"panel-section"},af={class:"panel-row"},cf={class:"panel-val mono"},uf={class:"panel-row"},ff={class:"panel-val mono"},df={class:"panel-row"},pf={class:"panel-val mono",style:{"font-weight":"500"}},hf={class:"panel-section"},vf={class:"panel-row"},gf={class:"panel-row"},mf={key:0,class:"cancel-notice"},_f={key:1,class:"active-notice"},yf=wt({__name:"TransitionTimeline",setup(e){const{transitions:t,connected:s}=Tu(),n=ae("all"),r=ae(""),o=ae(null),i=fe(()=>{let v=t.value;if(r.value){const h=r.value.toLowerCase();v=v.filter($=>$.transitionName.toLowerCase().includes(h)||$.parentComponent.toLowerCase().includes(h))}return n.value==="cancelled"?v=v.filter(h=>h.cancelled||h.phase==="interrupted"):n.value==="active"?v=v.filter(h=>h.phase==="entering"||h.phase==="leaving"):n.value==="completed"&&(v=v.filter(h=>h.phase==="entered"||h.phase==="left")),v}),l=fe(()=>({total:t.value.length,active:t.value.filter(v=>v.phase==="entering"||v.phase==="leaving").length,cancelled:t.value.filter(v=>v.cancelled||v.phase==="interrupted").length,avgMs:(()=>{const v=t.value.filter(h=>h.durationMs!==void 0);return v.length?Math.round(v.reduce((h,$)=>h+($.durationMs??0),0)/v.length):0})()})),a=fe(()=>{const v=i.value;if(!v.length)return[];const h=Math.min(...v.map(_=>_.startTime)),$=Math.max(...v.map(_=>_.endTime??_.startTime+400)),D=Math.max($-h,1);return v.map(_=>({left:(_.startTime-h)/D*100,width:((_.endTime??_.startTime+80)-_.startTime)/D*100}))});function p(v,h){return v==="entering"||v==="leaving"?"#7f77dd":v==="entered"?"#1d9e75":v==="left"?"#378add":v==="enter-cancelled"||v==="leave-cancelled"?"#e24b4a":v==="interrupted"?"#e09a3a":"#888"}function u(v){return v==="entering"||v==="leaving"?"badge-purple":v==="entered"||v==="left"?"badge-ok":v.includes("cancelled")?"badge-err":v==="interrupted"?"badge-warn":"badge-gray"}function g(v){return v.appear?"✦ appear":v.direction==="enter"?"→ enter":"← leave"}function b(v){return v.appear?"var(--amber)":v.direction==="enter"?"var(--teal)":"var(--blue)"}return(v,h)=>(O(),L("div",Mu,[c("div",Eu,[c("div",Au,[c("div",Ou,M(l.value.total),1),h[6]||(h[6]=c("div",{class:"stat-label"},"total",-1))]),c("div",Pu,[c("div",Iu,M(l.value.active),1),h[7]||(h[7]=c("div",{class:"stat-label"},"active",-1))]),c("div",Fu,[c("div",Lu,M(l.value.cancelled),1),h[8]||(h[8]=c("div",{class:"stat-label"},"cancelled",-1))]),c("div",Ru,[c("div",Nu,[at(M(l.value.avgMs)+" ",1),h[9]||(h[9]=c("span",{class:"stat-unit"},"ms",-1))]),h[10]||(h[10]=c("div",{class:"stat-label"},"avg duration",-1))])]),c("div",Du,[Es(c("input",{"onUpdate:modelValue":h[0]||(h[0]=$=>r.value=$),type:"search",placeholder:"filter by name or component…",class:"search-input"},null,512),[[Rs,r.value]]),c("div",ju,[c("button",{class:q({active:n.value==="all"}),onClick:h[1]||(h[1]=$=>n.value="all")},"All",2),c("button",{class:q({active:n.value==="active"}),onClick:h[2]||(h[2]=$=>n.value="active")},"Active",2),c("button",{class:q({active:n.value==="completed"}),onClick:h[3]||(h[3]=$=>n.value="completed")},"Completed",2),c("button",{class:q({active:n.value==="cancelled","danger-active":n.value==="cancelled"}),onClick:h[4]||(h[4]=$=>n.value="cancelled")}," Cancelled ",2)])]),c("div",Hu,[c("div",{class:q(["table-pane",{"has-panel":o.value}])},[c("table",Bu,[h[11]||(h[11]=c("thead",null,[c("tr",null,[c("th",{style:{width:"110px"}},"NAME"),c("th",{style:{width:"80px"}},"DIR"),c("th",{style:{width:"90px"}},"PHASE"),c("th",{style:{width:"70px"}},"DURATION"),c("th",null,"COMPONENT"),c("th",null,"TIMELINE")])],-1)),c("tbody",null,[(O(!0),L(ee,null,be(i.value,($,D)=>{var _,m,w;return O(),L("tr",{key:$.id,class:q({selected:((_=o.value)==null?void 0:_.id)===$.id}),onClick:I=>{var W;return o.value=((W=o.value)==null?void 0:W.id)===$.id?null:$}},[c("td",null,[c("span",Uu,M($.transitionName),1)]),c("td",null,[c("span",{class:"mono",style:ve([{"font-size":"11px"},{color:b($)}])},M(g($)),5)]),c("td",null,[c("span",{class:q(["badge",u($.phase)])},M($.phase),3)]),c("td",Ku,M($.durationMs!==void 0?$.durationMs+"ms":"—"),1),c("td",Wu,M($.parentComponent),1),c("td",zu,[c("div",qu,[c("div",{class:"bar-fill",style:ve({left:((m=a.value[D])==null?void 0:m.left)+"%",width:Math.max(((w=a.value[D])==null?void 0:w.width)??1,1)+"%",background:p($.phase,$.direction),opacity:$.phase==="entering"||$.phase==="leaving"?"0.55":"1"})},null,4)])])],10,Vu)}),128)),i.value.length?he("",!0):(O(),L("tr",Gu,[c("td",Ju,M(kn(s)?"No transitions recorded yet — trigger one on the page.":"Waiting for connection to the Nuxt app…"),1)]))])])],2),Ce(Rl,{name:"panel-slide"},{default:Jr(()=>[o.value?(O(),L("aside",Yu,[c("div",Xu,[c("span",Zu,M(o.value.transitionName),1),c("button",{class:"close-btn",onClick:h[5]||(h[5]=$=>o.value=null)},"✕")]),c("div",Qu,[c("div",ef,[h[12]||(h[12]=c("span",{class:"panel-key"},"Direction",-1)),c("span",{class:"panel-val",style:ve({color:b(o.value)})},M(g(o.value)),5)]),c("div",tf,[h[13]||(h[13]=c("span",{class:"panel-key"},"Phase",-1)),c("span",{class:q(["badge",u(o.value.phase)])},M(o.value.phase),3)]),c("div",sf,[h[14]||(h[14]=c("span",{class:"panel-key"},"Component",-1)),c("span",nf,M(o.value.parentComponent),1)]),o.value.mode?(O(),L("div",rf,[h[15]||(h[15]=c("span",{class:"panel-key"},"Mode",-1)),c("span",of,M(o.value.mode),1)])):he("",!0)]),c("div",lf,[h[19]||(h[19]=c("div",{class:"panel-section-title"},"Timing",-1)),c("div",af,[h[16]||(h[16]=c("span",{class:"panel-key"},"Start",-1)),c("span",cf,M(o.value.startTime.toFixed(2))+"ms",1)]),c("div",uf,[h[17]||(h[17]=c("span",{class:"panel-key"},"End",-1)),c("span",ff,M(o.value.endTime!==void 0?o.value.endTime.toFixed(2)+"ms":"—"),1)]),c("div",df,[h[18]||(h[18]=c("span",{class:"panel-key"},"Duration",-1)),c("span",pf,M(o.value.durationMs!==void 0?o.value.durationMs+"ms":o.value.phase==="interrupted"?"interrupted":"in progress"),1)])]),c("div",hf,[h[22]||(h[22]=c("div",{class:"panel-section-title"},"Flags",-1)),c("div",vf,[h[20]||(h[20]=c("span",{class:"panel-key"},"Appear",-1)),c("span",{class:"panel-val",style:ve({color:o.value.appear?"var(--amber)":"var(--text3)"})},M(o.value.appear?"yes":"no"),5)]),c("div",gf,[h[21]||(h[21]=c("span",{class:"panel-key"},"Cancelled",-1)),c("span",{class:"panel-val",style:ve({color:o.value.cancelled?"var(--red)":"var(--text3)"})},M(o.value.cancelled?"yes":"no"),5)])]),o.value.cancelled?(O(),L("div",mf,[...h[23]||(h[23]=[at(" This transition was cancelled mid-flight. The element may be stuck in a partial animation state if the interruption was not handled with ",-1),c("code",null,"onEnterCancelled",-1),at(" / ",-1),c("code",null,"onLeaveCancelled",-1),at(" . ",-1)])])):he("",!0),o.value.phase==="entering"||o.value.phase==="leaving"?(O(),L("div",_f,[...h[24]||(h[24]=[at(" Transition is currently in progress. If it stays in this state longer than expected, the ",-1),c("code",null,"done()",-1),at(" callback may not be getting called (JS-mode transition stall). ",-1)])])):he("",!0)])):he("",!0)]),_:1})])]))}}),bf=Lt(yf,[["__scopeId","data-v-7468ff50"]]),xf={id:"app-root"},wf={class:"tabbar"},Cf=["onClick"],kf={class:"tab-icon"},$f={class:"tab-content"},Sf=wt({__name:"App",setup(e){const t={fetch:"fetch",provide:"provide",composables:"composable",heatmap:"heatmap",transitions:"transitions"},s=window.location.pathname.split("/").filter(Boolean).pop()??"",n=ae(t[s]??"fetch"),r=[{id:"fetch",label:"useFetch",icon:"⬡"},{id:"provide",label:"provide/inject",icon:"⬡"},{id:"composable",label:"Composables",icon:"⬡"},{id:"heatmap",label:"Heatmap",icon:"⬡"},{id:"transitions",label:"Transitions",icon:"⬡"}];return(o,i)=>(O(),L("div",xf,[c("nav",wf,[i[0]||(i[0]=c("div",{class:"tabbar-brand"},"observatory",-1)),(O(),L(ee,null,be(r,l=>c("button",{key:l.id,class:q(["tab-btn",{active:n.value===l.id}]),onClick:a=>n.value=l.id},[c("span",kf,M(l.icon),1),at(" "+M(l.label),1)],10,Cf)),64))]),c("main",$f,[n.value==="fetch"?(O(),_t(qa,{key:0})):n.value==="provide"?(O(),_t(xc,{key:1})):n.value==="composable"?(O(),_t(Zc,{key:2})):n.value==="heatmap"?(O(),_t($u,{key:3})):n.value==="transitions"?(O(),_t(bf,{key:4})):he("",!0)])]))}}),Tf=Lt(Sf,[["__scopeId","data-v-08e3ddb5"]]);ca(Tf).mount("#app");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.view[data-v-00b18b03]{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:12px;gap:10px}.stats-row[data-v-00b18b03]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;flex-shrink:0}.toolbar[data-v-00b18b03]{display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap}.split[data-v-00b18b03]{display:flex;gap:12px;flex:1;overflow:hidden;min-height:0}.table-wrap[data-v-00b18b03]{flex:1;overflow:auto;border:.5px solid var(--border);border-radius:var(--radius-lg)}.detail-panel[data-v-00b18b03]{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;overflow:auto;border:.5px solid var(--border);border-radius:var(--radius-lg);padding:12px;background:var(--bg3)}.detail-empty[data-v-00b18b03]{width:280px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:12px;border:.5px dashed var(--border);border-radius:var(--radius-lg)}.detail-header[data-v-00b18b03]{display:flex;align-items:center;justify-content:space-between}.meta-grid[data-v-00b18b03]{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:11px}.section-label[data-v-00b18b03]{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.4px;color:var(--text3);margin-top:6px}.payload-box[data-v-00b18b03]{font-family:var(--mono);font-size:11px;color:var(--text2);background:var(--bg2);border-radius:var(--radius);padding:8px 10px;overflow:auto;white-space:pre;max-height:160px}.waterfall[data-v-00b18b03]{flex-shrink:0;background:var(--bg3);border:.5px solid var(--border);border-radius:var(--radius-lg);padding:10px 12px}.wf-row[data-v-00b18b03]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.wf-track[data-v-00b18b03]{flex:1;position:relative;height:8px;background:var(--bg2);border-radius:2px;overflow:hidden}.wf-bar[data-v-00b18b03]{position:absolute;top:0;height:100%;border-radius:2px;opacity:.8}.view[data-v-f3905bc9]{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:12px;gap:10px}.toolbar[data-v-f3905bc9]{display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap}.split[data-v-f3905bc9]{display:flex;gap:12px;flex:1;overflow:hidden;min-height:0}.graph-area[data-v-f3905bc9]{flex:1;overflow:auto;border:.5px solid var(--border);border-radius:var(--radius-lg);padding:12px;background:var(--bg3)}.legend[data-v-f3905bc9]{display:flex;align-items:center;gap:12px;font-size:11px;color:var(--text2);margin-bottom:12px}.dot[data-v-f3905bc9]{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:2px}.canvas-wrap[data-v-f3905bc9]{position:relative}.edges-svg[data-v-f3905bc9]{position:absolute;top:0;left:0;pointer-events:none}.edge[data-v-f3905bc9]{stroke:var(--border);stroke-width:1.5}.graph-node[data-v-f3905bc9]{position:absolute;display:flex;align-items:center;gap:7px;padding:0 10px;height:32px;border-radius:var(--radius);border:.5px solid var(--border);background:var(--bg3);cursor:pointer;transition:border-color .12s,background .12s;overflow:hidden;box-sizing:border-box;white-space:nowrap}.graph-node[data-v-f3905bc9]:hover{border-color:var(--text3)}.graph-node.is-selected[data-v-f3905bc9]{border-color:var(--node-color);background:color-mix(in srgb,var(--node-color) 8%,transparent)}.graph-node.is-dimmed[data-v-f3905bc9]{opacity:.2;pointer-events:none}.node-dot[data-v-f3905bc9]{width:7px;height:7px;border-radius:50%;flex-shrink:0}.node-label[data-v-f3905bc9]{font-size:11px;flex:1;overflow:hidden;text-overflow:ellipsis}.badge-xs[data-v-f3905bc9]{font-size:9px;padding:1px 4px}.detail-panel[data-v-f3905bc9]{width:280px;flex-shrink:0;overflow:auto;border:.5px solid var(--border);border-radius:var(--radius-lg);padding:12px;background:var(--bg3);display:flex;flex-direction:column;gap:4px}.detail-empty[data-v-f3905bc9]{width:280px;display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:12px;border:.5px dashed var(--border);border-radius:var(--radius-lg);flex-shrink:0}.detail-header[data-v-f3905bc9]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.section-label[data-v-f3905bc9]{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.4px;color:var(--text3);margin:8px 0 5px}.provide-row[data-v-f3905bc9],.inject-row[data-v-f3905bc9]{display:flex;align-items:center;gap:8px;padding:5px 8px;background:var(--bg2);border-radius:var(--radius);margin-bottom:3px}.inject-miss[data-v-f3905bc9]{background:#e24b4a14}.view[data-v-b2045995]{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:12px;gap:10px}.stats-row[data-v-b2045995]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;flex-shrink:0}.toolbar[data-v-b2045995]{display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap}.list[data-v-b2045995]{flex:1;overflow:auto;display:flex;flex-direction:column;gap:6px}.comp-card[data-v-b2045995]{background:var(--bg3);border:.5px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer}.comp-card[data-v-b2045995]:hover{border-color:var(--text3)}.comp-card.leak[data-v-b2045995]{border-left:2px solid var(--red);border-radius:0 var(--radius-lg) var(--radius-lg) 0}.comp-card.expanded[data-v-b2045995]{border-color:var(--purple)}.comp-header[data-v-b2045995]{display:flex;align-items:center;gap:8px;padding:9px 13px}.comp-meta[data-v-b2045995]{display:flex;align-items:center;gap:6px;margin-left:auto}.comp-detail[data-v-b2045995]{border-top:.5px solid var(--border);padding:10px 13px}.leak-banner[data-v-b2045995]{background:#e24b4a1a;border-radius:var(--radius);padding:7px 10px;font-size:12px;color:var(--red);margin-bottom:8px}.section-label[data-v-b2045995]{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.4px;color:var(--text3);margin-bottom:5px}.ref-row[data-v-b2045995]{display:flex;align-items:center;gap:8px;padding:5px 8px;background:var(--bg2);border-radius:var(--radius);margin-bottom:3px}.lc-row[data-v-b2045995]{display:flex;align-items:center;gap:8px;padding:4px 0}.lc-dot[data-v-b2045995]{width:7px;height:7px;border-radius:50%;flex-shrink:0}.view[data-v-20c086db]{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:12px;gap:10px}.controls[data-v-20c086db]{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}.mode-group[data-v-20c086db]{display:flex;gap:2px}.threshold-group[data-v-20c086db]{display:flex;align-items:center;gap:6px}.stats-row[data-v-20c086db]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;flex-shrink:0}.split[data-v-20c086db]{display:flex;gap:12px;flex:1;overflow:hidden;min-height:0}.page-frame[data-v-20c086db]{flex:1;overflow:auto;border:.5px solid var(--border);border-radius:var(--radius-lg);padding:12px;background:var(--bg3)}.legend[data-v-20c086db]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.swatch-row[data-v-20c086db]{display:flex;gap:2px}.swatch[data-v-20c086db]{width:16px;height:8px;border-radius:2px}.sidebar[data-v-20c086db]{width:260px;flex-shrink:0;overflow:auto;border:.5px solid var(--border);border-radius:var(--radius-lg);padding:12px;background:var(--bg3);display:flex;flex-direction:column;gap:6px}.detail-empty[data-v-20c086db]{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text3);font-size:12px}.detail-header[data-v-20c086db]{display:flex;align-items:center;justify-content:space-between}.meta-grid[data-v-20c086db]{display:grid;grid-template-columns:auto 1fr;gap:4px 12px}.section-label[data-v-20c086db]{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.4px;color:var(--text3);margin-top:8px;margin-bottom:4px}.trigger-item[data-v-20c086db]{background:var(--bg2);border-radius:var(--radius);padding:4px 8px;margin-bottom:3px;color:var(--text2)}.timeline-root[data-v-7468ff50]{display:flex;flex-direction:column;height:100%;overflow:hidden}.stats-row[data-v-7468ff50]{display:flex;gap:10px;padding:12px 14px 0;flex-shrink:0}.stat-card[data-v-7468ff50]{background:var(--bg2);border:.5px solid var(--border);border-radius:var(--radius);padding:8px 14px;min-width:72px;text-align:center}.stat-val[data-v-7468ff50]{font-size:20px;font-weight:600;font-family:var(--mono);line-height:1.1}.stat-unit[data-v-7468ff50]{font-size:12px;opacity:.6;margin-left:1px}.stat-label[data-v-7468ff50]{font-size:10px;color:var(--text3);margin-top:2px;text-transform:uppercase;letter-spacing:.4px}.toolbar[data-v-7468ff50]{display:flex;align-items:center;gap:8px;padding:10px 14px;flex-shrink:0;border-bottom:.5px solid var(--border)}.search-input[data-v-7468ff50]{flex:1;max-width:260px}.filter-group[data-v-7468ff50]{display:flex;gap:4px}.content-area[data-v-7468ff50]{display:flex;flex:1;overflow:hidden;min-height:0}.table-pane[data-v-7468ff50]{flex:1;overflow:hidden auto;min-width:0}.bar-cell[data-v-7468ff50]{width:200px;padding:4px 8px}.bar-track[data-v-7468ff50]{position:relative;height:8px;background:var(--bg2);border-radius:4px;overflow:hidden}.bar-fill[data-v-7468ff50]{position:absolute;top:0;height:100%;min-width:3px;border-radius:4px;transition:width .15s}.detail-panel[data-v-7468ff50]{width:260px;flex-shrink:0;border-left:.5px solid var(--border);overflow-y:auto;background:var(--bg3);padding:0 0 16px}.panel-header[data-v-7468ff50]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 8px;border-bottom:.5px solid var(--border);position:sticky;top:0;background:var(--bg3);z-index:1}.panel-title[data-v-7468ff50]{font-family:var(--mono);font-size:13px;font-weight:500}.close-btn[data-v-7468ff50]{border:none;background:transparent;color:var(--text3);font-size:11px;padding:2px 6px;cursor:pointer}.panel-section[data-v-7468ff50]{padding:10px 14px 6px;border-bottom:.5px solid var(--border)}.panel-section-title[data-v-7468ff50]{font-size:10px;font-weight:500;color:var(--text3);text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px}.panel-row[data-v-7468ff50]{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 0;font-size:12px}.panel-key[data-v-7468ff50]{color:var(--text3);flex-shrink:0}.panel-val[data-v-7468ff50]{color:var(--text);text-align:right;word-break:break-all}.cancel-notice[data-v-7468ff50],.active-notice[data-v-7468ff50]{margin:10px 14px 0;font-size:11px;line-height:1.6;padding:8px 10px;border-radius:var(--radius)}.cancel-notice[data-v-7468ff50]{background:#e24b4a1a;color:var(--red);border:.5px solid rgb(226 75 74 / 30%)}.active-notice[data-v-7468ff50]{background:#7f77dd1a;color:var(--purple);border:.5px solid rgb(127 119 221 / 30%)}code[data-v-7468ff50]{font-family:var(--mono);font-size:10px;background:#00000026;padding:1px 4px;border-radius:3px}.panel-slide-enter-active[data-v-7468ff50],.panel-slide-leave-active[data-v-7468ff50]{transition:transform .18s ease,opacity .18s ease}.panel-slide-enter-from[data-v-7468ff50],.panel-slide-leave-to[data-v-7468ff50]{transform:translate(12px);opacity:0}#app-root[data-v-08e3ddb5]{display:flex;flex-direction:column;height:100vh;overflow:hidden}.tabbar[data-v-08e3ddb5]{display:flex;align-items:center;gap:2px;padding:8px 12px 0;border-bottom:.5px solid var(--border);background:var(--bg3);flex-shrink:0}.tabbar-brand[data-v-08e3ddb5]{font-size:11px;font-weight:500;color:var(--purple);letter-spacing:.5px;margin-right:12px;padding-bottom:8px}.tab-btn[data-v-08e3ddb5]{border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--text3);font-size:12px;padding:6px 12px 8px;cursor:pointer;transition:color .12s,border-color .12s;display:flex;align-items:center;gap:5px}.tab-btn[data-v-08e3ddb5]:hover{color:var(--text);background:transparent}.tab-btn.active[data-v-08e3ddb5]{color:var(--purple);border-bottom-color:var(--purple)}.tab-icon[data-v-08e3ddb5]{font-size:10px;opacity:.6}.tab-content[data-v-08e3ddb5]{flex:1;overflow:hidden;display:flex;flex-direction:column}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:13px;line-height:1.5}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}button{font-family:var(--font);font-size:12px;cursor:pointer;border:.5px solid var(--border);background:transparent;color:var(--text2);padding:4px 10px;border-radius:var(--radius);transition:background .12s}button:hover{background:var(--bg2)}button:active{transform:scale(.98)}button.active{background:#7f77dd26;color:var(--purple);border-color:var(--purple)}button.danger-active{background:#e24b4a1f;color:var(--red);border-color:var(--red)}button.success-active{background:#1d9e751f;color:var(--teal);border-color:var(--teal)}input[type=text],input[type=search]{font-family:var(--font);font-size:12px;border:.5px solid var(--border);background:var(--bg2);color:var(--text);padding:5px 10px;border-radius:var(--radius);outline:none;width:100%}input[type=text]:focus,input[type=search]:focus{border-color:var(--purple);box-shadow:0 0 0 2px #7f77dd33}input[type=range]{accent-color:var(--purple);cursor:pointer}.mono{font-family:var(--mono)}.muted{color:var(--text3)}.text-sm{font-size:11px}.text-xs{font-size:10px}.bold{font-weight:500}.badge{display:inline-block;font-size:10px;font-weight:500;padding:2px 7px;border-radius:99px;white-space:nowrap}.badge-ok{background:#1d9e7526;color:var(--teal)}.badge-err{background:#e24b4a1f;color:var(--red)}.badge-warn{background:#ef9f2726;color:var(--amber)}.badge-info{background:#378add1f;color:var(--blue)}.badge-gray{background:var(--bg2);color:var(--text3);border:.5px solid var(--border)}.badge-purple{background:#7f77dd26;color:var(--purple)}.card{background:var(--bg3);border:.5px solid var(--border);border-radius:var(--radius-lg);padding:12px 14px}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{text-align:left;font-size:10px;font-weight:500;color:var(--text3);padding:6px 8px;border-bottom:.5px solid var(--border);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}.data-table td{padding:8px;border-bottom:.5px solid var(--border);color:var(--text);vertical-align:middle}.data-table tr:hover td{background:var(--bg2);cursor:pointer}.data-table tr.selected td{background:#7f77dd14}.stat-card{background:var(--bg2);border-radius:var(--radius);padding:10px 12px}.stat-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.4px;margin-bottom:3px}.stat-val{font-size:20px;font-weight:500}.flex{display:flex}.items-center{align-items:center}.gap-2{gap:8px}.gap-3{gap:12px}.flex-1{flex:1}.overflow-auto{overflow:auto}.p-3{padding:12px}.p-4{padding:16px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mt-2{margin-top:8px}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Observatory DevTools</title>
|
|
7
|
+
<style>
|
|
8
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
9
|
+
:root {
|
|
10
|
+
--font: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
11
|
+
--mono: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
|
|
12
|
+
--bg: #f8f7f4;
|
|
13
|
+
--bg2: #eeecea;
|
|
14
|
+
--bg3: #ffffff;
|
|
15
|
+
--border: rgba(0,0,0,0.1);
|
|
16
|
+
--text: #1a1a18;
|
|
17
|
+
--text2: #5f5e5a;
|
|
18
|
+
--text3: #888780;
|
|
19
|
+
--purple: #7f77dd;
|
|
20
|
+
--teal: #1d9e75;
|
|
21
|
+
--amber: #ef9f27;
|
|
22
|
+
--red: #e24b4a;
|
|
23
|
+
--blue: #378add;
|
|
24
|
+
--radius: 8px;
|
|
25
|
+
--radius-lg: 12px;
|
|
26
|
+
}
|
|
27
|
+
@media (prefers-color-scheme: dark) {
|
|
28
|
+
:root {
|
|
29
|
+
--bg: #1a1a18;
|
|
30
|
+
--bg2: #242422;
|
|
31
|
+
--bg3: #2c2c2a;
|
|
32
|
+
--border: rgba(255,255,255,0.1);
|
|
33
|
+
--text: #e8e6e0;
|
|
34
|
+
--text2: #b4b2a9;
|
|
35
|
+
--text3: #888780;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
body { font-family: var(--font); background: var(--bg); color: var(--text); font-size: 13px; }
|
|
39
|
+
#app { height: 100vh; display: flex; flex-direction: column; }
|
|
40
|
+
</style>
|
|
41
|
+
<script type="module" crossorigin src="/assets/index-C76d764s.js"></script>
|
|
42
|
+
<link rel="stylesheet" crossorigin href="/assets/index-yIuOV1_N.css">
|
|
43
|
+
</head>
|
|
44
|
+
<body>
|
|
45
|
+
<div id="app"></div>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|