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