kivii-public-components 0.2.48 → 0.2.49

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.
@@ -129199,7 +129199,7 @@ function K9(e, t = {}) {
129199
129199
  sileroVad: t,
129200
129200
  tenVad: n,
129201
129201
  sampleRate: U9,
129202
- numThreads: Math.min(Math.max(navigator.hardwareConcurrency || 1, 1), 4),
129202
+ numThreads: 1,
129203
129203
  provider: "cpu",
129204
129204
  debug: 0,
129205
129205
  bufferSizeInSeconds: 30
@@ -5825,4 +5825,4 @@ echarts.use([`+c+`]);`:`Unknown series `+s))}return}if(t===`tooltip`){if(f){proc
5825
5825
  x-vue-echarts>:first-child,x-vue-echarts>:first-child>canvas{border-radius:inherit;}
5826
5826
  `;if(typeof document<`u`)if(Array.isArray(document.adoptedStyleSheets)&&`replaceSync`in CSSStyleSheet.prototype){let e=new CSSStyleSheet;e.replaceSync(B9),document.adoptedStyleSheets=[...document.adoptedStyleSheets,e]}else{let e=document.createElement(`style`);e.textContent=B9,document.head.appendChild(e)}var Rpe=Ppe(),zpe=Symbol(),Bpe=Symbol(),Vpe=Symbol(),Hpe=(0,t.defineComponent)({name:`Echarts`,inheritAttrs:!1,props:{option:Object,theme:{type:[Object,String]},initOptions:Object,updateOptions:Object,group:String,manualUpdate:Boolean,...Cpe,...Epe},emits:{},slots:Object,setup(e,{attrs:n,expose:r,slots:i}){let a=(0,t.shallowRef)(),o=(0,t.shallowRef)(),s=(0,t.inject)(zpe,null),c=(0,t.inject)(Bpe,null),l=(0,t.inject)(Vpe,null),{autoresize:u,manualUpdate:d,loading:f,loadingOptions:p}=(0,t.toRefs)(e),m=(0,t.computed)(()=>e.theme||(0,t.toValue)(s)),h=(0,t.computed)(()=>e.initOptions||(0,t.toValue)(c)||void 0),g=(0,t.computed)(()=>e.updateOptions||(0,t.toValue)(l)),_=(0,t.computed)(()=>Ope(n)),v={},y=new Map,{teleportedSlots:b,patchOption:x}=Npe(i,()=>{!d.value&&e.option&&o.value&&w(o.value,e.option)}),S;function C(e){let t={},n=(e?.replaceMerge??[]).filter(e=>e!=null);return n.length>0&&(t.replaceMerge=[...new Set(n)]),e?.notMerge!==void 0&&(t.notMerge=e.notMerge),t}function w(e,t,n,r=!1){let i=x(t);if(r){e.setOption(i,n??{}),S=void 0;return}if(g.value){let t=n??g.value;e.setOption(i,t),S=void 0;return}let a=Lpe(S,i),o=C(a.plan);e.setOption(a.option,o),S=a.signature}Object.keys(n).filter(e=>j9(e)).forEach(e=>{if(e.indexOf(`Native:`)===2){let t=`on${e.charAt(9).toUpperCase()}${e.slice(10)}`;v[t]=n[e];return}let t=e.charAt(2).toLowerCase()+e.slice(3),r;t.indexOf(`zr:`)===0&&(r=!0,t=t.substring(3));let i;t.substring(t.length-4)===`Once`&&(i=!0,t=t.substring(0,t.length-4)),y.set({event:t,zr:r,once:i},n[e])});function T(){if(!a.value)return;let n=o.value=Q0(a.value,m.value,h.value);e.group&&(n.group=e.group),y.forEach((e,{zr:t,once:r,event:i})=>{if(!e)return;let a=t?n.getZr():n;if(r){let t=e,n=!1;e=(...r)=>{n||(n=!0,t(...r),a.off(i,e))}}a.on(i,e)});function r(){n&&!n.isDisposed()&&n.resize()}function i(){let{option:t}=e;if(d.value){t&&w(n,t,void 0,!0);return}t&&w(n,t)}u.value?(0,t.nextTick)(()=>{r(),i()}):i()}let E=(t,n,r)=>{if(!e.manualUpdate){N9("`setOption` is only available when `manual-update` is `true`.");return}let i=typeof n==`boolean`?{notMerge:n,lazyUpdate:r}:n;o.value&&w(o.value,t,i??void 0,!0)};function D(){o.value&&=(o.value.dispose(),void 0),S=void 0}(0,t.watch)(()=>e.option,e=>{if(!e){S=void 0;return}if(d.value){N9("`option` prop changes are ignored when `manual-update` is `true`.");return}o.value&&w(o.value,e)},{deep:!0}),(0,t.watch)([d,h],()=>{D(),T()},{deep:!0}),(0,t.watch)(m,e=>{o.value?.setTheme(e||{})},{deep:!0}),(0,t.watchEffect)(()=>{e.group&&o.value&&(o.value.group=e.group)});let O=xpe(o);return Tpe(o,f,p),Spe(o,u,a),(0,t.onMounted)(()=>{T()}),(0,t.onBeforeUnmount)(()=>{Rpe&&a.value?a.value.__dispose=D:D()}),r({setOption:E,root:a,chart:o,...O}),(()=>(0,t.h)(L9,{..._.value,...v,ref:a,class:[`echarts`,_.value.class]},b()))}}),Upe={class:`echart-renderer`},Wpe=$T((0,t.defineComponent)({__name:`EchartsFieldRenderer`,props:{type:{},option:{},loading:{type:Boolean},theme:{}},setup(e){return K4([mce,Ice,Zce,sle,kue,rue,fue,Wue,Lue,bfe,hfe,Afe,kde,Zfe,V8,ype,Nde,Hde]),(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Upe,[(0,t.createVNode)((0,t.unref)(Hpe),{option:e.option,loading:e.loading,theme:e.theme,autoresize:``,style:{width:`100%`,height:`100%`}},null,8,[`option`,`loading`,`theme`])]))}}),[[`__scopeId`,`data-v-a20c87e3`]]);function Gpe(e,t,n,r,i){if(!e||e.length===0)return Qpe(n);let a;return a=t===`pie`?qpe(e,n,r):t===`gauge`?Jpe(e,n,r):t===`radar`?Ype(e,n,r):t===`heatmap`?Xpe(e,n,r):t===`funnel`?Zpe(e,n,r):Kpe(e,t,n,r),i&&(a=V9(a,i)),a}function Kpe(e,t,n,r){let i=e.map(e=>e[r.xField]),a=Array.isArray(r.yField)?r.yField:[r.yField],o=a.map(n=>({name:n,type:t===`scatter`?`scatter`:t,data:e.map(e=>e[n]??null),smooth:t===`line`}));return{title:{text:n,left:`center`,textStyle:{fontSize:14}},tooltip:{trigger:`axis`},legend:a.length>1?{bottom:0}:void 0,grid:{left:`3%`,right:`4%`,bottom:a.length>1?40:20,containLabel:!0},xAxis:{type:`category`,data:i,axisLabel:{rotate:i.length>8?30:0}},yAxis:{type:`value`},series:o}}function qpe(e,t,n){let r=Array.isArray(n.yField)?n.yField[0]:n.yField,i=e.map(e=>({name:e[n.xField],value:e[r]??0}));return{title:{text:t,left:`center`,textStyle:{fontSize:14}},tooltip:{trigger:`item`,formatter:`{b}: {c} ({d}%)`},legend:{bottom:0,type:`scroll`},series:[{type:`pie`,radius:[`35%`,`65%`],center:[`50%`,`50%`],data:i,label:{show:!0,formatter:`{b}
5827
5827
  {d}%`}}]}}function Jpe(e,t,n){let r=Array.isArray(n.yField)?n.yField[0]:n.yField,i=e[0]?.[r]??0;return{title:{text:t,left:`center`,textStyle:{fontSize:14}},tooltip:{formatter:`{b}: {c}`},series:[{type:`gauge`,detail:{formatter:`{value}`},data:[{value:i,name:r}]}]}}function Ype(e,t,n){let r=Array.isArray(n.yField)?n.yField[0]:n.yField,i=n.seriesField??`max`,a=e.map(e=>({name:e[n.xField],max:e[i]??Math.ceil((e[r]??0)*1.3)})),o=e.map(e=>e[r]??0);return{title:{text:t,left:`center`,textStyle:{fontSize:14}},tooltip:{trigger:`item`},radar:{indicator:a,radius:`65%`,center:[`50%`,`55%`]},series:[{type:`radar`,data:[{value:o,name:t,areaStyle:{opacity:.25}}]}]}}function Xpe(e,t,n){let r=n.xField,i=Array.isArray(n.yField)?n.yField[0]:n.yField,a=n.seriesField??`value`,o=[...new Set(e.map(e=>e[r]))],s=[...new Set(e.map(e=>e[i]))],c=e.map(e=>[o.indexOf(e[r]),s.indexOf(e[i]),e[a]??0]),l=Math.max(...e.map(e=>e[a]??0));return{title:{text:t,left:`center`,textStyle:{fontSize:14}},tooltip:{position:`top`,formatter:e=>`${o[e.data[0]]} / ${s[e.data[1]]}: ${e.data[2]}`},grid:{left:`3%`,right:`4%`,bottom:20,top:50,containLabel:!0},xAxis:{type:`category`,data:o,splitArea:{show:!0}},yAxis:{type:`category`,data:s,splitArea:{show:!0}},visualMap:{min:0,max:l,calculable:!0,orient:`horizontal`,left:`center`,bottom:-10,itemHeight:80},series:[{type:`heatmap`,data:c,label:{show:!1}}]}}function Zpe(e,t,n){let r=Array.isArray(n.yField)?n.yField[0]:n.yField,i=e.map(e=>({name:e[n.xField],value:e[r]??0}));return{title:{text:t,left:`center`,textStyle:{fontSize:14}},tooltip:{trigger:`item`,formatter:`{b}: {c} ({d}%)`},legend:{bottom:0,type:`scroll`},series:[{type:`funnel`,left:`10%`,width:`80%`,top:40,bottom:30,sort:`descending`,gap:2,label:{show:!0,position:`inside`,formatter:`{b}
5828
- {d}%`},data:i}]}}function Qpe(e){return{title:{text:e,left:`center`,textStyle:{fontSize:14}},graphic:[{type:`text`,left:`center`,top:`middle`,style:{text:`暂无数据`,fill:`#999`,fontSize:14}}]}}function V9(e,t){let n={...e};for(let r of Object.keys(t))t[r]&&typeof t[r]==`object`&&!Array.isArray(t[r])?n[r]=V9(e[r]??{},t[r]):n[r]=t[r];return n}var $pe={class:`flex items-center gap-1 flex-shrink-0 ml-2`},eme={class:`flex-1 overflow-hidden relative flex items-center justify-center p-1`},tme={key:0,class:`flex flex-col items-center gap-2 text-red-500 text-[13px]`},nme=(0,t.defineComponent)({__name:`EchartsFieldWidget`,props:{widget:{},editable:{type:Boolean}},emits:[`edit`,`remove`],setup(e,{emit:n}){let r=(0,t.inject)(`isDark`,(0,t.ref)(!1)),i=e,a=n;function o(e,t){if(t){let n=t.split(`.`).reduce((e,t)=>e?.[t],e);return Array.isArray(n)?n:[]}if(Array.isArray(e))return e;for(let t of[`Results`,`data`,`list`,`rows`,`items`])if(Array.isArray(e?.[t]))return e[t];return[]}let s=(0,t.ref)(!1),c=(0,t.ref)(``),l=(0,t.ref)([]),u=(0,t.computed)(()=>Gpe(l.value,i.widget.type,i.widget.title,i.widget.api.mapping,i.widget.echartsOverride));async function d(){if(i.widget.api.url){s.value=!0,c.value=``;try{let e={method:i.widget.api.method||`GET`,url:i.widget.api.url,headers:i.widget.api.headers};e.method===`GET`?e.params=i.widget.api.params:e.data=i.widget.api.params,l.value=o((await xO(e)).data,i.widget.api.dataPath)}catch(e){c.value=e.message||`请求失败`,l.value=[]}finally{s.value=!1}}}let f=null;function p(){f&&=(clearInterval(f),null);let e=i.widget.api.refreshInterval;e&&e>0&&(f=setInterval(d,e*1e3))}return(0,t.onMounted)(()=>{d(),p()}),(0,t.onUnmounted)(()=>{f&&clearInterval(f)}),(0,t.watch)(()=>i.widget.api.url,()=>{d(),p()}),(n,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:`w-full h-full flex flex-col rounded-lg shadow-sm overflow-hidden`,style:(0,t.normalizeStyle)({backgroundColor:(0,t.unref)(r)?`#18181c`:`#ffffff`,borderWidth:`1px`,borderStyle:`solid`,borderColor:(0,t.unref)(r)?`#ffffff17`:`transparent`})},[(0,t.createElementVNode)(`div`,{class:`flex items-center justify-between px-3 py-2 min-h-[36px] flex-shrink-0 cursor-move select-none`,style:(0,t.normalizeStyle)({borderBottomWidth:`1px`,borderBottomStyle:`solid`,borderBottomColor:(0,t.unref)(r)?`#ffffff17`:`#f3f4f6`})},[(0,t.createElementVNode)(`span`,{class:`text-[13px] font-semibold truncate`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#e5e7eb`:`#374151`})},(0,t.toDisplayString)(e.widget.title||`未命名图表`),5),(0,t.createElementVNode)(`div`,$pe,[(0,t.createVNode)((0,t.unref)(mb),{trigger:`hover`},{trigger:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`button`,{class:`w-6 h-6 flex items-center justify-center rounded hover:text-blue-500 hover:bg-blue-50 transition-colors`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#6b7280`:`#9ca3af`}),onClick:(0,t.withModifiers)(d,[`stop`])},[...i[2]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-rotate-right text-xs`},null,-1)]],4)]),default:(0,t.withCtx)(()=>[i[3]||=(0,t.createTextVNode)(` 刷新数据 `,-1)]),_:1}),e.editable?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:0},[(0,t.createVNode)((0,t.unref)(mb),{trigger:`hover`},{trigger:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`button`,{class:`w-6 h-6 flex items-center justify-center rounded hover:text-blue-500 hover:bg-blue-50 transition-colors`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#6b7280`:`#9ca3af`}),onClick:i[0]||=(0,t.withModifiers)(t=>a(`edit`,e.widget.id),[`stop`])},[...i[4]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-gear text-xs`},null,-1)]],4)]),default:(0,t.withCtx)(()=>[i[5]||=(0,t.createTextVNode)(` 配置 `,-1)]),_:1}),(0,t.createVNode)((0,t.unref)(mb),{trigger:`hover`},{trigger:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`button`,{class:`w-6 h-6 flex items-center justify-center rounded hover:text-red-500 hover:bg-red-50 transition-colors`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#6b7280`:`#9ca3af`}),onClick:i[1]||=(0,t.withModifiers)(t=>a(`remove`,e.widget.id),[`stop`])},[...i[6]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-xmark text-xs`},null,-1)]],4)]),default:(0,t.withCtx)(()=>[i[7]||=(0,t.createTextVNode)(` 删除 `,-1)]),_:1})],64)):(0,t.createCommentVNode)(``,!0)])],4),(0,t.createElementVNode)(`div`,eme,[c.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,tme,[i[9]||=(0,t.createElementVNode)(`i`,{class:`fa-solid fa-triangle-exclamation text-base`},null,-1),(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(c.value),1),(0,t.createVNode)((0,t.unref)(km),{size:`tiny`,onClick:d},{default:(0,t.withCtx)(()=>[...i[8]||=[(0,t.createTextVNode)(`重试`,-1)]]),_:1})])):s.value&&l.value.length===0?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(gT),{key:1,size:`medium`})):((0,t.openBlock)(),(0,t.createBlock)(Wpe,{key:2,type:e.widget.type,option:u.value,loading:s.value,theme:(0,t.unref)(r)?`dark`:void 0},null,8,[`type`,`option`,`loading`,`theme`]))])],4))}}),rme=(0,t.defineComponent)({__name:`EchartsFieldConfigDrawer`,props:{show:{type:Boolean},widget:{}},emits:[`update:show`,`save`],setup(e,{emit:n}){let r=e,i=n,a=(0,t.ref)(null),o=(0,t.ref)(``);(0,t.watch)(()=>r.widget,e=>{if(a.value=e?JSON.parse(JSON.stringify(e)):null,a.value){let e=a.value.api.mapping.yField;o.value=Array.isArray(e)?e.join(`, `):e??``}},{immediate:!0});function s(){if(!a.value)return;let e=o.value.split(`,`).map(e=>e.trim()).filter(Boolean);a.value.api.mapping.yField=e.length===1?e[0]:e}function c(e,n,r){return{value:r,label:n,renderLabel:()=>(0,t.h)(`span`,{style:`display:flex;align-items:center;gap:8px`},[(0,t.h)(`i`,{class:e,style:`width:14px;text-align:center;opacity:0.7`}),(0,t.h)(`span`,n)])}}let l=[c(`fa-solid fa-chart-line`,`折线图`,`line`),c(`fa-solid fa-chart-column`,`柱状图`,`bar`),c(`fa-solid fa-chart-pie`,`饼图`,`pie`),c(`fa-solid fa-gauge`,`仪表盘`,`gauge`),c(`fa-solid fa-circle-dot`,`散点图`,`scatter`),c(`fa-solid fa-spider`,`雷达图`,`radar`),c(`fa-solid fa-fire`,`热力图`,`heatmap`),c(`fa-solid fa-filter`,`漏斗图`,`funnel`)],u=[{label:`GET`,value:`GET`},{label:`POST`,value:`POST`}];function d(){a.value&&(i(`save`,JSON.parse(JSON.stringify(a.value))),i(`update:show`,!1))}function f(){i(`update:show`,!1)}return(n,r)=>((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(gC),{show:e.show,width:420,placement:`right`,"onUpdate:show":r[7]||=e=>i(`update:show`,e)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_C),{title:`图表配置`,closable:``},{footer:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(xC),{justify:`end`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(km),{onClick:f},{icon:(0,t.withCtx)(()=>[...r[12]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-xmark`},null,-1)]]),default:(0,t.withCtx)(()=>[r[13]||=(0,t.createTextVNode)(` 取消 `,-1)]),_:1}),(0,t.createVNode)((0,t.unref)(km),{type:`primary`,onClick:d},{icon:(0,t.withCtx)(()=>[...r[14]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-floppy-disk`},null,-1)]]),default:(0,t.withCtx)(()=>[r[15]||=(0,t.createTextVNode)(` 保存 `,-1)]),_:1})]),_:1})]),default:(0,t.withCtx)(()=>[a.value?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(KC),{key:0,"label-placement":`top`,"label-width":`auto`,size:`small`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[8]||=[(0,t.createTextVNode)(`基础信息`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`标题`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:a.value.title,"onUpdate:value":r[0]||=e=>a.value.title=e,placeholder:`请输入图表标题`},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`图表类型`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(iy),{value:a.value.type,"onUpdate:value":r[1]||=e=>a.value.type=e,options:l},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[9]||=[(0,t.createTextVNode)(`接口配置`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`请求方式`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(iy),{value:a.value.api.method,"onUpdate:value":r[2]||=e=>a.value.api.method=e,options:u,style:{width:`120px`}},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`接口地址 (URL)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:a.value.api.url,"onUpdate:value":r[3]||=e=>a.value.api.url=e,placeholder:`/api/your-data-endpoint`},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[10]||=[(0,t.createTextVNode)(`数据字段映射`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`X轴字段(分类/时间)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:a.value.api.mapping.xField,"onUpdate:value":r[4]||=e=>a.value.api.mapping.xField=e,placeholder:`如: date, month, name`},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`Y轴字段(数值,多个用英文逗号分隔)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:o.value,"onUpdate:value":r[5]||=e=>o.value=e,placeholder:`如: value 或 sales, cost`,onBlur:s},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[11]||=[(0,t.createTextVNode)(`自动刷新`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`刷新间隔(秒,0 = 不刷新)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(iT),{value:a.value.api.refreshInterval,"onUpdate:value":r[6]||=e=>a.value.api.refreshInterval=e,min:0,step:10,placeholder:`0`,style:{width:`100%`}},null,8,[`value`])]),_:1})]),_:1})):(0,t.createCommentVNode)(``,!0)]),_:1})]),_:1},8,[`show`]))}}),H9=[{type:`line`,label:`折线图`,icon:`fa-solid fa-chart-line`},{type:`bar`,label:`柱状图`,icon:`fa-solid fa-chart-column`},{type:`pie`,label:`饼图`,icon:`fa-solid fa-chart-pie`},{type:`gauge`,label:`仪表盘`,icon:`fa-solid fa-gauge`},{type:`scatter`,label:`散点图`,icon:`fa-solid fa-circle-dot`},{type:`radar`,label:`雷达图`,icon:`fa-solid fa-spider`},{type:`heatmap`,label:`热力图`,icon:`fa-solid fa-fire`},{type:`funnel`,label:`漏斗图`,icon:`fa-solid fa-filter`}],ime={class:`flex flex-1 overflow-hidden`},ame={class:`flex flex-col gap-1 px-2 py-2`},ome=[`onClick`],sme={class:`flex-1 overflow-hidden flex flex-col relative`},cme=[`disabled`],lme={key:0,class:`fa-solid fa-spinner fa-spin`},ume={class:`fab-label`},dme={class:`flex-1 overflow-y-auto`},fme={key:0,class:`h-full flex items-center justify-center`},pme=$T((0,t.defineComponent)({__name:`EchartsField`,props:{widgets:{},editable:{type:Boolean},apiConfig:{}},emits:[`update:widgets`],setup(e,{emit:n}){let r=e,i=(0,t.ref)(!1),a=(0,t.computed)(()=>r.editable!==!1&&!i.value),o=n,s=(0,t.ref)(new Map),c=(0,t.ref)([]),l=!1;(0,t.watch)(()=>r.widgets,e=>{if(l){l=!1;return}if(!e?.length)return;let t=new Map;e.forEach(e=>t.set(e.id,JSON.parse(JSON.stringify(e)))),s.value=t,c.value=e.map(e=>({i:e.id,x:e.layout.x,y:e.layout.y,w:e.layout.w,h:e.layout.h}))},{immediate:!0});let u=(0,t.computed)(()=>c.value.length>0);function d(){let e=c.value.map(e=>({...s.value.get(e.i),layout:{x:e.x,y:e.y,w:e.w,h:e.h}}));l=!0,o(`update:widgets`,e)}function f(e){e.forEach(e=>{let t=s.value.get(e.i);t&&(t.layout={x:e.x,y:e.y,w:e.w,h:e.h})}),d()}function p(e){let t=`chart_${Date.now()}`,n=c.value.length===0?0:Math.max(...c.value.map(e=>e.y+e.h)),r={id:t,type:e,title:H9.find(t=>t.type===e)?.label??`新图表`,layout:{x:0,y:n,w:6,h:4},api:{url:``,method:`GET`,mapping:{xField:`name`,yField:`value`},refreshInterval:0}};s.value.set(t,r),c.value=[...c.value,{i:t,x:0,y:n,w:6,h:4}],d(),_(t)}function m(e){s.value.delete(e),c.value=c.value.filter(t=>t.i!==e),d()}let h=(0,t.ref)(!1),g=(0,t.ref)(null);function _(e){g.value=s.value.get(e)??null,h.value=!0}function v(e){s.value.set(e.id,e),d()}let y=(0,t.inject)(`isDark`,(0,t.ref)(!1)),b=fC(),x=(0,t.ref)(!1),S=(0,t.ref)(!1);function C(e){let t=new Map;e.forEach(e=>t.set(e.id,e)),l=!0,s.value=t,c.value=e.map(e=>({i:e.id,x:e.layout.x,y:e.layout.y,w:e.layout.w,h:e.layout.h})),o(`update:widgets`,e)}(0,t.onMounted)(async()=>{if(!r.apiConfig)return;let e=r.apiConfig.getUrl??`/Restful/Kivii.Basic.Entities.UiConfig/Get.json`;S.value=!0;try{let t=(await xO.post(e,{Type:r.apiConfig.type,InternalCode:r.apiConfig.internalCode,IsDefault:r.apiConfig.isDefault??!1})).data,n=Array.isArray(t)?t[0]:t;if(n?.Parameters){let e=JSON.parse(n.Parameters);Array.isArray(e)&&e.length>0&&C(e)}}catch{}finally{S.value=!1}});async function w(){if(!r.apiConfig){i.value=!i.value;return}let e=c.value.map(e=>({...s.value.get(e.i),layout:{x:e.x,y:e.y,w:e.w,h:e.h}}));x.value=!0;try{let t=r.apiConfig.setUrl??`/Restful/Kivii.Basic.Entities.UiConfig/Set.json`;await xO.post(t,{Type:r.apiConfig.type,InternalCode:r.apiConfig.internalCode,IsDefault:r.apiConfig.isDefault??!1,Parameters:JSON.stringify(e)}),b.success(`保存成功`),i.value=!0}catch(e){b.error(`保存失败:`+(e.message??`未知错误`))}finally{x.value=!1}}return(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:`flex flex-col h-full w-full overflow-hidden`,style:(0,t.normalizeStyle)({background:(0,t.unref)(y)?`#101014`:`#f9fafb`})},[(0,t.createElementVNode)(`div`,ime,[a.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,class:`w-24 flex-shrink-0 flex flex-col overflow-y-auto`,style:(0,t.normalizeStyle)({background:(0,t.unref)(y)?`#18181c`:`#fff`,borderRight:`1px solid ${(0,t.unref)(y)?`#ffffff17`:`#f0f0f0`}`})},[(0,t.createElementVNode)(`div`,{class:`flex-shrink-0 flex items-center justify-center py-2`,style:(0,t.normalizeStyle)({borderBottom:`1px solid ${(0,t.unref)(y)?`#ffffff17`:`#f0f0f0`}`})},[(0,t.createElementVNode)(`span`,{class:`text-[11px] font-medium tracking-wide`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#6b7280`:`#9ca3af`})},`图表类型`,4)],4),(0,t.createElementVNode)(`div`,ame,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(H9),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.type,class:`chart-type-item flex flex-col items-center py-2 px-1 rounded-lg cursor-pointer transition-colors duration-150`,style:(0,t.normalizeStyle)({"--hover-bg":(0,t.unref)(y)?`rgba(59,130,246,0.15)`:`#eff6ff`}),onClick:t=>p(e.type)},[(0,t.createElementVNode)(`i`,{class:(0,t.normalizeClass)([e.icon,`text-base transition-colors`]),style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#6b7280`:`#9ca3af`})},null,6),(0,t.createElementVNode)(`span`,{class:`text-[10px] mt-1 leading-none`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#52525b`:`#9ca3af`})},(0,t.toDisplayString)(e.label),5)],12,ome))),128))]),(0,t.createElementVNode)(`p`,{class:`mt-auto pt-2 text-[10px] text-center`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#374151`:`#d1d5db`})},`点击添加`,4)],4)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,sme,[e.editable===!1?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:0,class:`fab-toggle`,disabled:x.value,style:(0,t.normalizeStyle)({background:i.value?`#3b82f6`:(0,t.unref)(y)?`#27272a`:`#fff`,color:i.value?`#fff`:(0,t.unref)(y)?`#9ca3af`:`#6b7280`,boxShadow:(0,t.unref)(y)?`0 2px 10px rgba(0,0,0,0.6)`:`0 2px 10px rgba(0,0,0,0.15)`,border:`1px solid ${i.value?`#2563eb`:(0,t.unref)(y)?`#3f3f46`:`#e5e7eb`}`,opacity:x.value?.7:1}),onClick:r[0]||=e=>i.value?i.value=!1:w()},[x.value?((0,t.openBlock)(),(0,t.createElementBlock)(`i`,lme)):((0,t.openBlock)(),(0,t.createElementBlock)(`i`,{key:1,class:(0,t.normalizeClass)(i.value?`fa-solid fa-pen`:`fa-solid fa-floppy-disk`)},null,2)),(0,t.createElementVNode)(`span`,ume,(0,t.toDisplayString)(i.value?`编辑`:`保存`),1)],12,cme)),S.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:1,class:`absolute inset-0 z-10 flex items-center justify-center`,style:(0,t.normalizeStyle)({background:(0,t.unref)(y)?`rgba(16,16,20,0.7)`:`rgba(249,250,251,0.7)`})},[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-spinner fa-spin text-2xl`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#6b7280`:`#9ca3af`})},null,4)],4)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,dme,[!u.value&&!S.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,fme,[(0,t.createVNode)((0,t.unref)(jp),{description:`点击左侧图表类型添加图表`})])):((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(cP),{key:1,layout:c.value,"onUpdate:layout":r[1]||=e=>c.value=e,"col-num":12,"row-height":60,"is-draggable":a.value,"is-resizable":a.value,"vertical-compact":!0,"use-css-transforms":!0,onLayoutUpdated:f,style:(0,t.normalizeStyle)({marginTop:i.value?`12px`:`-10px`})},{default:(0,t.withCtx)(()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(c.value,e=>((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(LM),{key:e.i,i:e.i,x:e.x,y:e.y,w:e.w,h:e.h},{default:(0,t.withCtx)(()=>[s.value.get(e.i)?((0,t.openBlock)(),(0,t.createBlock)(nme,{key:0,widget:s.value.get(e.i),editable:a.value,onEdit:_,onRemove:m},null,8,[`widget`,`editable`])):(0,t.createCommentVNode)(``,!0)]),_:2},1032,[`i`,`x`,`y`,`w`,`h`]))),128))]),_:1},8,[`layout`,`is-draggable`,`is-resizable`,`style`]))])])]),(0,t.createVNode)(rme,{show:h.value,"onUpdate:show":r[2]||=e=>h.value=e,widget:g.value,onSave:v},null,8,[`show`,`widget`])],4))}}),[[`__scopeId`,`data-v-34462287`]]),mme=$T((0,t.defineComponent)({name:`EchartsField`,inheritAttrs:!1,__name:`EchartsFieldWrapper`,setup(e){let{isDark:n,primaryColor:r,naiveTheme:i,themeOverrides:a}=Pj();return(0,t.provide)(`isDark`,n),(0,t.provide)(`primaryColor`,r),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:(0,t.normalizeClass)([`kivii-demo-lib-wrapper`,{dark:(0,t.unref)(n)}])},[(0,t.createVNode)((0,t.unref)(Hv),{theme:(0,t.unref)(i),"theme-overrides":(0,t.unref)(a),locale:(0,t.unref)(wa),"date-locale":(0,t.unref)(oo),style:{height:`100%`}},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(dC),null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(oC),null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(pme,(0,t.normalizeProps)((0,t.guardReactiveProps)(e.$attrs)),null,16)]),_:1})]),_:1})]),_:1},8,[`theme`,`theme-overrides`,`locale`,`date-locale`])],2))}}),[[`__scopeId`,`data-v-53db6608`]]),U9=16e3,hme=`https://api.kivii.com/v1/audio/transcriptions`,gme=`local-qwen3-asr-1.7b`,_me=void 0,vme=`/sherpa-vad/`,W9=window,G9=null;function K9(e,n={}){let r=n.autoStopSilenceMs??6e3,i=n.apiKey||_me,a=n.endpoint||hme,o=n.model||gme,s=Cme(n.vadBaseUrl||vme),c=(0,t.ref)(!1),l=(0,t.ref)(!1),u=(0,t.ref)(!1),d=(0,t.ref)(!1),f=(0,t.ref)(``),p=(0,t.ref)(X9()),m=null,h=null,g=null,_=null,v=null,y=null,b=new Float32Array,x=new Float32Array,S=!1,C=Promise.resolve(),w=0,T=0,E=0,D=R();D.catch(()=>{});async function O(){if(c.value){A();return}await k()}async function k(){if(!c.value){f.value=``;try{if(await D,!y)throw Error(`VAD 尚未初始化完成`);h=await navigator.mediaDevices.getUserMedia({audio:!0}),m=new AudioContext,m.state===`suspended`&&await m.resume(),g=m.createMediaStreamSource(h),_=m.createScriptProcessor(4096,1,1),v=m.createGain(),v.gain.value=0,b=new Float32Array,x=new Float32Array,S=!1,T=performance.now(),E+=1,y.reset(),_.onaudioprocess=M,g.connect(_),_.connect(v),v.connect(m.destination),c.value=!0}catch(e){f.value=$9(e),B()}}}function A(e=!0){e?P():F(),c.value=!1,l.value=!1,B(),y?.reset()}function j(){E+=1,A(!1)}function M(e){if(!y||!c.value)return;let t=new Float32Array(e.inputBuffer.getChannelData(0));ee(t);let n=xme(t,m?.sampleRate||U9);b=Z9(b,n);let i=y.config.sileroVad?.windowSize||y.config.tenVad?.windowSize||512;for(;b.length>=i;){let e=b.slice(0,i);b=b.slice(i),x=Z9(x,e),y.acceptWaveform(e),l.value=y.isDetected(),l.value&&(S=!0,T=performance.now()),N()}c.value&&performance.now()-T>=r&&A()}function N(){if(!y)return;let e=!1;for(;!y.isEmpty();){let t=new Float32Array(y.front().samples);y.pop(),I(t),e=!0}e&&F()}function P(){let e=Z9(x,b),t=e.length>=U9*.2;S&&t&&I(e),F()}function F(){x=new Float32Array,S=!1}function I(e){let t=E;w+=1,u.value=!0,C=C.then(()=>L(e,t)).catch(e=>{f.value=`语音识别失败:${$9(e)}`}).finally(()=>{--w,u.value=w>0})}async function L(t,n){let r=new FormData;r.append(`model`,o),r.append(`file`,Sme(t),`voice-${Date.now()}.wav`);let s=await fetch(a,{method:`POST`,headers:i?{Authorization:`Bearer ${i}`}:void 0,body:r}),c=await s.json().catch(()=>null);if(!s.ok)throw Error(c?.error?.message||`HTTP ${s.status}`);let l=c?.text?.trim();l&&n===E&&(f.value=``,e(l))}async function R(){try{if(typeof SharedArrayBuffer>`u`||!window.crossOriginIsolated)throw Error(`VAD 需要跨域隔离响应头,请重启开发服务器`);let e=await fetch(`${s}sherpa-onnx-wasm-main-vad.wasm`);if(!e.ok)throw Error(`VAD 资源加载失败:HTTP ${e.status}`);if((await(await e.blob()).slice(0,128).text()).startsWith(`version https://git-lfs.github.com/spec`))throw Error(`VAD WASM 文件仍是 Git LFS 指针`);y=z(await yme(s)),d.value=!0,f.value=``}catch(e){throw d.value=!1,f.value=$9(e),e}}function z(e){if(!W9.createVad)throw Error(`VAD 创建函数未加载`);let t={model:J9(e,`silero_vad.onnx`)?`silero_vad.onnx`:``,threshold:.5,minSilenceDuration:.5,minSpeechDuration:.25,maxSpeechDuration:20,windowSize:512},n={model:J9(e,`ten-vad.onnx`)?`ten-vad.onnx`:``,threshold:.5,minSilenceDuration:.5,minSpeechDuration:.25,maxSpeechDuration:20,windowSize:256};if(!t.model&&!n.model)throw Error(`VAD 数据包中没有可用模型`);return W9.createVad(e,{sileroVad:t,tenVad:n,sampleRate:U9,numThreads:Math.min(Math.max(navigator.hardwareConcurrency||1,1),4),provider:`cpu`,debug:0,bufferSizeInSeconds:30})}function B(){_?.disconnect(),g?.disconnect(),v?.disconnect(),h?.getTracks().forEach(e=>e.stop()),m?.close().catch(()=>{}),_=null,g=null,v=null,h=null,m=null,b=new Float32Array,p.value=X9()}function ee(e){let t=p.value.length,n=Math.max(1,Math.floor(e.length/t));p.value=Array.from({length:t},(t,r)=>{let i=0,a=Math.min((r+1)*n,e.length);for(let t=r*n;t<a;t+=1)i=Math.max(i,Math.abs(e[t]));return Math.max(.08,Math.min(1,i*7))})}return(0,t.onBeforeUnmount)(()=>{A(!1),y?.free?.()}),{errorMessage:f,cancelVoiceInput:j,isRecording:c,isSpeechActive:l,isTranscribing:u,isVadReady:d,toggleRecording:O,waveformLevels:p}}function q9(e){return!!(e?._malloc&&e?._SherpaOnnxFileExists)}function yme(e){return W9.createVad&&q9(W9.Module)?Promise.resolve(W9.Module):(G9||=bme(e).catch(e=>{throw G9=null,e}),G9)}async function bme(e){if(await Y9(`${e}sherpa-onnx-vad.js`),!W9.createVad)throw Error(`VAD 创建函数加载失败`);return q9(W9.Module)?W9.Module:new Promise((t,n)=>{let r=W9.Module||{},i=r.onRuntimeInitialized,a=window.setTimeout(()=>n(Error(`VAD 初始化超时,请刷新页面后重试`)),45e3);r.locateFile=t=>`${e}${t}`,r.onRuntimeInitialized=()=>{window.clearTimeout(a),i?.(),t(r)},W9.Module=r,Y9(`${e}sherpa-onnx-wasm-main-vad.js`).catch(e=>{window.clearTimeout(a),n(e)})})}function J9(e,t){let n=e.lengthBytesUTF8(t)+1,r=e._malloc(n);e.stringToUTF8(t,r,n);let i=e._SherpaOnnxFileExists(r)===1;return e._free(r),i}function Y9(e){return new Promise((t,n)=>{let r=document.querySelector(`script[data-vad-script="${e}"]`);if(r){if(r.dataset.vadLoaded===`true`){t();return}r.addEventListener(`load`,()=>t(),{once:!0}),r.addEventListener(`error`,()=>n(Error(`无法加载 ${e}`)),{once:!0});return}let i=document.createElement(`script`);i.src=e,i.async=!1,i.dataset.vadScript=e,i.onload=()=>{i.dataset.vadLoaded=`true`,t()},i.onerror=()=>n(Error(`无法加载 ${e}`)),document.head.appendChild(i)})}function X9(){return Array.from({length:24},(e,t)=>.08+t%4*.015)}function xme(e,t){if(t===U9)return e;let n=t/U9,r=new Float32Array(Math.round(e.length/n));for(let t=0;t<r.length;t+=1){let i=Math.round(t*n),a=Math.min(Math.round((t+1)*n),e.length),o=0;for(let t=i;t<a;t+=1)o+=e[t];r[t]=o/Math.max(1,a-i)}return r}function Z9(e,t){let n=new Float32Array(e.length+t.length);return n.set(e,0),n.set(t,e.length),n}function Sme(e){let t=new ArrayBuffer(44+e.length*2),n=new DataView(t);return Q9(n,0,`RIFF`),n.setUint32(4,36+e.length*2,!0),Q9(n,8,`WAVE`),Q9(n,12,`fmt `),n.setUint32(16,16,!0),n.setUint16(20,1,!0),n.setUint16(22,1,!0),n.setUint32(24,U9,!0),n.setUint32(28,U9*2,!0),n.setUint16(32,2,!0),n.setUint16(34,16,!0),Q9(n,36,`data`),n.setUint32(40,e.length*2,!0),e.forEach((e,t)=>{let r=Math.max(-1,Math.min(1,e));n.setInt16(44+t*2,r<0?r*32768:r*32767,!0)}),new Blob([t],{type:`audio/wav`})}function Q9(e,t,n){for(let r=0;r<n.length;r+=1)e.setUint8(t+r,n.charCodeAt(r))}function $9(e){return e instanceof Error?e.message:String(e)}function Cme(e){return e.endsWith(`/`)?e:`${e}/`}var wme={class:`voice-input-control`},Tme=[`aria-label`,`aria-pressed`,`disabled`,`title`],Eme={key:0,class:`button-waveform`,"aria-hidden":`true`},Dme={key:1,class:`button-icon`,viewBox:`0 0 24 24`,"aria-hidden":`true`},Ome={key:2,class:`button-icon spinning`,viewBox:`0 0 24 24`,"aria-hidden":`true`},kme={key:3,class:`button-icon`,viewBox:`0 0 24 24`,"aria-hidden":`true`},Ame=$T((0,t.defineComponent)({__name:`VoiceInputButton`,props:(0,t.mergeModels)({append:{type:Boolean,default:!0},apiKey:{default:void 0},autoStopSeconds:{default:6},disabled:{type:Boolean,default:!1},endpoint:{default:void 0},model:{default:`local-qwen3-asr-1.7b`},separator:{default:` `},vadBaseUrl:{default:void 0}},{modelValue:{default:``},modelModifiers:{}}),emits:(0,t.mergeModels)([`error`,`recordingChange`,`speechChange`,`transcribed`,`transcribingChange`],[`update:modelValue`]),setup(e,{expose:n,emit:r}){let i=e,a=r,o=(0,t.useModel)(e,`modelValue`),s=[`#2563eb`,`#0891b2`,`#0d9488`,`#16a34a`,`#ca8a04`,`#ea580c`,`#dc2626`],{cancelVoiceInput:c,errorMessage:l,isRecording:u,isSpeechActive:d,isTranscribing:f,isVadReady:p,toggleRecording:m,waveformLevels:h}=K9(e=>{o.value=i.append&&o.value?`${o.value}${i.separator}${e}`:e,a(`transcribed`,e)},{autoStopSilenceMs:i.autoStopSeconds*1e3,apiKey:i.apiKey,endpoint:i.endpoint,model:i.model,vadBaseUrl:i.vadBaseUrl}),g=(0,t.computed)(()=>l.value?l.value:p.value?u.value?d.value?`检测到语音,点击结束语音输入`:`正在聆听,静音 ${i.autoStopSeconds} 秒后结束`:`语音输入`:`正在加载语音检测模型`);return(0,t.watch)(u,e=>a(`recordingChange`,e),{immediate:!0}),(0,t.watch)(d,e=>a(`speechChange`,e),{immediate:!0}),(0,t.watch)(f,e=>a(`transcribingChange`,e),{immediate:!0}),(0,t.watch)(()=>i.disabled,e=>{e&&c()}),(0,t.watch)(l,e=>{e&&a(`error`,e)}),n({cancel:c}),(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,wme,[(0,t.createElementVNode)(`button`,{class:(0,t.normalizeClass)([`voice-button`,{active:(0,t.unref)(u),error:(0,t.unref)(l)}]),"aria-label":g.value,"aria-pressed":(0,t.unref)(u),disabled:e.disabled||!(0,t.unref)(p),title:g.value,type:`button`,onClick:r[0]||=(...e)=>(0,t.unref)(m)&&(0,t.unref)(m)(...e)},[(0,t.unref)(u)?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,Eme,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(h),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`i`,{key:n,style:(0,t.normalizeStyle)({backgroundColor:s[n%s.length],transform:`scaleY(${e})`})},null,4))),128))])):(0,t.unref)(l)?((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,Dme,[...r[1]||=[(0,t.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},null,-1),(0,t.createElementVNode)(`path`,{d:`M12 7v6m0 4h.01`,fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-width":`2`},null,-1)]])):!(0,t.unref)(p)||(0,t.unref)(f)?((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,Ome,[...r[2]||=[(0,t.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-width":`2`,"stroke-dasharray":`42 15`},null,-1)]])):((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,kme,[...r[3]||=[(0,t.createElementVNode)(`rect`,{x:`9`,y:`3`,width:`6`,height:`11`,rx:`3`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},null,-1),(0,t.createElementVNode)(`path`,{d:`M6.5 11a5.5 5.5 0 0 0 11 0M12 16.5V21m-3 0h6`,fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-width":`2`},null,-1)]]))],10,Tme)]))}}),[[`__scopeId`,`data-v-a49f2a3e`]]);e.EchartsField=mme,e.HelloWorld=m,e.TableIndex=Ij,e.VoiceInputButton=Ame,e.useVoiceTranscription=K9});
5828
+ {d}%`},data:i}]}}function Qpe(e){return{title:{text:e,left:`center`,textStyle:{fontSize:14}},graphic:[{type:`text`,left:`center`,top:`middle`,style:{text:`暂无数据`,fill:`#999`,fontSize:14}}]}}function V9(e,t){let n={...e};for(let r of Object.keys(t))t[r]&&typeof t[r]==`object`&&!Array.isArray(t[r])?n[r]=V9(e[r]??{},t[r]):n[r]=t[r];return n}var $pe={class:`flex items-center gap-1 flex-shrink-0 ml-2`},eme={class:`flex-1 overflow-hidden relative flex items-center justify-center p-1`},tme={key:0,class:`flex flex-col items-center gap-2 text-red-500 text-[13px]`},nme=(0,t.defineComponent)({__name:`EchartsFieldWidget`,props:{widget:{},editable:{type:Boolean}},emits:[`edit`,`remove`],setup(e,{emit:n}){let r=(0,t.inject)(`isDark`,(0,t.ref)(!1)),i=e,a=n;function o(e,t){if(t){let n=t.split(`.`).reduce((e,t)=>e?.[t],e);return Array.isArray(n)?n:[]}if(Array.isArray(e))return e;for(let t of[`Results`,`data`,`list`,`rows`,`items`])if(Array.isArray(e?.[t]))return e[t];return[]}let s=(0,t.ref)(!1),c=(0,t.ref)(``),l=(0,t.ref)([]),u=(0,t.computed)(()=>Gpe(l.value,i.widget.type,i.widget.title,i.widget.api.mapping,i.widget.echartsOverride));async function d(){if(i.widget.api.url){s.value=!0,c.value=``;try{let e={method:i.widget.api.method||`GET`,url:i.widget.api.url,headers:i.widget.api.headers};e.method===`GET`?e.params=i.widget.api.params:e.data=i.widget.api.params,l.value=o((await xO(e)).data,i.widget.api.dataPath)}catch(e){c.value=e.message||`请求失败`,l.value=[]}finally{s.value=!1}}}let f=null;function p(){f&&=(clearInterval(f),null);let e=i.widget.api.refreshInterval;e&&e>0&&(f=setInterval(d,e*1e3))}return(0,t.onMounted)(()=>{d(),p()}),(0,t.onUnmounted)(()=>{f&&clearInterval(f)}),(0,t.watch)(()=>i.widget.api.url,()=>{d(),p()}),(n,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:`w-full h-full flex flex-col rounded-lg shadow-sm overflow-hidden`,style:(0,t.normalizeStyle)({backgroundColor:(0,t.unref)(r)?`#18181c`:`#ffffff`,borderWidth:`1px`,borderStyle:`solid`,borderColor:(0,t.unref)(r)?`#ffffff17`:`transparent`})},[(0,t.createElementVNode)(`div`,{class:`flex items-center justify-between px-3 py-2 min-h-[36px] flex-shrink-0 cursor-move select-none`,style:(0,t.normalizeStyle)({borderBottomWidth:`1px`,borderBottomStyle:`solid`,borderBottomColor:(0,t.unref)(r)?`#ffffff17`:`#f3f4f6`})},[(0,t.createElementVNode)(`span`,{class:`text-[13px] font-semibold truncate`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#e5e7eb`:`#374151`})},(0,t.toDisplayString)(e.widget.title||`未命名图表`),5),(0,t.createElementVNode)(`div`,$pe,[(0,t.createVNode)((0,t.unref)(mb),{trigger:`hover`},{trigger:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`button`,{class:`w-6 h-6 flex items-center justify-center rounded hover:text-blue-500 hover:bg-blue-50 transition-colors`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#6b7280`:`#9ca3af`}),onClick:(0,t.withModifiers)(d,[`stop`])},[...i[2]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-rotate-right text-xs`},null,-1)]],4)]),default:(0,t.withCtx)(()=>[i[3]||=(0,t.createTextVNode)(` 刷新数据 `,-1)]),_:1}),e.editable?((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:0},[(0,t.createVNode)((0,t.unref)(mb),{trigger:`hover`},{trigger:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`button`,{class:`w-6 h-6 flex items-center justify-center rounded hover:text-blue-500 hover:bg-blue-50 transition-colors`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#6b7280`:`#9ca3af`}),onClick:i[0]||=(0,t.withModifiers)(t=>a(`edit`,e.widget.id),[`stop`])},[...i[4]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-gear text-xs`},null,-1)]],4)]),default:(0,t.withCtx)(()=>[i[5]||=(0,t.createTextVNode)(` 配置 `,-1)]),_:1}),(0,t.createVNode)((0,t.unref)(mb),{trigger:`hover`},{trigger:(0,t.withCtx)(()=>[(0,t.createElementVNode)(`button`,{class:`w-6 h-6 flex items-center justify-center rounded hover:text-red-500 hover:bg-red-50 transition-colors`,style:(0,t.normalizeStyle)({color:(0,t.unref)(r)?`#6b7280`:`#9ca3af`}),onClick:i[1]||=(0,t.withModifiers)(t=>a(`remove`,e.widget.id),[`stop`])},[...i[6]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-xmark text-xs`},null,-1)]],4)]),default:(0,t.withCtx)(()=>[i[7]||=(0,t.createTextVNode)(` 删除 `,-1)]),_:1})],64)):(0,t.createCommentVNode)(``,!0)])],4),(0,t.createElementVNode)(`div`,eme,[c.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,tme,[i[9]||=(0,t.createElementVNode)(`i`,{class:`fa-solid fa-triangle-exclamation text-base`},null,-1),(0,t.createElementVNode)(`span`,null,(0,t.toDisplayString)(c.value),1),(0,t.createVNode)((0,t.unref)(km),{size:`tiny`,onClick:d},{default:(0,t.withCtx)(()=>[...i[8]||=[(0,t.createTextVNode)(`重试`,-1)]]),_:1})])):s.value&&l.value.length===0?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(gT),{key:1,size:`medium`})):((0,t.openBlock)(),(0,t.createBlock)(Wpe,{key:2,type:e.widget.type,option:u.value,loading:s.value,theme:(0,t.unref)(r)?`dark`:void 0},null,8,[`type`,`option`,`loading`,`theme`]))])],4))}}),rme=(0,t.defineComponent)({__name:`EchartsFieldConfigDrawer`,props:{show:{type:Boolean},widget:{}},emits:[`update:show`,`save`],setup(e,{emit:n}){let r=e,i=n,a=(0,t.ref)(null),o=(0,t.ref)(``);(0,t.watch)(()=>r.widget,e=>{if(a.value=e?JSON.parse(JSON.stringify(e)):null,a.value){let e=a.value.api.mapping.yField;o.value=Array.isArray(e)?e.join(`, `):e??``}},{immediate:!0});function s(){if(!a.value)return;let e=o.value.split(`,`).map(e=>e.trim()).filter(Boolean);a.value.api.mapping.yField=e.length===1?e[0]:e}function c(e,n,r){return{value:r,label:n,renderLabel:()=>(0,t.h)(`span`,{style:`display:flex;align-items:center;gap:8px`},[(0,t.h)(`i`,{class:e,style:`width:14px;text-align:center;opacity:0.7`}),(0,t.h)(`span`,n)])}}let l=[c(`fa-solid fa-chart-line`,`折线图`,`line`),c(`fa-solid fa-chart-column`,`柱状图`,`bar`),c(`fa-solid fa-chart-pie`,`饼图`,`pie`),c(`fa-solid fa-gauge`,`仪表盘`,`gauge`),c(`fa-solid fa-circle-dot`,`散点图`,`scatter`),c(`fa-solid fa-spider`,`雷达图`,`radar`),c(`fa-solid fa-fire`,`热力图`,`heatmap`),c(`fa-solid fa-filter`,`漏斗图`,`funnel`)],u=[{label:`GET`,value:`GET`},{label:`POST`,value:`POST`}];function d(){a.value&&(i(`save`,JSON.parse(JSON.stringify(a.value))),i(`update:show`,!1))}function f(){i(`update:show`,!1)}return(n,r)=>((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(gC),{show:e.show,width:420,placement:`right`,"onUpdate:show":r[7]||=e=>i(`update:show`,e)},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_C),{title:`图表配置`,closable:``},{footer:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(xC),{justify:`end`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(km),{onClick:f},{icon:(0,t.withCtx)(()=>[...r[12]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-xmark`},null,-1)]]),default:(0,t.withCtx)(()=>[r[13]||=(0,t.createTextVNode)(` 取消 `,-1)]),_:1}),(0,t.createVNode)((0,t.unref)(km),{type:`primary`,onClick:d},{icon:(0,t.withCtx)(()=>[...r[14]||=[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-floppy-disk`},null,-1)]]),default:(0,t.withCtx)(()=>[r[15]||=(0,t.createTextVNode)(` 保存 `,-1)]),_:1})]),_:1})]),default:(0,t.withCtx)(()=>[a.value?((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(KC),{key:0,"label-placement":`top`,"label-width":`auto`,size:`small`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[8]||=[(0,t.createTextVNode)(`基础信息`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`标题`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:a.value.title,"onUpdate:value":r[0]||=e=>a.value.title=e,placeholder:`请输入图表标题`},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`图表类型`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(iy),{value:a.value.type,"onUpdate:value":r[1]||=e=>a.value.type=e,options:l},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[9]||=[(0,t.createTextVNode)(`接口配置`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`请求方式`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(iy),{value:a.value.api.method,"onUpdate:value":r[2]||=e=>a.value.api.method=e,options:u,style:{width:`120px`}},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`接口地址 (URL)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:a.value.api.url,"onUpdate:value":r[3]||=e=>a.value.api.url=e,placeholder:`/api/your-data-endpoint`},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[10]||=[(0,t.createTextVNode)(`数据字段映射`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`X轴字段(分类/时间)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:a.value.api.mapping.xField,"onUpdate:value":r[4]||=e=>a.value.api.mapping.xField=e,placeholder:`如: date, month, name`},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`Y轴字段(数值,多个用英文逗号分隔)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(_m),{value:o.value,"onUpdate:value":r[5]||=e=>o.value=e,placeholder:`如: value 或 sales, cost`,onBlur:s},null,8,[`value`])]),_:1}),(0,t.createVNode)((0,t.unref)(mC),{"title-placement":`left`,style:{"font-size":`12px`}},{default:(0,t.withCtx)(()=>[...r[11]||=[(0,t.createTextVNode)(`自动刷新`,-1)]]),_:1}),(0,t.createVNode)((0,t.unref)(Fw),{label:`刷新间隔(秒,0 = 不刷新)`},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(iT),{value:a.value.api.refreshInterval,"onUpdate:value":r[6]||=e=>a.value.api.refreshInterval=e,min:0,step:10,placeholder:`0`,style:{width:`100%`}},null,8,[`value`])]),_:1})]),_:1})):(0,t.createCommentVNode)(``,!0)]),_:1})]),_:1},8,[`show`]))}}),H9=[{type:`line`,label:`折线图`,icon:`fa-solid fa-chart-line`},{type:`bar`,label:`柱状图`,icon:`fa-solid fa-chart-column`},{type:`pie`,label:`饼图`,icon:`fa-solid fa-chart-pie`},{type:`gauge`,label:`仪表盘`,icon:`fa-solid fa-gauge`},{type:`scatter`,label:`散点图`,icon:`fa-solid fa-circle-dot`},{type:`radar`,label:`雷达图`,icon:`fa-solid fa-spider`},{type:`heatmap`,label:`热力图`,icon:`fa-solid fa-fire`},{type:`funnel`,label:`漏斗图`,icon:`fa-solid fa-filter`}],ime={class:`flex flex-1 overflow-hidden`},ame={class:`flex flex-col gap-1 px-2 py-2`},ome=[`onClick`],sme={class:`flex-1 overflow-hidden flex flex-col relative`},cme=[`disabled`],lme={key:0,class:`fa-solid fa-spinner fa-spin`},ume={class:`fab-label`},dme={class:`flex-1 overflow-y-auto`},fme={key:0,class:`h-full flex items-center justify-center`},pme=$T((0,t.defineComponent)({__name:`EchartsField`,props:{widgets:{},editable:{type:Boolean},apiConfig:{}},emits:[`update:widgets`],setup(e,{emit:n}){let r=e,i=(0,t.ref)(!1),a=(0,t.computed)(()=>r.editable!==!1&&!i.value),o=n,s=(0,t.ref)(new Map),c=(0,t.ref)([]),l=!1;(0,t.watch)(()=>r.widgets,e=>{if(l){l=!1;return}if(!e?.length)return;let t=new Map;e.forEach(e=>t.set(e.id,JSON.parse(JSON.stringify(e)))),s.value=t,c.value=e.map(e=>({i:e.id,x:e.layout.x,y:e.layout.y,w:e.layout.w,h:e.layout.h}))},{immediate:!0});let u=(0,t.computed)(()=>c.value.length>0);function d(){let e=c.value.map(e=>({...s.value.get(e.i),layout:{x:e.x,y:e.y,w:e.w,h:e.h}}));l=!0,o(`update:widgets`,e)}function f(e){e.forEach(e=>{let t=s.value.get(e.i);t&&(t.layout={x:e.x,y:e.y,w:e.w,h:e.h})}),d()}function p(e){let t=`chart_${Date.now()}`,n=c.value.length===0?0:Math.max(...c.value.map(e=>e.y+e.h)),r={id:t,type:e,title:H9.find(t=>t.type===e)?.label??`新图表`,layout:{x:0,y:n,w:6,h:4},api:{url:``,method:`GET`,mapping:{xField:`name`,yField:`value`},refreshInterval:0}};s.value.set(t,r),c.value=[...c.value,{i:t,x:0,y:n,w:6,h:4}],d(),_(t)}function m(e){s.value.delete(e),c.value=c.value.filter(t=>t.i!==e),d()}let h=(0,t.ref)(!1),g=(0,t.ref)(null);function _(e){g.value=s.value.get(e)??null,h.value=!0}function v(e){s.value.set(e.id,e),d()}let y=(0,t.inject)(`isDark`,(0,t.ref)(!1)),b=fC(),x=(0,t.ref)(!1),S=(0,t.ref)(!1);function C(e){let t=new Map;e.forEach(e=>t.set(e.id,e)),l=!0,s.value=t,c.value=e.map(e=>({i:e.id,x:e.layout.x,y:e.layout.y,w:e.layout.w,h:e.layout.h})),o(`update:widgets`,e)}(0,t.onMounted)(async()=>{if(!r.apiConfig)return;let e=r.apiConfig.getUrl??`/Restful/Kivii.Basic.Entities.UiConfig/Get.json`;S.value=!0;try{let t=(await xO.post(e,{Type:r.apiConfig.type,InternalCode:r.apiConfig.internalCode,IsDefault:r.apiConfig.isDefault??!1})).data,n=Array.isArray(t)?t[0]:t;if(n?.Parameters){let e=JSON.parse(n.Parameters);Array.isArray(e)&&e.length>0&&C(e)}}catch{}finally{S.value=!1}});async function w(){if(!r.apiConfig){i.value=!i.value;return}let e=c.value.map(e=>({...s.value.get(e.i),layout:{x:e.x,y:e.y,w:e.w,h:e.h}}));x.value=!0;try{let t=r.apiConfig.setUrl??`/Restful/Kivii.Basic.Entities.UiConfig/Set.json`;await xO.post(t,{Type:r.apiConfig.type,InternalCode:r.apiConfig.internalCode,IsDefault:r.apiConfig.isDefault??!1,Parameters:JSON.stringify(e)}),b.success(`保存成功`),i.value=!0}catch(e){b.error(`保存失败:`+(e.message??`未知错误`))}finally{x.value=!1}}return(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:`flex flex-col h-full w-full overflow-hidden`,style:(0,t.normalizeStyle)({background:(0,t.unref)(y)?`#101014`:`#f9fafb`})},[(0,t.createElementVNode)(`div`,ime,[a.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,class:`w-24 flex-shrink-0 flex flex-col overflow-y-auto`,style:(0,t.normalizeStyle)({background:(0,t.unref)(y)?`#18181c`:`#fff`,borderRight:`1px solid ${(0,t.unref)(y)?`#ffffff17`:`#f0f0f0`}`})},[(0,t.createElementVNode)(`div`,{class:`flex-shrink-0 flex items-center justify-center py-2`,style:(0,t.normalizeStyle)({borderBottom:`1px solid ${(0,t.unref)(y)?`#ffffff17`:`#f0f0f0`}`})},[(0,t.createElementVNode)(`span`,{class:`text-[11px] font-medium tracking-wide`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#6b7280`:`#9ca3af`})},`图表类型`,4)],4),(0,t.createElementVNode)(`div`,ame,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(H9),e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.type,class:`chart-type-item flex flex-col items-center py-2 px-1 rounded-lg cursor-pointer transition-colors duration-150`,style:(0,t.normalizeStyle)({"--hover-bg":(0,t.unref)(y)?`rgba(59,130,246,0.15)`:`#eff6ff`}),onClick:t=>p(e.type)},[(0,t.createElementVNode)(`i`,{class:(0,t.normalizeClass)([e.icon,`text-base transition-colors`]),style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#6b7280`:`#9ca3af`})},null,6),(0,t.createElementVNode)(`span`,{class:`text-[10px] mt-1 leading-none`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#52525b`:`#9ca3af`})},(0,t.toDisplayString)(e.label),5)],12,ome))),128))]),(0,t.createElementVNode)(`p`,{class:`mt-auto pt-2 text-[10px] text-center`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#374151`:`#d1d5db`})},`点击添加`,4)],4)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,sme,[e.editable===!1?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:0,class:`fab-toggle`,disabled:x.value,style:(0,t.normalizeStyle)({background:i.value?`#3b82f6`:(0,t.unref)(y)?`#27272a`:`#fff`,color:i.value?`#fff`:(0,t.unref)(y)?`#9ca3af`:`#6b7280`,boxShadow:(0,t.unref)(y)?`0 2px 10px rgba(0,0,0,0.6)`:`0 2px 10px rgba(0,0,0,0.15)`,border:`1px solid ${i.value?`#2563eb`:(0,t.unref)(y)?`#3f3f46`:`#e5e7eb`}`,opacity:x.value?.7:1}),onClick:r[0]||=e=>i.value?i.value=!1:w()},[x.value?((0,t.openBlock)(),(0,t.createElementBlock)(`i`,lme)):((0,t.openBlock)(),(0,t.createElementBlock)(`i`,{key:1,class:(0,t.normalizeClass)(i.value?`fa-solid fa-pen`:`fa-solid fa-floppy-disk`)},null,2)),(0,t.createElementVNode)(`span`,ume,(0,t.toDisplayString)(i.value?`编辑`:`保存`),1)],12,cme)),S.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:1,class:`absolute inset-0 z-10 flex items-center justify-center`,style:(0,t.normalizeStyle)({background:(0,t.unref)(y)?`rgba(16,16,20,0.7)`:`rgba(249,250,251,0.7)`})},[(0,t.createElementVNode)(`i`,{class:`fa-solid fa-spinner fa-spin text-2xl`,style:(0,t.normalizeStyle)({color:(0,t.unref)(y)?`#6b7280`:`#9ca3af`})},null,4)],4)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,dme,[!u.value&&!S.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,fme,[(0,t.createVNode)((0,t.unref)(jp),{description:`点击左侧图表类型添加图表`})])):((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(cP),{key:1,layout:c.value,"onUpdate:layout":r[1]||=e=>c.value=e,"col-num":12,"row-height":60,"is-draggable":a.value,"is-resizable":a.value,"vertical-compact":!0,"use-css-transforms":!0,onLayoutUpdated:f,style:(0,t.normalizeStyle)({marginTop:i.value?`12px`:`-10px`})},{default:(0,t.withCtx)(()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(c.value,e=>((0,t.openBlock)(),(0,t.createBlock)((0,t.unref)(LM),{key:e.i,i:e.i,x:e.x,y:e.y,w:e.w,h:e.h},{default:(0,t.withCtx)(()=>[s.value.get(e.i)?((0,t.openBlock)(),(0,t.createBlock)(nme,{key:0,widget:s.value.get(e.i),editable:a.value,onEdit:_,onRemove:m},null,8,[`widget`,`editable`])):(0,t.createCommentVNode)(``,!0)]),_:2},1032,[`i`,`x`,`y`,`w`,`h`]))),128))]),_:1},8,[`layout`,`is-draggable`,`is-resizable`,`style`]))])])]),(0,t.createVNode)(rme,{show:h.value,"onUpdate:show":r[2]||=e=>h.value=e,widget:g.value,onSave:v},null,8,[`show`,`widget`])],4))}}),[[`__scopeId`,`data-v-34462287`]]),mme=$T((0,t.defineComponent)({name:`EchartsField`,inheritAttrs:!1,__name:`EchartsFieldWrapper`,setup(e){let{isDark:n,primaryColor:r,naiveTheme:i,themeOverrides:a}=Pj();return(0,t.provide)(`isDark`,n),(0,t.provide)(`primaryColor`,r),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:(0,t.normalizeClass)([`kivii-demo-lib-wrapper`,{dark:(0,t.unref)(n)}])},[(0,t.createVNode)((0,t.unref)(Hv),{theme:(0,t.unref)(i),"theme-overrides":(0,t.unref)(a),locale:(0,t.unref)(wa),"date-locale":(0,t.unref)(oo),style:{height:`100%`}},{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(dC),null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)((0,t.unref)(oC),null,{default:(0,t.withCtx)(()=>[(0,t.createVNode)(pme,(0,t.normalizeProps)((0,t.guardReactiveProps)(e.$attrs)),null,16)]),_:1})]),_:1})]),_:1},8,[`theme`,`theme-overrides`,`locale`,`date-locale`])],2))}}),[[`__scopeId`,`data-v-53db6608`]]),U9=16e3,hme=`https://api.kivii.com/v1/audio/transcriptions`,gme=`local-qwen3-asr-1.7b`,_me=void 0,vme=`/sherpa-vad/`,W9=window,G9=null;function K9(e,n={}){let r=n.autoStopSilenceMs??6e3,i=n.apiKey||_me,a=n.endpoint||hme,o=n.model||gme,s=Cme(n.vadBaseUrl||vme),c=(0,t.ref)(!1),l=(0,t.ref)(!1),u=(0,t.ref)(!1),d=(0,t.ref)(!1),f=(0,t.ref)(``),p=(0,t.ref)(X9()),m=null,h=null,g=null,_=null,v=null,y=null,b=new Float32Array,x=new Float32Array,S=!1,C=Promise.resolve(),w=0,T=0,E=0,D=R();D.catch(()=>{});async function O(){if(c.value){A();return}await k()}async function k(){if(!c.value){f.value=``;try{if(await D,!y)throw Error(`VAD 尚未初始化完成`);h=await navigator.mediaDevices.getUserMedia({audio:!0}),m=new AudioContext,m.state===`suspended`&&await m.resume(),g=m.createMediaStreamSource(h),_=m.createScriptProcessor(4096,1,1),v=m.createGain(),v.gain.value=0,b=new Float32Array,x=new Float32Array,S=!1,T=performance.now(),E+=1,y.reset(),_.onaudioprocess=M,g.connect(_),_.connect(v),v.connect(m.destination),c.value=!0}catch(e){f.value=$9(e),B()}}}function A(e=!0){e?P():F(),c.value=!1,l.value=!1,B(),y?.reset()}function j(){E+=1,A(!1)}function M(e){if(!y||!c.value)return;let t=new Float32Array(e.inputBuffer.getChannelData(0));ee(t);let n=xme(t,m?.sampleRate||U9);b=Z9(b,n);let i=y.config.sileroVad?.windowSize||y.config.tenVad?.windowSize||512;for(;b.length>=i;){let e=b.slice(0,i);b=b.slice(i),x=Z9(x,e),y.acceptWaveform(e),l.value=y.isDetected(),l.value&&(S=!0,T=performance.now()),N()}c.value&&performance.now()-T>=r&&A()}function N(){if(!y)return;let e=!1;for(;!y.isEmpty();){let t=new Float32Array(y.front().samples);y.pop(),I(t),e=!0}e&&F()}function P(){let e=Z9(x,b),t=e.length>=U9*.2;S&&t&&I(e),F()}function F(){x=new Float32Array,S=!1}function I(e){let t=E;w+=1,u.value=!0,C=C.then(()=>L(e,t)).catch(e=>{f.value=`语音识别失败:${$9(e)}`}).finally(()=>{--w,u.value=w>0})}async function L(t,n){let r=new FormData;r.append(`model`,o),r.append(`file`,Sme(t),`voice-${Date.now()}.wav`);let s=await fetch(a,{method:`POST`,headers:i?{Authorization:`Bearer ${i}`}:void 0,body:r}),c=await s.json().catch(()=>null);if(!s.ok)throw Error(c?.error?.message||`HTTP ${s.status}`);let l=c?.text?.trim();l&&n===E&&(f.value=``,e(l))}async function R(){try{if(typeof SharedArrayBuffer>`u`||!window.crossOriginIsolated)throw Error(`VAD 需要跨域隔离响应头,请重启开发服务器`);let e=await fetch(`${s}sherpa-onnx-wasm-main-vad.wasm`);if(!e.ok)throw Error(`VAD 资源加载失败:HTTP ${e.status}`);if((await(await e.blob()).slice(0,128).text()).startsWith(`version https://git-lfs.github.com/spec`))throw Error(`VAD WASM 文件仍是 Git LFS 指针`);y=z(await yme(s)),d.value=!0,f.value=``}catch(e){throw d.value=!1,f.value=$9(e),e}}function z(e){if(!W9.createVad)throw Error(`VAD 创建函数未加载`);let t={model:J9(e,`silero_vad.onnx`)?`silero_vad.onnx`:``,threshold:.5,minSilenceDuration:.5,minSpeechDuration:.25,maxSpeechDuration:20,windowSize:512},n={model:J9(e,`ten-vad.onnx`)?`ten-vad.onnx`:``,threshold:.5,minSilenceDuration:.5,minSpeechDuration:.25,maxSpeechDuration:20,windowSize:256};if(!t.model&&!n.model)throw Error(`VAD 数据包中没有可用模型`);return W9.createVad(e,{sileroVad:t,tenVad:n,sampleRate:U9,numThreads:1,provider:`cpu`,debug:0,bufferSizeInSeconds:30})}function B(){_?.disconnect(),g?.disconnect(),v?.disconnect(),h?.getTracks().forEach(e=>e.stop()),m?.close().catch(()=>{}),_=null,g=null,v=null,h=null,m=null,b=new Float32Array,p.value=X9()}function ee(e){let t=p.value.length,n=Math.max(1,Math.floor(e.length/t));p.value=Array.from({length:t},(t,r)=>{let i=0,a=Math.min((r+1)*n,e.length);for(let t=r*n;t<a;t+=1)i=Math.max(i,Math.abs(e[t]));return Math.max(.08,Math.min(1,i*7))})}return(0,t.onBeforeUnmount)(()=>{A(!1),y?.free?.()}),{errorMessage:f,cancelVoiceInput:j,isRecording:c,isSpeechActive:l,isTranscribing:u,isVadReady:d,toggleRecording:O,waveformLevels:p}}function q9(e){return!!(e?._malloc&&e?._SherpaOnnxFileExists)}function yme(e){return W9.createVad&&q9(W9.Module)?Promise.resolve(W9.Module):(G9||=bme(e).catch(e=>{throw G9=null,e}),G9)}async function bme(e){if(await Y9(`${e}sherpa-onnx-vad.js`),!W9.createVad)throw Error(`VAD 创建函数加载失败`);return q9(W9.Module)?W9.Module:new Promise((t,n)=>{let r=W9.Module||{},i=r.onRuntimeInitialized,a=window.setTimeout(()=>n(Error(`VAD 初始化超时,请刷新页面后重试`)),45e3);r.locateFile=t=>`${e}${t}`,r.onRuntimeInitialized=()=>{window.clearTimeout(a),i?.(),t(r)},W9.Module=r,Y9(`${e}sherpa-onnx-wasm-main-vad.js`).catch(e=>{window.clearTimeout(a),n(e)})})}function J9(e,t){let n=e.lengthBytesUTF8(t)+1,r=e._malloc(n);e.stringToUTF8(t,r,n);let i=e._SherpaOnnxFileExists(r)===1;return e._free(r),i}function Y9(e){return new Promise((t,n)=>{let r=document.querySelector(`script[data-vad-script="${e}"]`);if(r){if(r.dataset.vadLoaded===`true`){t();return}r.addEventListener(`load`,()=>t(),{once:!0}),r.addEventListener(`error`,()=>n(Error(`无法加载 ${e}`)),{once:!0});return}let i=document.createElement(`script`);i.src=e,i.async=!1,i.dataset.vadScript=e,i.onload=()=>{i.dataset.vadLoaded=`true`,t()},i.onerror=()=>n(Error(`无法加载 ${e}`)),document.head.appendChild(i)})}function X9(){return Array.from({length:24},(e,t)=>.08+t%4*.015)}function xme(e,t){if(t===U9)return e;let n=t/U9,r=new Float32Array(Math.round(e.length/n));for(let t=0;t<r.length;t+=1){let i=Math.round(t*n),a=Math.min(Math.round((t+1)*n),e.length),o=0;for(let t=i;t<a;t+=1)o+=e[t];r[t]=o/Math.max(1,a-i)}return r}function Z9(e,t){let n=new Float32Array(e.length+t.length);return n.set(e,0),n.set(t,e.length),n}function Sme(e){let t=new ArrayBuffer(44+e.length*2),n=new DataView(t);return Q9(n,0,`RIFF`),n.setUint32(4,36+e.length*2,!0),Q9(n,8,`WAVE`),Q9(n,12,`fmt `),n.setUint32(16,16,!0),n.setUint16(20,1,!0),n.setUint16(22,1,!0),n.setUint32(24,U9,!0),n.setUint32(28,U9*2,!0),n.setUint16(32,2,!0),n.setUint16(34,16,!0),Q9(n,36,`data`),n.setUint32(40,e.length*2,!0),e.forEach((e,t)=>{let r=Math.max(-1,Math.min(1,e));n.setInt16(44+t*2,r<0?r*32768:r*32767,!0)}),new Blob([t],{type:`audio/wav`})}function Q9(e,t,n){for(let r=0;r<n.length;r+=1)e.setUint8(t+r,n.charCodeAt(r))}function $9(e){return e instanceof Error?e.message:String(e)}function Cme(e){return e.endsWith(`/`)?e:`${e}/`}var wme={class:`voice-input-control`},Tme=[`aria-label`,`aria-pressed`,`disabled`,`title`],Eme={key:0,class:`button-waveform`,"aria-hidden":`true`},Dme={key:1,class:`button-icon`,viewBox:`0 0 24 24`,"aria-hidden":`true`},Ome={key:2,class:`button-icon spinning`,viewBox:`0 0 24 24`,"aria-hidden":`true`},kme={key:3,class:`button-icon`,viewBox:`0 0 24 24`,"aria-hidden":`true`},Ame=$T((0,t.defineComponent)({__name:`VoiceInputButton`,props:(0,t.mergeModels)({append:{type:Boolean,default:!0},apiKey:{default:void 0},autoStopSeconds:{default:6},disabled:{type:Boolean,default:!1},endpoint:{default:void 0},model:{default:`local-qwen3-asr-1.7b`},separator:{default:` `},vadBaseUrl:{default:void 0}},{modelValue:{default:``},modelModifiers:{}}),emits:(0,t.mergeModels)([`error`,`recordingChange`,`speechChange`,`transcribed`,`transcribingChange`],[`update:modelValue`]),setup(e,{expose:n,emit:r}){let i=e,a=r,o=(0,t.useModel)(e,`modelValue`),s=[`#2563eb`,`#0891b2`,`#0d9488`,`#16a34a`,`#ca8a04`,`#ea580c`,`#dc2626`],{cancelVoiceInput:c,errorMessage:l,isRecording:u,isSpeechActive:d,isTranscribing:f,isVadReady:p,toggleRecording:m,waveformLevels:h}=K9(e=>{o.value=i.append&&o.value?`${o.value}${i.separator}${e}`:e,a(`transcribed`,e)},{autoStopSilenceMs:i.autoStopSeconds*1e3,apiKey:i.apiKey,endpoint:i.endpoint,model:i.model,vadBaseUrl:i.vadBaseUrl}),g=(0,t.computed)(()=>l.value?l.value:p.value?u.value?d.value?`检测到语音,点击结束语音输入`:`正在聆听,静音 ${i.autoStopSeconds} 秒后结束`:`语音输入`:`正在加载语音检测模型`);return(0,t.watch)(u,e=>a(`recordingChange`,e),{immediate:!0}),(0,t.watch)(d,e=>a(`speechChange`,e),{immediate:!0}),(0,t.watch)(f,e=>a(`transcribingChange`,e),{immediate:!0}),(0,t.watch)(()=>i.disabled,e=>{e&&c()}),(0,t.watch)(l,e=>{e&&a(`error`,e)}),n({cancel:c}),(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,wme,[(0,t.createElementVNode)(`button`,{class:(0,t.normalizeClass)([`voice-button`,{active:(0,t.unref)(u),error:(0,t.unref)(l)}]),"aria-label":g.value,"aria-pressed":(0,t.unref)(u),disabled:e.disabled||!(0,t.unref)(p),title:g.value,type:`button`,onClick:r[0]||=(...e)=>(0,t.unref)(m)&&(0,t.unref)(m)(...e)},[(0,t.unref)(u)?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,Eme,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(h),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`i`,{key:n,style:(0,t.normalizeStyle)({backgroundColor:s[n%s.length],transform:`scaleY(${e})`})},null,4))),128))])):(0,t.unref)(l)?((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,Dme,[...r[1]||=[(0,t.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},null,-1),(0,t.createElementVNode)(`path`,{d:`M12 7v6m0 4h.01`,fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-width":`2`},null,-1)]])):!(0,t.unref)(p)||(0,t.unref)(f)?((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,Ome,[...r[2]||=[(0,t.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-width":`2`,"stroke-dasharray":`42 15`},null,-1)]])):((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,kme,[...r[3]||=[(0,t.createElementVNode)(`rect`,{x:`9`,y:`3`,width:`6`,height:`11`,rx:`3`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},null,-1),(0,t.createElementVNode)(`path`,{d:`M6.5 11a5.5 5.5 0 0 0 11 0M12 16.5V21m-3 0h6`,fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-width":`2`},null,-1)]]))],10,Tme)]))}}),[[`__scopeId`,`data-v-a49f2a3e`]]);e.EchartsField=mme,e.HelloWorld=m,e.TableIndex=Ij,e.VoiceInputButton=Ame,e.useVoiceTranscription=K9});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kivii-public-components",
3
- "version": "0.2.48",
3
+ "version": "0.2.49",
4
4
  "type": "module",
5
5
  "description": "Kivii 公共 Vue3 组件库",
6
6
  "main": "./dist/kivii-public-components.umd.cjs",