@stonecrop/atable 0.2.39 → 0.2.41

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.
@@ -1,2 +1,2 @@
1
- (function(h,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(h=typeof globalThis<"u"?globalThis:h||self,n(h["@stonecrop/atable"]={},h.Vue))})(this,function(h,n){"use strict";var _e=Object.defineProperty;var et=(h,n,C)=>n in h?_e(h,n,{enumerable:!0,configurable:!0,writable:!0,value:C}):h[n]=C;var I=(h,n,C)=>et(h,typeof n!="symbol"?n+"":n,C);function C(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function P(e){return typeof e=="function"?e():n.unref(e)}const me=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const pe=e=>e!=null,we=Object.prototype.toString,he=e=>we.call(e)==="[object Object]",ge=()=>{},S=me?window:void 0;function A(e){var t;const o=P(e);return(t=o==null?void 0:o.$el)!=null?t:o}function D(...e){let t,o,l,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([o,l,r]=e,t=S):[t,o,l,r]=e,!t)return ge;Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const i=[],a=()=>{i.forEach(d=>d()),i.length=0},s=(d,p,f,m)=>(d.addEventListener(p,f,m),()=>d.removeEventListener(p,f,m)),u=n.watch(()=>[A(t),P(r)],([d,p])=>{if(a(),!d)return;const f=he(p)?{...p}:p;i.push(...o.flatMap(m=>l.map(g=>s(d,m,g,f))))},{immediate:!0,flush:"post"}),c=()=>{u(),a()};return C(c),c}function ye(){const e=n.ref(!1),t=n.getCurrentInstance();return t&&n.onMounted(()=>{e.value=!0},t),e}function be(e){const t=ye();return n.computed(()=>(t.value,!!e()))}function Ee(e,t,o={}){const{window:l=S,...r}=o;let i;const a=be(()=>l&&"MutationObserver"in l),s=()=>{i&&(i.disconnect(),i=void 0)},u=n.computed(()=>{const f=P(e),m=(Array.isArray(f)?f:[f]).map(A).filter(pe);return new Set(m)}),c=n.watch(()=>u.value,f=>{s(),a.value&&f.size&&(i=new MutationObserver(t),f.forEach(m=>i.observe(m,r)))},{immediate:!0,flush:"post"}),d=()=>i==null?void 0:i.takeRecords(),p=()=>{c(),s()};return C(p),{isSupported:a,stop:p,takeRecords:d}}function ke(e={}){var t;const{window:o=S,deep:l=!0,triggerOnRemoval:r=!1}=e,i=(t=e.document)!=null?t:o==null?void 0:o.document,a=()=>{var c;let d=i==null?void 0:i.activeElement;if(l)for(;d!=null&&d.shadowRoot;)d=(c=d==null?void 0:d.shadowRoot)==null?void 0:c.activeElement;return d},s=n.ref(),u=()=>{s.value=a()};return o&&(D(o,"blur",c=>{c.relatedTarget===null&&u()},!0),D(o,"focus",u,!0)),r&&Ee(i,c=>{c.filter(d=>d.removedNodes.length).map(d=>Array.from(d.removedNodes)).flat().forEach(d=>{d===s.value&&u()})},{childList:!0,subtree:!0}),u(),s}const xe="focusin",Ie="focusout";function Ce(e,t={}){const{window:o=S}=t,l=n.computed(()=>A(e)),r=n.ref(!1),i=n.computed(()=>r.value),a=ke(t);return!o||!a.value?{focused:i}:(D(l,xe,()=>r.value=!0),D(l,Ie,()=>r.value=!1),{focused:i})}function Se(e,{window:t=S,scrollTarget:o}={}){const l=n.ref(!1),r=()=>{if(!t)return;const i=t.document,a=A(e);if(!a)l.value=!1;else{const s=a.getBoundingClientRect();l.value=s.top<=(t.innerHeight||i.documentElement.clientHeight)&&s.left<=(t.innerWidth||i.documentElement.clientWidth)&&s.bottom>=0&&s.right>=0}};return n.watch(()=>A(e),()=>r(),{immediate:!0,flush:"post"}),t&&D(o||t,"scroll",r,{capture:!1,passive:!0}),l}const k=e=>{let t=Se(e).value;return t=t&&e.offsetHeight>0,t},x=e=>e.tabIndex>=0,Q=e=>{const t=e.target;return v(t)},v=e=>{var t;let o;if(e instanceof HTMLTableCellElement){const l=(t=e.parentElement)==null?void 0:t.previousElementSibling;if(l){const r=Array.from(l.children)[e.cellIndex];r&&(o=r)}}else if(e instanceof HTMLTableRowElement){const l=e.previousElementSibling;l&&(o=l)}return o&&(!x(o)||!k(o))?v(o):o},Ae=e=>{var t;const o=e.target;let l;if(o instanceof HTMLTableCellElement){const r=(t=o.parentElement)==null?void 0:t.parentElement;if(r){const i=r.firstElementChild.children[o.cellIndex];i&&(l=i)}}else if(o instanceof HTMLTableRowElement){const r=o.parentElement;if(r){const i=r.firstElementChild;i&&(l=i)}}return l&&(!x(l)||!k(l))?N(l):l},Z=e=>{const t=e.target;return N(t)},N=e=>{var t;let o;if(e instanceof HTMLTableCellElement){const l=(t=e.parentElement)==null?void 0:t.nextElementSibling;if(l){const r=Array.from(l.children)[e.cellIndex];r&&(o=r)}}else if(e instanceof HTMLTableRowElement){const l=e.nextElementSibling;l&&(o=l)}return o&&(!x(o)||!k(o))?N(o):o},De=e=>{var t;const o=e.target;let l;if(o instanceof HTMLTableCellElement){const r=(t=o.parentElement)==null?void 0:t.parentElement;if(r){const i=r.lastElementChild.children[o.cellIndex];i&&(l=i)}}else if(o instanceof HTMLTableRowElement){const r=o.parentElement;if(r){const i=r.lastElementChild;i&&(l=i)}}return l&&(!x(l)||!k(l))?v(l):l},K=e=>{const t=e.target;return j(t)},j=e=>{var t;let o;if(e.previousElementSibling)o=e.previousElementSibling;else{const l=(t=e.parentElement)==null?void 0:t.previousElementSibling;o=l==null?void 0:l.lastElementChild}return o&&(!x(o)||!k(o))?j(o):o},_=e=>{const t=e.target;return H(t)},H=e=>{var t;let o;if(e.nextElementSibling)o=e.nextElementSibling;else{const l=(t=e.parentElement)==null?void 0:t.nextElementSibling;o=l==null?void 0:l.firstElementChild}return o&&(!x(o)||!k(o))?H(o):o},ee=e=>{const t=e.target.parentElement.firstElementChild;return t&&(!x(t)||!k(t))?H(t):t},te=e=>{const t=e.target.parentElement.lastElementChild;return t&&(!x(t)||!k(t))?j(t):t},$=["alt","control","shift","meta"],Te={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"},V={"keydown.up":e=>{const t=Q(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.down":e=>{const t=Z(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.left":e=>{const t=K(e);e.preventDefault(),e.stopPropagation(),t&&t.focus()},"keydown.right":e=>{const t=_(e);e.preventDefault(),e.stopPropagation(),t&&t.focus()},"keydown.control.up":e=>{const t=Ae(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.control.down":e=>{const t=De(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.control.left":e=>{const t=ee(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.control.right":e=>{const t=te(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.end":e=>{const t=te(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.enter":e=>{if(e.target instanceof HTMLTableCellElement){e.preventDefault(),e.stopPropagation();const t=Z(e);t&&t.focus()}},"keydown.shift.enter":e=>{if(e.target instanceof HTMLTableCellElement){e.preventDefault(),e.stopPropagation();const t=Q(e);t&&t.focus()}},"keydown.home":e=>{const t=ee(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.tab":e=>{const t=_(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.shift.tab":e=>{const t=K(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())}};function W(e){const t=a=>{let s=null;return a.parent&&(typeof a.parent=="string"?s=document.querySelector(a.parent):a.parent instanceof HTMLElement?s=a.parent:s=a.parent.value),s},o=a=>{const s=t(a);let u=[];if(typeof a.selectors=="string")u=s?Array.from(s.querySelectorAll(a.selectors)):Array.from(document.querySelectorAll(a.selectors));else if(Array.isArray(a.selectors))for(const c of a.selectors)c instanceof HTMLElement?u.push(c):u.push(c.$el);else if(a.selectors instanceof HTMLElement)u.push(a.selectors);else if(Array.isArray(a.selectors.value))for(const c of a.selectors.value)c instanceof HTMLElement?u.push(c):u.push(c.$el);else u.push(a.selectors.value);return u},l=a=>{const s=t(a);let u=[];return a.selectors?u=o(a):s&&(u=Array.from(s.children).filter(c=>x(c)&&k(c))),u},r=a=>s=>{const u=Te[s.key]||s.key.toLowerCase();if($.includes(u))return;const c=a.handlers||V;for(const d of Object.keys(c)){const[p,...f]=d.split(".");if(p==="keydown"&&f.includes(u)){const m=c[d],g=f.filter(b=>$.includes(b)),M=$.some(b=>{const w=b.charAt(0).toUpperCase()+b.slice(1);return s.getModifierState(w)});if(g.length>0){if(M){for(const b of $)if(f.includes(b)){const w=b.charAt(0).toUpperCase()+b.slice(1);s.getModifierState(w)&&m(s)}}}else M||m(s)}}},i=[];n.onMounted(()=>{for(const a of e){const s=t(a),u=l(a),c=r(a),d=s?[s]:u;for(const p of d){const{focused:f}=Ce(n.ref(p)),m=n.watch(f,g=>{g?p.addEventListener("keydown",c):p.removeEventListener("keydown",c)});i.push(m)}}}),n.onBeforeUnmount(()=>{for(const a of i)a()})}const Be=["data-colindex","data-rowindex","data-editable","contenteditable","tabindex"],Re={key:1},U=n.defineComponent({__name:"ACell",props:{colIndex:{},rowIndex:{},tableid:{},addNavigation:{type:[Boolean,Object],default:!0},tabIndex:{default:0}},setup(e){var b;const t=n.inject(e.tableid),o=n.useTemplateRef("cell"),l=n.ref(""),r=n.ref(!1),i=t.table,a=t.columns[e.colIndex],s=t.rows[e.rowIndex],u=n.computed(()=>{const w=t.cellData(e.colIndex,e.rowIndex),E=a.format;return E?typeof E=="function"?E(w,{table:i,row:s,column:a}):typeof E=="string"?Function(`"use strict";return (${E})`)()(w,{table:i,row:s,column:a}):w:w}),c=()=>{if(a.mask,a.modalComponent){const w=o.value.getBoundingClientRect();t.modal.visible=!0,t.modal.colIndex=e.colIndex,t.modal.rowIndex=e.rowIndex,t.modal.parent=o.value,t.modal.top=w.top+w.height,t.modal.left=w.left,t.modal.width=p.value,typeof a.modalComponent=="function"?t.modal.component=a.modalComponent({table:i,row:s,column:a}):t.modal.component=a.modalComponent,t.modal.componentProps=a.modalComponentExtraProps}};if(e.addNavigation){let w={...V,"keydown.f2":c,"keydown.alt.up":c,"keydown.alt.down":c,"keydown.alt.left":c,"keydown.alt.right":c};typeof e.addNavigation=="object"&&(w={...w,...e.addNavigation}),W([{selectors:o,handlers:w}])}const d=n.computed(()=>a.align||"center"),p=n.computed(()=>a.width||"40ch"),f=()=>{o.value&&(l.value=o.value.textContent)},m=()=>{o.value&&o.value.textContent!==l.value&&(l.value=o.value.textContent,o.value.dispatchEvent(new Event("change")),r.value=!0,a.format||t.setCellData(e.rowIndex,e.colIndex,l.value))},g=(w,E)=>E&&w===0&&E>0?`${E}ch`:"inherit",M={textAlign:d.value,width:p.value,backgroundColor:r.value?"var(--cell-modified-color)":"inherit",fontWeight:r.value?"bold":"inherit",paddingLeft:g(e.colIndex,(b=t.display[e.rowIndex])==null?void 0:b.indent)};return(w,E)=>(n.openBlock(),n.createElementBlock("td",{ref:"cell","data-colindex":w.colIndex,"data-rowindex":w.rowIndex,"data-editable":n.unref(t).columns[w.colIndex].edit,contenteditable:n.unref(t).columns[w.colIndex].edit,tabindex:w.tabIndex,spellcheck:!1,style:M,onFocus:f,onPaste:m,onBlur:m,onInput:m,onClick:c,onMousedown:c,class:"atable__cell"},[n.unref(t).columns[w.colIndex].cellComponent?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(t).columns[w.colIndex].cellComponent),n.mergeProps({key:0,value:u.value},n.unref(t).columns[w.colIndex].cellComponentProps),null,16,["value"])):(n.openBlock(),n.createElementBlock("span",Re,n.toDisplayString(u.value),1))],40,Be))}}),$e=["tabindex"],Oe=["tabindex"],Le=["colspan"],ne=n.defineComponent({__name:"AExpansionRow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:()=>-1},addNavigation:{type:[Boolean,Object]}},setup(e){const t=n.inject(e.tableid),o=n.useTemplateRef("rowEl"),l=n.computed(()=>t.display[e.rowIndex].expanded?"▼":"►");if(e.addNavigation){const r={"keydown.control.g":i=>{i.stopPropagation(),i.preventDefault(),t.toggleRowExpand(e.rowIndex)}};typeof e.addNavigation=="object"&&Object.assign(r,e.addNavigation),W([{selectors:o,handlers:r}])}return(r,i)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createElementVNode("tr",n.mergeProps(r.$attrs,{ref:"rowEl",tabindex:r.tabIndex,class:"expandable-row"}),[n.createElementVNode("td",{tabIndex:-1,onClick:i[0]||(i[0]=a=>n.unref(t).toggleRowExpand(r.rowIndex)),class:"row-index"},n.toDisplayString(l.value),1),n.renderSlot(r.$slots,"row")],16,$e),n.unref(t).display[r.rowIndex].expanded?(n.openBlock(),n.createElementBlock("tr",{key:0,ref:"rowExpanded",tabindex:r.tabIndex,class:"expanded-row"},[n.createElementVNode("td",{tabIndex:-1,colspan:n.unref(t).columns.length+1,class:"expanded-row-content"},[n.renderSlot(r.$slots,"content")],8,Le)],8,Oe)):n.createCommentVNode("",!0)],64))}}),Me=["tabindex"],Pe={key:0,tabIndex:-1,class:"list-index"},z=n.defineComponent({__name:"ARow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:()=>-1},addNavigation:{type:[Boolean,Object],default:!1}},setup(e){const t=n.inject(e.tableid),o=n.useTemplateRef("rowEl"),l=n.computed(()=>t.config.view!=="tree"||t.display[e.rowIndex].isRoot||t.display[e.rowIndex].open),r=n.computed(()=>t.config.view!=="tree"?"":t.display[e.rowIndex].isRoot||t.display[e.rowIndex].isParent?t.display[e.rowIndex].childrenOpen?"-":"+":""),i=a=>{t.toggleRowExpand(a)};if(e.addNavigation){let a=V;typeof e.addNavigation=="object"&&(a={...a,...e.addNavigation}),W([{selectors:o,handlers:a}])}return(a,s)=>n.withDirectives((n.openBlock(),n.createElementBlock("tr",{ref:"rowEl",tabindex:a.tabIndex,class:"table-row"},[n.renderSlot(a.$slots,"index",{},()=>[n.unref(t).config.view==="list"?(n.openBlock(),n.createElementBlock("td",Pe,n.toDisplayString(a.rowIndex+1),1)):n.unref(t).config.view==="tree"?(n.openBlock(),n.createElementBlock("td",{key:1,tabIndex:-1,class:"tree-index",onClick:s[0]||(s[0]=u=>i(a.rowIndex))},n.toDisplayString(r.value),1)):n.createCommentVNode("",!0)]),n.renderSlot(a.$slots,"default")],8,Me)),[[n.vShow,l.value]])}});function oe(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function T(e){return typeof e=="function"?e():n.unref(e)}const le=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ve=Object.prototype.toString,Ne=e=>ve.call(e)==="[object Object]",B=()=>{},F=je();function je(){var e,t;return le&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}const re={mounted:"mounted",updated:"updated",unmounted:"unmounted"};function He(...e){if(e.length!==1)return n.toRef(...e);const t=e[0];return typeof t=="function"?n.readonly(n.customRef(()=>({get:t,set:B}))):n.ref(t)}function R(e){var t;const o=T(e);return(t=o==null?void 0:o.$el)!=null?t:o}const ae=le?window:void 0;function O(...e){let t,o,l,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([o,l,r]=e,t=ae):[t,o,l,r]=e,!t)return B;Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const i=[],a=()=>{i.forEach(d=>d()),i.length=0},s=(d,p,f,m)=>(d.addEventListener(p,f,m),()=>d.removeEventListener(p,f,m)),u=n.watch(()=>[R(t),T(r)],([d,p])=>{if(a(),!d)return;const f=Ne(p)?{...p}:p;i.push(...o.flatMap(m=>l.map(g=>s(d,m,g,f))))},{immediate:!0,flush:"post"}),c=()=>{u(),a()};return oe(c),c}let ie=!1;function se(e,t,o={}){const{window:l=ae,ignore:r=[],capture:i=!0,detectIframe:a=!1}=o;if(!l)return B;F&&!ie&&(ie=!0,Array.from(l.document.body.children).forEach(f=>f.addEventListener("click",B)),l.document.documentElement.addEventListener("click",B));let s=!0;const u=f=>r.some(m=>{if(typeof m=="string")return Array.from(l.document.querySelectorAll(m)).some(g=>g===f.target||f.composedPath().includes(g));{const g=R(m);return g&&(f.target===g||f.composedPath().includes(g))}}),d=[O(l,"click",f=>{const m=R(e);if(!(!m||m===f.target||f.composedPath().includes(m))){if(f.detail===0&&(s=!u(f)),!s){s=!0;return}t(f)}},{passive:!0,capture:i}),O(l,"pointerdown",f=>{const m=R(e);s=!u(f)&&!!(m&&!f.composedPath().includes(m))},{passive:!0}),a&&O(l,"blur",f=>{setTimeout(()=>{var m;const g=R(e);((m=l.document.activeElement)==null?void 0:m.tagName)==="IFRAME"&&!(g!=null&&g.contains(l.document.activeElement))&&t(f)},0)})].filter(Boolean);return()=>d.forEach(f=>f())}const Ve={[re.mounted](e,t){const o=!t.modifiers.bubble;if(typeof t.value=="function")e.__onClickOutside_stop=se(e,t.value,{capture:o});else{const[l,r]=t.value;e.__onClickOutside_stop=se(e,l,Object.assign({capture:o},r))}},[re.unmounted](e){e.__onClickOutside_stop()}};function q(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function ce(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const o=e.parentNode;return!o||o.tagName==="BODY"?!1:ce(o)}}function We(e){const t=e||window.event,o=t.target;return ce(o)?!1:t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)}const G=new WeakMap;function Ue(e,t=!1){const o=n.ref(t);let l=null,r="";n.watch(He(e),s=>{const u=q(T(s));if(u){const c=u;if(G.get(c)||G.set(c,c.style.overflow),c.style.overflow!=="hidden"&&(r=c.style.overflow),c.style.overflow==="hidden")return o.value=!0;if(o.value)return c.style.overflow="hidden"}},{immediate:!0});const i=()=>{const s=q(T(e));!s||o.value||(F&&(l=O(s,"touchmove",u=>{We(u)},{passive:!1})),s.style.overflow="hidden",o.value=!0)},a=()=>{const s=q(T(e));!s||!o.value||(F&&(l==null||l()),s.style.overflow=r,G.delete(s),o.value=!1)};return oe(a),n.computed({get(){return o.value},set(s){s?i():a()}})}function ze(){let e=!1;const t=n.ref(!1);return(o,l)=>{if(t.value=l.value,e)return;e=!0;const r=Ue(o,l.value);n.watch(t,i=>r.value=i)}}ze();for(var y=[],Y=0;Y<256;++Y)y.push((Y+256).toString(16).slice(1));function Fe(e,t=0){return(y[e[t+0]]+y[e[t+1]]+y[e[t+2]]+y[e[t+3]]+"-"+y[e[t+4]]+y[e[t+5]]+"-"+y[e[t+6]]+y[e[t+7]]+"-"+y[e[t+8]]+y[e[t+9]]+"-"+y[e[t+10]]+y[e[t+11]]+y[e[t+12]]+y[e[t+13]]+y[e[t+14]]+y[e[t+15]]).toLowerCase()}var L,qe=new Uint8Array(16);function Ge(){if(!L&&(L=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!L))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return L(qe)}var Ye=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const de={randomUUID:Ye};function Xe(e,t,o){if(de.randomUUID&&!t&&!e)return de.randomUUID();e=e||{};var l=e.random||(e.rng||Ge)();return l[6]=l[6]&15|64,l[8]=l[8]&63|128,Fe(l)}class fe{constructor(t,o,l,r,i,a){I(this,"id");I(this,"rows");I(this,"columns");I(this,"config");I(this,"table");I(this,"display");I(this,"modal");this.id=t||Xe(),this.rows=l,this.columns=n.reactive(o),this.config=n.reactive(r),this.table=i||n.reactive(this.createTableObject()),this.display=this.createDisplayObject(a),this.modal=n.reactive({visible:!1})}createTableObject(){const t={};for(const[o,l]of this.columns.entries())for(const[r,i]of this.rows.entries())t[`${o}:${r}`]=i[l.name];return t}createDisplayObject(t){const o=[Object.assign({},{modified:!1})];if(t&&"0:0"in t)return t;const l=new Set;for(let r=this.rows.length-1;r>=0;r--){const i=this.rows[r];i.parent&&l.add(i.parent),o[r]={childrenOpen:!1,expanded:!1,indent:i.indent||null,isParent:l.has(r),isRoot:i.parent===null||i.parent===void 0,modified:!1,open:i.parent===null||i.parent===void 0,parent:i.parent}}return n.reactive(o)}get zeroColumn(){return["list","tree","list-expansion"].includes(this.config.view)}get numberedRowWidth(){return n.computed(()=>String(Math.ceil(this.rows.length/100)+1)+"ch")}cellData(t,o){return this.table[`${t}:${o}`]}setCellData(t,o,l){this.table[`${o}:${t}`]!==l&&(this.display[t].modified=!0),this.table[`${o}:${t}`]=l;const r=this.columns[o];return this.rows[t][r.name]=l,this.table[`${o}:${t}`]}toggleRowExpand(t){if(this.config.view==="tree"){this.display[t].childrenOpen=!this.display[t].childrenOpen;for(let o=this.rows.length-1;o>=0;o--)this.display[o].parent===t&&(this.display[o].open=!this.display[o].open,this.display[o].childrenOpen&&this.toggleRowExpand(o))}else this.config.view==="list-expansion"&&(this.display[t].expanded=!this.display[t].expanded)}}const Je={key:0,id:"resizable"},Qe={class:"atable-header-row",tabindex:"-1"},Ze={key:0,id:"header-index"},X=n.defineComponent({__name:"ATableHeader",props:{columns:{},tableid:{}},setup(e){const t=n.inject(e.tableid),o=l=>({minWidth:l.width||"40ch",textAlign:l.align||"center",width:t.config.fullWidth?"auto":null});return(l,r)=>l.columns.length?(n.openBlock(),n.createElementBlock("thead",Je,[n.createElementVNode("tr",Qe,[n.unref(t).zeroColumn?(n.openBlock(),n.createElementBlock("th",Ze)):n.createCommentVNode("",!0),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(l.columns,(i,a)=>(n.openBlock(),n.createElementBlock("th",{key:i.name,tabindex:"-1",style:n.normalizeStyle(o(i))},[n.renderSlot(l.$slots,"default",{},()=>[n.createTextVNode(n.toDisplayString(i.label||String.fromCharCode(a+97).toUpperCase()),1)])],4))),128))])])):n.createCommentVNode("",!0)}}),J=n.defineComponent({__name:"ATableModal",props:{colIndex:{},rowIndex:{},tableid:{}},setup(e){const t=o=>{o.stopPropagation()};return(o,l)=>(n.openBlock(),n.createElementBlock("div",{class:"amodal",tabindex:"-1",onClick:t,onInput:t},[n.renderSlot(o.$slots,"default")],32))}}),ue=n.defineComponent({__name:"ATable",props:{id:{},modelValue:{},columns:{},rows:{default:()=>[]},config:{default:()=>new Object},tableid:{}},emits:["update:modelValue"],setup(e,{emit:t}){const o=t,l=e.modelValue?e.modelValue:e.rows,r=new fe(e.id,e.columns,l,e.config);n.provide(r.id,r),n.watch(()=>r.rows,a=>{o("update:modelValue",a)},{deep:!0});const i=a=>{var s;a.target instanceof Node&&(s=r.modal.parent)!=null&&s.contains(a.target)||r.modal.visible&&(r.modal.visible=!1)};return window.addEventListener("keydown",a=>{if(a.key==="Escape"&&r.modal.visible){r.modal.visible=!1;const s=r.modal.parent;s&&n.nextTick().then(()=>{s.focus()})}}),(a,s)=>n.withDirectives((n.openBlock(),n.createElementBlock("table",{class:"atable",style:n.normalizeStyle({width:n.unref(r).config.fullWidth?"100%":"auto"})},[n.renderSlot(a.$slots,"header",{data:n.unref(r)},()=>[n.createVNode(X,{columns:n.unref(r).columns,tableid:n.unref(r).id},null,8,["columns","tableid"])]),n.createElementVNode("tbody",null,[n.renderSlot(a.$slots,"body",{data:n.unref(r)},()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).rows,(u,c)=>(n.openBlock(),n.createBlock(z,{key:u.id,row:u,rowIndex:c,tableid:n.unref(r).id},{default:n.withCtx(()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).columns,(d,p)=>(n.openBlock(),n.createBlock(U,{key:d.name,tableid:n.unref(r).id,col:d,spellcheck:"false",rowIndex:c,colIndex:p+(n.unref(r).zeroColumn?0:-1),component:d.cellComponent,style:n.normalizeStyle({textAlign:(d==null?void 0:d.align)||"center",minWidth:(d==null?void 0:d.width)||"40ch",width:n.unref(r).config.fullWidth?"auto":null})},null,8,["tableid","col","rowIndex","colIndex","component","style"]))),128))]),_:2},1032,["row","rowIndex","tableid"]))),128))])]),n.renderSlot(a.$slots,"footer",{data:n.unref(r)}),n.renderSlot(a.$slots,"modal",{data:n.unref(r)},()=>[n.withDirectives(n.createVNode(J,{colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id,style:n.normalizeStyle({left:n.unref(r).modal.left+"px",top:n.unref(r).modal.top+"px",maxWidth:n.unref(r).modal.width+"px"})},{default:n.withCtx(()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(r).modal.component),n.mergeProps({key:`${n.unref(r).modal.rowIndex}:${n.unref(r).modal.colIndex}`,colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id},n.unref(r).modal.componentProps),null,16,["colIndex","rowIndex","tableid"]))]),_:1},8,["colIndex","rowIndex","tableid","style"]),[[n.vShow,n.unref(r).modal.visible]])])],4)),[[n.unref(Ve),i]])}});function Ke(e){e.component("ACell",U),e.component("AExpansionRow",ne),e.component("ARow",z),e.component("ATable",ue),e.component("ATableHeader",X),e.component("ATableModal",J)}h.ACell=U,h.AExpansionRow=ne,h.ARow=z,h.ATable=ue,h.ATableHeader=X,h.ATableModal=J,h.TableDataStore=fe,h.install=Ke,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
1
+ (function(g,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(g=typeof globalThis<"u"?globalThis:g||self,n(g["@stonecrop/atable"]={},g.Vue))})(this,function(g,n){"use strict";var ht=Object.defineProperty;var wt=(g,n,I)=>n in g?ht(g,n,{enumerable:!0,configurable:!0,writable:!0,value:I}):g[n]=I;var S=(g,n,I)=>wt(g,typeof n!="symbol"?n+"":n,I);function I(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function j(e){return typeof e=="function"?e():n.unref(e)}const Ee=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const xe=e=>e!=null,Ce=Object.prototype.toString,Se=e=>Ce.call(e)==="[object Object]",Ie=()=>{},D=Ee?window:void 0;function T(e){var t;const o=j(e);return(t=o==null?void 0:o.$el)!=null?t:o}function $(...e){let t,o,r,i;if(typeof e[0]=="string"||Array.isArray(e[0])?([o,r,i]=e,t=D):[t,o,r,i]=e,!t)return Ie;Array.isArray(o)||(o=[o]),Array.isArray(r)||(r=[r]);const l=[],a=()=>{l.forEach(u=>u()),l.length=0},s=(u,m,c,p)=>(u.addEventListener(m,c,p),()=>u.removeEventListener(m,c,p)),d=n.watch(()=>[T(t),j(i)],([u,m])=>{if(a(),!u)return;const c=Se(m)?{...m}:m;l.push(...o.flatMap(p=>r.map(h=>s(u,p,h,c))))},{immediate:!0,flush:"post"}),f=()=>{d(),a()};return I(f),f}function Ae(){const e=n.ref(!1),t=n.getCurrentInstance();return t&&n.onMounted(()=>{e.value=!0},t),e}function De(e){const t=Ae();return n.computed(()=>(t.value,!!e()))}function Te(e,t,o={}){const{window:r=D,...i}=o;let l;const a=De(()=>r&&"MutationObserver"in r),s=()=>{l&&(l.disconnect(),l=void 0)},d=n.computed(()=>{const c=j(e),p=(Array.isArray(c)?c:[c]).map(T).filter(xe);return new Set(p)}),f=n.watch(()=>d.value,c=>{s(),a.value&&c.size&&(l=new MutationObserver(t),c.forEach(p=>l.observe(p,i)))},{immediate:!0,flush:"post"}),u=()=>l==null?void 0:l.takeRecords(),m=()=>{f(),s()};return I(m),{isSupported:a,stop:m,takeRecords:u}}function $e(e={}){var t;const{window:o=D,deep:r=!0,triggerOnRemoval:i=!1}=e,l=(t=e.document)!=null?t:o==null?void 0:o.document,a=()=>{var f;let u=l==null?void 0:l.activeElement;if(r)for(;u!=null&&u.shadowRoot;)u=(f=u==null?void 0:u.shadowRoot)==null?void 0:f.activeElement;return u},s=n.ref(),d=()=>{s.value=a()};return o&&($(o,"blur",f=>{f.relatedTarget===null&&d()},!0),$(o,"focus",d,!0)),i&&Te(l,f=>{f.filter(u=>u.removedNodes.length).map(u=>Array.from(u.removedNodes)).flat().forEach(u=>{u===s.value&&d()})},{childList:!0,subtree:!0}),d(),s}const Oe="focusin",Re="focusout";function Be(e,t={}){const{window:o=D}=t,r=n.computed(()=>T(e)),i=n.ref(!1),l=n.computed(()=>i.value),a=$e(t);return!o||!a.value?{focused:l}:($(r,Oe,()=>i.value=!0),$(r,Re,()=>i.value=!1),{focused:l})}function ve(e,{window:t=D,scrollTarget:o}={}){const r=n.ref(!1),i=()=>{if(!t)return;const l=t.document,a=T(e);if(!a)r.value=!1;else{const s=a.getBoundingClientRect();r.value=s.top<=(t.innerHeight||l.documentElement.clientHeight)&&s.left<=(t.innerWidth||l.documentElement.clientWidth)&&s.bottom>=0&&s.right>=0}};return n.watch(()=>T(e),()=>i(),{immediate:!0,flush:"post"}),t&&$(o||t,"scroll",i,{capture:!1,passive:!0}),r}const x=e=>{let t=ve(e).value;return t=t&&e.offsetHeight>0,t},C=e=>e.tabIndex>=0,ee=e=>{const t=e.target;return W(t)},W=e=>{var t;let o;if(e instanceof HTMLTableCellElement){const r=(t=e.parentElement)==null?void 0:t.previousElementSibling;if(r){const i=Array.from(r.children)[e.cellIndex];i&&(o=i)}}else if(e instanceof HTMLTableRowElement){const r=e.previousElementSibling;r&&(o=r)}return o&&(!C(o)||!x(o))?W(o):o},Le=e=>{var t;const o=e.target;let r;if(o instanceof HTMLTableCellElement){const i=(t=o.parentElement)==null?void 0:t.parentElement;if(i){const l=i.firstElementChild.children[o.cellIndex];l&&(r=l)}}else if(o instanceof HTMLTableRowElement){const i=o.parentElement;if(i){const l=i.firstElementChild;l&&(r=l)}}return r&&(!C(r)||!x(r))?N(r):r},te=e=>{const t=e.target;return N(t)},N=e=>{var t;let o;if(e instanceof HTMLTableCellElement){const r=(t=e.parentElement)==null?void 0:t.nextElementSibling;if(r){const i=Array.from(r.children)[e.cellIndex];i&&(o=i)}}else if(e instanceof HTMLTableRowElement){const r=e.nextElementSibling;r&&(o=r)}return o&&(!C(o)||!x(o))?N(o):o},Me=e=>{var t;const o=e.target;let r;if(o instanceof HTMLTableCellElement){const i=(t=o.parentElement)==null?void 0:t.parentElement;if(i){const l=i.lastElementChild.children[o.cellIndex];l&&(r=l)}}else if(o instanceof HTMLTableRowElement){const i=o.parentElement;if(i){const l=i.lastElementChild;l&&(r=l)}}return r&&(!C(r)||!x(r))?W(r):r},ne=e=>{const t=e.target;return V(t)},V=e=>{var t;let o;if(e.previousElementSibling)o=e.previousElementSibling;else{const r=(t=e.parentElement)==null?void 0:t.previousElementSibling;o=r==null?void 0:r.lastElementChild}return o&&(!C(o)||!x(o))?V(o):o},oe=e=>{const t=e.target;return H(t)},H=e=>{var t;let o;if(e.nextElementSibling)o=e.nextElementSibling;else{const r=(t=e.parentElement)==null?void 0:t.nextElementSibling;o=r==null?void 0:r.firstElementChild}return o&&(!C(o)||!x(o))?H(o):o},le=e=>{const t=e.target.parentElement.firstElementChild;return t&&(!C(t)||!x(t))?H(t):t},re=e=>{const t=e.target.parentElement.lastElementChild;return t&&(!C(t)||!x(t))?V(t):t},v=["alt","control","shift","meta"],Pe={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"},z={"keydown.up":e=>{const t=ee(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.down":e=>{const t=te(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.left":e=>{const t=ne(e);e.preventDefault(),e.stopPropagation(),t&&t.focus()},"keydown.right":e=>{const t=oe(e);e.preventDefault(),e.stopPropagation(),t&&t.focus()},"keydown.control.up":e=>{const t=Le(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.control.down":e=>{const t=Me(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.control.left":e=>{const t=le(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.control.right":e=>{const t=re(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.end":e=>{const t=re(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.enter":e=>{if(e.target instanceof HTMLTableCellElement){e.preventDefault(),e.stopPropagation();const t=te(e);t&&t.focus()}},"keydown.shift.enter":e=>{if(e.target instanceof HTMLTableCellElement){e.preventDefault(),e.stopPropagation();const t=ee(e);t&&t.focus()}},"keydown.home":e=>{const t=le(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.tab":e=>{const t=oe(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())},"keydown.shift.tab":e=>{const t=ne(e);t&&(e.preventDefault(),e.stopPropagation(),t.focus())}};function U(e){const t=a=>{let s=null;return a.parent&&(typeof a.parent=="string"?s=document.querySelector(a.parent):a.parent instanceof HTMLElement?s=a.parent:s=a.parent.value),s},o=a=>{const s=t(a);let d=[];if(typeof a.selectors=="string")d=s?Array.from(s.querySelectorAll(a.selectors)):Array.from(document.querySelectorAll(a.selectors));else if(Array.isArray(a.selectors))for(const f of a.selectors)f instanceof HTMLElement?d.push(f):d.push(f.$el);else if(a.selectors instanceof HTMLElement)d.push(a.selectors);else if(Array.isArray(a.selectors.value))for(const f of a.selectors.value)f instanceof HTMLElement?d.push(f):d.push(f.$el);else d.push(a.selectors.value);return d},r=a=>{const s=t(a);let d=[];return a.selectors?d=o(a):s&&(d=Array.from(s.children).filter(f=>C(f)&&x(f))),d},i=a=>s=>{const d=Pe[s.key]||s.key.toLowerCase();if(v.includes(d))return;const f=a.handlers||z;for(const u of Object.keys(f)){const[m,...c]=u.split(".");if(m==="keydown"&&c.includes(d)){const p=f[u],h=c.filter(b=>v.includes(b)),E=v.some(b=>{const w=b.charAt(0).toUpperCase()+b.slice(1);return s.getModifierState(w)});if(h.length>0){if(E){for(const b of v)if(c.includes(b)){const w=b.charAt(0).toUpperCase()+b.slice(1);s.getModifierState(w)&&p(s)}}}else E||p(s)}}},l=[];n.onMounted(()=>{for(const a of e){const s=t(a),d=r(a),f=i(a),u=s?[s]:d;for(const m of u){const{focused:c}=Be(n.ref(m)),p=n.watch(c,h=>{h?m.addEventListener("keydown",f):m.removeEventListener("keydown",f)});l.push(p)}}}),n.onBeforeUnmount(()=>{for(const a of l)a()})}function F(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function L(e){return typeof e=="function"?e():n.unref(e)}const je=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const We=e=>e!=null,Ne=Object.prototype.toString,Ve=e=>Ne.call(e)==="[object Object]",He=()=>{};function ze(e){return n.getCurrentInstance()}function Ue(e,t=!0,o){ze()?n.onMounted(e,o):t?e():n.nextTick(e)}const q=je?window:void 0;function A(e){var t;const o=L(e);return(t=o==null?void 0:o.$el)!=null?t:o}function ie(...e){let t,o,r,i;if(typeof e[0]=="string"||Array.isArray(e[0])?([o,r,i]=e,t=q):[t,o,r,i]=e,!t)return He;Array.isArray(o)||(o=[o]),Array.isArray(r)||(r=[r]);const l=[],a=()=>{l.forEach(u=>u()),l.length=0},s=(u,m,c,p)=>(u.addEventListener(m,c,p),()=>u.removeEventListener(m,c,p)),d=n.watch(()=>[A(t),L(i)],([u,m])=>{if(a(),!u)return;const c=Ve(m)?{...m}:m;l.push(...o.flatMap(p=>r.map(h=>s(u,p,h,c))))},{immediate:!0,flush:"post"}),f=()=>{d(),a()};return F(f),f}function Fe(){const e=n.ref(!1),t=n.getCurrentInstance();return t&&n.onMounted(()=>{e.value=!0},t),e}function ae(e){const t=Fe();return n.computed(()=>(t.value,!!e()))}function se(e,t,o={}){const{window:r=q,...i}=o;let l;const a=ae(()=>r&&"MutationObserver"in r),s=()=>{l&&(l.disconnect(),l=void 0)},d=n.computed(()=>{const c=L(e),p=(Array.isArray(c)?c:[c]).map(A).filter(We);return new Set(p)}),f=n.watch(()=>d.value,c=>{s(),a.value&&c.size&&(l=new MutationObserver(t),c.forEach(p=>l.observe(p,i)))},{immediate:!0,flush:"post"}),u=()=>l==null?void 0:l.takeRecords(),m=()=>{f(),s()};return F(m),{isSupported:a,stop:m,takeRecords:u}}function qe(e,t,o={}){const{window:r=q,...i}=o;let l;const a=ae(()=>r&&"ResizeObserver"in r),s=()=>{l&&(l.disconnect(),l=void 0)},d=n.computed(()=>{const m=L(e);return Array.isArray(m)?m.map(c=>A(c)):[A(m)]}),f=n.watch(d,m=>{if(s(),a.value&&r){l=new ResizeObserver(t);for(const c of m)c&&l.observe(c,i)}},{immediate:!0,flush:"post"}),u=()=>{s(),f()};return F(u),{isSupported:a,stop:u}}function Ge(e,t={}){const{reset:o=!0,windowResize:r=!0,windowScroll:i=!0,immediate:l=!0,updateTiming:a="sync"}=t,s=n.ref(0),d=n.ref(0),f=n.ref(0),u=n.ref(0),m=n.ref(0),c=n.ref(0),p=n.ref(0),h=n.ref(0);function E(){const w=A(e);if(!w){o&&(s.value=0,d.value=0,f.value=0,u.value=0,m.value=0,c.value=0,p.value=0,h.value=0);return}const y=w.getBoundingClientRect();s.value=y.height,d.value=y.bottom,f.value=y.left,u.value=y.right,m.value=y.top,c.value=y.width,p.value=y.x,h.value=y.y}function b(){a==="sync"?E():a==="next-frame"&&requestAnimationFrame(()=>E())}return qe(e,b),n.watch(()=>A(e),w=>!w&&b()),se(e,b,{attributeFilter:["style","class"]}),i&&ie("scroll",b,{capture:!0,passive:!0}),r&&ie("resize",b,{passive:!0}),Ue(()=>{l&&b()}),{height:s,bottom:d,left:f,right:u,top:m,width:c,x:p,y:h,update:b}}const Ye=["data-colindex","data-rowindex","data-editable","contenteditable","tabindex"],Xe={key:1},G=n.defineComponent({__name:"ACell",props:{colIndex:{},rowIndex:{},tableid:{},addNavigation:{type:[Boolean,Object],default:!0},tabIndex:{default:0},pinned:{type:Boolean}},setup(e){var b;const t=n.inject(e.tableid),o=n.useTemplateRef("cell"),r=n.ref(""),i=n.ref(!1),l=t.table,a=t.columns[e.colIndex],s=t.rows[e.rowIndex],d=n.computed(()=>a.align||"center"),f=n.computed(()=>a.width||"40ch"),u=n.computed(()=>{const w=t.cellData(e.colIndex,e.rowIndex),y=a.format;return y?typeof y=="function"?y(w,{table:l,row:s,column:a}):typeof y=="string"?Function(`"use strict";return (${y})`)()(w,{table:l,row:s,column:a}):w:w}),m=()=>{if(a.mask,a.modalComponent){const{top:w,left:y,height:ke}=Ge(o);t.modal.visible=!0,t.modal.colIndex=e.colIndex,t.modal.rowIndex=e.rowIndex,t.modal.parent=o.value,t.modal.top=w.value+ke.value,t.modal.left=y.value,t.modal.width=f.value,typeof a.modalComponent=="function"?t.modal.component=a.modalComponent({table:l,row:s,column:a}):t.modal.component=a.modalComponent,t.modal.componentProps=a.modalComponentExtraProps}};if(e.addNavigation){let w={...z,"keydown.f2":m,"keydown.alt.up":m,"keydown.alt.down":m,"keydown.alt.left":m,"keydown.alt.right":m};typeof e.addNavigation=="object"&&(w={...w,...e.addNavigation}),U([{selectors:o,handlers:w}])}const c=()=>{o.value&&(r.value=o.value.textContent)},p=()=>{o.value&&o.value.textContent!==r.value&&(r.value=o.value.textContent,o.value.dispatchEvent(new Event("change")),i.value=!0,a.format||t.setCellData(e.rowIndex,e.colIndex,r.value))},h=(w,y)=>y&&w===0&&y>0?`${y}ch`:"inherit",E={textAlign:d.value,width:f.value,backgroundColor:i.value?"var(--cell-modified-color)":"inherit",fontWeight:i.value?"bold":"inherit",paddingLeft:h(e.colIndex,(b=t.display[e.rowIndex])==null?void 0:b.indent)};return(w,y)=>(n.openBlock(),n.createElementBlock("td",{ref:"cell","data-colindex":w.colIndex,"data-rowindex":w.rowIndex,"data-editable":n.unref(a).edit,contenteditable:n.unref(a).edit,tabindex:w.tabIndex,spellcheck:!1,style:E,onFocus:c,onPaste:p,onBlur:p,onInput:p,onClick:m,onMousedown:m,class:n.normalizeClass(["atable__cell",w.pinned?"sticky-column":""])},[n.unref(a).cellComponent?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(a).cellComponent),n.mergeProps({key:0,value:u.value},n.unref(a).cellComponentProps),null,16,["value"])):(n.openBlock(),n.createElementBlock("span",Xe,n.toDisplayString(u.value),1))],42,Ye))}}),Je=["tabindex"],Qe=["tabindex"],Ze=["colspan"],ce=n.defineComponent({__name:"AExpansionRow",props:{rowIndex:{},tableid:{},tabIndex:{default:()=>-1},addNavigation:{type:[Boolean,Object]}},setup(e){const t=n.inject(e.tableid),o=n.useTemplateRef("rowEl"),r=n.computed(()=>t.display[e.rowIndex].expanded?"▼":"►");if(e.addNavigation){const i={"keydown.control.g":l=>{l.stopPropagation(),l.preventDefault(),t.toggleRowExpand(e.rowIndex)}};typeof e.addNavigation=="object"&&Object.assign(i,e.addNavigation),U([{selectors:o,handlers:i}])}return(i,l)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createElementVNode("tr",n.mergeProps(i.$attrs,{ref:"rowEl",tabindex:i.tabIndex,class:"expandable-row"}),[n.createElementVNode("td",{tabIndex:-1,onClick:l[0]||(l[0]=a=>n.unref(t).toggleRowExpand(i.rowIndex)),class:"row-index"},n.toDisplayString(r.value),1),n.renderSlot(i.$slots,"row")],16,Je),n.unref(t).display[i.rowIndex].expanded?(n.openBlock(),n.createElementBlock("tr",{key:0,ref:"rowExpanded",tabindex:i.tabIndex,class:"expanded-row"},[n.createElementVNode("td",{tabIndex:-1,colspan:n.unref(t).columns.length+1,class:"expanded-row-content"},[n.renderSlot(i.$slots,"content")],8,Ze)],8,Qe)):n.createCommentVNode("",!0)],64))}}),Ke=["tabindex"],Y=n.defineComponent({__name:"ARow",props:{rowIndex:{},tableid:{},tabIndex:{default:()=>-1},addNavigation:{type:[Boolean,Object],default:!1}},setup(e){const t=n.inject(e.tableid),o=n.useTemplateRef("rowEl"),r=n.computed(()=>t.columns.some(s=>s.pinned)),i=n.computed(()=>t.config.view!=="tree"||t.display[e.rowIndex].isRoot||t.display[e.rowIndex].open),l=n.computed(()=>t.config.view!=="tree"?"":t.display[e.rowIndex].isRoot||t.display[e.rowIndex].isParent?t.display[e.rowIndex].childrenOpen?"-":"+":""),a=s=>{t.toggleRowExpand(s)};if(e.addNavigation){let s=z;typeof e.addNavigation=="object"&&(s={...s,...e.addNavigation}),U([{selectors:o,handlers:s}])}return(s,d)=>n.withDirectives((n.openBlock(),n.createElementBlock("tr",{ref:"rowEl",tabindex:s.tabIndex,class:"table-row"},[n.renderSlot(s.$slots,"index",{},()=>[n.unref(t).config.view==="list"?(n.openBlock(),n.createElementBlock("td",{key:0,tabIndex:-1,class:n.normalizeClass(["list-index",r.value?"sticky-index":""])},n.toDisplayString(s.rowIndex+1),3)):n.unref(t).config.view==="tree"?(n.openBlock(),n.createElementBlock("td",{key:1,tabIndex:-1,class:n.normalizeClass(["tree-index",r.value?"sticky-index":""]),onClick:d[0]||(d[0]=f=>a(s.rowIndex))},n.toDisplayString(l.value),3)):n.createCommentVNode("",!0)]),n.renderSlot(s.$slots,"default")],8,Ke)),[[n.vShow,i.value]])}});function de(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function O(e){return typeof e=="function"?e():n.unref(e)}const fe=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const _e=Object.prototype.toString,et=e=>_e.call(e)==="[object Object]",R=()=>{},X=tt();function tt(){var e,t;return fe&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}const ue={mounted:"mounted",updated:"updated",unmounted:"unmounted"};function nt(...e){if(e.length!==1)return n.toRef(...e);const t=e[0];return typeof t=="function"?n.readonly(n.customRef(()=>({get:t,set:R}))):n.ref(t)}function B(e){var t;const o=O(e);return(t=o==null?void 0:o.$el)!=null?t:o}const me=fe?window:void 0;function M(...e){let t,o,r,i;if(typeof e[0]=="string"||Array.isArray(e[0])?([o,r,i]=e,t=me):[t,o,r,i]=e,!t)return R;Array.isArray(o)||(o=[o]),Array.isArray(r)||(r=[r]);const l=[],a=()=>{l.forEach(u=>u()),l.length=0},s=(u,m,c,p)=>(u.addEventListener(m,c,p),()=>u.removeEventListener(m,c,p)),d=n.watch(()=>[B(t),O(i)],([u,m])=>{if(a(),!u)return;const c=et(m)?{...m}:m;l.push(...o.flatMap(p=>r.map(h=>s(u,p,h,c))))},{immediate:!0,flush:"post"}),f=()=>{d(),a()};return de(f),f}let pe=!1;function he(e,t,o={}){const{window:r=me,ignore:i=[],capture:l=!0,detectIframe:a=!1}=o;if(!r)return R;X&&!pe&&(pe=!0,Array.from(r.document.body.children).forEach(c=>c.addEventListener("click",R)),r.document.documentElement.addEventListener("click",R));let s=!0;const d=c=>i.some(p=>{if(typeof p=="string")return Array.from(r.document.querySelectorAll(p)).some(h=>h===c.target||c.composedPath().includes(h));{const h=B(p);return h&&(c.target===h||c.composedPath().includes(h))}}),u=[M(r,"click",c=>{const p=B(e);if(!(!p||p===c.target||c.composedPath().includes(p))){if(c.detail===0&&(s=!d(c)),!s){s=!0;return}t(c)}},{passive:!0,capture:l}),M(r,"pointerdown",c=>{const p=B(e);s=!d(c)&&!!(p&&!c.composedPath().includes(p))},{passive:!0}),a&&M(r,"blur",c=>{setTimeout(()=>{var p;const h=B(e);((p=r.document.activeElement)==null?void 0:p.tagName)==="IFRAME"&&!(h!=null&&h.contains(r.document.activeElement))&&t(c)},0)})].filter(Boolean);return()=>u.forEach(c=>c())}const ot={[ue.mounted](e,t){const o=!t.modifiers.bubble;if(typeof t.value=="function")e.__onClickOutside_stop=he(e,t.value,{capture:o});else{const[r,i]=t.value;e.__onClickOutside_stop=he(e,r,Object.assign({capture:o},i))}},[ue.unmounted](e){e.__onClickOutside_stop()}};function J(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function we(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const o=e.parentNode;return!o||o.tagName==="BODY"?!1:we(o)}}function lt(e){const t=e||window.event,o=t.target;return we(o)?!1:t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Q=new WeakMap;function rt(e,t=!1){const o=n.ref(t);let r=null,i="";n.watch(nt(e),s=>{const d=J(O(s));if(d){const f=d;if(Q.get(f)||Q.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(i=f.style.overflow),f.style.overflow==="hidden")return o.value=!0;if(o.value)return f.style.overflow="hidden"}},{immediate:!0});const l=()=>{const s=J(O(e));!s||o.value||(X&&(r=M(s,"touchmove",d=>{lt(d)},{passive:!1})),s.style.overflow="hidden",o.value=!0)},a=()=>{const s=J(O(e));!s||!o.value||(X&&(r==null||r()),s.style.overflow=i,Q.delete(s),o.value=!1)};return de(a),n.computed({get(){return o.value},set(s){s?l():a()}})}function it(){let e=!1;const t=n.ref(!1);return(o,r)=>{if(t.value=r.value,e)return;e=!0;const i=rt(o,r.value);n.watch(t,l=>i.value=l)}}it();for(var k=[],Z=0;Z<256;++Z)k.push((Z+256).toString(16).slice(1));function at(e,t=0){return(k[e[t+0]]+k[e[t+1]]+k[e[t+2]]+k[e[t+3]]+"-"+k[e[t+4]]+k[e[t+5]]+"-"+k[e[t+6]]+k[e[t+7]]+"-"+k[e[t+8]]+k[e[t+9]]+"-"+k[e[t+10]]+k[e[t+11]]+k[e[t+12]]+k[e[t+13]]+k[e[t+14]]+k[e[t+15]]).toLowerCase()}var P,st=new Uint8Array(16);function ct(){if(!P&&(P=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!P))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return P(st)}var dt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const ye={randomUUID:dt};function ft(e,t,o){if(ye.randomUUID&&!t&&!e)return ye.randomUUID();e=e||{};var r=e.random||(e.rng||ct)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,at(r)}class ge{constructor(t,o,r,i,l,a){S(this,"id");S(this,"rows");S(this,"columns");S(this,"config");S(this,"table");S(this,"display");S(this,"modal");this.id=t||ft(),this.rows=r,this.columns=n.reactive(o),this.config=n.reactive(i),this.table=l||n.reactive(this.createTableObject()),this.display=this.createDisplayObject(a),this.modal=n.reactive({visible:!1})}createTableObject(){const t={};for(const[o,r]of this.columns.entries())for(const[i,l]of this.rows.entries())t[`${o}:${i}`]=l[r.name];return t}createDisplayObject(t){const o=[Object.assign({},{modified:!1})];if(t&&"0:0"in t)return t;const r=new Set;for(let i=this.rows.length-1;i>=0;i--){const l=this.rows[i];l.parent&&r.add(l.parent),o[i]={childrenOpen:!1,expanded:!1,indent:l.indent||null,isParent:r.has(i),isRoot:l.parent===null||l.parent===void 0,modified:!1,open:l.parent===null||l.parent===void 0,parent:l.parent}}return n.reactive(o)}get zeroColumn(){return["list","tree","list-expansion"].includes(this.config.view)}get numberedRowWidth(){return n.computed(()=>String(Math.ceil(this.rows.length/100)+1)+"ch")}cellData(t,o){return this.table[`${t}:${o}`]}setCellData(t,o,r){this.table[`${o}:${t}`]!==r&&(this.display[t].modified=!0),this.table[`${o}:${t}`]=r;const i=this.columns[o];return this.rows[t][i.name]=r,this.table[`${o}:${t}`]}toggleRowExpand(t){if(this.config.view==="tree"){this.display[t].childrenOpen=!this.display[t].childrenOpen;for(let o=this.rows.length-1;o>=0;o--)this.display[o].parent===t&&(this.display[o].open=!this.display[o].open,this.display[o].childrenOpen&&this.toggleRowExpand(o))}else this.config.view==="list-expansion"&&(this.display[t].expanded=!this.display[t].expanded)}}const ut={key:0,id:"resizable"},mt={class:"atable-header-row",tabindex:"-1"},K=n.defineComponent({__name:"ATableHeader",props:{columns:{},tableid:{}},setup(e){const t=n.inject(e.tableid),o=n.computed(()=>t.columns.some(i=>i.pinned)),r=i=>({minWidth:i.width||"40ch",textAlign:i.align||"center",width:t.config.fullWidth?"auto":null});return(i,l)=>i.columns.length?(n.openBlock(),n.createElementBlock("thead",ut,[n.createElementVNode("tr",mt,[n.unref(t).zeroColumn?(n.openBlock(),n.createElementBlock("th",{key:0,id:"header-index",class:n.normalizeClass(o.value?"sticky-index":"")},null,2)):n.createCommentVNode("",!0),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(i.columns,(a,s)=>(n.openBlock(),n.createElementBlock("th",{key:a.name,tabindex:"-1",style:n.normalizeStyle(r(a)),class:n.normalizeClass(a.pinned?"sticky-column":"")},[n.renderSlot(i.$slots,"default",{},()=>[n.createTextVNode(n.toDisplayString(a.label||String.fromCharCode(s+97).toUpperCase()),1)])],6))),128))])])):n.createCommentVNode("",!0)}}),_=n.defineComponent({__name:"ATableModal",props:{colIndex:{},rowIndex:{},tableid:{}},setup(e){const t=o=>{o.stopPropagation()};return(o,r)=>(n.openBlock(),n.createElementBlock("div",{class:"amodal",tabindex:"-1",onClick:t,onInput:t},[n.renderSlot(o.$slots,"default")],32))}}),be=n.defineComponent({__name:"ATable",props:{id:{},modelValue:{},columns:{},rows:{default:()=>[]},config:{default:()=>new Object}},emits:["update:modelValue"],setup(e,{emit:t}){const o=t,r=n.useTemplateRef("table"),i=e.modelValue?e.modelValue:e.rows,l=new ge(e.id,e.columns,i,e.config);n.provide(l.id,l),n.watch(()=>l.rows,d=>{o("update:modelValue",d)},{deep:!0}),n.onMounted(()=>{e.columns.some(d=>d.pinned)&&(a(),l.config.view==="tree"&&se(r,a,{childList:!0,subtree:!0}))});const a=()=>{const d=r.value,f=d.rows[0],u=d.rows[1],m=f?Array.from(f.cells):[];for(const[c,p]of m.entries()){const h=u.cells[c];h&&(p.style.width=`${h.offsetWidth}px`)}for(const c of d.rows){let p=0;const h=[];for(const E of c.cells)(E.classList.contains("sticky-column")||E.classList.contains("sticky-index"))&&(E.style.left=`${p}px`,p+=E.offsetWidth,h.push(E));h.length>0&&h[h.length-1].classList.add("sticky-column-edge")}},s=d=>{var f;d.target instanceof Node&&(f=l.modal.parent)!=null&&f.contains(d.target)||l.modal.visible&&(l.modal.visible=!1)};return window.addEventListener("keydown",d=>{if(d.key==="Escape"&&l.modal.visible){l.modal.visible=!1;const f=l.modal.parent;f&&n.nextTick().then(()=>{f.focus()})}}),(d,f)=>n.withDirectives((n.openBlock(),n.createElementBlock("table",{ref:"table",class:"atable",style:n.normalizeStyle({width:n.unref(l).config.fullWidth?"100%":"auto"})},[n.renderSlot(d.$slots,"header",{data:n.unref(l)},()=>[n.createVNode(K,{columns:n.unref(l).columns,tableid:n.unref(l).id},null,8,["columns","tableid"])]),n.createElementVNode("tbody",null,[n.renderSlot(d.$slots,"body",{data:n.unref(l)},()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(l).rows,(u,m)=>(n.openBlock(),n.createBlock(Y,{key:u.id,row:u,rowIndex:m,tableid:n.unref(l).id},{default:n.withCtx(()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(l).columns,(c,p)=>(n.openBlock(),n.createBlock(G,{key:c.name,tableid:n.unref(l).id,col:c,spellcheck:"false",pinned:c.pinned,rowIndex:m,colIndex:p+(n.unref(l).zeroColumn?0:-1),component:c.cellComponent,style:n.normalizeStyle({textAlign:(c==null?void 0:c.align)||"center",minWidth:(c==null?void 0:c.width)||"40ch",width:n.unref(l).config.fullWidth?"auto":null})},null,8,["tableid","col","pinned","rowIndex","colIndex","component","style"]))),128))]),_:2},1032,["row","rowIndex","tableid"]))),128))])]),n.renderSlot(d.$slots,"footer",{data:n.unref(l)}),n.renderSlot(d.$slots,"modal",{data:n.unref(l)},()=>[n.withDirectives(n.createVNode(_,{colIndex:n.unref(l).modal.colIndex,rowIndex:n.unref(l).modal.rowIndex,tableid:n.unref(l).id,style:n.normalizeStyle({left:n.unref(l).modal.left+"px",top:n.unref(l).modal.top+"px",maxWidth:n.unref(l).modal.width+"px"})},{default:n.withCtx(()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(l).modal.component),n.mergeProps({key:`${n.unref(l).modal.rowIndex}:${n.unref(l).modal.colIndex}`,colIndex:n.unref(l).modal.colIndex,rowIndex:n.unref(l).modal.rowIndex,tableid:n.unref(l).id},n.unref(l).modal.componentProps),null,16,["colIndex","rowIndex","tableid"]))]),_:1},8,["colIndex","rowIndex","tableid","style"]),[[n.vShow,n.unref(l).modal.visible]])])],4)),[[n.unref(ot),s]])}});function pt(e){e.component("ACell",G),e.component("AExpansionRow",ce),e.component("ARow",Y),e.component("ATable",be),e.component("ATableHeader",K),e.component("ATableModal",_)}g.ACell=G,g.AExpansionRow=ce,g.ARow=Y,g.ATable=be,g.ATableHeader=K,g.ATableModal=_,g.TableDataStore=ge,g.install=pt,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=atable.umd.cjs.map