@simple-table/react 4.0.4 → 4.0.6

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("react/jsx-runtime"),n=require("react"),t=require("simple-table-core"),r=require("react-dom/server"),o=require("react-dom");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=s(n);function i(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 u({node:t}){const r=n.useRef(null);return n.useLayoutEffect(()=>{const e=r.current;if(e)return e.appendChild(t),()=>{t.parentNode===e&&e.removeChild(t)}},[t]),e.jsx("span",{ref:r,style:{display:"contents"}})}function a(n){if(null!=n)return"string"==typeof n?n:n instanceof Node?e.jsx(u,{node:n}):void 0}function l(e){return{sortIcon:a(null==e?void 0:e.sortIcon),filterIcon:a(null==e?void 0:e.filterIcon),collapseIcon:a(null==e?void 0:e.collapseIcon),labelContent:a(null==e?void 0:e.labelContent)}}function d(n){if(null!=n){if("string"==typeof n){if(""===n)return;return e.jsx("span",{style:{display:"contents"},dangerouslySetInnerHTML:{__html:n}})}return n instanceof Node?e.jsx(u,{node:n}):void 0}}"function"==typeof SuppressedError&&SuppressedError;const f=Symbol.for("simple-table.wrappedRenderer");function p(e){return"function"==typeof e&&Boolean(e[f])}function h(e){return e[f]=!0,e}function m(n,t){return p(t)?t:h(r=>{const o=document.createElement("div");return n.register(e.jsx(t,Object.assign({},r)),o),o})}function g(n,t){return p(t)?t:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:(c=r.components,{expandIcon:a(c.expandIcon),checkbox:a(c.checkbox),dragIcon:a(c.dragIcon),labelContent:a(c.labelContent),pinIcon:a(c.pinIcon)})});var c;return n.register(e.jsx(t,Object.assign({},s)),o),o})}function b(n,t){return p(t)?t:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{searchSection:r.searchSection?a(r.searchSection):null,listSection:a(r.listSection),resetSection:r.resetSection?a(r.resetSection):null});return n.register(e.jsx(t,Object.assign({},s)),o),o})}function R(n){const t=document.createElement("div");return t.innerHTML=r.renderToStaticMarkup(e.jsx(e.Fragment,{children:n})),function(e){const n=Array.from(e.childNodes).filter(e=>e.nodeType!==Node.TEXT_NODE||null!=e.textContent&&""!==e.textContent.trim());return 1===n.length&&n[0]instanceof HTMLElement?(e.removeChild(n[0]),n[0]):e}(t)}function O(n){return r.renderToStaticMarkup(e.jsx(e.Fragment,{children:n}))}function y(e){return"function"==typeof e}function v(n,t){const{cellRenderer:r,headerRenderer:o,children:s,nestedTable:c}=n,u=i(n,["cellRenderer","headerRenderer","children","nestedTable"]),a=String(n.accessor),d=Object.assign({},u);if(r&&(d.cellRenderer=function(n,t,r){if(p(r))return r;const o=n.cellRendererCache.get(t);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null},c=h(t=>{const r=s.component,o=document.createElement("div");return o.style.display="contents",n.register(e.jsx(r,Object.assign({},t)),o),o});return s.wrapped=c,n.cellRendererCache.set(t,s),c}(t,a,r)),o&&(d.headerRenderer=function(n,t,r){if(p(r))return r;const o=n.headerRendererCache.get(t);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null};let c=null;const i=h(t=>{const r=s.component,o=Object.assign(Object.assign({},t),{components:l(t.components)}),i=e.jsx(r,Object.assign({},o));return c&&n.update(c,i)||(c=document.createElement("div"),n.register(i,c)),c});return s.wrapped=i,n.headerRendererCache.set(t,s),i}(t,a,o)),s&&(d.children=s.map(e=>v(e,t))),c){const e=Object.assign(Object.assign({},c),{rows:[]});d.nestedTable=C(e,t)}return d}function j(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 C(n,r){const{rows:o,footerRenderer:s,emptyStateRenderer:c,errorStateRenderer:u,loadingStateRenderer:a,tableEmptyStateRenderer:f,headerDropdown:C,columnEditorConfig:S,icons:E,rowButtons:w,onColumnOrderChange:I,onColumnWidthChange:x,onHeaderEdit:P,onColumnSelect:T,enableColumnEditor:A,editColumns:B,enableColumnEditorInitOpen:k,editColumnsInitOpen:_,enablePagination:H,shouldPaginate:L,onTableReady:D,onGridReady:M,hoverRowBackground:N,useHoverRowBackground:V,oddColumnBackground:q,useOddColumnBackground:F,oddEvenRowBackground:K,useOddEvenRowBackground:G}=n,Y=i(n,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),z=j(n);r.pruneRendererCaches(t.collectHeaderAccessors(z));const W=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Y),{rows:o,defaultHeaders:z.map(e=>v(e,r)),editColumns:null!=A?A:B,editColumnsInitOpen:null!=k?k:_,shouldPaginate:null!=H?H:L,onGridReady:null!=D?D:M,useHoverRowBackground:null!=N?N:V,useOddColumnBackground:null!=q?q:F,useOddEvenRowBackground:null!=K?K:G,onRendererHostDiscard:r.disposeHost}),I?{onColumnOrderChange:e=>I(e)}:{}),x?{onColumnWidthChange:e=>x(e)}:{}),P?{onHeaderEdit:(e,n)=>P(e,n)}:{}),T?{onColumnSelect:e=>T(e)}:{});if(void 0!==s&&(W.footerRenderer=function(n,t){return p(t)?t:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{nextIcon:d((c={nextIcon:r.nextIcon,prevIcon:r.prevIcon}).nextIcon),prevIcon:d(c.prevIcon)});var c;return n.register(e.jsx(t,Object.assign({},s)),o),o})}(r,s)),void 0!==c)if(y(c))W.emptyStateRenderer=m(r,c);else{const e=c;W.emptyStateRenderer=()=>R(e)}if(void 0!==u)if(y(u))W.errorStateRenderer=m(r,u);else{const e=u;W.errorStateRenderer=()=>R(e)}if(void 0!==a)if(y(a))W.loadingStateRenderer=m(r,a);else{const e=a;W.loadingStateRenderer=()=>R(e)}return void 0!==f&&(W.tableEmptyStateRenderer=null===f?null:R(f)),void 0!==C&&(W.headerDropdown=function(n,t){return p(t)?t:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:l(r.components)});return n.register(e.jsx(t,Object.assign({},s)),o),o})}(r,C)),void 0!==S&&(W.columnEditorConfig=function(e,n){const{rowRenderer:t,customRenderer:r}=e,o=i(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),t?{rowRenderer:g(n,t)}:{}),r?{customRenderer:b(n,r)}:{})}(S,r)),void 0!==E&&(W.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:O(r));return n}(E)),void 0!==w&&(W.rowButtons=w.map(n=>function(n,t){return p(t)?t:h(r=>{const o=document.createElement("div");return o.style.display="contents",n.register(e.jsx(t,Object.assign({},r)),o),o})}(r,n))),W}const S="data-st-portal-id";class E{constructor(){this.entries=new Map,this.listeners=new Set,this.nextId=0,this.cachedSnapshot=[],this.snapshotDirty=!0,this.emitScheduled=!1,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const n=[],t=e.getAttribute(S);null!==t&&n.push(t),e.querySelectorAll(`[${S}]`).forEach(e=>{const t=e.getAttribute(S);null!==t&&n.push(t)});for(const e of n)this.unregister(e)},this.subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.getSnapshot=()=>(this.snapshotDirty&&(this.cachedSnapshot=Array.from(this.entries.values()),this.snapshotDirty=!1),this.cachedSnapshot)}register(e,n){const t="st-portal-"+this.nextId++;return n.setAttribute(S,t),this.entries.set(t,{id:t,container:n,node:e}),this.scheduleEmit(),{id:t,unregister:()=>this.unregister(t)}}update(e,n){const t=e.getAttribute(S);if(null===t)return!1;const r=this.entries.get(t);return!(!r||r.container!==e||(r.node=n,this.scheduleEmit(),0))}unregister(e){this.entries.delete(e)&&this.scheduleEmit()}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear(),0!==this.entries.size&&(this.entries.clear(),this.emit())}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)}emit(){this.snapshotDirty=!0;for(const e of this.listeners)e()}scheduleEmit(){this.emitScheduled||(this.emitScheduled=!0,queueMicrotask(()=>{this.emitScheduled=!1,this.emit()}))}}class w extends c.default.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){console.error("[simple-table] A custom renderer threw while rendering:",e)}render(){return this.state.hasError?null:this.props.children}}const I=c.default.forwardRef(function(r,s){const c=n.useRef(null),i=n.useRef(null);null===i.current&&(i.current=new E);const u=i.current,a=n.useRef(null),l=n.useRef(void 0),d=n.useRef(void 0),f=n.useRef(null),p=r;n.useLayoutEffect(()=>{const e=c.current;if(!e)return;const n=new t.SimpleTableVanilla(e,C(p,u));if(n.mount(),a.current=n,f.current=p,l.current=j(p),d.current=p.rows,s){const e=n.getAPI();"function"==typeof s?s(e):s.current=e}return()=>{n.destroy(),a.current=null,l.current=void 0,d.current=void 0,f.current=null,u.clear(),s&&"function"!=typeof s&&(s.current=null)}},[]),n.useLayoutEffect(()=>{const e=a.current;if(!e)return;if(null!==f.current&&!function(e,n){const t=new Set([...Object.keys(e),...Object.keys(n)]);for(const r of t)if(e[r]!==n[r])return!0;return!1}(f.current,p))return;f.current=p;const n=C(p,u),r=Object.assign({},n),o=j(p),s=t.headersStructurallyEqual(l.current,o);l.current=o,s&&delete r.defaultHeaders;const c=t.rowsShallowUnchanged(d.current,p.rows,p.getRowId);d.current=p.rows,c&&delete r.rows,e.update(r)},[p]);const h=function(t){return n.useSyncExternalStore(t.subscribe,t.getSnapshot,t.getSnapshot).map(n=>o.createPortal(e.jsx(w,{children:n.node}),n.container,n.id))}(u),m=Array.isArray(h)&&h.length>0,g=n.useRef(!1),b=n.useRef(Boolean(p.isLoading));return n.useLayoutEffect(()=>{var e,n;const t=a.current;if(!t)return;const r=Boolean(p.isLoading),o=b.current&&!r;b.current=r,o?null===(e=t.refitAutoSizeColumns)||void 0===e||e.call(t):!g.current&&m&&(g.current=!0,null===(n=t.refitAutoSizeColumns)||void 0===n||n.call(t))},[m,p.isLoading]),e.jsxs(e.Fragment,{children:[e.jsx("div",{ref:c}),h]})});I.displayName="SimpleTable",Object.defineProperty(exports,"PIVOT_ACCESSOR_PREFIX",{enumerable:!0,get:function(){return t.PIVOT_ACCESSOR_PREFIX}}),Object.defineProperty(exports,"PIVOT_BLANK_LABEL",{enumerable:!0,get:function(){return t.PIVOT_BLANK_LABEL}}),Object.defineProperty(exports,"PIVOT_CHILDREN_KEY",{enumerable:!0,get:function(){return t.PIVOT_CHILDREN_KEY}}),Object.defineProperty(exports,"PIVOT_IS_TOTAL_KEY",{enumerable:!0,get:function(){return t.PIVOT_IS_TOTAL_KEY}}),Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return t.asRows}}),Object.defineProperty(exports,"buildPivotAccessor",{enumerable:!0,get:function(){return t.buildPivotAccessor}}),Object.defineProperty(exports,"buildPivotRowTotalAccessor",{enumerable:!0,get:function(){return t.buildPivotRowTotalAccessor}}),Object.defineProperty(exports,"pivotRows",{enumerable:!0,get:function(){return t.pivotRows}}),exports.SimpleTable=I;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("simple-table-core"),r=require("react-dom/server"),o=require("react-dom");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=s(t);function i(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 u({node:n}){const r=t.useRef(null);return t.useLayoutEffect(()=>{const e=r.current;if(e)return e.appendChild(n),()=>{n.parentNode===e&&e.removeChild(n)}},[n]),e.jsx("span",{ref:r,style:{display:"contents"}})}function a(t){if(null!=t)return"string"==typeof t?t:t instanceof Node?e.jsx(u,{node:t}):void 0}function l(e){return{sortIcon:a(null==e?void 0:e.sortIcon),filterIcon:a(null==e?void 0:e.filterIcon),collapseIcon:a(null==e?void 0:e.collapseIcon),labelContent:a(null==e?void 0:e.labelContent)}}function d(t){if(null!=t){if("string"==typeof t){if(""===t)return;return e.jsx("span",{style:{display:"contents"},dangerouslySetInnerHTML:{__html:t}})}return t instanceof Node?e.jsx(u,{node:t}):void 0}}"function"==typeof SuppressedError&&SuppressedError;const f=Symbol.for("simple-table.wrappedRenderer");function p(e){return"function"==typeof e&&Boolean(e[f])}function h(e){return e[f]=!0,e}function m(t,n){return p(n)?n:h(r=>{const o=document.createElement("div");return t.register(e.jsx(n,Object.assign({},r)),o),o})}function g(t,n){return p(n)?n:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:(c=r.components,{expandIcon:a(c.expandIcon),checkbox:a(c.checkbox),dragIcon:a(c.dragIcon),labelContent:a(c.labelContent),pinIcon:a(c.pinIcon)})});var c;return t.register(e.jsx(n,Object.assign({},s)),o),o})}function b(t,n){return p(n)?n:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{searchSection:r.searchSection?a(r.searchSection):null,listSection:a(r.listSection),resetSection:r.resetSection?a(r.resetSection):null});return t.register(e.jsx(n,Object.assign({},s)),o),o})}function R(t){const n=document.createElement("div");return n.innerHTML=r.renderToStaticMarkup(e.jsx(e.Fragment,{children:t})),function(e){const t=Array.from(e.childNodes).filter(e=>e.nodeType!==Node.TEXT_NODE||null!=e.textContent&&""!==e.textContent.trim());return 1===t.length&&t[0]instanceof HTMLElement?(e.removeChild(t[0]),t[0]):e}(n)}function O(t){return r.renderToStaticMarkup(e.jsx(e.Fragment,{children:t}))}function y(e){return"function"==typeof e}function j(t,n){const{cellRenderer:r,headerRenderer:o,children:s,nestedTable:c}=t,u=i(t,["cellRenderer","headerRenderer","children","nestedTable"]),a=String(t.accessor),d=Object.assign({},u);if(r&&(d.cellRenderer=function(t,n,r){if(p(r))return r;const o=t.cellRendererCache.get(n);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null},c=h(n=>{const r=s.component,o=document.createElement("div");return o.style.display="contents",t.register(e.jsx(r,Object.assign({},n)),o),o});return s.wrapped=c,t.cellRendererCache.set(n,s),c}(n,a,r)),o&&(d.headerRenderer=function(t,n,r){if(p(r))return r;const o=t.headerRendererCache.get(n);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null};let c=null;const i=h(n=>{const r=s.component,o=Object.assign(Object.assign({},n),{components:l(n.components)}),i=e.jsx(r,Object.assign({},o));return c&&t.update(c,i)||(c=document.createElement("div"),t.register(i,c)),c});return s.wrapped=i,t.headerRendererCache.set(n,s),i}(n,a,o)),s&&(d.children=s.map(e=>j(e,n))),c){const e=Object.assign(Object.assign({},c),{rows:[]});d.nestedTable=E(e,n)}return d}function S(e){const t=e.columns;if(!t)throw new Error("SimpleTable requires `columns`");return t}function E(t,r){const{rows:o,footerRenderer:s,emptyStateRenderer:c,errorStateRenderer:u,loadingStateRenderer:a,tableEmptyStateRenderer:f,headerDropdown:E,columnEditorConfig:v,icons:C,rowButtons:w,onColumnOrderChange:x,onColumnWidthChange:I,onHeaderEdit:T,onColumnSelect:P,enableColumnEditor:A,enableColumnEditorInitOpen:_,enablePagination:L,onTableReady:B,hoverRowBackground:k,oddColumnBackground:D,oddEvenRowBackground:H}=t,M=i(t,["columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","enableColumnEditorInitOpen","enablePagination","onTableReady","hoverRowBackground","oddColumnBackground","oddEvenRowBackground"]),N=S(t);r.pruneRendererCaches(n.collectHeaderAccessors(N));const V=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},M),{rows:o,columns:N.map(e=>j(e,r)),enableColumnEditor:A,enableColumnEditorInitOpen:_,enablePagination:L,onTableReady:B,hoverRowBackground:k,oddColumnBackground:D,oddEvenRowBackground:H,onRendererHostDiscard:r.disposeHost}),x?{onColumnOrderChange:e=>x(e)}:{}),I?{onColumnWidthChange:e=>I(e)}:{}),T?{onHeaderEdit:(e,t)=>T(e,t)}:{}),P?{onColumnSelect:e=>P(e)}:{});if(void 0!==s&&(V.footerRenderer=function(t,n){return p(n)?n:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{nextIcon:d((c={nextIcon:r.nextIcon,prevIcon:r.prevIcon}).nextIcon),prevIcon:d(c.prevIcon)});var c;return t.register(e.jsx(n,Object.assign({},s)),o),o})}(r,s)),void 0!==c)if(y(c))V.emptyStateRenderer=m(r,c);else{const e=c;V.emptyStateRenderer=()=>R(e)}if(void 0!==u)if(y(u))V.errorStateRenderer=m(r,u);else{const e=u;V.errorStateRenderer=()=>R(e)}if(void 0!==a)if(y(a))V.loadingStateRenderer=m(r,a);else{const e=a;V.loadingStateRenderer=()=>R(e)}return void 0!==f&&(V.tableEmptyStateRenderer=null===f?null:R(f)),void 0!==E&&(V.headerDropdown=function(t,n){return p(n)?n:h(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:l(r.components)});return t.register(e.jsx(n,Object.assign({},s)),o),o})}(r,E)),void 0!==v&&(V.columnEditorConfig=function(e,t){const{rowRenderer:n,customRenderer:r}=e,o=i(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),n?{rowRenderer:g(t,n)}:{}),r?{customRenderer:b(t,r)}:{})}(v,r)),void 0!==C&&(V.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:O(r));return t}(C)),void 0!==w&&(V.rowButtons=w.map(t=>function(t,n){return p(n)?n:h(r=>{const o=document.createElement("div");return o.style.display="contents",t.register(e.jsx(n,Object.assign({},r)),o),o})}(r,t))),V}const v="data-st-portal-id";class C{constructor(){this.entries=new Map,this.listeners=new Set,this.nextId=0,this.cachedSnapshot=[],this.snapshotDirty=!0,this.emitScheduled=!1,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const t=[],n=e.getAttribute(v);null!==n&&t.push(n),e.querySelectorAll(`[${v}]`).forEach(e=>{const n=e.getAttribute(v);null!==n&&t.push(n)});for(const e of t)this.unregister(e)},this.subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.getSnapshot=()=>(this.snapshotDirty&&(this.cachedSnapshot=Array.from(this.entries.values()),this.snapshotDirty=!1),this.cachedSnapshot)}register(e,t){const n="st-portal-"+this.nextId++;return t.setAttribute(v,n),this.entries.set(n,{id:n,container:t,node:e}),this.scheduleEmit(),{id:n,unregister:()=>this.unregister(n)}}update(e,t){const n=e.getAttribute(v);if(null===n)return!1;const r=this.entries.get(n);return!(!r||r.container!==e||(r.node=t,this.scheduleEmit(),0))}unregister(e){this.entries.delete(e)&&this.scheduleEmit()}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear(),0!==this.entries.size&&(this.entries.clear(),this.emit())}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)}emit(){this.snapshotDirty=!0;for(const e of this.listeners)e()}scheduleEmit(){this.emitScheduled||(this.emitScheduled=!0,queueMicrotask(()=>{this.emitScheduled=!1,this.emit()}))}}class w extends c.default.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){console.error("[simple-table] A custom renderer threw while rendering:",e)}render(){return this.state.hasError?null:this.props.children}}const x=c.default.forwardRef(function(r,s){const c=t.useRef(null),i=t.useRef(null);null===i.current&&(i.current=new C);const u=i.current,a=t.useRef(null),l=t.useRef(void 0),d=t.useRef(void 0),f=t.useRef(null),p=r;t.useLayoutEffect(()=>{const e=c.current;if(!e)return;const t=new n.SimpleTableVanilla(e,E(p,u));if(t.mount(),a.current=t,f.current=p,l.current=S(p),d.current=p.rows,s){const e=t.getAPI();"function"==typeof s?s(e):s.current=e}return()=>{t.destroy(),a.current=null,l.current=void 0,d.current=void 0,f.current=null,u.clear(),s&&"function"!=typeof s&&(s.current=null)}},[]),t.useLayoutEffect(()=>{const e=a.current;if(!e)return;if(null!==f.current&&!function(e,t){const n=new Set([...Object.keys(e),...Object.keys(t)]);for(const r of n)if(e[r]!==t[r])return!0;return!1}(f.current,p))return;f.current=p;const t=E(p,u),r=Object.assign({},t),o=S(p),s=n.headersStructurallyEqual(l.current,o);l.current=o,s&&delete r.columns;const c=n.rowsShallowUnchanged(d.current,p.rows,p.getRowId);d.current=p.rows,c&&delete r.rows,e.update(r)},[p]);const h=function(n){return t.useSyncExternalStore(n.subscribe,n.getSnapshot,n.getSnapshot).map(t=>o.createPortal(e.jsx(w,{children:t.node}),t.container,t.id))}(u),m=Array.isArray(h)&&h.length>0,g=t.useRef(!1),b=t.useRef(Boolean(p.isLoading));return t.useLayoutEffect(()=>{var e,t;const n=a.current;if(!n)return;const r=Boolean(p.isLoading),o=b.current&&!r;b.current=r,o?null===(e=n.refitAutoSizeColumns)||void 0===e||e.call(n):!g.current&&m&&(g.current=!0,null===(t=n.refitAutoSizeColumns)||void 0===t||t.call(n))},[m,p.isLoading]),e.jsxs(e.Fragment,{children:[e.jsx("div",{ref:c}),h]})});x.displayName="SimpleTable",Object.defineProperty(exports,"PIVOT_ACCESSOR_PREFIX",{enumerable:!0,get:function(){return n.PIVOT_ACCESSOR_PREFIX}}),Object.defineProperty(exports,"PIVOT_BLANK_LABEL",{enumerable:!0,get:function(){return n.PIVOT_BLANK_LABEL}}),Object.defineProperty(exports,"PIVOT_CHILDREN_KEY",{enumerable:!0,get:function(){return n.PIVOT_CHILDREN_KEY}}),Object.defineProperty(exports,"PIVOT_IS_TOTAL_KEY",{enumerable:!0,get:function(){return n.PIVOT_IS_TOTAL_KEY}}),Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return n.asRows}}),Object.defineProperty(exports,"buildPivotAccessor",{enumerable:!0,get:function(){return n.buildPivotAccessor}}),Object.defineProperty(exports,"buildPivotRowTotalAccessor",{enumerable:!0,get:function(){return n.buildPivotRowTotalAccessor}}),Object.defineProperty(exports,"pivotRows",{enumerable:!0,get:function(){return n.pivotRows}}),exports.SimpleTable=x;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.es.js CHANGED
@@ -1,2 +1,2 @@
1
- import{jsx as e,Fragment as n,jsxs as t}from"react/jsx-runtime";import r,{useRef as o,useLayoutEffect as s,useSyncExternalStore as i}from"react";import{collectHeaderAccessors as c,SimpleTableVanilla as d,headersStructurallyEqual as l,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";import{renderToStaticMarkup as a}from"react-dom/server";import{createPortal as h}from"react-dom";function p(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 m({node:n}){const t=o(null);return s(()=>{const e=t.current;if(e)return e.appendChild(n),()=>{n.parentNode===e&&e.removeChild(n)}},[n]),e("span",{ref:t,style:{display:"contents"}})}function f(n){if(null!=n)return"string"==typeof n?n:n instanceof Node?e(m,{node:n}):void 0}function g(e){return{sortIcon:f(null==e?void 0:e.sortIcon),filterIcon:f(null==e?void 0:e.filterIcon),collapseIcon:f(null==e?void 0:e.collapseIcon),labelContent:f(null==e?void 0:e.labelContent)}}function b(n){if(null!=n){if("string"==typeof n){if(""===n)return;return e("span",{style:{display:"contents"},dangerouslySetInnerHTML:{__html:n}})}return n instanceof Node?e(m,{node:n}):void 0}}"function"==typeof SuppressedError&&SuppressedError;const R=Symbol.for("simple-table.wrappedRenderer");function O(e){return"function"==typeof e&&Boolean(e[R])}function C(e){return e[R]=!0,e}function v(n,t){return O(t)?t:C(r=>{const o=document.createElement("div");return n.register(e(t,Object.assign({},r)),o),o})}function y(n,t){return O(t)?t:C(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:(i=r.components,{expandIcon:f(i.expandIcon),checkbox:f(i.checkbox),dragIcon:f(i.dragIcon),labelContent:f(i.labelContent),pinIcon:f(i.pinIcon)})});var i;return n.register(e(t,Object.assign({},s)),o),o})}function S(n,t){return O(t)?t:C(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{searchSection:r.searchSection?f(r.searchSection):null,listSection:f(r.listSection),resetSection:r.resetSection?f(r.resetSection):null});return n.register(e(t,Object.assign({},s)),o),o})}function w(t){const r=document.createElement("div");return r.innerHTML=a(e(n,{children:t})),function(e){const n=Array.from(e.childNodes).filter(e=>e.nodeType!==Node.TEXT_NODE||null!=e.textContent&&""!==e.textContent.trim());return 1===n.length&&n[0]instanceof HTMLElement?(e.removeChild(n[0]),n[0]):e}(r)}function E(t){return a(e(n,{children:t}))}function j(e){return"function"==typeof e}function I(n,t){const{cellRenderer:r,headerRenderer:o,children:s,nestedTable:i}=n,c=p(n,["cellRenderer","headerRenderer","children","nestedTable"]),d=String(n.accessor),l=Object.assign({},c);if(r&&(l.cellRenderer=function(n,t,r){if(O(r))return r;const o=n.cellRendererCache.get(t);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null},i=C(t=>{const r=s.component,o=document.createElement("div");return o.style.display="contents",n.register(e(r,Object.assign({},t)),o),o});return s.wrapped=i,n.cellRendererCache.set(t,s),i}(t,d,r)),o&&(l.headerRenderer=function(n,t,r){if(O(r))return r;const o=n.headerRendererCache.get(t);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null};let i=null;const c=C(t=>{const r=s.component,o=Object.assign(Object.assign({},t),{components:g(t.components)}),c=e(r,Object.assign({},o));return i&&n.update(i,c)||(i=document.createElement("div"),n.register(c,i)),i});return s.wrapped=c,n.headerRendererCache.set(t,s),c}(t,d,o)),s&&(l.children=s.map(e=>I(e,t))),i){const e=Object.assign(Object.assign({},i),{rows:[]});l.nestedTable=k(e,t)}return l}function B(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 k(n,t){const{rows:r,footerRenderer:o,emptyStateRenderer:s,errorStateRenderer:i,loadingStateRenderer:d,tableEmptyStateRenderer:l,headerDropdown:u,columnEditorConfig:a,icons:h,rowButtons:m,onColumnOrderChange:f,onColumnWidthChange:R,onHeaderEdit:k,onColumnSelect:T,enableColumnEditor:A,editColumns:H,enableColumnEditorInitOpen:x,editColumnsInitOpen:P,enablePagination:D,shouldPaginate:L,onTableReady:_,onGridReady:N,hoverRowBackground:M,useHoverRowBackground:V,oddColumnBackground:G,useOddColumnBackground:q,oddEvenRowBackground:z,useOddEvenRowBackground:K}=n,W=p(n,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),F=B(n);t.pruneRendererCaches(c(F));const X=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},W),{rows:r,defaultHeaders:F.map(e=>I(e,t)),editColumns:null!=A?A:H,editColumnsInitOpen:null!=x?x:P,shouldPaginate:null!=D?D:L,onGridReady:null!=_?_:N,useHoverRowBackground:null!=M?M:V,useOddColumnBackground:null!=G?G:q,useOddEvenRowBackground:null!=z?z:K,onRendererHostDiscard:t.disposeHost}),f?{onColumnOrderChange:e=>f(e)}:{}),R?{onColumnWidthChange:e=>R(e)}:{}),k?{onHeaderEdit:(e,n)=>k(e,n)}:{}),T?{onColumnSelect:e=>T(e)}:{});if(void 0!==o&&(X.footerRenderer=function(n,t){return O(t)?t:C(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{nextIcon:b((i={nextIcon:r.nextIcon,prevIcon:r.prevIcon}).nextIcon),prevIcon:b(i.prevIcon)});var i;return n.register(e(t,Object.assign({},s)),o),o})}(t,o)),void 0!==s)if(j(s))X.emptyStateRenderer=v(t,s);else{const e=s;X.emptyStateRenderer=()=>w(e)}if(void 0!==i)if(j(i))X.errorStateRenderer=v(t,i);else{const e=i;X.errorStateRenderer=()=>w(e)}if(void 0!==d)if(j(d))X.loadingStateRenderer=v(t,d);else{const e=d;X.loadingStateRenderer=()=>w(e)}return void 0!==l&&(X.tableEmptyStateRenderer=null===l?null:w(l)),void 0!==u&&(X.headerDropdown=function(n,t){return O(t)?t:C(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:g(r.components)});return n.register(e(t,Object.assign({},s)),o),o})}(t,u)),void 0!==a&&(X.columnEditorConfig=function(e,n){const{rowRenderer:t,customRenderer:r}=e,o=p(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),t?{rowRenderer:y(n,t)}:{}),r?{customRenderer:S(n,r)}:{})}(a,t)),void 0!==h&&(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:E(r));return n}(h)),void 0!==m&&(X.rowButtons=m.map(n=>function(n,t){return O(t)?t:C(r=>{const o=document.createElement("div");return o.style.display="contents",n.register(e(t,Object.assign({},r)),o),o})}(t,n))),X}const T="data-st-portal-id";class A{constructor(){this.entries=new Map,this.listeners=new Set,this.nextId=0,this.cachedSnapshot=[],this.snapshotDirty=!0,this.emitScheduled=!1,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const n=[],t=e.getAttribute(T);null!==t&&n.push(t),e.querySelectorAll(`[${T}]`).forEach(e=>{const t=e.getAttribute(T);null!==t&&n.push(t)});for(const e of n)this.unregister(e)},this.subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.getSnapshot=()=>(this.snapshotDirty&&(this.cachedSnapshot=Array.from(this.entries.values()),this.snapshotDirty=!1),this.cachedSnapshot)}register(e,n){const t="st-portal-"+this.nextId++;return n.setAttribute(T,t),this.entries.set(t,{id:t,container:n,node:e}),this.scheduleEmit(),{id:t,unregister:()=>this.unregister(t)}}update(e,n){const t=e.getAttribute(T);if(null===t)return!1;const r=this.entries.get(t);return!(!r||r.container!==e||(r.node=n,this.scheduleEmit(),0))}unregister(e){this.entries.delete(e)&&this.scheduleEmit()}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear(),0!==this.entries.size&&(this.entries.clear(),this.emit())}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)}emit(){this.snapshotDirty=!0;for(const e of this.listeners)e()}scheduleEmit(){this.emitScheduled||(this.emitScheduled=!0,queueMicrotask(()=>{this.emitScheduled=!1,this.emit()}))}}class H extends r.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){console.error("[simple-table] A custom renderer threw while rendering:",e)}render(){return this.state.hasError?null:this.props.children}}const x=r.forwardRef(function(r,c){const a=o(null),p=o(null);null===p.current&&(p.current=new A);const m=p.current,f=o(null),g=o(void 0),b=o(void 0),R=o(null),O=r;s(()=>{const e=a.current;if(!e)return;const n=new d(e,k(O,m));if(n.mount(),f.current=n,R.current=O,g.current=B(O),b.current=O.rows,c){const e=n.getAPI();"function"==typeof c?c(e):c.current=e}return()=>{n.destroy(),f.current=null,g.current=void 0,b.current=void 0,R.current=null,m.clear(),c&&"function"!=typeof c&&(c.current=null)}},[]),s(()=>{const e=f.current;if(!e)return;if(null!==R.current&&!function(e,n){const t=new Set([...Object.keys(e),...Object.keys(n)]);for(const r of t)if(e[r]!==n[r])return!0;return!1}(R.current,O))return;R.current=O;const n=k(O,m),t=Object.assign({},n),r=B(O),o=l(g.current,r);g.current=r,o&&delete t.defaultHeaders;const s=u(b.current,O.rows,O.getRowId);b.current=O.rows,s&&delete t.rows,e.update(t)},[O]);const C=function(n){return i(n.subscribe,n.getSnapshot,n.getSnapshot).map(n=>h(e(H,{children:n.node}),n.container,n.id))}(m),v=Array.isArray(C)&&C.length>0,y=o(!1),S=o(Boolean(O.isLoading));return s(()=>{var e,n;const t=f.current;if(!t)return;const r=Boolean(O.isLoading),o=S.current&&!r;S.current=r,o?null===(e=t.refitAutoSizeColumns)||void 0===e||e.call(t):!y.current&&v&&(y.current=!0,null===(n=t.refitAutoSizeColumns)||void 0===n||n.call(t))},[v,O.isLoading]),t(n,{children:[e("div",{ref:a}),C]})});x.displayName="SimpleTable";export{x as SimpleTable};
1
+ import{jsx as e,Fragment as n,jsxs as t}from"react/jsx-runtime";import r,{useRef as o,useLayoutEffect as s,useSyncExternalStore as c}from"react";import{collectHeaderAccessors as i,SimpleTableVanilla as l,headersStructurallyEqual as a,rowsShallowUnchanged as d}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";import{renderToStaticMarkup as u}from"react-dom/server";import{createPortal as h}from"react-dom";function p(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 m({node:n}){const t=o(null);return s(()=>{const e=t.current;if(e)return e.appendChild(n),()=>{n.parentNode===e&&e.removeChild(n)}},[n]),e("span",{ref:t,style:{display:"contents"}})}function f(n){if(null!=n)return"string"==typeof n?n:n instanceof Node?e(m,{node:n}):void 0}function g(e){return{sortIcon:f(null==e?void 0:e.sortIcon),filterIcon:f(null==e?void 0:e.filterIcon),collapseIcon:f(null==e?void 0:e.collapseIcon),labelContent:f(null==e?void 0:e.labelContent)}}function b(n){if(null!=n){if("string"==typeof n){if(""===n)return;return e("span",{style:{display:"contents"},dangerouslySetInnerHTML:{__html:n}})}return n instanceof Node?e(m,{node:n}):void 0}}"function"==typeof SuppressedError&&SuppressedError;const R=Symbol.for("simple-table.wrappedRenderer");function C(e){return"function"==typeof e&&Boolean(e[R])}function O(e){return e[R]=!0,e}function v(n,t){return C(t)?t:O(r=>{const o=document.createElement("div");return n.register(e(t,Object.assign({},r)),o),o})}function S(n,t){return C(t)?t:O(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:(c=r.components,{expandIcon:f(c.expandIcon),checkbox:f(c.checkbox),dragIcon:f(c.dragIcon),labelContent:f(c.labelContent),pinIcon:f(c.pinIcon)})});var c;return n.register(e(t,Object.assign({},s)),o),o})}function y(n,t){return C(t)?t:O(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{searchSection:r.searchSection?f(r.searchSection):null,listSection:f(r.listSection),resetSection:r.resetSection?f(r.resetSection):null});return n.register(e(t,Object.assign({},s)),o),o})}function E(t){const r=document.createElement("div");return r.innerHTML=u(e(n,{children:t})),function(e){const n=Array.from(e.childNodes).filter(e=>e.nodeType!==Node.TEXT_NODE||null!=e.textContent&&""!==e.textContent.trim());return 1===n.length&&n[0]instanceof HTMLElement?(e.removeChild(n[0]),n[0]):e}(r)}function w(t){return u(e(n,{children:t}))}function j(e){return"function"==typeof e}function I(n,t){const{cellRenderer:r,headerRenderer:o,children:s,nestedTable:c}=n,i=p(n,["cellRenderer","headerRenderer","children","nestedTable"]),l=String(n.accessor),a=Object.assign({},i);if(r&&(a.cellRenderer=function(n,t,r){if(C(r))return r;const o=n.cellRendererCache.get(t);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null},c=O(t=>{const r=s.component,o=document.createElement("div");return o.style.display="contents",n.register(e(r,Object.assign({},t)),o),o});return s.wrapped=c,n.cellRendererCache.set(t,s),c}(t,l,r)),o&&(a.headerRenderer=function(n,t,r){if(C(r))return r;const o=n.headerRendererCache.get(t);if(o)return o.component=r,o.wrapped;const s={component:r,wrapped:null};let c=null;const i=O(t=>{const r=s.component,o=Object.assign(Object.assign({},t),{components:g(t.components)}),i=e(r,Object.assign({},o));return c&&n.update(c,i)||(c=document.createElement("div"),n.register(i,c)),c});return s.wrapped=i,n.headerRendererCache.set(t,s),i}(t,l,o)),s&&(a.children=s.map(e=>I(e,t))),c){const e=Object.assign(Object.assign({},c),{rows:[]});a.nestedTable=A(e,t)}return a}function T(e){const n=e.columns;if(!n)throw new Error("SimpleTable requires `columns`");return n}function A(n,t){const{rows:r,footerRenderer:o,emptyStateRenderer:s,errorStateRenderer:c,loadingStateRenderer:l,tableEmptyStateRenderer:a,headerDropdown:d,columnEditorConfig:u,icons:h,rowButtons:m,onColumnOrderChange:f,onColumnWidthChange:R,onHeaderEdit:A,onColumnSelect:x,enableColumnEditor:B,enableColumnEditorInitOpen:k,enablePagination:P,onTableReady:D,hoverRowBackground:L,oddColumnBackground:_,oddEvenRowBackground:H}=n,N=p(n,["columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","tableEmptyStateRenderer","headerDropdown","columnEditorConfig","icons","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","enableColumnEditorInitOpen","enablePagination","onTableReady","hoverRowBackground","oddColumnBackground","oddEvenRowBackground"]),M=T(n);t.pruneRendererCaches(i(M));const V=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},N),{rows:r,columns:M.map(e=>I(e,t)),enableColumnEditor:B,enableColumnEditorInitOpen:k,enablePagination:P,onTableReady:D,hoverRowBackground:L,oddColumnBackground:_,oddEvenRowBackground:H,onRendererHostDiscard:t.disposeHost}),f?{onColumnOrderChange:e=>f(e)}:{}),R?{onColumnWidthChange:e=>R(e)}:{}),A?{onHeaderEdit:(e,n)=>A(e,n)}:{}),x?{onColumnSelect:e=>x(e)}:{});if(void 0!==o&&(V.footerRenderer=function(n,t){return C(t)?t:O(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{nextIcon:b((c={nextIcon:r.nextIcon,prevIcon:r.prevIcon}).nextIcon),prevIcon:b(c.prevIcon)});var c;return n.register(e(t,Object.assign({},s)),o),o})}(t,o)),void 0!==s)if(j(s))V.emptyStateRenderer=v(t,s);else{const e=s;V.emptyStateRenderer=()=>E(e)}if(void 0!==c)if(j(c))V.errorStateRenderer=v(t,c);else{const e=c;V.errorStateRenderer=()=>E(e)}if(void 0!==l)if(j(l))V.loadingStateRenderer=v(t,l);else{const e=l;V.loadingStateRenderer=()=>E(e)}return void 0!==a&&(V.tableEmptyStateRenderer=null===a?null:E(a)),void 0!==d&&(V.headerDropdown=function(n,t){return C(t)?t:O(r=>{const o=document.createElement("div"),s=Object.assign(Object.assign({},r),{components:g(r.components)});return n.register(e(t,Object.assign({},s)),o),o})}(t,d)),void 0!==u&&(V.columnEditorConfig=function(e,n){const{rowRenderer:t,customRenderer:r}=e,o=p(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),t?{rowRenderer:S(n,t)}:{}),r?{customRenderer:y(n,r)}:{})}(u,t)),void 0!==h&&(V.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:w(r));return n}(h)),void 0!==m&&(V.rowButtons=m.map(n=>function(n,t){return C(t)?t:O(r=>{const o=document.createElement("div");return o.style.display="contents",n.register(e(t,Object.assign({},r)),o),o})}(t,n))),V}const x="data-st-portal-id";class B{constructor(){this.entries=new Map,this.listeners=new Set,this.nextId=0,this.cachedSnapshot=[],this.snapshotDirty=!0,this.emitScheduled=!1,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const n=[],t=e.getAttribute(x);null!==t&&n.push(t),e.querySelectorAll(`[${x}]`).forEach(e=>{const t=e.getAttribute(x);null!==t&&n.push(t)});for(const e of n)this.unregister(e)},this.subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.getSnapshot=()=>(this.snapshotDirty&&(this.cachedSnapshot=Array.from(this.entries.values()),this.snapshotDirty=!1),this.cachedSnapshot)}register(e,n){const t="st-portal-"+this.nextId++;return n.setAttribute(x,t),this.entries.set(t,{id:t,container:n,node:e}),this.scheduleEmit(),{id:t,unregister:()=>this.unregister(t)}}update(e,n){const t=e.getAttribute(x);if(null===t)return!1;const r=this.entries.get(t);return!(!r||r.container!==e||(r.node=n,this.scheduleEmit(),0))}unregister(e){this.entries.delete(e)&&this.scheduleEmit()}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear(),0!==this.entries.size&&(this.entries.clear(),this.emit())}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)}emit(){this.snapshotDirty=!0;for(const e of this.listeners)e()}scheduleEmit(){this.emitScheduled||(this.emitScheduled=!0,queueMicrotask(()=>{this.emitScheduled=!1,this.emit()}))}}class k extends r.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){console.error("[simple-table] A custom renderer threw while rendering:",e)}render(){return this.state.hasError?null:this.props.children}}const P=r.forwardRef(function(r,i){const u=o(null),p=o(null);null===p.current&&(p.current=new B);const m=p.current,f=o(null),g=o(void 0),b=o(void 0),R=o(null),C=r;s(()=>{const e=u.current;if(!e)return;const n=new l(e,A(C,m));if(n.mount(),f.current=n,R.current=C,g.current=T(C),b.current=C.rows,i){const e=n.getAPI();"function"==typeof i?i(e):i.current=e}return()=>{n.destroy(),f.current=null,g.current=void 0,b.current=void 0,R.current=null,m.clear(),i&&"function"!=typeof i&&(i.current=null)}},[]),s(()=>{const e=f.current;if(!e)return;if(null!==R.current&&!function(e,n){const t=new Set([...Object.keys(e),...Object.keys(n)]);for(const r of t)if(e[r]!==n[r])return!0;return!1}(R.current,C))return;R.current=C;const n=A(C,m),t=Object.assign({},n),r=T(C),o=a(g.current,r);g.current=r,o&&delete t.columns;const s=d(b.current,C.rows,C.getRowId);b.current=C.rows,s&&delete t.rows,e.update(t)},[C]);const O=function(n){return c(n.subscribe,n.getSnapshot,n.getSnapshot).map(n=>h(e(k,{children:n.node}),n.container,n.id))}(m),v=Array.isArray(O)&&O.length>0,S=o(!1),y=o(Boolean(C.isLoading));return s(()=>{var e,n;const t=f.current;if(!t)return;const r=Boolean(C.isLoading),o=y.current&&!r;y.current=r,o?null===(e=t.refitAutoSizeColumns)||void 0===e||e.call(t):!S.current&&v&&(S.current=!0,null===(n=t.refitAutoSizeColumns)||void 0===n||n.call(t))},[v,C.isLoading]),t(n,{children:[e("div",{ref:u}),O]})});P.displayName="SimpleTable";export{P as SimpleTable};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -8,7 +8,7 @@ import type { SimpleTableReactProps } from "./types";
8
8
  * with React component types for all renderer props: cellRenderer,
9
9
  * headerRenderer, footerRenderer, loadingStateRenderer, errorStateRenderer,
10
10
  * emptyStateRenderer, headerDropdown, and per-column renderers inside
11
- * ReactHeaderObject.
11
+ * ReactColumnDef.
12
12
  *
13
13
  * The ref exposes the full TableAPI imperative interface (sort, filter,
14
14
  * paginate, export to CSV, cell selection, column visibility, etc.).
@@ -1,6 +1,6 @@
1
1
  import type { SimpleTableConfig } from "simple-table-core";
2
- import type { SimpleTableReactProps, ReactHeaderObject } from "./types";
2
+ import type { SimpleTableReactProps, ReactColumnDef } from "./types";
3
3
  import type { PortalBridge } from "./PortalBridge";
4
- /** Resolve preferred `columns` or legacy `defaultHeaders`. */
5
- export declare function resolveReactColumns(config: Pick<SimpleTableReactProps, "columns" | "defaultHeaders">): ReadonlyArray<ReactHeaderObject>;
4
+ /** Resolve column definitions. */
5
+ export declare function resolveReactColumns(config: Pick<SimpleTableReactProps, "columns">): ReadonlyArray<ReactColumnDef>;
6
6
  export declare function buildVanillaConfig(config: SimpleTableReactProps, bridge: PortalBridge): SimpleTableConfig;
@@ -1,5 +1,5 @@
1
1
  export { default as SimpleTable } from "./SimpleTable";
2
2
  export { asRows } from "simple-table-core";
3
- export type { SimpleTableReactProps, TableInstance, ReactHeaderObject, ReactColumnDef, ReactColumnEditorConfig, ReactIconsConfig, ReactIconElement, ReactCellRenderer, ReactHeaderRenderer, ReactFooterRenderer, ReactHeaderDropdown, ReactColumnEditorRowRenderer, ReactColumnEditorCustomRenderer, ReactRowButton, ReactLoadingStateRenderer, ReactErrorStateRenderer, ReactEmptyStateRenderer, HeaderRendererComponents, HeaderRendererProps, ColumnEditorRowRendererComponents, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, FooterRendererProps, HeaderDropdownProps, } from "./types";
3
+ export type { SimpleTableReactProps, TableInstance, ReactColumnDef, ReactColumnEditorConfig, ReactIconsConfig, ReactIconElement, ReactCellRenderer, ReactHeaderRenderer, ReactFooterRenderer, ReactHeaderDropdown, ReactColumnEditorRowRenderer, ReactColumnEditorCustomRenderer, ReactRowButton, ReactLoadingStateRenderer, ReactErrorStateRenderer, ReactEmptyStateRenderer, HeaderRendererComponents, HeaderRendererProps, ColumnEditorRowRendererComponents, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, FooterRendererProps, HeaderDropdownProps, } from "./types";
4
4
  export type { Accessor, AggregationConfig, AggregationType, AnimationsConfig, AutoSizeMode, ColumnDef, Cell, CellChangeProps, CellClickProps, CellRenderer, CellRendererProps, CellValue, ChartOptions, ColumnEditorConfig, ColumnEditorRowRenderer, ColumnEditorCustomRenderer, ColumnEditorSearchFunction, ColumnType, ColumnVisibilityState, Comparator, ComparatorProps, CustomTheme, CustomThemeProps, EmptyStateRenderer, EmptyStateRendererProps, EnumOption, ErrorStateRenderer, ErrorStateRendererProps, ExportToCSVProps, ExportValueGetter, ExportValueProps, FilterCondition, FilterOperator, StringFilterOperator, NumberFilterOperator, BooleanFilterOperator, DateFilterOperator, EnumFilterOperator, FooterPosition, GetRowId, GetRowIdParams, HeaderDropdown, HeaderRenderer, 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 React from "react";
2
- import type { SimpleTableProps, SimpleTableConfig, HeaderObject, TableAPI, Row, CellRendererProps, HeaderRendererProps as VanillaHeaderRendererProps, FooterRendererProps as VanillaFooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps as VanillaHeaderDropdownProps, ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps, ColumnEditorCustomRendererProps as VanillaColumnEditorCustomRendererProps, ColumnEditorConfig, RowButtonProps } from "simple-table-core";
2
+ import type { SimpleTableProps, SimpleTableConfig, ColumnDef, TableAPI, Row, CellRendererProps, HeaderRendererProps as VanillaHeaderRendererProps, FooterRendererProps as VanillaFooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps as VanillaHeaderDropdownProps, ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps, ColumnEditorCustomRendererProps as VanillaColumnEditorCustomRendererProps, ColumnEditorConfig, RowButtonProps } from "simple-table-core";
3
3
  /** Passed to React `headerRenderer` / `headerDropdown`; slots are React nodes. */
4
4
  export interface HeaderRendererComponents {
5
5
  sortIcon?: React.ReactNode;
@@ -71,30 +71,23 @@ export interface ReactColumnEditorConfig extends Omit<ColumnEditorConfig, "rowRe
71
71
  customRenderer?: ReactColumnEditorCustomRenderer;
72
72
  }
73
73
  /**
74
- * Column definition for `columns` / `defaultHeaders`: same column metadata as core
74
+ * Column definition for `columns`: same column metadata as core
75
75
  * columns, but `cellRenderer` / `headerRenderer` / `children` / `nestedTable` are React-only.
76
76
  */
77
- export interface ReactHeaderObject extends Omit<HeaderObject, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
77
+ export interface ReactColumnDef extends Omit<ColumnDef, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
78
78
  cellRenderer?: ReactCellRenderer;
79
79
  headerRenderer?: ReactHeaderRenderer;
80
- children?: ReadonlyArray<ReactHeaderObject>;
80
+ children?: ReadonlyArray<ReactColumnDef>;
81
81
  /** Nested grid: React table props minus row data and inherited state renderers. */
82
82
  nestedTable?: Omit<SimpleTableReactProps, "rows" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer">;
83
83
  }
84
- /** Preferred name for React column definitions. Alias of {@link ReactHeaderObject}. */
85
- export type ReactColumnDef = ReactHeaderObject;
86
- export interface SimpleTableReactProps extends Omit<SimpleTableProps, "defaultHeaders" | "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rows" | "rowButtons" | "onColumnOrderChange" | "onColumnWidthChange" | "onHeaderEdit" | "onColumnSelect"> {
87
- /**
88
- * Column definitions.
89
- * @deprecated Prefer {@link columns}
90
- */
91
- defaultHeaders?: ReadonlyArray<ReactHeaderObject>;
92
- /** Column definitions. Preferred over `defaultHeaders`. */
93
- columns?: ReadonlyArray<ReactHeaderObject>;
94
- onColumnOrderChange?: (newHeaders: ReactHeaderObject[]) => void;
95
- onColumnWidthChange?: (headers: ReactHeaderObject[]) => void;
96
- onHeaderEdit?: (header: ReactHeaderObject, newLabel: string) => void;
97
- onColumnSelect?: (header: ReactHeaderObject) => void;
84
+ export interface SimpleTableReactProps extends Omit<SimpleTableProps, "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rows" | "rowButtons" | "onColumnOrderChange" | "onColumnWidthChange" | "onHeaderEdit" | "onColumnSelect"> {
85
+ /** Column definitions. */
86
+ columns?: ReadonlyArray<ReactColumnDef>;
87
+ onColumnOrderChange?: (newHeaders: ReactColumnDef[]) => void;
88
+ onColumnWidthChange?: (headers: ReactColumnDef[]) => void;
89
+ onHeaderEdit?: (header: ReactColumnDef, newLabel: string) => void;
90
+ onColumnSelect?: (header: ReactColumnDef) => void;
98
91
  /** Row data: any object rows (domain models) or core `Row[]`; cast to vanilla `Row[]` inside the adapter. */
99
92
  rows: ReadonlyArray<Row> | ReadonlyArray<object>;
100
93
  footerRenderer?: ReactFooterRenderer;
@@ -20,7 +20,7 @@ export declare function isWrappedRenderer(fn: unknown): boolean;
20
20
  * inherits context. The returned container is filled on the host's next render.
21
21
  *
22
22
  * Idempotent: if `Component` is already a wrapped vanilla renderer, it is
23
- * returned unchanged so controlled `defaultHeaders` updates cannot nest wraps.
23
+ * returned unchanged so controlled `columns` updates cannot nest wraps.
24
24
  */
25
25
  export declare function wrapReactRenderer<P extends object>(bridge: PortalBridge, Component: React.ComponentType<P>): (props: P) => HTMLElement;
26
26
  /**
@@ -43,7 +43,7 @@ export declare function wrapReactHeaderRenderer(bridge: PortalBridge, Component:
43
43
  * Like {@link wrapReactRendererIntoFragment}, but reuses one wrapper per
44
44
  * `accessor` on the bridge. When the consumer rebuilds columns with a new
45
45
  * Component identity, the slot's `component` is updated in place so the
46
- * wrapped function identity stays stable across `defaultHeaders` rebuilds.
46
+ * wrapped function identity stays stable across `columns` rebuilds.
47
47
  */
48
48
  export declare function wrapCachedCellRenderer<P extends object>(bridge: PortalBridge, accessor: string, Component: React.ComponentType<P>): (props: P) => HTMLElement;
49
49
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simple-table/react",
3
- "version": "4.0.4",
3
+ "version": "4.0.6",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/index.es.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "react-dom": ">=18.0.0"
34
34
  },
35
35
  "dependencies": {
36
- "simple-table-core": "4.0.4"
36
+ "simple-table-core": "4.0.6"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@rollup/plugin-alias": "^4.0.4",