draw-table-vue 0.2.0 → 0.3.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 CHANGED
@@ -1,17 +1,18 @@
1
1
  # draw-table-vue
2
2
 
3
- A high-performance, customizable table component for Vue 3 based on HTML5 Canvas. Designed for large datasets and complex layouts.
3
+ A high-performance, highly customizable table component for Vue 3 built on HTML5 Canvas. Perfect for handling large datasets (100,000+ rows) with complex features like multi-level headers, fixed columns, and custom cell rendering.
4
4
 
5
- ## ✨ Features
5
+ ## ✨ Key Features
6
6
 
7
- - 🚀 **High Performance**: Renders thousands of rows with ease using HTML5 Canvas.
8
- - 🛠 **Customizable**: Support for custom cell and header rendering using Vue VNodes.
9
- - 📦 **Rich Cell Types**: Built-in support for text, image, checkbox, radio, switch, tags, and color-picker.
10
- - 🔗 **Complex Layouts**: Supports multi-level column grouping and fixed columns (left/right).
11
- - 📐 **Dynamic Sizing**: Automatically adapts to container size changes.
12
- - **Expandable Rows**: Support for expandable rows with custom content.
13
- - **Selection**: Built-in checkbox selection with select-all support.
14
- - 📊 **Summary Rows**: Built-in support for multiple summary rows at the bottom.
7
+ - 🚀 **Canvas Powered**: Smooth 60FPS scrolling even with hundreds of thousands of rows.
8
+ - 📦 **Rich Built-in Types**: Text, Image, Checkbox, Radio, Switch, Tags, Color-Picker.
9
+ - 🔗 **Multi-level Headers**: Support for complex column grouping and nested headers.
10
+ - 📌 **Fixed Columns**: Easily freeze columns to the left or right (coming soon).
11
+ - **Expandable Rows**: Custom content per row with smooth height adjustments.
12
+ - **Selection**: Single or multiple row selection with "Select All" functionality.
13
+ - 📊 **Summary Rows**: Flexible bottom-fixed summary rows with custom logic.
14
+ - 🛠 **Custom Rendering**: Use Vue VNodes (via `h` function) for custom cells, headers, and editors.
15
+ - 📐 **Auto-Responsive**: Automatically adjusts to container size changes.
15
16
 
16
17
  ## 📦 Installation
17
18
 
@@ -25,7 +26,6 @@ npm install draw-table-vue
25
26
  <script setup lang="ts">
26
27
  import { ref } from 'vue';
27
28
  import { CanvasTable } from 'draw-table-vue';
28
- import 'draw-table-vue/dist/style.css'; // If styles are exported separately
29
29
 
30
30
  const columns = [
31
31
  { key: 'id', title: 'ID', width: 60, fixed: 'left' },
@@ -40,54 +40,139 @@ const data = ref([
40
40
  </script>
41
41
 
42
42
  <template>
43
- <div style="height: 400px;">
44
- <CanvasTable :columns="columns" v-model:data="data" />
43
+ <!-- The container must have a defined height -->
44
+ <div style="height: 500px;">
45
+ <CanvasTable
46
+ :columns="columns"
47
+ v-model:data="data"
48
+ />
45
49
  </div>
46
50
  </template>
47
51
  ```
48
52
 
49
53
  ## 📖 API Reference
50
54
 
51
- ### CanvasTable Props
55
+ ### `CanvasTable` Props
52
56
 
53
57
  | Prop | Type | Default | Description |
54
58
  | --- | --- | --- | --- |
55
- | `columns` | `ColumnConfig[]` | `[]` | Configuration of table columns. |
56
- | `data` | `TableRow[]` | `[]` | Table data. Supports `v-model:data`. |
57
- | `options` | `TableOptions` | `{}` | Global table options. |
59
+ | `columns` | `ColumnConfig[]` | `[]` | List of column definitions. |
60
+ | `data` | `TableRow[]` | `[]` | Array of data objects. Supports `v-model:data`. |
61
+ | `options` | `Partial<TableOptions>` | `{}` | Global configuration for the table. |
58
62
 
59
- ### ColumnConfig
63
+ ### `CanvasTable` Events
64
+
65
+ | Event | Arguments | Description |
66
+ | --- | --- | --- |
67
+ | `update:data` | `(data: TableRow[])` | Triggered when data is modified (e.g. via editors). |
68
+ | `select-change` | `(keys: (string\|number)[])` | Triggered when row selection changes. |
69
+ | `header-command` | `({ command: string, column: ColumnConfig })` | Triggered by header menu items. |
70
+
71
+ ### `ColumnConfig`
60
72
 
61
73
  | Property | Type | Description |
62
74
  | --- | --- | --- |
63
- | `key` | `string` | Field key in the data object. |
64
- | `title` | `string` | Column header title. |
65
- | `type` | `string` | Cell type: `text`, `image`, `checkbox`, `radio`, `switch`, `color-picker`, `tags`, `expand`, `selection`. |
66
- | `width` | `number` | Width of the column in pixels. |
75
+ | `key` | `string` | Unique key identifying the data field. |
76
+ | `title` | `string` | Text displayed in the column header. |
77
+ | `type` | `CellType` | `text` \| `image` \| `checkbox` \| `radio` \| `switch` \| `color-picker` \| `tags` \| `expand` \| `selection` |
78
+ | `width` | `number` | Width in pixels (default: 100). |
67
79
  | `fixed` | `boolean \| 'left'` | Pin column to the left. |
68
- | `align` | `'left' \| 'center' \| 'right'` | Text alignment. |
69
- | `children` | `ColumnConfig[]` | For column grouping / multi-level headers. |
70
- | `summary` | `SummaryFunction[]` | Functions to calculate summary values. |
80
+ | `align` | `'left' \| 'center' \| 'right'` | Horizontal alignment of content. |
81
+ | `children` | `ColumnConfig[]` | Nested columns for group headers. |
82
+ | `summary` | `SummaryFunction[]` | Array of functions to calculate summary values. |
71
83
  | `renderCell` | `Function` | Custom cell renderer (Canvas-based). |
72
- | `renderHeader` | `Function` | Custom header renderer (Vue-based). |
73
- | `renderEdit` | `Function` | Custom edit popover content (Vue-based). |
84
+ | `renderHeader` | `Function` | Custom header renderer (Vue-based VNode). |
85
+ | `renderEdit` | `Function` | Custom editor content (Vue-based VNode). |
86
+ | `renderHeaderMenu` | `Function` | Custom header menu items generator. |
74
87
 
75
- ### TableOptions
88
+ ### `TableOptions`
76
89
 
77
90
  | Option | Type | Default | Description |
78
91
  | --- | --- | --- | --- |
79
- | `rowHeight` | `number` | `40` | Height of a single row. |
80
- | `headerHeight` | `number` | `48` | Height of the header. |
81
- | `border` | `boolean` | `true` | Show cell borders. |
82
- | `stripe` | `boolean` | `false` | Show zebra stripes. |
83
- | `multiSelect` | `boolean` | `false` | Enable multiple row selection. |
84
- | `renderExpand` | `Function` | - | Custom renderer for expanded row content. |
85
- | `spanMethod` | `Function` | - | Method for merging cells. |
86
-
87
- ## 🧪 Examples
88
-
89
- Check the `examples` folder in the repository for advanced usage:
90
- - [Basic Usage](./examples/BasicUsage.vue): Demonstrates basic features, editing, and expansion.
92
+ | `rowHeight` | `number` | `40` | Default height for each row. |
93
+ | `headerHeight` | `number` | `48` | Height of the header (auto-scales for groups). |
94
+ | `border` | `boolean` | `true` | Whether to show cell borders. |
95
+ | `stripe` | `boolean` | `false` | Whether to show zebra stripes. |
96
+ | `multiSelect` | `boolean` | `false` | Enable checkbox selection. |
97
+ | `renderExpand` | `Function` | - | Renderer for expanded row content (Vue-based VNode). |
98
+ | `spanMethod` | `Function` | - | Function for merging cells (returns `{rowspan, colspan}`). |
99
+
100
+ ## 🧩 Advanced Usage
101
+
102
+ ### Column Grouping
103
+ ```javascript
104
+ const columns = [
105
+ {
106
+ title: 'User Info',
107
+ fixed: 'left',
108
+ children: [
109
+ { key: 'name', title: 'Name', width: 120 },
110
+ { key: 'age', title: 'Age', width: 80 }
111
+ ]
112
+ },
113
+ { key: 'address', title: 'Address', width: 200 }
114
+ ];
115
+ ```
116
+
117
+ ### Custom Rendering (Vue VNodes)
118
+ You can provide custom renderers for headers and cell editors using Vue's `h` function.
119
+
120
+ ```javascript
121
+ {
122
+ key: 'name',
123
+ title: 'Name',
124
+ renderHeader: (col, h) => h('span', { style: { color: 'red' } }, col.title),
125
+ renderEdit: (data, h) => h('div', [
126
+ h('h3', 'Edit User'),
127
+ h('input', {
128
+ value: data.name,
129
+ onInput: (e) => data.name = e.target.value
130
+ })
131
+ ])
132
+ }
133
+ ```
134
+
135
+ ### Summary Rows
136
+ Summary rows are calculated based on the `summary` property of a column.
137
+
138
+ ```javascript
139
+ {
140
+ key: 'amount',
141
+ title: 'Amount',
142
+ summary: [
143
+ (data) => {
144
+ const total = data.reduce((acc, r) => acc + r.amount, 0);
145
+ return { label: 'Total', value: total };
146
+ }
147
+ ]
148
+ }
149
+ ```
150
+
151
+ ### Cell Merging
152
+ Use `spanMethod` to merge cells.
153
+
154
+ ```javascript
155
+ const options = {
156
+ spanMethod: ({ rowIndex, columnIndex }) => {
157
+ if (rowIndex === 0 && columnIndex === 0) {
158
+ return { rowspan: 2, colspan: 1 };
159
+ }
160
+ }
161
+ };
162
+ ```
163
+
164
+ ## 🛠 Development
165
+
166
+ ```bash
167
+ # Install dependencies
168
+ npm install
169
+
170
+ # Run dev server with examples
171
+ npm run dev
172
+
173
+ # Build library
174
+ npm run build
175
+ ```
91
176
 
92
177
  ## 📄 License
93
178
 
@@ -0,0 +1 @@
1
+ :root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.canvas-table-container[data-v-34fbfef2]{width:100%;height:100%;border:1px solid #ebeef5;box-sizing:border-box}.canvas-wrapper[data-v-34fbfef2]{background:#fff}.scrollbar[data-v-34fbfef2]{position:absolute;overflow:auto;z-index:10}.scrollbar.horizontal[data-v-34fbfef2]{bottom:0;left:0;right:0;height:12px}.scrollbar.vertical[data-v-34fbfef2]{top:0;right:0;bottom:0;width:12px}.scrollbar[data-v-34fbfef2]::-webkit-scrollbar{width:8px;height:8px}.scrollbar[data-v-34fbfef2]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.scrollbar[data-v-34fbfef2]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.table-overlays[data-v-34fbfef2]{z-index:5}.edit-btn[data-v-34fbfef2]{width:20px;height:20px;background:#fff;border:1px solid #dcdfe6;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#409eff;box-shadow:0 2px 4px #0000001a}.edit-btn[data-v-34fbfef2]:hover{background:#f5f7fa}.header-menu-overlay[data-v-34fbfef2]{position:absolute;inset:0;pointer-events:auto;z-index:20}.header-menu[data-v-34fbfef2]{background:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px #0000001a;padding:5px 0;min-width:120px}.menu-item[data-v-34fbfef2]{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:14px}.menu-item[data-v-34fbfef2]:hover{background:#f5f7fa;color:#409eff}.edit-dialog-popover[data-v-34fbfef2]{background:#fff;border-radius:4px;width:300px;box-shadow:0 2px 12px #0000001a;border:1px solid #ebeef5;display:flex;flex-direction:column;z-index:2000}.popover-click-mask[data-v-34fbfef2]{position:fixed;inset:0;z-index:1999}.edit-dialog-content[data-v-34fbfef2]{padding:12px}.edit-dialog-footer[data-v-34fbfef2]{padding:8px 12px;border-top:1px solid #ebeef5;display:flex;justify-content:flex-end;gap:8px}button.small[data-v-34fbfef2]{padding:4px 12px;font-size:12px}button.primary[data-v-34fbfef2]{background:#409eff;color:#fff;border-color:#409eff}body{margin:0;padding:0;height:100vh;overflow:hidden}#app{width:100%;height:100%}.app-container{padding:20px;height:100%;display:flex;flex-direction:column}.table-holder{flex:1;min-height:0;margin-top:20px}
@@ -0,0 +1 @@
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&i(l)}).observe(document,{childList:!0,subtree:!0});function s(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(n){if(n.ep)return;n.ep=!0;const r=s(n);fetch(n.href,r)}})();function Xs(t){const e=Object.create(null);for(const s of t.split(","))e[s]=1;return s=>s in e}const X={},me=[],Ft=()=>{},Qi=()=>!1,fs=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),qs=t=>t.startsWith("onUpdate:"),nt=Object.assign,Gs=(t,e)=>{const s=t.indexOf(e);s>-1&&t.splice(s,1)},or=Object.prototype.hasOwnProperty,V=(t,e)=>or.call(t,e),W=Array.isArray,xe=t=>Ke(t)==="[object Map]",tn=t=>Ke(t)==="[object Set]",yi=t=>Ke(t)==="[object Date]",k=t=>typeof t=="function",J=t=>typeof t=="string",$t=t=>typeof t=="symbol",j=t=>t!==null&&typeof t=="object",en=t=>(j(t)||k(t))&&k(t.then)&&k(t.catch),sn=Object.prototype.toString,Ke=t=>sn.call(t),cr=t=>Ke(t).slice(8,-1),nn=t=>Ke(t)==="[object Object]",Js=t=>J(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Pe=Xs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),as=t=>{const e=Object.create(null);return(s=>e[s]||(e[s]=t(s)))},fr=/-\w/g,_t=as(t=>t.replace(fr,e=>e.slice(1).toUpperCase())),ar=/\B([A-Z])/g,ce=as(t=>t.replace(ar,"-$1").toLowerCase()),us=as(t=>t.charAt(0).toUpperCase()+t.slice(1)),bs=as(t=>t?`on${us(t)}`:""),Zt=(t,e)=>!Object.is(t,e),_s=(t,...e)=>{for(let s=0;s<t.length;s++)t[s](...e)},rn=(t,e,s,i=!1)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:i,value:s})},ur=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let bi;const hs=()=>bi||(bi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function wt(t){if(W(t)){const e={};for(let s=0;s<t.length;s++){const i=t[s],n=J(i)?gr(i):wt(i);if(n)for(const r in n)e[r]=n[r]}return e}else if(J(t)||j(t))return t}const hr=/;(?![^(]*\))/g,dr=/:([^]+)/,pr=/\/\*[^]*?\*\//g;function gr(t){const e={};return t.replace(pr,"").split(hr).forEach(s=>{if(s){const i=s.split(dr);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function Zs(t){let e="";if(J(t))e=t;else if(W(t))for(let s=0;s<t.length;s++){const i=Zs(t[s]);i&&(e+=i+" ")}else if(j(t))for(const s in t)t[s]&&(e+=s+" ");return e.trim()}const mr="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",xr=Xs(mr);function ln(t){return!!t||t===""}function vr(t,e){if(t.length!==e.length)return!1;let s=!0;for(let i=0;s&&i<t.length;i++)s=Qs(t[i],e[i]);return s}function Qs(t,e){if(t===e)return!0;let s=yi(t),i=yi(e);if(s||i)return s&&i?t.getTime()===e.getTime():!1;if(s=$t(t),i=$t(e),s||i)return t===e;if(s=W(t),i=W(e),s||i)return s&&i?vr(t,e):!1;if(s=j(t),i=j(e),s||i){if(!s||!i)return!1;const n=Object.keys(t).length,r=Object.keys(e).length;if(n!==r)return!1;for(const l in t){const o=t.hasOwnProperty(l),c=e.hasOwnProperty(l);if(o&&!c||!o&&c||!Qs(t[l],e[l]))return!1}}return String(t)===String(e)}const on=t=>!!(t&&t.__v_isRef===!0),Os=t=>J(t)?t:t==null?"":W(t)||j(t)&&(t.toString===sn||!k(t.toString))?on(t)?Os(t.value):JSON.stringify(t,cn,2):String(t),cn=(t,e)=>on(e)?cn(t,e.value):xe(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((s,[i,n],r)=>(s[ws(i,r)+" =>"]=n,s),{})}:tn(e)?{[`Set(${e.size})`]:[...e.values()].map(s=>ws(s))}:$t(e)?ws(e):j(e)&&!W(e)&&!nn(e)?String(e):e,ws=(t,e="")=>{var s;return $t(t)?`Symbol(${(s=t.description)!=null?s:e})`:t};let gt;class yr{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=gt,!e&&gt&&(this.index=(gt.scopes||(gt.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,s;if(this.scopes)for(e=0,s=this.scopes.length;e<s;e++)this.scopes[e].pause();for(e=0,s=this.effects.length;e<s;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let e,s;if(this.scopes)for(e=0,s=this.scopes.length;e<s;e++)this.scopes[e].resume();for(e=0,s=this.effects.length;e<s;e++)this.effects[e].resume()}}run(e){if(this._active){const s=gt;try{return gt=this,e()}finally{gt=s}}}on(){++this._on===1&&(this.prevScope=gt,gt=this)}off(){this._on>0&&--this._on===0&&(gt=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let s,i;for(s=0,i=this.effects.length;s<i;s++)this.effects[s].stop();for(this.effects.length=0,s=0,i=this.cleanups.length;s<i;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,i=this.scopes.length;s<i;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){const n=this.parent.scopes.pop();n&&n!==this&&(this.parent.scopes[this.index]=n,n.index=this.index)}this.parent=void 0}}}function br(){return gt}let Y;const Ss=new WeakSet;class fn{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,gt&&gt.active&&gt.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ss.has(this)&&(Ss.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||un(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,_i(this),hn(this);const e=Y,s=Tt;Y=this,Tt=!0;try{return this.fn()}finally{dn(this),Y=e,Tt=s,this.flags&=-3}}stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)si(e);this.deps=this.depsTail=void 0,_i(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ss.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Is(this)&&this.run()}get dirty(){return Is(this)}}let an=0,He,Me;function un(t,e=!1){if(t.flags|=8,e){t.next=Me,Me=t;return}t.next=He,He=t}function ti(){an++}function ei(){if(--an>0)return;if(Me){let e=Me;for(Me=void 0;e;){const s=e.next;e.next=void 0,e.flags&=-9,e=s}}let t;for(;He;){let e=He;for(He=void 0;e;){const s=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(i){t||(t=i)}e=s}}if(t)throw t}function hn(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function dn(t){let e,s=t.depsTail,i=s;for(;i;){const n=i.prevDep;i.version===-1?(i===s&&(s=n),si(i),_r(i)):e=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=n}t.deps=e,t.depsTail=s}function Is(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(pn(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function pn(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===We)||(t.globalVersion=We,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!Is(t))))return;t.flags|=2;const e=t.dep,s=Y,i=Tt;Y=t,Tt=!0;try{hn(t);const n=t.fn(t._value);(e.version===0||Zt(n,t._value))&&(t.flags|=128,t._value=n,e.version++)}catch(n){throw e.version++,n}finally{Y=s,Tt=i,dn(t),t.flags&=-3}}function si(t,e=!1){const{dep:s,prevSub:i,nextSub:n}=t;if(i&&(i.nextSub=n,t.prevSub=void 0),n&&(n.prevSub=i,t.nextSub=void 0),s.subs===t&&(s.subs=i,!i&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)si(r,!0)}!e&&!--s.sc&&s.map&&s.map.delete(s.key)}function _r(t){const{prevDep:e,nextDep:s}=t;e&&(e.nextDep=s,t.prevDep=void 0),s&&(s.prevDep=e,t.nextDep=void 0)}let Tt=!0;const gn=[];function jt(){gn.push(Tt),Tt=!1}function zt(){const t=gn.pop();Tt=t===void 0?!0:t}function _i(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const s=Y;Y=void 0;try{e()}finally{Y=s}}}let We=0;class wr{constructor(e,s){this.sub=e,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ii{constructor(e){this.computed=e,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(e){if(!Y||!Tt||Y===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==Y)s=this.activeLink=new wr(Y,this),Y.deps?(s.prevDep=Y.depsTail,Y.depsTail.nextDep=s,Y.depsTail=s):Y.deps=Y.depsTail=s,mn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const i=s.nextDep;i.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=i),s.prevDep=Y.depsTail,s.nextDep=void 0,Y.depsTail.nextDep=s,Y.depsTail=s,Y.deps===s&&(Y.deps=i)}return s}trigger(e){this.version++,We++,this.notify(e)}notify(e){ti();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{ei()}}}function mn(t){if(t.dep.sc++,t.sub.flags&4){const e=t.dep.computed;if(e&&!t.dep.subs){e.flags|=20;for(let i=e.deps;i;i=i.nextDep)mn(i)}const s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}const Ls=new WeakMap,le=Symbol(""),Fs=Symbol(""),De=Symbol("");function lt(t,e,s){if(Tt&&Y){let i=Ls.get(t);i||Ls.set(t,i=new Map);let n=i.get(s);n||(i.set(s,n=new ii),n.map=i,n.key=s),n.track()}}function Ut(t,e,s,i,n,r){const l=Ls.get(t);if(!l){We++;return}const o=c=>{c&&c.trigger()};if(ti(),e==="clear")l.forEach(o);else{const c=W(t),a=c&&Js(s);if(c&&s==="length"){const u=Number(i);l.forEach((d,g)=>{(g==="length"||g===De||!$t(g)&&g>=u)&&o(d)})}else switch((s!==void 0||l.has(void 0))&&o(l.get(s)),a&&o(l.get(De)),e){case"add":c?a&&o(l.get("length")):(o(l.get(le)),xe(t)&&o(l.get(Fs)));break;case"delete":c||(o(l.get(le)),xe(t)&&o(l.get(Fs)));break;case"set":xe(t)&&o(l.get(le));break}}ei()}function pe(t){const e=K(t);return e===t?e:(lt(e,"iterate",De),bt(t)?e:e.map(Rt))}function ds(t){return lt(t=K(t),"iterate",De),t}function qt(t,e){return Yt(t)?_e(oe(t)?Rt(e):e):Rt(e)}const Sr={__proto__:null,[Symbol.iterator](){return Cs(this,Symbol.iterator,t=>qt(this,t))},concat(...t){return pe(this).concat(...t.map(e=>W(e)?pe(e):e))},entries(){return Cs(this,"entries",t=>(t[1]=qt(this,t[1]),t))},every(t,e){return Bt(this,"every",t,e,void 0,arguments)},filter(t,e){return Bt(this,"filter",t,e,s=>s.map(i=>qt(this,i)),arguments)},find(t,e){return Bt(this,"find",t,e,s=>qt(this,s),arguments)},findIndex(t,e){return Bt(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return Bt(this,"findLast",t,e,s=>qt(this,s),arguments)},findLastIndex(t,e){return Bt(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return Bt(this,"forEach",t,e,void 0,arguments)},includes(...t){return Ts(this,"includes",t)},indexOf(...t){return Ts(this,"indexOf",t)},join(t){return pe(this).join(t)},lastIndexOf(...t){return Ts(this,"lastIndexOf",t)},map(t,e){return Bt(this,"map",t,e,void 0,arguments)},pop(){return Te(this,"pop")},push(...t){return Te(this,"push",t)},reduce(t,...e){return wi(this,"reduce",t,e)},reduceRight(t,...e){return wi(this,"reduceRight",t,e)},shift(){return Te(this,"shift")},some(t,e){return Bt(this,"some",t,e,void 0,arguments)},splice(...t){return Te(this,"splice",t)},toReversed(){return pe(this).toReversed()},toSorted(t){return pe(this).toSorted(t)},toSpliced(...t){return pe(this).toSpliced(...t)},unshift(...t){return Te(this,"unshift",t)},values(){return Cs(this,"values",t=>qt(this,t))}};function Cs(t,e,s){const i=ds(t),n=i[e]();return i!==t&&!bt(t)&&(n._next=n.next,n.next=()=>{const r=n._next();return r.done||(r.value=s(r.value)),r}),n}const Cr=Array.prototype;function Bt(t,e,s,i,n,r){const l=ds(t),o=l!==t&&!bt(t),c=l[e];if(c!==Cr[e]){const d=c.apply(t,r);return o?Rt(d):d}let a=s;l!==t&&(o?a=function(d,g){return s.call(this,qt(t,d),g,t)}:s.length>2&&(a=function(d,g){return s.call(this,d,g,t)}));const u=c.call(l,a,i);return o&&n?n(u):u}function wi(t,e,s,i){const n=ds(t);let r=s;return n!==t&&(bt(t)?s.length>3&&(r=function(l,o,c){return s.call(this,l,o,c,t)}):r=function(l,o,c){return s.call(this,l,qt(t,o),c,t)}),n[e](r,...i)}function Ts(t,e,s){const i=K(t);lt(i,"iterate",De);const n=i[e](...s);return(n===-1||n===!1)&&oi(s[0])?(s[0]=K(s[0]),i[e](...s)):n}function Te(t,e,s=[]){jt(),ti();const i=K(t)[e].apply(t,s);return ei(),zt(),i}const Tr=Xs("__proto__,__v_isRef,__isVue"),xn=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter($t));function Rr(t){$t(t)||(t=String(t));const e=K(this);return lt(e,"has",t),e.hasOwnProperty(t)}class vn{constructor(e=!1,s=!1){this._isReadonly=e,this._isShallow=s}get(e,s,i){if(s==="__v_skip")return e.__v_skip;const n=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!n;if(s==="__v_isReadonly")return n;if(s==="__v_isShallow")return r;if(s==="__v_raw")return i===(n?r?$r:wn:r?_n:bn).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(i)?e:void 0;const l=W(e);if(!n){let c;if(l&&(c=Sr[s]))return c;if(s==="hasOwnProperty")return Rr}const o=Reflect.get(e,s,ct(e)?e:i);if(($t(s)?xn.has(s):Tr(s))||(n||lt(e,"get",s),r))return o;if(ct(o)){const c=l&&Js(s)?o:o.value;return n&&j(c)?Ws(c):c}return j(o)?n?Ws(o):ri(o):o}}class yn extends vn{constructor(e=!1){super(!1,e)}set(e,s,i,n){let r=e[s];const l=W(e)&&Js(s);if(!this._isShallow){const a=Yt(r);if(!bt(i)&&!Yt(i)&&(r=K(r),i=K(i)),!l&&ct(r)&&!ct(i))return a||(r.value=i),!0}const o=l?Number(s)<e.length:V(e,s),c=Reflect.set(e,s,i,ct(e)?e:n);return e===K(n)&&(o?Zt(i,r)&&Ut(e,"set",s,i):Ut(e,"add",s,i)),c}deleteProperty(e,s){const i=V(e,s);e[s];const n=Reflect.deleteProperty(e,s);return n&&i&&Ut(e,"delete",s,void 0),n}has(e,s){const i=Reflect.has(e,s);return(!$t(s)||!xn.has(s))&&lt(e,"has",s),i}ownKeys(e){return lt(e,"iterate",W(e)?"length":le),Reflect.ownKeys(e)}}class Er extends vn{constructor(e=!1){super(!0,e)}set(e,s){return!0}deleteProperty(e,s){return!0}}const Ar=new yn,Pr=new Er,Hr=new yn(!0);const $s=t=>t,ze=t=>Reflect.getPrototypeOf(t);function Mr(t,e,s){return function(...i){const n=this.__v_raw,r=K(n),l=xe(r),o=t==="entries"||t===Symbol.iterator&&l,c=t==="keys"&&l,a=n[t](...i),u=s?$s:e?_e:Rt;return!e&&lt(r,"iterate",c?Fs:le),nt(Object.create(a),{next(){const{value:d,done:g}=a.next();return g?{value:d,done:g}:{value:o?[u(d[0]),u(d[1])]:u(d),done:g}}})}}function Ye(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function Or(t,e){const s={get(n){const r=this.__v_raw,l=K(r),o=K(n);t||(Zt(n,o)&&lt(l,"get",n),lt(l,"get",o));const{has:c}=ze(l),a=e?$s:t?_e:Rt;if(c.call(l,n))return a(r.get(n));if(c.call(l,o))return a(r.get(o));r!==l&&r.get(n)},get size(){const n=this.__v_raw;return!t&&lt(K(n),"iterate",le),n.size},has(n){const r=this.__v_raw,l=K(r),o=K(n);return t||(Zt(n,o)&&lt(l,"has",n),lt(l,"has",o)),n===o?r.has(n):r.has(n)||r.has(o)},forEach(n,r){const l=this,o=l.__v_raw,c=K(o),a=e?$s:t?_e:Rt;return!t&&lt(c,"iterate",le),o.forEach((u,d)=>n.call(r,a(u),a(d),l))}};return nt(s,t?{add:Ye("add"),set:Ye("set"),delete:Ye("delete"),clear:Ye("clear")}:{add(n){!e&&!bt(n)&&!Yt(n)&&(n=K(n));const r=K(this);return ze(r).has.call(r,n)||(r.add(n),Ut(r,"add",n,n)),this},set(n,r){!e&&!bt(r)&&!Yt(r)&&(r=K(r));const l=K(this),{has:o,get:c}=ze(l);let a=o.call(l,n);a||(n=K(n),a=o.call(l,n));const u=c.call(l,n);return l.set(n,r),a?Zt(r,u)&&Ut(l,"set",n,r):Ut(l,"add",n,r),this},delete(n){const r=K(this),{has:l,get:o}=ze(r);let c=l.call(r,n);c||(n=K(n),c=l.call(r,n)),o&&o.call(r,n);const a=r.delete(n);return c&&Ut(r,"delete",n,void 0),a},clear(){const n=K(this),r=n.size!==0,l=n.clear();return r&&Ut(n,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(n=>{s[n]=Mr(n,t,e)}),s}function ni(t,e){const s=Or(t,e);return(i,n,r)=>n==="__v_isReactive"?!t:n==="__v_isReadonly"?t:n==="__v_raw"?i:Reflect.get(V(s,n)&&n in i?s:i,n,r)}const Ir={get:ni(!1,!1)},Lr={get:ni(!1,!0)},Fr={get:ni(!0,!1)};const bn=new WeakMap,_n=new WeakMap,wn=new WeakMap,$r=new WeakMap;function Wr(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Dr(t){return t.__v_skip||!Object.isExtensible(t)?0:Wr(cr(t))}function ri(t){return Yt(t)?t:li(t,!1,Ar,Ir,bn)}function kr(t){return li(t,!1,Hr,Lr,_n)}function Ws(t){return li(t,!0,Pr,Fr,wn)}function li(t,e,s,i,n){if(!j(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const r=Dr(t);if(r===0)return t;const l=n.get(t);if(l)return l;const o=new Proxy(t,r===2?i:s);return n.set(t,o),o}function oe(t){return Yt(t)?oe(t.__v_raw):!!(t&&t.__v_isReactive)}function Yt(t){return!!(t&&t.__v_isReadonly)}function bt(t){return!!(t&&t.__v_isShallow)}function oi(t){return t?!!t.__v_raw:!1}function K(t){const e=t&&t.__v_raw;return e?K(e):t}function Nr(t){return!V(t,"__v_skip")&&Object.isExtensible(t)&&rn(t,"__v_skip",!0),t}const Rt=t=>j(t)?ri(t):t,_e=t=>j(t)?Ws(t):t;function ct(t){return t?t.__v_isRef===!0:!1}function it(t){return Sn(t,!1)}function Br(t){return Sn(t,!0)}function Sn(t,e){return ct(t)?t:new Kr(t,e)}class Kr{constructor(e,s){this.dep=new ii,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?e:K(e),this._value=s?e:Rt(e),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(e){const s=this._rawValue,i=this.__v_isShallow||bt(e)||Yt(e);e=i?e:K(e),Zt(e,s)&&(this._rawValue=e,this._value=i?e:Rt(e),this.dep.trigger())}}function Cn(t){return ct(t)?t.value:t}const Vr={get:(t,e,s)=>e==="__v_raw"?t:Cn(Reflect.get(t,e,s)),set:(t,e,s,i)=>{const n=t[e];return ct(n)&&!ct(s)?(n.value=s,!0):Reflect.set(t,e,s,i)}};function Tn(t){return oe(t)?t:new Proxy(t,Vr)}class Ur{constructor(e,s,i){this.fn=e,this.setter=s,this._value=void 0,this.dep=new ii(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=We-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&Y!==this)return un(this,!0),!0}get value(){const e=this.dep.track();return pn(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function jr(t,e,s=!1){let i,n;return k(t)?i=t:(i=t.get,n=t.set),new Ur(i,n,s)}const Xe={},es=new WeakMap;let ne;function zr(t,e=!1,s=ne){if(s){let i=es.get(s);i||es.set(s,i=[]),i.push(t)}}function Yr(t,e,s=X){const{immediate:i,deep:n,once:r,scheduler:l,augmentJob:o,call:c}=s,a=P=>n?P:bt(P)||n===!1||n===0?Jt(P,1):Jt(P);let u,d,g,v,S=!1,C=!1;if(ct(t)?(d=()=>t.value,S=bt(t)):oe(t)?(d=()=>a(t),S=!0):W(t)?(C=!0,S=t.some(P=>oe(P)||bt(P)),d=()=>t.map(P=>{if(ct(P))return P.value;if(oe(P))return a(P);if(k(P))return c?c(P,2):P()})):k(t)?e?d=c?()=>c(t,2):t:d=()=>{if(g){jt();try{g()}finally{zt()}}const P=ne;ne=u;try{return c?c(t,3,[v]):t(v)}finally{ne=P}}:d=Ft,e&&n){const P=d,D=n===!0?1/0:n;d=()=>Jt(P(),D)}const M=br(),H=()=>{u.stop(),M&&M.active&&Gs(M.effects,u)};if(r&&e){const P=e;e=(...D)=>{P(...D),H()}}let A=C?new Array(t.length).fill(Xe):Xe;const O=P=>{if(!(!(u.flags&1)||!u.dirty&&!P))if(e){const D=u.run();if(n||S||(C?D.some((G,Q)=>Zt(G,A[Q])):Zt(D,A))){g&&g();const G=ne;ne=u;try{const Q=[D,A===Xe?void 0:C&&A[0]===Xe?[]:A,v];A=D,c?c(e,3,Q):e(...Q)}finally{ne=G}}}else u.run()};return o&&o(O),u=new fn(d),u.scheduler=l?()=>l(O,!1):O,v=P=>zr(P,!1,u),g=u.onStop=()=>{const P=es.get(u);if(P){if(c)c(P,4);else for(const D of P)D();es.delete(u)}},e?i?O(!0):A=u.run():l?l(O.bind(null,!0),!0):u.run(),H.pause=u.pause.bind(u),H.resume=u.resume.bind(u),H.stop=H,H}function Jt(t,e=1/0,s){if(e<=0||!j(t)||t.__v_skip||(s=s||new Map,(s.get(t)||0)>=e))return t;if(s.set(t,e),e--,ct(t))Jt(t.value,e,s);else if(W(t))for(let i=0;i<t.length;i++)Jt(t[i],e,s);else if(tn(t)||xe(t))t.forEach(i=>{Jt(i,e,s)});else if(nn(t)){for(const i in t)Jt(t[i],e,s);for(const i of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,i)&&Jt(t[i],e,s)}return t}function Ve(t,e,s,i){try{return i?t(...i):t()}catch(n){ps(n,e,s)}}function Wt(t,e,s,i){if(k(t)){const n=Ve(t,e,s,i);return n&&en(n)&&n.catch(r=>{ps(r,e,s)}),n}if(W(t)){const n=[];for(let r=0;r<t.length;r++)n.push(Wt(t[r],e,s,i));return n}}function ps(t,e,s,i=!0){const n=e?e.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:l}=e&&e.appContext.config||X;if(e){let o=e.parent;const c=e.proxy,a=`https://vuejs.org/error-reference/#runtime-${s}`;for(;o;){const u=o.ec;if(u){for(let d=0;d<u.length;d++)if(u[d](t,c,a)===!1)return}o=o.parent}if(r){jt(),Ve(r,null,10,[t,c,a]),zt();return}}Xr(t,s,n,i,l)}function Xr(t,e,s,i=!0,n=!1){if(n)throw t;console.error(t)}const ut=[];let It=-1;const ve=[];let Gt=null,ge=0;const Rn=Promise.resolve();let ss=null;function qr(t){const e=ss||Rn;return t?e.then(this?t.bind(this):t):e}function Gr(t){let e=It+1,s=ut.length;for(;e<s;){const i=e+s>>>1,n=ut[i],r=ke(n);r<t||r===t&&n.flags&2?e=i+1:s=i}return e}function ci(t){if(!(t.flags&1)){const e=ke(t),s=ut[ut.length-1];!s||!(t.flags&2)&&e>=ke(s)?ut.push(t):ut.splice(Gr(e),0,t),t.flags|=1,En()}}function En(){ss||(ss=Rn.then(Pn))}function Jr(t){W(t)?ve.push(...t):Gt&&t.id===-1?Gt.splice(ge+1,0,t):t.flags&1||(ve.push(t),t.flags|=1),En()}function Si(t,e,s=It+1){for(;s<ut.length;s++){const i=ut[s];if(i&&i.flags&2){if(t&&i.id!==t.uid)continue;ut.splice(s,1),s--,i.flags&4&&(i.flags&=-2),i(),i.flags&4||(i.flags&=-2)}}}function An(t){if(ve.length){const e=[...new Set(ve)].sort((s,i)=>ke(s)-ke(i));if(ve.length=0,Gt){Gt.push(...e);return}for(Gt=e,ge=0;ge<Gt.length;ge++){const s=Gt[ge];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Gt=null,ge=0}}const ke=t=>t.id==null?t.flags&2?-1:1/0:t.id;function Pn(t){try{for(It=0;It<ut.length;It++){const e=ut[It];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),Ve(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;It<ut.length;It++){const e=ut[It];e&&(e.flags&=-2)}It=-1,ut.length=0,An(),ss=null,(ut.length||ve.length)&&Pn()}}let Ct=null,Hn=null;function is(t){const e=Ct;return Ct=t,Hn=t&&t.type.__scopeId||null,e}function Zr(t,e=Ct,s){if(!e||t._n)return t;const i=(...n)=>{i._d&&ls(-1);const r=is(e);let l;try{l=t(...n)}finally{is(r),i._d&&ls(1)}return l};return i._n=!0,i._c=!0,i._d=!0,i}function se(t,e,s,i){const n=t.dirs,r=e&&e.dirs;for(let l=0;l<n.length;l++){const o=n[l];r&&(o.oldValue=r[l].value);let c=o.dir[i];c&&(jt(),Wt(c,s,8,[t.el,o,t,e]),zt())}}function Qr(t,e){if(ot){let s=ot.provides;const i=ot.parent&&ot.parent.provides;i===s&&(s=ot.provides=Object.create(i)),s[t]=e}}function Je(t,e,s=!1){const i=eo();if(i||be){let n=be?be._context.provides:i?i.parent==null||i.ce?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides:void 0;if(n&&t in n)return n[t];if(arguments.length>1)return s&&k(e)?e.call(i&&i.proxy):e}}const tl=Symbol.for("v-scx"),el=()=>Je(tl);function ye(t,e,s){return Mn(t,e,s)}function Mn(t,e,s=X){const{immediate:i,deep:n,flush:r,once:l}=s,o=nt({},s),c=e&&i||!e&&r!=="post";let a;if(Be){if(r==="sync"){const v=el();a=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=Ft,v.resume=Ft,v.pause=Ft,v}}const u=ot;o.call=(v,S,C)=>Wt(v,u,S,C);let d=!1;r==="post"?o.scheduler=v=>{rt(v,u&&u.suspense)}:r!=="sync"&&(d=!0,o.scheduler=(v,S)=>{S?v():ci(v)}),o.augmentJob=v=>{e&&(v.flags|=4),d&&(v.flags|=2,u&&(v.id=u.uid,v.i=u))};const g=Yr(t,e,o);return Be&&(a?a.push(g):c&&g()),g}function sl(t,e,s){const i=this.proxy,n=J(t)?t.includes(".")?On(i,t):()=>i[t]:t.bind(i,i);let r;k(e)?r=e:(r=e.handler,s=e);const l=Ue(this),o=Mn(n,r.bind(i),s);return l(),o}function On(t,e){const s=e.split(".");return()=>{let i=t;for(let n=0;n<s.length&&i;n++)i=i[s[n]];return i}}const In=Symbol("_vte"),il=t=>t.__isTeleport,Oe=t=>t&&(t.disabled||t.disabled===""),Ci=t=>t&&(t.defer||t.defer===""),Ti=t=>typeof SVGElement<"u"&&t instanceof SVGElement,Ri=t=>typeof MathMLElement=="function"&&t instanceof MathMLElement,Ds=(t,e)=>{const s=t&&t.to;return J(s)?e?e(s):null:s},Ln={name:"Teleport",__isTeleport:!0,process(t,e,s,i,n,r,l,o,c,a){const{mc:u,pc:d,pbc:g,o:{insert:v,querySelector:S,createText:C,createComment:M}}=a,H=Oe(e.props);let{shapeFlag:A,children:O,dynamicChildren:P}=e;if(t==null){const D=e.el=C(""),G=e.anchor=C("");v(D,s,i),v(G,s,i);const Q=(et,ft)=>{A&16&&u(O,et,ft,n,r,l,o,c)},tt=()=>{const et=e.target=Ds(e.props,S),ft=ks(et,e,C,v);et&&(l!=="svg"&&Ti(et)?l="svg":l!=="mathml"&&Ri(et)&&(l="mathml"),n&&n.isCE&&(n.ce._teleportTargets||(n.ce._teleportTargets=new Set)).add(et),H||(Q(et,ft),Ze(e,!1)))};H&&(Q(s,G),Ze(e,!0)),Ci(e.props)?(e.el.__isMounted=!1,rt(()=>{tt(),delete e.el.__isMounted},r)):tt()}else{if(Ci(e.props)&&t.el.__isMounted===!1){rt(()=>{Ln.process(t,e,s,i,n,r,l,o,c,a)},r);return}e.el=t.el,e.targetStart=t.targetStart;const D=e.anchor=t.anchor,G=e.target=t.target,Q=e.targetAnchor=t.targetAnchor,tt=Oe(t.props),et=tt?s:G,ft=tt?D:Q;if(l==="svg"||Ti(G)?l="svg":(l==="mathml"||Ri(G))&&(l="mathml"),P?(g(t.dynamicChildren,P,et,n,r,l,o),di(t,e,!0)):c||d(t,e,et,ft,n,r,l,o,!1),H)tt?e.props&&t.props&&e.props.to!==t.props.to&&(e.props.to=t.props.to):qe(e,s,D,a,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const Et=e.target=Ds(e.props,S);Et&&qe(e,Et,null,a,0)}else tt&&qe(e,G,Q,a,1);Ze(e,H)}},remove(t,e,s,{um:i,o:{remove:n}},r){const{shapeFlag:l,children:o,anchor:c,targetStart:a,targetAnchor:u,target:d,props:g}=t;if(d&&(n(a),n(u)),r&&n(c),l&16){const v=r||!Oe(g);for(let S=0;S<o.length;S++){const C=o[S];i(C,e,s,v,!!C.dynamicChildren)}}},move:qe,hydrate:nl};function qe(t,e,s,{o:{insert:i},m:n},r=2){r===0&&i(t.targetAnchor,e,s);const{el:l,anchor:o,shapeFlag:c,children:a,props:u}=t,d=r===2;if(d&&i(l,e,s),(!d||Oe(u))&&c&16)for(let g=0;g<a.length;g++)n(a[g],e,s,2);d&&i(o,e,s)}function nl(t,e,s,i,n,r,{o:{nextSibling:l,parentNode:o,querySelector:c,insert:a,createText:u}},d){function g(M,H){let A=H;for(;A;){if(A&&A.nodeType===8){if(A.data==="teleport start anchor")e.targetStart=A;else if(A.data==="teleport anchor"){e.targetAnchor=A,M._lpa=e.targetAnchor&&l(e.targetAnchor);break}}A=l(A)}}function v(M,H){H.anchor=d(l(M),H,o(M),s,i,n,r)}const S=e.target=Ds(e.props,c),C=Oe(e.props);if(S){const M=S._lpa||S.firstChild;e.shapeFlag&16&&(C?(v(t,e),g(S,M),e.targetAnchor||ks(S,e,u,a,o(t)===S?t:null)):(e.anchor=l(t),g(S,M),e.targetAnchor||ks(S,e,u,a),d(M&&l(M),e,S,s,i,n,r))),Ze(e,C)}else C&&e.shapeFlag&16&&(v(t,e),e.targetStart=t,e.targetAnchor=l(t));return e.anchor&&l(e.anchor)}const rl=Ln;function Ze(t,e){const s=t.ctx;if(s&&s.ut){let i,n;for(e?(i=t.el,n=t.anchor):(i=t.targetStart,n=t.targetAnchor);i&&i!==n;)i.nodeType===1&&i.setAttribute("data-v-owner",s.uid),i=i.nextSibling;s.ut()}}function ks(t,e,s,i,n=null){const r=e.targetStart=s(""),l=e.targetAnchor=s("");return r[In]=l,t&&(i(r,t,n),i(l,t,n)),l}const ll=Symbol("_leaveCb");function fi(t,e){t.shapeFlag&6&&t.component?(t.transition=e,fi(t.component.subTree,e)):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function Ns(t,e){return k(t)?nt({name:t.name},e,{setup:t}):t}function Fn(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function Ei(t,e){let s;return!!((s=Object.getOwnPropertyDescriptor(t,e))&&!s.configurable)}const ns=new WeakMap;function Ie(t,e,s,i,n=!1){if(W(t)){t.forEach((C,M)=>Ie(C,e&&(W(e)?e[M]:e),s,i,n));return}if(Le(i)&&!n){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Ie(t,e,s,i.component.subTree);return}const r=i.shapeFlag&4?gi(i.component):i.el,l=n?null:r,{i:o,r:c}=t,a=e&&e.r,u=o.refs===X?o.refs={}:o.refs,d=o.setupState,g=K(d),v=d===X?Qi:C=>Ei(u,C)?!1:V(g,C),S=(C,M)=>!(M&&Ei(u,M));if(a!=null&&a!==c){if(Ai(e),J(a))u[a]=null,v(a)&&(d[a]=null);else if(ct(a)){const C=e;S(a,C.k)&&(a.value=null),C.k&&(u[C.k]=null)}}if(k(c))Ve(c,o,12,[l,u]);else{const C=J(c),M=ct(c);if(C||M){const H=()=>{if(t.f){const A=C?v(c)?d[c]:u[c]:S()||!t.k?c.value:u[t.k];if(n)W(A)&&Gs(A,r);else if(W(A))A.includes(r)||A.push(r);else if(C)u[c]=[r],v(c)&&(d[c]=u[c]);else{const O=[r];S(c,t.k)&&(c.value=O),t.k&&(u[t.k]=O)}}else C?(u[c]=l,v(c)&&(d[c]=l)):M&&(S(c,t.k)&&(c.value=l),t.k&&(u[t.k]=l))};if(l){const A=()=>{H(),ns.delete(t)};A.id=-1,ns.set(t,A),rt(A,s)}else Ai(t),H()}}}function Ai(t){const e=ns.get(t);e&&(e.flags|=8,ns.delete(t))}hs().requestIdleCallback;hs().cancelIdleCallback;const Le=t=>!!t.type.__asyncLoader,$n=t=>t.type.__isKeepAlive;function ol(t,e){Wn(t,"a",e)}function cl(t,e){Wn(t,"da",e)}function Wn(t,e,s=ot){const i=t.__wdc||(t.__wdc=()=>{let n=s;for(;n;){if(n.isDeactivated)return;n=n.parent}return t()});if(gs(e,i,s),s){let n=s.parent;for(;n&&n.parent;)$n(n.parent.vnode)&&fl(i,e,s,n),n=n.parent}}function fl(t,e,s,i){const n=gs(e,t,i,!0);ai(()=>{Gs(i[e],n)},s)}function gs(t,e,s=ot,i=!1){if(s){const n=s[t]||(s[t]=[]),r=e.__weh||(e.__weh=(...l)=>{jt();const o=Ue(s),c=Wt(e,s,t,l);return o(),zt(),c});return i?n.unshift(r):n.push(r),r}}const Xt=t=>(e,s=ot)=>{(!Be||t==="sp")&&gs(t,(...i)=>e(...i),s)},al=Xt("bm"),Dn=Xt("m"),ul=Xt("bu"),hl=Xt("u"),dl=Xt("bum"),ai=Xt("um"),pl=Xt("sp"),gl=Xt("rtg"),ml=Xt("rtc");function xl(t,e=ot){gs("ec",t,e)}const vl="components",kn=Symbol.for("v-ndc");function yl(t){return J(t)?bl(vl,t,!1)||t:t||kn}function bl(t,e,s=!0,i=!1){const n=Ct||ot;if(n){const r=n.type;{const o=lo(r,!1);if(o&&(o===e||o===_t(e)||o===us(_t(e))))return r}const l=Pi(n[t]||r[t],e)||Pi(n.appContext[t],e);return!l&&i?r:l}}function Pi(t,e){return t&&(t[e]||t[_t(e)]||t[us(_t(e))])}function Hi(t,e,s,i){let n;const r=s,l=W(t);if(l||J(t)){const o=l&&oe(t);let c=!1,a=!1;o&&(c=!bt(t),a=Yt(t),t=ds(t)),n=new Array(t.length);for(let u=0,d=t.length;u<d;u++)n[u]=e(c?a?_e(Rt(t[u])):Rt(t[u]):t[u],u,void 0,r)}else if(typeof t=="number"){n=new Array(t);for(let o=0;o<t;o++)n[o]=e(o+1,o,void 0,r)}else if(j(t))if(t[Symbol.iterator])n=Array.from(t,(o,c)=>e(o,c,void 0,r));else{const o=Object.keys(t);n=new Array(o.length);for(let c=0,a=o.length;c<a;c++){const u=o[c];n[c]=e(t[u],u,c,r)}}else n=[];return n}const Bs=t=>t?nr(t)?gi(t):Bs(t.parent):null,Fe=nt(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Bs(t.parent),$root:t=>Bs(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>Bn(t),$forceUpdate:t=>t.f||(t.f=()=>{ci(t.update)}),$nextTick:t=>t.n||(t.n=qr.bind(t.proxy)),$watch:t=>sl.bind(t)}),Rs=(t,e)=>t!==X&&!t.__isScriptSetup&&V(t,e),_l={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:s,setupState:i,data:n,props:r,accessCache:l,type:o,appContext:c}=t;if(e[0]!=="$"){const g=l[e];if(g!==void 0)switch(g){case 1:return i[e];case 2:return n[e];case 4:return s[e];case 3:return r[e]}else{if(Rs(i,e))return l[e]=1,i[e];if(n!==X&&V(n,e))return l[e]=2,n[e];if(V(r,e))return l[e]=3,r[e];if(s!==X&&V(s,e))return l[e]=4,s[e];Ks&&(l[e]=0)}}const a=Fe[e];let u,d;if(a)return e==="$attrs"&&lt(t.attrs,"get",""),a(t);if((u=o.__cssModules)&&(u=u[e]))return u;if(s!==X&&V(s,e))return l[e]=4,s[e];if(d=c.config.globalProperties,V(d,e))return d[e]},set({_:t},e,s){const{data:i,setupState:n,ctx:r}=t;return Rs(n,e)?(n[e]=s,!0):i!==X&&V(i,e)?(i[e]=s,!0):V(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(r[e]=s,!0)},has({_:{data:t,setupState:e,accessCache:s,ctx:i,appContext:n,props:r,type:l}},o){let c;return!!(s[o]||t!==X&&o[0]!=="$"&&V(t,o)||Rs(e,o)||V(r,o)||V(i,o)||V(Fe,o)||V(n.config.globalProperties,o)||(c=l.__cssModules)&&c[o])},defineProperty(t,e,s){return s.get!=null?t._.accessCache[e]=0:V(s,"value")&&this.set(t,e,s.value,null),Reflect.defineProperty(t,e,s)}};function Mi(t){return W(t)?t.reduce((e,s)=>(e[s]=null,e),{}):t}let Ks=!0;function wl(t){const e=Bn(t),s=t.proxy,i=t.ctx;Ks=!1,e.beforeCreate&&Oi(e.beforeCreate,t,"bc");const{data:n,computed:r,methods:l,watch:o,provide:c,inject:a,created:u,beforeMount:d,mounted:g,beforeUpdate:v,updated:S,activated:C,deactivated:M,beforeDestroy:H,beforeUnmount:A,destroyed:O,unmounted:P,render:D,renderTracked:G,renderTriggered:Q,errorCaptured:tt,serverPrefetch:et,expose:ft,inheritAttrs:Et,components:fe,directives:te,filters:ae}=e;if(a&&Sl(a,i,null),l)for(const q in l){const B=l[q];k(B)&&(i[q]=B.bind(s))}if(n){const q=n.call(s,s);j(q)&&(t.data=ri(q))}if(Ks=!0,r)for(const q in r){const B=r[q],Dt=k(B)?B.bind(s,s):k(B.get)?B.get.bind(s,s):Ft,ue=!k(B)&&k(B.set)?B.set.bind(s):Ft,kt=re({get:Dt,set:ue});Object.defineProperty(i,q,{enumerable:!0,configurable:!0,get:()=>kt.value,set:yt=>kt.value=yt})}if(o)for(const q in o)Nn(o[q],i,s,q);if(c){const q=k(c)?c.call(s):c;Reflect.ownKeys(q).forEach(B=>{Qr(B,q[B])})}u&&Oi(u,t,"c");function st(q,B){W(B)?B.forEach(Dt=>q(Dt.bind(s))):B&&q(B.bind(s))}if(st(al,d),st(Dn,g),st(ul,v),st(hl,S),st(ol,C),st(cl,M),st(xl,tt),st(ml,G),st(gl,Q),st(dl,A),st(ai,P),st(pl,et),W(ft))if(ft.length){const q=t.exposed||(t.exposed={});ft.forEach(B=>{Object.defineProperty(q,B,{get:()=>s[B],set:Dt=>s[B]=Dt,enumerable:!0})})}else t.exposed||(t.exposed={});D&&t.render===Ft&&(t.render=D),Et!=null&&(t.inheritAttrs=Et),fe&&(t.components=fe),te&&(t.directives=te),et&&Fn(t)}function Sl(t,e,s=Ft){W(t)&&(t=Vs(t));for(const i in t){const n=t[i];let r;j(n)?"default"in n?r=Je(n.from||i,n.default,!0):r=Je(n.from||i):r=Je(n),ct(r)?Object.defineProperty(e,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):e[i]=r}}function Oi(t,e,s){Wt(W(t)?t.map(i=>i.bind(e.proxy)):t.bind(e.proxy),e,s)}function Nn(t,e,s,i){let n=i.includes(".")?On(s,i):()=>s[i];if(J(t)){const r=e[t];k(r)&&ye(n,r)}else if(k(t))ye(n,t.bind(s));else if(j(t))if(W(t))t.forEach(r=>Nn(r,e,s,i));else{const r=k(t.handler)?t.handler.bind(s):e[t.handler];k(r)&&ye(n,r,t)}}function Bn(t){const e=t.type,{mixins:s,extends:i}=e,{mixins:n,optionsCache:r,config:{optionMergeStrategies:l}}=t.appContext,o=r.get(e);let c;return o?c=o:!n.length&&!s&&!i?c=e:(c={},n.length&&n.forEach(a=>rs(c,a,l,!0)),rs(c,e,l)),j(e)&&r.set(e,c),c}function rs(t,e,s,i=!1){const{mixins:n,extends:r}=e;r&&rs(t,r,s,!0),n&&n.forEach(l=>rs(t,l,s,!0));for(const l in e)if(!(i&&l==="expose")){const o=Cl[l]||s&&s[l];t[l]=o?o(t[l],e[l]):e[l]}return t}const Cl={data:Ii,props:Li,emits:Li,methods:Ae,computed:Ae,beforeCreate:at,created:at,beforeMount:at,mounted:at,beforeUpdate:at,updated:at,beforeDestroy:at,beforeUnmount:at,destroyed:at,unmounted:at,activated:at,deactivated:at,errorCaptured:at,serverPrefetch:at,components:Ae,directives:Ae,watch:Rl,provide:Ii,inject:Tl};function Ii(t,e){return e?t?function(){return nt(k(t)?t.call(this,this):t,k(e)?e.call(this,this):e)}:e:t}function Tl(t,e){return Ae(Vs(t),Vs(e))}function Vs(t){if(W(t)){const e={};for(let s=0;s<t.length;s++)e[t[s]]=t[s];return e}return t}function at(t,e){return t?[...new Set([].concat(t,e))]:e}function Ae(t,e){return t?nt(Object.create(null),t,e):e}function Li(t,e){return t?W(t)&&W(e)?[...new Set([...t,...e])]:nt(Object.create(null),Mi(t),Mi(e??{})):e}function Rl(t,e){if(!t)return e;if(!e)return t;const s=nt(Object.create(null),t);for(const i in e)s[i]=at(t[i],e[i]);return s}function Kn(){return{app:null,config:{isNativeTag:Qi,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 El=0;function Al(t,e){return function(i,n=null){k(i)||(i=nt({},i)),n!=null&&!j(n)&&(n=null);const r=Kn(),l=new WeakSet,o=[];let c=!1;const a=r.app={_uid:El++,_component:i,_props:n,_container:null,_context:r,_instance:null,version:co,get config(){return r.config},set config(u){},use(u,...d){return l.has(u)||(u&&k(u.install)?(l.add(u),u.install(a,...d)):k(u)&&(l.add(u),u(a,...d))),a},mixin(u){return r.mixins.includes(u)||r.mixins.push(u),a},component(u,d){return d?(r.components[u]=d,a):r.components[u]},directive(u,d){return d?(r.directives[u]=d,a):r.directives[u]},mount(u,d,g){if(!c){const v=a._ceVNode||ht(i,n);return v.appContext=r,g===!0?g="svg":g===!1&&(g=void 0),t(v,u,g),c=!0,a._container=u,u.__vue_app__=a,gi(v.component)}},onUnmount(u){o.push(u)},unmount(){c&&(Wt(o,a._instance,16),t(null,a._container),delete a._container.__vue_app__)},provide(u,d){return r.provides[u]=d,a},runWithContext(u){const d=be;be=a;try{return u()}finally{be=d}}};return a}}let be=null;const Pl=(t,e)=>e==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${_t(e)}Modifiers`]||t[`${ce(e)}Modifiers`];function Hl(t,e,...s){if(t.isUnmounted)return;const i=t.vnode.props||X;let n=s;const r=e.startsWith("update:"),l=r&&Pl(i,e.slice(7));l&&(l.trim&&(n=s.map(u=>J(u)?u.trim():u)),l.number&&(n=s.map(ur)));let o,c=i[o=bs(e)]||i[o=bs(_t(e))];!c&&r&&(c=i[o=bs(ce(e))]),c&&Wt(c,t,6,n);const a=i[o+"Once"];if(a){if(!t.emitted)t.emitted={};else if(t.emitted[o])return;t.emitted[o]=!0,Wt(a,t,6,n)}}const Ml=new WeakMap;function Vn(t,e,s=!1){const i=s?Ml:e.emitsCache,n=i.get(t);if(n!==void 0)return n;const r=t.emits;let l={},o=!1;if(!k(t)){const c=a=>{const u=Vn(a,e,!0);u&&(o=!0,nt(l,u))};!s&&e.mixins.length&&e.mixins.forEach(c),t.extends&&c(t.extends),t.mixins&&t.mixins.forEach(c)}return!r&&!o?(j(t)&&i.set(t,null),null):(W(r)?r.forEach(c=>l[c]=null):nt(l,r),j(t)&&i.set(t,l),l)}function ms(t,e){return!t||!fs(e)?!1:(e=e.slice(2).replace(/Once$/,""),V(t,e[0].toLowerCase()+e.slice(1))||V(t,ce(e))||V(t,e))}function Fi(t){const{type:e,vnode:s,proxy:i,withProxy:n,propsOptions:[r],slots:l,attrs:o,emit:c,render:a,renderCache:u,props:d,data:g,setupState:v,ctx:S,inheritAttrs:C}=t,M=is(t);let H,A;try{if(s.shapeFlag&4){const P=n||i,D=P;H=Lt(a.call(D,P,u,d,v,g,S)),A=o}else{const P=e;H=Lt(P.length>1?P(d,{attrs:o,slots:l,emit:c}):P(d,null)),A=e.props?o:Ol(o)}}catch(P){$e.length=0,ps(P,t,1),H=ht(Qt)}let O=H;if(A&&C!==!1){const P=Object.keys(A),{shapeFlag:D}=O;P.length&&D&7&&(r&&P.some(qs)&&(A=Il(A,r)),O=we(O,A,!1,!0))}return s.dirs&&(O=we(O,null,!1,!0),O.dirs=O.dirs?O.dirs.concat(s.dirs):s.dirs),s.transition&&fi(O,s.transition),H=O,is(M),H}const Ol=t=>{let e;for(const s in t)(s==="class"||s==="style"||fs(s))&&((e||(e={}))[s]=t[s]);return e},Il=(t,e)=>{const s={};for(const i in t)(!qs(i)||!(i.slice(9)in e))&&(s[i]=t[i]);return s};function Ll(t,e,s){const{props:i,children:n,component:r}=t,{props:l,children:o,patchFlag:c}=e,a=r.emitsOptions;if(e.dirs||e.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return i?$i(i,l,a):!!l;if(c&8){const u=e.dynamicProps;for(let d=0;d<u.length;d++){const g=u[d];if(Un(l,i,g)&&!ms(a,g))return!0}}}else return(n||o)&&(!o||!o.$stable)?!0:i===l?!1:i?l?$i(i,l,a):!0:!!l;return!1}function $i(t,e,s){const i=Object.keys(e);if(i.length!==Object.keys(t).length)return!0;for(let n=0;n<i.length;n++){const r=i[n];if(Un(e,t,r)&&!ms(s,r))return!0}return!1}function Un(t,e,s){const i=t[s],n=e[s];return s==="style"&&j(i)&&j(n)?!Qs(i,n):i!==n}function Fl({vnode:t,parent:e},s){for(;e;){const i=e.subTree;if(i.suspense&&i.suspense.activeBranch===t&&(i.el=t.el),i===t)(t=e.vnode).el=s,e=e.parent;else break}}const jn={},zn=()=>Object.create(jn),Yn=t=>Object.getPrototypeOf(t)===jn;function $l(t,e,s,i=!1){const n={},r=zn();t.propsDefaults=Object.create(null),Xn(t,e,n,r);for(const l in t.propsOptions[0])l in n||(n[l]=void 0);s?t.props=i?n:kr(n):t.type.props?t.props=n:t.props=r,t.attrs=r}function Wl(t,e,s,i){const{props:n,attrs:r,vnode:{patchFlag:l}}=t,o=K(n),[c]=t.propsOptions;let a=!1;if((i||l>0)&&!(l&16)){if(l&8){const u=t.vnode.dynamicProps;for(let d=0;d<u.length;d++){let g=u[d];if(ms(t.emitsOptions,g))continue;const v=e[g];if(c)if(V(r,g))v!==r[g]&&(r[g]=v,a=!0);else{const S=_t(g);n[S]=Us(c,o,S,v,t,!1)}else v!==r[g]&&(r[g]=v,a=!0)}}}else{Xn(t,e,n,r)&&(a=!0);let u;for(const d in o)(!e||!V(e,d)&&((u=ce(d))===d||!V(e,u)))&&(c?s&&(s[d]!==void 0||s[u]!==void 0)&&(n[d]=Us(c,o,d,void 0,t,!0)):delete n[d]);if(r!==o)for(const d in r)(!e||!V(e,d))&&(delete r[d],a=!0)}a&&Ut(t.attrs,"set","")}function Xn(t,e,s,i){const[n,r]=t.propsOptions;let l=!1,o;if(e)for(let c in e){if(Pe(c))continue;const a=e[c];let u;n&&V(n,u=_t(c))?!r||!r.includes(u)?s[u]=a:(o||(o={}))[u]=a:ms(t.emitsOptions,c)||(!(c in i)||a!==i[c])&&(i[c]=a,l=!0)}if(r){const c=K(s),a=o||X;for(let u=0;u<r.length;u++){const d=r[u];s[d]=Us(n,c,d,a[d],t,!V(a,d))}}return l}function Us(t,e,s,i,n,r){const l=t[s];if(l!=null){const o=V(l,"default");if(o&&i===void 0){const c=l.default;if(l.type!==Function&&!l.skipFactory&&k(c)){const{propsDefaults:a}=n;if(s in a)i=a[s];else{const u=Ue(n);i=a[s]=c.call(null,e),u()}}else i=c;n.ce&&n.ce._setProp(s,i)}l[0]&&(r&&!o?i=!1:l[1]&&(i===""||i===ce(s))&&(i=!0))}return i}const Dl=new WeakMap;function qn(t,e,s=!1){const i=s?Dl:e.propsCache,n=i.get(t);if(n)return n;const r=t.props,l={},o=[];let c=!1;if(!k(t)){const u=d=>{c=!0;const[g,v]=qn(d,e,!0);nt(l,g),v&&o.push(...v)};!s&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}if(!r&&!c)return j(t)&&i.set(t,me),me;if(W(r))for(let u=0;u<r.length;u++){const d=_t(r[u]);Wi(d)&&(l[d]=X)}else if(r)for(const u in r){const d=_t(u);if(Wi(d)){const g=r[u],v=l[d]=W(g)||k(g)?{type:g}:nt({},g),S=v.type;let C=!1,M=!0;if(W(S))for(let H=0;H<S.length;++H){const A=S[H],O=k(A)&&A.name;if(O==="Boolean"){C=!0;break}else O==="String"&&(M=!1)}else C=k(S)&&S.name==="Boolean";v[0]=C,v[1]=M,(C||V(v,"default"))&&o.push(d)}}const a=[l,o];return j(t)&&i.set(t,a),a}function Wi(t){return t[0]!=="$"&&!Pe(t)}const ui=t=>t==="_"||t==="_ctx"||t==="$stable",hi=t=>W(t)?t.map(Lt):[Lt(t)],kl=(t,e,s)=>{if(e._n)return e;const i=Zr((...n)=>hi(e(...n)),s);return i._c=!1,i},Gn=(t,e,s)=>{const i=t._ctx;for(const n in t){if(ui(n))continue;const r=t[n];if(k(r))e[n]=kl(n,r,i);else if(r!=null){const l=hi(r);e[n]=()=>l}}},Jn=(t,e)=>{const s=hi(e);t.slots.default=()=>s},Zn=(t,e,s)=>{for(const i in e)(s||!ui(i))&&(t[i]=e[i])},Nl=(t,e,s)=>{const i=t.slots=zn();if(t.vnode.shapeFlag&32){const n=e._;n?(Zn(i,e,s),s&&rn(i,"_",n,!0)):Gn(e,i)}else e&&Jn(t,e)},Bl=(t,e,s)=>{const{vnode:i,slots:n}=t;let r=!0,l=X;if(i.shapeFlag&32){const o=e._;o?s&&o===1?r=!1:Zn(n,e,s):(r=!e.$stable,Gn(e,n)),l=e}else e&&(Jn(t,e),l={default:1});if(r)for(const o in n)!ui(o)&&l[o]==null&&delete n[o]},rt=zl;function Kl(t){return Vl(t)}function Vl(t,e){const s=hs();s.__VUE__=!0;const{insert:i,remove:n,patchProp:r,createElement:l,createText:o,createComment:c,setText:a,setElementText:u,parentNode:d,nextSibling:g,setScopeId:v=Ft,insertStaticContent:S}=t,C=(f,h,p,x=null,m=null,y=null,T=void 0,w=null,_=!!h.dynamicChildren)=>{if(f===h)return;f&&!Re(f,h)&&(x=he(f),yt(f,m,y,!0),f=null),h.patchFlag===-2&&(_=!1,h.dynamicChildren=null);const{type:b,ref:L,shapeFlag:E}=h;switch(b){case xs:M(f,h,p,x);break;case Qt:H(f,h,p,x);break;case As:f==null&&A(h,p,x,T);break;case St:fe(f,h,p,x,m,y,T,w,_);break;default:E&1?D(f,h,p,x,m,y,T,w,_):E&6?te(f,h,p,x,m,y,T,w,_):(E&64||E&128)&&b.process(f,h,p,x,m,y,T,w,_,R)}L!=null&&m?Ie(L,f&&f.ref,y,h||f,!h):L==null&&f&&f.ref!=null&&Ie(f.ref,null,y,f,!0)},M=(f,h,p,x)=>{if(f==null)i(h.el=o(h.children),p,x);else{const m=h.el=f.el;h.children!==f.children&&a(m,h.children)}},H=(f,h,p,x)=>{f==null?i(h.el=c(h.children||""),p,x):h.el=f.el},A=(f,h,p,x)=>{[f.el,f.anchor]=S(f.children,h,p,x,f.el,f.anchor)},O=({el:f,anchor:h},p,x)=>{let m;for(;f&&f!==h;)m=g(f),i(f,p,x),f=m;i(h,p,x)},P=({el:f,anchor:h})=>{let p;for(;f&&f!==h;)p=g(f),n(f),f=p;n(h)},D=(f,h,p,x,m,y,T,w,_)=>{if(h.type==="svg"?T="svg":h.type==="math"&&(T="mathml"),f==null)G(h,p,x,m,y,T,w,_);else{const b=f.el&&f.el._isVueCE?f.el:null;try{b&&b._beginPatch(),et(f,h,m,y,T,w,_)}finally{b&&b._endPatch()}}},G=(f,h,p,x,m,y,T,w)=>{let _,b;const{props:L,shapeFlag:E,transition:I,dirs:$}=f;if(_=f.el=l(f.type,y,L&&L.is,L),E&8?u(_,f.children):E&16&&tt(f.children,_,null,x,m,Es(f,y),T,w),$&&se(f,null,x,"created"),Q(_,f,f.scopeId,T,x),L){for(const z in L)z!=="value"&&!Pe(z)&&r(_,z,null,L[z],y,x);"value"in L&&r(_,"value",null,L.value,y),(b=L.onVnodeBeforeMount)&&Mt(b,x,f)}$&&se(f,null,x,"beforeMount");const N=Ul(m,I);N&&I.beforeEnter(_),i(_,h,p),((b=L&&L.onVnodeMounted)||N||$)&&rt(()=>{b&&Mt(b,x,f),N&&I.enter(_),$&&se(f,null,x,"mounted")},m)},Q=(f,h,p,x,m)=>{if(p&&v(f,p),x)for(let y=0;y<x.length;y++)v(f,x[y]);if(m){let y=m.subTree;if(h===y||er(y.type)&&(y.ssContent===h||y.ssFallback===h)){const T=m.vnode;Q(f,T,T.scopeId,T.slotScopeIds,m.parent)}}},tt=(f,h,p,x,m,y,T,w,_=0)=>{for(let b=_;b<f.length;b++){const L=f[b]=w?Vt(f[b]):Lt(f[b]);C(null,L,h,p,x,m,y,T,w)}},et=(f,h,p,x,m,y,T)=>{const w=h.el=f.el;let{patchFlag:_,dynamicChildren:b,dirs:L}=h;_|=f.patchFlag&16;const E=f.props||X,I=h.props||X;let $;if(p&&ie(p,!1),($=I.onVnodeBeforeUpdate)&&Mt($,p,h,f),L&&se(h,f,p,"beforeUpdate"),p&&ie(p,!0),(E.innerHTML&&I.innerHTML==null||E.textContent&&I.textContent==null)&&u(w,""),b?ft(f.dynamicChildren,b,w,p,x,Es(h,m),y):T||B(f,h,w,null,p,x,Es(h,m),y,!1),_>0){if(_&16)Et(w,E,I,p,m);else if(_&2&&E.class!==I.class&&r(w,"class",null,I.class,m),_&4&&r(w,"style",E.style,I.style,m),_&8){const N=h.dynamicProps;for(let z=0;z<N.length;z++){const U=N[z],dt=E[U],pt=I[U];(pt!==dt||U==="value")&&r(w,U,dt,pt,m,p)}}_&1&&f.children!==h.children&&u(w,h.children)}else!T&&b==null&&Et(w,E,I,p,m);(($=I.onVnodeUpdated)||L)&&rt(()=>{$&&Mt($,p,h,f),L&&se(h,f,p,"updated")},x)},ft=(f,h,p,x,m,y,T)=>{for(let w=0;w<h.length;w++){const _=f[w],b=h[w],L=_.el&&(_.type===St||!Re(_,b)||_.shapeFlag&198)?d(_.el):p;C(_,b,L,null,x,m,y,T,!0)}},Et=(f,h,p,x,m)=>{if(h!==p){if(h!==X)for(const y in h)!Pe(y)&&!(y in p)&&r(f,y,h[y],null,m,x);for(const y in p){if(Pe(y))continue;const T=p[y],w=h[y];T!==w&&y!=="value"&&r(f,y,w,T,m,x)}"value"in p&&r(f,"value",h.value,p.value,m)}},fe=(f,h,p,x,m,y,T,w,_)=>{const b=h.el=f?f.el:o(""),L=h.anchor=f?f.anchor:o("");let{patchFlag:E,dynamicChildren:I,slotScopeIds:$}=h;$&&(w=w?w.concat($):$),f==null?(i(b,p,x),i(L,p,x),tt(h.children||[],p,L,m,y,T,w,_)):E>0&&E&64&&I&&f.dynamicChildren&&f.dynamicChildren.length===I.length?(ft(f.dynamicChildren,I,p,m,y,T,w),(h.key!=null||m&&h===m.subTree)&&di(f,h,!0)):B(f,h,p,L,m,y,T,w,_)},te=(f,h,p,x,m,y,T,w,_)=>{h.slotScopeIds=w,f==null?h.shapeFlag&512?m.ctx.activate(h,p,x,T,_):ae(h,p,x,m,y,T,_):Se(f,h,_)},ae=(f,h,p,x,m,y,T)=>{const w=f.component=to(f,x,m);if($n(f)&&(w.ctx.renderer=R),so(w,!1,T),w.asyncDep){if(m&&m.registerDep(w,st,T),!f.el){const _=w.subTree=ht(Qt);H(null,_,h,p),f.placeholder=_.el}}else st(w,f,h,p,m,y,T)},Se=(f,h,p)=>{const x=h.component=f.component;if(Ll(f,h,p))if(x.asyncDep&&!x.asyncResolved){q(x,h,p);return}else x.next=h,x.update();else h.el=f.el,x.vnode=h},st=(f,h,p,x,m,y,T)=>{const w=()=>{if(f.isMounted){let{next:E,bu:I,u:$,parent:N,vnode:z}=f;{const Pt=Qn(f);if(Pt){E&&(E.el=z.el,q(f,E,T)),Pt.asyncDep.then(()=>{rt(()=>{f.isUnmounted||b()},m)});return}}let U=E,dt;ie(f,!1),E?(E.el=z.el,q(f,E,T)):E=z,I&&_s(I),(dt=E.props&&E.props.onVnodeBeforeUpdate)&&Mt(dt,N,E,z),ie(f,!0);const pt=Fi(f),At=f.subTree;f.subTree=pt,C(At,pt,d(At.el),he(At),f,m,y),E.el=pt.el,U===null&&Fl(f,pt.el),$&&rt($,m),(dt=E.props&&E.props.onVnodeUpdated)&&rt(()=>Mt(dt,N,E,z),m)}else{let E;const{el:I,props:$}=h,{bm:N,m:z,parent:U,root:dt,type:pt}=f,At=Le(h);ie(f,!1),N&&_s(N),!At&&(E=$&&$.onVnodeBeforeMount)&&Mt(E,U,h),ie(f,!0);{dt.ce&&dt.ce._hasShadowRoot()&&dt.ce._injectChildStyle(pt);const Pt=f.subTree=Fi(f);C(null,Pt,p,x,f,m,y),h.el=Pt.el}if(z&&rt(z,m),!At&&(E=$&&$.onVnodeMounted)){const Pt=h;rt(()=>Mt(E,U,Pt),m)}(h.shapeFlag&256||U&&Le(U.vnode)&&U.vnode.shapeFlag&256)&&f.a&&rt(f.a,m),f.isMounted=!0,h=p=x=null}};f.scope.on();const _=f.effect=new fn(w);f.scope.off();const b=f.update=_.run.bind(_),L=f.job=_.runIfDirty.bind(_);L.i=f,L.id=f.uid,_.scheduler=()=>ci(L),ie(f,!0),b()},q=(f,h,p)=>{h.component=f;const x=f.vnode.props;f.vnode=h,f.next=null,Wl(f,h.props,x,p),Bl(f,h.children,p),jt(),Si(f),zt()},B=(f,h,p,x,m,y,T,w,_=!1)=>{const b=f&&f.children,L=f?f.shapeFlag:0,E=h.children,{patchFlag:I,shapeFlag:$}=h;if(I>0){if(I&128){ue(b,E,p,x,m,y,T,w,_);return}else if(I&256){Dt(b,E,p,x,m,y,T,w,_);return}}$&8?(L&16&&ee(b,m,y),E!==b&&u(p,E)):L&16?$&16?ue(b,E,p,x,m,y,T,w,_):ee(b,m,y,!0):(L&8&&u(p,""),$&16&&tt(E,p,x,m,y,T,w,_))},Dt=(f,h,p,x,m,y,T,w,_)=>{f=f||me,h=h||me;const b=f.length,L=h.length,E=Math.min(b,L);let I;for(I=0;I<E;I++){const $=h[I]=_?Vt(h[I]):Lt(h[I]);C(f[I],$,p,null,m,y,T,w,_)}b>L?ee(f,m,y,!0,!1,E):tt(h,p,x,m,y,T,w,_,E)},ue=(f,h,p,x,m,y,T,w,_)=>{let b=0;const L=h.length;let E=f.length-1,I=L-1;for(;b<=E&&b<=I;){const $=f[b],N=h[b]=_?Vt(h[b]):Lt(h[b]);if(Re($,N))C($,N,p,null,m,y,T,w,_);else break;b++}for(;b<=E&&b<=I;){const $=f[E],N=h[I]=_?Vt(h[I]):Lt(h[I]);if(Re($,N))C($,N,p,null,m,y,T,w,_);else break;E--,I--}if(b>E){if(b<=I){const $=I+1,N=$<L?h[$].el:x;for(;b<=I;)C(null,h[b]=_?Vt(h[b]):Lt(h[b]),p,N,m,y,T,w,_),b++}}else if(b>I)for(;b<=E;)yt(f[b],m,y,!0),b++;else{const $=b,N=b,z=new Map;for(b=N;b<=I;b++){const mt=h[b]=_?Vt(h[b]):Lt(h[b]);mt.key!=null&&z.set(mt.key,b)}let U,dt=0;const pt=I-N+1;let At=!1,Pt=0;const Ce=new Array(pt);for(b=0;b<pt;b++)Ce[b]=0;for(b=$;b<=E;b++){const mt=f[b];if(dt>=pt){yt(mt,m,y,!0);continue}let Ht;if(mt.key!=null)Ht=z.get(mt.key);else for(U=N;U<=I;U++)if(Ce[U-N]===0&&Re(mt,h[U])){Ht=U;break}Ht===void 0?yt(mt,m,y,!0):(Ce[Ht-N]=b+1,Ht>=Pt?Pt=Ht:At=!0,C(mt,h[Ht],p,null,m,y,T,w,_),dt++)}const mi=At?jl(Ce):me;for(U=mi.length-1,b=pt-1;b>=0;b--){const mt=N+b,Ht=h[mt],xi=h[mt+1],vi=mt+1<L?xi.el||tr(xi):x;Ce[b]===0?C(null,Ht,p,vi,m,y,T,w,_):At&&(U<0||b!==mi[U]?kt(Ht,p,vi,2):U--)}}},kt=(f,h,p,x,m=null)=>{const{el:y,type:T,transition:w,children:_,shapeFlag:b}=f;if(b&6){kt(f.component.subTree,h,p,x);return}if(b&128){f.suspense.move(h,p,x);return}if(b&64){T.move(f,h,p,R);return}if(T===St){i(y,h,p);for(let E=0;E<_.length;E++)kt(_[E],h,p,x);i(f.anchor,h,p);return}if(T===As){O(f,h,p);return}if(x!==2&&b&1&&w)if(x===0)w.beforeEnter(y),i(y,h,p),rt(()=>w.enter(y),m);else{const{leave:E,delayLeave:I,afterLeave:$}=w,N=()=>{f.ctx.isUnmounted?n(y):i(y,h,p)},z=()=>{y._isLeaving&&y[ll](!0),E(y,()=>{N(),$&&$()})};I?I(y,N,z):z()}else i(y,h,p)},yt=(f,h,p,x=!1,m=!1)=>{const{type:y,props:T,ref:w,children:_,dynamicChildren:b,shapeFlag:L,patchFlag:E,dirs:I,cacheIndex:$}=f;if(E===-2&&(m=!1),w!=null&&(jt(),Ie(w,null,p,f,!0),zt()),$!=null&&(h.renderCache[$]=void 0),L&256){h.ctx.deactivate(f);return}const N=L&1&&I,z=!Le(f);let U;if(z&&(U=T&&T.onVnodeBeforeUnmount)&&Mt(U,h,f),L&6)ys(f.component,p,x);else{if(L&128){f.suspense.unmount(p,x);return}N&&se(f,null,h,"beforeUnmount"),L&64?f.type.remove(f,h,p,R,x):b&&!b.hasOnce&&(y!==St||E>0&&E&64)?ee(b,h,p,!1,!0):(y===St&&E&384||!m&&L&16)&&ee(_,h,p),x&&je(f)}(z&&(U=T&&T.onVnodeUnmounted)||N)&&rt(()=>{U&&Mt(U,h,f),N&&se(f,null,h,"unmounted")},p)},je=f=>{const{type:h,el:p,anchor:x,transition:m}=f;if(h===St){vs(p,x);return}if(h===As){P(f);return}const y=()=>{n(p),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(f.shapeFlag&1&&m&&!m.persisted){const{leave:T,delayLeave:w}=m,_=()=>T(p,y);w?w(f.el,y,_):_()}else y()},vs=(f,h)=>{let p;for(;f!==h;)p=g(f),n(f),f=p;n(h)},ys=(f,h,p)=>{const{bum:x,scope:m,job:y,subTree:T,um:w,m:_,a:b}=f;Di(_),Di(b),x&&_s(x),m.stop(),y&&(y.flags|=8,yt(T,f,h,p)),w&&rt(w,h),rt(()=>{f.isUnmounted=!0},h)},ee=(f,h,p,x=!1,m=!1,y=0)=>{for(let T=y;T<f.length;T++)yt(f[T],h,p,x,m)},he=f=>{if(f.shapeFlag&6)return he(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const h=g(f.anchor||f.el),p=h&&h[In];return p?g(p):h};let Nt=!1;const de=(f,h,p)=>{let x;f==null?h._vnode&&(yt(h._vnode,null,null,!0),x=h._vnode.component):C(h._vnode||null,f,h,null,null,null,p),h._vnode=f,Nt||(Nt=!0,Si(x),An(),Nt=!1)},R={p:C,um:yt,m:kt,r:je,mt:ae,mc:tt,pc:B,pbc:ft,n:he,o:t};return{render:de,hydrate:void 0,createApp:Al(de)}}function Es({type:t,props:e},s){return s==="svg"&&t==="foreignObject"||s==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:s}function ie({effect:t,job:e},s){s?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function Ul(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function di(t,e,s=!1){const i=t.children,n=e.children;if(W(i)&&W(n))for(let r=0;r<i.length;r++){const l=i[r];let o=n[r];o.shapeFlag&1&&!o.dynamicChildren&&((o.patchFlag<=0||o.patchFlag===32)&&(o=n[r]=Vt(n[r]),o.el=l.el),!s&&o.patchFlag!==-2&&di(l,o)),o.type===xs&&(o.patchFlag===-1&&(o=n[r]=Vt(o)),o.el=l.el),o.type===Qt&&!o.el&&(o.el=l.el)}}function jl(t){const e=t.slice(),s=[0];let i,n,r,l,o;const c=t.length;for(i=0;i<c;i++){const a=t[i];if(a!==0){if(n=s[s.length-1],t[n]<a){e[i]=n,s.push(i);continue}for(r=0,l=s.length-1;r<l;)o=r+l>>1,t[s[o]]<a?r=o+1:l=o;a<t[s[r]]&&(r>0&&(e[i]=s[r-1]),s[r]=i)}}for(r=s.length,l=s[r-1];r-- >0;)s[r]=l,l=e[l];return s}function Qn(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Qn(e)}function Di(t){if(t)for(let e=0;e<t.length;e++)t[e].flags|=8}function tr(t){if(t.placeholder)return t.placeholder;const e=t.component;return e?tr(e.subTree):null}const er=t=>t.__isSuspense;function zl(t,e){e&&e.pendingBranch?W(t)?e.effects.push(...t):e.effects.push(t):Jr(t)}const St=Symbol.for("v-fgt"),xs=Symbol.for("v-txt"),Qt=Symbol.for("v-cmt"),As=Symbol.for("v-stc"),$e=[];let vt=null;function xt(t=!1){$e.push(vt=t?null:[])}function Yl(){$e.pop(),vt=$e[$e.length-1]||null}let Ne=1;function ls(t,e=!1){Ne+=t,t<0&&vt&&e&&(vt.hasOnce=!0)}function sr(t){return t.dynamicChildren=Ne>0?vt||me:null,Yl(),Ne>0&&vt&&vt.push(t),t}function Ot(t,e,s,i,n,r){return sr(Z(t,e,s,i,n,r,!0))}function js(t,e,s,i,n){return sr(ht(t,e,s,i,n,!0))}function os(t){return t?t.__v_isVNode===!0:!1}function Re(t,e){return t.type===e.type&&t.key===e.key}const ir=({key:t})=>t??null,Qe=({ref:t,ref_key:e,ref_for:s})=>(typeof t=="number"&&(t=""+t),t!=null?J(t)||ct(t)||k(t)?{i:Ct,r:t,k:e,f:!!s}:t:null);function Z(t,e=null,s=null,i=0,n=null,r=t===St?0:1,l=!1,o=!1){const c={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&ir(e),ref:e&&Qe(e),scopeId:Hn,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:r,patchFlag:i,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:Ct};return o?(pi(c,s),r&128&&t.normalize(c)):s&&(c.shapeFlag|=J(s)?8:16),Ne>0&&!l&&vt&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&vt.push(c),c}const ht=Xl;function Xl(t,e=null,s=null,i=0,n=null,r=!1){if((!t||t===kn)&&(t=Qt),os(t)){const o=we(t,e,!0);return s&&pi(o,s),Ne>0&&!r&&vt&&(o.shapeFlag&6?vt[vt.indexOf(t)]=o:vt.push(o)),o.patchFlag=-2,o}if(oo(t)&&(t=t.__vccOpts),e){e=ql(e);let{class:o,style:c}=e;o&&!J(o)&&(e.class=Zs(o)),j(c)&&(oi(c)&&!W(c)&&(c=nt({},c)),e.style=wt(c))}const l=J(t)?1:er(t)?128:il(t)?64:j(t)?4:k(t)?2:0;return Z(t,e,s,i,n,l,r,!0)}function ql(t){return t?oi(t)||Yn(t)?nt({},t):t:null}function we(t,e,s=!1,i=!1){const{props:n,ref:r,patchFlag:l,children:o,transition:c}=t,a=e?Jl(n||{},e):n,u={__v_isVNode:!0,__v_skip:!0,type:t.type,props:a,key:a&&ir(a),ref:e&&e.ref?s&&r?W(r)?r.concat(Qe(e)):[r,Qe(e)]:Qe(e):r,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:o,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==St?l===-1?16:l|16:l,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:c,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&we(t.ssContent),ssFallback:t.ssFallback&&we(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return c&&i&&fi(u,c.clone(u)),u}function Gl(t=" ",e=0){return ht(xs,null,t,e)}function Ge(t="",e=!1){return e?(xt(),js(Qt,null,t)):ht(Qt,null,t)}function Lt(t){return t==null||typeof t=="boolean"?ht(Qt):W(t)?ht(St,null,t.slice()):os(t)?Vt(t):ht(xs,null,String(t))}function Vt(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:we(t)}function pi(t,e){let s=0;const{shapeFlag:i}=t;if(e==null)e=null;else if(W(e))s=16;else if(typeof e=="object")if(i&65){const n=e.default;n&&(n._c&&(n._d=!1),pi(t,n()),n._c&&(n._d=!0));return}else{s=32;const n=e._;!n&&!Yn(e)?e._ctx=Ct:n===3&&Ct&&(Ct.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else k(e)?(e={default:e,_ctx:Ct},s=32):(e=String(e),i&64?(s=16,e=[Gl(e)]):s=8);t.children=e,t.shapeFlag|=s}function Jl(...t){const e={};for(let s=0;s<t.length;s++){const i=t[s];for(const n in i)if(n==="class")e.class!==i.class&&(e.class=Zs([e.class,i.class]));else if(n==="style")e.style=wt([e.style,i.style]);else if(fs(n)){const r=e[n],l=i[n];l&&r!==l&&!(W(r)&&r.includes(l))&&(e[n]=r?[].concat(r,l):l)}else n!==""&&(e[n]=i[n])}return e}function Mt(t,e,s,i=null){Wt(t,e,7,[s,i])}const Zl=Kn();let Ql=0;function to(t,e,s){const i=t.type,n=(e?e.appContext:t.appContext)||Zl,r={uid:Ql++,vnode:t,type:i,parent:e,appContext:n,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new yr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(n.provides),ids:e?e.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:qn(i,n),emitsOptions:Vn(i,n),emit:null,emitted:null,propsDefaults:X,inheritAttrs:i.inheritAttrs,ctx:X,data:X,props:X,attrs:X,slots:X,refs:X,setupState:X,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 r.ctx={_:r},r.root=e?e.root:r,r.emit=Hl.bind(null,r),t.ce&&t.ce(r),r}let ot=null;const eo=()=>ot||Ct;let cs,zs;{const t=hs(),e=(s,i)=>{let n;return(n=t[s])||(n=t[s]=[]),n.push(i),r=>{n.length>1?n.forEach(l=>l(r)):n[0](r)}};cs=e("__VUE_INSTANCE_SETTERS__",s=>ot=s),zs=e("__VUE_SSR_SETTERS__",s=>Be=s)}const Ue=t=>{const e=ot;return cs(t),t.scope.on(),()=>{t.scope.off(),cs(e)}},ki=()=>{ot&&ot.scope.off(),cs(null)};function nr(t){return t.vnode.shapeFlag&4}let Be=!1;function so(t,e=!1,s=!1){e&&zs(e);const{props:i,children:n}=t.vnode,r=nr(t);$l(t,i,r,e),Nl(t,n,s||e);const l=r?io(t,e):void 0;return e&&zs(!1),l}function io(t,e){const s=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,_l);const{setup:i}=s;if(i){jt();const n=t.setupContext=i.length>1?ro(t):null,r=Ue(t),l=Ve(i,t,0,[t.props,n]),o=en(l);if(zt(),r(),(o||t.sp)&&!Le(t)&&Fn(t),o){if(l.then(ki,ki),e)return l.then(c=>{Ni(t,c)}).catch(c=>{ps(c,t,0)});t.asyncDep=l}else Ni(t,l)}else rr(t)}function Ni(t,e,s){k(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:j(e)&&(t.setupState=Tn(e)),rr(t)}function rr(t,e,s){const i=t.type;t.render||(t.render=i.render||Ft);{const n=Ue(t);jt();try{wl(t)}finally{zt(),n()}}}const no={get(t,e){return lt(t,"get",""),t[e]}};function ro(t){const e=s=>{t.exposed=s||{}};return{attrs:new Proxy(t.attrs,no),slots:t.slots,emit:t.emit,expose:e}}function gi(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(Tn(Nr(t.exposed)),{get(e,s){if(s in e)return e[s];if(s in Fe)return Fe[s](t)},has(e,s){return s in e||s in Fe}})):t.proxy}function lo(t,e=!0){return k(t)?t.displayName||t.name:t.name||e&&t.__name}function oo(t){return k(t)&&"__vccOpts"in t}const re=(t,e)=>jr(t,e,Be);function Ee(t,e,s){try{ls(-1);const i=arguments.length;return i===2?j(e)&&!W(e)?os(e)?ht(t,null,[e]):ht(t,e):ht(t,null,e):(i>3?s=Array.prototype.slice.call(arguments,2):i===3&&os(s)&&(s=[s]),ht(t,e,s))}finally{ls(1)}}const co="3.5.29";let Ys;const Bi=typeof window<"u"&&window.trustedTypes;if(Bi)try{Ys=Bi.createPolicy("vue",{createHTML:t=>t})}catch{}const lr=Ys?t=>Ys.createHTML(t):t=>t,fo="http://www.w3.org/2000/svg",ao="http://www.w3.org/1998/Math/MathML",Kt=typeof document<"u"?document:null,Ki=Kt&&Kt.createElement("template"),uo={insert:(t,e,s)=>{e.insertBefore(t,s||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,s,i)=>{const n=e==="svg"?Kt.createElementNS(fo,t):e==="mathml"?Kt.createElementNS(ao,t):s?Kt.createElement(t,{is:s}):Kt.createElement(t);return t==="select"&&i&&i.multiple!=null&&n.setAttribute("multiple",i.multiple),n},createText:t=>Kt.createTextNode(t),createComment:t=>Kt.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>Kt.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,s,i,n,r){const l=s?s.previousSibling:e.lastChild;if(n&&(n===r||n.nextSibling))for(;e.insertBefore(n.cloneNode(!0),s),!(n===r||!(n=n.nextSibling)););else{Ki.innerHTML=lr(i==="svg"?`<svg>${t}</svg>`:i==="mathml"?`<math>${t}</math>`:t);const o=Ki.content;if(i==="svg"||i==="mathml"){const c=o.firstChild;for(;c.firstChild;)o.appendChild(c.firstChild);o.removeChild(c)}e.insertBefore(o,s)}return[l?l.nextSibling:e.firstChild,s?s.previousSibling:e.lastChild]}},ho=Symbol("_vtc");function po(t,e,s){const i=t[ho];i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?t.removeAttribute("class"):s?t.setAttribute("class",e):t.className=e}const Vi=Symbol("_vod"),go=Symbol("_vsh"),mo=Symbol(""),xo=/(?:^|;)\s*display\s*:/;function vo(t,e,s){const i=t.style,n=J(s);let r=!1;if(s&&!n){if(e)if(J(e))for(const l of e.split(";")){const o=l.slice(0,l.indexOf(":")).trim();s[o]==null&&ts(i,o,"")}else for(const l in e)s[l]==null&&ts(i,l,"");for(const l in s)l==="display"&&(r=!0),ts(i,l,s[l])}else if(n){if(e!==s){const l=i[mo];l&&(s+=";"+l),i.cssText=s,r=xo.test(s)}}else e&&t.removeAttribute("style");Vi in t&&(t[Vi]=r?i.display:"",t[go]&&(i.display="none"))}const Ui=/\s*!important$/;function ts(t,e,s){if(W(s))s.forEach(i=>ts(t,e,i));else if(s==null&&(s=""),e.startsWith("--"))t.setProperty(e,s);else{const i=yo(t,e);Ui.test(s)?t.setProperty(ce(i),s.replace(Ui,""),"important"):t[i]=s}}const ji=["Webkit","Moz","ms"],Ps={};function yo(t,e){const s=Ps[e];if(s)return s;let i=_t(e);if(i!=="filter"&&i in t)return Ps[e]=i;i=us(i);for(let n=0;n<ji.length;n++){const r=ji[n]+i;if(r in t)return Ps[e]=r}return e}const zi="http://www.w3.org/1999/xlink";function Yi(t,e,s,i,n,r=xr(e)){i&&e.startsWith("xlink:")?s==null?t.removeAttributeNS(zi,e.slice(6,e.length)):t.setAttributeNS(zi,e,s):s==null||r&&!ln(s)?t.removeAttribute(e):t.setAttribute(e,r?"":$t(s)?String(s):s)}function Xi(t,e,s,i,n){if(e==="innerHTML"||e==="textContent"){s!=null&&(t[e]=e==="innerHTML"?lr(s):s);return}const r=t.tagName;if(e==="value"&&r!=="PROGRESS"&&!r.includes("-")){const o=r==="OPTION"?t.getAttribute("value")||"":t.value,c=s==null?t.type==="checkbox"?"on":"":String(s);(o!==c||!("_value"in t))&&(t.value=c),s==null&&t.removeAttribute(e),t._value=s;return}let l=!1;if(s===""||s==null){const o=typeof t[e];o==="boolean"?s=ln(s):s==null&&o==="string"?(s="",l=!0):o==="number"&&(s=0,l=!0)}try{t[e]=s}catch{}l&&t.removeAttribute(n||e)}function bo(t,e,s,i){t.addEventListener(e,s,i)}function _o(t,e,s,i){t.removeEventListener(e,s,i)}const qi=Symbol("_vei");function wo(t,e,s,i,n=null){const r=t[qi]||(t[qi]={}),l=r[e];if(i&&l)l.value=i;else{const[o,c]=So(e);if(i){const a=r[e]=Ro(i,n);bo(t,o,a,c)}else l&&(_o(t,o,l,c),r[e]=void 0)}}const Gi=/(?:Once|Passive|Capture)$/;function So(t){let e;if(Gi.test(t)){e={};let i;for(;i=t.match(Gi);)t=t.slice(0,t.length-i[0].length),e[i[0].toLowerCase()]=!0}return[t[2]===":"?t.slice(3):ce(t.slice(2)),e]}let Hs=0;const Co=Promise.resolve(),To=()=>Hs||(Co.then(()=>Hs=0),Hs=Date.now());function Ro(t,e){const s=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=s.attached)return;Wt(Eo(i,s.value),e,5,[i])};return s.value=t,s.attached=To(),s}function Eo(t,e){if(W(e)){const s=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{s.call(t),t._stopped=!0},e.map(i=>n=>!n._stopped&&i&&i(n))}else return e}const Ji=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,Ao=(t,e,s,i,n,r)=>{const l=n==="svg";e==="class"?po(t,i,l):e==="style"?vo(t,s,i):fs(e)?qs(e)||wo(t,e,s,i,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Po(t,e,i,l))?(Xi(t,e,i),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&Yi(t,e,i,l,r,e!=="value")):t._isVueCE&&(/[A-Z]/.test(e)||!J(i))?Xi(t,_t(e),i,r,e):(e==="true-value"?t._trueValue=i:e==="false-value"&&(t._falseValue=i),Yi(t,e,i,l))};function Po(t,e,s,i){if(i)return!!(e==="innerHTML"||e==="textContent"||e in t&&Ji(e)&&k(s));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&t.tagName==="IFRAME"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const n=t.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return Ji(e)&&J(s)?!1:e in t}const Ho=["ctrl","shift","alt","meta"],Mo={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>Ho.some(s=>t[`${s}Key`]&&!e.includes(s))},Ms=(t,e)=>{if(!t)return t;const s=t._withMods||(t._withMods={}),i=e.join(".");return s[i]||(s[i]=((n,...r)=>{for(let l=0;l<e.length;l++){const o=Mo[e[l]];if(o&&o(n,e))return}return t(n,...r)}))},Oo=nt({patchProp:Ao},uo);let Zi;function Io(){return Zi||(Zi=Kl(Oo))}const Lo=((...t)=>{const e=Io().createApp(...t),{mount:s}=e;return e.mount=i=>{const n=$o(i);if(!n)return;const r=e._component;!k(r)&&!r.render&&!r.template&&(r.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const l=s(n,!1,Fo(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),l},e});function Fo(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function $o(t){return J(t)?document.querySelector(t):t}class Wo{ctx;canvas;columns=[];data=[];options={rowHeight:40,headerHeight:48,border:!0,stripe:!0,multiSelect:!1,fixedHeader:!0,renderExpand:()=>null,spanMethod:()=>{}};scrollX=0;scrollY=0;width=0;height=0;columnPositions=[];rowOffsets=[];totalWidth=0;totalHeight=0;fixedLeftWidth=0;summaryRows=[];expandedRowKeys=new Set;selectedRowKeys=new Set;imageCache=new Map;hoverHeaderIndex=-1;flattenedColumns=[];columnLevels=0;constructor(e){this.canvas=e;const s=e.getContext("2d");if(!s)throw new Error("Could not get canvas context");this.ctx=s}destroy(){this.imageCache.forEach(e=>{e.onload=null,e.onerror=null,e.src=""}),this.imageCache.clear(),this.data=[],this.columns=[],this.summaryRows=[]}setExpandedRows(e){this.expandedRowKeys=new Set(e),this.calculateLayout(),this.render()}setData(e){this.data=e,this.calculateLayout(),this.render()}setColumns(e){this.columns=e,this.flattenColumns(),this.calculateLayout(),this.render()}flattenColumns(){this.flattenedColumns=[],this.columnLevels=0;const e=(i,n=0)=>{this.columnLevels=Math.max(this.columnLevels,n+1),i.forEach(r=>{r.children&&r.children.length>0?e(r.children,n+1):this.flattenedColumns.push(r)})};e(this.columns);const s=40;this.columnLevels>1?this.options.headerHeight=this.columnLevels*s:this.options.headerHeight=48}setOptions(e){this.options={...this.options,...e},this.calculateLayout(),this.render()}resize(e,s){this.width=e,this.height=s;const i=window.devicePixelRatio||1;this.canvas.width=e*i,this.canvas.height=s*i,this.canvas.style.width=`${e}px`,this.canvas.style.height=`${s}px`,this.ctx.resetTransform(),this.ctx.scale(i,i),this.render()}scrollTo(e,s){this.scrollX=e,this.scrollY=s,this.render()}calculateLayout(){let e=0;this.columnPositions=[0];let s=0;this.flattenedColumns.forEach(r=>{const l=r.width||100;e+=l,this.columnPositions.push(e),(r.fixed==="left"||r.fixed===!0)&&(s=e)}),this.totalWidth=e,this.fixedLeftWidth=s;let i=0;this.rowOffsets=[0];const{rowHeight:n}=this.options;this.data.forEach(r=>{i+=n,this.expandedRowKeys.has(r.id)&&(i+=n*3),this.rowOffsets.push(i)}),this.totalHeight=i,this.calculateSummaries()}getRowRange(e=20){const{headerHeight:s}=this.options,i=this.summaryRows.length*this.options.rowHeight,n=this.height-s-i,r=this.scrollY,l=r+n;let o=0;for(;o<this.rowOffsets.length&&(this.rowOffsets[o+1]??0)<r;)o++;let c=o;for(;c<this.rowOffsets.length&&(this.rowOffsets[c]??0)<l;)c++;return{startRow:Math.max(0,o-e),endRow:Math.min(this.data.length,c+1)}}calculateSummaries(){this.summaryRows=[];const e=new Map;this.flattenedColumns.forEach((s,i)=>{s.summary&&s.summary.forEach(n=>{try{const r=n(this.data);if(r&&r.label){const{label:l,value:o}=r;e.has(l)||e.set(l,new Array(this.flattenedColumns.length).fill("")),e.get(l)[i]=o}}catch(r){console.error("Summary calculation error:",r)}})}),e.forEach((s,i)=>{s[0]=i,this.summaryRows.push(s)})}render(){this.ctx.clearRect(0,0,this.width,this.height),this.drawBody(),this.drawFixedLeftBody(),this.drawHeader(),this.drawSummaryRows()}getColumnWidth(e){return e.children&&e.children.length>0?e.children.reduce((i,n)=>i+this.getColumnWidth(n),0):e.width||100}isColumnFixed(e){return e.fixed==="left"||e.fixed==="right"||e.fixed===!0?!0:e.children&&e.children.length>0?e.children.some(s=>this.isColumnFixed(s)):!1}drawHeader(){const{headerHeight:e}=this.options,s=this.columnLevels>1?40:e;this.ctx.save(),this.ctx.fillStyle="#f5f7fa",this.ctx.fillRect(0,0,this.width,e);const i=(n,r,l,o,c)=>{let a=r;n.forEach(u=>{const d=this.getColumnWidth(u),g=this.isColumnFixed(u);if(c!==g){a+=d;return}const v=!u.children||u.children.length===0,S=v?(this.columnLevels-o)*s:s,C=c?a:a-this.scrollX;(c||C+d>this.fixedLeftWidth&&C<this.width)&&(c||(this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(this.fixedLeftWidth,0,this.width-this.fixedLeftWidth,e),this.ctx.clip()),this.drawHeaderCell(u,C,d,S,l,v),c||this.ctx.restore()),u.children&&u.children.length>0&&i(u.children,a,l+s,o+1,c),a+=d})};i(this.columns,0,0,0,!1),i(this.columns,0,0,0,!0),this.ctx.restore()}setHoverHeader(e){this.hoverHeaderIndex!==e&&(this.hoverHeaderIndex=e,this.render())}setSelectedRows(e){this.selectedRowKeys=new Set(e),this.render()}drawHeaderCell(e,s,i,n,r,l){if(this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(s,r,i,n),this.ctx.clip(),this.ctx.fillStyle="#f5f7fa",this.ctx.fillRect(s,r,i,n),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.lineWidth=1,this.ctx.strokeRect(s+.5,r+.5,i,n)),e.type==="selection"){const o=this.data.length>0&&this.selectedRowKeys.size===this.data.length;this.drawCheckboxCell(o,s,r,i,n,"center")}else{this.ctx.fillStyle="#303133",this.ctx.font="bold 14px sans-serif",this.ctx.textBaseline="middle";const o=e.align||(l?"left":"center");this.ctx.textAlign=o;let c=s+10;o==="center"&&(c=s+i/2),o==="right"&&(c=s+i-24);const a=e.title||"";if(this.ctx.fillText(a,c,r+n/2),l&&e.type!=="selection"&&e.type!=="expand"){const u=this.flattenedColumns.indexOf(e);if(this.hoverHeaderIndex===u){this.ctx.fillStyle="#909399",this.ctx.beginPath();const d=s+i-18,g=r+n/2;this.ctx.arc(d,g-4,1.5,0,Math.PI*2),this.ctx.arc(d,g,1.5,0,Math.PI*2),this.ctx.arc(d,g+4,1.5,0,Math.PI*2),this.ctx.fill()}}}this.ctx.restore()}getHeaderAt(e,s){const{headerHeight:i}=this.options;if(s>i)return null;const n=this.columnLevels>1?40:i,r=(o,c,a,u)=>{let d=c;for(const g of o){const v=this.isColumnFixed(g);if(u!==v){d+=this.getColumnWidth(g);continue}const S=this.getColumnWidth(g),C=!g.children||g.children.length===0,M=C?(this.columnLevels-a)*n:n,H=a*n,A=u?d:d-this.scrollX;if(!u&&A<this.fixedLeftWidth){d+=S;continue}if(e>=A&&e<A+S&&s>=H&&s<H+M){const O=C&&g.type!=="selection"&&g.type!=="expand"&&e>=A+S-24;return{column:g,rect:{x:A,y:H,width:S,height:M},isMenu:O}}if(g.children&&g.children.length>0){const O=r(g.children,d,a+1,u);if(O)return O}d+=S}return null},l=r(this.columns,0,0,!0);return l||r(this.columns,0,0,!1)}drawBody(){const{headerHeight:e}=this.options,{startRow:s,endRow:i}=this.getRowRange(this.height),n=this.summaryRows.length*this.options.rowHeight;this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(this.fixedLeftWidth,e,this.width-this.fixedLeftWidth,this.height-e-n),this.ctx.clip();const r=new Set,l=[];for(let o=s;o<i;o++){const c=this.data[o];if(!c)continue;const a=(this.rowOffsets[o]??0)-this.scrollY+e,u=(this.rowOffsets[o+1]??0)-(this.rowOffsets[o]??0),d=o%2===1&&this.options.stripe?"#fafafa":"#fff";if(this.flattenedColumns.forEach((g,v)=>{if(g.fixed==="left"||g.fixed===!0||r.has(`${o},${v}`))return;const S=(this.columnPositions[v]??0)-this.scrollX,C=(this.columnPositions[v+1]??0)-(this.columnPositions[v]??0),M=this.options.spanMethod({row:o,column:g,rowIndex:o,columnIndex:v});if(M){const{rowspan:H,colspan:A}=M;if(H===0||A===0)return;const O=(this.columnPositions[v+A]??this.totalWidth)-(this.columnPositions[v]??0),P=(this.rowOffsets[o+H]??this.totalHeight)-(this.rowOffsets[o]??0);for(let D=0;D<H;D++)for(let G=0;G<A;G++)r.add(`${o+D},${v+G}`);l.push({col:g,val:c[g.key||""],x:S,y:a,w:O,h:P,r:o,c:v,bgColor:d})}else this.ctx.fillStyle=d,this.ctx.fillRect(S,a,C,this.options.rowHeight),this.drawCell(g,c[g.key||""],S,a,C,this.options.rowHeight,o),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.strokeRect(S+.5,a+.5,C,this.options.rowHeight))}),this.expandedRowKeys.has(c.id)){const g=a+this.options.rowHeight,v=u-this.options.rowHeight;this.ctx.fillStyle="#fdfdfd",this.ctx.fillRect(0,g,this.width,v),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.beginPath(),this.ctx.moveTo(0,g),this.ctx.lineTo(this.width,g),this.ctx.stroke()),this.drawExpandPlaceholder(c,this.fixedLeftWidth-this.scrollX,g,this.totalWidth-this.fixedLeftWidth,v)}}l.forEach(({col:o,val:c,x:a,y:u,w:d,h:g,r:v,bgColor:S})=>{this.ctx.fillStyle=S,this.ctx.fillRect(a,u,d,g),this.drawCell(o,c,a,u,d,g,v),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.strokeRect(a+.5,u+.5,d,g))}),this.ctx.restore()}drawFixedLeftBody(){const{headerHeight:e}=this.options,{startRow:s,endRow:i}=this.getRowRange(this.height),n=this.summaryRows.length*this.options.rowHeight;this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(0,e,this.fixedLeftWidth,this.height-e-n),this.ctx.clip();const r=new Set,l=[];for(let o=s;o<i;o++){const c=this.data[o];if(!c)continue;const a=(this.rowOffsets[o]??0)-this.scrollY+e,u=o%2===1&&this.options.stripe?"#fafafa":"#fff";this.flattenedColumns.forEach((d,g)=>{if(!(d.fixed==="left"||d.fixed===!0)||r.has(`${o},${g}`))return;const v=this.columnPositions[g]??0,S=(this.columnPositions[g+1]??0)-(this.columnPositions[g]??0),C=this.options.spanMethod({row:o,column:d,rowIndex:o,columnIndex:g});if(C){const{rowspan:M,colspan:H}=C;if(M===0||H===0)return;const A=(this.columnPositions[g+H]??this.fixedLeftWidth)-(this.columnPositions[g]??0),O=(this.rowOffsets[o+M]??this.totalHeight)-(this.rowOffsets[o]??0);for(let P=0;P<M;P++)for(let D=0;D<H;D++)r.add(`${o+P},${g+D}`);l.push({col:d,val:c[d.key||""],x:v,y:a,w:A,h:O,r:o,c:g,bgColor:u})}else this.ctx.fillStyle=u,this.ctx.fillRect(v,a,S,this.options.rowHeight),this.drawCell(d,c[d.key||""],v,a,S,this.options.rowHeight,o),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.strokeRect(v+.5,a+.5,S,this.options.rowHeight))})}l.forEach(({col:o,val:c,x:a,y:u,w:d,h:g,r:v,bgColor:S})=>{this.ctx.fillStyle=S,this.ctx.fillRect(a,u,d,g),this.drawCell(o,c,a,u,d,g,v),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.strokeRect(a+.5,u+.5,d,g))}),this.ctx.restore()}drawExpandPlaceholder(e,s,i,n,r){this.ctx.save(),this.ctx.fillStyle="#fef0f0",this.ctx.fillRect(s,i,n,r),this.ctx.fillStyle="#f56c6c",this.ctx.font="italic 12px sans-serif",this.ctx.textAlign="center",this.ctx.fillText(`Expanded content for row ${e.id} (Rendered via h function in overlay)`,s+n/2,i+r/2),this.ctx.restore()}drawSummaryRows(){if(this.summaryRows.length===0)return;const{rowHeight:e}=this.options,s=this.summaryRows.length*e,i=this.height-s;this.ctx.save(),this.ctx.fillStyle="#fdf6ec",this.ctx.fillRect(0,i,this.width,s);let n=0;for(let r=0;r<this.flattenedColumns.length;r++){const l=this.flattenedColumns[r];if(l&&(l.type==="selection"||l.type==="expand"||l.key==="id"))n++;else break}n===0&&(n=1),this.summaryRows.forEach((r,l)=>{const o=i+l*e;this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(this.fixedLeftWidth,o,this.width-this.fixedLeftWidth,e),this.ctx.clip(),this.flattenedColumns.forEach((c,a)=>{if(c.fixed==="left"||c.fixed===!0||a<n)return;const u=(this.columnPositions[a]??0)-this.scrollX,d=(this.columnPositions[a+1]??0)-(this.columnPositions[a]??0);this.drawTextCell(r[a],u,o,d,e,c.align),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.strokeRect(u+.5,o+.5,d,e))}),this.ctx.restore(),this.flattenedColumns.forEach((c,a)=>{if(c.fixed==="left"||c.fixed===!0){const u=this.columnPositions[a]??0,d=(this.columnPositions[a+1]??0)-(this.columnPositions[a]??0);if(a===0){const g=(this.columnPositions[n]??this.fixedLeftWidth)-(this.columnPositions[0]??0);this.ctx.save(),this.ctx.font="bold 13px sans-serif",this.ctx.fillStyle="#e6a23c",this.drawTextCell(r[0],u,o,g,e,"center"),this.ctx.restore(),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.strokeRect(u+.5,o+.5,g,e))}else{if(a<n)return;this.drawTextCell(r[a],u,o,d,e,c.align),this.options.border&&(this.ctx.strokeStyle="#ebeef5",this.ctx.strokeRect(u+.5,o+.5,d,e))}}})}),this.ctx.restore()}drawCell(e,s,i,n,r,l,o){if(this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(i,n,r,l),this.ctx.clip(),e.renderCell)this.drawTextCell(s,i,n,r,l,e.align);else switch(e.type){case"expand":this.drawExpandButton(i+(r-16)/2,n+(this.options.rowHeight-16)/2,this.expandedRowKeys.has(this.data[o]?.id??""));break;case"selection":const c=this.selectedRowKeys.has(this.data[o]?.id??"");this.drawCheckboxCell(c,i,n,r,this.options.rowHeight,"center");break;case"image":this.drawImageCell(s,i,n,r,l,e.align);break;case"checkbox":this.drawCheckboxCell(s,i,n,r,l,e.align);break;case"radio":this.drawRadioCell(s,i,n,r,l,e.align);break;case"switch":this.drawSwitchCell(s,i,n,r,l,e.align);break;case"color-picker":this.drawColorPickerCell(s,i,n,r,l,e.align);break;case"tags":this.drawTagsCell(s,i,n,r,l);break;default:this.drawTextCell(s,i,n,r,l,e.align);break}this.ctx.restore()}drawExpandButton(e,s,i){this.ctx.save(),this.ctx.translate(e+8,s+8),i&&this.ctx.rotate(Math.PI/2),this.ctx.strokeStyle="#909399",this.ctx.lineWidth=2,this.ctx.beginPath(),this.ctx.moveTo(-3,-5),this.ctx.lineTo(3,0),this.ctx.lineTo(-3,5),this.ctx.stroke(),this.ctx.restore()}drawTextCell(e,s,i,n,r,l){this.ctx.fillStyle="#606266",this.ctx.font="14px sans-serif",this.ctx.textAlign=l||"left",this.ctx.textBaseline="middle";let o=s+10;l==="center"&&(o=s+n/2),l==="right"&&(o=s+n-10);const c=e==null?"":String(e);this.ctx.fillText(c,o,i+r/2)}drawImageCell(e,s,i,n,r,l){if(!e)return;const o=String(e),c=Math.min(n,r)-10;let a=s+5;l==="center"&&(a=s+(n-c)/2),l==="right"&&(a=s+n-c-5);let u=this.imageCache.get(o);u||(u=new Image,u.src=o,this.imageCache.set(o,u),u.onload=()=>this.render(),u.onerror=()=>{console.error(`Failed to load image: ${o}`),this.imageCache.delete(o)}),u.complete&&u.naturalWidth>0?this.ctx.drawImage(u,a,i+(r-c)/2,c,c):(this.ctx.fillStyle="#f5f7fa",this.ctx.fillRect(a,i+(r-c)/2,c,c))}drawCheckboxCell(e,s,i,n,r,l){let c=s+10;l==="center"&&(c=s+(n-16)/2),l==="right"&&(c=s+n-16-10);const a=i+(r-16)/2;this.ctx.strokeStyle=e?"#409eff":"#dcdfe6",this.ctx.fillStyle=e?"#409eff":"#fff",this.ctx.lineWidth=1,this.ctx.strokeRect(c+.5,a+.5,16,16),e&&(this.ctx.fillRect(c+1,a+1,15,15),this.ctx.strokeStyle="#fff",this.ctx.beginPath(),this.ctx.moveTo(c+4,a+8),this.ctx.lineTo(c+7,a+11),this.ctx.lineTo(c+12,a+5),this.ctx.stroke())}drawRadioCell(e,s,i,n,r,l){let c=s+10;l==="center"&&(c=s+(n-16)/2),l==="right"&&(c=s+n-16-10);const a=i+(r-16)/2,u=c+16/2,d=a+16/2;this.ctx.strokeStyle=e?"#409eff":"#dcdfe6",this.ctx.fillStyle="#fff",this.ctx.beginPath(),this.ctx.arc(u,d,16/2,0,Math.PI*2),this.ctx.stroke(),this.ctx.fill(),e&&(this.ctx.fillStyle="#409eff",this.ctx.beginPath(),this.ctx.arc(u,d,16/4,0,Math.PI*2),this.ctx.fill())}drawSwitchCell(e,s,i,n,r,l){let a=s+10;l==="center"&&(a=s+(n-32)/2),l==="right"&&(a=s+n-32-10);const u=i+(r-16)/2;this.ctx.fillStyle=e?"#13ce66":"#ff4949",this.ctx.beginPath(),this.ctx.roundRect?.(a,u,32,16,16/2),this.ctx.fill(),this.ctx.fillStyle="#fff",this.ctx.beginPath();const d=e?a+32-16+2:a+2;this.ctx.arc(d+12/2,u+16/2,12/2,0,Math.PI*2),this.ctx.fill()}drawColorPickerCell(e,s,i,n,r,l){let c=s+10;l==="center"&&(c=s+(n-20)/2),l==="right"&&(c=s+n-20-10);const a=i+(r-20)/2;this.ctx.fillStyle=e||"#000",this.ctx.fillRect(c,a,20,20),this.ctx.strokeStyle="#dcdfe6",this.ctx.strokeRect(c+.5,a+.5,20,20)}drawTagsCell(e,s,i,n,r){if(!Array.isArray(e))return;let l=s+5;const o=20,c=5,a=12;e.forEach(u=>{const d=String(u);this.ctx.font=`${a}px sans-serif`;const v=this.ctx.measureText(d).width+c*2;if(l+v>s+n-5)return;const S=i+(r-o)/2;this.ctx.fillStyle="#ecf5ff",this.ctx.strokeStyle="#d9ecff",this.ctx.beginPath(),this.ctx.roundRect?.(l,S,v,o,4),this.ctx.fill(),this.ctx.stroke(),this.ctx.fillStyle="#409eff",this.ctx.textAlign="center",this.ctx.fillText(d,l+v/2,S+o-a/2),l+=v+5})}getCellAt(e,s){const{headerHeight:i}=this.options;if(s<i)return null;const{startRow:n,endRow:r}=this.getRowRange(this.height);for(let l=n;l<r;l++){const o=this.data[l];if(!o)continue;const c=(this.rowOffsets[l]??0)-this.scrollY+i,a=(this.rowOffsets[l+1]??0)-(this.rowOffsets[l]??0);if(s>=c&&s<c+a)for(let u=0;u<this.flattenedColumns.length;u++){const d=this.flattenedColumns[u],g=(this.columnPositions[u+1]??0)-(this.columnPositions[u]??0);let v=0;if(d.fixed==="left"||d.fixed===!0)v=this.columnPositions[u]??0;else if(v=(this.columnPositions[u]??0)-this.scrollX,v<this.fixedLeftWidth)continue;if(e>=v&&e<v+g){const S=d.type==="expand",C=d.type==="selection";return{row:l,col:u,rect:{x:v,y:c,width:g,height:a},column:d,data:o,isExpandBtn:S,isSelection:C}}}}return null}getRowOffsets(){return this.rowOffsets}getScrollX(){return this.scrollX}getScrollY(){return this.scrollY}getFixedLeftWidth(){return this.fixedLeftWidth}getTotalWidth(){return this.totalWidth}getTotalHeight(){return this.totalHeight}}const Do=["onClick"],ko={class:"icon"},No={class:"label"},Bo={class:"edit-dialog-content"},Ko=Ns({__name:"CanvasTable",props:{columns:{},data:{},options:{}},emits:["update:data","select-change","header-command"],setup(t,{emit:e}){const s=Ns({props:["vnode"],setup(R){return()=>R.vnode}}),i=t,n=e,r=it(null),l=it(null),o=it(null),c=it(null),a=Br(null),u=it(0),d=it(0),g=it(0),v=it(0),S=it(0),C=it(0),M=it(null),H=it(null),A=it(null),O=it(new Set),P=it(new Set),D=it(null),G=re(()=>({width:"100%",height:"100%",position:"relative",overflow:"hidden"})),Q=re(()=>({position:"absolute",top:0,left:0,pointerEvents:"none",width:"100%",height:"100%"})),tt=re(()=>{if(!M.value)return{};const{rect:R}=M.value;return{position:"absolute",left:`${R.x+R.width-24}px`,top:`${R.y+(R.height-20)/2}px`,pointerEvents:"auto"}}),et=re(()=>{if(!H.value||!l.value)return{};const R=l.value.getBoundingClientRect(),{rect:F}=H.value;let f=R.top+F.y+F.height+5,h=R.left+F.x;const p=300;return h+p>window.innerWidth&&(h=window.innerWidth-p-20),{position:"fixed",top:`${f}px`,left:`${h}px`,zIndex:2e3,pointerEvents:"auto"}}),ft=re(()=>{if(!D.value)return{};const{rect:R}=D.value;return{position:"absolute",left:`${R.x+R.width-120}px`,top:`${R.y+R.height}px`,pointerEvents:"auto"}}),Et=re(()=>{if(!D.value)return[];const{column:R}=D.value,F=[{label:"Fix to Left",onCommand:f=>{const h=i.columns.findIndex(p=>p.key===f.key);i.columns.forEach((p,x)=>{x<=h&&(p.fixed="left")}),a.value?.setColumns(i.columns)}},{label:"Unfix",onCommand:f=>{f.fixed=!1,a.value?.setColumns(i.columns)}}];return R.renderHeaderMenu?R.renderHeaderMenu(R,F):F}),fe=R=>{D.value&&(R.onCommand(D.value.column),D.value=null)},te=R=>{if(!l.value||!a.value)return;const F=l.value.getBoundingClientRect(),f=R.clientX-F.left,h=R.clientY-F.top,p=a.value.getHeaderAt(f,h);if(p){const x=i.columns.findIndex(m=>m.key===p.column.key);a.value.setHoverHeader(x),p.isMenu||p.column.type==="selection"?l.value.style.cursor="pointer":l.value.style.cursor="default"}else a.value.setHoverHeader(-1),l.value.style.cursor="default";M.value=a.value.getCellAt(f,h),M.value&&(M.value.isExpandBtn||M.value.isSelection)&&(l.value.style.cursor="pointer")},ae=R=>{if(!l.value||!a.value)return;const F=l.value.getBoundingClientRect(),f=R.clientX-F.left,h=R.clientY-F.top,p=a.value.getHeaderAt(f,h);if(p){p.isMenu?D.value={column:p.column,rect:p.rect}:p.column.type==="selection"&&(O.value.size===i.data.length?O.value.clear():i.data.forEach(y=>O.value.add(y.id)),a.value.setSelectedRows(Array.from(O.value)),n("select-change",Array.from(O.value)));return}const x=a.value.getCellAt(f,h);if(x){if(x.isExpandBtn){q(x.data.id);return}const m=x.data.id;if(x.isSelection){O.value.has(m)?O.value.delete(m):O.value.add(m),a.value.setSelectedRows(Array.from(O.value)),n("select-change",Array.from(O.value));return}i.options?.multiSelect?O.value.has(m)?O.value.delete(m):O.value.add(m):(O.value.clear(),O.value.add(m)),n("select-change",Array.from(O.value))}},Se=R=>{if(!l.value||!a.value)return;const F=l.value.getBoundingClientRect(),f=R.clientX-F.left,h=R.clientY-F.top,p=a.value.getCellAt(f,h);p&&p.column.renderEdit&&st(p)},st=R=>{H.value=R,A.value=JSON.parse(JSON.stringify(R.data))},q=R=>{P.value.has(R)?P.value.delete(R):P.value.add(R),a.value?.setExpandedRows(Array.from(P.value)),Nt()},B=()=>{H.value=null,A.value=null},Dt=()=>{if(H.value&&A.value){const R=H.value.data.id,F=i.data.findIndex(f=>f.id===R);if(F!==-1){const f=[...i.data];f[F]=A.value,n("update:data",f),a.value?.setData(f)}}B()},ue=R=>!R.column.renderEdit||!A.value?null:R.column.renderEdit(A.value,(F,f,h)=>f&&(typeof f=="string"||Array.isArray(f)||f.__v_isVNode)?Ee(F,null,f):Ee(F,f,h)),kt=R=>{if(!a.value)return{};const F=i.data.findIndex(m=>m.id===R);if(F===-1)return{};const f=a.value.getRowOffsets(),h=(f[F]??0)-C.value+(i.options?.headerHeight||48),p=(f[F+1]??0)-(f[F]??0)-(i.options?.rowHeight||40),x=a.value.getFixedLeftWidth();return{position:"absolute",top:`${h+(i.options?.rowHeight||40)}px`,left:`${x}px`,width:`${g.value-x}px`,height:`${p}px`,pointerEvents:"auto",overflow:"hidden",backgroundColor:"#fff",borderBottom:"1px solid #ebeef5",display:"flex"}},yt=()=>({marginLeft:`-${S.value}px`,minWidth:`${u.value-a.value?.getFixedLeftWidth()}px`}),je=R=>{const F=i.data.find(f=>f.id===R);return!F||!i.options?.renderExpand?null:Ee("div",{style:yt()},[i.options.renderExpand(F,(f,h,p)=>h&&(typeof h=="string"||Array.isArray(h)||h.__v_isVNode)?Ee(f,null,h):Ee(f,h,p))])},vs=R=>{const F=R.target;S.value=F.scrollLeft,a.value?.scrollTo(S.value,C.value),M.value=null},ys=R=>{const F=R.target;C.value=F.scrollTop,a.value?.scrollTo(S.value,C.value),M.value=null},ee=R=>{if(!c.value||!o.value)return;const F=R.deltaY,f=R.shiftKey?R.deltaY:R.deltaX;c.value.scrollTop+=F,o.value.scrollLeft+=f},he=R=>{const F=R[0];if(!F||!a.value)return;const{width:f,height:h}=F.contentRect;g.value=f,v.value=h,a.value.resize(f,h),Nt()},Nt=()=>{a.value&&(u.value=a.value.getTotalWidth(),d.value=a.value.getTotalHeight())};let de=null;return Dn(()=>{l.value&&(a.value=new Wo(l.value),a.value.setColumns(i.columns),a.value.setData(i.data),a.value.setOptions(i.options||{}),Nt(),de=new ResizeObserver(he),r.value&&de.observe(r.value),l.value.addEventListener("mousemove",te),l.value.addEventListener("mousedown",ae),l.value.addEventListener("dblclick",Se))}),ai(()=>{de?.disconnect(),l.value?.removeEventListener("mousemove",te),l.value?.removeEventListener("mousedown",ae),l.value?.removeEventListener("dblclick",Se),a.value?.destroy(),a.value=null}),ye(()=>i.columns,R=>{a.value?.setColumns(R),Nt()},{deep:!0}),ye(()=>i.data,R=>{a.value?.setData(R),Nt()},{deep:!0}),ye(()=>i.options,R=>{R&&a.value?.setOptions(R)},{deep:!0}),(R,F)=>(xt(),Ot("div",{class:"canvas-table-container",ref_key:"containerRef",ref:r},[Z("div",{class:"canvas-wrapper",style:wt(G.value),onWheel:Ms(ee,["prevent"])},[Z("canvas",{ref_key:"canvasRef",ref:l},null,512),Z("div",{class:"scrollbar horizontal",ref_key:"hScrollRef",ref:o,onScroll:vs},[Z("div",{style:wt({width:u.value+"px",height:"1px"})},null,4)],544),Z("div",{class:"scrollbar vertical",ref_key:"vScrollRef",ref:c,onScroll:ys},[Z("div",{style:wt({height:d.value+"px",width:"1px"})},null,4)],544),Z("div",{class:"table-overlays",style:wt(Q.value)},[M.value&&M.value.column.renderEdit?(xt(),Ot("div",{key:0,class:"edit-btn",style:wt(tt.value),onClick:F[0]||(F[0]=Ms(f=>st(M.value),["stop"]))},[...F[2]||(F[2]=[Z("svg",{viewBox:"0 0 24 24",width:"14",height:"14"},[Z("path",{fill:"currentColor",d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"})],-1)])],4)):Ge("",!0),D.value?(xt(),Ot("div",{key:1,class:"header-menu-overlay",onClick:F[1]||(F[1]=Ms(f=>D.value=null,["self"]))},[Z("div",{class:"header-menu",style:wt(ft.value)},[(xt(!0),Ot(St,null,Hi(Et.value,f=>(xt(),Ot("div",{key:f.label,class:"menu-item",onClick:h=>fe(f)},[Z("span",ko,Os(f.icon||"•"),1),Z("span",No,Os(f.label),1)],8,Do))),128))],4)])):Ge("",!0),(xt(!0),Ot(St,null,Hi(P.value,f=>(xt(),Ot("div",{key:f,class:"expand-row-overlay",style:wt(kt(f))},[(xt(),js(yl(je(f))))],4))),128)),(xt(),js(rl,{to:"body"},[H.value?(xt(),Ot("div",{key:0,class:"edit-dialog-popover",style:wt(et.value)},[Z("div",Bo,[ht(Cn(s),{vnode:ue(H.value)},null,8,["vnode"])]),Z("div",{class:"edit-dialog-footer"},[Z("button",{class:"small",onClick:B},"Cancel"),Z("button",{class:"small primary",onClick:Dt},"Save")])],4)):Ge("",!0),H.value?(xt(),Ot("div",{key:1,class:"popover-click-mask",onClick:B})):Ge("",!0)]))],4)],36)],512))}}),Vo=(t,e)=>{const s=t.__vccOpts||t;for(const[i,n]of e)s[i]=n;return s},Uo=Vo(Ko,[["__scopeId","data-v-34fbfef2"]]),jo={class:"app-container"},zo={class:"table-holder"},Yo=Ns({__name:"App",setup(t){const e=it([{key:"expand",title:"",type:"expand",width:40,align:"center",fixed:"left"},{key:"selection",title:"",type:"selection",width:40,align:"center",fixed:"left"},{title:"Group 1",fixed:"left",children:[{key:"id",title:"ID",type:"text",width:60,align:"center",fixed:"left"},{key:"name",title:"Name",type:"text",width:150,fixed:"left",renderHeader:(r,l)=>l("div",{style:{color:"red"}},r.title),renderEdit:(r,l)=>l("div",{style:{padding:"20px"}},[l("h3","Edit Name"),l("input",{value:r.name,style:{width:"100%",padding:"8px",marginTop:"10px"},onInput:o=>r.name=o.target.value})])}]},{key:"avatar",title:"Avatar",type:"image",width:80,align:"center"},{key:"age",title:"Age",type:"text",width:80,align:"center",summary:[r=>{const l=r.reduce((o,c)=>o+(Number(c.age)||0),0);return{label:"平均值",value:Math.round(l/r.length)}},r=>({label:"最大值",value:r.reduce((o,c)=>Math.max(o,Number(c.age)||0),0)})]},{key:"status",title:"Active",type:"switch",width:100,align:"center",summary:[r=>({label:"平均值",value:`${r.filter(o=>o.status).length} active`})]},{key:"tags",title:"Tags",type:"tags",width:200},{key:"color",title:"Color",type:"color-picker",width:100,align:"center"},{key:"address",title:"Address",type:"text",width:300},{key:"email",title:"Email",type:"text",width:200}]),i=it((r=>Array.from({length:r},(l,o)=>({id:o+1,name:`User ${o+1}`,avatar:`https://api.dicebear.com/7.x/avataaars/svg?seed=${o}`,age:20+o%30,status:o%2===0,tags:["Vue","TS","Canvas"].slice(0,o%3+1),color:o%2===0?"#409eff":"#67c23a",address:`Street ${o+1}, City ${o%10}`,email:`user${o+1}@example.com`})))(1e3)),n={border:!0,stripe:!0,multiSelect:!0,renderExpand:(r,l)=>l("div",{style:{padding:"20px",background:"#fafafa"}},[l("h4",{},`Details for ${r.name}`),l("p",{},`This is an expanded row for user ${r.id}. You can put any component here.`),l("div",{style:{display:"flex",gap:"10px"}},[l("button",{onClick:()=>alert("Action 1")},"Action 1"),l("button",{onClick:()=>alert("Action 2")},"Action 2")])]),spanMethod:({rowIndex:r,columnIndex:l})=>{if(r===2&&l===7)return{rowspan:2,colspan:2};if((r===2||r===3)&&(l===7||l===8))return r===2&&l===7?{rowspan:2,colspan:2}:{rowspan:0,colspan:0}}};return(r,l)=>(xt(),Ot("div",jo,[l[1]||(l[1]=Z("h1",null,"Canvas Table Demo (1000 Rows)",-1)),Z("div",zo,[ht(Uo,{columns:e.value,data:i.value,"onUpdate:data":l[0]||(l[0]=o=>i.value=o),options:n},null,8,["columns","data"])])]))}});Lo(Yo).mount("#app");
@@ -5,9 +5,10 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>draw-table</title>
8
+ <script type="module" crossorigin src="/assets/index-C5vPZIAB.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-BoSk-1mt.css">
8
10
  </head>
9
11
  <body>
10
12
  <div id="app"></div>
11
- <script type="module" src="/src/main.ts"></script>
12
13
  </body>
13
14
  </html>
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "draw-table-vue",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "dev": "vite",
7
+ "build": "vue-tsc -b && vite build",
8
+ "preview": "vite preview"
9
+ },
10
+ "dependencies": {
11
+ "vue": "^3.5.25"
12
+ },
13
+ "devDependencies": {
14
+ "@types/node": "^24.10.1",
15
+ "@vitejs/plugin-vue": "^6.0.2",
16
+ "@vue/tsconfig": "^0.8.1",
17
+ "typescript": "~5.9.3",
18
+ "vite": "^7.3.1",
19
+ "vue-tsc": "^3.1.5"
20
+ },
21
+ "engines": {
22
+ "node": ">=20.19.0"
23
+ }
24
+ }
package/package.json CHANGED
@@ -1,7 +1,20 @@
1
1
  {
2
2
  "name": "draw-table-vue",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
+ "main": "./dist/draw-table.umd.js",
6
+ "module": "./dist/draw-table.es.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/draw-table.es.js",
12
+ "require": "./dist/draw-table.umd.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
5
18
  "scripts": {
6
19
  "dev": "vite",
7
20
  "build": "vue-tsc -b && vite build",
@@ -16,6 +29,7 @@
16
29
  "@vue/tsconfig": "^0.8.1",
17
30
  "typescript": "~5.9.3",
18
31
  "vite": "^7.3.1",
32
+ "vite-plugin-dts": "^4.5.4",
19
33
  "vue-tsc": "^3.1.5"
20
34
  },
21
35
  "engines": {
@@ -1,3 +0,0 @@
1
- {
2
- "recommendations": ["Vue.volar"]
3
- }
package/docs/DESIGN.md DELETED
@@ -1,38 +0,0 @@
1
- # Canvas 表格组件设计文档
2
-
3
- ## 1. 核心架构
4
-
5
- 本组件采用 **Canvas 渲染引擎 + Vue 状态管理** 的混合架构,旨在解决大数据量下 DOM 渲染性能瓶颈。
6
-
7
- ### 1.1 CanvasRenderer (渲染引擎)
8
- - **职责**:负责表格的所有图形绘制,包括单元格、表头、固定列、固定行、聚合行等。
9
- - **虚拟滚动**:基于 `scrollY` 和 `scrollX` 计算可见区域的行和列。
10
- - **布局引擎**:维护 `columnPositions` 和 `rowOffsets`,支持动态行高(如展开行)和多级表头。
11
- - **坐标映射**:提供 `getCellAt(x, y)` 和 `getHeaderAt(x, y)` 方法,将屏幕坐标映射到数据模型,支持精确识别展开按钮点击。
12
- - **内存优化**:实现 `imageCache` 机制,通过 `Map` 缓存已加载 of 图片对象,并在组件卸载时显式销毁资源,防止内存泄漏。
13
- - **列展平逻辑**:支持嵌套的 `children` 列配置,内部通过 `flattenedColumns` 进行数据映射,确保多级表头下的数据正确对齐。
14
-
15
- ### 1.2 CanvasTable.vue (Vue 容器)
16
- - **职责**:管理 Canvas 生命周期、同步原生滚动条、维护覆盖层(编辑弹窗、按钮、展开内容)。
17
- - **交互层**:利用 `Teleport` 将弹窗挂载到 `body`,解决层级冲突;通过 `h` 函数代理逻辑,智能处理 VNode 参数,支持高度自定义的编辑与展开内容渲染。
18
- - **自适应**:通过 `ResizeObserver` 监听容器尺寸变化,动态调整 Canvas 分辨率与渲染内容。
19
-
20
- ## 2. 核心功能实现
21
-
22
- ### 2.1 多单元格类型支持
23
- - **内置类型**:`text`, `image`, `checkbox`, `radio`, `switch`, `color-picker`, `tags`。
24
- - **特殊列**:`selection` (勾选列), `expand` (展开列)。
25
- - **扩展性**:每种类型在 `renderer.ts` 中有独立的绘制方法,支持通过配置 `ColumnConfig.type` 切换。
26
-
27
- ### 2.2 行内编辑与展开
28
- - **编辑**:悬浮显示编辑图标或双击主行区域,弹出基于 `h` 函数渲染的自定义对话框。
29
- - **展开**:使用专门的 `expand` 列展示展开按钮。展开时,主数据行保持固定高度显示在顶部,详细内容在下方撑开显示。
30
-
31
- ### 2.3 布局与样式
32
- - **固定行列**:支持左侧固定列(通过 `fixed: 'left'` 配置)和顶部/底部固定行。
33
- - **合并单元格**:支持 `spanMethod` 动态合并行列。
34
- - **样式**:内置边框、斑马线、聚合行(Summary Rows)支持。
35
-
36
- ## 3. 性能表现
37
- - **按需绘制**:仅绘制可见区域,1000+ 行数据滚动依然保持 60FPS。
38
- - **资源清理**:在 `onUnmounted` 中自动销毁渲染引擎实例,释放内存占用。