├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── LICENSE.md ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── app.d.ts ├── app.html ├── lib │ ├── index.ts │ └── placeholder.svelte └── routes │ ├── +page.svelte │ ├── Progress.svelte │ └── index.css ├── static └── favicon.png ├── svelte.config.js ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # Output 4 | .output 5 | .vercel 6 | /.svelte-kit 7 | /build 8 | /dist 9 | 10 | # OS 11 | .DS_Store 12 | Thumbs.db 13 | 14 | # Env 15 | .env 16 | .env.* 17 | !.env.example 18 | !.env.test 19 | 20 | # Vite 21 | vite.config.js.timestamp-* 22 | vite.config.ts.timestamp-* 23 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "overrides": [ 8 | { 9 | "files": "*.svelte", 10 | "options": { 11 | "parser": "svelte" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2 | 3 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tanstack-table-8-svelte-5 2 | 3 | A (almost) drop-in replacement for [`@tanstack/svelte-table@8`](https://www.npmjs.com/package/@tanstack/svelte-table) which works with Svelte 5. 4 | 5 | ## Setup 6 | 7 | We recommend creating an alias in your `package.json` so that you don't need to change all your imports. 8 | 9 | If you're sure that only your app and none of your dependencies depends on `@tanstack/svelte-table` then you can also simply adjust your `dependencies`: 10 | 11 | ```diff 12 | { 13 | "dependencies": { 14 | - "@tanstack/svelte-table": "^8" 15 | + "@tanstack/svelte-table": "npm:tanstack-table-8-svelte-5@^0.1" 16 | } 17 | } 18 | ``` 19 | 20 | Else use you package manager's override mechanism to ensure that dependencies of your app also get the drop-in: 21 | 22 | **Using npm (with `overrides` field)** 23 | 24 | ```json 25 | { 26 | "overrides": { 27 | "@tanstack/svelte-table": "npm:tanstack-table-8-svelte-5@^0.1" 28 | } 29 | } 30 | ``` 31 | 32 | **Using pnpm (with `pnpm.overrides` field)** 33 | 34 | ```json 35 | { 36 | "pnpm": { 37 | "overrides": { 38 | "@tanstack/svelte-table": "npm:tanstack-table-8-svelte-5@^0.1" 39 | } 40 | } 41 | } 42 | ``` 43 | 44 | ## Caveat 45 | 46 | This drop-in package works exactly like the original version, except when you want to provide custom components for rendering. You need to wrap those with `renderComponent`: 47 | 48 | ```ts 49 | import SomeCell from './SomeCell.svelte'; 50 | import { renderComponent } from '@tanstack/svelte-table'; 51 | 52 | const defaultColumns: ColumnDef[] = [ 53 | { 54 | accessorKey: 'firstName', 55 | // previously you were able to do this to render a custom component: 56 | // cell: SomeCell, 57 | // now you have to do this instead: 58 | cell: (props) => renderComponent(SomeCell, props) 59 | } 60 | ]; 61 | ``` 62 | 63 | > As a side effect, this prepares you for `@tanstack/svelte-table@9` because you will need to do the same there 64 | 65 | ## Documentation 66 | 67 | For documentation about everything else refer to the original docs at https://tanstack.com/table/latest/docs/framework/svelte/svelte-table 68 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tanstack-table-8-svelte-5", 3 | "version": "0.1.2", 4 | "license": "MIT", 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build && npm run package", 8 | "preview": "vite preview", 9 | "package": "svelte-kit sync && svelte-package && publint", 10 | "prepublishOnly": "npm run package", 11 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 13 | "format": "prettier --write .", 14 | "lint": "prettier --check ." 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "git+https://github.com/dummdidumm/tanstack-table-8-svelte-5.git" 19 | }, 20 | "files": [ 21 | "dist", 22 | "!dist/**/*.test.*", 23 | "!dist/**/*.spec.*" 24 | ], 25 | "sideEffects": [], 26 | "svelte": "./dist/index.js", 27 | "types": "./dist/index.d.ts", 28 | "type": "module", 29 | "exports": { 30 | ".": { 31 | "types": "./dist/index.d.ts", 32 | "svelte": "./dist/index.js" 33 | } 34 | }, 35 | "peerDependencies": { 36 | "svelte": "^5.0.0" 37 | }, 38 | "devDependencies": { 39 | "@sveltejs/adapter-auto": "^3.0.0", 40 | "@sveltejs/kit": "^2.0.0", 41 | "@sveltejs/package": "^2.0.0", 42 | "@sveltejs/vite-plugin-svelte": "^4.0.0", 43 | "prettier": "^3.3.2", 44 | "prettier-plugin-svelte": "^3.2.6", 45 | "publint": "^0.2.0", 46 | "svelte": "^5.0.0", 47 | "svelte-check": "^4.0.0", 48 | "typescript": "^5.0.0", 49 | "vite": "^5.0.11" 50 | }, 51 | "dependencies": { 52 | "@tanstack/table-core": "^8.20.5" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@tanstack/table-core': 12 | specifier: ^8.20.5 13 | version: 8.20.5 14 | devDependencies: 15 | '@sveltejs/adapter-auto': 16 | specifier: ^3.0.0 17 | version: 3.3.1(@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10))(svelte@5.1.3)(vite@5.4.10)) 18 | '@sveltejs/kit': 19 | specifier: ^2.0.0 20 | version: 2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10))(svelte@5.1.3)(vite@5.4.10) 21 | '@sveltejs/package': 22 | specifier: ^2.0.0 23 | version: 2.3.7(svelte@5.1.3)(typescript@5.6.3) 24 | '@sveltejs/vite-plugin-svelte': 25 | specifier: ^4.0.0 26 | version: 4.0.0(svelte@5.1.3)(vite@5.4.10) 27 | prettier: 28 | specifier: ^3.3.2 29 | version: 3.3.3 30 | prettier-plugin-svelte: 31 | specifier: ^3.2.6 32 | version: 3.2.7(prettier@3.3.3)(svelte@5.1.3) 33 | publint: 34 | specifier: ^0.2.0 35 | version: 0.2.12 36 | svelte: 37 | specifier: ^5.0.0 38 | version: 5.1.3 39 | svelte-check: 40 | specifier: ^4.0.0 41 | version: 4.0.5(svelte@5.1.3)(typescript@5.6.3) 42 | typescript: 43 | specifier: ^5.0.0 44 | version: 5.6.3 45 | vite: 46 | specifier: ^5.0.11 47 | version: 5.4.10 48 | 49 | packages: 50 | 51 | '@ampproject/remapping@2.3.0': 52 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 53 | engines: {node: '>=6.0.0'} 54 | 55 | '@esbuild/aix-ppc64@0.21.5': 56 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 57 | engines: {node: '>=12'} 58 | cpu: [ppc64] 59 | os: [aix] 60 | 61 | '@esbuild/android-arm64@0.21.5': 62 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 63 | engines: {node: '>=12'} 64 | cpu: [arm64] 65 | os: [android] 66 | 67 | '@esbuild/android-arm@0.21.5': 68 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 69 | engines: {node: '>=12'} 70 | cpu: [arm] 71 | os: [android] 72 | 73 | '@esbuild/android-x64@0.21.5': 74 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 75 | engines: {node: '>=12'} 76 | cpu: [x64] 77 | os: [android] 78 | 79 | '@esbuild/darwin-arm64@0.21.5': 80 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 81 | engines: {node: '>=12'} 82 | cpu: [arm64] 83 | os: [darwin] 84 | 85 | '@esbuild/darwin-x64@0.21.5': 86 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 87 | engines: {node: '>=12'} 88 | cpu: [x64] 89 | os: [darwin] 90 | 91 | '@esbuild/freebsd-arm64@0.21.5': 92 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 93 | engines: {node: '>=12'} 94 | cpu: [arm64] 95 | os: [freebsd] 96 | 97 | '@esbuild/freebsd-x64@0.21.5': 98 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 99 | engines: {node: '>=12'} 100 | cpu: [x64] 101 | os: [freebsd] 102 | 103 | '@esbuild/linux-arm64@0.21.5': 104 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 105 | engines: {node: '>=12'} 106 | cpu: [arm64] 107 | os: [linux] 108 | 109 | '@esbuild/linux-arm@0.21.5': 110 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 111 | engines: {node: '>=12'} 112 | cpu: [arm] 113 | os: [linux] 114 | 115 | '@esbuild/linux-ia32@0.21.5': 116 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 117 | engines: {node: '>=12'} 118 | cpu: [ia32] 119 | os: [linux] 120 | 121 | '@esbuild/linux-loong64@0.21.5': 122 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 123 | engines: {node: '>=12'} 124 | cpu: [loong64] 125 | os: [linux] 126 | 127 | '@esbuild/linux-mips64el@0.21.5': 128 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 129 | engines: {node: '>=12'} 130 | cpu: [mips64el] 131 | os: [linux] 132 | 133 | '@esbuild/linux-ppc64@0.21.5': 134 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 135 | engines: {node: '>=12'} 136 | cpu: [ppc64] 137 | os: [linux] 138 | 139 | '@esbuild/linux-riscv64@0.21.5': 140 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 141 | engines: {node: '>=12'} 142 | cpu: [riscv64] 143 | os: [linux] 144 | 145 | '@esbuild/linux-s390x@0.21.5': 146 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 147 | engines: {node: '>=12'} 148 | cpu: [s390x] 149 | os: [linux] 150 | 151 | '@esbuild/linux-x64@0.21.5': 152 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 153 | engines: {node: '>=12'} 154 | cpu: [x64] 155 | os: [linux] 156 | 157 | '@esbuild/netbsd-x64@0.21.5': 158 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 159 | engines: {node: '>=12'} 160 | cpu: [x64] 161 | os: [netbsd] 162 | 163 | '@esbuild/openbsd-x64@0.21.5': 164 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 165 | engines: {node: '>=12'} 166 | cpu: [x64] 167 | os: [openbsd] 168 | 169 | '@esbuild/sunos-x64@0.21.5': 170 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 171 | engines: {node: '>=12'} 172 | cpu: [x64] 173 | os: [sunos] 174 | 175 | '@esbuild/win32-arm64@0.21.5': 176 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 177 | engines: {node: '>=12'} 178 | cpu: [arm64] 179 | os: [win32] 180 | 181 | '@esbuild/win32-ia32@0.21.5': 182 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 183 | engines: {node: '>=12'} 184 | cpu: [ia32] 185 | os: [win32] 186 | 187 | '@esbuild/win32-x64@0.21.5': 188 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 189 | engines: {node: '>=12'} 190 | cpu: [x64] 191 | os: [win32] 192 | 193 | '@jridgewell/gen-mapping@0.3.5': 194 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 195 | engines: {node: '>=6.0.0'} 196 | 197 | '@jridgewell/resolve-uri@3.1.2': 198 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 199 | engines: {node: '>=6.0.0'} 200 | 201 | '@jridgewell/set-array@1.2.1': 202 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 203 | engines: {node: '>=6.0.0'} 204 | 205 | '@jridgewell/sourcemap-codec@1.5.0': 206 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 207 | 208 | '@jridgewell/trace-mapping@0.3.25': 209 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 210 | 211 | '@polka/url@1.0.0-next.28': 212 | resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} 213 | 214 | '@rollup/rollup-android-arm-eabi@4.24.2': 215 | resolution: {integrity: sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA==} 216 | cpu: [arm] 217 | os: [android] 218 | 219 | '@rollup/rollup-android-arm64@4.24.2': 220 | resolution: {integrity: sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA==} 221 | cpu: [arm64] 222 | os: [android] 223 | 224 | '@rollup/rollup-darwin-arm64@4.24.2': 225 | resolution: {integrity: sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg==} 226 | cpu: [arm64] 227 | os: [darwin] 228 | 229 | '@rollup/rollup-darwin-x64@4.24.2': 230 | resolution: {integrity: sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA==} 231 | cpu: [x64] 232 | os: [darwin] 233 | 234 | '@rollup/rollup-freebsd-arm64@4.24.2': 235 | resolution: {integrity: sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw==} 236 | cpu: [arm64] 237 | os: [freebsd] 238 | 239 | '@rollup/rollup-freebsd-x64@4.24.2': 240 | resolution: {integrity: sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg==} 241 | cpu: [x64] 242 | os: [freebsd] 243 | 244 | '@rollup/rollup-linux-arm-gnueabihf@4.24.2': 245 | resolution: {integrity: sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig==} 246 | cpu: [arm] 247 | os: [linux] 248 | 249 | '@rollup/rollup-linux-arm-musleabihf@4.24.2': 250 | resolution: {integrity: sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw==} 251 | cpu: [arm] 252 | os: [linux] 253 | 254 | '@rollup/rollup-linux-arm64-gnu@4.24.2': 255 | resolution: {integrity: sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ==} 256 | cpu: [arm64] 257 | os: [linux] 258 | 259 | '@rollup/rollup-linux-arm64-musl@4.24.2': 260 | resolution: {integrity: sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA==} 261 | cpu: [arm64] 262 | os: [linux] 263 | 264 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': 265 | resolution: {integrity: sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw==} 266 | cpu: [ppc64] 267 | os: [linux] 268 | 269 | '@rollup/rollup-linux-riscv64-gnu@4.24.2': 270 | resolution: {integrity: sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg==} 271 | cpu: [riscv64] 272 | os: [linux] 273 | 274 | '@rollup/rollup-linux-s390x-gnu@4.24.2': 275 | resolution: {integrity: sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q==} 276 | cpu: [s390x] 277 | os: [linux] 278 | 279 | '@rollup/rollup-linux-x64-gnu@4.24.2': 280 | resolution: {integrity: sha512-jOG/0nXb3z+EM6SioY8RofqqmZ+9NKYvJ6QQaa9Mvd3RQxlH68/jcB/lpyVt4lCiqr04IyaC34NzhUqcXbB5FQ==} 281 | cpu: [x64] 282 | os: [linux] 283 | 284 | '@rollup/rollup-linux-x64-musl@4.24.2': 285 | resolution: {integrity: sha512-XAo7cJec80NWx9LlZFEJQxqKOMz/lX3geWs2iNT5CHIERLFfd90f3RYLLjiCBm1IMaQ4VOX/lTC9lWfzzQm14Q==} 286 | cpu: [x64] 287 | os: [linux] 288 | 289 | '@rollup/rollup-win32-arm64-msvc@4.24.2': 290 | resolution: {integrity: sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw==} 291 | cpu: [arm64] 292 | os: [win32] 293 | 294 | '@rollup/rollup-win32-ia32-msvc@4.24.2': 295 | resolution: {integrity: sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw==} 296 | cpu: [ia32] 297 | os: [win32] 298 | 299 | '@rollup/rollup-win32-x64-msvc@4.24.2': 300 | resolution: {integrity: sha512-2mLH46K1u3r6uwc95hU+OR9q/ggYMpnS7pSp83Ece1HUQgF9Nh/QwTK5rcgbFnV9j+08yBrU5sA/P0RK2MSBNA==} 301 | cpu: [x64] 302 | os: [win32] 303 | 304 | '@sveltejs/adapter-auto@3.3.1': 305 | resolution: {integrity: sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==} 306 | peerDependencies: 307 | '@sveltejs/kit': ^2.0.0 308 | 309 | '@sveltejs/kit@2.7.3': 310 | resolution: {integrity: sha512-Vx7nq5MJ86I8qXYsVidC5PX6xm+uxt8DydvOdmJoyOK7LvGP18OFEG359yY+aa51t6pENvqZAMqAREQQx1OI2Q==} 311 | engines: {node: '>=18.13'} 312 | hasBin: true 313 | peerDependencies: 314 | '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 315 | svelte: ^4.0.0 || ^5.0.0-next.0 316 | vite: ^5.0.3 317 | 318 | '@sveltejs/package@2.3.7': 319 | resolution: {integrity: sha512-LYgUkde5GUYqOpXbcoCGUpEH4Ctl3Wj4u4CVZBl56dEeLW5fGHE037ZL1qlK0Ky+QD5uUfwONSeGwIOIighFMQ==} 320 | engines: {node: ^16.14 || >=18} 321 | hasBin: true 322 | peerDependencies: 323 | svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 324 | 325 | '@sveltejs/vite-plugin-svelte-inspector@3.0.1': 326 | resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==} 327 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 328 | peerDependencies: 329 | '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 330 | svelte: ^5.0.0-next.96 || ^5.0.0 331 | vite: ^5.0.0 332 | 333 | '@sveltejs/vite-plugin-svelte@4.0.0': 334 | resolution: {integrity: sha512-kpVJwF+gNiMEsoHaw+FJL76IYiwBikkxYU83+BpqQLdVMff19KeRKLd2wisS8niNBMJ2omv5gG+iGDDwd8jzag==} 335 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 336 | peerDependencies: 337 | svelte: ^5.0.0-next.96 || ^5.0.0 338 | vite: ^5.0.0 339 | 340 | '@tanstack/table-core@8.20.5': 341 | resolution: {integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==} 342 | engines: {node: '>=12'} 343 | 344 | '@types/cookie@0.6.0': 345 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 346 | 347 | '@types/estree@1.0.6': 348 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 349 | 350 | acorn-typescript@1.4.13: 351 | resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} 352 | peerDependencies: 353 | acorn: '>=8.9.0' 354 | 355 | acorn@8.14.0: 356 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 357 | engines: {node: '>=0.4.0'} 358 | hasBin: true 359 | 360 | aria-query@5.3.2: 361 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 362 | engines: {node: '>= 0.4'} 363 | 364 | axobject-query@4.1.0: 365 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 366 | engines: {node: '>= 0.4'} 367 | 368 | balanced-match@1.0.2: 369 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 370 | 371 | brace-expansion@2.0.1: 372 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 373 | 374 | chokidar@4.0.1: 375 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 376 | engines: {node: '>= 14.16.0'} 377 | 378 | cookie@0.6.0: 379 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 380 | engines: {node: '>= 0.6'} 381 | 382 | debug@4.3.7: 383 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 384 | engines: {node: '>=6.0'} 385 | peerDependencies: 386 | supports-color: '*' 387 | peerDependenciesMeta: 388 | supports-color: 389 | optional: true 390 | 391 | dedent-js@1.0.1: 392 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 393 | 394 | deepmerge@4.3.1: 395 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 396 | engines: {node: '>=0.10.0'} 397 | 398 | devalue@5.1.1: 399 | resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} 400 | 401 | esbuild@0.21.5: 402 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 403 | engines: {node: '>=12'} 404 | hasBin: true 405 | 406 | esm-env@1.0.0: 407 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 408 | 409 | esrap@1.2.2: 410 | resolution: {integrity: sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==} 411 | 412 | fdir@6.4.2: 413 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} 414 | peerDependencies: 415 | picomatch: ^3 || ^4 416 | peerDependenciesMeta: 417 | picomatch: 418 | optional: true 419 | 420 | fs.realpath@1.0.0: 421 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 422 | 423 | fsevents@2.3.3: 424 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 425 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 426 | os: [darwin] 427 | 428 | glob@8.1.0: 429 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 430 | engines: {node: '>=12'} 431 | deprecated: Glob versions prior to v9 are no longer supported 432 | 433 | globalyzer@0.1.0: 434 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 435 | 436 | globrex@0.1.2: 437 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 438 | 439 | ignore-walk@5.0.1: 440 | resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} 441 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 442 | 443 | import-meta-resolve@4.1.0: 444 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 445 | 446 | inflight@1.0.6: 447 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 448 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 449 | 450 | inherits@2.0.4: 451 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 452 | 453 | is-reference@3.0.2: 454 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 455 | 456 | kleur@4.1.5: 457 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 458 | engines: {node: '>=6'} 459 | 460 | locate-character@3.0.0: 461 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 462 | 463 | lower-case@2.0.2: 464 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 465 | 466 | magic-string@0.30.12: 467 | resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} 468 | 469 | minimatch@5.1.6: 470 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 471 | engines: {node: '>=10'} 472 | 473 | mri@1.2.0: 474 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 475 | engines: {node: '>=4'} 476 | 477 | mrmime@2.0.0: 478 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 479 | engines: {node: '>=10'} 480 | 481 | ms@2.1.3: 482 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 483 | 484 | nanoid@3.3.7: 485 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 486 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 487 | hasBin: true 488 | 489 | no-case@3.0.4: 490 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 491 | 492 | npm-bundled@2.0.1: 493 | resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} 494 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 495 | 496 | npm-normalize-package-bin@2.0.0: 497 | resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} 498 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 499 | 500 | npm-packlist@5.1.3: 501 | resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} 502 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 503 | hasBin: true 504 | 505 | once@1.4.0: 506 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 507 | 508 | pascal-case@3.1.2: 509 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 510 | 511 | picocolors@1.1.1: 512 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 513 | 514 | postcss@8.4.47: 515 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 516 | engines: {node: ^10 || ^12 || >=14} 517 | 518 | prettier-plugin-svelte@3.2.7: 519 | resolution: {integrity: sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==} 520 | peerDependencies: 521 | prettier: ^3.0.0 522 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 523 | 524 | prettier@3.3.3: 525 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 526 | engines: {node: '>=14'} 527 | hasBin: true 528 | 529 | publint@0.2.12: 530 | resolution: {integrity: sha512-YNeUtCVeM4j9nDiTT2OPczmlyzOkIXNtdDZnSuajAxS/nZ6j3t7Vs9SUB4euQNddiltIwu7Tdd3s+hr08fAsMw==} 531 | engines: {node: '>=16'} 532 | hasBin: true 533 | 534 | readdirp@4.0.2: 535 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 536 | engines: {node: '>= 14.16.0'} 537 | 538 | rollup@4.24.2: 539 | resolution: {integrity: sha512-do/DFGq5g6rdDhdpPq5qb2ecoczeK6y+2UAjdJ5trjQJj5f1AiVdLRWRc9A9/fFukfvJRgM0UXzxBIYMovm5ww==} 540 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 541 | hasBin: true 542 | 543 | sade@1.8.1: 544 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 545 | engines: {node: '>=6'} 546 | 547 | semver@7.6.3: 548 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 549 | engines: {node: '>=10'} 550 | hasBin: true 551 | 552 | set-cookie-parser@2.7.1: 553 | resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} 554 | 555 | sirv@3.0.0: 556 | resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} 557 | engines: {node: '>=18'} 558 | 559 | source-map-js@1.2.1: 560 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 561 | engines: {node: '>=0.10.0'} 562 | 563 | svelte-check@4.0.5: 564 | resolution: {integrity: sha512-icBTBZ3ibBaywbXUat3cK6hB5Du+Kq9Z8CRuyLmm64XIe2/r+lQcbuBx/IQgsbrC+kT2jQ0weVpZSSRIPwB6jQ==} 565 | engines: {node: '>= 18.0.0'} 566 | hasBin: true 567 | peerDependencies: 568 | svelte: ^4.0.0 || ^5.0.0-next.0 569 | typescript: '>=5.0.0' 570 | 571 | svelte2tsx@0.7.22: 572 | resolution: {integrity: sha512-hf55ujq17ufVpDQlJzaQfRr9EjlLIwGmFlpKq4uYrQAQFw/99q1OcVYyBT6568iJySgBUY9PdccURrORmfetmQ==} 573 | peerDependencies: 574 | svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 575 | typescript: ^4.9.4 || ^5.0.0 576 | 577 | svelte@5.1.3: 578 | resolution: {integrity: sha512-Sl8UFHlBvF54aK8MElFvyvaUfPE2REOz6LnhR2pBClCL11MU4qpn4V+KgAggaXxDyrP2iQixvHbtpHqL/zXlSQ==} 579 | engines: {node: '>=18'} 580 | 581 | tiny-glob@0.2.9: 582 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 583 | 584 | totalist@3.0.1: 585 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 586 | engines: {node: '>=6'} 587 | 588 | tslib@2.8.0: 589 | resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} 590 | 591 | typescript@5.6.3: 592 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 593 | engines: {node: '>=14.17'} 594 | hasBin: true 595 | 596 | vite@5.4.10: 597 | resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} 598 | engines: {node: ^18.0.0 || >=20.0.0} 599 | hasBin: true 600 | peerDependencies: 601 | '@types/node': ^18.0.0 || >=20.0.0 602 | less: '*' 603 | lightningcss: ^1.21.0 604 | sass: '*' 605 | sass-embedded: '*' 606 | stylus: '*' 607 | sugarss: '*' 608 | terser: ^5.4.0 609 | peerDependenciesMeta: 610 | '@types/node': 611 | optional: true 612 | less: 613 | optional: true 614 | lightningcss: 615 | optional: true 616 | sass: 617 | optional: true 618 | sass-embedded: 619 | optional: true 620 | stylus: 621 | optional: true 622 | sugarss: 623 | optional: true 624 | terser: 625 | optional: true 626 | 627 | vitefu@1.0.3: 628 | resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} 629 | peerDependencies: 630 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 631 | peerDependenciesMeta: 632 | vite: 633 | optional: true 634 | 635 | wrappy@1.0.2: 636 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 637 | 638 | zimmerframe@1.1.2: 639 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 640 | 641 | snapshots: 642 | 643 | '@ampproject/remapping@2.3.0': 644 | dependencies: 645 | '@jridgewell/gen-mapping': 0.3.5 646 | '@jridgewell/trace-mapping': 0.3.25 647 | 648 | '@esbuild/aix-ppc64@0.21.5': 649 | optional: true 650 | 651 | '@esbuild/android-arm64@0.21.5': 652 | optional: true 653 | 654 | '@esbuild/android-arm@0.21.5': 655 | optional: true 656 | 657 | '@esbuild/android-x64@0.21.5': 658 | optional: true 659 | 660 | '@esbuild/darwin-arm64@0.21.5': 661 | optional: true 662 | 663 | '@esbuild/darwin-x64@0.21.5': 664 | optional: true 665 | 666 | '@esbuild/freebsd-arm64@0.21.5': 667 | optional: true 668 | 669 | '@esbuild/freebsd-x64@0.21.5': 670 | optional: true 671 | 672 | '@esbuild/linux-arm64@0.21.5': 673 | optional: true 674 | 675 | '@esbuild/linux-arm@0.21.5': 676 | optional: true 677 | 678 | '@esbuild/linux-ia32@0.21.5': 679 | optional: true 680 | 681 | '@esbuild/linux-loong64@0.21.5': 682 | optional: true 683 | 684 | '@esbuild/linux-mips64el@0.21.5': 685 | optional: true 686 | 687 | '@esbuild/linux-ppc64@0.21.5': 688 | optional: true 689 | 690 | '@esbuild/linux-riscv64@0.21.5': 691 | optional: true 692 | 693 | '@esbuild/linux-s390x@0.21.5': 694 | optional: true 695 | 696 | '@esbuild/linux-x64@0.21.5': 697 | optional: true 698 | 699 | '@esbuild/netbsd-x64@0.21.5': 700 | optional: true 701 | 702 | '@esbuild/openbsd-x64@0.21.5': 703 | optional: true 704 | 705 | '@esbuild/sunos-x64@0.21.5': 706 | optional: true 707 | 708 | '@esbuild/win32-arm64@0.21.5': 709 | optional: true 710 | 711 | '@esbuild/win32-ia32@0.21.5': 712 | optional: true 713 | 714 | '@esbuild/win32-x64@0.21.5': 715 | optional: true 716 | 717 | '@jridgewell/gen-mapping@0.3.5': 718 | dependencies: 719 | '@jridgewell/set-array': 1.2.1 720 | '@jridgewell/sourcemap-codec': 1.5.0 721 | '@jridgewell/trace-mapping': 0.3.25 722 | 723 | '@jridgewell/resolve-uri@3.1.2': {} 724 | 725 | '@jridgewell/set-array@1.2.1': {} 726 | 727 | '@jridgewell/sourcemap-codec@1.5.0': {} 728 | 729 | '@jridgewell/trace-mapping@0.3.25': 730 | dependencies: 731 | '@jridgewell/resolve-uri': 3.1.2 732 | '@jridgewell/sourcemap-codec': 1.5.0 733 | 734 | '@polka/url@1.0.0-next.28': {} 735 | 736 | '@rollup/rollup-android-arm-eabi@4.24.2': 737 | optional: true 738 | 739 | '@rollup/rollup-android-arm64@4.24.2': 740 | optional: true 741 | 742 | '@rollup/rollup-darwin-arm64@4.24.2': 743 | optional: true 744 | 745 | '@rollup/rollup-darwin-x64@4.24.2': 746 | optional: true 747 | 748 | '@rollup/rollup-freebsd-arm64@4.24.2': 749 | optional: true 750 | 751 | '@rollup/rollup-freebsd-x64@4.24.2': 752 | optional: true 753 | 754 | '@rollup/rollup-linux-arm-gnueabihf@4.24.2': 755 | optional: true 756 | 757 | '@rollup/rollup-linux-arm-musleabihf@4.24.2': 758 | optional: true 759 | 760 | '@rollup/rollup-linux-arm64-gnu@4.24.2': 761 | optional: true 762 | 763 | '@rollup/rollup-linux-arm64-musl@4.24.2': 764 | optional: true 765 | 766 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': 767 | optional: true 768 | 769 | '@rollup/rollup-linux-riscv64-gnu@4.24.2': 770 | optional: true 771 | 772 | '@rollup/rollup-linux-s390x-gnu@4.24.2': 773 | optional: true 774 | 775 | '@rollup/rollup-linux-x64-gnu@4.24.2': 776 | optional: true 777 | 778 | '@rollup/rollup-linux-x64-musl@4.24.2': 779 | optional: true 780 | 781 | '@rollup/rollup-win32-arm64-msvc@4.24.2': 782 | optional: true 783 | 784 | '@rollup/rollup-win32-ia32-msvc@4.24.2': 785 | optional: true 786 | 787 | '@rollup/rollup-win32-x64-msvc@4.24.2': 788 | optional: true 789 | 790 | '@sveltejs/adapter-auto@3.3.1(@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10))(svelte@5.1.3)(vite@5.4.10))': 791 | dependencies: 792 | '@sveltejs/kit': 2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10))(svelte@5.1.3)(vite@5.4.10) 793 | import-meta-resolve: 4.1.0 794 | 795 | '@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10))(svelte@5.1.3)(vite@5.4.10)': 796 | dependencies: 797 | '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.1.3)(vite@5.4.10) 798 | '@types/cookie': 0.6.0 799 | cookie: 0.6.0 800 | devalue: 5.1.1 801 | esm-env: 1.0.0 802 | import-meta-resolve: 4.1.0 803 | kleur: 4.1.5 804 | magic-string: 0.30.12 805 | mrmime: 2.0.0 806 | sade: 1.8.1 807 | set-cookie-parser: 2.7.1 808 | sirv: 3.0.0 809 | svelte: 5.1.3 810 | tiny-glob: 0.2.9 811 | vite: 5.4.10 812 | 813 | '@sveltejs/package@2.3.7(svelte@5.1.3)(typescript@5.6.3)': 814 | dependencies: 815 | chokidar: 4.0.1 816 | kleur: 4.1.5 817 | sade: 1.8.1 818 | semver: 7.6.3 819 | svelte: 5.1.3 820 | svelte2tsx: 0.7.22(svelte@5.1.3)(typescript@5.6.3) 821 | transitivePeerDependencies: 822 | - typescript 823 | 824 | '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10))(svelte@5.1.3)(vite@5.4.10)': 825 | dependencies: 826 | '@sveltejs/vite-plugin-svelte': 4.0.0(svelte@5.1.3)(vite@5.4.10) 827 | debug: 4.3.7 828 | svelte: 5.1.3 829 | vite: 5.4.10 830 | transitivePeerDependencies: 831 | - supports-color 832 | 833 | '@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10)': 834 | dependencies: 835 | '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.3)(vite@5.4.10))(svelte@5.1.3)(vite@5.4.10) 836 | debug: 4.3.7 837 | deepmerge: 4.3.1 838 | kleur: 4.1.5 839 | magic-string: 0.30.12 840 | svelte: 5.1.3 841 | vite: 5.4.10 842 | vitefu: 1.0.3(vite@5.4.10) 843 | transitivePeerDependencies: 844 | - supports-color 845 | 846 | '@tanstack/table-core@8.20.5': {} 847 | 848 | '@types/cookie@0.6.0': {} 849 | 850 | '@types/estree@1.0.6': {} 851 | 852 | acorn-typescript@1.4.13(acorn@8.14.0): 853 | dependencies: 854 | acorn: 8.14.0 855 | 856 | acorn@8.14.0: {} 857 | 858 | aria-query@5.3.2: {} 859 | 860 | axobject-query@4.1.0: {} 861 | 862 | balanced-match@1.0.2: {} 863 | 864 | brace-expansion@2.0.1: 865 | dependencies: 866 | balanced-match: 1.0.2 867 | 868 | chokidar@4.0.1: 869 | dependencies: 870 | readdirp: 4.0.2 871 | 872 | cookie@0.6.0: {} 873 | 874 | debug@4.3.7: 875 | dependencies: 876 | ms: 2.1.3 877 | 878 | dedent-js@1.0.1: {} 879 | 880 | deepmerge@4.3.1: {} 881 | 882 | devalue@5.1.1: {} 883 | 884 | esbuild@0.21.5: 885 | optionalDependencies: 886 | '@esbuild/aix-ppc64': 0.21.5 887 | '@esbuild/android-arm': 0.21.5 888 | '@esbuild/android-arm64': 0.21.5 889 | '@esbuild/android-x64': 0.21.5 890 | '@esbuild/darwin-arm64': 0.21.5 891 | '@esbuild/darwin-x64': 0.21.5 892 | '@esbuild/freebsd-arm64': 0.21.5 893 | '@esbuild/freebsd-x64': 0.21.5 894 | '@esbuild/linux-arm': 0.21.5 895 | '@esbuild/linux-arm64': 0.21.5 896 | '@esbuild/linux-ia32': 0.21.5 897 | '@esbuild/linux-loong64': 0.21.5 898 | '@esbuild/linux-mips64el': 0.21.5 899 | '@esbuild/linux-ppc64': 0.21.5 900 | '@esbuild/linux-riscv64': 0.21.5 901 | '@esbuild/linux-s390x': 0.21.5 902 | '@esbuild/linux-x64': 0.21.5 903 | '@esbuild/netbsd-x64': 0.21.5 904 | '@esbuild/openbsd-x64': 0.21.5 905 | '@esbuild/sunos-x64': 0.21.5 906 | '@esbuild/win32-arm64': 0.21.5 907 | '@esbuild/win32-ia32': 0.21.5 908 | '@esbuild/win32-x64': 0.21.5 909 | 910 | esm-env@1.0.0: {} 911 | 912 | esrap@1.2.2: 913 | dependencies: 914 | '@jridgewell/sourcemap-codec': 1.5.0 915 | '@types/estree': 1.0.6 916 | 917 | fdir@6.4.2: {} 918 | 919 | fs.realpath@1.0.0: {} 920 | 921 | fsevents@2.3.3: 922 | optional: true 923 | 924 | glob@8.1.0: 925 | dependencies: 926 | fs.realpath: 1.0.0 927 | inflight: 1.0.6 928 | inherits: 2.0.4 929 | minimatch: 5.1.6 930 | once: 1.4.0 931 | 932 | globalyzer@0.1.0: {} 933 | 934 | globrex@0.1.2: {} 935 | 936 | ignore-walk@5.0.1: 937 | dependencies: 938 | minimatch: 5.1.6 939 | 940 | import-meta-resolve@4.1.0: {} 941 | 942 | inflight@1.0.6: 943 | dependencies: 944 | once: 1.4.0 945 | wrappy: 1.0.2 946 | 947 | inherits@2.0.4: {} 948 | 949 | is-reference@3.0.2: 950 | dependencies: 951 | '@types/estree': 1.0.6 952 | 953 | kleur@4.1.5: {} 954 | 955 | locate-character@3.0.0: {} 956 | 957 | lower-case@2.0.2: 958 | dependencies: 959 | tslib: 2.8.0 960 | 961 | magic-string@0.30.12: 962 | dependencies: 963 | '@jridgewell/sourcemap-codec': 1.5.0 964 | 965 | minimatch@5.1.6: 966 | dependencies: 967 | brace-expansion: 2.0.1 968 | 969 | mri@1.2.0: {} 970 | 971 | mrmime@2.0.0: {} 972 | 973 | ms@2.1.3: {} 974 | 975 | nanoid@3.3.7: {} 976 | 977 | no-case@3.0.4: 978 | dependencies: 979 | lower-case: 2.0.2 980 | tslib: 2.8.0 981 | 982 | npm-bundled@2.0.1: 983 | dependencies: 984 | npm-normalize-package-bin: 2.0.0 985 | 986 | npm-normalize-package-bin@2.0.0: {} 987 | 988 | npm-packlist@5.1.3: 989 | dependencies: 990 | glob: 8.1.0 991 | ignore-walk: 5.0.1 992 | npm-bundled: 2.0.1 993 | npm-normalize-package-bin: 2.0.0 994 | 995 | once@1.4.0: 996 | dependencies: 997 | wrappy: 1.0.2 998 | 999 | pascal-case@3.1.2: 1000 | dependencies: 1001 | no-case: 3.0.4 1002 | tslib: 2.8.0 1003 | 1004 | picocolors@1.1.1: {} 1005 | 1006 | postcss@8.4.47: 1007 | dependencies: 1008 | nanoid: 3.3.7 1009 | picocolors: 1.1.1 1010 | source-map-js: 1.2.1 1011 | 1012 | prettier-plugin-svelte@3.2.7(prettier@3.3.3)(svelte@5.1.3): 1013 | dependencies: 1014 | prettier: 3.3.3 1015 | svelte: 5.1.3 1016 | 1017 | prettier@3.3.3: {} 1018 | 1019 | publint@0.2.12: 1020 | dependencies: 1021 | npm-packlist: 5.1.3 1022 | picocolors: 1.1.1 1023 | sade: 1.8.1 1024 | 1025 | readdirp@4.0.2: {} 1026 | 1027 | rollup@4.24.2: 1028 | dependencies: 1029 | '@types/estree': 1.0.6 1030 | optionalDependencies: 1031 | '@rollup/rollup-android-arm-eabi': 4.24.2 1032 | '@rollup/rollup-android-arm64': 4.24.2 1033 | '@rollup/rollup-darwin-arm64': 4.24.2 1034 | '@rollup/rollup-darwin-x64': 4.24.2 1035 | '@rollup/rollup-freebsd-arm64': 4.24.2 1036 | '@rollup/rollup-freebsd-x64': 4.24.2 1037 | '@rollup/rollup-linux-arm-gnueabihf': 4.24.2 1038 | '@rollup/rollup-linux-arm-musleabihf': 4.24.2 1039 | '@rollup/rollup-linux-arm64-gnu': 4.24.2 1040 | '@rollup/rollup-linux-arm64-musl': 4.24.2 1041 | '@rollup/rollup-linux-powerpc64le-gnu': 4.24.2 1042 | '@rollup/rollup-linux-riscv64-gnu': 4.24.2 1043 | '@rollup/rollup-linux-s390x-gnu': 4.24.2 1044 | '@rollup/rollup-linux-x64-gnu': 4.24.2 1045 | '@rollup/rollup-linux-x64-musl': 4.24.2 1046 | '@rollup/rollup-win32-arm64-msvc': 4.24.2 1047 | '@rollup/rollup-win32-ia32-msvc': 4.24.2 1048 | '@rollup/rollup-win32-x64-msvc': 4.24.2 1049 | fsevents: 2.3.3 1050 | 1051 | sade@1.8.1: 1052 | dependencies: 1053 | mri: 1.2.0 1054 | 1055 | semver@7.6.3: {} 1056 | 1057 | set-cookie-parser@2.7.1: {} 1058 | 1059 | sirv@3.0.0: 1060 | dependencies: 1061 | '@polka/url': 1.0.0-next.28 1062 | mrmime: 2.0.0 1063 | totalist: 3.0.1 1064 | 1065 | source-map-js@1.2.1: {} 1066 | 1067 | svelte-check@4.0.5(svelte@5.1.3)(typescript@5.6.3): 1068 | dependencies: 1069 | '@jridgewell/trace-mapping': 0.3.25 1070 | chokidar: 4.0.1 1071 | fdir: 6.4.2 1072 | picocolors: 1.1.1 1073 | sade: 1.8.1 1074 | svelte: 5.1.3 1075 | typescript: 5.6.3 1076 | transitivePeerDependencies: 1077 | - picomatch 1078 | 1079 | svelte2tsx@0.7.22(svelte@5.1.3)(typescript@5.6.3): 1080 | dependencies: 1081 | dedent-js: 1.0.1 1082 | pascal-case: 3.1.2 1083 | svelte: 5.1.3 1084 | typescript: 5.6.3 1085 | 1086 | svelte@5.1.3: 1087 | dependencies: 1088 | '@ampproject/remapping': 2.3.0 1089 | '@jridgewell/sourcemap-codec': 1.5.0 1090 | '@types/estree': 1.0.6 1091 | acorn: 8.14.0 1092 | acorn-typescript: 1.4.13(acorn@8.14.0) 1093 | aria-query: 5.3.2 1094 | axobject-query: 4.1.0 1095 | esm-env: 1.0.0 1096 | esrap: 1.2.2 1097 | is-reference: 3.0.2 1098 | locate-character: 3.0.0 1099 | magic-string: 0.30.12 1100 | zimmerframe: 1.1.2 1101 | 1102 | tiny-glob@0.2.9: 1103 | dependencies: 1104 | globalyzer: 0.1.0 1105 | globrex: 0.1.2 1106 | 1107 | totalist@3.0.1: {} 1108 | 1109 | tslib@2.8.0: {} 1110 | 1111 | typescript@5.6.3: {} 1112 | 1113 | vite@5.4.10: 1114 | dependencies: 1115 | esbuild: 0.21.5 1116 | postcss: 8.4.47 1117 | rollup: 4.24.2 1118 | optionalDependencies: 1119 | fsevents: 2.3.3 1120 | 1121 | vitefu@1.0.3(vite@5.4.10): 1122 | optionalDependencies: 1123 | vite: 5.4.10 1124 | 1125 | wrappy@1.0.2: {} 1126 | 1127 | zimmerframe@1.1.2: {} 1128 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://svelte.dev/docs/kit/types#app.d.ts 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | type RowData, 3 | createTable, 4 | type TableOptions, 5 | type TableOptionsResolved 6 | } from '@tanstack/table-core'; 7 | import Placeholder from './placeholder.svelte'; 8 | import { type Component, type ComponentProps } from 'svelte'; 9 | import { readable, writable, derived, type Readable, get } from 'svelte/store'; 10 | 11 | export * from '@tanstack/table-core'; 12 | 13 | /** 14 | * A helper function to help create cells from Svelte components through ColumnDef's `cell` and `header` properties. 15 | * @param component A Svelte component 16 | * @param props The props to pass to `component` 17 | * @returns A `RenderComponentConfig` object that helps svelte-table know how to render the header/cell component. 18 | * @example 19 | * ```ts 20 | * // +page.svelte 21 | * const defaultColumns = [ 22 | * columnHelper.accessor('name', { 23 | * header: header => renderComponent(SortHeader, { label: 'Name', header }), 24 | * }), 25 | * columnHelper.accessor('state', { 26 | * header: header => renderComponent(SortHeader, { label: 'State', header }), 27 | * }), 28 | * ] 29 | * ``` 30 | * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} 31 | */ 32 | export function renderComponent>( 33 | Comp: TComponent, 34 | props: ComponentProps 35 | ): any { 36 | return (anchor: any) => Comp(anchor, props); 37 | } 38 | 39 | function wrapInPlaceholder(content: any) { 40 | return renderComponent(Placeholder, { content }); 41 | } 42 | 43 | export function flexRender(component: any, props: any): Component | null { 44 | if (!component) return null; 45 | 46 | if (typeof component === 'function') { 47 | const result = component(props); 48 | if (result === null || result === undefined) return null; 49 | 50 | if (typeof result === 'function') { 51 | return renderComponent(result, props); 52 | } 53 | 54 | return wrapInPlaceholder(result); 55 | } 56 | 57 | return wrapInPlaceholder(component); 58 | } 59 | 60 | type ReadableOrVal = T | Readable; 61 | 62 | export function createSvelteTable( 63 | options: ReadableOrVal> 64 | ) { 65 | let optionsStore: Readable>; 66 | 67 | if ('subscribe' in options) { 68 | optionsStore = options; 69 | } else { 70 | optionsStore = readable(options); 71 | } 72 | 73 | let resolvedOptions: TableOptionsResolved = { 74 | state: {}, // Dummy state 75 | onStateChange: () => {}, // noop 76 | renderFallbackValue: null, 77 | ...get(optionsStore) 78 | }; 79 | 80 | let table = createTable(resolvedOptions); 81 | 82 | let stateStore = writable(/** @type {number} */ table.initialState); 83 | // combine stores 84 | let stateOptionsStore = derived([stateStore, optionsStore], (s) => s); 85 | const tableReadable = readable(table, function start(set) { 86 | const unsubscribe = stateOptionsStore.subscribe(([state, options]) => { 87 | table.setOptions((prev) => { 88 | return { 89 | ...prev, 90 | ...options, 91 | state: { ...state, ...options.state }, 92 | // Similarly, we'll maintain both our internal state and any user-provided 93 | // state. 94 | onStateChange: (updater) => { 95 | if (updater instanceof Function) { 96 | stateStore.update(updater); 97 | } else { 98 | stateStore.set(updater); 99 | } 100 | 101 | resolvedOptions.onStateChange?.(updater); 102 | } 103 | }; 104 | }); 105 | 106 | // it didn't seem to rerender without setting the table 107 | set(table); 108 | }); 109 | 110 | return function stop() { 111 | unsubscribe(); 112 | }; 113 | }); 114 | 115 | return tableReadable; 116 | } 117 | -------------------------------------------------------------------------------- /src/lib/placeholder.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {content} 6 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 100 | 101 |
102 | 103 | 104 | {#each $table.getHeaderGroups() as headerGroup} 105 | 106 | {#each headerGroup.headers as header} 107 | 114 | {/each} 115 | 116 | {/each} 117 | 118 | 119 | {#each $table.getRowModel().rows as row} 120 | 121 | {#each row.getVisibleCells() as cell} 122 | 125 | {/each} 126 | 127 | {/each} 128 | 129 | 130 | {#each $table.getFooterGroups() as footerGroup} 131 | 132 | {#each footerGroup.headers as header} 133 | 140 | {/each} 141 | 142 | {/each} 143 | 144 |
108 | {#if !header.isPlaceholder} 109 | 112 | {/if} 113 |
123 | 124 |
134 | {#if !header.isPlaceholder} 135 | 138 | {/if} 139 |
145 |
146 | 147 |
148 | -------------------------------------------------------------------------------- /src/routes/Progress.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {content} 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/routes/index.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-family: sans-serif; 3 | font-size: 14px; 4 | } 5 | 6 | table { 7 | border: 1px solid lightgray; 8 | } 9 | 10 | tbody { 11 | border-bottom: 1px solid lightgray; 12 | } 13 | 14 | th { 15 | border-bottom: 1px solid lightgray; 16 | border-right: 1px solid lightgray; 17 | padding: 2px 4px; 18 | } 19 | 20 | tfoot { 21 | color: gray; 22 | } 23 | 24 | tfoot th { 25 | font-weight: normal; 26 | } 27 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dummdidumm/tanstack-table-8-svelte-5/7c668661e635c78cd617c1cc972994faf4382815/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://svelte.dev/docs/kit/integrations 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. 12 | // If your environment is not supported, or you settled on a specific environment, switch out the adapter. 13 | // See https://svelte.dev/docs/kit/adapters for more information about adapters. 14 | adapter: adapter() 15 | } 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | "module": "NodeNext", 13 | "moduleResolution": "NodeNext" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | --------------------------------------------------------------------------------