@simple-table/svelte 3.9.1 → 3.9.2

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"),r=require("simple-table-core");function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var o=n(e);function a(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function s(e){return r=>{const n=document.createElement("div");return t.mount(e,{target:n,props:r}),n}}function d(e,r={}){const n=document.createElement("div");return t.mount(e,{target:n,props:r}),n.innerHTML}function l(e){return"function"==typeof e}function i(e){const{cellRenderer:t,headerRenderer:r,children:n,nestedTable:o}=e,d=a(e,["cellRenderer","headerRenderer","children","nestedTable"]),l=Object.assign({},d);if(t&&(l.cellRenderer="function"==typeof t&&t.length>=2?s(t):t),r&&(l.headerRenderer="function"==typeof r&&r.length>=2?s(r):r),n&&(l.children=n.map(i)),o){const e=Object.assign(Object.assign({},o),{rows:[]});l.nestedTable=c(e)}return l}function c(e){const{defaultHeaders:r,rows:n,footerRenderer:o,emptyStateRenderer:c,errorStateRenderer:u,loadingStateRenderer:p,headerDropdown:f,columnEditorConfig:g,icons:m,tableEmptyStateRenderer:b,rowButtons:y,onColumnOrderChange:v,onColumnWidthChange:O,onHeaderEdit:h,onColumnSelect:R}=e,j=a(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect"]),w=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},j),{rows:n,defaultHeaders:r.map(i)}),v?{onColumnOrderChange:e=>v(e)}:{}),O?{onColumnWidthChange:e=>O(e)}:{}),h?{onHeaderEdit:(e,t)=>h(e,t)}:{}),R?{onColumnSelect:e=>R(e)}:{});return void 0!==b&&(null===b?w.tableEmptyStateRenderer=null:"string"==typeof b||b instanceof HTMLElement?w.tableEmptyStateRenderer=b:l(b)&&(w.tableEmptyStateRenderer=function(e){const r=document.createElement("div");return t.mount(e,{target:r,props:{}}),r}(b))),void 0!==o&&(w.footerRenderer="function"==typeof o&&o.length>=2?s(o):o),void 0!==c&&(w.emptyStateRenderer="function"==typeof c&&c.length>=2?s(c):c),void 0!==u&&(w.errorStateRenderer="function"==typeof u&&u.length>=2?s(u):u),void 0!==p&&(w.loadingStateRenderer="function"==typeof p&&p.length>=2?s(p):p),void 0!==f&&(w.headerDropdown=s(f)),void 0!==g&&(w.columnEditorConfig=function(e){const{rowRenderer:t,customRenderer:r}=e,n=a(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},n),t?{rowRenderer:s(t)}:{}),r?{customRenderer:s(r)}:{})}(g)),void 0!==m&&(w.icons=function(e){const t={};for(const[r,n]of Object.entries(e))null!=n&&("string"==typeof n||n instanceof HTMLElement||n instanceof SVGElement?t[r]=n:l(n)&&(t[r]=d(n,{})));return t}(m)),void 0!==y&&(w.rowButtons=y.map(e=>s(e))),w}"function"==typeof SuppressedError&&SuppressedError;var u=o.from_html("<div></div>");Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return r.asRows}}),exports.SimpleTable=function(e,n){const a=o.legacy_rest_props(n,["children","$$slots","$$events","$$legacy"]),s=o.legacy_rest_props(a,["getAPI","rows","defaultHeaders"]);o.push(n,!1);let d=o.prop(n,"rows",8),l=o.prop(n,"defaultHeaders",8),i=o.mutable_source(),p=o.mutable_source(null);function f(){var e;return null!==(e=null===o.get(p)||void 0===o.get(p)?void 0:o.get(p).getAPI())&&void 0!==e?e:null}t.onMount(()=>{o.set(p,new r.SimpleTableVanilla(o.get(i),c(Object.assign({rows:d(),defaultHeaders:l()},s)))),o.get(p).mount()}),t.onDestroy(()=>{null===o.get(p)||void 0===o.get(p)||o.get(p).destroy(),o.set(p,null)}),o.legacy_pre_effect(()=>(o.get(p),o.deep_read_state(d()),o.deep_read_state(l()),o.deep_read_state(s)),()=>{o.get(p)&&o.get(p).update(c(Object.assign({rows:d(),defaultHeaders:l()},s)))}),o.legacy_pre_effect_reset();var g={getAPI:f};o.init();var m=u();return o.bind_this(m,e=>o.set(i,e),()=>o.get(i)),o.append(e,m),o.bind_prop(n,"getAPI",f),o.pop(g)};
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"),r=require("simple-table-core");function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var o=n(e);function s(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function i(e,r){return n=>{const o=document.createElement("div"),s=t.mount(r,{target:o,props:n});return e.register(o,()=>{t.unmount(s)}),o}}function a(e,r={}){const n=document.createElement("div"),o=t.mount(e,{target:n,props:r}),s=n.innerHTML;return t.unmount(o),s}function l(e){return"function"==typeof e}function d(e,t){const{cellRenderer:r,headerRenderer:n,children:o,nestedTable:a}=e,l=s(e,["cellRenderer","headerRenderer","children","nestedTable"]),c=Object.assign({},l);if(r&&(c.cellRenderer="function"==typeof r&&r.length>=2?i(t,r):r),n&&(c.headerRenderer="function"==typeof n&&n.length>=2?i(t,n):n),o&&(c.children=o.map(e=>d(e,t))),a){const e=Object.assign(Object.assign({},a),{rows:[]});c.nestedTable=u(e,t)}return c}function u(e,r){const{defaultHeaders:n,rows:o,footerRenderer:u,emptyStateRenderer:c,errorStateRenderer:f,loadingStateRenderer:p,headerDropdown:g,columnEditorConfig:m,icons:b,tableEmptyStateRenderer:h,rowButtons:y,onColumnOrderChange:v,onColumnWidthChange:O,onHeaderEdit:R,onColumnSelect:j}=e,w=s(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect"]),S=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},w),{rows:o,defaultHeaders:n.map(e=>d(e,r)),onRendererHostDiscard:r.disposeHost}),v?{onColumnOrderChange:e=>v(e)}:{}),O?{onColumnWidthChange:e=>O(e)}:{}),R?{onHeaderEdit:(e,t)=>R(e,t)}:{}),j?{onColumnSelect:e=>j(e)}:{});return void 0!==h&&(null===h?S.tableEmptyStateRenderer=null:"string"==typeof h||h instanceof HTMLElement?S.tableEmptyStateRenderer=h:l(h)&&(S.tableEmptyStateRenderer=function(e,r){const n=document.createElement("div"),o=t.mount(r,{target:n,props:{}});return e.register(n,()=>{t.unmount(o)}),n}(r,h))),void 0!==u&&(S.footerRenderer="function"==typeof u&&u.length>=2?i(r,u):u),void 0!==c&&(S.emptyStateRenderer="function"==typeof c&&c.length>=2?i(r,c):c),void 0!==f&&(S.errorStateRenderer="function"==typeof f&&f.length>=2?i(r,f):f),void 0!==p&&(S.loadingStateRenderer="function"==typeof p&&p.length>=2?i(r,p):p),void 0!==g&&(S.headerDropdown=i(r,g)),void 0!==m&&(S.columnEditorConfig=function(e,t){const{rowRenderer:r,customRenderer:n}=e,o=s(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),r?{rowRenderer:i(t,r)}:{}),n?{customRenderer:i(t,n)}:{})}(m,r)),void 0!==b&&(S.icons=function(e){const t={};for(const[r,n]of Object.entries(e))null!=n&&("string"==typeof n||n instanceof HTMLElement||n instanceof SVGElement?t[r]=n:l(n)&&(t[r]=a(n,{})));return t}(b)),void 0!==y&&(S.rowButtons=y.map(e=>i(r,e))),S}"function"==typeof SuppressedError&&SuppressedError;const c="data-st-mount-id";class f{constructor(){this.entries=new Map,this.nextId=0,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const t=[],r=e.getAttribute(c);null!==r&&t.push(r),e.querySelectorAll(`[${c}]`).forEach(e=>{const r=e.getAttribute(c);null!==r&&t.push(r)});for(const e of t){const t=this.entries.get(e);t&&(this.entries.delete(e),t())}}}register(e,t){const r="st-mount-"+this.nextId++;e.setAttribute(c,r),this.entries.set(r,t)}clear(){for(const e of this.entries.values())e();this.entries.clear()}get size(){return this.entries.size}}var p=o.from_html("<div></div>");Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return r.asRows}}),exports.SimpleTable=function(e,n){const s=o.legacy_rest_props(n,["children","$$slots","$$events","$$legacy"]),i=o.legacy_rest_props(s,["getAPI","rows","defaultHeaders"]);o.push(n,!1);let a=o.prop(n,"rows",8),l=o.prop(n,"defaultHeaders",8),d=o.mutable_source(),c=o.mutable_source(null);const g=new f;function m(){var e;return null!==(e=null===o.get(c)||void 0===o.get(c)?void 0:o.get(c).getAPI())&&void 0!==e?e:null}t.onMount(()=>{o.set(c,new r.SimpleTableVanilla(o.get(d),u(Object.assign({rows:a(),defaultHeaders:l()},i),g))),o.get(c).mount()}),t.onDestroy(()=>{null===o.get(c)||void 0===o.get(c)||o.get(c).destroy(),o.set(c,null),g.clear()}),o.legacy_pre_effect(()=>(o.get(c),o.deep_read_state(a()),o.deep_read_state(l()),o.deep_read_state(i)),()=>{o.get(c)&&o.get(c).update(u(Object.assign({rows:a(),defaultHeaders:l()},i),g))}),o.legacy_pre_effect_reset();var b={getAPI:m};o.init();var h=p();return o.bind_this(h,e=>o.set(d,e),()=>o.get(d)),o.append(e,h),o.bind_prop(n,"getAPI",m),o.pop(b)};
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 { SimpleTableVanilla } from \"simple-table-core\";\n import type { TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig } from \"./buildVanillaConfig\";\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\"];\n\n // All remaining optional props — spread via $$restProps\n let container: HTMLDivElement;\n let instance: TableInstance | null = null;\n\n onMount(() => {\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig({ rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps)\n ) as unknown as TableInstance;\n instance.mount();\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n });\n\n // Reactive update: re-run whenever any prop changes.\n $: if (instance) {\n instance.update(\n buildVanillaConfig({ rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps)\n );\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":"y3IA8CCA,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 { SimpleTableVanilla } from \"simple-table-core\";\n import type { TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig } 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\"];\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 onMount(() => {\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(\n { rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps,\n registry,\n ),\n ) as unknown as TableInstance;\n instance.mount();\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n registry.clear();\n });\n\n // Reactive update: re-run whenever any prop changes.\n $: if (instance) {\n instance.update(\n buildVanillaConfig(\n { rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps,\n registry,\n ),\n );\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":"4nKAuDCA,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,onMount as n,onDestroy as r}from"svelte";import{SimpleTableVanilla as o}from"simple-table-core";export{asRows}from"simple-table-core";function a(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){return n=>{const r=document.createElement("div");return t(e,{target:r,props:n}),r}}function s(e,n={}){const r=document.createElement("div");return t(e,{target:r,props:n}),r.innerHTML}function l(e){return"function"==typeof e}function i(e){const{cellRenderer:t,headerRenderer:n,children:r,nestedTable:o}=e,s=a(e,["cellRenderer","headerRenderer","children","nestedTable"]),l=Object.assign({},s);if(t&&(l.cellRenderer="function"==typeof t&&t.length>=2?d(t):t),n&&(l.headerRenderer="function"==typeof n&&n.length>=2?d(n):n),r&&(l.children=r.map(i)),o){const e=Object.assign(Object.assign({},o),{rows:[]});l.nestedTable=c(e)}return l}function c(e){const{defaultHeaders:n,rows:r,footerRenderer:o,emptyStateRenderer:c,errorStateRenderer:u,loadingStateRenderer:p,headerDropdown:f,columnEditorConfig:g,icons:m,tableEmptyStateRenderer:b,rowButtons:y,onColumnOrderChange:v,onColumnWidthChange:h,onHeaderEdit:R,onColumnSelect:O}=e,w=a(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect"]),S=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},w),{rows:r,defaultHeaders:n.map(i)}),v?{onColumnOrderChange:e=>v(e)}:{}),h?{onColumnWidthChange:e=>h(e)}:{}),R?{onHeaderEdit:(e,t)=>R(e,t)}:{}),O?{onColumnSelect:e=>O(e)}:{});return void 0!==b&&(null===b?S.tableEmptyStateRenderer=null:"string"==typeof b||b instanceof HTMLElement?S.tableEmptyStateRenderer=b:l(b)&&(S.tableEmptyStateRenderer=function(e){const n=document.createElement("div");return t(e,{target:n,props:{}}),n}(b))),void 0!==o&&(S.footerRenderer="function"==typeof o&&o.length>=2?d(o):o),void 0!==c&&(S.emptyStateRenderer="function"==typeof c&&c.length>=2?d(c):c),void 0!==u&&(S.errorStateRenderer="function"==typeof u&&u.length>=2?d(u):u),void 0!==p&&(S.loadingStateRenderer="function"==typeof p&&p.length>=2?d(p):p),void 0!==f&&(S.headerDropdown=d(f)),void 0!==g&&(S.columnEditorConfig=function(e){const{rowRenderer:t,customRenderer:n}=e,r=a(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},r),t?{rowRenderer:d(t)}:{}),n?{customRenderer:d(n)}:{})}(g)),void 0!==m&&(S.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:l(r)&&(t[n]=s(r,{})));return t}(m)),void 0!==y&&(S.rowButtons=y.map(e=>d(e))),S}"function"==typeof SuppressedError&&SuppressedError;var u=e.from_html("<div></div>");function p(t,a){const d=e.legacy_rest_props(a,["children","$$slots","$$events","$$legacy"]),s=e.legacy_rest_props(d,["getAPI","rows","defaultHeaders"]);e.push(a,!1);let l=e.prop(a,"rows",8),i=e.prop(a,"defaultHeaders",8),p=e.mutable_source(),f=e.mutable_source(null);function g(){var t;return null!==(t=null===e.get(f)||void 0===e.get(f)?void 0:e.get(f).getAPI())&&void 0!==t?t:null}n(()=>{e.set(f,new o(e.get(p),c(Object.assign({rows:l(),defaultHeaders:i()},s)))),e.get(f).mount()}),r(()=>{null===e.get(f)||void 0===e.get(f)||e.get(f).destroy(),e.set(f,null)}),e.legacy_pre_effect(()=>(e.get(f),e.deep_read_state(l()),e.deep_read_state(i()),e.deep_read_state(s)),()=>{e.get(f)&&e.get(f).update(c(Object.assign({rows:l(),defaultHeaders:i()},s)))}),e.legacy_pre_effect_reset();var m={getAPI:g};e.init();var b=u();return e.bind_this(b,t=>e.set(p,t),()=>e.get(p)),e.append(t,b),e.bind_prop(a,"getAPI",g),e.pop(m)}export{p 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 r,onMount as n,onDestroy as o}from"svelte";import{SimpleTableVanilla as s}from"simple-table-core";export{asRows}from"simple-table-core";function i(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function a(e,n){return o=>{const s=document.createElement("div"),i=t(n,{target:s,props:o});return e.register(s,()=>{r(i)}),s}}function d(e,n={}){const o=document.createElement("div"),s=t(e,{target:o,props:n}),i=o.innerHTML;return r(s),i}function l(e){return"function"==typeof e}function c(e,t){const{cellRenderer:r,headerRenderer:n,children:o,nestedTable:s}=e,d=i(e,["cellRenderer","headerRenderer","children","nestedTable"]),l=Object.assign({},d);if(r&&(l.cellRenderer="function"==typeof r&&r.length>=2?a(t,r):r),n&&(l.headerRenderer="function"==typeof n&&n.length>=2?a(t,n):n),o&&(l.children=o.map(e=>c(e,t))),s){const e=Object.assign(Object.assign({},s),{rows:[]});l.nestedTable=u(e,t)}return l}function u(e,n){const{defaultHeaders:o,rows:s,footerRenderer:u,emptyStateRenderer:p,errorStateRenderer:f,loadingStateRenderer:g,headerDropdown:m,columnEditorConfig:h,icons:b,tableEmptyStateRenderer:y,rowButtons:v,onColumnOrderChange:R,onColumnWidthChange:O,onHeaderEdit:w,onColumnSelect:S}=e,E=i(e,["defaultHeaders","rows","footerRenderer","emptyStateRenderer","errorStateRenderer","loadingStateRenderer","headerDropdown","columnEditorConfig","icons","tableEmptyStateRenderer","rowButtons","onColumnOrderChange","onColumnWidthChange","onHeaderEdit","onColumnSelect"]),_=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},E),{rows:s,defaultHeaders:o.map(e=>c(e,n)),onRendererHostDiscard:n.disposeHost}),R?{onColumnOrderChange:e=>R(e)}:{}),O?{onColumnWidthChange:e=>O(e)}:{}),w?{onHeaderEdit:(e,t)=>w(e,t)}:{}),S?{onColumnSelect:e=>S(e)}:{});return void 0!==y&&(null===y?_.tableEmptyStateRenderer=null:"string"==typeof y||y instanceof HTMLElement?_.tableEmptyStateRenderer=y:l(y)&&(_.tableEmptyStateRenderer=function(e,n){const o=document.createElement("div"),s=t(n,{target:o,props:{}});return e.register(o,()=>{r(s)}),o}(n,y))),void 0!==u&&(_.footerRenderer="function"==typeof u&&u.length>=2?a(n,u):u),void 0!==p&&(_.emptyStateRenderer="function"==typeof p&&p.length>=2?a(n,p):p),void 0!==f&&(_.errorStateRenderer="function"==typeof f&&f.length>=2?a(n,f):f),void 0!==g&&(_.loadingStateRenderer="function"==typeof g&&g.length>=2?a(n,g):g),void 0!==m&&(_.headerDropdown=a(n,m)),void 0!==h&&(_.columnEditorConfig=function(e,t){const{rowRenderer:r,customRenderer:n}=e,o=i(e,["rowRenderer","customRenderer"]);return Object.assign(Object.assign(Object.assign({},o),r?{rowRenderer:a(t,r)}:{}),n?{customRenderer:a(t,n)}:{})}(h,n)),void 0!==b&&(_.icons=function(e){const t={};for(const[r,n]of Object.entries(e))null!=n&&("string"==typeof n||n instanceof HTMLElement||n instanceof SVGElement?t[r]=n:l(n)&&(t[r]=d(n,{})));return t}(b)),void 0!==v&&(_.rowButtons=v.map(e=>a(n,e))),_}"function"==typeof SuppressedError&&SuppressedError;const p="data-st-mount-id";class f{constructor(){this.entries=new Map,this.nextId=0,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const t=[],r=e.getAttribute(p);null!==r&&t.push(r),e.querySelectorAll(`[${p}]`).forEach(e=>{const r=e.getAttribute(p);null!==r&&t.push(r)});for(const e of t){const t=this.entries.get(e);t&&(this.entries.delete(e),t())}}}register(e,t){const r="st-mount-"+this.nextId++;e.setAttribute(p,r),this.entries.set(r,t)}clear(){for(const e of this.entries.values())e();this.entries.clear()}get size(){return this.entries.size}}var g=e.from_html("<div></div>");function m(t,r){const i=e.legacy_rest_props(r,["children","$$slots","$$events","$$legacy"]),a=e.legacy_rest_props(i,["getAPI","rows","defaultHeaders"]);e.push(r,!1);let d=e.prop(r,"rows",8),l=e.prop(r,"defaultHeaders",8),c=e.mutable_source(),p=e.mutable_source(null);const m=new f;function h(){var t;return null!==(t=null===e.get(p)||void 0===e.get(p)?void 0:e.get(p).getAPI())&&void 0!==t?t:null}n(()=>{e.set(p,new s(e.get(c),u(Object.assign({rows:d(),defaultHeaders:l()},a),m))),e.get(p).mount()}),o(()=>{null===e.get(p)||void 0===e.get(p)||e.get(p).destroy(),e.set(p,null),m.clear()}),e.legacy_pre_effect(()=>(e.get(p),e.deep_read_state(d()),e.deep_read_state(l()),e.deep_read_state(a)),()=>{e.get(p)&&e.get(p).update(u(Object.assign({rows:d(),defaultHeaders:l()},a),m))}),e.legacy_pre_effect_reset();var b={getAPI:h};e.init();var y=g();return e.bind_this(y,t=>e.set(c,t),()=>e.get(c)),e.append(t,y),e.bind_prop(r,"getAPI",h),e.pop(b)}export{m 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 { SimpleTableVanilla } from \"simple-table-core\";\n import type { TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig } from \"./buildVanillaConfig\";\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\"];\n\n // All remaining optional props — spread via $$restProps\n let container: HTMLDivElement;\n let instance: TableInstance | null = null;\n\n onMount(() => {\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig({ rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps)\n ) as unknown as TableInstance;\n instance.mount();\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n });\n\n // Reactive update: re-run whenever any prop changes.\n $: if (instance) {\n instance.update(\n buildVanillaConfig({ rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps)\n );\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":"48HA8CCA,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 { SimpleTableVanilla } from \"simple-table-core\";\n import type { TableAPI } from \"simple-table-core\";\n import { buildVanillaConfig } 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\"];\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 onMount(() => {\n instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(\n { rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps,\n registry,\n ),\n ) as unknown as TableInstance;\n instance.mount();\n });\n\n onDestroy(() => {\n instance?.destroy();\n instance = null;\n registry.clear();\n });\n\n // Reactive update: re-run whenever any prop changes.\n $: if (instance) {\n instance.update(\n buildVanillaConfig(\n { rows, defaultHeaders, ...$$restProps } as SimpleTableSvelteProps,\n registry,\n ),\n );\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":"osJAuDCA,EAAGC,uBAAHD,EAAGE,GAAAC,EAAAC,IAAYC,EAASH,GAAA,IAAAC,EAAAG,IAATD,eAAfL,qCAFO"}
@@ -0,0 +1,18 @@
1
+ export declare class MountRegistry {
2
+ private entries;
3
+ private nextId;
4
+ /**
5
+ * Register a dispose callback for a mount container. Tags the container so
6
+ * {@link disposeHost} can find it when core discards an ancestor host.
7
+ */
8
+ register(container: HTMLElement, dispose: () => void): void;
9
+ /**
10
+ * Tear down mounts owned by a host element core is permanently discarding.
11
+ * Collects `host` itself plus every descendant tagged with {@link MOUNT_ID_ATTR}.
12
+ */
13
+ disposeHost: (host: HTMLElement) => void;
14
+ /** Dispose every tracked mount (used on table teardown). */
15
+ clear(): void;
16
+ /** Test helper — number of live mounts. */
17
+ get size(): number;
18
+ }
@@ -1,3 +1,4 @@
1
1
  import type { SimpleTableConfig } from "simple-table-core";
2
2
  import type { SimpleTableSvelteProps } from "./types";
3
- export declare function buildVanillaConfig(config: SimpleTableSvelteProps): SimpleTableConfig;
3
+ import type { MountRegistry } from "./MountRegistry";
4
+ export declare function buildVanillaConfig(config: SimpleTableSvelteProps, registry: MountRegistry): SimpleTableConfig;
@@ -1,11 +1,14 @@
1
1
  import type { Component } from "svelte";
2
+ import type { MountRegistry } from "../MountRegistry";
2
3
  /**
3
4
  * Wraps a Svelte 5 component into a function returning an HTMLElement,
4
5
  * matching the vanilla renderer contract expected by simple-table-core.
6
+ * The mount is registered so core's `onRendererHostDiscard` can unmount it
7
+ * (including any `<svelte:teleport>` / floating UI) when the host is discarded.
5
8
  */
6
- export declare function wrapSvelteRenderer<P extends Record<string, any>>(component: Component<P>): (props: P) => HTMLElement;
9
+ export declare function wrapSvelteRenderer<P extends Record<string, any>>(registry: MountRegistry, component: Component<P>): (props: P) => HTMLElement;
7
10
  /** Mount a Svelte component into a div for vanilla-only slots (e.g. table empty state). */
8
- export declare function wrapSvelteStatic(component: Component): HTMLElement;
11
+ export declare function wrapSvelteStatic(registry: MountRegistry, component: Component): HTMLElement;
9
12
  /**
10
13
  * Converts a rendered Svelte component to an HTML string.
11
14
  * Used for icon props where vanilla expects string | HTMLElement | SVGSVGElement.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simple-table/svelte",
3
- "version": "3.9.1",
3
+ "version": "3.9.2",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/index.es.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -28,11 +28,12 @@
28
28
  "svelte": ">=4.0.0"
29
29
  },
30
30
  "dependencies": {
31
- "simple-table-core": "3.9.1"
31
+ "simple-table-core": "3.9.2"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@rollup/plugin-alias": "4.0.0",
35
35
  "@rollup/plugin-node-resolve": "^15.3.0",
36
+ "jsdom": "^24.1.3",
36
37
  "rollup": "^2.79.2",
37
38
  "rollup-plugin-delete": "^2.1.0",
38
39
  "rollup-plugin-peer-deps-external": "^2.2.4",
@@ -41,7 +42,8 @@
41
42
  "rollup-plugin-typescript2": "^0.37.0",
42
43
  "svelte": "^5.0.0",
43
44
  "svelte-preprocess": "^6.0.0",
44
- "typescript": "^5.0.0"
45
+ "typescript": "^5.0.0",
46
+ "vitest": "^2.1.9"
45
47
  },
46
48
  "description": "Svelte adapter for simple-table-core — use the Simple Table data grid with full Svelte component support for renderers.",
47
49
  "repository": {
@@ -88,6 +90,7 @@
88
90
  "scripts": {
89
91
  "build": "rollup -c",
90
92
  "preview": "rollup -c -w",
93
+ "test": "vitest run",
91
94
  "version:patch": "npm version patch && git push && git push --tags",
92
95
  "version:minor": "npm version minor && git push && git push --tags",
93
96
  "version:major": "npm version major && git push && git push --tags"