@simple-table/svelte 4.0.4 → 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}),require("svelte/internal/disclose-version"),require("svelte/internal/flags/legacy");var e=require("svelte/internal/client"),t=require("svelte"),n=require("simple-table-core");function r(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var o=r(e);function s(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 d(e,n){return r=>{const o=document.createElement("div"),s=t.mount(n,{target:o,props:r});return e.register(o,()=>{t.unmount(s)}),o}}function a(e,n,r,o){const s="cell"===r?e.cellRendererCache:e.headerRendererCache,d=s.get(n);if(d)return d.component=o,d.wrapped;const a={component:o,wrapped:null},l=n=>{const r=document.createElement("div"),o=t.mount(a.component,{target:r,props:n});return e.register(r,()=>{t.unmount(o)}),r};return a.wrapped=l,s.set(n,a),l}function l(e,n={}){const r=document.createElement("div"),o=t.mount(e,{target:r,props:n}),s=r.innerHTML;return t.unmount(o),s}function u(e){return"function"==typeof e}function i(e,t){const{cellRenderer:n,headerRenderer:r,children:o,nestedTable:d}=e,l=s(e,["cellRenderer","headerRenderer","children","nestedTable"]),u=String(e.accessor),c=Object.assign({},l);if(n&&(c.cellRenderer="function"==typeof n&&n.length>=2?a(t,u,"cell",n):n),r&&(c.headerRenderer="function"==typeof r&&r.length>=2?a(t,u,"header",r):r),o&&(c.children=o.map(e=>i(e,t))),d){const e=Object.assign(Object.assign({},d),{rows:[]});c.nestedTable=p(e,t)}return c}function c(e){var t;const n=null!==(t=e.columns)&&void 0!==t?t:e.defaultHeaders;if(!n)throw new Error("SimpleTable requires `columns` or `defaultHeaders`");return n}function p(e,r){const{rows:o,footerRenderer:a,emptyStateRenderer:p,errorStateRenderer:g,loadingStateRenderer:f,headerDropdown:m,columnEditorConfig:h,icons:b,tableEmptyStateRenderer:R,rowButtons:O,onColumnOrderChange:v,onColumnWidthChange:y,onHeaderEdit:w,onColumnSelect:C,enableColumnEditor:E,editColumns:_,enableColumnEditorInitOpen:P,editColumnsInitOpen:S,enablePagination:j,shouldPaginate:I,onTableReady:T,onGridReady:H,hoverRowBackground:A,useHoverRowBackground:B,oddColumnBackground:k,useOddColumnBackground:x,oddEvenRowBackground:L,useOddEvenRowBackground:V}=e,M=s(e,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),q=c(e);r.pruneRendererCaches(n.collectHeaderAccessors(q));const D=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},M),{rows:o,defaultHeaders:q.map(e=>i(e,r)),editColumns:null!=E?E:_,editColumnsInitOpen:null!=P?P:S,shouldPaginate:null!=j?j:I,onGridReady:null!=T?T:H,useHoverRowBackground:null!=A?A:B,useOddColumnBackground:null!=k?k:x,useOddEvenRowBackground:null!=L?L:V,onRendererHostDiscard:r.disposeHost}),v?{onColumnOrderChange:e=>v(e)}:{}),y?{onColumnWidthChange:e=>y(e)}:{}),w?{onHeaderEdit:(e,t)=>w(e,t)}:{}),C?{onColumnSelect:e=>C(e)}:{});return void 0!==R&&(null===R?D.tableEmptyStateRenderer=null:"string"==typeof R||R instanceof HTMLElement?D.tableEmptyStateRenderer=R:u(R)&&(D.tableEmptyStateRenderer=function(e,n){const r=document.createElement("div"),o=t.mount(n,{target:r,props:{}});return e.register(r,()=>{t.unmount(o)}),r}(r,R))),void 0!==a&&(D.footerRenderer="function"==typeof a&&a.length>=2?d(r,a):a),void 0!==p&&(D.emptyStateRenderer="function"==typeof p&&p.length>=2?d(r,p):p),void 0!==g&&(D.errorStateRenderer="function"==typeof g&&g.length>=2?d(r,g):g),void 0!==f&&(D.loadingStateRenderer="function"==typeof f&&f.length>=2?d(r,f):f),void 0!==m&&(D.headerDropdown=d(r,m)),void 0!==h&&(D.columnEditorConfig=function(e,t){const{rowRenderer:n,customRenderer:r}=e,o=s(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),n?{rowRenderer:d(t,n)}:{}),r?{customRenderer:d(t,r)}:{})}(h,r)),void 0!==b&&(D.icons=function(e){const t={};for(const[n,r]of Object.entries(e))null!=r&&("string"==typeof r||r instanceof HTMLElement||r instanceof SVGElement?t[n]=r:u(r)&&(t[n]=l(r,{})));return t}(b)),void 0!==O&&(D.rowButtons=O.map(e=>d(r,e))),D}"function"==typeof SuppressedError&&SuppressedError;const g="data-st-mount-id";class f{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(g);null!==n&&t.push(n),e.querySelectorAll(`[${g}]`).forEach(e=>{const n=e.getAttribute(g);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(g,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}}var m=o.from_html("<div></div>");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=function(e,r){const s=o.legacy_rest_props(r,["children","$$slots","$$events","$$legacy"]),d=o.legacy_rest_props(s,["getAPI","rows","defaultHeaders","columns"]);o.push(r,!1);let a=o.prop(r,"rows",8),l=o.prop(r,"defaultHeaders",8,void 0),u=o.prop(r,"columns",8,void 0),i=o.mutable_source(),g=o.mutable_source(null);const h=new f;let b=o.mutable_source(void 0),R=o.mutable_source(void 0);function O(){var e;return null!==(e=null===o.get(g)||void 0===o.get(g)?void 0:o.get(g).getAPI())&&void 0!==e?e:null}t.onMount(()=>{const e=Object.assign({rows:a(),defaultHeaders:l(),columns:u()},d);o.set(g,new n.SimpleTableVanilla(o.get(i),p(e,h))),o.get(g).mount(),o.set(b,c(e)),o.set(R,a())}),t.onDestroy(()=>{null===o.get(g)||void 0===o.get(g)||o.get(g).destroy(),o.set(g,null),o.set(b,void 0),o.set(R,void 0),h.clear()}),o.legacy_pre_effect(()=>(o.get(g),o.deep_read_state(a()),o.deep_read_state(l()),o.deep_read_state(u()),o.deep_read_state(d),o.get(b),o.get(R)),()=>{if(o.get(g)){const e=Object.assign({rows:a(),defaultHeaders:l(),columns:u()},d),t=p(e,h),r=Object.assign({},t),s=c(e),i=n.headersStructurallyEqual(o.get(b),s);o.set(b,s),i&&delete r.defaultHeaders;const f=n.rowsShallowUnchanged(o.get(R),a(),e.getRowId);o.set(R,a()),f&&delete r.rows,o.get(g).update(r)}}),o.legacy_pre_effect_reset();var v={getAPI:O};o.init();var y=m();return o.bind_this(y,e=>o.set(i,e),()=>o.get(i)),o.append(e,y),o.bind_prop(r,"getAPI",O),o.pop(v)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("svelte/internal/disclose-version"),require("svelte/internal/flags/legacy");var e=require("svelte/internal/client"),t=require("svelte"),n=require("simple-table-core");function r(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var o=r(e);function s(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 c(e,n){return r=>{const o=document.createElement("div"),s=t.mount(n,{target:o,props:r});return e.register(o,()=>{t.unmount(s)}),o}}function i(e,n,r,o){const s="cell"===r?e.cellRendererCache:e.headerRendererCache,c=s.get(n);if(c)return c.component=o,c.wrapped;const i={component:o,wrapped:null},l=n=>{const r=document.createElement("div"),o=t.mount(i.component,{target:r,props:n});return e.register(r,()=>{t.unmount(o)}),r};return i.wrapped=l,s.set(n,i),l}function l(e,n={}){const r=document.createElement("div"),o=t.mount(e,{target:r,props:n}),s=r.innerHTML;return t.unmount(o),s}function a(e){return"function"==typeof e}function u(e,t){const{cellRenderer:n,headerRenderer:r,children:o,nestedTable:c}=e,l=s(e,["cellRenderer","headerRenderer","children","nestedTable"]),a=String(e.accessor),d=Object.assign({},l);if(n&&(d.cellRenderer="function"==typeof n&&n.length>=2?i(t,a,"cell",n):n),r&&(d.headerRenderer="function"==typeof r&&r.length>=2?i(t,a,"header",r):r),o&&(d.children=o.map(e=>u(e,t))),c){const e=Object.assign(Object.assign({},c),{rows:[]});d.nestedTable=p(e,t)}return d}function d(e){const t=e.columns;if(!t)throw new Error("SimpleTable requires `columns`");return t}function p(e,r){const{rows:o,footerRenderer:i,emptyStateRenderer:p,errorStateRenderer:g,loadingStateRenderer:f,headerDropdown:m,columnEditorConfig:b,icons:h,tableEmptyStateRenderer:R,rowButtons:O,onColumnOrderChange:v,onColumnWidthChange:y,onHeaderEdit:w,onColumnSelect:E,enableColumnEditor:C,enableColumnEditorInitOpen:_,enablePagination:P,onTableReady:S,hoverRowBackground:j,oddColumnBackground:T,oddEvenRowBackground:I}=e,A=s(e,["columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","enableColumnEditorInitOpen","enablePagination","onTableReady","hoverRowBackground","oddColumnBackground","oddEvenRowBackground"]),B=d(e);r.pruneRendererCaches(n.collectHeaderAccessors(B));const x=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},A),{rows:o,columns:B.map(e=>u(e,r)),enableColumnEditor:C,enableColumnEditorInitOpen:_,enablePagination:P,onTableReady:S,hoverRowBackground:j,oddColumnBackground:T,oddEvenRowBackground:I,onRendererHostDiscard:r.disposeHost}),v?{onColumnOrderChange:e=>v(e)}:{}),y?{onColumnWidthChange:e=>y(e)}:{}),w?{onHeaderEdit:(e,t)=>w(e,t)}:{}),E?{onColumnSelect:e=>E(e)}:{});return void 0!==R&&(null===R?x.tableEmptyStateRenderer=null:"string"==typeof R||R instanceof HTMLElement?x.tableEmptyStateRenderer=R:a(R)&&(x.tableEmptyStateRenderer=function(e,n){const r=document.createElement("div"),o=t.mount(n,{target:r,props:{}});return e.register(r,()=>{t.unmount(o)}),r}(r,R))),void 0!==i&&(x.footerRenderer="function"==typeof i&&i.length>=2?c(r,i):i),void 0!==p&&(x.emptyStateRenderer="function"==typeof p&&p.length>=2?c(r,p):p),void 0!==g&&(x.errorStateRenderer="function"==typeof g&&g.length>=2?c(r,g):g),void 0!==f&&(x.loadingStateRenderer="function"==typeof f&&f.length>=2?c(r,f):f),void 0!==m&&(x.headerDropdown=c(r,m)),void 0!==b&&(x.columnEditorConfig=function(e,t){const{rowRenderer:n,customRenderer:r}=e,o=s(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),n?{rowRenderer:c(t,n)}:{}),r?{customRenderer:c(t,r)}:{})}(b,r)),void 0!==h&&(x.icons=function(e){const t={};for(const[n,r]of Object.entries(e))null!=r&&("string"==typeof r||r instanceof HTMLElement||r instanceof SVGElement?t[n]=r:a(r)&&(t[n]=l(r,{})));return t}(h)),void 0!==O&&(x.rowButtons=O.map(e=>c(r,e))),x}"function"==typeof SuppressedError&&SuppressedError;const g="data-st-mount-id";class f{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(g);null!==n&&t.push(n),e.querySelectorAll(`[${g}]`).forEach(e=>{const n=e.getAttribute(g);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(g,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}}var m=o.from_html("<div></div>");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=function(e,r){const s=o.legacy_rest_props(r,["children","$$slots","$$events","$$legacy"]),c=o.legacy_rest_props(s,["getAPI","rows","columns"]);o.push(r,!1);let i=o.prop(r,"rows",8),l=o.prop(r,"columns",8,void 0),a=o.mutable_source(),u=o.mutable_source(null);const g=new f;let b=o.mutable_source(void 0),h=o.mutable_source(void 0);function R(){var e;return null!==(e=null===o.get(u)||void 0===o.get(u)?void 0:o.get(u).getAPI())&&void 0!==e?e:null}t.onMount(()=>{const e=Object.assign({rows:i(),columns:l()},c);o.set(u,new n.SimpleTableVanilla(o.get(a),p(e,g))),o.get(u).mount(),o.set(b,d(e)),o.set(h,i())}),t.onDestroy(()=>{null===o.get(u)||void 0===o.get(u)||o.get(u).destroy(),o.set(u,null),o.set(b,void 0),o.set(h,void 0),g.clear()}),o.legacy_pre_effect(()=>(o.get(u),o.deep_read_state(i()),o.deep_read_state(l()),o.deep_read_state(c),o.get(b),o.get(h)),()=>{if(o.get(u)){const e=Object.assign({rows:i(),columns:l()},c),t=p(e,g),r=Object.assign({},t),s=d(e),a=n.headersStructurallyEqual(o.get(b),s);o.set(b,s),a&&delete r.columns;const f=n.rowsShallowUnchanged(o.get(h),i(),e.getRowId);o.set(h,i()),f&&delete r.rows,o.get(u).update(r)}}),o.legacy_pre_effect_reset();var O={getAPI:R};o.init();var v=m();return o.bind_this(v,e=>o.set(a,e),()=>o.get(a)),o.append(e,v),o.bind_prop(r,"getAPI",R),o.pop(O)};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/SimpleTable.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { onMount, onDestroy } from \"svelte\";\n import {\n SimpleTableVanilla,\n headersStructurallyEqual,\n rowsShallowUnchanged,\n } from \"simple-table-core\";\n import type { SimpleTableConfig, TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig, resolveSvelteColumns } from \"./buildVanillaConfig\";\n import { MountRegistry } from \"./MountRegistry\";\n import type { SimpleTableSvelteProps, TableInstance } from \"./types\";\n\n // SimpleTable — Svelte adapter for simple-table-core.\n // Accepts the same props as SimpleTableProps with Svelte component types for renderers.\n // Use bind:this={tableRef} to access the TableAPI: tableRef.getAPI()?.sort(...)\n\n type $$Props = SimpleTableSvelteProps;\n\n export let rows: $$Props[\"rows\"];\n export let defaultHeaders: $$Props[\"defaultHeaders\"] = undefined;\n export let columns: $$Props[\"columns\"] = undefined;\n\n // All remaining optional props — spread via $$restProps\n let container: HTMLDivElement;\n let instance: TableInstance | null = null;\n const registry = new MountRegistry();\n\n /** Last headers/rows whose structure/content was applied via update. */\n let syncedDefaultHeaders: ReadonlyArray<\n NonNullable<$$Props[\"columns\"]>[number]\n > | undefined = undefined;\n let syncedRows: $$Props[\"rows\"] | undefined = undefined;\n\n onMount(() => {\n const props = { rows, defaultHeaders, columns, ...$$restProps } as SimpleTableSvelteProps;\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(props, registry),\n ) as unknown as TableInstance;\n instance.mount();\n syncedDefaultHeaders = resolveSvelteColumns(props);\n syncedRows = rows;\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n syncedDefaultHeaders = undefined;\n syncedRows = undefined;\n registry.clear();\n });\n\n // Reactive update: skip no-op columns/rows when structure/content is unchanged.\n $: if (instance) {\n const props = { rows, defaultHeaders, columns, ...$$restProps } as SimpleTableSvelteProps;\n const fullConfig = buildVanillaConfig(props, registry);\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveSvelteColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(syncedDefaultHeaders, resolvedColumns);\n syncedDefaultHeaders = resolvedColumns;\n if (headersUnchanged) {\n delete patch.defaultHeaders;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n syncedRows as ReadonlyArray<object> | undefined,\n rows as ReadonlyArray<object>,\n props.getRowId,\n );\n syncedRows = rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n instance.update(patch);\n }\n\n /** Expose the TableAPI for consumers using bind:this. */\n export function getAPI(): TableAPI | null {\n return instance?.getAPI() ?? null;\n }\n</script>\n\n<div bind:this={container}></div>\n"],"names":["div","root","$$value","$","set","container","get"],"mappings":"ogQAoFCA,EAAGC,uBAAHD,EAAGE,GAAAC,EAAAC,IAAYC,EAASH,GAAA,IAAAC,EAAAG,IAATD,eAAfL,qCAFO"}
1
+ {"version":3,"file":"index.js","sources":["../../src/SimpleTable.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { onMount, onDestroy } from \"svelte\";\n import {\n SimpleTableVanilla,\n headersStructurallyEqual,\n rowsShallowUnchanged,\n } from \"simple-table-core\";\n import type { SimpleTableConfig, TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig, resolveSvelteColumns } from \"./buildVanillaConfig\";\n import { MountRegistry } from \"./MountRegistry\";\n import type { SimpleTableSvelteProps, TableInstance } from \"./types\";\n\n // SimpleTable — Svelte adapter for simple-table-core.\n // Accepts the same props as SimpleTableProps with Svelte component types for renderers.\n // Use bind:this={tableRef} to access the TableAPI: tableRef.getAPI()?.sort(...)\n\n type $$Props = SimpleTableSvelteProps;\n\n export let rows: $$Props[\"rows\"];\n export let columns: $$Props[\"columns\"] = undefined;\n\n // All remaining optional props — spread via $$restProps\n let container: HTMLDivElement;\n let instance: TableInstance | null = null;\n const registry = new MountRegistry();\n\n /** Last headers/rows whose structure/content was applied via update. */\n let syncedColumns: ReadonlyArray<\n NonNullable<$$Props[\"columns\"]>[number]\n > | undefined = undefined;\n let syncedRows: $$Props[\"rows\"] | undefined = undefined;\n\n onMount(() => {\n const props = { rows, columns, ...$$restProps } as SimpleTableSvelteProps;\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(props, registry),\n ) as unknown as TableInstance;\n instance.mount();\n syncedColumns = resolveSvelteColumns(props);\n syncedRows = rows;\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n syncedColumns = undefined;\n syncedRows = undefined;\n registry.clear();\n });\n\n // Reactive update: skip no-op columns/rows when structure/content is unchanged.\n $: if (instance) {\n const props = { rows, columns, ...$$restProps } as SimpleTableSvelteProps;\n const fullConfig = buildVanillaConfig(props, registry);\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveSvelteColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(syncedColumns, resolvedColumns);\n syncedColumns = resolvedColumns;\n if (headersUnchanged) {\n delete patch.columns;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n syncedRows as ReadonlyArray<object> | undefined,\n rows as ReadonlyArray<object>,\n props.getRowId,\n );\n syncedRows = rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n instance.update(patch);\n }\n\n /** Expose the TableAPI for consumers using bind:this. */\n export function getAPI(): TableAPI | null {\n return instance?.getAPI() ?? null;\n }\n</script>\n\n<div bind:this={container}></div>\n"],"names":["div","root","$$value","$","set","container","get"],"mappings":"m9OAmFCA,EAAGC,uBAAHD,EAAGE,GAAAC,EAAAC,IAAYC,EAASH,GAAA,IAAAC,EAAAG,IAATD,eAAfL,qCAFO"}
package/dist/index.es.js CHANGED
@@ -1,2 +1,2 @@
1
- import"svelte/internal/disclose-version";import"svelte/internal/flags/legacy";import*as e from"svelte/internal/client";import{mount as t,unmount as n,onMount as r,onDestroy as o}from"svelte";import{collectHeaderAccessors as s,SimpleTableVanilla as d,headersStructurallyEqual as a,rowsShallowUnchanged as l}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 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 c(e,r){return o=>{const s=document.createElement("div"),d=t(r,{target:s,props:o});return e.register(s,()=>{n(d)}),s}}function u(e,r,o,s){const d="cell"===o?e.cellRendererCache:e.headerRendererCache,a=d.get(r);if(a)return a.component=s,a.wrapped;const l={component:s,wrapped:null},i=r=>{const o=document.createElement("div"),s=t(l.component,{target:o,props:r});return e.register(o,()=>{n(s)}),o};return l.wrapped=i,d.set(r,l),i}function p(e,r={}){const o=document.createElement("div"),s=t(e,{target:o,props:r}),d=o.innerHTML;return n(s),d}function g(e){return"function"==typeof e}function m(e,t){const{cellRenderer:n,headerRenderer:r,children:o,nestedTable:s}=e,d=i(e,["cellRenderer","headerRenderer","children","nestedTable"]),a=String(e.accessor),l=Object.assign({},d);if(n&&(l.cellRenderer="function"==typeof n&&n.length>=2?u(t,a,"cell",n):n),r&&(l.headerRenderer="function"==typeof r&&r.length>=2?u(t,a,"header",r):r),o&&(l.children=o.map(e=>m(e,t))),s){const e=Object.assign(Object.assign({},s),{rows:[]});l.nestedTable=h(e,t)}return l}function f(e){var t;const n=null!==(t=e.columns)&&void 0!==t?t:e.defaultHeaders;if(!n)throw new Error("SimpleTable requires `columns` or `defaultHeaders`");return n}function h(e,r){const{rows:o,footerRenderer:d,emptyStateRenderer:a,errorStateRenderer:l,loadingStateRenderer:u,headerDropdown:h,columnEditorConfig:R,icons:b,tableEmptyStateRenderer:v,rowButtons:C,onColumnOrderChange:w,onColumnWidthChange:O,onHeaderEdit:y,onColumnSelect:E,enableColumnEditor:_,editColumns:S,enableColumnEditorInitOpen:H,editColumnsInitOpen:j,enablePagination:B,shouldPaginate:I,onTableReady:P,onGridReady:k,hoverRowBackground:T,useHoverRowBackground:A,oddColumnBackground:L,useOddColumnBackground:$,oddEvenRowBackground:x,useOddEvenRowBackground:M}=e,D=i(e,["defaultHeaders","columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","editColumns","enableColumnEditorInitOpen","editColumnsInitOpen","enablePagination","shouldPaginate","onTableReady","onGridReady","hoverRowBackground","useHoverRowBackground","oddColumnBackground","useOddColumnBackground","oddEvenRowBackground","useOddEvenRowBackground"]),V=f(e);r.pruneRendererCaches(s(V));const G=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},D),{rows:o,defaultHeaders:V.map(e=>m(e,r)),editColumns:null!=_?_:S,editColumnsInitOpen:null!=H?H:j,shouldPaginate:null!=B?B:I,onGridReady:null!=P?P:k,useHoverRowBackground:null!=T?T:A,useOddColumnBackground:null!=L?L:$,useOddEvenRowBackground:null!=x?x:M,onRendererHostDiscard:r.disposeHost}),w?{onColumnOrderChange:e=>w(e)}:{}),O?{onColumnWidthChange:e=>O(e)}:{}),y?{onHeaderEdit:(e,t)=>y(e,t)}:{}),E?{onColumnSelect:e=>E(e)}:{});return void 0!==v&&(null===v?G.tableEmptyStateRenderer=null:"string"==typeof v||v instanceof HTMLElement?G.tableEmptyStateRenderer=v:g(v)&&(G.tableEmptyStateRenderer=function(e,r){const o=document.createElement("div"),s=t(r,{target:o,props:{}});return e.register(o,()=>{n(s)}),o}(r,v))),void 0!==d&&(G.footerRenderer="function"==typeof d&&d.length>=2?c(r,d):d),void 0!==a&&(G.emptyStateRenderer="function"==typeof a&&a.length>=2?c(r,a):a),void 0!==l&&(G.errorStateRenderer="function"==typeof l&&l.length>=2?c(r,l):l),void 0!==u&&(G.loadingStateRenderer="function"==typeof u&&u.length>=2?c(r,u):u),void 0!==h&&(G.headerDropdown=c(r,h)),void 0!==R&&(G.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:c(t,n)}:{}),r?{customRenderer:c(t,r)}:{})}(R,r)),void 0!==b&&(G.icons=function(e){const t={};for(const[n,r]of Object.entries(e))null!=r&&("string"==typeof r||r instanceof HTMLElement||r instanceof SVGElement?t[n]=r:g(r)&&(t[n]=p(r,{})));return t}(b)),void 0!==C&&(G.rowButtons=C.map(e=>c(r,e))),G}"function"==typeof SuppressedError&&SuppressedError;const R="data-st-mount-id";class b{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(R);null!==n&&t.push(n),e.querySelectorAll(`[${R}]`).forEach(e=>{const n=e.getAttribute(R);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(R,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}}var v=e.from_html("<div></div>");function C(t,n){const s=e.legacy_rest_props(n,["children","$$slots","$$events","$$legacy"]),i=e.legacy_rest_props(s,["getAPI","rows","defaultHeaders","columns"]);e.push(n,!1);let c=e.prop(n,"rows",8),u=e.prop(n,"defaultHeaders",8,void 0),p=e.prop(n,"columns",8,void 0),g=e.mutable_source(),m=e.mutable_source(null);const R=new b;let C=e.mutable_source(void 0),w=e.mutable_source(void 0);function O(){var t;return null!==(t=null===e.get(m)||void 0===e.get(m)?void 0:e.get(m).getAPI())&&void 0!==t?t:null}r(()=>{const t=Object.assign({rows:c(),defaultHeaders:u(),columns:p()},i);e.set(m,new d(e.get(g),h(t,R))),e.get(m).mount(),e.set(C,f(t)),e.set(w,c())}),o(()=>{null===e.get(m)||void 0===e.get(m)||e.get(m).destroy(),e.set(m,null),e.set(C,void 0),e.set(w,void 0),R.clear()}),e.legacy_pre_effect(()=>(e.get(m),e.deep_read_state(c()),e.deep_read_state(u()),e.deep_read_state(p()),e.deep_read_state(i),e.get(C),e.get(w)),()=>{if(e.get(m)){const t=Object.assign({rows:c(),defaultHeaders:u(),columns:p()},i),n=h(t,R),r=Object.assign({},n),o=f(t),s=a(e.get(C),o);e.set(C,o),s&&delete r.defaultHeaders;const d=l(e.get(w),c(),t.getRowId);e.set(w,c()),d&&delete r.rows,e.get(m).update(r)}}),e.legacy_pre_effect_reset();var y={getAPI:O};e.init();var E=v();return e.bind_this(E,t=>e.set(g,t),()=>e.get(g)),e.append(t,E),e.bind_prop(n,"getAPI",O),e.pop(y)}export{C as SimpleTable};
1
+ import"svelte/internal/disclose-version";import"svelte/internal/flags/legacy";import*as e from"svelte/internal/client";import{mount as t,unmount as n,onMount as r,onDestroy as o}from"svelte";import{collectHeaderAccessors as s,SimpleTableVanilla as i,headersStructurallyEqual as a,rowsShallowUnchanged as c}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 l(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 d(e,r){return o=>{const s=document.createElement("div"),i=t(r,{target:s,props:o});return e.register(s,()=>{n(i)}),s}}function u(e,r,o,s){const i="cell"===o?e.cellRendererCache:e.headerRendererCache,a=i.get(r);if(a)return a.component=s,a.wrapped;const c={component:s,wrapped:null},l=r=>{const o=document.createElement("div"),s=t(c.component,{target:o,props:r});return e.register(o,()=>{n(s)}),o};return c.wrapped=l,i.set(r,c),l}function p(e,r={}){const o=document.createElement("div"),s=t(e,{target:o,props:r}),i=o.innerHTML;return n(s),i}function g(e){return"function"==typeof e}function m(e,t){const{cellRenderer:n,headerRenderer:r,children:o,nestedTable:s}=e,i=l(e,["cellRenderer","headerRenderer","children","nestedTable"]),a=String(e.accessor),c=Object.assign({},i);if(n&&(c.cellRenderer="function"==typeof n&&n.length>=2?u(t,a,"cell",n):n),r&&(c.headerRenderer="function"==typeof r&&r.length>=2?u(t,a,"header",r):r),o&&(c.children=o.map(e=>m(e,t))),s){const e=Object.assign(Object.assign({},s),{rows:[]});c.nestedTable=h(e,t)}return c}function f(e){const t=e.columns;if(!t)throw new Error("SimpleTable requires `columns`");return t}function h(e,r){const{rows:o,footerRenderer:i,emptyStateRenderer:a,errorStateRenderer:c,loadingStateRenderer:u,headerDropdown:h,columnEditorConfig:b,icons:R,tableEmptyStateRenderer:v,rowButtons:C,onColumnOrderChange:w,onColumnWidthChange:y,onHeaderEdit:E,onColumnSelect:O,enableColumnEditor:_,enableColumnEditorInitOpen:S,enablePagination:j,onTableReady:I,hoverRowBackground:P,oddColumnBackground:T,oddEvenRowBackground:A}=e,B=l(e,["columns","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect","enableColumnEditor","enableColumnEditorInitOpen","enablePagination","onTableReady","hoverRowBackground","oddColumnBackground","oddEvenRowBackground"]),k=f(e);r.pruneRendererCaches(s(k));const H=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},B),{rows:o,columns:k.map(e=>m(e,r)),enableColumnEditor:_,enableColumnEditorInitOpen:S,enablePagination:j,onTableReady:I,hoverRowBackground:P,oddColumnBackground:T,oddEvenRowBackground:A,onRendererHostDiscard:r.disposeHost}),w?{onColumnOrderChange:e=>w(e)}:{}),y?{onColumnWidthChange:e=>y(e)}:{}),E?{onHeaderEdit:(e,t)=>E(e,t)}:{}),O?{onColumnSelect:e=>O(e)}:{});return void 0!==v&&(null===v?H.tableEmptyStateRenderer=null:"string"==typeof v||v instanceof HTMLElement?H.tableEmptyStateRenderer=v:g(v)&&(H.tableEmptyStateRenderer=function(e,r){const o=document.createElement("div"),s=t(r,{target:o,props:{}});return e.register(o,()=>{n(s)}),o}(r,v))),void 0!==i&&(H.footerRenderer="function"==typeof i&&i.length>=2?d(r,i):i),void 0!==a&&(H.emptyStateRenderer="function"==typeof a&&a.length>=2?d(r,a):a),void 0!==c&&(H.errorStateRenderer="function"==typeof c&&c.length>=2?d(r,c):c),void 0!==u&&(H.loadingStateRenderer="function"==typeof u&&u.length>=2?d(r,u):u),void 0!==h&&(H.headerDropdown=d(r,h)),void 0!==b&&(H.columnEditorConfig=function(e,t){const{rowRenderer:n,customRenderer:r}=e,o=l(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),n?{rowRenderer:d(t,n)}:{}),r?{customRenderer:d(t,r)}:{})}(b,r)),void 0!==R&&(H.icons=function(e){const t={};for(const[n,r]of Object.entries(e))null!=r&&("string"==typeof r||r instanceof HTMLElement||r instanceof SVGElement?t[n]=r:g(r)&&(t[n]=p(r,{})));return t}(R)),void 0!==C&&(H.rowButtons=C.map(e=>d(r,e))),H}"function"==typeof SuppressedError&&SuppressedError;const b="data-st-mount-id";class R{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(b);null!==n&&t.push(n),e.querySelectorAll(`[${b}]`).forEach(e=>{const n=e.getAttribute(b);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(b,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}}var v=e.from_html("<div></div>");function C(t,n){const s=e.legacy_rest_props(n,["children","$$slots","$$events","$$legacy"]),l=e.legacy_rest_props(s,["getAPI","rows","columns"]);e.push(n,!1);let d=e.prop(n,"rows",8),u=e.prop(n,"columns",8,void 0),p=e.mutable_source(),g=e.mutable_source(null);const m=new R;let b=e.mutable_source(void 0),C=e.mutable_source(void 0);function w(){var t;return null!==(t=null===e.get(g)||void 0===e.get(g)?void 0:e.get(g).getAPI())&&void 0!==t?t:null}r(()=>{const t=Object.assign({rows:d(),columns:u()},l);e.set(g,new i(e.get(p),h(t,m))),e.get(g).mount(),e.set(b,f(t)),e.set(C,d())}),o(()=>{null===e.get(g)||void 0===e.get(g)||e.get(g).destroy(),e.set(g,null),e.set(b,void 0),e.set(C,void 0),m.clear()}),e.legacy_pre_effect(()=>(e.get(g),e.deep_read_state(d()),e.deep_read_state(u()),e.deep_read_state(l),e.get(b),e.get(C)),()=>{if(e.get(g)){const t=Object.assign({rows:d(),columns:u()},l),n=h(t,m),r=Object.assign({},n),o=f(t),s=a(e.get(b),o);e.set(b,o),s&&delete r.columns;const i=c(e.get(C),d(),t.getRowId);e.set(C,d()),i&&delete r.rows,e.get(g).update(r)}}),e.legacy_pre_effect_reset();var y={getAPI:w};e.init();var E=v();return e.bind_this(E,t=>e.set(p,t),()=>e.get(p)),e.append(t,E),e.bind_prop(n,"getAPI",w),e.pop(y)}export{C as SimpleTable};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/SimpleTable.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { onMount, onDestroy } from \"svelte\";\n import {\n SimpleTableVanilla,\n headersStructurallyEqual,\n rowsShallowUnchanged,\n } from \"simple-table-core\";\n import type { SimpleTableConfig, TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig, resolveSvelteColumns } from \"./buildVanillaConfig\";\n import { MountRegistry } from \"./MountRegistry\";\n import type { SimpleTableSvelteProps, TableInstance } from \"./types\";\n\n // SimpleTable — Svelte adapter for simple-table-core.\n // Accepts the same props as SimpleTableProps with Svelte component types for renderers.\n // Use bind:this={tableRef} to access the TableAPI: tableRef.getAPI()?.sort(...)\n\n type $$Props = SimpleTableSvelteProps;\n\n export let rows: $$Props[\"rows\"];\n export let defaultHeaders: $$Props[\"defaultHeaders\"] = undefined;\n export let columns: $$Props[\"columns\"] = undefined;\n\n // All remaining optional props — spread via $$restProps\n let container: HTMLDivElement;\n let instance: TableInstance | null = null;\n const registry = new MountRegistry();\n\n /** Last headers/rows whose structure/content was applied via update. */\n let syncedDefaultHeaders: ReadonlyArray<\n NonNullable<$$Props[\"columns\"]>[number]\n > | undefined = undefined;\n let syncedRows: $$Props[\"rows\"] | undefined = undefined;\n\n onMount(() => {\n const props = { rows, defaultHeaders, columns, ...$$restProps } as SimpleTableSvelteProps;\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(props, registry),\n ) as unknown as TableInstance;\n instance.mount();\n syncedDefaultHeaders = resolveSvelteColumns(props);\n syncedRows = rows;\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n syncedDefaultHeaders = undefined;\n syncedRows = undefined;\n registry.clear();\n });\n\n // Reactive update: skip no-op columns/rows when structure/content is unchanged.\n $: if (instance) {\n const props = { rows, defaultHeaders, columns, ...$$restProps } as SimpleTableSvelteProps;\n const fullConfig = buildVanillaConfig(props, registry);\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveSvelteColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(syncedDefaultHeaders, resolvedColumns);\n syncedDefaultHeaders = resolvedColumns;\n if (headersUnchanged) {\n delete patch.defaultHeaders;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n syncedRows as ReadonlyArray<object> | undefined,\n rows as ReadonlyArray<object>,\n props.getRowId,\n );\n syncedRows = rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n instance.update(patch);\n }\n\n /** Expose the TableAPI for consumers using bind:this. */\n export function getAPI(): TableAPI | null {\n return instance?.getAPI() ?? null;\n }\n</script>\n\n<div bind:this={container}></div>\n"],"names":["div","root","$$value","$","set","container","get"],"mappings":"i8NAoFCA,EAAGC,uBAAHD,EAAGE,GAAAC,EAAAC,IAAYC,EAASH,GAAA,IAAAC,EAAAG,IAATD,eAAfL,qCAFO"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/SimpleTable.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { onMount, onDestroy } from \"svelte\";\n import {\n SimpleTableVanilla,\n headersStructurallyEqual,\n rowsShallowUnchanged,\n } from \"simple-table-core\";\n import type { SimpleTableConfig, TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig, resolveSvelteColumns } from \"./buildVanillaConfig\";\n import { MountRegistry } from \"./MountRegistry\";\n import type { SimpleTableSvelteProps, TableInstance } from \"./types\";\n\n // SimpleTable — Svelte adapter for simple-table-core.\n // Accepts the same props as SimpleTableProps with Svelte component types for renderers.\n // Use bind:this={tableRef} to access the TableAPI: tableRef.getAPI()?.sort(...)\n\n type $$Props = SimpleTableSvelteProps;\n\n export let rows: $$Props[\"rows\"];\n export let columns: $$Props[\"columns\"] = undefined;\n\n // All remaining optional props — spread via $$restProps\n let container: HTMLDivElement;\n let instance: TableInstance | null = null;\n const registry = new MountRegistry();\n\n /** Last headers/rows whose structure/content was applied via update. */\n let syncedColumns: ReadonlyArray<\n NonNullable<$$Props[\"columns\"]>[number]\n > | undefined = undefined;\n let syncedRows: $$Props[\"rows\"] | undefined = undefined;\n\n onMount(() => {\n const props = { rows, columns, ...$$restProps } as SimpleTableSvelteProps;\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(props, registry),\n ) as unknown as TableInstance;\n instance.mount();\n syncedColumns = resolveSvelteColumns(props);\n syncedRows = rows;\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n syncedColumns = undefined;\n syncedRows = undefined;\n registry.clear();\n });\n\n // Reactive update: skip no-op columns/rows when structure/content is unchanged.\n $: if (instance) {\n const props = { rows, columns, ...$$restProps } as SimpleTableSvelteProps;\n const fullConfig = buildVanillaConfig(props, registry);\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveSvelteColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(syncedColumns, resolvedColumns);\n syncedColumns = resolvedColumns;\n if (headersUnchanged) {\n delete patch.columns;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n syncedRows as ReadonlyArray<object> | undefined,\n rows as ReadonlyArray<object>,\n props.getRowId,\n );\n syncedRows = rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n instance.update(patch);\n }\n\n /** Expose the TableAPI for consumers using bind:this. */\n export function getAPI(): TableAPI | null {\n return instance?.getAPI() ?? null;\n }\n</script>\n\n<div bind:this={container}></div>\n"],"names":["div","root","$$value","$","set","container","get"],"mappings":"g5MAmFCA,EAAGC,uBAAHD,EAAGE,GAAAC,EAAAC,IAAYC,EAASH,GAAA,IAAAC,EAAAG,IAATD,eAAfL,qCAFO"}
@@ -1,6 +1,6 @@
1
- import type { SimpleTableConfig, HeaderObject } from "simple-table-core";
2
- import type { SimpleTableSvelteProps, SvelteHeaderObject } from "./types";
1
+ import type { SimpleTableConfig, ColumnDef } from "simple-table-core";
2
+ import type { SimpleTableSvelteProps, SvelteColumnDef } from "./types";
3
3
  import type { MountRegistry } from "./MountRegistry";
4
- /** Resolve preferred `columns` or legacy `defaultHeaders`. */
5
- export declare function resolveSvelteColumns(config: Pick<SimpleTableSvelteProps, "columns" | "defaultHeaders">): ReadonlyArray<HeaderObject | SvelteHeaderObject>;
4
+ /** Resolve column definitions. */
5
+ export declare function resolveSvelteColumns(config: Pick<SimpleTableSvelteProps, "columns">): ReadonlyArray<ColumnDef | SvelteColumnDef>;
6
6
  export declare function buildVanillaConfig(config: SimpleTableSvelteProps, registry: MountRegistry): SimpleTableConfig;
@@ -1,5 +1,5 @@
1
1
  export { default as SimpleTable } from "./SimpleTable.svelte";
2
2
  export { asRows } from "simple-table-core";
3
- export type { SimpleTableSvelteProps, TableInstance, SvelteHeaderObject, SvelteColumnDef, SvelteIconsConfig, SvelteIconElement, SvelteColumnEditorConfig, SvelteCellRenderer, SvelteHeaderRenderer, SvelteFooterRenderer, SvelteHeaderDropdown, SvelteColumnEditorRowRenderer, SvelteColumnEditorCustomRenderer, SvelteRowButton, SvelteLoadingStateRenderer, SvelteErrorStateRenderer, SvelteEmptyStateRenderer, } 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 { SimpleTableSvelteProps, TableInstance, SvelteColumnDef, SvelteIconsConfig, SvelteIconElement, SvelteColumnEditorConfig, SvelteCellRenderer, SvelteHeaderRenderer, SvelteFooterRenderer, SvelteHeaderDropdown, SvelteColumnEditorRowRenderer, SvelteColumnEditorCustomRenderer, SvelteRowButton, SvelteLoadingStateRenderer, SvelteErrorStateRenderer, SvelteEmptyStateRenderer, } 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 } from "svelte";
2
- import type { SimpleTableProps, SimpleTableConfig, HeaderObject, Row, TableAPI, CellRenderer, CellRendererProps, HeaderRenderer, HeaderRendererProps, FooterRendererProps, LoadingStateRendererProps, ErrorStateRendererProps, EmptyStateRendererProps, HeaderDropdownProps, ColumnEditorRowRendererProps, ColumnEditorCustomRendererProps, ColumnEditorConfig, RowButtonProps } from "simple-table-core";
2
+ import type { SimpleTableProps, SimpleTableConfig, ColumnDef, Row, TableAPI, CellRenderer, CellRendererProps, HeaderRenderer, 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,32 +35,25 @@ export interface SvelteColumnEditorConfig extends Omit<ColumnEditorConfig, "rowR
35
35
  customRenderer?: SvelteColumnEditorCustomRenderer;
36
36
  }
37
37
  /**
38
- * Column definition for `columns` / `defaultHeaders`: core column metadata with
39
- * Svelte-only renderer fields. `columns` / `defaultHeaders` also accept plain
40
- * `HeaderObject[]` from shared configs.
38
+ * Column definition for `columns`: core column metadata with
39
+ * Svelte-only renderer fields. `columns` also accept plain
40
+ * `ColumnDef[]` from shared configs.
41
41
  */
42
- export interface SvelteHeaderObject extends Omit<HeaderObject, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
42
+ export interface SvelteColumnDef extends Omit<ColumnDef, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
43
43
  cellRenderer?: SvelteCellRenderer;
44
44
  headerRenderer?: SvelteHeaderRenderer;
45
- children?: SvelteHeaderObject[];
45
+ children?: SvelteColumnDef[];
46
46
  nestedTable?: Omit<SimpleTableSvelteProps, "rows" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer">;
47
47
  }
48
- /** Preferred name for Svelte column definitions. Alias of {@link SvelteHeaderObject}. */
49
- export type SvelteColumnDef = SvelteHeaderObject;
50
- export interface SimpleTableSvelteProps extends Omit<SimpleTableProps, "rows" | "defaultHeaders" | "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rowButtons" | "onColumnOrderChange" | "onColumnWidthChange" | "onHeaderEdit" | "onColumnSelect"> {
51
- /**
52
- * Column definitions.
53
- * @deprecated Prefer {@link columns}
54
- */
55
- defaultHeaders?: ReadonlyArray<HeaderObject | SvelteHeaderObject>;
56
- /** Column definitions. Preferred over `defaultHeaders`. */
57
- columns?: ReadonlyArray<HeaderObject | SvelteHeaderObject>;
48
+ export interface SimpleTableSvelteProps extends Omit<SimpleTableProps, "rows" | "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rowButtons" | "onColumnOrderChange" | "onColumnWidthChange" | "onHeaderEdit" | "onColumnSelect"> {
49
+ /** Column definitions. */
50
+ columns?: ReadonlyArray<ColumnDef | SvelteColumnDef>;
58
51
  /** Row data: domain objects or core `Row[]`; cast inside the adapter. */
59
52
  rows: ReadonlyArray<Row> | ReadonlyArray<object>;
60
- onColumnOrderChange?: (newHeaders: SvelteHeaderObject[]) => void;
61
- onColumnWidthChange?: (headers: SvelteHeaderObject[]) => void;
62
- onHeaderEdit?: (header: SvelteHeaderObject, newLabel: string) => void;
63
- onColumnSelect?: (header: SvelteHeaderObject) => void;
53
+ onColumnOrderChange?: (newHeaders: SvelteColumnDef[]) => void;
54
+ onColumnWidthChange?: (headers: SvelteColumnDef[]) => void;
55
+ onHeaderEdit?: (header: SvelteColumnDef, newLabel: string) => void;
56
+ onColumnSelect?: (header: SvelteColumnDef) => void;
64
57
  footerRenderer?: SvelteFooterRenderer;
65
58
  loadingStateRenderer?: SvelteLoadingStateRenderer;
66
59
  errorStateRenderer?: SvelteErrorStateRenderer;
@@ -9,7 +9,7 @@ import type { MountRegistry } from "../MountRegistry";
9
9
  export declare function wrapSvelteRenderer<P extends Record<string, any>>(registry: MountRegistry, component: Component<P>): (props: P) => HTMLElement;
10
10
  /**
11
11
  * Like {@link wrapSvelteRenderer}, but reuses one wrapper per accessor so
12
- * unstable column rebuilds keep a stable function identity on HeaderObject.
12
+ * unstable column rebuilds keep a stable function identity on ColumnDef.
13
13
  */
14
14
  export declare function wrapCachedSvelteRenderer<P extends Record<string, any>>(registry: MountRegistry, accessor: string, kind: "cell" | "header", component: Component<P>): (props: P) => HTMLElement;
15
15
  /** Mount a Svelte component into a div for vanilla-only slots (e.g. table empty state). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simple-table/svelte",
3
- "version": "4.0.4",
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
  "svelte": ">=4.0.0"
33
33
  },
34
34
  "dependencies": {
35
- "simple-table-core": "4.0.4"
35
+ "simple-table-core": "4.0.5"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@rollup/plugin-alias": "4.0.0",