UNPKG

@happy-table/vue3

Version:

A high-performance Vue 3 table component for B2B systems with TypeScript support

27 lines 222 kB
"use strict";var $l=Object.defineProperty;var Vl=(o,n,t)=>n in o?$l(o,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[n]=t;var K=(o,n,t)=>Vl(o,typeof n!="symbol"?n+"":n,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Il=require("@iconify/vue"),zl={class:"table-error-boundary"},_l={class:"error-content"},Nl={class:"error-title"},Al={class:"error-message"},Ol=e.defineComponent({__name:"TableErrorBoundary",props:{error:{},title:{default:"表格渲染错误"},retryText:{default:"重试"}},emits:["retry"],setup(o,{emit:n}){const t=n,l=()=>{t("retry")};return(a,r)=>(e.openBlock(),e.createElementBlock("div",zl,[e.createElementVNode("div",_l,[e.createElementVNode("h3",Nl,e.toDisplayString(a.title),1),e.createElementVNode("p",Al,e.toDisplayString(a.error.message),1),e.createElementVNode("button",{class:"error-retry-btn",onClick:l},e.toDisplayString(a.retryText),1)])]))}}),ee=(o,n)=>{const t=o.__vccOpts||o;for(const[l,a]of n)t[l]=a;return t},Ll=ee(Ol,[["__scopeId","data-v-2c488903"]]),Wl={class:"table-loading"},ql={class:"loading-text"},Hl=e.defineComponent({__name:"TableLoadingState",props:{loadingText:{default:"加载中..."}},setup(o){return(n,t)=>(e.openBlock(),e.createElementBlock("div",Wl,[t[0]||(t[0]=e.createElementVNode("div",{class:"loading-spinner"},null,-1)),e.createElementVNode("p",ql,e.toDisplayString(n.loadingText),1)]))}}),Kl=ee(Hl,[["__scopeId","data-v-2d5eba26"]]),Ul={key:0,class:"table-toolbar-placeholder"},jl={class:"toolbar-title"},Yl=e.defineComponent({__name:"TableToolbar",props:{config:{}},setup(o){const n=o,t=()=>n.config?.title?typeof n.config.title=="string"?n.config.title:n.config.title.text||"":"";return(l,a)=>l.config?(e.openBlock(),e.createElementBlock("div",Ul,[e.createElementVNode("div",jl,e.toDisplayString(t()),1)])):e.createCommentVNode("",!0)}}),Gl=ee(Yl,[["__scopeId","data-v-9b351fa2"]]),Ql=["data-theme","tabindex"],Xl={key:2,class:"table-content"},Jl=e.defineComponent({__name:"TableContainer",props:{config:{},error:{default:null},isLoading:{type:Boolean,default:!1},containerClasses:{},containerStyle:{},currentTheme:{},isDarkTheme:{type:Boolean},toolbarConfig:{},tableWrapperStyle:{},processedColumns:{},visibleColumns:{},isHorizontalVirtualEnabled:{type:Boolean},processedData:{},paginationConfig:{},paginationState:{},isExcelMode:{type:Function,default:()=>!1}},emits:["retry","keydown","keyup"],setup(o,{expose:n,emit:t}){const l=t,a=e.ref(null),r=()=>{l("retry")},i=h=>{l("keydown",h)},m=h=>{l("keyup",h)};return n({tableContainer:a}),(h,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"tableContainer",ref:a,class:e.normalizeClass(["vue-table-container",[h.containerClasses,{dark:h.isDarkTheme,"table-excel-mode":h.isExcelMode}]]),"data-theme":h.currentTheme,style:e.normalizeStyle(h.containerStyle),tabindex:h.isExcelMode()?0:-1,"data-no-password-manager":"true","data-form":"false","data-1p-ignore":"","data-lpignore":"true","data-bwignore":"true",onKeydown:i,onKeyup:m},[h.error?(e.openBlock(),e.createBlock(Ll,{key:0,error:h.error,onRetry:r},null,8,["error"])):h.isLoading?(e.openBlock(),e.createBlock(Kl,{key:1})):(e.openBlock(),e.createElementBlock("div",Xl,[e.createVNode(Gl,{config:h.toolbarConfig},null,8,["config"]),e.renderSlot(h.$slots,"table-content",{tableWrapperStyle:h.tableWrapperStyle,processedColumns:h.processedColumns,visibleColumns:h.visibleColumns,isHorizontalVirtualEnabled:h.isHorizontalVirtualEnabled,processedData:h.processedData,paginationConfig:h.paginationConfig,paginationState:h.paginationState},void 0,!0),e.renderSlot(h.$slots,"pagination",{paginationConfig:h.paginationConfig,paginationState:h.paginationState},void 0,!0)]))],46,Ql))}}),Zl=ee(Jl,[["__scopeId","data-v-949bbf2e"]]),eo=e.defineComponent({name:"AppIcon",inheritAttrs:!1,__name:"Icon",props:{icon:{},size:{default:"default"},color:{default:"current"},class:{}},setup(o){const n=o,t={"sort-asc":"lucide:arrow-up","sort-desc":"lucide:arrow-down","sort-both":"lucide:arrow-down-up",first:"lucide:chevrons-left",prev:"lucide:chevron-left",next:"lucide:chevron-right",last:"lucide:chevrons-right",empty:"lucide:inbox",expand:"lucide:chevron-right",collapse:"lucide:chevron-down",light:"lucide:sun",dark:"lucide:moon",auto:"lucide:monitor",create:"lucide:plus",edit:"lucide:edit-3",delete:"lucide:trash-2","bulk-delete":"lucide:trash-2",search:"lucide:search",filter:"lucide:filter","filter-filled":"lucide:funnel-x",refresh:"lucide:refresh-cw",settings:"lucide:settings",export:"lucide:download",fullscreen:"lucide:maximize","fullscreen-exit":"lucide:minimize",more:"lucide:more-horizontal"},l={xs:"w-3 h-3",sm:"w-4 h-4",default:"w-5 h-5",md:"w-6 h-6",lg:"w-7 h-7",xl:"w-8 h-8","2xl":"w-10 h-10"},a=e.computed(()=>n?.icon?.includes(":")?n.icon:t[n.icon]||n.icon),r=e.computed(()=>{const m=[];return typeof n.size=="string"&&m.push(l[n.size]||l.default),n.color&&n.color!=="current"&&m.push(`text-${n.color}`),n.class&&m.push(n.class),m.join(" ")}),i=e.computed(()=>{const m={};return typeof n.size=="number"&&(m.width=`${n.size}px`,m.height=`${n.size}px`),m});return(m,h)=>(e.openBlock(),e.createBlock(e.unref(Il.Icon),e.mergeProps({icon:a.value,class:r.value,style:i.value},m.$attrs),null,16,["icon","class","style"]))}}),me=ee(eo,[["__scopeId","data-v-2713a348"]]);function to(o,n,t,l={}){const{config:a={enabled:!0,mode:"auto",updateDelay:50},onCascadeUpdate:r,onCascadeInfoChange:i}=l,m=e.ref(a.enabled),h=e.ref(null),f=e.computed(()=>{if(!m.value)return De(n.value,o).map(w=>({value:w,label:Qe(w),count:Xe(n.value,o,w),available:!0,disabled:!1}));const u=Object.fromEntries(Object.entries(t.value).filter(([w])=>w!==o));if(Object.keys(u).length===0)return De(n.value,o).map(d=>({value:d,label:Qe(d),count:Xe(n.value,o,d),available:!0,disabled:!1}));const c=Object.entries(u).reduce((w,[d,b])=>no(w,d,b),n.value),s=De(c,o);return De(n.value,o).map(w=>{const d=s.includes(w);return{value:w,label:Qe(w),count:Xe(d?c:n.value,o,w),available:d,disabled:!d}})}),x=e.computed(()=>{const u=De(n.value,o),s=f.value.filter(d=>d.available).length,v=Object.keys(t.value).filter(d=>d!==o);return{total:u.length,available:s,filtered:u.length-s,hasActiveFilters:v.length>0,appliedFilters:v}}),S=()=>{h.value&&clearTimeout(h.value),h.value=setTimeout(()=>{const u=f.value,c=x.value;r?.(o,u),i?.(o,c),h.value=null},a.updateDelay||50)},p=u=>{m.value=u,e.nextTick(()=>{S()})};e.watch(t,(u,c)=>{const s=Object.keys({...u,...c}).filter(v=>v!==o);s.length>0&&s.some(w=>{const d=u[w],b=c?.[w];return JSON.stringify(d)!==JSON.stringify(b)})&&S()},{deep:!0}),e.watch(n,()=>{S()},{deep:!0}),e.watch(x,u=>{i?.(o,u)},{deep:!0});const g=()=>{h.value&&(clearTimeout(h.value),h.value=null)};return e.onUnmounted(g),Oe(g),{availableOptions:f,cascadeInfo:x,refreshOptions:S,enableCascade:p,isCascadeEnabled:m}}function De(o,n){return[...new Set(o.map(t=>t[n]).filter(t=>t!=null))]}function Qe(o){return o==null?"(空值)":typeof o=="boolean"?o?"是":"否":o instanceof Date?o.toLocaleDateString():String(o)}function Xe(o,n,t){return o.filter(l=>l[n]===t).length}function no(o,n,t){if(!t)return o;if(Array.isArray(t))return o.filter(l=>t.includes(l[n]));if(typeof t=="object"&&"operator"in t&&"value"in t){const{operator:l,value:a,caseSensitive:r}=t;return o.filter(i=>{const m=r?String(i[n]):String(i[n]).toLowerCase(),h=r?String(a):String(a).toLowerCase();switch(l){case"contains":return m.includes(h);case"notContains":return!m.includes(h);case"equals":return m===h;case"notEquals":return m!==h;case"startsWith":return m.startsWith(h);case"endsWith":return m.endsWith(h);default:return!0}})}if(typeof t=="object"&&("min"in t||"max"in t)){const{min:l,max:a}=t;return o.filter(r=>{const i=parseFloat(r[n]);return isNaN(i)?!1:(l===void 0||i>=l)&&(a===void 0||i<=a)})}if(typeof t=="object"&&("startDate"in t||"endDate"in t)){const{startDate:l,endDate:a}=t;return o.filter(r=>{const i=new Date(r[n]);return isNaN(i.getTime())?!1:(!l||i>=new Date(l))&&(!a||i<=new Date(a))})}if(typeof t=="object"&&"value"in t){const{value:l}=t;return l===null?o:o.filter(a=>!!a[n]==!!l)}return o.filter(l=>l[n]===t)}class lo{constructor(n=100){K(this,"updateQueues",new Map);K(this,"batchTimeout",null);K(this,"batchDelay");this.batchDelay=n}scheduleUpdate(n,t){this.updateQueues.has(n)||this.updateQueues.set(n,new Set),this.updateQueues.get(n).add(t),this.batchTimeout||(this.batchTimeout=setTimeout(()=>{this.flushUpdates()},this.batchDelay))}flushColumn(n){const t=this.updateQueues.get(n);t&&(t.forEach(l=>{try{l()}catch{}}),t.clear())}flushUpdates(){this.updateQueues.forEach((n,t)=>{this.flushColumn(t)}),this.updateQueues.clear(),this.batchTimeout&&(clearTimeout(this.batchTimeout),this.batchTimeout=null)}clear(){this.updateQueues.clear(),this.batchTimeout&&(clearTimeout(this.batchTimeout),this.batchTimeout=null)}getPendingCount(){return this.updateQueues.size}}const jt=new lo,et=new Set;function Oe(o){et.add(o)}function It(){try{jt.clear(),et.forEach(o=>{try{o()}catch{}}),et.clear()}catch{}}function oo(){typeof window<"u"&&(window.addEventListener("beforeunload",It,{passive:!0}),window.addEventListener("pagehide",It,{passive:!0}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&jt.clear()},{passive:!0}))}typeof window<"u"&&!window.process?.env?.NODE_ENV?.includes("test")&&oo();const Yt={sampleSize:100,dateFormats:["YYYY-MM-DD","MM/DD/YYYY","DD/MM/YYYY","YYYY/MM/DD","MM-DD-YYYY","DD-MM-YYYY"],booleanValues:[!0,!1,"true","false","True","False","TRUE","FALSE",1,0,"1","0","yes","no","Yes","No","YES","NO","on","off","On","Off","ON","OFF","是","否","启用","禁用","开启","关闭"],selectThreshold:10,confidenceThreshold:.6},$e=new Map;function Gt(o={}){const n={...Yt,...o.config},t=o.cache!==!1,l=(f,x)=>a(f,x).type,a=(f,x)=>{if(f.filter&&typeof f.filter=="object"&&"type"in f.filter&&f.filter.type!=="auto")return{type:f.filter.type,confidence:1,sampleSize:0,reasoning:"显式配置的筛选类型"};const S=ro(f.key,x);if(t&&$e.has(S))return $e.get(S);const p=r(f.key,x);return t&&p.confidence>=n.confidenceThreshold&&$e.set(S,p),p},r=(f,x)=>{const S=ao(x,f,n.sampleSize);if(S.length===0)return{type:"text",confidence:.5,sampleSize:0,reasoning:"无可用数据样本,默认为文本类型"};const p=[io(S),co(S,n.dateFormats),so(S),uo(S,x.length,n.selectThreshold),fo(S)],g=p.filter(c=>c.confidence>=n.confidenceThreshold);return g.length>0?g.sort((s,v)=>v.confidence-s.confidence)[0]:p.sort((c,s)=>s.confidence-c.confidence)[0]||{type:"text",confidence:.5,sampleSize:S.length,reasoning:"所有检测结果置信度不足,默认为文本类型"}},i=()=>{$e.clear()},m=()=>({...n}),h=f=>{Object.assign(n,f),i()};return Oe(i),{detectType:l,detectWithDetails:a,analyzeColumn:r,clearCache:i,getConfig:m,updateConfig:h}}function Qt(o,n){const l=Gt().detectType(o,n);return l&&l!=="auto"?l:"text"}function ao(o,n,t){return o.slice(0,t).map(l=>l[n]).filter(l=>l!=null&&l!=="")}function ro(o,n){const t=n.length>0?JSON.stringify(n.slice(0,10).map(l=>l[o])):"empty";return`${o}_${t.length}_${n.length}`}function io(o){if(o.length===0)return{type:"boolean",confidence:0,sampleSize:0,reasoning:"无样本数据"};const n=new Set(Yt.booleanValues),t=o.filter(a=>n.has(a)).length;return{type:"boolean",confidence:t/o.length,sampleSize:o.length,reasoning:`${t}/${o.length} 个值为布尔类型值`}}function so(o){if(o.length===0)return{type:"number",confidence:0,sampleSize:0,reasoning:"无样本数据"};const n=o.filter(l=>{if(typeof l=="number")return!0;if(typeof l=="string"){const a=parseFloat(l);return!isNaN(a)&&isFinite(a)}return!1}).length;return{type:"number",confidence:n/o.length,sampleSize:o.length,reasoning:`${n}/${o.length} 个值为数值类型`}}function co(o,n){if(o.length===0)return{type:"date",confidence:0,sampleSize:0,reasoning:"无样本数据"};const t=o.filter(a=>{if(a instanceof Date)return!isNaN(a.getTime());if(typeof a=="string"){if(n.some(i=>go(a,i)))return!0;const r=new Date(a);if(!isNaN(r.getTime()))return!(/^\d+$/.test(a)||!/[-/\s:]/.test(a))}if(typeof a=="number"&&a>9466848e5&&a<41024448e5){const r=new Date(a);return!isNaN(r.getTime())}return!1}).length;return{type:"date",confidence:t/o.length,sampleSize:o.length,reasoning:`${t}/${o.length} 个值为日期类型`}}function uo(o,n,t){if(o.length===0)return{type:"select",confidence:0,sampleSize:0,reasoning:"无样本数据"};const a=new Set(o).size,r=a/o.length;return{type:"select",confidence:a<=t&&r<.8&&a>1?Math.min(.8,1-r+(t-a)/t):0,sampleSize:o.length,reasoning:`唯一值数量: ${a}, 占比: ${(r*100).toFixed(1)}%, 阈值: ${t}`}}function fo(o){return{type:"text",confidence:.6,sampleSize:o.length,reasoning:"默认文本类型,适用于所有字符串数据"}}function go(o,n){const l={"YYYY-MM-DD":/^\d{4}-\d{2}-\d{2}$/,"MM/DD/YYYY":/^\d{2}\/\d{2}\/\d{4}$/,"DD/MM/YYYY":/^\d{2}\/\d{2}\/\d{4}$/,"YYYY/MM/DD":/^\d{4}\/\d{2}\/\d{2}$/,"MM-DD-YYYY":/^\d{2}-\d{2}-\d{4}$/,"DD-MM-YYYY":/^\d{2}-\d{2}-\d{4}$/}[n];if(!l||!l.test(o))return!1;const a=new Date(o);return!isNaN(a.getTime())}function Se(o,n){return n.split(".").reduce((t,l)=>t&&t[l]!==void 0?t[l]:void 0,o)}const ho=/[¥$€£,\s]/g;function de(o,n={}){const{strict:t=!1,currencyPattern:l=ho}=n;if(typeof o=="number")return isNaN(o)?null:o;if(t&&typeof o!="number")return null;if(typeof o=="string"){const r=o.trim();if(r==="")return null;const i=r.replace(l,"").trim();if(i.match(/^-?\d+(\.\d+)?$/)){const h=parseFloat(i);return isNaN(h)?null:h}return null}if(o==null)return null;const a=Number(o);return isNaN(a)?null:a}function po(o,n,t={}){const{includeNulls:l=!1}=t,a=[];for(const r of o){const i=Se(r,n),m=de(i,t);m!==null?a.push(m):l&&i==null&&a.push(0)}return a}function mo(o,n,t={}){const l=po(o,n,t);if(l.length===0)return{min:0,max:0,avg:0};const a=Math.min(...l),r=Math.max(...l),i=l.reduce((m,h)=>m+h,0)/l.length;return{min:a,max:r,avg:i}}const vo={class:"column-filter-panel"},yo={class:"filter-header"},Co={class:"filter-title"},bo={class:"filter-content"},So={class:"filter-actions"},wo={class:"preview-info"},xo={key:0,class:"preview-count"},ko={class:"action-buttons"},Eo=["disabled"],To=["disabled"],Ro=e.defineComponent({__name:"BaseColumnFilter",props:{column:{},value:{},cascadeEnabled:{type:Boolean,default:!0},totalRecordsCount:{default:0},previewCount:{default:null},canApply:{type:Boolean,default:!0}},emits:["apply","close","reset"],setup(o,{emit:n}){const t=o,l=n,a=e.computed(()=>t.value!==null&&t.value!==void 0),r=e.computed(()=>!!t.canApply),i=()=>{l("reset")},m=()=>{l("apply",t.value)};return(h,f)=>(e.openBlock(),e.createElementBlock("div",vo,[e.createElementVNode("div",yo,[e.createElementVNode("h4",Co,e.toDisplayString(h.column.title),1),e.renderSlot(h.$slots,"header-extra",{},void 0,!0),e.createElementVNode("button",{class:"close-btn",title:"关闭",onClick:f[0]||(f[0]=x=>h.$emit("close"))}," × ")]),e.createElementVNode("div",bo,[e.renderSlot(h.$slots,"default",{},void 0,!0)]),e.createElementVNode("div",So,[e.createElementVNode("div",wo,[h.previewCount!==null?(e.openBlock(),e.createElementBlock("span",xo,e.toDisplayString(h.previewCount)+" 条记录 ",1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ko,[e.createElementVNode("button",{class:"reset-btn",disabled:!a.value,onClick:i}," 重置 ",8,Eo),e.createElementVNode("button",{class:"apply-btn",disabled:!r.value,onClick:m}," 应用 ",8,To)])])]))}}),Be=ee(Ro,[["__scopeId","data-v-17fee5eb"]]),Do={class:"main-filter-row"},Fo=["placeholder"],Mo={key:0,class:"preview-count ultra-compact"},Bo={class:"auxiliary-row"},Po={class:"case-option"},$o=e.defineComponent({__name:"TextColumnFilter",props:{config:{default:()=>({operators:["contains","notContains","equals","notEquals","startsWith","endsWith"],caseSensitive:!1})},column:{},value:{},availableOptions:{},onPreview:{}},emits:["apply","preview","close"],setup(o,{emit:n}){const t=o,l=n,a=e.ref(),r=e.ref({operator:"contains",value:"",caseSensitive:t.config?.caseSensitive||!1}),i=e.ref(null),m=e.computed(()=>r.value.value.trim().length>0),h=()=>{const c=t.column.title||"内容";switch(r.value.operator){case"contains":case"notContains":return`输入要包含的${c}...`;case"equals":case"notEquals":return`输入完整的${c}...`;case"startsWith":return`输入${c}开头...`;case"endsWith":return`输入${c}结尾...`;default:return`请输入${c}...`}},f=()=>{p()},x=()=>{p()},S=()=>{p()},p=()=>{try{if(!m.value){i.value=null;return}const c={...r.value};t.onPreview&&(i.value=t.onPreview(c)),l("preview",c)}catch{i.value=null}},g=()=>{try{if(!m.value)return;const c={...r.value};l("apply",c)}catch{}},u=()=>{try{r.value={operator:"contains",value:"",caseSensitive:t.config?.caseSensitive||!1},i.value=null,l("apply",null)}catch{}};return e.onMounted(async()=>{try{if(t.value&&typeof t.value=="object"&&"operator"in t.value){const c=t.value;r.value={...c},p()}await e.nextTick(),a.value&&a.value.focus()}catch{}}),e.watch(()=>t.value,c=>{try{if(c&&typeof c=="object"&&"operator"in c){const s=c;r.value={...s},p()}else c||(r.value={operator:"contains",value:"",caseSensitive:t.config?.caseSensitive||!1},i.value=null)}catch{}},{deep:!0,immediate:!1}),(c,s)=>(e.openBlock(),e.createBlock(Be,{class:"text-filter-panel ultra-compact",column:c.column,value:r.value,"can-apply":m.value,onClose:s[3]||(s[3]=v=>c.$emit("close")),onReset:u,onApply:g},{default:e.withCtx(()=>[e.createElementVNode("div",Do,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":s[0]||(s[0]=v=>r.value.operator=v),class:"operator-select ultra-compact",onChange:f},[...s[4]||(s[4]=[e.createElementVNode("option",{value:"contains"},"包含",-1),e.createElementVNode("option",{value:"notContains"},"不包含",-1),e.createElementVNode("option",{value:"equals"},"等于",-1),e.createElementVNode("option",{value:"notEquals"},"不等于",-1),e.createElementVNode("option",{value:"startsWith"},"开头",-1),e.createElementVNode("option",{value:"endsWith"},"结尾",-1)])],544),[[e.vModelSelect,r.value.operator]]),e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:a,"onUpdate:modelValue":s[1]||(s[1]=v=>r.value.value=v),type:"text",placeholder:h(),class:"filter-input ultra-compact",onInput:x,onKeyup:e.withKeys(g,["enter"])},null,40,Fo),[[e.vModelText,r.value.value]]),i.value!==null?(e.openBlock(),e.createElementBlock("div",Mo,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Bo,[e.createElementVNode("label",Po,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":s[2]||(s[2]=v=>r.value.caseSensitive=v),type:"checkbox",class:"case-checkbox",onChange:S},null,544),[[e.vModelCheckbox,r.value.caseSensitive]]),s[5]||(s[5]=e.createElementVNode("span",{class:"case-label"},"Aa",-1))])])]),_:1},8,["column","value","can-apply"]))}}),Vo=ee($o,[["__scopeId","data-v-fb937b9b"]]),Io={class:"mode-tabs"},zo={key:0,class:"filter-main compact"},_o=["step"],No={key:0,class:"preview-count compact"},Ao={key:1,class:"filter-main compact"},Oo=["step"],Lo=["step"],Wo={key:0,class:"preview-count compact"},qo={key:2,class:"filter-options-row"},Ho={key:0,class:"quick-filters compact"},Ko=["title","onClick"],Uo={key:1,class:"data-range-info compact"},jo=e.defineComponent({__name:"NumberColumnFilter",props:{config:{default:()=>({mode:"both",quickFilters:["top10%","bottom10%","aboveAvg","belowAvg"],precision:2})},dataRange:{},calculateDataRange:{},column:{},value:{},availableOptions:{},onPreview:{}},emits:["apply","preview","close"],setup(o,{emit:n}){const t=o,l=n,a=e.ref({mode:"range",precision:t.config?.precision||2}),r=e.ref(null),i=e.ref({min:0,max:0,avg:0}),m=e.computed(()=>a.value.mode==="compare"?a.value.compareValue!==void 0&&a.value.compareValue!==null&&typeof a.value.operator=="string"&&a.value.operator.length>0:a.value.minValue!==void 0&&a.value.minValue!==null||a.value.maxValue!==void 0&&a.value.maxValue!==null),h=e.computed(()=>t.config?.quickFilters&&t.config.quickFilters.length>0&&i.value&&(i.value.min!==0||i.value.max!==0)),f=e.computed(()=>{if(!t.config?.quickFilters||!i.value)return[];const b=[];return t.config.quickFilters.includes("top10%")&&b.push({key:"top10%",label:"Top 10%",description:"最高的 10% 数值",apply:y=>({mode:"range",minValue:S(y.min+(y.max-y.min)*.9),maxValue:S(y.max)})}),t.config.quickFilters.includes("bottom10%")&&b.push({key:"bottom10%",label:"Bottom 10%",description:"最低的 10% 数值",apply:y=>({mode:"range",minValue:S(y.min),maxValue:S(y.min+(y.max-y.min)*.1)})}),t.config.quickFilters.includes("aboveAvg")&&b.push({key:"aboveAvg",label:"平均值以上",description:"大于平均值的数据",apply:y=>({mode:"compare",operator:">=",compareValue:S(y.avg)})}),t.config.quickFilters.includes("belowAvg")&&b.push({key:"belowAvg",label:"平均值以下",description:"小于平均值的数据",apply:y=>({mode:"compare",operator:"<",compareValue:S(y.avg)})}),b}),x=()=>{const b=a.value.precision||2;return b===0?1:(1/Math.pow(10,b)).toString()},S=b=>{const y=a.value.precision||2;return y===0?Math.round(b):Number(b.toFixed(y))},p=b=>{const y=a.value.precision||2;return t.config?.format?new Intl.NumberFormat("zh-CN",t.config.format).format(b):b.toFixed(y)},g=b=>{a.value.mode=b,b==="range"?(a.value.operator=void 0,a.value.compareValue=void 0):(a.value.minValue=void 0,a.value.maxValue=void 0,a.value.operator||(a.value.operator=">")),c()},u=()=>{c()},c=()=>{if(!m.value){r.value=null;return}const b={...a.value};t.onPreview&&(r.value=t.onPreview(b)),l("preview",b)},s=()=>{if(!m.value)return;const b={...a.value};l("apply",b)},v=()=>{a.value={mode:"range",precision:t.config?.precision||2},r.value=null,l("apply",null)},w=()=>{if(t.calculateDataRange)try{i.value=t.calculateDataRange();return}catch{}if(t.dataRange&&(t.dataRange.min!==0||t.dataRange.max!==0||t.dataRange.avg!==0)){i.value={...t.dataRange};return}i.value={min:5e3,max:15e3,avg:1e4}},d=b=>{const y=i.value;if(y.min===0&&y.max===0&&y.avg===0)return;const R=b.apply(y);a.value={...a.value,...R},c()};return e.onMounted(()=>{if(w(),t.value&&typeof t.value=="object"){const b=t.value;a.value={...a.value,...b},c()}a.value.mode==="compare"&&!a.value.operator&&(a.value.operator=">")}),(b,y)=>(e.openBlock(),e.createBlock(Be,{class:"number-filter-panel compact",column:b.column,value:a.value,"can-apply":m.value,onClose:y[6]||(y[6]=R=>b.$emit("close")),onReset:v,onApply:s},{"header-extra":e.withCtx(()=>[e.createElementVNode("div",Io,[e.createElementVNode("button",{class:e.normalizeClass(["mode-tab",{active:a.value.mode==="range"}]),onClick:y[0]||(y[0]=R=>g("range"))}," 范围 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mode-tab",{active:a.value.mode==="compare"}]),onClick:y[1]||(y[1]=R=>g("compare"))}," 条件 ",2)])]),default:e.withCtx(()=>[a.value.mode==="compare"?(e.openBlock(),e.createElementBlock("div",zo,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[2]||(y[2]=R=>a.value.operator=R),class:"operator-select compact",onChange:u},[...y[7]||(y[7]=[e.createElementVNode("option",{value:">"},">",-1),e.createElementVNode("option",{value:"<"},"<",-1),e.createElementVNode("option",{value:"="},"=",-1),e.createElementVNode("option",{value:"!="},"≠",-1),e.createElementVNode("option",{value:">="},">=",-1),e.createElementVNode("option",{value:"<="},"<=",-1)])],544),[[e.vModelSelect,a.value.operator]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[3]||(y[3]=R=>a.value.compareValue=R),type:"number",step:x(),class:"number-input compact",placeholder:"输入数值",onInput:u,onKeyup:e.withKeys(s,["enter"])},null,40,_o),[[e.vModelText,a.value.compareValue,void 0,{number:!0}]]),r.value!==null?(e.openBlock(),e.createElementBlock("div",No,e.toDisplayString(r.value)+" 条 ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),a.value.mode==="range"?(e.openBlock(),e.createElementBlock("div",Ao,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[4]||(y[4]=R=>a.value.minValue=R),type:"number",step:x(),class:"number-input compact range-input",placeholder:"最小值",onInput:u,onKeyup:e.withKeys(s,["enter"])},null,40,Oo),[[e.vModelText,a.value.minValue,void 0,{number:!0}]]),y[8]||(y[8]=e.createElementVNode("span",{class:"range-separator"},"-",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[5]||(y[5]=R=>a.value.maxValue=R),type:"number",step:x(),class:"number-input compact range-input",placeholder:"最大值",onInput:u,onKeyup:e.withKeys(s,["enter"])},null,40,Lo),[[e.vModelText,a.value.maxValue,void 0,{number:!0}]]),r.value!==null?(e.openBlock(),e.createElementBlock("div",Wo,e.toDisplayString(r.value)+" 条 ",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),h.value||b.dataRange?(e.openBlock(),e.createElementBlock("div",qo,[h.value&&f.value.length>0?(e.openBlock(),e.createElementBlock("div",Ho,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,R=>(e.openBlock(),e.createElementBlock("button",{key:R.key,class:"quick-filter-btn compact",title:R.description,onClick:B=>d(R)},e.toDisplayString(R.label),9,Ko))),128))])):e.createCommentVNode("",!0),i.value&&(i.value.min!==0||i.value.max!==0)?(e.openBlock(),e.createElementBlock("div",Uo," 范围: "+e.toDisplayString(p(i.value.min))+" - "+e.toDisplayString(p(i.value.max)),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),_:1},8,["column","value","can-apply"]))}}),Yo=ee(jo,[["__scopeId","data-v-fb632363"]]),Go={key:0,class:"quick-section"},Qo={class:"quick-options compact"},Xo=["onClick"],Jo={class:"date-range-row"},Zo={key:0,class:"preview-count compact"},ea={key:1,class:"relative-options-row"},ta={class:"checkbox-option compact"},na={class:"checkbox-option compact"},la={class:"checkbox-option compact"},oa={key:2,class:"date-range-display compact"},aa=e.defineComponent({__name:"DateColumnFilter",props:{config:{default:()=>({quickOptions:["today","yesterday","thisWeek","thisMonth","last7days","last30days"],relative:!0})},column:{},value:{},availableOptions:{},onPreview:{}},emits:["apply","preview","close"],setup(o,{emit:n}){const t=o,l=n,a=e.ref({includeToday:!1,weekdaysOnly:!1,weekendsOnly:!1}),r=e.ref(null),i=e.computed(()=>!!(a.value.startDate||a.value.endDate)),m=e.computed(()=>t.config?.quickOptions&&t.config.quickOptions.length>0),h=e.computed(()=>{if(!t.config?.quickOptions)return[];const d=new Date,b=[];if(t.config.quickOptions.includes("today")&&b.push({key:"today",label:"今天",description:"今天的数据",apply:()=>({startDate:f(d),endDate:f(d)})}),t.config.quickOptions.includes("yesterday")){const y=new Date(d);y.setDate(d.getDate()-1),b.push({key:"yesterday",label:"昨天",description:"昨天的数据",apply:()=>({startDate:f(y),endDate:f(y)})})}if(t.config.quickOptions.includes("thisWeek")){const y=new Date(d),R=d.getDay(),B=d.getDate()-R+(R===0?-6:1);y.setDate(B),b.push({key:"thisWeek",label:"本周",description:"本周的数据",apply:()=>({startDate:f(y),endDate:f(d)})})}if(t.config.quickOptions.includes("thisMonth")){const y=new Date(d.getFullYear(),d.getMonth(),1);b.push({key:"thisMonth",label:"本月",description:"本月的数据",apply:()=>({startDate:f(y),endDate:f(d)})})}if(t.config.quickOptions.includes("last7days")){const y=new Date(d);y.setDate(d.getDate()-7),b.push({key:"last7days",label:"过去7天",description:"过去7天的数据",apply:()=>({startDate:f(y),endDate:f(d)})})}if(t.config.quickOptions.includes("last30days")){const y=new Date(d);y.setDate(d.getDate()-30),b.push({key:"last30days",label:"过去30天",description:"过去30天的数据",apply:()=>({startDate:f(y),endDate:f(d)})})}if(t.config.quickOptions.includes("thisQuarter")){const y=Math.floor(d.getMonth()/3),R=new Date(d.getFullYear(),y*3,1);b.push({key:"thisQuarter",label:"本季度",description:"本季度的数据",apply:()=>({startDate:f(R),endDate:f(d)})})}if(t.config.quickOptions.includes("thisYear")){const y=new Date(d.getFullYear(),0,1);b.push({key:"thisYear",label:"今年",description:"今年的数据",apply:()=>({startDate:f(y),endDate:f(d)})})}return b}),f=d=>d.toISOString().split("T")[0],x=d=>{if(!d)return"";const b=typeof d=="string"?new Date(d):d;return t.config?.format?new Intl.DateTimeFormat("zh-CN",t.config.format).format(b):b.toLocaleDateString("zh-CN")},S=()=>{const{startDate:d,endDate:b}=a.value;return d&&b?d===b?x(d):`${x(d)} - ${x(b)}`:d?`从 ${x(d)}`:b?`到 ${x(b)}`:""},p=d=>a.value.quickOption===d.key,g=()=>{a.value.quickOption=void 0,c()},u=()=>{a.value.weekdaysOnly&&a.value.weekendsOnly&&(a.value.weekdaysOnly?a.value.weekendsOnly=!1:a.value.weekdaysOnly=!1),c()},c=()=>{if(!i.value){r.value=null;return}const d={...a.value};t.onPreview&&(r.value=t.onPreview(d)),l("preview",d)},s=()=>{if(!i.value)return;const d={...a.value};l("apply",d)},v=()=>{a.value={includeToday:!1,weekdaysOnly:!1,weekendsOnly:!1},r.value=null,l("apply",null)},w=d=>{const b=d.apply();a.value={...a.value,...b,quickOption:d.key},c()};return e.onMounted(()=>{if(t.value&&typeof t.value=="object"){const d=t.value;a.value={...a.value,...d},c()}}),(d,b)=>(e.openBlock(),e.createBlock(Be,{class:"date-filter-panel compact",column:d.column,value:a.value,"can-apply":i.value,onClose:b[5]||(b[5]=y=>d.$emit("close")),onReset:v,onApply:s},{default:e.withCtx(()=>[m.value?(e.openBlock(),e.createElementBlock("div",Go,[e.createElementVNode("div",Qo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,y=>(e.openBlock(),e.createElementBlock("button",{key:y.key,class:e.normalizeClass(["quick-option-btn compact",{active:p(y)}]),onClick:R=>w(y)},e.toDisplayString(y.label),11,Xo))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("div",Jo,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[0]||(b[0]=y=>a.value.startDate=y),type:"date",class:"date-input compact",placeholder:"开始日期",onChange:g},null,544),[[e.vModelText,a.value.startDate]]),b[6]||(b[6]=e.createElementVNode("span",{class:"date-separator"},"-",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[1]||(b[1]=y=>a.value.endDate=y),type:"date",class:"date-input compact",placeholder:"结束日期",onChange:g},null,544),[[e.vModelText,a.value.endDate]]),r.value!==null?(e.openBlock(),e.createElementBlock("div",Zo,e.toDisplayString(r.value)+" 条 ",1)):e.createCommentVNode("",!0)]),d.config?.relative?(e.openBlock(),e.createElementBlock("div",ea,[e.createElementVNode("label",ta,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[2]||(b[2]=y=>a.value.includeToday=y),type:"checkbox",onChange:u},null,544),[[e.vModelCheckbox,a.value.includeToday]]),b[7]||(b[7]=e.createElementVNode("span",null,"含今天",-1))]),e.createElementVNode("label",na,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[3]||(b[3]=y=>a.value.weekdaysOnly=y),type:"checkbox",onChange:u},null,544),[[e.vModelCheckbox,a.value.weekdaysOnly]]),b[8]||(b[8]=e.createElementVNode("span",null,"工作日",-1))]),e.createElementVNode("label",la,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[4]||(b[4]=y=>a.value.weekendsOnly=y),type:"checkbox",onChange:u},null,544),[[e.vModelCheckbox,a.value.weekendsOnly]]),b[9]||(b[9]=e.createElementVNode("span",null,"周末",-1))])])):e.createCommentVNode("",!0),a.value.startDate||a.value.endDate?(e.openBlock(),e.createElementBlock("div",oa,e.toDisplayString(S()),1)):e.createCommentVNode("",!0)]),_:1},8,["column","value","can-apply"]))}}),ra=ee(aa,[["__scopeId","data-v-61f6da0d"]]),ia={class:"boolean-options-row"},sa={key:0,class:"stats-row"},ca={class:"stat-item"},ua={class:"stat-item"},da=e.defineComponent({__name:"BooleanColumnFilter",props:{config:{default:()=>({labels:["是","否"],showStats:!0})},statistics:{},column:{},value:{},availableOptions:{},onPreview:{}},emits:["apply","preview","close"],setup(o,{emit:n}){const t=o,l=n,a=e.ref({value:null}),r=e.ref(null),i=e.computed(()=>t.config?.showStats!==!1&&t.statistics),m=e.computed(()=>!0),h=()=>t.config?.labels?.[0]||"是",f=()=>t.config?.labels?.[1]||"否",x=u=>{a.value.value=u,S()},S=()=>{const u=a.value.value===null?null:{...a.value};t.onPreview&&(r.value=t.onPreview(u)),l("preview",u)},p=()=>{const u=a.value.value===null?null:{...a.value};l("apply",u)},g=()=>{a.value={value:null},r.value=null,l("apply",null)};return e.onMounted(()=>{if(t.value&&typeof t.value=="object"&&"value"in t.value){const u=t.value;a.value={...u},S()}S()}),(u,c)=>(e.openBlock(),e.createBlock(Be,{column:u.column,value:a.value,"preview-count":r.value,"can-apply":m.value,onClose:c[3]||(c[3]=s=>u.$emit("close")),onReset:g,onApply:p},{default:e.withCtx(()=>[e.createElementVNode("div",ia,[e.createElementVNode("button",{class:e.normalizeClass(["boolean-option-btn",{active:a.value.value===null}]),onClick:c[0]||(c[0]=s=>x(null))}," 全部 ",2),e.createElementVNode("button",{class:e.normalizeClass(["boolean-option-btn",{active:a.value.value===!0}]),onClick:c[1]||(c[1]=s=>x(!0))},e.toDisplayString(h()),3),e.createElementVNode("button",{class:e.normalizeClass(["boolean-option-btn",{active:a.value.value===!1}]),onClick:c[2]||(c[2]=s=>x(!1))},e.toDisplayString(f()),3)]),i.value&&u.statistics?(e.openBlock(),e.createElementBlock("div",sa,[e.createElementVNode("span",ca,e.toDisplayString(h())+": "+e.toDisplayString(u.statistics.trueCount)+"条 ("+e.toDisplayString(u.statistics.truePercentage)+"%) ",1),c[4]||(c[4]=e.createElementVNode("span",{class:"stat-separator"},"|",-1)),e.createElementVNode("span",ua,e.toDisplayString(f())+": "+e.toDisplayString(u.statistics.falseCount)+"条 ("+e.toDisplayString(u.statistics.falsePercentage)+"%) ",1)])):e.createCommentVNode("",!0)]),_:1},8,["column","value","preview-count","can-apply"]))}}),fa=ee(da,[["__scopeId","data-v-1c51fc74"]]),ga={key:0,class:"search-input-compact"},ha=["placeholder"],pa={key:0,class:"cascade-hint compact"},ma={class:"quick-actions-row"},va={class:"selection-count"},ya=["value","disabled"],Ca={class:"option-label"},ba={key:0,class:"option-count compact"},Sa={key:0,class:"empty-state compact"},wa={key:1,class:"cascade-status compact"},xa=e.defineComponent({__name:"SelectColumnFilter",props:{cascadeEnabled:{type:Boolean,default:!0},totalRecordsCount:{default:0},config:{default:()=>({search:!0,quickActions:!0,maxHeight:300})},availableOptions:{default:()=>[]},cascadeInfo:{},column:{},value:{},onPreview:{}},emits:["apply","preview","close"],setup(o,{emit:n}){const t=o,l=n,a=e.ref([]),r=e.ref(""),i=e.ref(null),m=e.computed(()=>t.config?.search!==!1),h=e.computed(()=>t.cascadeEnabled),f=e.computed(()=>t.config?.maxHeight||300),x=e.computed(()=>`在${t.column.title}中搜索...`),S=e.computed(()=>t.cascadeEnabled&&t.cascadeInfo&&t.cascadeInfo.hasActiveFilters&&t.cascadeInfo.appliedFilters.length>0),p=e.computed(()=>{let y=t.availableOptions||[];if(r.value.trim()){const R=r.value.toLowerCase();y=y.filter(B=>B.label.toLowerCase().includes(R))}return y.sort((R,B)=>t.cascadeEnabled&&R.available!==B.available?R.available?-1:1:R.label.localeCompare(B.label))}),g=()=>{},u=()=>{r.value=""},c=()=>{const y=p.value.filter(R=>R.available!==!1&&!R.disabled).map(R=>R.value);a.value=[...new Set([...a.value,...y])],v()},s=()=>{a.value=[],v()},v=()=>{w()},w=()=>{const y=a.value.length>0?a.value:null;t.onPreview&&(i.value=t.onPreview(y)),l("preview",y)},d=()=>{const y=a.value.length>0?[...a.value]:null;l("apply",y)},b=()=>{a.value=[],i.value=null,r.value="",l("apply",null)};return e.watch(()=>t.availableOptions,()=>{if(t.cascadeEnabled&&a.value.length>0){const y=new Set((t.availableOptions||[]).filter(B=>B.available!==!1).map(B=>B.value)),R=a.value.filter(B=>y.has(B));R.length!==a.value.length&&(a.value=R,w())}},{deep:!0}),e.onMounted(()=>{t.value&&Array.isArray(t.value)&&(a.value=[...t.value],w()),(!t.value||Array.isArray(t.value)&&t.value.length===0)&&w()}),(y,R)=>(e.openBlock(),e.createBlock(Be,{class:"select-filter-panel compact",column:y.column,value:a.value,onClose:R[2]||(R[2]=B=>y.$emit("close")),onReset:b,onApply:d},{"header-extra":e.withCtx(()=>[m.value?(e.openBlock(),e.createElementBlock("div",ga,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R[0]||(R[0]=B=>r.value=B),type:"text",placeholder:x.value,class:"search-input",onInput:g},null,40,ha),[[e.vModelText,r.value]]),r.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"clear-search-btn",onClick:u}," × ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),default:e.withCtx(()=>[S.value?(e.openBlock(),e.createElementBlock("div",pa," 📊 共 "+e.toDisplayString(y.totalRecordsCount)+" 条,"+e.toDisplayString(y.cascadeInfo?.appliedFilters.length||0)+" 个筛选生效 ",1)):e.createCommentVNode("",!0),e.createElementVNode("div",ma,[e.createElementVNode("div",{class:"quick-actions compact"},[e.createElementVNode("button",{class:"quick-action-btn compact",onClick:c}," 全选 "),e.createElementVNode("button",{class:"quick-action-btn compact",onClick:s}," 清除 ")]),e.createElementVNode("div",va,e.toDisplayString(a.value.length)+"/"+e.toDisplayString(p.value.length),1)]),e.createElementVNode("div",{class:"options-list compact",style:e.normalizeStyle({maxHeight:f.value+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,B=>(e.openBlock(),e.createElementBlock("label",{key:String(B.value),class:e.normalizeClass(["option-item compact",{disabled:B.disabled,unavailable:!B.available&&y.cascadeEnabled}])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R[1]||(R[1]=M=>a.value=M),type:"checkbox",value:B.value,disabled:B.disabled,class:"option-checkbox",onChange:v},null,40,ya),[[e.vModelCheckbox,a.value]]),e.createElementVNode("span",Ca,e.toDisplayString(B.label),1),h.value&&B.count!==void 0?(e.openBlock(),e.createElementBlock("span",ba,e.toDisplayString(B.count),1)):e.createCommentVNode("",!0)],2))),128)),p.value.length===0?(e.openBlock(),e.createElementBlock("div",Sa," 🔍 "+e.toDisplayString(r.value?"无匹配项":"无可用选项"),1)):e.createCommentVNode("",!0)],4),y.cascadeInfo&&y.cascadeInfo.hasActiveFilters?(e.openBlock(),e.createElementBlock("div",wa," 可用: "+e.toDisplayString(y.cascadeInfo.available)+"/"+e.toDisplayString(y.cascadeInfo.total)+" | 基于: "+e.toDisplayString(y.cascadeInfo.appliedFilters.join(", ")),1)):e.createCommentVNode("",!0)]),_:1},8,["column","value"]))}}),ka=ee(xa,[["__scopeId","data-v-df860ed2"]]),Ea={class:"column-filter-factory"},Ta=["title","aria-expanded"],Ra=e.defineComponent({__name:"ColumnFilterFactory",props:{column:{},data:{default:()=>[]},value:{},filterType:{},cascadeEnabled:{type:Boolean,default:!0},cascadeInfo:{},availableOptions:{default:()=>[]},statistics:{default:()=>({trueCount:0,falseCount:0,truePercentage:0,falsePercentage:0})},dataRange:{default:()=>({min:0,max:0,avg:0})},totalRecordsCount:{default:0},getColumnFilterValues:{}},emits:["apply","close","preview"],setup(o,{emit:n}){const t=o,l=n,a=e.ref(),r=e.ref(),i=e.ref(!1),m=()=>{if(!t.data||t.data.length===0)return{min:0,max:0,avg:0};let k=t.data;const C=t.column.filter&&typeof t.column.filter=="object"&&"dependsOn"in t.column.filter?t.column.filter.dependsOn:void 0;if(C&&t.getColumnFilterValues){const T=Array.isArray(C)?C:[C];k=k.filter(V=>T.every(_=>{const z=t.getColumnFilterValues?.(_);if(!z||z.length===0)return!0;const L=V[_];return z.includes(L)}))}return mo(k,t.column.key)},h=e.computed(()=>{if(t.filterType&&t.filterType!=="auto")return t.filterType;if(t.column.filter&&typeof t.column.filter=="object"&&"type"in t.column.filter){const k=t.column.filter.type;if(k&&k!=="auto")return k}return Qt(t.column,t.data||[])}),f=()=>{const k=t.column.filter;if(k&&typeof k=="object"&&"config"in k)return k.config},x=e.computed(()=>{const k=f();return h.value==="text"?k:void 0}),S=e.computed(()=>{const k=f();return h.value==="number"?k:void 0}),p=e.computed(()=>{const k=f();return h.value==="date"?k:void 0}),g=e.computed(()=>{const k=f();return h.value==="boolean"?k:void 0}),u=e.computed(()=>{const k=f();return h.value==="select"?k:void 0}),c=e.computed(()=>{if(t.value===null||t.value===void 0)return!1;if(Array.isArray(t.value))return t.value.length>0;if(typeof t.value=="object"&&t.value!==null){const k=t.value;return!!(k.operator&&k.value!==void 0&&k.value!==null&&k.value!==""||k.mode==="compare"&&k.compareValue!==void 0&&k.compareValue!==null||k.mode==="range"&&(k.minValue!==void 0||k.maxValue!==void 0)||typeof k.value=="boolean"||k.startDate||k.endDate)}return!0}),s=e.computed(()=>c.value?`${t.column.title} - 已应用筛选条件`:`筛选 ${t.column.title}`),v=e.computed(()=>({"filter-trigger--active":c.value,"filter-trigger--open":i.value})),w=e.ref({}),d=()=>{i.value?R():b()},b=async()=>{i.value=!0,await e.nextTick(),y()},y=()=>{if(!a.value||!r.value)return;const k=a.value.getBoundingClientRect(),C=window.innerWidth,F=window.innerHeight;r.value.style.visibility="hidden",r.value.style.position="fixed",r.value.style.top="0px",r.value.style.left="0px";const T=r.value.getBoundingClientRect(),V=T.width,_=T.height;r.value.style.visibility="visible";const z=8,L=4;let U,Y="down";const j=F-k.bottom-L-z,G=k.top-L-z;_<=j?(U=k.bottom+L,Y="down"):_<=G?(U=k.top-L-_,Y="up"):j>=G?(U=k.bottom+L,Y="down"):(U=z,Y="up");let X;X=k.right-V,X<z&&(X=k.left,X+V>C-z&&(X=C-z-V)),X+V>C-z&&(X=C-z-V,X=Math.max(z,X)),U=Math.max(z,Math.min(U,F-z-Math.min(_,F-z*2))),X=Math.max(z,Math.min(X,C-z-Math.min(V,C-z*2))),w.value={position:"fixed",top:`${Math.round(U)}px`,left:`${Math.round(X)}px`,zIndex:"9999",minWidth:"240px",...Y==="down"&&_>j?{maxHeight:`${Math.max(200,j-z)}px`,overflowY:"auto"}:{},...Y==="up"&&_>G?{maxHeight:`${Math.max(200,G-z)}px`,overflowY:"auto"}:{}}},R=()=>{i.value=!1},B=k=>{l("apply",k),R()},M=()=>{l("close"),R()},I=k=>{if(!i.value)return;const C=k.target;a.value&&a.value.contains(C)||r.value&&r.value.contains(C)||R()},E=()=>{i.value&&requestAnimationFrame(()=>{y()})},P=()=>{if(i.value&&a.value){const k=a.value.getBoundingClientRect();k.top>=0&&k.left>=0&&k.bottom<=window.innerHeight&&k.right<=window.innerWidth?requestAnimationFrame(()=>{y()}):R()}};return e.onMounted(()=>{document.addEventListener("click",I),window.addEventListener("resize",E),window.addEventListener("scroll",P,{passive:!0})}),e.onBeforeUnmount(()=>{document.removeEventListener("click",I),window.removeEventListener("resize",E),window.removeEventListener("scroll",P)}),(k,C)=>(e.openBlock(),e.createElementBlock("div",Ea,[e.createElementVNode("button",{ref_key:"triggerRef",ref:a,type:"button",class:e.normalizeClass(["filter-trigger",v.value]),title:s.value,"aria-expanded":i.value,"aria-haspopup":"listbox",onClick:d},[e.createVNode(e.unref(me),{icon:c.value?"filter-filled":"filter",size:14,class:"filter-icon"},null,8,["icon"])],10,Ta),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:r,class:"filter-panel-container",style:e.normalizeStyle(w.value),onClick:C[0]||(C[0]=e.withModifiers(()=>{},["stop"]))},[h.value==="text"?(e.openBlock(),e.createBlock(Vo,{key:0,column:k.column,value:k.value,config:x.value,"cascade-enabled":k.cascadeEnabled,"total-records-count":k.totalRecordsCount,onApply:B,onClose:M},null,8,["column","value","config","cascade-enabled","total-records-count"])):h.value==="number"?(e.openBlock(),e.createBlock(Yo,{key:1,column:k.column,value:k.value,config:S.value,"cascade-enabled":k.cascadeEnabled,"calculate-data-range":m,"total-records-count":k.totalRecordsCount,onApply:B,onClose:M},null,8,["column","value","config","cascade-enabled","total-records-count"])):h.value==="date"?(e.openBlock(),e.createBlock(ra,{key:2,column:k.column,value:k.value,config:p.value,"cascade-enabled":k.cascadeEnabled,"data-range":k.dataRange,"total-records-count":k.totalRecordsCount,onApply:B,onClose:M},null,8,["column","value","config","cascade-enabled","data-range","total-records-count"])):h.value==="boolean"?(e.openBlock(),e.createBlock(fa,{key:3,column:k.column,value:k.value,config:g.value,"cascade-enabled":k.cascadeEnabled,statistics:k.statistics,"total-records-count":k.totalRecordsCount,onApply:B,onClose:M},null,8,["column","value","config","cascade-enabled","statistics","total-records-count"])):(e.openBlock(),e.createBlock(ka,{key:4,column:k.column,value:k.value,"available-options":k.availableOptions,config:u.value,"cascade-enabled":k.cascadeEnabled,"total-records-count":k.totalRecordsCount,onApply:B,onClose:M},null,8,["column","value","available-options","config","cascade-enabled","total-records-count"]))],4)):e.createCommentVNode("",!0)])),i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"filter-backdrop",onClick:R})):e.createCommentVNode("",!0)]))}}),Da=ee(Ra,[["__scopeId","data-v-f3df4783"]]),Fa={enabled:!0,constrainToGroup:!0,showDropIndicator:!0,showDragPreview:!0,animationDuration:200,dragThreshold:5,allowSpecialColumnDrag:!1,disabledColumnTypes:["seq","selection"]};function Xt(o){const{columns:n,onColumnReorder:t,onDragStart:l,onDragEnd:a,onDragCancel:r,getCurrentOrder:i,config:m={}}=o,h={...Fa,...m},f=e.reactive({isDragging:!1,draggedColumn:null,dropTarget:null,dragStartIndex:-1,dropPosition:null,dragPreview:null,validDropZones:new Set,dragStartPosition:{x:0,y:0}}),x=e.computed(()=>f.isDragging);let S=null,p=!1;const g=T=>T.fixed==="left"?"left":T.fixed==="right"?"right":"normal",u=(T,V)=>{if(!T||!V)return{isValid:!1,reason:"Missing column data",canDrop:!1};if(T.key===V.key)return{isValid:!1,reason:"Cannot drop on self",canDrop:!1};if(!h.enabled||T.draggable===!1)return{isValid:!1,reason:"Dragging disabled",canDrop:!1};if(!h.allowSpecialColumnDrag&&T.type&&h.disabledColumnTypes.includes(T.type))return{isValid:!1,reason:"Cannot drag special columns",canDrop:!1};if(h.constrainToGroup){const _=g(T),z=g(V);if(_!==z)return{isValid:!1,reason:"Cannot move between groups",canDrop:!1}}return!h.allowSpecialColumnDrag&&V.type&&h.disabledColumnTypes.includes(V.type)?{isValid:!1,reason:"Cannot drop on special columns",canDrop:!1}:{isValid:!0,canDrop:!0}},c=(T,V,_,z)=>{const L=z||i?.()||n.map(X=>X.key),U=L.indexOf(T),Y=L.indexOf(V);if(U===-1||Y===-1)throw new Error("Invalid column keys for reordering");const j=[...L];j.splice(U,1);let G=Y;return U<Y&&(G=Y-1),_==="after"&&(G+=1),j.splice(G,0,T),j},s=(T,V)=>{const _=document.createElement("div");_.className="column-drag-preview";const z=V.getBoundingClientRect();_.textContent=V.textContent,_.style.cssText=` position: fixed; top: ${z.top}px; left: ${z.left}px; width: ${z.width}px; height: ${z.height}px; background: var(--table-header-bg); border: 2px solid var(--table-primary); border-radius: 4px; box-shadow: 0 8px 25px rgba(0,0,0,0.15); z-index: 9999; pointer-events: none; opacity: 0.9; transform: rotate(3deg); transition: none; `;const L=_.querySelector(".column-resizer");return L&&L.remove(),document.body.appendChild(_),_},v=T=>{f.dragPreview&&requestAnimationFrame(()=>{if(!f.dragPreview)return;const V=10,_=-10;f.dragPreview.style.left=`${T.clientX+V}px`,f.dragPreview.style.top=`${T.clientY+_}px`})},w=(T,V)=>{document.querySelectorAll(".drop-indicator").forEach(U=>U.remove());const _=document.createElement("div");_.className="drop-indicator";const z=T.getBoundingClientRect(),L=V==="before"?z.left-2:z.right-1;return _.style.cssText=` position: fixed; top: ${z.top}px; left: ${L}px; width: 3px; height: ${z.height}px; background: var(--table-primary); z-index: 2000; pointer-events: none; border-radius: 1px; box-shadow: 0 0 6px rgba(var(--table-primary-rgb), 0.6); `,document.body.appendChild(_),_},d=(T,V)=>{const _=V.getBoundingClientRect(),z=T.clientX,L=_.left+_.width/2;return z<L?"before":"after"},b=(T,V)=>{if(!h.enabled||V.draggable===!1||!h.allowSpecialColumnDrag&&V.type&&h.disabledColumnTypes.includes(V.type)||T.target.closest(".column-resizer"))return;T.preventDefault(),f.dragStartPosition={x:T.clientX,y:T.clientY},p=!1;const z=Y=>{const j=Math.abs(Y.clientX-f.dragStartPosition.x),G=Math.abs(Y.clientY-f.dragStartPosition.y);(j>h.dragThreshold||G>h.dragThreshold)&&(p=!0,y(V,Y),U())},L=()=>{p||U()},U=()=>{document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",L),S&&(clearTimeout(S),S=null)};document.addEventListener("mousemove",z,{passive:!1}),document.addEventListener("mouseup",L,{once:!0}),S=setTimeout(U,5e3)},y=(T,V)=>{if(f.isDragging)return;const _=V.target.closest(".header-cell");_&&(f.isDragging=!0,f.draggedColumn=T,f.dragStartIndex=n.findIndex(z=>z.key===T.key),f.validDropZones.clear(),n.forEach(z=>{u(T,z).canDrop&&f.validDropZones.add(z.key)}),h.showDragPreview&&(f.dragPreview=s(T,_),v(V)),_.classList.add("header-cell-dragging"),document.body.classList.add("column-dragging"),document.addEventListener("mousemove",R,{passive:!1}),document.addEventListener("mouseup",I,{once:!0}),document.addEventListener("keydown",E),l?.(T))},R=T=>{if(!f.isDragging||!f.draggedColumn)return;v(T);const _=T.target.closest(".header-cell");if(_){const z=_.getAttribute("data-column-key"),L=n.find(U=>U.key===z);L&&B(T,L)}else P()},B=(T,V)=>{if(!f.isDragging||!f.draggedColumn)return;if(u(f.draggedColumn,V).canDrop){const z=T.target.closest(".header-cell");if(!z)return;const L=d(T,z);f.dropTarget=V,f.dropPosition=L,h.showDropIndicator&&w(z,L),z.classList.add("drop-zone-valid")}else{const z=T.target.closest(".header-cell");if(z){z.classList.add("drop-zone-invalid");let L=0;const U=()=>{L++,L>=9?z.classList.remove("drop-zone-invalid"):requestAnimationFrame(U)};requestAnimationFrame(U)}P()}},M=(T,V)=>{if(!f.isDragging||!f.draggedColumn)return;if(T.preventDefault(),T.stopPropagation(),u(f.draggedColumn,V).canDrop&&f.dropPosition){const z=c(f.draggedColumn.key,V.key,f.dropPosition),L={type:"reorder",sourceColumn:f.draggedColumn,targetColumn:V,sourceIndex:f.dragStartIndex,targetIndex:z.indexOf(f.draggedColumn.key),dropPosition:f.dropPosition,newOrder:z};t?.(z,L),C(!0)}else k("invalid")},I=T=>{if(!f.isDragging)return;T.target.closest(".header-cell")&&f.dropTarget?M(T,f.dropTarget):k("outside")},E=T=>{f.isDragging&&T.key==="Escape"&&(T.preventDefault(),k("escape"))},P=()=>{document.querySelectorAll(".drop-indicator").forEach(T=>T.remove()),document.querySelectorAll(".drop-zone-valid, .drop-zone-invalid").forEach(T=>{T.classList.remove("drop-zone-valid","drop-zone-invalid")}),f.dropTarget=null,f.dropPosition=null},k=T=>{f.isDragging&&C(!1,T)},C=(T,V)=>{const _=f.draggedColumn;P(),f.dragPreview&&(f.dragPreview.remove(),f.dragPreview=null),document.querySelectorAll(".header-cell-dragging").forEach(z=>{z.classList.remove("header-cell-dragging")}),document.body.classList.remove("column-dragging"),document.removeEventListener("mousemove",R),document.removeEventListener("mouseup"