@simple-table/vue 4.0.3 → 4.0.5

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/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),r=require("simple-table-core");function n(e,r){var n={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.indexOf(t)<0&&(n[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(t=Object.getOwnPropertySymbols(e);o<t.length;o++)r.indexOf(t[o])<0&&Object.prototype.propertyIsEnumerable.call(e,t[o])&&(n[t[o]]=e[t[o]])}return n}function t(r,n){return t=>{const o=document.createElement("div");return e.render(e.h(n,t),o),r.register(o,()=>e.render(null,o)),o}}function o(r,n,t,o){const s="cell"===t?r.cellRendererCache:r.headerRendererCache,d=s.get(n);if(d)return d.component=o,d.wrapped;const l={component:o,wrapped:null},i=n=>{const t=document.createElement("div");return e.render(e.h(l.component,n),t),r.register(t,()=>e.render(null,t)),t};return l.wrapped=i,s.set(n,l),i}function s(r,n){const t=document.createElement("div");return e.render(n,t),r.register(t,()=>e.render(null,t)),t}function d(r){const n=document.createElement("div");e.render(r,n);const t=n.innerHTML;return e.render(null,n),t}function l(e){return"object"==typeof e||"function"==typeof e}function i(e,r){const{cellRenderer:t,headerRenderer:s,children:d,nestedTable:l}=e,u=n(e,["cellRenderer","headerRenderer","children","nestedTable"]),a=String(e.accessor),p=Object.assign({},u);if(t&&(p.cellRenderer="object"==typeof t?o(r,a,"cell",t):t),s&&(p.headerRenderer="object"==typeof s?o(r,a,"header",s):s),d&&(p.children=d.map(e=>i(e,r))),l){const e=Object.assign(Object.assign({},l),{rows:[]});p.nestedTable=c(e,r)}return p}function u(e){var r;const n=null!==(r=e.columns)&&void 0!==r?r:e.defaultHeaders;if(!n)throw new Error("SimpleTable requires `columns` or `defaultHeaders`");return n}function c(e,o){const{rows:c,footerRenderer:a,emptyStateRenderer:p,errorStateRenderer:f,loadingStateRenderer:m,tableEmptyStateRenderer:R,headerDropdown:h,columnEditorConfig:b,icons:g,rowButtons:O,enableColumnEditor:w,editColumns:v,enableColumnEditorInitOpen:y,editColumnsInitOpen:E,enablePagination:C,shouldPaginate:S,onTableReady:P,onGridReady:j,hoverRowBackground:T,useHoverRowBackground:I,oddColumnBackground:B,useOddColumnBackground:A,oddEvenRowBackground:_,useOddEvenRowBackground:k}=e,H=n(e,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),x=u(e);o.pruneRendererCaches(r.collectHeaderAccessors(x));const L=Object.assign(Object.assign({},H),{rows:c,defaultHeaders:x.map(e=>i(e,o)),editColumns:null!=w?w:v,editColumnsInitOpen:null!=y?y:E,shouldPaginate:null!=C?C:S,onGridReady:null!=P?P:j,useHoverRowBackground:null!=T?T:I,useOddColumnBackground:null!=B?B:A,useOddEvenRowBackground:null!=_?_:k,onRendererHostDiscard:o.disposeHost});if(void 0!==a&&(L.footerRenderer="object"==typeof a?t(o,a):a),void 0!==p)if(l(p))L.emptyStateRenderer=t(o,p);else{const e=p;L.emptyStateRenderer=()=>s(o,e)}if(void 0!==f)if(l(f))L.errorStateRenderer=t(o,f);else{const e=f;L.errorStateRenderer=()=>s(o,e)}if(void 0!==m)if(l(m))L.loadingStateRenderer=t(o,m);else{const e=m;L.loadingStateRenderer=()=>s(o,e)}return void 0!==R&&(L.tableEmptyStateRenderer=null===R?null:R instanceof HTMLElement||"string"==typeof R?R:s(o,R)),void 0!==h&&(L.headerDropdown=t(o,h)),void 0!==b&&(L.columnEditorConfig=function(e,r){const{rowRenderer:o,customRenderer:s}=e,d=n(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},d),o?{rowRenderer:t(r,o)}:{}),s?{customRenderer:t(r,s)}:{})}(b,o)),void 0!==g&&(L.icons=function(e){const r={};for(const[n,t]of Object.entries(e))null!=t&&(r[n]="string"==typeof t||t instanceof HTMLElement||t instanceof SVGElement?t:d(t));return r}(g)),void 0!==O&&(L.rowButtons=O.map(e=>t(o,e))),L}"function"==typeof SuppressedError&&SuppressedError;const a="data-st-mount-id";class p{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const r=[],n=e.getAttribute(a);null!==n&&r.push(n),e.querySelectorAll(`[${a}]`).forEach(e=>{const n=e.getAttribute(a);null!==n&&r.push(n)});for(const e of r){const r=this.entries.get(e);r&&(this.entries.delete(e),r())}}}register(e,r){const n="st-mount-"+this.nextId++;e.setAttribute(a,n),this.entries.set(n,r)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const r of this.cellRendererCache.keys())e.has(r)||this.cellRendererCache.delete(r);for(const r of this.headerRendererCache.keys())e.has(r)||this.headerRendererCache.delete(r)}get size(){return this.entries.size}}function f(r){const n={};for(const t in r)n[e.camelize(t)]=""===r[t]||r[t];return n}const m=e.defineComponent({name:"SimpleTable",props:{},inheritAttrs:!1,setup(n,{attrs:t,expose:o}){const s=e.ref(null);let d=null;const l=new p;let i,a;return e.onMounted(()=>{if(!s.value)return;const e=f(t);d=new r.SimpleTableVanilla(s.value,c(e,l)),d.mount(),i=u(e),a=e.rows}),e.watch(t,function(){if(!d)return;const e=f(t),n=c(e,l),o=Object.assign({},n),s=u(e),p=r.headersStructurallyEqual(i,s);i=s,p&&delete o.defaultHeaders;const m=r.rowsShallowUnchanged(a,e.rows,e.getRowId);a=e.rows,m&&delete o.rows,d.update(o)},{deep:!0}),e.onUnmounted(()=>{null==d||d.destroy(),d=null,i=void 0,a=void 0,l.clear()}),o({getAPI:()=>{var e;return null!==(e=null==d?void 0:d.getAPI())&&void 0!==e?e:null}}),()=>e.h("div",{ref:s})}});Object.defineProperty(exports,"PIVOT_ACCESSOR_PREFIX",{enumerable:!0,get:function(){return r.PIVOT_ACCESSOR_PREFIX}}),Object.defineProperty(exports,"PIVOT_BLANK_LABEL",{enumerable:!0,get:function(){return r.PIVOT_BLANK_LABEL}}),Object.defineProperty(exports,"PIVOT_CHILDREN_KEY",{enumerable:!0,get:function(){return r.PIVOT_CHILDREN_KEY}}),Object.defineProperty(exports,"PIVOT_IS_TOTAL_KEY",{enumerable:!0,get:function(){return r.PIVOT_IS_TOTAL_KEY}}),Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return r.asRows}}),Object.defineProperty(exports,"buildPivotAccessor",{enumerable:!0,get:function(){return r.buildPivotAccessor}}),Object.defineProperty(exports,"buildPivotRowTotalAccessor",{enumerable:!0,get:function(){return r.buildPivotRowTotalAccessor}}),Object.defineProperty(exports,"pivotRows",{enumerable:!0,get:function(){return r.pivotRows}}),exports.SimpleTable=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),r=require("simple-table-core");function t(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)r.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(t[n[o]]=e[n[o]])}return t}function n(r,t){return n=>{const o=document.createElement("div");return e.render(e.h(t,n),o),r.register(o,()=>e.render(null,o)),o}}function o(r,t,n,o){const s="cell"===n?r.cellRendererCache:r.headerRendererCache,c=s.get(t);if(c)return c.component=o,c.wrapped;const i={component:o,wrapped:null},d=t=>{const n=document.createElement("div");return e.render(e.h(i.component,t),n),r.register(n,()=>e.render(null,n)),n};return i.wrapped=d,s.set(t,i),d}function s(r,t){const n=document.createElement("div");return e.render(t,n),r.register(n,()=>e.render(null,n)),n}function c(r){const t=document.createElement("div");e.render(r,t);const n=t.innerHTML;return e.render(null,t),n}function i(e){return"object"==typeof e||"function"==typeof e}function d(e,r){const{cellRenderer:n,headerRenderer:s,children:c,nestedTable:i}=e,l=t(e,["cellRenderer","headerRenderer","children","nestedTable"]),u=String(e.accessor),p=Object.assign({},l);if(n&&(p.cellRenderer="object"==typeof n?o(r,u,"cell",n):n),s&&(p.headerRenderer="object"==typeof s?o(r,u,"header",s):s),c&&(p.children=c.map(e=>d(e,r))),i){const e=Object.assign(Object.assign({},i),{rows:[]});p.nestedTable=a(e,r)}return p}function l(e){const r=e.columns;if(!r)throw new Error("SimpleTable requires `columns`");return r}function a(e,o){const{rows:a,footerRenderer:u,emptyStateRenderer:p,errorStateRenderer:f,loadingStateRenderer:b,tableEmptyStateRenderer:m,headerDropdown:R,columnEditorConfig:h,icons:g,rowButtons:w,enableColumnEditor:O,enableColumnEditorInitOpen:y,enablePagination:v,onTableReady:E,hoverRowBackground:S,oddColumnBackground:C,oddEvenRowBackground:P}=e,j=t(e,["columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","enableColumnEditor","enableColumnEditorInitOpen","enablePagination","onTableReady","hoverRowBackground","oddColumnBackground","oddEvenRowBackground"]),T=l(e);o.pruneRendererCaches(r.collectHeaderAccessors(T));const I=Object.assign(Object.assign({},j),{rows:a,columns:T.map(e=>d(e,o)),enableColumnEditor:O,enableColumnEditorInitOpen:y,enablePagination:v,onTableReady:E,hoverRowBackground:S,oddColumnBackground:C,oddEvenRowBackground:P,onRendererHostDiscard:o.disposeHost});if(void 0!==u&&(I.footerRenderer="object"==typeof u?n(o,u):u),void 0!==p)if(i(p))I.emptyStateRenderer=n(o,p);else{const e=p;I.emptyStateRenderer=()=>s(o,e)}if(void 0!==f)if(i(f))I.errorStateRenderer=n(o,f);else{const e=f;I.errorStateRenderer=()=>s(o,e)}if(void 0!==b)if(i(b))I.loadingStateRenderer=n(o,b);else{const e=b;I.loadingStateRenderer=()=>s(o,e)}return void 0!==m&&(I.tableEmptyStateRenderer=null===m?null:m instanceof HTMLElement||"string"==typeof m?m:s(o,m)),void 0!==R&&(I.headerDropdown=n(o,R)),void 0!==h&&(I.columnEditorConfig=function(e,r){const{rowRenderer:o,customRenderer:s}=e,c=t(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},c),o?{rowRenderer:n(r,o)}:{}),s?{customRenderer:n(r,s)}:{})}(h,o)),void 0!==g&&(I.icons=function(e){const r={};for(const[t,n]of Object.entries(e))null!=n&&(r[t]="string"==typeof n||n instanceof HTMLElement||n instanceof SVGElement?n:c(n));return r}(g)),void 0!==w&&(I.rowButtons=w.map(e=>n(o,e))),I}"function"==typeof SuppressedError&&SuppressedError;const u="data-st-mount-id";class p{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const r=[],t=e.getAttribute(u);null!==t&&r.push(t),e.querySelectorAll(`[${u}]`).forEach(e=>{const t=e.getAttribute(u);null!==t&&r.push(t)});for(const e of r){const r=this.entries.get(e);r&&(this.entries.delete(e),r())}}}register(e,r){const t="st-mount-"+this.nextId++;e.setAttribute(u,t),this.entries.set(t,r)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const r of this.cellRendererCache.keys())e.has(r)||this.cellRendererCache.delete(r);for(const r of this.headerRendererCache.keys())e.has(r)||this.headerRendererCache.delete(r)}get size(){return this.entries.size}}function f(r){const t={};for(const n in r)t[e.camelize(n)]=""===r[n]||r[n];return t}const b=e.defineComponent({name:"SimpleTable",props:{},inheritAttrs:!1,setup(t,{attrs:n,expose:o}){const s=e.ref(null);let c=null;const i=new p;let d,u;return e.onMounted(()=>{if(!s.value)return;const e=f(n);c=new r.SimpleTableVanilla(s.value,a(e,i)),c.mount(),d=l(e),u=e.rows}),e.watch(n,function(){if(!c)return;const e=f(n),t=a(e,i),o=Object.assign({},t),s=l(e),p=r.headersStructurallyEqual(d,s);d=s,p&&delete o.columns;const b=r.rowsShallowUnchanged(u,e.rows,e.getRowId);u=e.rows,b&&delete o.rows,c.update(o)},{deep:!0}),e.onUnmounted(()=>{null==c||c.destroy(),c=null,d=void 0,u=void 0,i.clear()}),o({getAPI:()=>{var e;return null!==(e=null==c?void 0:c.getAPI())&&void 0!==e?e:null}}),()=>e.h("div",{ref:s})}});Object.defineProperty(exports,"PIVOT_ACCESSOR_PREFIX",{enumerable:!0,get:function(){return r.PIVOT_ACCESSOR_PREFIX}}),Object.defineProperty(exports,"PIVOT_BLANK_LABEL",{enumerable:!0,get:function(){return r.PIVOT_BLANK_LABEL}}),Object.defineProperty(exports,"PIVOT_CHILDREN_KEY",{enumerable:!0,get:function(){return r.PIVOT_CHILDREN_KEY}}),Object.defineProperty(exports,"PIVOT_IS_TOTAL_KEY",{enumerable:!0,get:function(){return r.PIVOT_IS_TOTAL_KEY}}),Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return r.asRows}}),Object.defineProperty(exports,"buildPivotAccessor",{enumerable:!0,get:function(){return r.buildPivotAccessor}}),Object.defineProperty(exports,"buildPivotRowTotalAccessor",{enumerable:!0,get:function(){return r.buildPivotRowTotalAccessor}}),Object.defineProperty(exports,"pivotRows",{enumerable:!0,get:function(){return r.pivotRows}}),exports.SimpleTable=b;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.es.js CHANGED
@@ -1,2 +1,2 @@
1
- import{render as e,h as n,defineComponent as t,ref as r,onMounted as o,watch as s,onUnmounted as d,camelize as l}from"vue";import{collectHeaderAccessors as i,SimpleTableVanilla as c,headersStructurallyEqual as a,rowsShallowUnchanged as u}from"simple-table-core";export{PIVOT_ACCESSOR_PREFIX,PIVOT_BLANK_LABEL,PIVOT_CHILDREN_KEY,PIVOT_IS_TOTAL_KEY,asRows,buildPivotAccessor,buildPivotRowTotalAccessor,pivotRows}from"simple-table-core";function f(e,n){var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(t[r[o]]=e[r[o]])}return t}function p(t,r){return o=>{const s=document.createElement("div");return e(n(r,o),s),t.register(s,()=>e(null,s)),s}}function R(t,r,o,s){const d="cell"===o?t.cellRendererCache:t.headerRendererCache,l=d.get(r);if(l)return l.component=s,l.wrapped;const i={component:s,wrapped:null},c=r=>{const o=document.createElement("div");return e(n(i.component,r),o),t.register(o,()=>e(null,o)),o};return i.wrapped=c,d.set(r,i),c}function m(n,t){const r=document.createElement("div");return e(t,r),n.register(r,()=>e(null,r)),r}function h(n){const t=document.createElement("div");e(n,t);const r=t.innerHTML;return e(null,t),r}function g(e){return"object"==typeof e||"function"==typeof e}function b(e,n){const{cellRenderer:t,headerRenderer:r,children:o,nestedTable:s}=e,d=f(e,["cellRenderer","headerRenderer","children","nestedTable"]),l=String(e.accessor),i=Object.assign({},d);if(t&&(i.cellRenderer="object"==typeof t?R(n,l,"cell",t):t),r&&(i.headerRenderer="object"==typeof r?R(n,l,"header",r):r),o&&(i.children=o.map(e=>b(e,n))),s){const e=Object.assign(Object.assign({},s),{rows:[]});i.nestedTable=v(e,n)}return i}function w(e){var n;const t=null!==(n=e.columns)&&void 0!==n?n:e.defaultHeaders;if(!t)throw new Error("SimpleTable requires `columns` or `defaultHeaders`");return t}function v(e,n){const{rows:t,footerRenderer:r,emptyStateRenderer:o,errorStateRenderer:s,loadingStateRenderer:d,tableEmptyStateRenderer:l,headerDropdown:c,columnEditorConfig:a,icons:u,rowButtons:R,enableColumnEditor:v,editColumns:O,enableColumnEditorInitOpen:y,editColumnsInitOpen:C,enablePagination:E,shouldPaginate:S,onTableReady:B,onGridReady:j,hoverRowBackground:I,useHoverRowBackground:k,oddColumnBackground:P,useOddColumnBackground:T,oddEvenRowBackground:H,useOddEvenRowBackground:A}=e,_=f(e,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),L=w(e);n.pruneRendererCaches(i(L));const x=Object.assign(Object.assign({},_),{rows:t,defaultHeaders:L.map(e=>b(e,n)),editColumns:null!=v?v:O,editColumnsInitOpen:null!=y?y:C,shouldPaginate:null!=E?E:S,onGridReady:null!=B?B:j,useHoverRowBackground:null!=I?I:k,useOddColumnBackground:null!=P?P:T,useOddEvenRowBackground:null!=H?H:A,onRendererHostDiscard:n.disposeHost});if(void 0!==r&&(x.footerRenderer="object"==typeof r?p(n,r):r),void 0!==o)if(g(o))x.emptyStateRenderer=p(n,o);else{const e=o;x.emptyStateRenderer=()=>m(n,e)}if(void 0!==s)if(g(s))x.errorStateRenderer=p(n,s);else{const e=s;x.errorStateRenderer=()=>m(n,e)}if(void 0!==d)if(g(d))x.loadingStateRenderer=p(n,d);else{const e=d;x.loadingStateRenderer=()=>m(n,e)}return void 0!==l&&(x.tableEmptyStateRenderer=null===l?null:l instanceof HTMLElement||"string"==typeof l?l:m(n,l)),void 0!==c&&(x.headerDropdown=p(n,c)),void 0!==a&&(x.columnEditorConfig=function(e,n){const{rowRenderer:t,customRenderer:r}=e,o=f(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),t?{rowRenderer:p(n,t)}:{}),r?{customRenderer:p(n,r)}:{})}(a,n)),void 0!==u&&(x.icons=function(e){const n={};for(const[t,r]of Object.entries(e))null!=r&&(n[t]="string"==typeof r||r instanceof HTMLElement||r instanceof SVGElement?r:h(r));return n}(u)),void 0!==R&&(x.rowButtons=R.map(e=>p(n,e))),x}"function"==typeof SuppressedError&&SuppressedError;const O="data-st-mount-id";class y{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const n=[],t=e.getAttribute(O);null!==t&&n.push(t),e.querySelectorAll(`[${O}]`).forEach(e=>{const t=e.getAttribute(O);null!==t&&n.push(t)});for(const e of n){const n=this.entries.get(e);n&&(this.entries.delete(e),n())}}}register(e,n){const t="st-mount-"+this.nextId++;e.setAttribute(O,t),this.entries.set(t,n)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const n of this.cellRendererCache.keys())e.has(n)||this.cellRendererCache.delete(n);for(const n of this.headerRendererCache.keys())e.has(n)||this.headerRendererCache.delete(n)}get size(){return this.entries.size}}function C(e){const n={};for(const t in e)n[l(t)]=""===e[t]||e[t];return n}const E=t({name:"SimpleTable",props:{},inheritAttrs:!1,setup(e,{attrs:t,expose:l}){const i=r(null);let f=null;const p=new y;let R,m;return o(()=>{if(!i.value)return;const e=C(t);f=new c(i.value,v(e,p)),f.mount(),R=w(e),m=e.rows}),s(t,function(){if(!f)return;const e=C(t),n=v(e,p),r=Object.assign({},n),o=w(e),s=a(R,o);R=o,s&&delete r.defaultHeaders;const d=u(m,e.rows,e.getRowId);m=e.rows,d&&delete r.rows,f.update(r)},{deep:!0}),d(()=>{null==f||f.destroy(),f=null,R=void 0,m=void 0,p.clear()}),l({getAPI:()=>{var e;return null!==(e=null==f?void 0:f.getAPI())&&void 0!==e?e:null}}),()=>n("div",{ref:i})}});export{E as SimpleTable};
1
+ import{render as e,h as t,defineComponent as n,ref as r,onMounted as o,watch as s,onUnmounted as c,camelize as i}from"vue";import{collectHeaderAccessors as d,SimpleTableVanilla as l,headersStructurallyEqual as a,rowsShallowUnchanged as u}from"simple-table-core";export{PIVOT_ACCESSOR_PREFIX,PIVOT_BLANK_LABEL,PIVOT_CHILDREN_KEY,PIVOT_IS_TOTAL_KEY,asRows,buildPivotAccessor,buildPivotRowTotalAccessor,pivotRows}from"simple-table-core";function p(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}function f(n,r){return o=>{const s=document.createElement("div");return e(t(r,o),s),n.register(s,()=>e(null,s)),s}}function m(n,r,o,s){const c="cell"===o?n.cellRendererCache:n.headerRendererCache,i=c.get(r);if(i)return i.component=s,i.wrapped;const d={component:s,wrapped:null},l=r=>{const o=document.createElement("div");return e(t(d.component,r),o),n.register(o,()=>e(null,o)),o};return d.wrapped=l,c.set(r,d),l}function R(t,n){const r=document.createElement("div");return e(n,r),t.register(r,()=>e(null,r)),r}function h(t){const n=document.createElement("div");e(t,n);const r=n.innerHTML;return e(null,n),r}function b(e){return"object"==typeof e||"function"==typeof e}function g(e,t){const{cellRenderer:n,headerRenderer:r,children:o,nestedTable:s}=e,c=p(e,["cellRenderer","headerRenderer","children","nestedTable"]),i=String(e.accessor),d=Object.assign({},c);if(n&&(d.cellRenderer="object"==typeof n?m(t,i,"cell",n):n),r&&(d.headerRenderer="object"==typeof r?m(t,i,"header",r):r),o&&(d.children=o.map(e=>g(e,t))),s){const e=Object.assign(Object.assign({},s),{rows:[]});d.nestedTable=v(e,t)}return d}function w(e){const t=e.columns;if(!t)throw new Error("SimpleTable requires `columns`");return t}function v(e,t){const{rows:n,footerRenderer:r,emptyStateRenderer:o,errorStateRenderer:s,loadingStateRenderer:c,tableEmptyStateRenderer:i,headerDropdown:l,columnEditorConfig:a,icons:u,rowButtons:m,enableColumnEditor:v,enableColumnEditorInitOpen:E,enablePagination:y,onTableReady:O,hoverRowBackground:C,oddColumnBackground:S,oddEvenRowBackground:j}=e,T=p(e,["columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","enableColumnEditor","enableColumnEditorInitOpen","enablePagination","onTableReady","hoverRowBackground","oddColumnBackground","oddEvenRowBackground"]),I=w(e);t.pruneRendererCaches(d(I));const P=Object.assign(Object.assign({},T),{rows:n,columns:I.map(e=>g(e,t)),enableColumnEditor:v,enableColumnEditorInitOpen:E,enablePagination:y,onTableReady:O,hoverRowBackground:C,oddColumnBackground:S,oddEvenRowBackground:j,onRendererHostDiscard:t.disposeHost});if(void 0!==r&&(P.footerRenderer="object"==typeof r?f(t,r):r),void 0!==o)if(b(o))P.emptyStateRenderer=f(t,o);else{const e=o;P.emptyStateRenderer=()=>R(t,e)}if(void 0!==s)if(b(s))P.errorStateRenderer=f(t,s);else{const e=s;P.errorStateRenderer=()=>R(t,e)}if(void 0!==c)if(b(c))P.loadingStateRenderer=f(t,c);else{const e=c;P.loadingStateRenderer=()=>R(t,e)}return void 0!==i&&(P.tableEmptyStateRenderer=null===i?null:i instanceof HTMLElement||"string"==typeof i?i:R(t,i)),void 0!==l&&(P.headerDropdown=f(t,l)),void 0!==a&&(P.columnEditorConfig=function(e,t){const{rowRenderer:n,customRenderer:r}=e,o=p(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),n?{rowRenderer:f(t,n)}:{}),r?{customRenderer:f(t,r)}:{})}(a,t)),void 0!==u&&(P.icons=function(e){const t={};for(const[n,r]of Object.entries(e))null!=r&&(t[n]="string"==typeof r||r instanceof HTMLElement||r instanceof SVGElement?r:h(r));return t}(u)),void 0!==m&&(P.rowButtons=m.map(e=>f(t,e))),P}"function"==typeof SuppressedError&&SuppressedError;const E="data-st-mount-id";class y{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const t=[],n=e.getAttribute(E);null!==n&&t.push(n),e.querySelectorAll(`[${E}]`).forEach(e=>{const n=e.getAttribute(E);null!==n&&t.push(n)});for(const e of t){const t=this.entries.get(e);t&&(this.entries.delete(e),t())}}}register(e,t){const n="st-mount-"+this.nextId++;e.setAttribute(E,n),this.entries.set(n,t)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const t of this.cellRendererCache.keys())e.has(t)||this.cellRendererCache.delete(t);for(const t of this.headerRendererCache.keys())e.has(t)||this.headerRendererCache.delete(t)}get size(){return this.entries.size}}function O(e){const t={};for(const n in e)t[i(n)]=""===e[n]||e[n];return t}const C=n({name:"SimpleTable",props:{},inheritAttrs:!1,setup(e,{attrs:n,expose:i}){const d=r(null);let p=null;const f=new y;let m,R;return o(()=>{if(!d.value)return;const e=O(n);p=new l(d.value,v(e,f)),p.mount(),m=w(e),R=e.rows}),s(n,function(){if(!p)return;const e=O(n),t=v(e,f),r=Object.assign({},t),o=w(e),s=a(m,o);m=o,s&&delete r.columns;const c=u(R,e.rows,e.getRowId);R=e.rows,c&&delete r.rows,p.update(r)},{deep:!0}),c(()=>{null==p||p.destroy(),p=null,m=void 0,R=void 0,f.clear()}),i({getAPI:()=>{var e;return null!==(e=null==p?void 0:p.getAPI())&&void 0!==e?e:null}}),()=>t("div",{ref:d})}});export{C as SimpleTable};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1,6 +1,6 @@
1
- import type { SimpleTableConfig, HeaderObject } from "simple-table-core";
2
- import type { SimpleTableVueProps, VueHeaderObject } from "./types";
1
+ import type { SimpleTableConfig, ColumnDef } from "simple-table-core";
2
+ import type { SimpleTableVueProps, VueColumnDef } from "./types";
3
3
  import type { MountRegistry } from "./MountRegistry";
4
- /** Resolve preferred `columns` or legacy `defaultHeaders`. */
5
- export declare function resolveVueColumns(config: Pick<SimpleTableVueProps, "columns" | "defaultHeaders">): ReadonlyArray<HeaderObject | VueHeaderObject>;
4
+ /** Resolve column definitions. */
5
+ export declare function resolveVueColumns(config: Pick<SimpleTableVueProps, "columns">): ReadonlyArray<ColumnDef | VueColumnDef>;
6
6
  export declare function buildVanillaConfig(config: SimpleTableVueProps, registry: MountRegistry): SimpleTableConfig;
@@ -1,5 +1,5 @@
1
1
  export { default as SimpleTable } from "./SimpleTable";
2
2
  export { asRows } from "simple-table-core";
3
- export type { SimpleTableVueProps, TableInstance, VueHeaderObject, VueColumnDef, VueColumnEditorConfig, VueIconsConfig, VueIconElement, VueCellRenderer, VueHeaderRenderer, VueFooterRenderer, VueHeaderDropdown, VueColumnEditorRowRenderer, VueColumnEditorCustomRenderer, VueRowButton, VueLoadingStateRenderer, VueErrorStateRenderer, VueEmptyStateRenderer, } from "./types";
4
- export type { Accessor, AggregationConfig, AggregationType, AnimationsConfig, AutoSizeMode, ColumnDef, Cell, CellChangeProps, CellClickProps, CellRenderer, CellRendererProps, CellValue, ChartOptions, ColumnEditorConfig, ColumnEditorRowRenderer, ColumnEditorRowRendererComponents, ColumnEditorCustomRenderer, ColumnEditorCustomRendererProps, ColumnEditorRowRendererProps, ColumnEditorSearchFunction, ColumnType, ColumnVisibilityState, Comparator, ComparatorProps, CustomTheme, CustomThemeProps, EmptyStateRenderer, EmptyStateRendererProps, EnumOption, ErrorStateRenderer, ErrorStateRendererProps, ExportToCSVProps, ExportValueGetter, ExportValueProps, FilterCondition, FilterOperator, StringFilterOperator, NumberFilterOperator, BooleanFilterOperator, DateFilterOperator, EnumFilterOperator, FooterRendererProps, FooterPosition, GetRowId, GetRowIdParams, HeaderDropdown, HeaderDropdownProps, HeaderObject, HeaderRenderer, HeaderRendererComponents, HeaderRendererProps, IconsConfig, LoadingStateRenderer, LoadingStateRendererProps, OnRowGroupExpandProps, Pinned, PinnedSectionsState, PivotConfig, PivotValueConfig, PivotResult, QuickFilterConfig, QuickFilterGetter, QuickFilterGetterProps, QuickFilterMode, Row, RowButtonProps, RowId, RowSelectionChangeProps, RowSelectionMode, RowState, SetHeaderRenameProps, ShowWhen, SimpleTableConfig, SimpleTableProps, SortColumn, TableAPI, TableFilterState, TableRow, Theme, UpdateDataProps, ValueFormatter, ValueFormatterProps, ValueGetter, ValueGetterProps, } from "simple-table-core";
3
+ export type { SimpleTableVueProps, TableInstance, VueColumnDef, VueColumnEditorConfig, VueIconsConfig, VueIconElement, VueCellRenderer, VueHeaderRenderer, VueFooterRenderer, VueHeaderDropdown, VueColumnEditorRowRenderer, VueColumnEditorCustomRenderer, VueRowButton, VueLoadingStateRenderer, VueErrorStateRenderer, VueEmptyStateRenderer, } from "./types";
4
+ export type { Accessor, AggregationConfig, AggregationType, AnimationsConfig, AutoSizeMode, ColumnDef, Cell, CellChangeProps, CellClickProps, CellRenderer, CellRendererProps, CellValue, ChartOptions, ColumnEditorConfig, ColumnEditorRowRenderer, ColumnEditorRowRendererComponents, ColumnEditorCustomRenderer, ColumnEditorCustomRendererProps, ColumnEditorRowRendererProps, ColumnEditorSearchFunction, ColumnType, ColumnVisibilityState, Comparator, ComparatorProps, CustomTheme, CustomThemeProps, EmptyStateRenderer, EmptyStateRendererProps, EnumOption, ErrorStateRenderer, ErrorStateRendererProps, ExportToCSVProps, ExportValueGetter, ExportValueProps, FilterCondition, FilterOperator, StringFilterOperator, NumberFilterOperator, BooleanFilterOperator, DateFilterOperator, EnumFilterOperator, FooterRendererProps, FooterPosition, GetRowId, GetRowIdParams, HeaderDropdown, HeaderDropdownProps, HeaderRenderer, HeaderRendererComponents, HeaderRendererProps, IconsConfig, LoadingStateRenderer, LoadingStateRendererProps, OnRowGroupExpandProps, Pinned, PinnedSectionsState, PivotConfig, PivotValueConfig, PivotResult, QuickFilterConfig, QuickFilterGetter, QuickFilterGetterProps, QuickFilterMode, Row, RowButtonProps, RowId, RowSelectionChangeProps, RowSelectionMode, RowState, SetHeaderRenameProps, ShowWhen, SimpleTableConfig, SimpleTableProps, SortColumn, TableAPI, TableFilterState, TableRow, Theme, UpdateDataProps, ValueFormatter, ValueFormatterProps, ValueGetter, ValueGetterProps, } from "simple-table-core";
5
5
  export { pivotRows, buildPivotAccessor, buildPivotRowTotalAccessor, PIVOT_CHILDREN_KEY, PIVOT_IS_TOTAL_KEY, PIVOT_ACCESSOR_PREFIX, PIVOT_BLANK_LABEL, } from "simple-table-core";
@@ -1,5 +1,5 @@
1
1
  import type { Component, VNode } from "vue";
2
- import type { SimpleTableProps, SimpleTableConfig, HeaderObject, Row, TableAPI, CellRendererProps, HeaderRendererProps, FooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, ColumnEditorConfig, RowButtonProps } from "simple-table-core";
2
+ import type { SimpleTableProps, SimpleTableConfig, ColumnDef, Row, TableAPI, CellRendererProps, HeaderRendererProps, FooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, ColumnEditorConfig, RowButtonProps } from "simple-table-core";
3
3
  export interface TableInstance {
4
4
  mount(): void;
5
5
  update(config: Partial<SimpleTableConfig>): void;
@@ -35,26 +35,19 @@ export interface VueColumnEditorConfig extends Omit<ColumnEditorConfig, "rowRend
35
35
  customRenderer?: VueColumnEditorCustomRenderer;
36
36
  }
37
37
  /**
38
- * Column definition for `columns` / `defaultHeaders`: core column metadata with
38
+ * Column definition for `columns`: core column metadata with
39
39
  * Vue-only `cellRenderer` / `headerRenderer` / `children` / `nestedTable`.
40
- * `columns` / `defaultHeaders` also accept plain `HeaderObject[]` from shared configs.
40
+ * `columns` also accept plain `ColumnDef[]` from shared configs.
41
41
  */
42
- export interface VueHeaderObject extends Omit<HeaderObject, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
42
+ export interface VueColumnDef extends Omit<ColumnDef, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
43
43
  cellRenderer?: VueCellRenderer;
44
44
  headerRenderer?: VueHeaderRenderer;
45
- children?: VueHeaderObject[];
45
+ children?: VueColumnDef[];
46
46
  nestedTable?: Omit<SimpleTableVueProps, "rows" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer">;
47
47
  }
48
- /** Preferred name for Vue column definitions. Alias of {@link VueHeaderObject}. */
49
- export type VueColumnDef = VueHeaderObject;
50
- export interface SimpleTableVueProps extends Omit<SimpleTableProps, "rows" | "defaultHeaders" | "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rowButtons"> {
51
- /**
52
- * Column definitions.
53
- * @deprecated Prefer {@link columns}
54
- */
55
- defaultHeaders?: ReadonlyArray<HeaderObject | VueHeaderObject>;
56
- /** Column definitions. Preferred over `defaultHeaders`. */
57
- columns?: ReadonlyArray<HeaderObject | VueHeaderObject>;
48
+ export interface SimpleTableVueProps extends Omit<SimpleTableProps, "rows" | "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rowButtons"> {
49
+ /** Column definitions. */
50
+ columns?: ReadonlyArray<ColumnDef | VueColumnDef>;
58
51
  /** Row data: domain objects or core `Row[]`; cast inside the adapter. */
59
52
  rows: ReadonlyArray<Row> | ReadonlyArray<object>;
60
53
  footerRenderer?: VueFooterRenderer;
@@ -12,7 +12,7 @@ import type { MountRegistry } from "../MountRegistry";
12
12
  export declare function wrapVueRenderer<P extends object>(registry: MountRegistry, component: Component): (props: P) => HTMLElement;
13
13
  /**
14
14
  * Like {@link wrapVueRenderer}, but reuses one wrapper per accessor so
15
- * unstable column rebuilds keep a stable function identity on HeaderObject.
15
+ * unstable column rebuilds keep a stable function identity on ColumnDef.
16
16
  */
17
17
  export declare function wrapCachedVueRenderer<P extends object>(registry: MountRegistry, accessor: string, kind: "cell" | "header", component: Component): (props: P) => HTMLElement;
18
18
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simple-table/vue",
3
- "version": "4.0.3",
3
+ "version": "4.0.5",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/index.es.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "vue": ">=3.0.0"
33
33
  },
34
34
  "dependencies": {
35
- "simple-table-core": "4.0.3"
35
+ "simple-table-core": "4.0.5"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@rollup/plugin-alias": "4.0.0",