From 51bc297a403174661163249282b0e86c57ccb0be Mon Sep 17 00:00:00 2001 From: nbe Date: Sun, 13 Nov 2022 16:30:02 +0300 Subject: [PATCH] try to infer props for typed components --- package.json | 4 ++-- packages/svelte-table/package.json | 2 +- packages/svelte-table/src/render-component.ts | 11 +++++++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 77be24f1cc..c3ba09408a 100644 --- a/package.json +++ b/package.json @@ -93,14 +93,14 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "rollup": "^2.70.2", + "rollup-plugin-dts": "^4.2.2", "rollup-plugin-size": "^0.2.2", "rollup-plugin-svelte": "^7.1.0", "rollup-plugin-terser": "^7.0.2", "rollup-plugin-visualizer": "^5.6.0", - "rollup-plugin-dts": "^4.2.2", "solid-js": "^1.3.15", "stream-to-array": "^2.3.0", - "svelte": "^3.48.0", + "svelte": "^3.49.0", "ts-node": "^10.7.0", "typescript": "^4.7.4", "vue": "^3.2.33" diff --git a/packages/svelte-table/package.json b/packages/svelte-table/package.json index f730a803da..5f42496f89 100644 --- a/packages/svelte-table/package.json +++ b/packages/svelte-table/package.json @@ -37,6 +37,6 @@ "@tanstack/table-core": "8.5.24" }, "peerDependencies": { - "svelte": "^3.48.0" + "svelte": "^3.49.0" } } diff --git a/packages/svelte-table/src/render-component.ts b/packages/svelte-table/src/render-component.ts index 5518d933e5..8619506046 100644 --- a/packages/svelte-table/src/render-component.ts +++ b/packages/svelte-table/src/render-component.ts @@ -1,3 +1,4 @@ +import type { ComponentType, ComponentProps } from 'svelte' import { SvelteComponent, claim_component, @@ -46,7 +47,10 @@ function create_fragment(ctx: any, Comp: any, props: any) { } } -function renderClient(Comp: any, props: any): any { +function renderClient( + Comp: T, + props: T extends ComponentType ? ComponentProps : any +) { return class WrapperComp extends SvelteComponent { constructor(options: any) { super() @@ -63,7 +67,10 @@ function renderClient(Comp: any, props: any): any { } } -function renderServer(Comp: any, props: any) { +function renderServer( + Comp: T, + props: T extends ComponentType ? ComponentProps : any +) { const WrapperComp = create_ssr_component( ($$result: any, $$props: any, $$bindings: any, slots: any) => { return `${validate_component(Comp, 'TableComponent').$$render(