@mikestools/usetable 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ (function(M,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],u):(M=typeof globalThis<"u"?globalThis:M||self,u(M.usetable={},M.Vue))})(this,(function(M,u){"use strict";function ye(l){return typeof l!="object"||l===null||!("row"in l)||!("column"in l)||!("message"in l)||!("value"in l)?!1:typeof l.row=="number"&&typeof l.column=="number"&&typeof l.message=="string"}function Ft(l){return Array.isArray(l)&&l.every(ye)}function Lt(l){return typeof l!="object"||l===null||!("valid"in l)||!("errors"in l)?!1:typeof l.valid=="boolean"&&Array.isArray(l.errors)&&l.errors.every(ye)}function re(l){return l===null||typeof l!="object"||"nodeType"in l?!1:"value"in l}const Ht=new Set(["opacity","z-index","font-weight","line-height","flex","flex-grow","flex-shrink","flex-basis","order","zoom","counter-increment","counter-reset","orphans","widows","fill-opacity","flood-opacity","stop-opacity","stroke-opacity","stroke-miterlimit","column-count","tab-size"]);function Vt(l){return!Ht.has(l)}function le(l,i){if(!i)return;if(i.class!==void 0&&(typeof i.class=="string"?l.className=i.class:Array.isArray(i.class)?l.className=i.class.join(" "):l.className=Object.entries(i.class).filter(([,p])=>p).map(([p])=>p).join(" ")),i.style!==void 0){if(typeof i.style=="string")l.setAttribute("style",i.style);else if(typeof i.style=="object")for(const[p,w]of Object.entries(i.style)){if(w==null)continue;const y=p.replace(/([A-Z])/g,"-$1").toLowerCase(),ae=typeof w=="number"&&Vt(y)?`${w}px`:String(w);l.style.setProperty(y,ae)}}if(i.dataset)for(const[p,w]of Object.entries(i.dataset))w!=null&&(l.dataset[p]=String(w));i.id!==void 0&&(l.id=i.id),i.title!==void 0&&(l.title=i.title);const c=new Set(["class","style","dataset","id","title"]);for(const[p,w]of Object.entries(i))c.has(p)||w===void 0||w===null||(p.startsWith("on")&&typeof w=="function"?l.addEventListener(p.slice(2).toLowerCase(),w):p.startsWith("data-")||p.startsWith("aria-")||p==="role"?l.setAttribute(p,String(w)):p in l?typeof w=="boolean"?w?l.setAttribute(p,""):l.removeAttribute(p):l.setAttribute(p,String(w)):typeof w=="boolean"?w&&l.setAttribute(p,""):l.setAttribute(p,String(w)))}function we(l,i){const c=document.createElement("th");return c.textContent=l,i?.scope||(c.scope="col"),le(c,i),c}function R(l,i){let c=i,p,w,y;i instanceof Node?c=i:re(i)&&(c=i.value,p=i.attributes,w=i.columnSpan,y=i.rowSpan),c==null?l.textContent="":c instanceof Node?(l.textContent="",l.appendChild(c)):l.textContent=String(c),w!==void 0&&w>1&&(l.colSpan=w),y!==void 0&&y>0&&(l.rowSpan=y),le(l,p)}function J(l){return l.children.length===1&&l.textContent===l.children[0]?.textContent?l.children[0]:l.textContent||""}function kt(l){const i=u.ref(l);return{element:i,cellIndex:u.computed(()=>i.value.cellIndex),columnSpan:u.computed({get:()=>i.value.colSpan,set:c=>{i.value.colSpan=c}}),rowSpan:u.computed({get:()=>i.value.rowSpan,set:c=>{i.value.rowSpan=c}}),headers:u.computed({get:()=>i.value.headers,set:c=>{i.value.headers=c}}),abbr:u.computed({get:()=>i.value.abbr,set:c=>{i.value.abbr=c}}),scope:u.computed({get:()=>i.value.scope,set:c=>{i.value.scope=c}})}}function $e(l){const i=u.ref(l),c=u.customRef(()=>({get:()=>Array.from(i.value.cells),set:()=>{}})),p=u.customRef(()=>({get:()=>i.value.cells.length,set:()=>{}}));return{element:i,cells:c,cellCount:p,rowIndex:u.computed(()=>i.value.rowIndex),sectionRowIndex:u.computed(()=>i.value.sectionRowIndex),insertCell:w=>i.value.insertCell(w),deleteCell:w=>i.value.deleteCell(w),getCell:w=>{const y=i.value.cells[w];return y?kt(y):void 0}}}function Ce(l){const i=u.ref(l),c=u.customRef(()=>({get:()=>Array.from(i.value.rows),set:()=>{}})),p=u.customRef(()=>({get:()=>i.value.rows.length,set:()=>{}}));return{element:i,rows:c,rowCount:p,insertRow:w=>i.value.insertRow(w),deleteRow:w=>i.value.deleteRow(w),getRow:w=>{const y=i.value.rows[w];return y?$e(y):void 0}}}function je(l){return l.includes(",")||l.includes('"')||l.includes(`
2
+ `)?`"${l.replace(/"/g,'""')}"`:l}function We(l){const i=[];let c="",p=!1;for(let w=0;w<l.length;w++){const y=l[w];y==='"'?p&&w+1<l.length&&l[w+1]==='"'?(c+='"',w++):p=!p:y===","&&!p?(i.push(c),c=""):c+=y}return i.push(c),i}function Nt(l){const i=u.shallowRef([]),c=u.shallowRef([]),p=u.ref(null),w=u.ref(null),y=u.ref(null),ae=u.ref(0),S=()=>{ae.value++},F=()=>{l.value&&(i.value=Array.from(l.value.rows),c.value=Array.from(l.value.tBodies),p.value=l.value.caption,w.value=l.value.tHead,y.value=l.value.tFoot)},T=()=>{F(),S()};F(),u.watch(l,T,{immediate:!0,deep:!1});const Re=u.computed(()=>i.value),zt=u.computed(()=>Re.value.length),Se=u.computed(()=>c.value),Pt=u.computed(()=>Se.value.length),Bt=u.computed({get:()=>p.value,set:e=>{l.value.caption=e,p.value=e}}),Kt=u.computed({get:()=>w.value,set:e=>{l.value.tHead=e,w.value=e}}),Ot=u.computed({get:()=>y.value,set:e=>{l.value.tFoot=e,y.value=e}}),g=u.computed({get:()=>{ae.value;const e=l.value.tHead;return!e||e.rows.length===0?[]:Array.from(e.rows[0].cells).map(t=>t.textContent||"")},set:e=>{let t=l.value.tHead;for(t||(t=l.value.createTHead());t.rows.length>0;)t.deleteRow(0);const o=t.insertRow();e.forEach(n=>{const s=document.createElement("th");s.textContent=n,s.scope="col",o.appendChild(s)}),T()}}),f=u.computed({get:()=>{ae.value;const e=c.value[0];return e?Array.from(e.rows).map(t=>Array.from(t.cells).map(J)):[]},set:e=>{let t=c.value[0];for(t||(t=l.value.createTBody());t.rows.length>0;)t.deleteRow(0);e.forEach(o=>{const n=t.insertRow();o.forEach(s=>R(n.insertCell(),s))}),T()}}),$t=u.computed(()=>g.value.length),Ue=()=>{const e=l.value.createCaption();return F(),e},Je=()=>{l.value.deleteCaption(),F()},jt=()=>{const e=l.value.createTHead();return F(),e},Qe=()=>{l.value.deleteTHead(),F()},_e=()=>{const e=l.value.createTFoot();return F(),e},Ye=()=>{l.value.deleteTFoot(),F()},Wt=()=>{const e=l.value.createTBody();return F(),e},Ut=e=>{const t=l.value.insertRow(e);return F(),t},Jt=e=>{l.value.deleteRow(e),F()},Qt=()=>{const e=l.value.tHead;return e?Ce(e):void 0},_t=()=>{const e=l.value.tFoot;return e?Ce(e):void 0},Yt=e=>{const t=Se.value[e];return t?Ce(t):void 0},Zt=e=>{const t=Re.value[e];return t?$e(t):void 0},he=(e,t)=>{let o=c.value[0];o||(o=l.value.createTBody(),T());const n=t===void 0||t===-1?o.rows.length:t,s=o.insertRow(n);return e.forEach(r=>R(s.insertCell(),r)),T(),s},Ze=e=>{const t=c.value[0];t&&(e===-1&&t.rows.length>0?t.deleteRow(-1):e>=0&&e<t.rows.length&&t.deleteRow(e),T())},Ge=(e="",t="",o)=>{const n=g.value.length,s=o===void 0||o===-1?n:o;let r=l.value.tHead;r||(r=l.value.createTHead(),r.insertRow()),r.rows.length===0&&r.insertRow();const a=r.rows[0],d=we(e);s>=a.cells.length?a.appendChild(d):a.insertBefore(d,a.cells[s]);const v=c.value[0];v&&Array.from(v.rows).forEach(m=>{const C=m.insertCell(s>=m.cells.length?-1:s);R(C,t)});const h=l.value.tFoot;if(h&&h.rows.length>0){const m=h.rows[0];m.insertCell(s>=m.cells.length?-1:s).textContent=""}T()},Xe=e=>{if(e<0||e>=g.value.length)return;const t=l.value.tHead;t&&t.rows.length>0&&t.rows[0].cells[e]&&t.rows[0].deleteCell(e);const o=c.value[0];o&&Array.from(o.rows).forEach(s=>{s.cells[e]&&s.deleteCell(e)});const n=l.value.tFoot;n&&n.rows.length>0&&n.rows[0].cells[e]&&n.rows[0].deleteCell(e),T()},be=(e,t,o)=>{const n=c.value[0];if(!n)return;const s=n.rows[e];if(!s)return;const r=s.cells[t];r&&(R(r,o),S())},ce=(e,t)=>f.value[e]?.[t],Gt=e=>{const t=l.value.caption||Ue();t.textContent=e},$=e=>{g.value=[...e]},Xt=e=>{let t=l.value.tFoot;for(t||(t=_e());t.rows.length>0;)t.deleteRow(0);const o=t.insertRow();e.forEach(n=>R(o.insertCell(),n))},k=e=>{f.value=e.map(t=>[...t])},qt=()=>{f.value=[]},It=()=>{for(Je(),Qe(),Ye();c.value.length>0;){const e=c.value[0];e&&l.value.removeChild(e),T()}},xt=()=>{T()},eo=(e,t,o)=>{let n=c.value[0];n||(n=l.value.createTBody(),T());const s=o===void 0||o===-1?n.rows.length:o,r=n.insertRow(s);return le(r,t),e.forEach(a=>R(r.insertCell(),a)),T(),r},to=(e,t)=>{const o=g.value.length,n=t===void 0||t===-1?o:t,s=typeof e.header=="string"?e.header:String(e.header.value),r=typeof e.header=="string"?void 0:e.header.attributes,a=e.defaultValue??"";let d=l.value.tHead;d||(d=l.value.createTHead(),d.insertRow()),d.rows.length===0&&d.insertRow();const v=d.rows[0],h=we(s,r);n>=v.cells.length?v.appendChild(h):v.insertBefore(h,v.cells[n]);const m=c.value[0];m&&Array.from(m.rows).forEach(C=>{const se=C.insertCell(n>=C.cells.length?-1:n);e.defaultAttributes&&le(se,e.defaultAttributes),R(se,a)}),T()},oo=e=>{let t=l.value.tHead;for(t||(t=l.value.createTHead());t.rows.length>0;)t.deleteRow(0);const o=t.insertRow();e.forEach(n=>{if(typeof n=="string")o.appendChild(we(n));else{const s=we(String(n.value),n.attributes);n.columnSpan!==void 0&&(s.colSpan=n.columnSpan),n.rowSpan!==void 0&&(s.rowSpan=n.rowSpan),o.appendChild(s)}}),T()},qe=(e,t,o,n)=>{const s=c.value[0];if(!s)return;const r=s.rows[e];if(!r)return;const a=r.cells[t];a&&(R(a,o),le(a,n),S())},no=e=>{const t=f.value[e];return t?[...t]:void 0},Ie=(e,t)=>{const o=c.value[0];if(!o)return;const n=o.rows[e];n&&(t.forEach((s,r)=>{n.cells[r]&&R(n.cells[r],s)}),S())},so=()=>f.value.map(e=>[...e]),ro=e=>e<0||e>=g.value.length?[]:f.value.map(t=>t[e]),lo=(e,t)=>{const o=c.value[0];!o||e<0||e>=g.value.length||(t.forEach((n,s)=>{const r=o.rows[s];r&&r.cells[e]&&R(r.cells[e],n)}),S())},ao=(e,t,o,n)=>{const s=[];for(let r=e;r<t&&r<f.value.length;r++){const a=f.value[r],d=[];for(let v=o;v<n&&v<a.length;v++)d.push(a[v]);s.push(d)}return s},co=(e,t,o)=>{const n=c.value[0];n&&(o.forEach((s,r)=>{const a=n.rows[e+r];a&&s.forEach((d,v)=>{const h=a.cells[t+v];h&&R(h,d)})}),S())},uo=()=>[...g.value],io=()=>{const e=l.value.tFoot;if(!(!e||e.rows.length===0))return Array.from(e.rows[0].cells).map(J)},fo=(e,t)=>{const o=l.value.tFoot;if(!o||o.rows.length===0)return;const n=o.rows[0].cells[e];n&&R(n,t)},vo=e=>{const t=l.value.tFoot;if(!t||t.rows.length===0)return;const o=t.rows[0].cells[e];return o?J(o):void 0},Ee=(e,t,o)=>{qe(e,t,o.value,o.attributes);const n=c.value[0];if(n&&n.rows[e]){const s=n.rows[e].cells[t];s&&(o.columnSpan!==void 0&&(s.colSpan=o.columnSpan),o.rowSpan!==void 0&&(s.rowSpan=o.rowSpan))}},Ae=(e,t)=>{const o=c.value[0];if(!o)return;const n=o.rows[e];n&&(t.forEach((s,r)=>{const a=n.cells[r];a&&R(a,s)}),S())},xe=(e,t)=>{const o=c.value[0];return o?o.rows[e]?.cells[t]:void 0},wo=e=>c.value[0]?.rows[e],ho=e=>e.filter(t=>t>=0&&t<f.value.length).map(t=>[...f.value[t]]),po=e=>e.filter(t=>t>=0&&t<g.value.length).map(t=>f.value.map(o=>o[t])),go=e=>{e.forEach((t,o)=>Ae(o,t))},mo=e=>{e.forEach((t,[o,n])=>{re(t)?Ee(o,n,t):be(o,n,t)})},yo=()=>{const e=c.value[0];return e?Array.from(e.rows):[]},Co=e=>{const t=c.value[0];return!t||e<0||e>=t.rows.length?[]:Array.from(t.rows[e].cells)},Ro=(e,t)=>{e<0||t.forEach((o,n)=>{const s=e+n;if(s<f.value.length)Ae(s,o);else{const r=o.map(a=>re(a)?a.value:a);he(r,s),o.forEach((a,d)=>{re(a)&&(a.attributes||a.columnSpan!==void 0||a.rowSpan!==void 0)&&Ee(s,d,a)})}})},So=(e,t,o)=>{const n=f.value[e]?.[t],s=o(n);return s===!0?!0:{row:e,column:t,value:n,message:typeof s=="string"?s:"Validation failed"}},bo=(e,t)=>{const o=f.value[e];if(!o)return[{row:e,column:-1,value:void 0,message:"Row not found"}];const n=t([...o]);return n===!0?!0:[{row:e,column:-1,value:o,message:typeof n=="string"?n:"Validation failed"}]},Eo=(e,t)=>{const o=[];return f.value.forEach((n,s)=>{const r=n[e],a=t(r);a!==!0&&o.push({row:s,column:e,value:r,message:typeof a=="string"?a:"Validation failed"})}),o.length===0?!0:o},Ao=e=>{const t=[];return f.value.forEach((o,n)=>{o.forEach((s,r)=>{const a=e(s,n,r);a!==null&&t.push({row:n,column:r,value:s,message:a})})}),{valid:t.length===0,errors:t}},To=e=>f.value.reduce((t,o)=>{const n=Number(o[e]);return t+(isNaN(n)?0:n)},0),Do=e=>{let t=0;const o=f.value.reduce((n,s)=>{const r=Number(s[e]);return isNaN(r)?n:(t++,n+r)},0);return t>0?o/t:0},Mo=e=>{const t=f.value.map(o=>o[e]).filter(o=>o!=null);if(t.length!==0)return t.reduce((o,n)=>o<n?o:n)},Fo=e=>{const t=f.value.map(o=>o[e]).filter(o=>o!=null);if(t.length!==0)return t.reduce((o,n)=>o>n?o:n)},Lo=(e,t)=>{const o=f.value.map(n=>n[e]);return t?o.filter(t).length:o.length},Ho=(e,t)=>f.value.reduce((o,n,s)=>t.reducer(o,n[e],s),t.initial),Vo=(e,t)=>{const o=c.value[0];o&&(Array.from(o.rows).forEach((n,s)=>{const r=n.cells[e];if(r){const a=t(J(r),s);R(r,a)}}),S())},ko=(e,t)=>{const o=c.value[0];if(!o)return;const n=o.rows[e];n&&(Array.from(n.cells).forEach((s,r)=>{const a=t(J(s),r);R(s,a)}),S())},No=e=>{const t=c.value[0];t&&(Array.from(t.rows).forEach((o,n)=>{Array.from(o.cells).forEach((s,r)=>{const a=e(J(s),n,r);R(s,a)})}),S())},zo=()=>{const e=[];return g.value.length>0&&e.push(g.value.map(t=>je(t)).join(",")),f.value.forEach(t=>{e.push(t.map(o=>je(String(o??""))).join(","))}),e.join(`
3
+ `)},Po=()=>JSON.stringify({headers:g.value,data:f.value}),Bo=e=>{k(e)},Ko=e=>{const t=e.split(`
4
+ `).filter(s=>s.trim());if(t.length===0)return;const o=We(t[0]);$(o);const n=t.slice(1).map(We);k(n)},Oo=e=>{const t=JSON.parse(e);t.headers&&$(t.headers),t.data&&k(t.data)},$o=(e,t)=>{const o=[],n=t?.caseSensitive?e:e.toLowerCase();return f.value.forEach((s,r)=>{s.forEach((a,d)=>{const v=String(a??"");(t?.caseSensitive?v:v.toLowerCase()).includes(n)&&o.push({row:r,column:d,value:a})})}),o},jo=(e,t,o)=>{const n=[],s=o?.caseSensitive?t:t.toLowerCase();return f.value.forEach((r,a)=>{const d=r[e],v=String(d??"");(o?.caseSensitive?v:v.toLowerCase()).includes(s)&&n.push({row:a,column:e,value:d})}),n},b=u.ref(new Set),te=u.ref(new Set),et=e=>{b.value=new Set([...b.value,e])},tt=e=>{const t=new Set(b.value);t.delete(e),b.value=t},Wo=e=>{b.value.has(e)?tt(e):et(e)},Uo=e=>b.value.has(e),Jo=(e,t)=>{te.value=new Set([...te.value,`${e},${t}`])},Qo=()=>{b.value=new Set,te.value=new Set},Te=new Map;function ot(e,t,o,n){let s=e.textContent;const r=()=>{const v=e.textContent??"";if("validator"in n&&n.validator&&n.validator(v,t,o)!==!0){e.textContent=s;return}const h="parser"in n&&n.parser?n.parser(v,t,o):v;S(),n.onEdit?.(h,t,o)},a=v=>{nt(v)&&(v.key==="Enter"?(v.preventDefault(),e.blur()):v.key==="Escape"&&(v.preventDefault(),e.textContent=s,e.blur()))},d=()=>{s=e.textContent};e.addEventListener("blur",r),e.addEventListener("keydown",a),e.addEventListener("focus",d),Te.set(e,{blur:r,keydown:a,focus:d})}function pe(e){const t=Te.get(e);t&&(e.removeEventListener("blur",t.blur),e.removeEventListener("keydown",t.keydown),e.removeEventListener("focus",t.focus),Te.delete(e)),e.contentEditable="false"}function nt(e){return"key"in e}function _o(e,t,o){return o.editableRows&&!o.editableRows.includes(e)?!1:!(o.editableColumns&&!o.editableColumns.includes(t))}let ge=null,De=null;const Me=(e={})=>{ge={cells:!0,...e};const t=c.value[0];t&&Array.from(t.rows).forEach((o,n)=>{Array.from(o.cells).forEach((s,r)=>{_o(n,r,ge)&&(s.contentEditable="true",ot(s,n,r,ge))})})},Yo=()=>{ge=null;const e=c.value[0];e&&Array.from(e.rows).forEach(t=>{Array.from(t.cells).forEach(pe)})},Zo=(e={})=>{De=e;const o=l.value.tHead?.rows[0];o&&Array.from(o.cells).forEach((n,s)=>{n.contentEditable="true",ot(n,-1,s,De)})},Go=()=>{De=null;const t=l.value.tHead?.rows[0];t&&Array.from(t.cells).forEach(pe)},Xo=(e,t={})=>{Me({...t,editableColumns:[e]})},qo=e=>{const t=c.value[0];t&&Array.from(t.rows).forEach(o=>{const n=o.cells[e];n&&pe(n)})},Io=(e,t={})=>{Me({...t,editableRows:[e]})},xo=e=>{const t=c.value[0];if(!t)return;const o=t.rows[e];o&&Array.from(o.cells).forEach(pe)},en=()=>{const e=c.value[0];if(!e)return()=>{};const t=o=>{const n=o.target;if(!(n instanceof HTMLTableCellElement)||n.tagName!=="TD"||!(n.parentElement instanceof HTMLTableRowElement))return;n.contentEditable="true",n.focus();const r=window.getSelection();if(r){const h=document.createRange();h.selectNodeContents(n),r.removeAllRanges(),r.addRange(h)}const a=n.textContent,d=()=>{n.contentEditable="false",n.removeEventListener("blur",d),n.removeEventListener("keydown",v),S()},v=h=>{nt(h)&&(h.key==="Enter"?(h.preventDefault(),n.blur()):h.key==="Escape"&&(n.textContent=a,n.blur()))};n.addEventListener("blur",d),n.addEventListener("keydown",v)};return e.addEventListener("dblclick",t),()=>e.removeEventListener("dblclick",t)},tn=e=>{const t=new Map;return f.value.forEach((o,n)=>{const s=e(o),r=t.get(s)||[];r.push(n),t.set(s,r)}),t},Fe=new Map,on=e=>{const t=e.index??g.value.length,o=f.value.map(r=>[...r]);Ge(e.label,void 0,t);const n=c.value[0];n&&Array.from(n.rows).forEach((r,a)=>{const d=r.cells[t];if(d){const v=o[a]??[],h=e.computeFunction(v);R(d,h)}}),S();const s=u.watch(()=>f.value,()=>{const r=c.value[0];r&&Array.from(r.rows).forEach((a,d)=>{const v=a.cells[t];if(v){const m=(f.value[d]??[]).filter((se,Br)=>Br!==t),C=e.computeFunction(m);R(v,C)}})},{deep:!0,flush:"sync"});return Fe.set(t,{config:e,stopWatcher:s}),t},nn=e=>{const t=Fe.get(e);t&&(t.stopWatcher&&t.stopWatcher(),Fe.delete(e),Xe(e))};let E=null;const ue=()=>{if(!E)return;const{currentPage:e,pageSize:t}=E,o=f.value.length,n=(e.value-1)*t.value,s=Math.min(n+t.value,o),r=[];for(let d=n;d<s;d++)r.push(d);E.visibleRows.value=r;const a=c.value[0];a&&Array.from(a.rows).forEach((d,v)=>{d.style.display=r.includes(v)?"":"none"})},sn=e=>{const t=u.ref(e.currentPage??1),o=u.ref(e.pageSize),n=u.ref([]);E={totalPages:u.computed(()=>Math.ceil(f.value.length/o.value)||1),currentPage:t,pageSize:o,visibleRows:n},ue(),u.watch(()=>f.value.length,()=>{const s=E.totalPages.value;t.value>s&&(t.value=s),ue()})},rn=()=>{E&&E.currentPage.value<E.totalPages.value&&(E.currentPage.value++,ue())},ln=()=>{E&&E.currentPage.value>1&&(E.currentPage.value--,ue())},an=e=>{E&&e>=1&&e<=E.totalPages.value&&(E.currentPage.value=e,ue())};let A=null;const st=()=>{if(!A)return;const{scrollTop:e,rowHeight:t,overscan:o,containerHeight:n}=A,s=f.value.length,r=Math.floor(e.value/t),a=Math.min(Math.ceil((e.value+n)/t),s),d=Math.max(0,r-o),v=Math.min(s,a+o),h=[];for(let C=d;C<v;C++)h.push(C);A.visibleRows.value=h,A.startIndex.value=d,A.endIndex.value=v;const m=c.value[0];m&&(Array.from(m.rows).forEach((C,se)=>{h.includes(se)?(C.style.display="",C.style.transform=`translateY(${se*t}px)`):C.style.display="none"}),m.style.height=`${s*t}px`,m.style.position="relative")},cn=e=>{const t=u.ref(0);A={scrollTop:t,rowHeight:e.rowHeight,overscan:e.overscan,containerHeight:e.containerHeight,visibleRows:u.ref([]),startIndex:u.ref(0),endIndex:u.ref(0)};const o=l.value.parentElement;if(o){const n=()=>{t.value=o.scrollTop,st()};o.addEventListener("scroll",n),A.scrollHandler=n,A.container=o,st();const s=c.value[0];s&&Array.from(s.rows).forEach(r=>{r.style.position="absolute",r.style.width="100%",r.style.left="0"})}},un=()=>{if(!A)return;A.container&&A.scrollHandler&&A.container.removeEventListener("scroll",A.scrollHandler);const e=c.value[0];e&&(e.style.height="",e.style.position="",Array.from(e.rows).forEach(t=>{t.style.display="",t.style.position="",t.style.transform="",t.style.width="",t.style.left=""})),A=null},fn=()=>({data:JSON.parse(JSON.stringify(f.value)),headers:[...g.value]}),rt=e=>{g.value=[...e.headers],f.value=e.data.map(t=>[...t])},dn=e=>{const t=fn();try{const o=e();return o instanceof Promise?o.catch(n=>{throw rt(t),n}):o}catch(o){throw rt(t),o}},vn=e=>u.watch(()=>f.value,t=>{e([...t.map(o=>[...o])])},{deep:!0}),j=u.ref(null),P=u.ref(!1),W=u.ref(!1),wn={columnIndex:j,ascending:P,descending:W},lt=(e,t)=>{const o=String(e??""),n=String(t??""),s=Number(o),r=Number(n);return!isNaN(s)&&!isNaN(r)?s-r:o.localeCompare(n)},me=(e,t,o)=>{const n=c.value[0];if(!n||n.rows.length===0)return;const s=[];for(let r=0;r<n.rows.length;r++){const a=n.rows[r];if(a){const d=a.cells[e],v=d?J(d):"";s.push({element:a,value:v})}}s.sort((r,a)=>{const d=t(r.value,a.value);return o?d:-d}),s.forEach(({element:r})=>{n.appendChild(r)}),j.value=e,P.value=o,W.value=!o,S()},hn=e=>{me(e,lt,!0)},pn=e=>{me(e,lt,!1)},gn=(e,t)=>{me(e,t,!0)},mn=(e,t)=>{me(e,t,!1)},yn=()=>{j.value=null,P.value=!1,W.value=!1},Cn=()=>j.value,Rn=()=>j.value===null||P.value===W.value?!1:P.value,Sn=()=>j.value===null||P.value===W.value?!1:W.value,bn=()=>j.value===null||P.value===W.value?!1:P.value||W.value,Q=u.ref([]),at=u.computed(()=>Q.value.length>0),En=u.computed(()=>at.value?Q.value.length:f.value.length),An={isFiltered:at,filteredRowCount:En,filteredIndices:Q},ct=e=>{const t=c.value[0];if(!t)return;const o=[],n=f.value;for(let s=0;s<n.length;s++){const r=n[s];r&&e(r,s)&&o.push(s)}Q.value=o;for(let s=0;s<t.rows.length;s++){const r=t.rows[s];r&&(r.style.display=o.includes(s)?"":"none")}},Le=(e,t)=>{ct(o=>{const n=o[e];return t(n)})},Tn=(e,t)=>{const o=String(t??"");Le(e,n=>String(n??"")===o)},Dn=(e,t)=>{const o=new Set(t.map(n=>String(n??"")));Le(e,n=>o.has(String(n??"")))},Mn=()=>{const e=c.value[0];if(e)for(let t=0;t<e.rows.length;t++){const o=e.rows[t];o&&(o.style.display="")}Q.value=[]},Fn=()=>Q.value;let B=null;const Ln=e=>{B=e},Hn=()=>{B=null},Vn=()=>B!==null,kn=e=>{if(!B)return;const t=f.value[e];if(t)return B(t,e)},Nn=()=>B?f.value.map((e,t)=>B(e,t)):[],ie=e=>{if(!B)return;const t=f.value;for(let o=0;o<t.length;o++){const n=t[o];if(n&&B(n,o)===e)return o}},zn=e=>{const t=ie(e);if(t===void 0)return;const o=f.value[t];return o?[...o]:void 0},Pn=(e,t)=>{const o=ie(e);return o===void 0?!1:(Ie(o,t),!0)},Bn=e=>{const t=ie(e);return t===void 0?!1:(Ze(t),!0)},Kn=e=>ie(e)!==void 0,N=new Map,On=(e,t)=>{N.set(e,t)},$n=e=>{N.clear(),e.forEach((t,o)=>{t&&N.set(o,t)})},jn=e=>{N.delete(e)},Wn=()=>{N.clear()},Un=e=>N.get(e),Jn=e=>N.has(e),He=(e,t)=>{if(t.parser)return t.parser(e);const o=String(e??"");if(t.nullable&&(e==null||o===""))return null;switch(t.type){case"number":return Number(o);case"boolean":return o==="true"||o==="1";case"date":return new Date(o);default:return o}},Qn=(e,t)=>{const o=ce(e,t),n=N.get(t);return n?He(o,n):o},ut=e=>{const t=f.value[e];return t?t.map((o,n)=>{const s=N.get(n);return s?He(o,s):o}):[]},_n=e=>{const t=N.get(e);return f.value.map(o=>{const n=o[e];return t?He(n,t):n})},Yn=()=>f.value.map((e,t)=>ut(t)),fe=u.ref(!1),Ve=u.ref(null),_=new Map,Zn=()=>{fe.value=!1,Ve.value=JSON.parse(JSON.stringify(f.value)),_.clear()},Gn=()=>{fe.value=!0},Xn=()=>fe.value,qn=()=>_.size>0,In=()=>Array.from(_.values()),xn=()=>{const e=new Set;for(const t of _.values())e.add(t.row);return Array.from(e).sort((t,o)=>t-o)},es=()=>{const e=new Set;for(const t of _.values())e.add(t.column);return Array.from(e).sort((t,o)=>t-o)};u.watch(()=>f.value,e=>{if(Ve.value===null)return;const t=Ve.value;for(let o=0;o<Math.max(e.length,t.length);o++){const n=e[o]??[],s=t[o]??[],r=Math.max(n.length,s.length);for(let a=0;a<r;a++){const d=n[a],v=s[a],h=`${o},${a}`;String(d??"")!==String(v??"")?(_.set(h,{row:o,column:a,oldValue:v,newValue:d}),fe.value=!0):_.delete(h)}}},{deep:!0});const K=[],Y=[];let ke=50,oe="",Z=!1;const it=()=>({data:JSON.parse(JSON.stringify(f.value)),headers:[...g.value]}),Ne=()=>JSON.stringify({data:f.value,headers:g.value});u.watch([()=>f.value,()=>g.value],()=>{if(Z)return;const e=Ne();if(e!==oe){if(oe!==""){const t=JSON.parse(oe);(t.data.length>0||t.headers.length>0)&&(K.push({data:t.data,headers:t.headers}),K.length>ke&&K.shift(),Y.length=0)}oe=e}},{deep:!0,flush:"sync"});const ts=()=>{if(K.length===0)return!1;Z=!0,Y.push(it());const e=K.pop();return e?(k(e.data),$(e.headers),oe=Ne(),Z=!1,!0):(Z=!1,!1)},os=()=>{if(Y.length===0)return!1;Z=!0,K.push(it());const e=Y.pop();return e?(k(e.data),$(e.headers),oe=Ne(),Z=!1,!0):(Z=!1,!1)},ns=()=>{K.length=0,Y.length=0},ss=()=>K.length>0,rs=()=>Y.length>0,ls=()=>K.length,as=()=>Y.length,cs=e=>{ke=e},us=()=>ke,is=()=>{const e=f.value.length;for(let t=0;t<e;t++)b.value.add(t)},fs=()=>{b.value.clear()},ds=(e,t)=>{const o=Math.min(e,t),n=Math.max(e,t);for(let s=o;s<=n;s++)s>=0&&s<f.value.length&&b.value.add(s)},vs=()=>{const e=f.value.length,t=new Set;for(let o=0;o<e;o++)b.value.has(o)||t.add(o);b.value=t},ws=()=>{const e=[],t=Array.from(b.value).sort((o,n)=>o-n);for(const o of t){const n=f.value[o];n&&e.push([...n])}return e},ft=()=>Array.from(b.value).sort((e,t)=>e-t),dt=()=>{const e=[];for(const t of te.value){const o=t.split(",");if(o.length===2){const n=parseInt(o[0]??"",10),s=parseInt(o[1]??"",10);!isNaN(n)&&!isNaN(s)&&e.push({row:n,column:s})}}return e.sort((t,o)=>t.row===o.row?t.column-o.column:t.row-o.row)},D=u.ref(null),O=(e,t)=>{if(e>=0&&e<f.value.length&&t>=0&&t<g.value.length){D.value={row:e,column:t};const o=xe(e,t);o&&o.focus()}},hs=()=>{D.value=null},ps=()=>D.value?{...D.value}:null,gs=(e,t)=>{const o=D.value;return o!==null&&o.row===e&&o.column===t},vt=()=>{const e=D.value;return!e||e.row<=0?!1:(O(e.row-1,e.column),!0)},wt=()=>{const e=D.value;return!e||e.row>=f.value.length-1?!1:(O(e.row+1,e.column),!0)},ht=()=>{const e=D.value;return!e||e.column<=0?!1:(O(e.row,e.column-1),!0)},pt=()=>{const e=D.value;return!e||e.column>=g.value.length-1?!1:(O(e.row,e.column+1),!0)},gt=()=>{f.value.length>0&&g.value.length>0&&O(0,0)},mt=()=>{const e=f.value.length,t=g.value.length;e>0&&t>0&&O(e-1,t-1)},yt=()=>{const e=D.value;e&&O(e.row,0)},Ct=()=>{const e=D.value;e&&g.value.length>0&&O(e.row,g.value.length-1)},ms=()=>{const e=t=>{if(D.value)switch(t.key){case"ArrowUp":vt()&&t.preventDefault();break;case"ArrowDown":wt()&&t.preventDefault();break;case"ArrowLeft":ht()&&t.preventDefault();break;case"ArrowRight":pt()&&t.preventDefault();break;case"Home":t.ctrlKey?gt():yt(),t.preventDefault();break;case"End":t.ctrlKey?mt():Ct(),t.preventDefault();break}};return l.value.addEventListener("keydown",e),()=>l.value.removeEventListener("keydown",e)},L=u.ref(new Set),ys=u.computed(()=>g.value.length-L.value.size),Rt=()=>{const e=l.value.tHead,t=c.value[0],o=l.value.tFoot,n=s=>{for(let r=0;r<s.cells.length;r++){const a=s.cells[r];a&&(a.style.display=L.value.has(r)?"none":"")}};if(e)for(let s=0;s<e.rows.length;s++){const r=e.rows[s];r&&n(r)}if(t)for(let s=0;s<t.rows.length;s++){const r=t.rows[s];r&&n(r)}if(o)for(let s=0;s<o.rows.length;s++){const r=o.rows[s];r&&n(r)}},St=e=>{const t=new Set(L.value);t.add(e),L.value=t,Rt()},bt=e=>{const t=new Set(L.value);t.delete(e),L.value=t,Rt()},Cs=e=>{L.value.has(e)?bt(e):St(e)},Rs=e=>!L.value.has(e),Ss=()=>{const e=[];for(let t=0;t<g.value.length;t++)L.value.has(t)||e.push(t);return e},bs=()=>Array.from(L.value).sort((e,t)=>e-t),de=(e,t)=>{const o=c.value[0];if(!o||e<0||e>=o.rows.length||t<0||t>=o.rows.length||e===t)return;const n=o.rows[e];if(n){if(t<e){const s=o.rows[t];s&&o.insertBefore(n,s)}else{const s=o.rows[t+1];s?o.insertBefore(n,s):o.appendChild(n)}S()}},Es=e=>e<=0?!1:(de(e,e-1),!0),As=e=>{const t=c.value[0];return!t||e>=t.rows.length-1?!1:(de(e,e+1),!0)},Ts=e=>{de(e,0)},Ds=e=>{const t=c.value[0];t&&de(e,t.rows.length-1)},Ms=(e,t)=>{const o=c.value[0];if(!o||e<0||e>=o.rows.length||t<0||t>=o.rows.length||e===t)return;const n=o.rows[e],s=o.rows[t];if(!n||!s)return;const r=document.createElement("tr");o.insertBefore(r,n),o.insertBefore(n,s),o.insertBefore(s,r),o.removeChild(r),S()},ve=(e,t)=>{if(e<0||e>=g.value.length||t<0||t>=g.value.length||e===t)return;const o=[...g.value],[n]=o.splice(e,1);n!==void 0&&o.splice(t,0,n);const s=f.value.map(r=>{const a=[...r],[d]=a.splice(e,1);return d!==void 0&&a.splice(t,0,d),a});$(o),k(s)},Fs=e=>e<=0?!1:(ve(e,e-1),!0),Ls=e=>e>=g.value.length-1?!1:(ve(e,e+1),!0),Hs=e=>{ve(e,0)},Vs=e=>{ve(e,g.value.length-1)},ks=(e,t)=>{if(e<0||e>=g.value.length||t<0||t>=g.value.length||e===t)return;const o=[...g.value],n=o[e];o[e]=o[t]??"",o[t]=n??"";const s=f.value.map(r=>{const a=[...r],d=a[e];return a[e]=a[t],a[t]=d,a});$(o),k(s)},ze=e=>e.map(t=>t.map(o=>String(o??"")).join(" ")).join(`
5
+ `),Ns=()=>{const e=dt();if(e.length===0)return"";const t=new Set(e.map(v=>v.row)),o=new Set(e.map(v=>v.column)),n=Math.min(...t),s=Math.max(...t),r=Math.min(...o),a=Math.max(...o),d=[];for(let v=n;v<=s;v++){const h=[];for(let m=r;m<=a;m++)e.some(C=>C.row===v&&C.column===m)?h.push(ce(v,m)):h.push("");d.push(h)}return ze(d)},zs=()=>{const t=ft().map(o=>f.value[o]??[]);return ze(t)},Ps=e=>{const t=f.value[e];return t?t.map(o=>String(o??"")).join(" "):""},Bs=e=>f.value.map(t=>String(t[e]??"")).join(`
6
+ `),Ks=(e,t)=>String(ce(e,t)??""),Os=(e,t,o,n)=>{const s=[],r=Math.min(e,o),a=Math.max(e,o),d=Math.min(t,n),v=Math.max(t,n);for(let h=r;h<=a;h++){const m=[];for(let C=d;C<=v;C++)m.push(ce(h,C));s.push(m)}return ze(s)},$s=(e,t,o)=>{const n=o.split(`
7
+ `);for(let s=0;s<n.length;s++){const r=n[s];if(r===void 0)continue;const a=r.split(" ");for(let d=0;d<a.length;d++){const v=a[d];v!==void 0&&be(e+s,t+d,v)}}},z=u.ref(new Set),H=u.ref([]),V=u.ref([]),Et=e=>{const t=new Set(z.value);t.add(e),z.value=t},At=e=>{const t=new Set(z.value);t.delete(e),z.value=t},js=e=>{z.value.has(e)?At(e):Et(e)},Ws=()=>{const e=new Set;for(let t=0;t<f.value.length;t++)e.add(t);z.value=e},Us=()=>{z.value=new Set},Js=e=>z.value.has(e),Qs=()=>Array.from(z.value).sort((e,t)=>e-t),_s=e=>{H.value.includes(e)||(H.value=[...H.value,e],V.value=V.value.filter(t=>t!==e))},Ys=e=>{V.value.includes(e)||(V.value=[...V.value,e],H.value=H.value.filter(t=>t!==e))},Zs=e=>{H.value=H.value.filter(t=>t!==e),V.value=V.value.filter(t=>t!==e)},Gs=()=>{H.value=[],V.value=[]},Xs=e=>H.value.includes(e),qs=e=>V.value.includes(e),Is=()=>[...H.value],xs=()=>[...V.value],G=new Map,X=new Map,q=new Map,er=(e,t,o,n)=>{const s=`${e},${t}`;G.has(s)||G.set(s,new Map),G.get(s)?.set(o,n)},tr=(e,t,o)=>{const n=`${e},${t}`;return G.get(n)?.get(o)},or=(e,t,o)=>{const n=`${e},${t}`;return G.get(n)?.has(o)??!1},nr=(e,t)=>{const o=`${e},${t}`;G.delete(o)},sr=(e,t,o)=>{const n=`${e},${t}`;G.get(n)?.delete(o)},rr=(e,t,o)=>{X.has(e)||X.set(e,new Map),X.get(e)?.set(t,o)},lr=(e,t)=>X.get(e)?.get(t),ar=(e,t)=>X.get(e)?.has(t)??!1,cr=e=>{X.delete(e)},ur=(e,t)=>{X.get(e)?.delete(t)},ir=(e,t,o)=>{q.has(e)||q.set(e,new Map),q.get(e)?.set(t,o)},fr=(e,t)=>q.get(e)?.get(t),dr=(e,t)=>q.get(e)?.has(t)??!1,vr=e=>{q.delete(e)},wr=(e,t)=>{q.get(e)?.delete(t)},hr=e=>()=>{},pr=e=>()=>{},gr=e=>()=>{},mr=e=>()=>{},yr=e=>{const t=u.watch(()=>b.value,o=>{e(o)},{deep:!0});return()=>{t()}},Cr=e=>{const t=u.watch(()=>te.value,o=>{e(o)},{deep:!0});return()=>{t()}},Rr=e=>{const t=u.watch([j,P],([o,n])=>{e(o,n)});return()=>{t()}},Sr=e=>{const t=u.watch(()=>Q.value,o=>{e(o)});return()=>{t()}},br=e=>{const t=u.watch(()=>D.value,o=>{e(o?{...o}:null)});return()=>{t()}},Er=e=>{const t=u.watch(()=>L.value,(o,n)=>{for(const s of o)n?.has(s)||e(s,!1);if(n)for(const s of n)o.has(s)||e(s,!0)});return()=>{t()}};let U=0,ne=null;const Tt=()=>{U===0&&(ne={data:JSON.parse(JSON.stringify(f.value)),headers:[...g.value]}),U++},Dt=()=>{U>0&&(U--,U===0&&(ne=null,S()))},Mt=()=>{U>0&&ne&&(k(ne.data),$(ne.headers),U=0,ne=null)},Ar=()=>U>0,Tr=e=>{Tt();try{e(),Dt()}catch(t){throw Mt(),t}},Pe=u.ref(!1),Be=new Set,Ke=new Set,Oe=new Set,I=e=>{Pe.value=e},Dr=(e,t,o)=>{const n=`${e},${t}`;o?Be.add(n):Be.delete(n)},Mr=(e,t)=>{t?Ke.add(e):Ke.delete(e)},Fr=(e,t)=>{t?Oe.add(e):Oe.delete(e)},Lr=()=>Pe.value,Hr=(e,t)=>Be.has(`${e},${t}`),Vr=e=>Ke.has(e),kr=e=>Oe.has(e),Nr=async e=>{I(!0);try{const t=await e();k(t)}finally{I(!1)}},zr=async e=>{I(!0);try{const t=await e();for(const o of t)he(o)}finally{I(!1)}},Pr=async e=>{I(!0);try{const t=await e();for(let o=t.length-1;o>=0;o--){const n=t[o];n&&he(n,0)}}finally{I(!1)}},x=u.ref(0),ee=u.ref(0);return{element:l,caption:Bt,tHead:Kt,tFoot:Ot,rows:Re,rowCount:zt,tBodies:Se,tBodyCount:Pt,data:f,headers:g,columnCount:$t,createCaption:Ue,deleteCaption:Je,createTHead:jt,deleteTHead:Qe,createTFoot:_e,deleteTFoot:Ye,createTBody:Wt,insertRow:Ut,deleteRow:Jt,getTHead:Qt,getTFoot:_t,getTBody:Yt,getRow:Zt,addRow:he,removeRow:Ze,addColumn:Ge,removeColumn:Xe,setCell:be,getCell:ce,setCaption:Gt,setHeaders:$,setFooter:Xt,setData:k,clearData:qt,reset:It,sync:xt,addRowWithAttributes:eo,addColumnWithAttributes:to,setHeadersWithAttributes:oo,setCellWithAttributes:qe,getRowData:no,setRowData:Ie,getAllRowData:so,getColumnData:ro,setColumnData:lo,getCellRange:ao,setCellRange:co,getHeaderData:uo,getFooterData:io,setFooterCell:fo,getFooterCell:vo,updateCell:Ee,updateRow:Ae,getCellElement:xe,getRowElement:wo,selectRows:ho,selectColumns:po,updateRows:go,updateCells:mo,getRowElements:yo,getRowCellElements:Co,setRows:Ro,validateCell:So,validateRow:bo,validateColumn:Eo,validateAll:Ao,sum:To,average:Do,min:Mo,max:Fo,count:Lo,aggregate:Ho,transformColumn:Vo,transformRow:ko,transformCells:No,exportToCSV:zo,exportToJSON:Po,importFromArray:Bo,importFromCSV:Ko,importFromJSON:Oo,search:$o,searchColumn:jo,selectedRows:b,selectedCells:te,selectRow:et,deselectRow:tt,toggleRowSelection:Wo,isRowSelected:Uo,selectCell:Jo,clearSelection:Qo,enableCellEditing:Me,disableCellEditing:Yo,enableHeaderEditing:Zo,disableHeaderEditing:Go,enableColumnEditing:Xo,disableColumnEditing:qo,enableRowEditing:Io,disableRowEditing:xo,enableEditing:en,groupBy:tn,addComputedColumn:on,removeComputedColumn:nn,get pagination(){return E},paginate:sn,nextPage:rn,previousPage:ln,goToPage:an,get virtualScroll(){return A},enableVirtualScrolling:cn,disableVirtualScrolling:un,transaction:dn,onDataChange:vn,sortState:wn,sortColumnAscending:hn,sortColumnDescending:pn,sortColumnAscendingWith:gn,sortColumnDescendingWith:mn,clearColumnSort:yn,getSortedColumnIndex:Cn,isSortedAscending:Rn,isSortedDescending:Sn,isSorted:bn,filterState:An,filterRows:ct,filterColumn:Le,filterColumnByValue:Tn,filterColumnByValues:Dn,clearFilters:Mn,getFilteredRowIndices:Fn,setRowKeyFunction:Ln,clearRowKeyFunction:Hn,hasRowKeyFunction:Vn,getRowByKey:zn,getRowIndexByKey:ie,updateRowByKey:Pn,removeRowByKey:Bn,hasRowWithKey:Kn,getRowKey:kn,getAllRowKeys:Nn,setColumnDefinition:On,setColumnDefinitions:$n,clearColumnDefinition:jn,clearColumnDefinitions:Wn,getColumnDefinition:Un,hasColumnDefinition:Jn,getParsedCell:Qn,getParsedRowData:ut,getParsedColumnData:_n,getParsedData:Yn,dirtyState:fe,markClean:Zn,markDirty:Gn,isDirty:Xn,hasChanges:qn,getChangedCells:In,getChangedRowIndices:xn,getChangedColumnIndices:es,undo:ts,redo:os,clearHistory:ns,canUndo:ss,canRedo:rs,getUndoStackSize:ls,getRedoStackSize:as,setHistoryLimit:cs,getHistoryLimit:us,selectAllRows:is,deselectAllRows:fs,selectRowRange:ds,invertRowSelection:vs,getSelectedRowData:ws,getSelectedRowIndices:ft,getSelectedCellIndices:dt,focusedCell:D,focusCell:O,clearCellFocus:hs,getFocusedCell:ps,isCellFocused:gs,moveFocusUp:vt,moveFocusDown:wt,moveFocusLeft:ht,moveFocusRight:pt,moveFocusToFirstCell:gt,moveFocusToLastCell:mt,moveFocusToRowStart:yt,moveFocusToRowEnd:Ct,enableKeyboardNavigation:ms,visibleColumnCount:ys,hideColumn:St,showColumn:bt,toggleColumnVisibility:Cs,isColumnVisible:Rs,getVisibleColumnIndices:Ss,getHiddenColumnIndices:bs,moveRow:de,moveRowUp:Es,moveRowDown:As,moveRowToTop:Ts,moveRowToBottom:Ds,swapRows:Ms,moveColumn:ve,moveColumnLeft:Fs,moveColumnRight:Ls,moveColumnToStart:Hs,moveColumnToEnd:Vs,swapColumns:ks,copySelectedCells:Ns,copySelectedRows:zs,copyRow:Ps,copyColumn:Bs,copyCell:Ks,copyCellRange:Os,pasteAtCell:$s,expandedRows:z,pinnedTopRows:H,pinnedBottomRows:V,expandRow:Et,collapseRow:At,toggleRowExpansion:js,expandAllRows:Ws,collapseAllRows:Us,isRowExpanded:Js,getExpandedRowIndices:Qs,pinRowTop:_s,pinRowBottom:Ys,unpinRow:Zs,unpinAllRows:Gs,isRowPinnedTop:Xs,isRowPinnedBottom:qs,getPinnedTopRowIndices:Is,getPinnedBottomRowIndices:xs,setCellMeta:er,getCellMeta:tr,hasCellMeta:or,clearCellMeta:nr,clearCellMetaKey:sr,setRowMeta:rr,getRowMeta:lr,hasRowMeta:ar,clearRowMeta:cr,clearRowMetaKey:ur,setColumnMeta:ir,getColumnMeta:fr,hasColumnMeta:dr,clearColumnMeta:vr,clearColumnMetaKey:wr,onRowAdd:hr,onRowRemove:pr,onRowUpdate:gr,onCellChange:mr,onRowSelectionChange:yr,onCellSelectionChange:Cr,onSortChange:Rr,onFilterChange:Sr,onCellFocusChange:br,onColumnVisibilityChange:Er,beginBatchUpdate:Tt,endBatchUpdate:Dt,cancelBatchUpdate:Mt,isBatchUpdating:Ar,batchUpdate:Tr,tableLoading:Pe,setTableLoading:I,setCellLoading:Dr,setRowLoading:Mr,setColumnLoading:Fr,isTableLoading:Lr,isCellLoading:Hr,isRowLoading:Vr,isColumnLoading:kr,loadData:Nr,appendRowsAsync:zr,prependRowsAsync:Pr,frozenLeftColumnCount:x,frozenRightColumnCount:ee,freezeColumnsLeft:e=>{x.value=Math.max(0,e)},freezeColumnsRight:e=>{ee.value=Math.max(0,e)},unfreezeColumnsLeft:()=>{x.value=0},unfreezeColumnsRight:()=>{ee.value=0},unfreezeAllColumns:()=>{x.value=0,ee.value=0},getFrozenLeftColumnCount:()=>x.value,getFrozenRightColumnCount:()=>ee.value,isColumnFrozenLeft:e=>e<x.value,isColumnFrozenRight:e=>{const t=g.value.length;return e>=t-ee.value},hasFrozenColumns:()=>x.value>0||ee.value>0}}M.isCellConfig=re,M.isValidationError=ye,M.isValidationErrorArray=Ft,M.isValidationResult=Lt,M.useTable=Nt,Object.defineProperty(M,Symbol.toStringTag,{value:"Module"})}));
package/package.json ADDED
@@ -0,0 +1,102 @@
1
+ {
2
+ "name": "@mikestools/usetable",
3
+ "version": "0.0.1",
4
+ "description": "Comprehensive Vue 3 table composable - 20+ features including sorting, filtering, undo/redo, clipboard, cell navigation, pagination, validation, and more",
5
+ "private": false,
6
+ "type": "module",
7
+ "main": "./dist/usetable.umd.cjs",
8
+ "module": "./dist/usetable.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/usetable.js",
14
+ "require": "./dist/usetable.umd.cjs"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "README.md"
20
+ ],
21
+ "keywords": [
22
+ "vue",
23
+ "vue3",
24
+ "composables",
25
+ "composition-api",
26
+ "typescript",
27
+ "table",
28
+ "data-table",
29
+ "html-table",
30
+ "sorting",
31
+ "filtering",
32
+ "pagination",
33
+ "undo-redo",
34
+ "clipboard",
35
+ "selection",
36
+ "validation",
37
+ "aggregation",
38
+ "csv-export",
39
+ "json-export",
40
+ "keyboard-navigation",
41
+ "cell-editing"
42
+ ],
43
+ "author": "",
44
+ "license": "MIT",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": ""
48
+ },
49
+ "bugs": {
50
+ "url": ""
51
+ },
52
+ "homepage": "",
53
+ "publishConfig": {
54
+ "access": "public"
55
+ },
56
+ "sideEffects": false,
57
+ "peerDependencies": {
58
+ "vue": "^3.3.0"
59
+ },
60
+ "scripts": {
61
+ "dev": "vite --config configs/vite.showcase.config.ts",
62
+ "build": "npm run clean dist && vite build && npm run show",
63
+ "build:showcase": "vite build --config configs/vite.showcase.config.ts",
64
+ "check": "npm run decache && vue-tsc",
65
+ "check:showcase": "npm run decache && vue-tsc -p configs/tsconfig.showcase.json",
66
+ "test": "npm run decache && vitest run --no-cache",
67
+ "format": "npm run decache && eslint . --fix",
68
+ "show": "npm run build:showcase && npm run copy dist/showcase/index.html showcase.html && npm run clean dist/showcase",
69
+ "clean": "node -e \"try{require('fs').rmSync(process.argv[1],{recursive:true,force:true});console.log(`Deleted: ${process.argv[1]}`)}catch(e){throw e}\"",
70
+ "copy": "node -e \"try{require('fs').cpSync(process.argv[1],process.argv[2],{force:true});console.log(`Copied: ${process.argv[1]} to ${process.argv[2]}`)}catch(e){throw e}\"",
71
+ "decache": "node -e \"const fs=require('fs');['.eslintcache','node_modules/.vite','node_modules/.vitest','node_modules/.cache'].forEach(p=>{try{fs.rmSync(p,{recursive:true,force:true});console.log(`Cleared: ${p}`)}catch(e){}})\"",
72
+ "prepublishOnly": "npm run check && npm run format && npm test && npm run show && npm run build"
73
+ },
74
+ "devDependencies": {
75
+ "@eslint/js": "^9.39.1",
76
+ "@mikestools/usebootstrap": "^0.0.4",
77
+ "@mikestools/usetools": "^0.0.9",
78
+ "@popperjs/core": "^2.11.8",
79
+ "@types/bootstrap": "^5.2.10",
80
+ "@types/node": "^24.10.1",
81
+ "@vitejs/plugin-vue": "^6.0.2",
82
+ "@vitest/eslint-plugin": "^1.5.1",
83
+ "@vue/test-utils": "^2.4.6",
84
+ "bootstrap": "^5.3.8",
85
+ "bootstrap-icons": "^1.13.1",
86
+ "eslint": "^9.39.1",
87
+ "eslint-plugin-vue": "^10.6.2",
88
+ "globals": "^16.5.0",
89
+ "happy-dom": "^20.0.11",
90
+ "jiti": "^2.6.1",
91
+ "sass": "^1.94.2",
92
+ "typescript": "^5.9.3",
93
+ "typescript-eslint": "^8.48.1",
94
+ "vite": "^7.2.6",
95
+ "vite-plugin-dts": "^4.5.4",
96
+ "vite-plugin-singlefile": "^2.3.0",
97
+ "vite-svg-loader": "^5.1.0",
98
+ "vitest": "^4.0.15",
99
+ "vue": "^3.5.25",
100
+ "vue-tsc": "^3.1.5"
101
+ }
102
+ }