@simple-table/svelte 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 +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/types/buildVanillaConfig.d.ts +4 -4
- package/dist/types/index.d.ts +2 -2
- package/dist/types/types.d.ts +13 -20
- package/dist/types/utils/wrapSvelteRenderer.d.ts +1 -1
- package/package.json +2 -2
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
|
|
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
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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
|
|
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
|
|
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
|
package/dist/index.es.js.map
CHANGED
|
@@ -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
|
|
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,
|
|
2
|
-
import type { SimpleTableSvelteProps,
|
|
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
|
|
5
|
-
export declare function resolveSvelteColumns(config: Pick<SimpleTableSvelteProps, "columns"
|
|
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;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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,
|
|
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,
|
|
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";
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Component } from "svelte";
|
|
2
|
-
import type { SimpleTableProps, SimpleTableConfig,
|
|
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
|
|
39
|
-
* Svelte-only renderer fields. `columns`
|
|
40
|
-
* `
|
|
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
|
|
42
|
+
export interface SvelteColumnDef extends Omit<ColumnDef, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
|
|
43
43
|
cellRenderer?: SvelteCellRenderer;
|
|
44
44
|
headerRenderer?: SvelteHeaderRenderer;
|
|
45
|
-
children?:
|
|
45
|
+
children?: SvelteColumnDef[];
|
|
46
46
|
nestedTable?: Omit<SimpleTableSvelteProps, "rows" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer">;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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:
|
|
61
|
-
onColumnWidthChange?: (headers:
|
|
62
|
-
onHeaderEdit?: (header:
|
|
63
|
-
onColumnSelect?: (header:
|
|
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
|
|
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.
|
|
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",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"svelte": ">=4.0.0"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"simple-table-core": "4.0.
|
|
35
|
+
"simple-table-core": "4.0.6"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@rollup/plugin-alias": "4.0.0",
|