From 585ea44ae6305eaf38240b8dc1a0756aad95e20a Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Wed, 12 Aug 2026 21:23:22 +0000 Subject: [PATCH 1/4] release: prepare v4.5.1 --- .github/workflows/ci.yml | 2 +- CHANGELOG.md | 19 + README.md | 9 +- package.json | 28 +- pnpm-lock.yaml | 1571 +++++++++++++++++++------------------- pnpm-workspace.yaml | 2 +- 6 files changed, 811 insertions(+), 820 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e106df..c799ca3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v6 with: - version: 11.17.0 + version: 11.21.0 - name: Setup Node uses: actions/setup-node@v7 diff --git a/CHANGELOG.md b/CHANGELOG.md index 736bd67..d76df91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,25 @@ No changes yet. +## 4.5.1 - 2026-08-12 + +Version 4.5.1 refreshes the development and runtime dependencies without +changing the public API. + +### Maintenance + +- Updated pnpm, React Virtual, Playwright, React type definitions, ESLint, + jsdom, shadcn, TypeScript ESLint, and Vite dependencies. +- Synchronized the pnpm version used by local development and CI. +- Kept TanStack React Table on the compatible v8 release line; v9 requires a + separate API migration. + +### Validation + +- 317 unit/integration tests and 11 browser accessibility/layout tests +- lint, package/demo typechecks and builds, public API snapshot, + packed-consumer build, bundle budgets, and dependency audit + ## 4.5.0 - 2026-08-11 Version 4.5.0 improves fixed-region scrolling and fill-layout sizing without diff --git a/README.md b/README.md index d2086e2..8541055 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,11 @@ integrations. See - toolbar search now filters client-side tables by default; disable with `manualFiltering` or `enableToolbarQueryFiltering={false}` - column filters, CSV export, row expansion, density, column pinning/reordering, selection policies, labels, and column preference persistence were added +## 4.5.1 Compatibility + +Version 4.5.1 is a dependency-maintenance release with no public API changes. +It remains on TanStack React Table v8; v9 requires a separate migration. + ## 4.5.0 Compatibility Version 4.5.0 adds optional scrollbar visibility control and corrects @@ -75,11 +80,11 @@ The previously planned API cleanup is deferred to a future 5.0 release. ## Installation ```bash -pnpm add github:Dastari/data-table-pro#v4.5.0 +pnpm add github:Dastari/data-table-pro#v4.5.1 ``` This package is installed from GitHub refs. It is not published to npm. -Release tags such as `v4.5.0` include committed `dist/` output, so consumers +Release tags such as `v4.5.1` include committed `dist/` output, so consumers do not need to allow package build scripts during install. Peer dependencies: diff --git a/package.json b/package.json index 01a07cb..ca4dbf7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "data-table-pro", - "version": "4.5.0", + "version": "4.5.1", "description": "Reusable React data table library with shadcn, HeroUI, and The Gridcn adapters.", "type": "module", "license": "MIT", @@ -12,7 +12,7 @@ "bugs": { "url": "https://github.com/Dastari/data-table-pro/issues" }, - "packageManager": "pnpm@11.17.0", + "packageManager": "pnpm@11.21.0", "engines": { "node": ">=20.19" }, @@ -125,33 +125,33 @@ }, "dependencies": { "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.14.8", + "@tanstack/react-virtual": "^3.14.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "radix-ui": "^1.6.7", "tailwind-merge": "^3.6.0" }, "devDependencies": { - "@axe-core/playwright": "^4.12.1", + "@axe-core/playwright": "^4.13.0", "@eslint/js": "^10.0.1", - "@playwright/test": "^1.62.0", + "@playwright/test": "^1.62.1", "@tailwindcss/vite": "^4.3.3", "@testing-library/react": "^16.3.2", "@typescript/native": "npm:typescript@^7.0.2", - "@types/react": "^19.2.17", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.4", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "@vitejs/plugin-react": "^6.0.5", "@vitest/coverage-v8": "^4.1.10", - "eslint": "^10.8.0", + "eslint": "^10.8.1", "eslint-plugin-react-hooks": "^7.1.1", - "globals": "^17.8.0", - "jsdom": "^30.0.0", - "shadcn": "^4.15.0", + "globals": "^17.11.0", + "jsdom": "^30.0.1", + "shadcn": "^4.17.0", "tailwindcss": "^4.3.3", "tsup": "^8.5.1", "typescript": "npm:@typescript/typescript6@^6.0.2", - "typescript-eslint": "^8.65.0", - "vite": "^8.1.5", + "typescript-eslint": "^8.67.0", + "vite": "^8.2.1", "vitest": "^4.1.10" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d0a074..59cf3c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: ^8.21.3 version: 8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-virtual': - specifier: ^3.14.8 - version: 3.14.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: ^3.14.9 + version: 3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -37,7 +37,7 @@ importers: version: 2.9.2(react@19.2.8) radix-ui: specifier: ^1.6.7 - version: 1.6.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 1.6.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: specifier: ^19.2.8 version: 19.2.8 @@ -49,68 +49,68 @@ importers: version: 3.6.0 devDependencies: '@axe-core/playwright': - specifier: ^4.12.1 - version: 4.12.1(playwright-core@1.62.0) + specifier: ^4.13.0 + version: 4.13.0(playwright-core@1.62.1) '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0)) + version: 10.0.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) '@playwright/test': - specifier: ^1.62.0 - version: 1.62.0 + specifier: ^1.62.1 + version: 1.62.1 '@tailwindcss/vite': specifier: ^4.3.3 - version: 4.3.3(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + version: 4.3.3(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@testing-library/react': specifier: ^16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@types/react': - specifier: ^19.2.17 - version: 19.2.17 + specifier: ^19.2.18 + version: 19.2.18 '@types/react-dom': - specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.17) + specifier: ^19.2.4 + version: 19.2.4(@types/react@19.2.18) '@typescript/native': specifier: npm:typescript@^7.0.2 version: typescript@7.0.2 '@vitejs/plugin-react': - specifier: ^6.0.4 - version: 6.0.4(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + specifier: ^6.0.5 + version: 6.0.5(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@vitest/coverage-v8': specifier: ^4.1.10 version: 4.1.10(vitest@4.1.10) eslint: - specifier: ^10.8.0 - version: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + specifier: ^10.8.1 + version: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) eslint-plugin-react-hooks: specifier: ^7.1.1 - version: 7.1.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + version: 7.1.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) globals: - specifier: ^17.8.0 - version: 17.8.0 + specifier: ^17.11.0 + version: 17.11.0 jsdom: - specifier: ^30.0.0 - version: 30.0.0(@noble/hashes@1.8.0) + specifier: ^30.0.1 + version: 30.0.1(@noble/hashes@1.8.0) shadcn: - specifier: ^4.15.0 - version: 4.15.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + specifier: ^4.17.0 + version: 4.17.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) tailwindcss: specifier: ^4.3.3 version: 4.3.3 tsup: specifier: ^8.5.1 - version: 8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.23)(supports-color@7.2.0) + version: 8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.26)(supports-color@7.2.0) typescript: specifier: npm:@typescript/typescript6@^6.0.2 version: '@typescript/typescript6@6.0.2' typescript-eslint: - specifier: ^8.65.0 - version: 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + specifier: ^8.67.0 + version: 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) vite: - specifier: ^8.1.5 - version: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + specifier: ^8.2.1 + version: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) vitest: specifier: ^4.1.10 - version: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + version: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.1(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) packages: @@ -122,8 +122,8 @@ packages: resolution: {integrity: sha512-UJLfKXBhrc8i1vH2eJXuYQMwlsLKWFw3O+CPqXSuVEiikeAim3UgrfWX0k4tA/X8cRFM8iZ7OaqBokFGbYusdg==} engines: {node: ^22.13.0 || >=24.0.0} - '@axe-core/playwright@4.12.1': - resolution: {integrity: sha512-rMd7xriptqKpP+w5265i4Hdkv2X5kbu6uiBi/B2I7uf3hieRBM3qDCfaKPtxfiYb2mKXfF+yLODJwIx+Jv1GDw==} + '@axe-core/playwright@4.13.0': + resolution: {integrity: sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg==} peerDependencies: playwright-core: '>= 1.0.0' @@ -311,15 +311,6 @@ packages: '@dotenvx/primitives@0.8.0': resolution: {integrity: sha512-VYJy0uhFm9zTJ1TxBaW/pA8bjbOM/OttaNMwZ1RHG4JKyRG7DhSdiqD1ipQoAyoD22olUtxbP78W9xY3Wd11bg==} - '@emnapi/core@1.11.1': - resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} - - '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} - - '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} - '@esbuild/aix-ppc64@0.28.1': resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} @@ -635,12 +626,6 @@ packages: resolution: {integrity: sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==} engines: {node: '>=18'} - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} @@ -666,11 +651,11 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@oxc-project/types@0.139.0': - resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + '@oxc-project/types@0.143.0': + resolution: {integrity: sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==} - '@playwright/test@1.62.0': - resolution: {integrity: sha512-9zOJ6ZQRAena31MpOH9VSzIz8Ou3YJ/wtY/eQm5T2uhfhG7/U3COrMS8xOtUrZrp9OgdmzEnIYODye3nY1VqzA==} + '@playwright/test@1.62.1': + resolution: {integrity: sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==} engines: {node: '>=20'} hasBin: true @@ -1364,97 +1349,92 @@ packages: '@radix-ui/rect@1.1.3': resolution: {integrity: sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==} - '@rolldown/binding-android-arm64@1.1.5': - resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + '@rolldown/binding-android-arm64@1.2.3': + resolution: {integrity: sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.1.5': - resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + '@rolldown/binding-darwin-arm64@1.2.3': + resolution: {integrity: sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.1.5': - resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + '@rolldown/binding-darwin-x64@1.2.3': + resolution: {integrity: sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.1.5': - resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + '@rolldown/binding-freebsd-x64@1.2.3': + resolution: {integrity: sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.3': + resolution: {integrity: sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + '@rolldown/binding-linux-arm64-gnu@1.2.3': + resolution: {integrity: sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + '@rolldown/binding-linux-arm64-musl@1.2.3': + resolution: {integrity: sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + '@rolldown/binding-linux-ppc64-gnu@1.2.3': + resolution: {integrity: sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + '@rolldown/binding-linux-s390x-gnu@1.2.3': + resolution: {integrity: sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + '@rolldown/binding-linux-x64-gnu@1.2.3': + resolution: {integrity: sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + '@rolldown/binding-linux-x64-musl@1.2.3': + resolution: {integrity: sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + '@rolldown/binding-openharmony-arm64@1.2.3': + resolution: {integrity: sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + '@rolldown/binding-win32-arm64-msvc@1.2.3': + resolution: {integrity: sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + '@rolldown/binding-win32-x64-msvc@1.2.3': + resolution: {integrity: sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1711,8 +1691,8 @@ packages: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/react-virtual@3.14.8': - resolution: {integrity: sha512-O39GJQpAYEJcIu3uN1//YtmhjSEOyw75vg9CKCatBDPiD5hKtZQoJHfferyrB/LdOD3UWaoMLWtdEjarwIwdDw==} + '@tanstack/react-virtual@3.14.9': + resolution: {integrity: sha512-qZyr0FZDP8rDC4WBhsryIZmAd9bveJvFGUJJtskWaew6/0dTRS6wZxnR6VQ5bY2KwL3LjerrHqQLk3a0GKcPXQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1721,8 +1701,8 @@ packages: resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} engines: {node: '>=12'} - '@tanstack/virtual-core@3.17.6': - resolution: {integrity: sha512-h0/Ebo18CkOrChlQIhNtQkM5ySUnh/GumQ/D1st3hG2HWUPEF+ILUc2k29UtivCi/9G7w7G3/f7Xyd5cCFbKBw==} + '@tanstack/virtual-core@3.17.7': + resolution: {integrity: sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==} '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} @@ -1746,9 +1726,6 @@ packages: '@ts-morph/common@0.27.0': resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -1767,13 +1744,13 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/react-dom@19.2.3': - resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + '@types/react-dom@19.2.4': + resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.17': - resolution: {integrity: sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==} + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} @@ -1781,63 +1758,63 @@ packages: '@types/validate-npm-package-name@4.0.2': resolution: {integrity: sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==} - '@typescript-eslint/eslint-plugin@8.65.0': - resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} + '@typescript-eslint/eslint-plugin@8.67.0': + resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.65.0 + '@typescript-eslint/parser': ^8.67.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.65.0': - resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} + '@typescript-eslint/parser@8.67.0': + resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.65.0': - resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.65.0': - resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.65.0': - resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.65.0': - resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} + '@typescript-eslint/type-utils@8.67.0': + resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.65.0': - resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.65.0': - resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.65.0': - resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} + '@typescript-eslint/utils@8.67.0': + resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.65.0': - resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/typescript-aix-ppc64@7.0.2': @@ -1964,8 +1941,8 @@ packages: resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==} hasBin: true - '@vitejs/plugin-react@6.0.4': - resolution: {integrity: sha512-XcCQz0TBpBgljhj0gMuuDj49i6Ytqh5q1osT/Gp5uAVJUCTWxyskk/l1jwYYiu2xcNHHipdMz40EGfM1VdamVg==} + '@vitejs/plugin-react@6.0.5': + resolution: {integrity: sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 @@ -2099,8 +2076,8 @@ packages: resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==} engines: {node: '>=10.12.0'} - axe-core@4.12.1: - resolution: {integrity: sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==} + axe-core@4.13.0: + resolution: {integrity: sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==} engines: {node: '>=4'} balanced-match@4.0.4: @@ -2458,8 +2435,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.8.0: - resolution: {integrity: sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==} + eslint@10.8.1: + resolution: {integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2664,8 +2641,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - globals@17.8.0: - resolution: {integrity: sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==} + globals@17.11.0: + resolution: {integrity: sha512-Z2I8hM+PbJDXQDq3Icgpzv+mPdwr68iZUU9d5WW4FuXfDUQfkZaZuvjMv42/5crNyw154+9+VWXbYrUgDXbxNw==} engines: {node: '>=18'} gopd@1.2.0: @@ -2885,8 +2862,8 @@ packages: resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} hasBin: true - jsdom@30.0.0: - resolution: {integrity: sha512-JQHfRGmmKmaZoUAvIgff5jjG/0SzTQlGz8c7t72KzBzo8ZULEjAjnYE0sNwBOUA4QtWwYE2xoYitg8NFsmiYxA==} + jsdom@30.0.1: + resolution: {integrity: sha512-52v7mUVUfNQVYYqE1lcdaymWL0njO7lTLUog6ZvW2U5KsbiLk/GnZlVJ+qx0xfNJZ6Gn+KSpPNE52vurbxZwrA==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} peerDependencies: canvas: ^3.2.3 @@ -3399,13 +3376,13 @@ packages: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} - playwright-core@1.62.0: - resolution: {integrity: sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==} + playwright-core@1.62.1: + resolution: {integrity: sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==} engines: {node: '>=20'} hasBin: true - playwright@1.62.0: - resolution: {integrity: sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==} + playwright@1.62.1: + resolution: {integrity: sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==} engines: {node: '>=20'} hasBin: true @@ -3435,6 +3412,10 @@ packages: resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.26: + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} @@ -3568,8 +3549,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown@1.1.5: - resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + rolldown@1.2.3: + resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3619,8 +3600,8 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shadcn@4.15.0: - resolution: {integrity: sha512-fFTpfOuRwqjpXGp/sKpAxJkjdgv1jf8bDrW1xi0cVn2k7WJ5ijV/gjkAlkAidGDjhEkgcUuxVdm4oRB9r8BivA==} + shadcn@4.17.0: + resolution: {integrity: sha512-kphndh72CD7mxLQ/thkbPVgfXpIjzPUllzvTWRJmU3sNGZc/WbOqzJ0FXbBGj6sqNiaGPiOLDQByy8FAtCuVUQ==} engines: {node: '>=20.18.1'} hasBin: true @@ -3661,6 +3642,14 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks@2.8.9: + resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -3872,8 +3861,8 @@ packages: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} - typescript-eslint@8.65.0: - resolution: {integrity: sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==} + typescript-eslint@8.67.0: + resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3955,13 +3944,13 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@8.1.5: - resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + vite@8.2.1: + resolution: {integrity: sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.3.0 + '@vitejs/devtools': ^0.4.0 esbuild: 0.28.1 jiti: '>=1.21.0' less: ^4.0.0 @@ -4165,10 +4154,10 @@ snapshots: is-potential-custom-element-name: 1.0.1 lru-cache: 11.5.2 - '@axe-core/playwright@4.12.1(playwright-core@1.62.0)': + '@axe-core/playwright@4.13.0(playwright-core@1.62.1)': dependencies: - axe-core: 4.12.1 - playwright-core: 1.62.0 + axe-core: 4.13.0 + playwright-core: 1.62.1 '@babel/code-frame@7.29.7': dependencies: @@ -4409,22 +4398,6 @@ snapshots: '@dotenvx/primitives@0.8.0': {} - '@emnapi/core@1.11.1': - dependencies: - '@emnapi/wasi-threads': 1.2.2 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.2': - dependencies: - tslib: 2.8.1 - optional: true - '@esbuild/aix-ppc64@0.28.1': optional: true @@ -4503,9 +4476,9 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))': + '@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))': dependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -4526,9 +4499,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))': + '@eslint/js@10.0.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))': optionalDependencies: - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) '@eslint/object-schema@3.0.5': {} @@ -4664,13 +4637,6 @@ snapshots: strict-event-emitter: 0.5.1 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@tybys/wasm-util': 0.10.3 - optional: true - '@noble/hashes@1.8.0': optional: true @@ -4698,806 +4664,799 @@ snapshots: '@open-draft/until@2.1.0': optional: true - '@oxc-project/types@0.139.0': {} + '@oxc-project/types@0.143.0': {} - '@playwright/test@1.62.0': + '@playwright/test@1.62.1': dependencies: - playwright: 1.62.0 + playwright: 1.62.1 '@radix-ui/number@1.1.3': {} '@radix-ui/primitive@1.1.7': {} - '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-context@1.2.2(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-context@1.2.2(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-direction@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-direction@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-focus-guards@1.1.6(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-focus-guards@1.1.6(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-form@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-form@0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-id@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-id@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) '@radix-ui/rect': 1.1.3 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - react-remove-scroll: 2.7.2(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-slot@1.3.3(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-slot@1.3.3(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toast@1.2.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toast@1.2.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) - '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.18)(react@19.2.8)': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-escape-keydown@1.1.5(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-escape-keydown@1.1.5(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-previous@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-previous@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: '@radix-ui/rect': 1.1.3 react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-use-size@1.1.4(@types/react@19.2.17)(react@19.2.8)': + '@radix-ui/react-use-size@1.1.4(@types/react@19.2.18)(react@19.2.8)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) react: 19.2.8 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) '@radix-ui/rect@1.1.3': {} - '@rolldown/binding-android-arm64@1.1.5': - optional: true - - '@rolldown/binding-darwin-arm64@1.1.5': + '@rolldown/binding-android-arm64@1.2.3': optional: true - '@rolldown/binding-darwin-x64@1.1.5': + '@rolldown/binding-darwin-arm64@1.2.3': optional: true - '@rolldown/binding-freebsd-x64@1.1.5': + '@rolldown/binding-darwin-x64@1.2.3': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + '@rolldown/binding-freebsd-x64@1.2.3': optional: true - '@rolldown/binding-linux-arm64-gnu@1.1.5': + '@rolldown/binding-linux-arm-gnueabihf@1.2.3': optional: true - '@rolldown/binding-linux-arm64-musl@1.1.5': + '@rolldown/binding-linux-arm64-gnu@1.2.3': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.1.5': + '@rolldown/binding-linux-arm64-musl@1.2.3': optional: true - '@rolldown/binding-linux-s390x-gnu@1.1.5': + '@rolldown/binding-linux-ppc64-gnu@1.2.3': optional: true - '@rolldown/binding-linux-x64-gnu@1.1.5': + '@rolldown/binding-linux-s390x-gnu@1.2.3': optional: true - '@rolldown/binding-linux-x64-musl@1.1.5': + '@rolldown/binding-linux-x64-gnu@1.2.3': optional: true - '@rolldown/binding-openharmony-arm64@1.1.5': + '@rolldown/binding-linux-x64-musl@1.2.3': optional: true - '@rolldown/binding-wasm32-wasi@1.1.5': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@rolldown/binding-openharmony-arm64@1.2.3': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.5': + '@rolldown/binding-win32-arm64-msvc@1.2.3': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.5': + '@rolldown/binding-win32-x64-msvc@1.2.3': optional: true '@rolldown/pluginutils@1.0.1': {} @@ -5644,12 +5603,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - '@tailwindcss/vite@4.3.3(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0))': + '@tailwindcss/vite@4.3.3(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) '@tanstack/react-table@8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: @@ -5657,15 +5616,15 @@ snapshots: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - '@tanstack/react-virtual@3.14.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tanstack/react-virtual@3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@tanstack/virtual-core': 3.17.6 + '@tanstack/virtual-core': 3.17.7 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) '@tanstack/table-core@8.21.3': {} - '@tanstack/virtual-core@3.17.6': {} + '@tanstack/virtual-core@3.17.7': {} '@testing-library/dom@10.4.1': dependencies: @@ -5678,15 +5637,15 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@babel/runtime': 7.29.7 '@testing-library/dom': 10.4.1 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) '@ts-morph/common@0.27.0': dependencies: @@ -5694,11 +5653,6 @@ snapshots: minimatch: 10.2.5 path-browserify: 1.0.1 - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - '@types/aria-query@5.0.4': {} '@types/chai@5.2.3': @@ -5714,11 +5668,11 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/react-dom@19.2.3(@types/react@19.2.17)': + '@types/react-dom@19.2.4(@types/react@19.2.18)': dependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - '@types/react@19.2.17': + '@types/react@19.2.18': dependencies: csstype: 3.2.3 @@ -5727,15 +5681,15 @@ snapshots: '@types/validate-npm-package-name@4.0.2': {} - '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/type-utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/visitor-keys': 8.65.0 - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/visitor-keys': 8.67.0 + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) ignore: 7.0.6 natural-compare: 1.4.0 ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) @@ -5743,56 +5697,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': + '@typescript-eslint/project-service@8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.65.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 debug: 4.4.3(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.65.0': + '@typescript-eslint/scope-manager@8.67.0': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 - '@typescript-eslint/tsconfig-utils@8.65.0(@typescript/typescript6@6.0.2)': + '@typescript-eslint/tsconfig-utils@8.67.0(@typescript/typescript6@6.0.2)': dependencies: typescript: '@typescript/typescript6@6.0.2' - '@typescript-eslint/type-utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/type-utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) debug: 4.4.3(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.65.0': {} + '@typescript-eslint/types@8.67.0': {} - '@typescript-eslint/typescript-estree@8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': + '@typescript-eslint/typescript-estree@8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0)': dependencies: - '@typescript-eslint/project-service': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/tsconfig-utils': 8.65.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 + '@typescript-eslint/project-service': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/tsconfig-utils': 8.67.0(@typescript/typescript6@6.0.2) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@7.2.0) minimatch: 10.2.5 semver: 7.8.5 @@ -5802,20 +5756,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': + '@typescript-eslint/utils@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0)) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.65.0': + '@typescript-eslint/visitor-keys@8.67.0': dependencies: - '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/types': 8.67.0 eslint-visitor-keys: 5.0.1 '@typescript/typescript-aix-ppc64@7.0.2': @@ -5882,10 +5836,10 @@ snapshots: dependencies: '@typescript/old': typescript@6.0.3 - '@vitejs/plugin-react@6.0.4(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0))': + '@vitejs/plugin-react@6.0.5(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) '@vitest/coverage-v8@4.1.10(vitest@4.1.10)': dependencies: @@ -5899,7 +5853,7 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.0 - vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + vitest: 4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.1(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@vitest/expect@4.1.10': dependencies: @@ -5910,14 +5864,14 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0))': + '@vitest/mocker@4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.12.14(@typescript/typescript6@6.0.2) - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -6015,7 +5969,7 @@ snapshots: atomically@1.7.0: {} - axe-core@4.12.1: {} + axe-core@4.13.0: {} balanced-match@4.0.4: {} @@ -6323,11 +6277,11 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@7.1.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): + eslint-plugin-react-hooks@7.1.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): dependencies: '@babel/core': 7.29.7(supports-color@7.2.0) '@babel/parser': 7.29.7 - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) hermes-parser: 0.25.1 zod: 4.4.3 zod-validation-error: 4.0.2(zod@4.4.3) @@ -6345,9 +6299,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0): + eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5(supports-color@7.2.0) '@eslint/config-helpers': 0.7.0 @@ -6617,7 +6571,7 @@ snapshots: dependencies: is-glob: 4.0.3 - globals@17.8.0: {} + globals@17.11.0: {} gopd@1.2.0: {} @@ -6773,7 +6727,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@30.0.0(@noble/hashes@1.8.0): + jsdom@30.0.1(@noble/hashes@1.8.0): dependencies: '@asamuzakjp/css-color': 6.0.5 '@asamuzakjp/dom-selector': 8.3.0 @@ -7214,20 +7168,20 @@ snapshots: dependencies: find-up: 3.0.0 - playwright-core@1.62.0: {} + playwright-core@1.62.1: {} - playwright@1.62.0: + playwright@1.62.1: dependencies: - playwright-core: 1.62.0 + playwright-core: 1.62.1 optionalDependencies: fsevents: 2.3.2 - postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.23): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.26): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.7.0 - postcss: 8.5.23 + postcss: 8.5.26 postcss-selector-parser@7.1.4: dependencies: @@ -7240,6 +7194,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.26: + dependencies: + nanoid: 3.3.17 + picocolors: 1.1.1 + source-map-js: 1.2.1 + powershell-utils@0.1.0: {} prelude-ls@1.2.1: {} @@ -7273,68 +7233,68 @@ snapshots: queue-microtask@1.2.3: {} - radix-ui@1.6.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + radix-ui@1.6.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-form': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-form': 0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.18)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 - '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4(@types/react@19.2.18) range-parser@1.3.0: {} @@ -7352,32 +7312,32 @@ snapshots: react-is@17.0.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.17)(react@19.2.8): + react-remove-scroll-bar@2.3.8(@types/react@19.2.18)(react@19.2.8): dependencies: react: 19.2.8 - react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.8) + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - react-remove-scroll@2.7.2(@types/react@19.2.17)(react@19.2.8): + react-remove-scroll@2.7.2(@types/react@19.2.18)(react@19.2.8): dependencies: react: 19.2.8 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.17)(react@19.2.8) - react-style-singleton: 2.2.3(@types/react@19.2.17)(react@19.2.8) + react-remove-scroll-bar: 2.3.8(@types/react@19.2.18)(react@19.2.8) + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.17)(react@19.2.8) - use-sidecar: 1.1.3(@types/react@19.2.17)(react@19.2.8) + use-callback-ref: 1.3.3(@types/react@19.2.18)(react@19.2.8) + use-sidecar: 1.1.3(@types/react@19.2.18)(react@19.2.8) optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - react-style-singleton@2.2.3(@types/react@19.2.17)(react@19.2.8): + react-style-singleton@2.2.3(@types/react@19.2.18)(react@19.2.8): dependencies: get-nonce: 1.0.1 react: 19.2.8 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 react@19.2.8: {} @@ -7410,26 +7370,25 @@ snapshots: reusify@1.1.0: {} - rolldown@1.1.5: + rolldown@1.2.3: dependencies: - '@oxc-project/types': 0.139.0 + '@oxc-project/types': 0.143.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.5 - '@rolldown/binding-darwin-arm64': 1.1.5 - '@rolldown/binding-darwin-x64': 1.1.5 - '@rolldown/binding-freebsd-x64': 1.1.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 - '@rolldown/binding-linux-arm64-gnu': 1.1.5 - '@rolldown/binding-linux-arm64-musl': 1.1.5 - '@rolldown/binding-linux-ppc64-gnu': 1.1.5 - '@rolldown/binding-linux-s390x-gnu': 1.1.5 - '@rolldown/binding-linux-x64-gnu': 1.1.5 - '@rolldown/binding-linux-x64-musl': 1.1.5 - '@rolldown/binding-openharmony-arm64': 1.1.5 - '@rolldown/binding-wasm32-wasi': 1.1.5 - '@rolldown/binding-win32-arm64-msvc': 1.1.5 - '@rolldown/binding-win32-x64-msvc': 1.1.5 + '@rolldown/binding-android-arm64': 1.2.3 + '@rolldown/binding-darwin-arm64': 1.2.3 + '@rolldown/binding-darwin-x64': 1.2.3 + '@rolldown/binding-freebsd-x64': 1.2.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.3 + '@rolldown/binding-linux-arm64-gnu': 1.2.3 + '@rolldown/binding-linux-arm64-musl': 1.2.3 + '@rolldown/binding-linux-ppc64-gnu': 1.2.3 + '@rolldown/binding-linux-s390x-gnu': 1.2.3 + '@rolldown/binding-linux-x64-gnu': 1.2.3 + '@rolldown/binding-linux-x64-musl': 1.2.3 + '@rolldown/binding-openharmony-arm64': 1.2.3 + '@rolldown/binding-win32-arm64-msvc': 1.2.3 + '@rolldown/binding-win32-x64-msvc': 1.2.3 rollup@4.62.2: dependencies: @@ -7517,7 +7476,7 @@ snapshots: setprototypeof@1.2.0: {} - shadcn@4.15.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0): + shadcn@4.17.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0): dependencies: '@babel/core': 7.29.7(supports-color@7.2.0) '@babel/parser': 7.29.7 @@ -7543,6 +7502,7 @@ snapshots: postcss-selector-parser: 7.1.4 prompts: 2.4.2 recast: 0.23.12 + socks: 2.8.9 stringify-object: 5.0.0 tailwind-merge: 3.6.0 ts-morph: 26.0.0 @@ -7599,6 +7559,13 @@ snapshots: sisteransi@1.0.5: {} + smart-buffer@4.2.0: {} + + socks@2.8.9: + dependencies: + ip-address: 10.3.1 + smart-buffer: 4.2.0 + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -7746,7 +7713,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.23)(supports-color@7.2.0): + tsup@8.5.1(@typescript/typescript6@6.0.2)(jiti@2.7.0)(postcss@8.5.26)(supports-color@7.2.0): dependencies: bundle-require: 5.1.0(esbuild@0.28.1) cac: 6.7.14 @@ -7757,7 +7724,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.23) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.26) resolve-from: 5.0.0 rollup: 4.62.2 source-map: 0.7.6 @@ -7766,7 +7733,7 @@ snapshots: tinyglobby: 0.2.17 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.23 + postcss: 8.5.26 typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - jiti @@ -7791,13 +7758,13 @@ snapshots: media-typer: 1.1.1 mime-types: 3.0.2 - typescript-eslint@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): + typescript-eslint@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0): dependencies: - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/parser': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - '@typescript-eslint/typescript-estree': 8.65.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) - '@typescript-eslint/utils': 8.65.0(@typescript/typescript6@6.0.2)(eslint@10.8.0(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) - eslint: 10.8.0(jiti@2.7.0)(supports-color@7.2.0) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/parser': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/typescript-estree': 8.67.0(@typescript/typescript6@6.0.2)(supports-color@7.2.0) + '@typescript-eslint/utils': 8.67.0(@typescript/typescript6@6.0.2)(eslint@10.8.1(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0) + eslint: 10.8.1(jiti@2.7.0)(supports-color@7.2.0) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color @@ -7852,20 +7819,20 @@ snapshots: dependencies: punycode: 2.3.1 - use-callback-ref@1.3.3(@types/react@19.2.17)(react@19.2.8): + use-callback-ref@1.3.3(@types/react@19.2.18)(react@19.2.8): dependencies: react: 19.2.8 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 - use-sidecar@1.1.3(@types/react@19.2.17)(react@19.2.8): + use-sidecar@1.1.3(@types/react@19.2.18)(react@19.2.8): dependencies: detect-node-es: 1.1.0 react: 19.2.8 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.17 + '@types/react': 19.2.18 util-deprecate@1.0.2: {} @@ -7873,22 +7840,22 @@ snapshots: vary@1.1.2: {} - vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0): + vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 - postcss: 8.5.23 - rolldown: 1.1.5 + postcss: 8.5.26 + rolldown: 1.2.3 tinyglobby: 0.2.17 optionalDependencies: esbuild: 0.28.1 fsevents: 2.3.3 jiti: 2.7.0 - vitest@4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.0(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)): + vitest@4.1.10(@vitest/coverage-v8@4.1.10)(jsdom@30.0.1(@noble/hashes@1.8.0))(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.1.5(esbuild@0.28.1)(jiti@2.7.0)) + '@vitest/mocker': 4.1.10(msw@2.12.14(@typescript/typescript6@6.0.2))(vite@8.2.1(esbuild@0.28.1)(jiti@2.7.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -7905,11 +7872,11 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.5(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@vitest/coverage-v8': 4.1.10(vitest@4.1.10) - jsdom: 30.0.0(@noble/hashes@1.8.0) + jsdom: 30.0.1(@noble/hashes@1.8.0) transitivePeerDependencies: - msw diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 77fc99d..b3bc654 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,5 +10,5 @@ overrides: js-yaml: 4.3.1 nanoid: 3.3.17 minimumReleaseAgeExclude: - - globals@17.8.0 + - globals@17.8.0 || 17.11.0 - jsdom@30.0.0 From 4b91a2d3d7a62cf0847bdb7a20de187364c7e24e Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Wed, 12 Aug 2026 23:49:10 +0000 Subject: [PATCH 2/4] release: data-table-pro v5.0.0 --- CHANGELOG.md | 56 +- README.md | 34 +- api-snapshots/public-api.md | 954 ++---------------- demo/src/DemoApp.tsx | 5 +- dist/adapter-virtual.d.ts | 2 +- dist/adapter-virtual.js | 2 +- dist/adapter.d.ts | 2 +- dist/adapter.js | 2 +- dist/advanced.d.ts | 110 +- dist/advanced.js | 2 +- dist/chunk-7IWMFF7E.js | 2 + dist/chunk-7IWMFF7E.js.map | 1 + dist/chunk-B6JTUAWE.js.map | 1 - dist/chunk-F2RBZWQV.js | 3 - dist/chunk-F2RBZWQV.js.map | 1 - dist/chunk-I3CW6DTA.js | 2 - dist/chunk-I3CW6DTA.js.map | 1 - dist/{chunk-W7VNQT7O.js => chunk-IZQDLLCH.js} | 4 +- ...-W7VNQT7O.js.map => chunk-IZQDLLCH.js.map} | 2 +- dist/{chunk-B6JTUAWE.js => chunk-LTEXTQ2M.js} | 4 +- dist/chunk-LTEXTQ2M.js.map | 1 + dist/chunk-O6MUTKGE.js | 2 - dist/chunk-O6MUTKGE.js.map | 1 - dist/chunk-PRDXFLFB.js | 2 - dist/chunk-PRDXFLFB.js.map | 1 - dist/chunk-UMW6DOXG.js | 2 + ...-VGMTY7KM.js.map => chunk-UMW6DOXG.js.map} | 2 +- dist/chunk-VGMTY7KM.js | 2 - dist/chunk-XZTPNWJD.js | 2 + dist/chunk-XZTPNWJD.js.map | 1 + dist/chunk-YKVWP3UJ.js | 2 + dist/chunk-YKVWP3UJ.js.map | 1 + dist/chunk-YWMYYP3I.js | 3 + dist/chunk-YWMYYP3I.js.map | 1 + dist/data-source.d.ts | 2 +- dist/data-table-clipboard-7IVWTPU3.js | 6 - dist/data-table-clipboard-7IVWTPU3.js.map | 1 - dist/data-table-clipboard-RNEFAPJB.js | 6 + dist/data-table-clipboard-RNEFAPJB.js.map | 1 + ...data-table-toolbar-operations-E6KRSUL6.js} | 4 +- ...a-table-toolbar-operations-E6KRSUL6.js.map | 1 + ...a-table-toolbar-operations-IDEGCKBK.js.map | 1 - .../data-table-virtual-card-panel-3PHPB23A.js | 2 - .../data-table-virtual-card-panel-Z3BPBPG4.js | 2 + ...-table-virtual-card-panel-Z3BPBPG4.js.map} | 2 +- ...data-table-virtual-table-panel-UK5AMT4Q.js | 2 + ...table-virtual-table-panel-UK5AMT4Q.js.map} | 2 +- ...data-table-virtual-table-panel-ZOYCXFM5.js | 2 - dist/heroui-virtual.d.ts | 4 +- dist/heroui-virtual.js | 2 +- dist/heroui.d.ts | 4 +- dist/heroui.js | 2 +- dist/index.d.ts | 4 +- dist/index.js | 2 +- dist/thegridcn-virtual.d.ts | 4 +- dist/thegridcn-virtual.js | 2 +- dist/thegridcn.d.ts | 4 +- dist/thegridcn.js | 2 +- dist/types-BGNR6Ymh.d.ts | 849 ++++++++++++++++ dist/types.d.ts | 793 +-------------- dist/url-state.d.ts | 23 +- dist/url-state.js | 2 +- dist/url-state.js.map | 2 +- dist/virtual.d.ts | 4 +- dist/virtual.js | 2 +- docs/API.md | 12 +- docs/Migration.md | 171 +++- docs/Roadmap.md | 51 +- package.json | 4 +- pnpm-lock.yaml | 56 +- .../create-data-table-card-view.tsx | 3 +- .../data-table/create-data-table-toolbar.tsx | 6 +- src/core/data-table/create-data-table.tsx | 16 +- .../data-table/data-table-base-card-panel.tsx | 2 +- src/core/data-table/data-table-body-row.tsx | 6 +- .../data-table/data-table-card-panel-types.ts | 3 +- .../data-table/data-table-cell-content.tsx | 3 +- src/core/data-table/data-table-clipboard.ts | 5 +- .../data-table-grouping-faceting.test.tsx | 37 + .../data-table/data-table-header-cell.tsx | 3 +- .../data-table/data-table-phase-zero.test.tsx | 2 +- .../data-table/data-table-state-api.test.tsx | 2 +- .../data-table/data-table-table-panel.tsx | 10 +- .../data-table-toolbar-operations.tsx | 2 +- .../data-table/data-table-toolbar-section.tsx | 2 +- src/core/data-table/data-table-utils.ts | 25 +- .../data-table-virtual-card-panel.tsx | 2 +- src/core/data-table/tanstack-v9.ts | 144 +++ src/core/data-table/use-column-layout.ts | 3 +- .../data-table/use-data-table-columns.tsx | 6 +- .../data-table/use-data-table-instance.ts | 200 ++-- .../data-table/use-data-table-search-index.ts | 5 +- src/core/data-table/use-data-table-state.ts | 4 +- .../use-data-table-toolbar-features.ts | 6 +- .../data-table/use-data-table-url-state.ts | 15 +- src/core/data-table/use-row-editing.tsx | 2 +- src/core/types.ts | 37 +- 97 files changed, 1796 insertions(+), 2001 deletions(-) create mode 100644 dist/chunk-7IWMFF7E.js create mode 100644 dist/chunk-7IWMFF7E.js.map delete mode 100644 dist/chunk-B6JTUAWE.js.map delete mode 100644 dist/chunk-F2RBZWQV.js delete mode 100644 dist/chunk-F2RBZWQV.js.map delete mode 100644 dist/chunk-I3CW6DTA.js delete mode 100644 dist/chunk-I3CW6DTA.js.map rename dist/{chunk-W7VNQT7O.js => chunk-IZQDLLCH.js} (86%) rename dist/{chunk-W7VNQT7O.js.map => chunk-IZQDLLCH.js.map} (99%) rename dist/{chunk-B6JTUAWE.js => chunk-LTEXTQ2M.js} (63%) create mode 100644 dist/chunk-LTEXTQ2M.js.map delete mode 100644 dist/chunk-O6MUTKGE.js delete mode 100644 dist/chunk-O6MUTKGE.js.map delete mode 100644 dist/chunk-PRDXFLFB.js delete mode 100644 dist/chunk-PRDXFLFB.js.map create mode 100644 dist/chunk-UMW6DOXG.js rename dist/{chunk-VGMTY7KM.js.map => chunk-UMW6DOXG.js.map} (92%) delete mode 100644 dist/chunk-VGMTY7KM.js create mode 100644 dist/chunk-XZTPNWJD.js create mode 100644 dist/chunk-XZTPNWJD.js.map create mode 100644 dist/chunk-YKVWP3UJ.js create mode 100644 dist/chunk-YKVWP3UJ.js.map create mode 100644 dist/chunk-YWMYYP3I.js create mode 100644 dist/chunk-YWMYYP3I.js.map delete mode 100644 dist/data-table-clipboard-7IVWTPU3.js delete mode 100644 dist/data-table-clipboard-7IVWTPU3.js.map create mode 100644 dist/data-table-clipboard-RNEFAPJB.js create mode 100644 dist/data-table-clipboard-RNEFAPJB.js.map rename dist/{data-table-toolbar-operations-IDEGCKBK.js => data-table-toolbar-operations-E6KRSUL6.js} (97%) create mode 100644 dist/data-table-toolbar-operations-E6KRSUL6.js.map delete mode 100644 dist/data-table-toolbar-operations-IDEGCKBK.js.map delete mode 100644 dist/data-table-virtual-card-panel-3PHPB23A.js create mode 100644 dist/data-table-virtual-card-panel-Z3BPBPG4.js rename dist/{data-table-virtual-card-panel-3PHPB23A.js.map => data-table-virtual-card-panel-Z3BPBPG4.js.map} (62%) create mode 100644 dist/data-table-virtual-table-panel-UK5AMT4Q.js rename dist/{data-table-virtual-table-panel-ZOYCXFM5.js.map => data-table-virtual-table-panel-UK5AMT4Q.js.map} (62%) delete mode 100644 dist/data-table-virtual-table-panel-ZOYCXFM5.js create mode 100644 dist/types-BGNR6Ymh.d.ts create mode 100644 src/core/data-table/tanstack-v9.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index d76df91..9920a1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,60 @@ # Changelog -## Unreleased +## 5.0.0 - 2026-08-12 -No changes yet. +Version 5 upgrades the package's TanStack-facing API to TanStack React Table +v9. Existing `DataTable` props, entrypoints, persisted state, saved views, and +URL-state formats remain supported unless called out below. + +### Breaking changes + +- `DataTableColumnDef` now follows TanStack Table v9. Rename the column option + `sortingFn` to `sortFn`. +- Values in the `aggregationFns` registry are now context-based + `DataTableAggregationFn` definitions with an `aggregate` method instead of + v8 callables. +- `apiRef.current.getTable()` returns a v9 table instance. Read its state from + `table.store.state`, use `getPrePaginatedRowModel()`, and use v9's logical + `start` / `end` pinning state and method families. +- Row, cell, column, and header methods are prototype methods in v9. Keep them + bound to their instance instead of destructuring, spreading, or passing them + as bare callbacks. +- TanStack's `getIsSomeRowsSelected()` and + `getIsSomePageRowsSelected()` now mean at least one selected row, including + the all-selected case. Combine them with the matching `getIsAll*` predicate + when computing an indeterminate state. +- Table row data must be a record or array; primitive row values are no longer + supported. +- Consumers that import raw TanStack `Table`, `Row`, `Column`, `Cell`, + `Header`, or `ColumnDef` types must supply v9's leading feature generic. + Project-owned `DataTable*` types already contain that generic. + +The wrapper's `apiRef.current.getState()` method and public/persisted +`columnPinning: { left, right }` contract are unchanged. See +[`docs/Migration.md`](./docs/Migration.md) for before/after examples and the +full compatibility boundary. + +### TanStack Table v9 migration + +- Upgraded `@tanstack/react-table` to v9.1.2 without using the deprecated + `useLegacyTable` bridge. +- Added one explicit project feature registry for filtering, faceting, + grouping/aggregation, sorting, pagination, expansion, visibility, ordering, + sizing/resizing, selection, and row/column pinning. +- Moved optional row models and function registries into v9 feature slots and + replaced `useReactTable` with `useTable`. +- Contained v9's feature generic behind project-owned types so adapter and + consumer code does not need to repeat the registry type. +- Preserved the wrapper's physical `left` / `right` column-pinning state at + props, persistence, URL state, saved views, and API snapshots while adapting + it to v9's internal `start` / `end` regions. +- Added coverage for v9 context-based custom aggregation definitions. + +### Validation + +- 318 unit/integration tests and 11 browser accessibility/layout tests +- lint, package/demo typechecks and builds, public API snapshot, + packed-consumer build, bundle budgets, frozen install, and dependency audit ## 4.5.1 - 2026-08-12 diff --git a/README.md b/README.md index 8541055..6ca528e 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,31 @@ infinite loading, typed server data sources, and host-owned drag/upload integrations. See [`docs/API.md`](./docs/API.md) for the complete contract. +## Breaking changes in 5.0.0 + +Version 5 upgrades to TanStack React Table v9.1.2 and uses `useTable` with an +explicit feature registry rather than the deprecated legacy bridge. + +Direct TanStack-facing code must: + +- rename column `sortingFn` options to `sortFn`; +- replace callable custom aggregations with context-based + `DataTableAggregationFn` definitions; +- read an underlying table snapshot from `table.store.state` instead of + `table.getState()`; +- use `getPrePaginatedRowModel()` and logical `start` / `end` pinning on the + table returned by `apiRef.current.getTable()`; +- keep row/cell/column/header methods bound to their instances; and +- use record or array row data rather than primitive rows. + +The wrapper-owned `apiRef.current.getState()` method and public/persisted +`columnPinning: { left, right }` contract remain unchanged. Raw TanStack types +now take a leading feature generic; package-owned `DataTable*` types already +contain it. + +See [the 5.0 migration guide](./docs/Migration.md) for before/after examples, +the complete breaking-change list, and the compatibility boundary. + ## Breaking Changes In 3.0.0 - package output is ESM-only; `require()`/CommonJS entrypoints were removed @@ -75,16 +100,17 @@ public prop, type, or entrypoint was removed. Version 4.0.0 removes no public prop, type, or package entrypoint. It is a compatibility-first major that releases the accumulated state, persistence, quality, dependency, accessibility, and package-splitting work after 3.0.9. -The previously planned API cleanup is deferred to a future 5.0 release. +The previously planned wrapper API cleanup was ultimately deferred beyond +5.0; version 5 uses its major boundary for the TanStack v9 migration. ## Installation ```bash -pnpm add github:Dastari/data-table-pro#v4.5.1 +pnpm add github:Dastari/data-table-pro#v5.0.0 ``` This package is installed from GitHub refs. It is not published to npm. -Release tags such as `v4.5.1` include committed `dist/` output, so consumers +Release tags such as `v5.0.0` include committed `dist/` output, so consumers do not need to allow package build scripts during install. Peer dependencies: @@ -656,7 +682,7 @@ hooks, and loading states. ## Quality Gates Contributors need a jsdom 30-supported Node.js release (`^22.22.2`, -`^24.15.0`, or `>=26`) and pnpm 11.17.0. CI uses Node.js 22.22.2. +`^24.15.0`, or `>=26`) and pnpm 11.21.0. CI uses Node.js 22.22.2. TypeScript 7 provides the `tsc` command; the `typescript` package name intentionally points to the official TypeScript 6 compatibility package because ESLint and declaration bundling still require the compiler API that diff --git a/api-snapshots/public-api.md b/api-snapshots/public-api.md index d1e34d6..878a7ed 100644 --- a/api-snapshots/public-api.md +++ b/api-snapshots/public-api.md @@ -67,8 +67,8 @@ This file is generated by `pnpm api:update`. Review changes to it as public API ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -80,8 +80,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -93,8 +93,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -106,8 +106,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -119,8 +119,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -132,8 +132,8 @@ export { DataTable, DataTableProps }; ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; @@ -144,19 +144,20 @@ export { DataTable, DataTableProps }; ## url-state.d.ts ```ts -import { ColumnFiltersState, VisibilityState, ColumnOrderState, ColumnPinningState, GroupingState, RowSelectionState, SortingState, Updater } from '@tanstack/react-table'; -import { DataTableDensity, DataTableViewMode, DataTableState } from './types.js'; +import { ColumnFiltersState, ColumnVisibilityState, ColumnOrderState, GroupingState, SortingState, Updater } from '@tanstack/react-table'; +import { K as DataTableDensity, C as DataTableColumnPinningState, am as DataTableViewMode, af as DataTableState } from './types-BGNR6Ymh.js'; import 'react'; type DataTableUrlStateSlice = "columnFilters" | "columnVisibility" | "density" | "columnOrder" | "columnPinning" | "grouping" | "rowSelection"; +type DataTableUrlRowSelectionState = Record; type DataTableUrlEnhancedState = { columnFilters: ColumnFiltersState; - columnVisibility: VisibilityState; + columnVisibility: ColumnVisibilityState; density: DataTableDensity; columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; + columnPinning: DataTableColumnPinningState; grouping: GroupingState; - rowSelection: RowSelectionState; + rowSelection: DataTableUrlRowSelectionState; }; type DataTableUrlStateMigrationPayload = { version: unknown; @@ -194,18 +195,18 @@ declare function useDataTableUrlState({ keyPrefix, defaultPageSize, defaultSort, setShowHiddenRows: (showHidden: boolean) => void; columnFilters: ColumnFiltersState; setColumnFilters: (updater: Updater) => void; - columnVisibility: VisibilityState; - setColumnVisibility: (updater: Updater) => void; + columnVisibility: ColumnVisibilityState; + setColumnVisibility: (updater: Updater) => void; density: DataTableDensity; setDensity: (updater: Updater) => void; columnOrder: ColumnOrderState; setColumnOrder: (updater: Updater) => void; - columnPinning: ColumnPinningState; - setColumnPinning: (updater: Updater) => void; + columnPinning: DataTableColumnPinningState; + setColumnPinning: (updater: Updater) => void; grouping: GroupingState; setGrouping: (updater: Updater) => void; - rowSelection: RowSelectionState; - setRowSelection: (updater: Updater) => void; + rowSelection: DataTableUrlRowSelectionState; + setRowSelection: (updater: Updater) => void; tableState: Partial; schemaVersion: string; clearEnhancedState: () => void; @@ -220,9 +221,9 @@ export { type DataTableUrlEnhancedState, type DataTableUrlStateMigrationPayload, export { createDataTable, primitiveUiKit } from './adapter.js'; import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; -import { ExpandedState, Row, OnChangeFn, ColumnSizingState, Column, RowPinningPosition, Cell, Table, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, RowPinningState, GroupingState, VisibilityState, FilterFnOption } from '@tanstack/react-table'; -import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableCellSelection, DataTableSavedView, DataTableEditableRowsConfig, DataTableRowAction, DataTableDetailPanel } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { ExpandedState, OnChangeFn, ColumnSizingState, RowPinningPosition, PaginationState, SortingState, Updater, ColumnFiltersState, ColumnOrderState, RowPinningState, GroupingState, ColumnVisibilityState } from '@tanstack/react-table'; +import { D as DataTableProps, az as DataTableTanStackRow, Y as DataTableLabels, t as DataTableColumnDef, aA as DataTableTanStackColumn, K as DataTableDensity, a6 as DataTableRowLoadingState, aB as DataTableTanStackCell, o as DataTableCellSelection, aC as DataTableTanStackTable, aD as DataTableTanStackHeader, a7 as DataTableSavedView, N as DataTableEditableRowsConfig, a4 as DataTableRowAction, L as DataTableDetailPanel, aE as DataTableTanStackColumnDef, C as DataTableColumnPinningState, aF as DataTableTanStackFilterFnOption } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, M as DataTableDragAndDropConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a5 as DataTableRowClassNameContext, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; type DataTableCardPanelProps = { @@ -246,7 +247,7 @@ type DataTableCardPanelProps = { infiniteScroll: DataTableProps["infiniteScroll"]; localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; resolvedLabels: DataTableLabels; resolvedLoadingRowCount: number; @@ -289,7 +290,7 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e hasRowExpansion: boolean; layoutMode: ColumnLayoutMode; uiClassNames: DataTableUiClassNames; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }): { columnLayouts: Map; explicitlySizedColumnIds: Set; @@ -344,12 +345,12 @@ type DataTableBodyRowProps = { pinnedPosition?: Exclude; originalRow: TData; detailPanel: DataTableProps["detailPanel"]; - row: Row; + row: DataTableTanStackRow; rowIndex: number; setDraftValues: React.Dispatch>>; stripedRows: boolean; uiClassNames: DataTableUiClassNames; - visibleCells: Array>; + visibleCells: Array>; visibleLeafColumnCount: number; }; declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, editingContext, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, groupToggleLabel, gridMode, gridRowAriaIndex, gridRowIndex, activeGridCell, cellSelectionEnabled, isGridCellSelected, onGridCellFocus, onGridCellKeyDown, onGridCellPointerDown, onGridCellPointerEnter, isDraggable, isDetailExpanded, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, pinnedPosition, originalRow, detailPanel, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; @@ -392,15 +393,15 @@ type DataTableTablePanelProps = { localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; primeColumnForResize: (columnId: string, currentSize: number) => void; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; - topPinnedRows: Array>; - bottomPinnedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; resetColumnSize: (columnId: string) => void; resolvedLabels: DataTableLabels; rowsToRender: Array<{ - row: Row; + row: DataTableTanStackRow; rowIndex: number; }>; ScrollArea: DataTableUiKit["ScrollArea"]; @@ -413,7 +414,7 @@ type DataTableTablePanelProps = { stickyHeader: boolean; stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; - table: Table; + table: DataTableTanStackTable; tableClassName: string | undefined; tableContainerClassName: string | undefined; Table: DataTableUiKit["Table"]; @@ -432,7 +433,7 @@ type DataTableTablePanelProps = { virtualPaddingBottom: number; virtualPaddingTop: number; visibleLeafColumnCount: number; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }; declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, cellSelection, cellSelectionEnabled, columnLayouts, columnGroupHeaderHeight, currentDensity, currentDetailExpanded, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, editingContext, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, gridMode, gridPageSize, gridRowOffset, onGridActiveRowIndexChange, onCellSelectionChange, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, detailPanel, topPinnedRows, bottomPinnedRows, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, scrollbarVisibility, sentinelRef, setDraftValues, shouldRenderInitialLoading, stateOverlayNode, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, tableScrollElement, totalRowCount, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; @@ -461,8 +462,8 @@ type DataTableHeaderCellProps = { enableColumnResizing: boolean; gridColumnIndex?: number; gridMode: boolean; - header: Header; - headerGroupHeaders: Array>; + header: DataTableTanStackHeader; + headerGroupHeaders: Array>; layout: DataTableColumnLayout; primeColumnForResize: (columnId: string, currentSize: number) => void; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; @@ -514,7 +515,7 @@ type DataTableToolbarSectionProps = { selectionActions: DataTableProps["selectionActions"]; savedViews: Array; showHiddenRows: boolean; - table: Table; + table: DataTableTanStackTable; title: string | undefined; titleId: string | undefined; toolbarQueryPlaceholder: string; @@ -572,8 +573,8 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi rowActions: Array>; saveEdit: (row: TData) => Promise; startEditingRow: (row: TData, rowId: string) => void; - tableRef: React.RefObject | null>; -}): ColumnDef[]; + tableRef: React.RefObject | null>; +}): DataTableTanStackColumnDef[]; type DataTableColumnGroupPathSegment = { id: string; @@ -581,6 +582,27 @@ type DataTableColumnGroupPathSegment = { }; type DataTableColumnGroupPaths = ReadonlyMap>; +type DataTableRowsToRender = Array<{ + row: DataTableTanStackRow; + rowIndex: number; +}>; +type DataTableInstanceResult = { + effectivePageCount: number; + footerTotalRowCount: number | undefined; + handleFooterPageIndexChange: (nextPageIndex: number) => void; + handleFooterPageSizeChange: (nextPageSize: number) => void; + isPageCountKnown: boolean; + renderedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + rowsToRender: DataTableRowsToRender; + sentinelRef: React.RefObject; + table: DataTableTanStackTable; + virtualPaddingBottom: number; + virtualPaddingTop: number; + visibleLeafColumns: Array>; +}; declare function useDataTableInstance({ autoResetPageIndex, columnGroupPaths, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentRowPinning, currentColumnSizing, currentExpanded, currentGrouping, currentPagination, currentRowSelection, currentSorting, currentViewMode, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableMultiRowSelection, enableRowPinning, enableRowSelection, enableSubRowSelection, getRowCanSelect, getRowCanExpand, getSubRows, aggregationFns, groupedColumnMode, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleRowPinningChange, handleColumnVisibilityChange, handleExpandedChange, handleGroupingChange, infiniteScroll, keepPinnedRows, manualFiltering, manualGrouping, manualExpanding, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { autoResetPageIndex: boolean; columnGroupPaths: DataTableColumnGroupPaths; @@ -588,7 +610,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; @@ -597,8 +619,8 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa currentRowSelection: Record; currentSorting: SortingState; currentViewMode: "table" | "card"; - defaultColumn: Partial>; - effectiveColumnVisibility: VisibilityState; + defaultColumn: Partial>; + effectiveColumnVisibility: ColumnVisibilityState; enableColumnResizing: boolean; enableMultiRowSelection: NonNullable["enableMultiRowSelection"]>; enableRowPinning: DataTableProps["enableRowPinning"]; @@ -609,14 +631,14 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa getSubRows: DataTableProps["getSubRows"]; aggregationFns: DataTableProps["aggregationFns"]; groupedColumnMode: DataTableProps["groupedColumnMode"]; - globalFilterFn: FilterFnOption | undefined; + globalFilterFn: DataTableTanStackFilterFnOption | undefined; globalFilterValue: string; hasNextPage?: DataTableProps["hasNextPage"]; handleColumnFiltersChange: OnChangeFn; handleColumnOrderChange: OnChangeFn; - handleColumnPinningChange: OnChangeFn; + handleColumnPinningChange: OnChangeFn; handleRowPinningChange: OnChangeFn; - handleColumnVisibilityChange: OnChangeFn; + handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; handleGroupingChange: OnChangeFn; infiniteScroll: DataTableProps["infiniteScroll"]; @@ -640,10 +662,10 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa setLocalColumnSizing: OnChangeFn; setLocalPagination: React.Dispatch>; shouldRenderInitialLoading: boolean; - tableColumns: Array>; + tableColumns: Array>; tableData: Array; tableGetRowId: DataTableProps["getRowId"]; - tableRef: React.RefObject | null>; + tableRef: React.RefObject | null>; tableScrollElement: HTMLElement | null; /** * @deprecated Filtering now runs through TanStack Table. Retained so @@ -653,30 +675,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa totalRowCount: DataTableProps["totalRowCount"]; virtualization: DataTableProps["virtualization"]; viewportHeight: number; -}): { - effectivePageCount: number; - footerTotalRowCount: number | undefined; - handleFooterPageIndexChange: (nextPageIndex: number) => void; - handleFooterPageSizeChange: (nextPageSize: number) => void; - isPageCountKnown: boolean; - renderedRows: Row[]; - topPinnedRows: Row[]; - bottomPinnedRows: Row[]; - reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; - rowsToRender: { - row: Row; - rowIndex: number; - }[]; - sentinelRef: React.RefObject; - table: Table; - virtualPaddingBottom: number; - virtualPaddingTop: number; - visibleLeafColumns: _tanstack_react_table.Column[]; -}; -type DataTableRowsToRender = Array<{ - row: Row; - rowIndex: number; -}>; +}): DataTableInstanceResult; declare function useDataTableState({ columnFilters, columnOrder, columnPinning, rowPinning, columnSizing, columnPrefsKey, persistence, columnVisibility, columns, data, density, enableRowSelection, enableToolbarQueryFiltering, expanded, grouping, getSubRows, getRowId, hiddenRows, initialState, isLoading, loadingRowCount, manualFiltering, onColumnFiltersChange, onColumnOrderChange, onColumnPinningChange, onRowPinningChange, onColumnSizingChange, onColumnVisibilityChange, onDensityChange, onExpandedChange, onGroupingChange, onPageIndexChange, onRowSelectionChange, onShowHiddenRowsChange, onSortingChange, onToolbarQueryValueChange, onViewModeChange, pageIndex, pageSize, resolvedLabels, rowSelection, rowsPerPageOptions, selectionActions, showHiddenRows, sorting, toolbarQueryDebounceMs, toolbarQueryPlaceholder, toolbarQueryValue, viewMode, containerRef, }: { columnFilters: DataTableProps["columnFilters"]; @@ -733,10 +732,10 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi containerWidth: number; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; - currentColumnVisibility: VisibilityState; + currentColumnVisibility: ColumnVisibilityState; currentDensity: DataTableDensity; currentExpanded: ExpandedState; currentGrouping: GroupingState; @@ -745,7 +744,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi currentShowHiddenRows: boolean; currentSorting: SortingState; currentViewMode: "table" | "card"; - effectiveColumnVisibility: VisibilityState; + effectiveColumnVisibility: ColumnVisibilityState; globalFilterValue: string; handleDensityChange: (nextDensity: DataTableDensity) => void; handleShowHiddenRowsChange: (nextShowHiddenRows: boolean) => void; @@ -757,9 +756,9 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi selectedRows: TData[]; setCurrentColumnFilters: (updater: _tanstack_react_table.Updater) => void; setCurrentColumnOrder: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; + setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; setCurrentRowPinning: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnVisibility: (updater: _tanstack_react_table.Updater) => void; + setCurrentColumnVisibility: (updater: _tanstack_react_table.Updater) => void; setCurrentExpanded: (updater: _tanstack_react_table.Updater) => void; setCurrentGrouping: (updater: _tanstack_react_table.Updater) => void; setCurrentRowSelection: (updater: _tanstack_react_table.Updater>) => void; @@ -798,14 +797,14 @@ declare function useRowEditing({ columns, editableRows, onError, }: { declare function useStableCallback, TResult>(callback: ((...args: TArgs) => TResult) | undefined): (...args: TArgs) => TResult | undefined; -export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableSavedView, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; +export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableColumnPinningState, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableSavedView, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; ``` ## adapter.d.ts ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; @@ -821,7 +820,7 @@ export { DataTableUiKit, createDataTable, primitiveUiKit }; ```ts import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; @@ -834,794 +833,7 @@ export { DataTableUiKit, createVirtualDataTable }; ## types.d.ts ```ts -import * as React from 'react'; -import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, GroupingState, AggregationFn, ExpandedState, Row, ColumnOrderState, ColumnPinningState, RowPinningState, Table, VisibilityState, PaginationState, ColumnSizingState, Updater, HeaderContext } from '@tanstack/react-table'; - -type DataTableViewMode = "table" | "card"; -/** Accessibility behavior for the table view. Native table semantics remain the default. */ -type DataTableAccessibilityOptions = { - /** - * `grid` enables spreadsheet-like roving focus and keyboard navigation. - * `native` (the default) retains ordinary HTML table keyboard behavior. - */ - mode?: "native" | "grid"; - /** Number of rows moved by PageUp/PageDown when layout cannot be measured. */ - pageSize?: number; -}; -/** Shorthand configuration for the interactive ARIA grid mode. */ -type DataTableInteractiveGridOptions = Omit; -/** A stable grid coordinate used for cell and rectangular range selection. */ -type DataTableCellCoordinate = { - rowId: string; - columnId: string; -}; -/** The two corners of a cell selection. A single-cell selection has equal corners. */ -type DataTableCellSelection = { - anchor: DataTableCellCoordinate; - focus: DataTableCellCoordinate; -}; -type DataTableGridCommandContext = { - table: Table; - cellSelection: DataTableCellSelection | null; -}; -/** Commands are delegated to the application; the table never records app data. */ -type DataTableGridCommands = { - undo?: (context: DataTableGridCommandContext) => void | Promise; - redo?: (context: DataTableGridCommandContext) => void | Promise; -}; -type DataTableAlign = "start" | "center" | "end"; -type DataTableColumnType = "text" | "numeric" | "date"; -type DataTableColumnFixed = "left" | "right"; -type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; -type DataTableDensity = "compact" | "comfortable" | "spacious"; -type DataTableCardSizing = "fixed" | "content" | "fluid"; -type DataTableCellOverflow = "truncate" | "clip" | "wrap" | "visible"; -type DataTableColumnFilterType = "text" | "select" | "multi" | "faceted" | "boolean" | "numberRange" | "dateRange"; -type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; -type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; -type DataTableClipboardCopyScope = DataTableCsvExportScope | "cellSelection"; -type DataTableClipboardCopyOptions = { - includeHeaders?: boolean; - columns?: Array; - scope?: DataTableClipboardCopyScope; - /** Defaults to tab-separated text. */ - delimiter?: "\t" | ","; - escapeFormulaValues?: boolean; - getCellValue?: (context: { - row: TData; - rowId: string; - columnId: string; - value: unknown; - }) => unknown; - /** Host-owned clipboard delivery for non-browser or permission-managed apps. */ - onCopy?: (context: { - text: string; - rows: Array; - scope: DataTableClipboardCopyScope; - }) => void | Promise; -}; -type DataTableClipboardPasteContext = { - text: string; - values: Array>; - table: Table; -}; -type DataTableClipboardConfig = { - copy?: boolean | DataTableClipboardCopyOptions; - paste?: { - enabled?: boolean; - preventDefault?: boolean; - onPaste: (context: DataTableClipboardPasteContext) => void | Promise; - }; -}; -type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "undo" | "redo" | "clipboardCopy" | "clipboardPaste" | "fileUpload" | "infiniteScroll" | "retry"; -declare const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record; -type DataTableRowLoadingState = { - isLoading: boolean; - skeleton?: React.ReactNode; -}; -type DataTableLoadingState = { - isLoading: boolean; - loadingRowCount?: number; -}; -type DataTableAutoPageSizeConfig = { - minRows?: number; - maxRows?: number; - estimateRowHeight?: number; -}; -type DataTableStateOverlayContext = { - rows: Array; - toolbarQueryValue: string; - error: unknown; - isRetrying: boolean; - retry: (() => void | Promise) | undefined; -}; -type DataTableStateOverlay = { - empty?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); - error?: unknown; - isRetrying?: boolean; - onRetry?: () => void | Promise; - renderError?: (context: DataTableStateOverlayContext) => React.ReactNode; -}; -type DataTableCellEditRenderProps = { - cell: CellContext; - row: TData; - value: TValue | undefined; - draftValue: unknown; - setDraftValue: (value: unknown) => void; - error?: string; - isDirty: boolean; - isPending: boolean; -}; -type DataTableColumnFilterOption = { - label: string; - value: string; - /** Number of matching records. Omit when the count is not known. */ - count?: number; - disabled?: boolean; -}; -type DataTableFacetedFilterOptions = { - /** - * Server-provided facet values. When supplied, these take precedence over - * locally calculated unique values and their counts. - */ - options?: Array | ((context: { - rows: Array; - }) => Array); - /** Render a readable label for values discovered from the local row model. */ - getOptionLabel?: (value: TValue | undefined) => string; - /** Enables an in-menu search input. Defaults to true. */ - searchable?: boolean; - searchPlaceholder?: string; -}; -type DataTableColumnFilterRangeValue = { - from?: TValue; - to?: TValue; -}; -type DataTableColumnFilterConfig = { - type: DataTableColumnFilterType; - label?: string; - placeholder?: string; - options?: Array | ((context: { - rows: Array; - }) => Array); - getOptionValue?: (value: TValue | undefined, row: TData) => string; - /** Settings for `type: "faceted"`, including server-provided facet data. */ - faceting?: DataTableFacetedFilterOptions; - operator?: DataTableColumnFilterOperator; - trueLabel?: string; - falseLabel?: string; - min?: number | string; - max?: number | string; - step?: number; -}; -type DataTableColumnMeta = { - type?: DataTableColumnType; - fixed?: DataTableColumnFixed; - cardTitle?: boolean; - hideOn?: DataTableContainerBreakpoint | Array; - minWidth?: number; - align?: DataTableAlign; - overflow?: DataTableCellOverflow | ((args: { - row: TData; - value: TValue | undefined; - }) => DataTableCellOverflow | undefined); - headerClassName?: string; - headerStyle?: React.CSSProperties; - cellClassName?: string | ((args: { - row: TData; - value: TValue | undefined; - }) => string | undefined); - responsiveClassName?: string; - skeleton?: (context: CellContext) => React.ReactNode; - filter?: DataTableColumnFilterConfig; - parseEditValue?: (value: unknown, context: CellContext) => unknown; - formatEditValue?: (value: unknown, context: CellContext) => string; - renderEditCell?: (props: DataTableCellEditRenderProps) => React.ReactNode; -}; -type DataTableColumnDef = ColumnDef & { - meta?: DataTableColumnMeta; - columns?: Array>; -}; -type DataTableColumnGroupDef = DataTableColumnDef & { - id: string; - columns: Array>; - /** - * A concise explanation of the columns in this group. It is exposed as an - * accessible description and native tooltip on the shared header. - */ - description?: string; - /** - * Allows leaves to cross this group's boundary during column reordering. - * Groups are locked by default so a shared heading remains intact. - */ - freeReordering?: boolean; - /** Additional class name for this shared group header. */ - headerClassName?: string; - /** Additional inline styles for this shared group header. */ - headerStyle?: React.CSSProperties; - /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */ - headerHeight?: React.CSSProperties["height"]; -}; -type DataTableToolbarAction = { - key: string; - label: string; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - placement?: "primary" | "trailing"; - onClick: (context: { - rows: Array; - openFileDialog?: () => void; - }) => void | Promise; - variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; - disabled?: boolean; -}; -type DataTableSelectionActionContext = { - /** Selected row objects that are present in the currently loaded data. */ - rows: Array; - /** Every selected row id, including ids retained across server pages. */ - rowIds: Array; -}; -type DataTableSelectionAction = { - key: string; - label: string; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - onClick: (context: DataTableSelectionActionContext) => void | Promise; - variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; - disabled?: boolean | ((rows: Array, context: DataTableSelectionActionContext) => boolean); -}; -type DataTableRowAction = { - key: string; - label: string | ((row: TData) => string); - icon?: React.ComponentType<{ - className?: string; - }>; - onClick: (row: TData) => void | Promise; - variant?: "default" | "secondary" | "destructive"; - hidden?: (row: TData) => boolean; - disabled?: (row: TData) => boolean; -}; -type DataTableColumnVisibilityOption = { - id: string; - label: string; - visible: boolean; - canHide: boolean; - pinned?: false | DataTableColumnFixed; -}; -type DataTableToolbarVisibility = { - title?: boolean; - search?: boolean; - actions?: boolean; - trailingActions?: boolean; - options?: boolean; - viewToggle?: boolean; - customToolbar?: boolean; -}; -/** Optional toolbar controls for working with the current table layout and views. */ -type DataTableToolbarDataOperations = { - /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */ - columnChooser?: boolean; - /** Create, apply, rename, and delete saved views when `savedViews` is configured. */ - savedViews?: boolean; - /** Adds a reset-layout action using the table's initial layout. */ - resetLayout?: boolean; -}; -type DataTableCardRendererProps = { - row: TData; - rowId: string; - depth: number; - canExpandSubRows: boolean; - isSubRowsExpanded: boolean; - toggleSubRowsExpanded: () => void; - isSelected: boolean; - onSelectedChange: (nextValue: boolean) => void; - actions: Array>; - isEditing: boolean; - startEditing: () => void; - cancelEditing: () => void; -}; -type DataTableEditableRowsConfig = { - canEditRow?: (row: TData) => boolean; - getInitialValues?: (row: TData) => Record; - validateRow?: (row: TData, draftValues: Record) => void | string | Record | Promise>; - /** Apply an optimistic host update and optionally return a rollback callback. */ - onOptimisticUpdate?: (row: TData, draftValues: Record) => void | (() => void); - onSaveRow: (row: TData, draftValues: Record) => void | Promise; - onSaveSuccess?: (row: TData, draftValues: Record) => void; - onSaveError?: (error: unknown, row: TData, draftValues: Record) => void; - /** Defaults to true for inputs owned by the table. */ - commitOnEnter?: boolean; - /** Defaults to true for inputs owned by the table. */ - cancelOnEscape?: boolean; -}; -type DataTableInfiniteScroll = { - enabled: boolean; - hasMore: boolean; - isLoadingMore?: boolean; - onLoadMore: () => void | Promise; -}; -type DataTableHiddenRowsConfig = { - getIsHidden: (row: TData) => boolean; - label?: string; -}; -type DataTableEmptyStateContext = { - rows: Array; - toolbarQueryValue: string; -}; -type DataTableDragAndDropConfig = { - isDragging?: boolean; - onDragEnter?: React.DragEventHandler; - onDragOver?: React.DragEventHandler; - onDragLeave?: React.DragEventHandler; - onDrop?: React.DragEventHandler; - getRowDraggable?: (row: TData) => boolean; - onRowDragStart?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; - onRowDragEnd?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; -}; -type DataTableFileUploadConfig = { - accept?: string; - disabled?: boolean; - multiple?: boolean; - onFilesSelected: (files: FileList | Array) => void | Promise; -}; -type DataTableVirtualizationConfig = { - enabled?: boolean; - estimateRowHeight?: number; - fallbackRowCount?: number; - overscan?: number; - card?: DataTableCardVirtualizationConfig; -}; -type DataTableCardVirtualizationConfig = { - enabled?: boolean; - estimateCardHeight?: number; - fallbackCardCount?: number; - overscan?: number; - lanes?: number | "auto"; -}; -type DataTableExpandedRowProps = { - row: TData; - rowId: string; - tableRow: Row; -}; -/** A separately controlled application detail panel rendered beneath a row. */ -type DataTableDetailPanel = { - expanded?: ExpandedState; - onExpandedChange?: (expanded: ExpandedState) => void; - getRowCanExpand?: (row: TData) => boolean; - render: (props: DataTableExpandedRowProps) => React.ReactNode; -}; -type DataTableCsvExportOptions = { - filename?: string; - includeHeaders?: boolean; - columns?: Array; - scope?: DataTableCsvExportScope; - escapeFormulaValues?: boolean; - lineEnding?: "\n" | "\r\n"; - getCellValue?: (context: { - row: TData; - rowId: string; - columnId: string; - value: unknown; - }) => unknown; - onExport?: (context: { - csv: string; - filename: string; - rows: Array; - scope: DataTableCsvExportScope; - }) => void | Promise; -}; -type DataTableActionErrorContext = { - source: DataTableActionErrorSource; - error: unknown; - actionKey?: string; - row?: TData; -}; -type DataTableColumnPrefs = { - visibility?: VisibilityState; - sizing?: Record; - order?: ColumnOrderState; - pinning?: ColumnPinningState; - rowPinning?: RowPinningState; - density?: DataTableDensity; -}; -type DataTablePersistenceSlice = keyof DataTableColumnPrefs; -type DataTablePersistenceStorage = Pick; -type DataTablePersistenceOperation = "read" | "write" | "remove" | "serialize" | "deserialize" | "migrate"; -type DataTablePersistencePayload = { - version: string | number; - state: DataTableColumnPrefs; -}; -type DataTablePersistenceConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTablePersistencePayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - state: unknown; - }, targetVersion: string | number) => DataTableColumnPrefs | undefined; - debounceMs?: number; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableState = { - sorting: SortingState; - pagination: PaginationState; - rowSelection: Record; - columnVisibility: VisibilityState; - columnFilters: ColumnFiltersState; - expanded: ExpandedState; - columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; - rowPinning: RowPinningState; - columnSizing: ColumnSizingState; - /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ - grouping?: GroupingState; - density: DataTableDensity; - viewMode: DataTableViewMode; - showHiddenRows: boolean; - globalFilter: string; -}; -type DataTableInitialState = Partial; -type DataTableSavedViewSlice = keyof DataTableState; -type DataTableSavedView = { - id: string; - name: string; - createdAt: string; - updatedAt: string; - state: Partial; -}; -type DataTableSavedViewsPayload = { - version: string | number; - views: Array; -}; -type DataTableSavedViewsChangeOperation = "create" | "rename" | "delete" | "clear"; -type DataTableSavedViewsConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTableSavedViewsPayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - views: unknown; - }, targetVersion: string | number) => Array | undefined; - onChange?: (views: Array, operation: DataTableSavedViewsChangeOperation) => void; - onApply?: (view: DataTableSavedView) => void; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableResetOptions = { - clearPersistence?: boolean; -}; -type DataTableApi = { - getTable: () => Table | null; - getState: () => DataTableState; - snapshot: () => DataTableState; - restore: (state: Partial) => void; - resetColumnLayout: (options?: DataTableResetOptions) => void; - resetState: (options?: DataTableResetOptions) => void; - clearPersistedState: () => boolean; - getSavedViews: () => Array; - createSavedView: (name: string) => DataTableSavedView | undefined; - applySavedView: (id: string) => boolean; - renameSavedView: (id: string, name: string) => DataTableSavedView | undefined; - deleteSavedView: (id: string) => boolean; - clearSavedViews: () => boolean; - pinRow: (rowId: string, position?: "top" | "bottom") => boolean; - unpinRow: (rowId: string) => boolean; - focus: () => void; - scrollToRow: (rowId: string) => boolean; - scrollToColumn: (columnId: string) => boolean; - exportCsv: (options?: boolean | DataTableCsvExportOptions) => Promise; - copyToClipboard: (options?: boolean | DataTableClipboardCopyOptions) => Promise; - getCellSelection: () => DataTableCellSelection | null; - setCellSelection: (selection: DataTableCellSelection | null) => void; - clearCellSelection: () => void; - print: () => boolean; - toggleFullscreen: () => Promise; -}; -type DataTableLabels = { - searchPlaceholder: string; - searchTable: string; - clearSearch: string; - noRowsTitle: string; - noRowsDescription: string; - noMatchingRowsTitle: string; - noMatchingRowsDescription: string; - tableOptions: string; - columns: string; - filters: string; - clearFilters: string; - filterFrom?: string; - filterTo?: string; - filterTrue?: string; - filterFalse?: string; - selectedRows: (count: number) => string; - showHiddenRows: (label: string) => string; - recordsPerPage: string; - totalRecords: (count: number) => string; - pageStatus: (pageIndex: number, pageCount: number) => string; - pageStatusUnknown?: (pageIndex: number) => string; - pagination?: string; - morePages?: string; - firstPage: string; - previousPage: string; - nextPage: string; - lastPage: string; - selectAllVisibleRows?: string; - selectAllFilteredRows?: string; - selectRow?: string; - selectCardRow?: (rowId: string) => string; - switchToTableView?: string; - switchToCardView?: string; - tableView?: string; - cardView?: string; - allFilterOptions?: string; - actions: string; - rowActions: string; - editRow: string; - saveEdit: string; - cancelEdit: string; - expandRow: string; - collapseRow: string; - expandRowDetails?: string; - collapseRowDetails?: string; - exportCsv: string; - print?: string; - enterFullscreen?: string; - exitFullscreen?: string; - errorTitle?: string; - errorDescription?: string; - retry?: string; - density: string; - compactDensity: string; - comfortableDensity: string; - spaciousDensity: string; - pinLeft: string; - pinRight: string; - unpin: string; - pinRowToTop: string; - pinRowToBottom: string; - unpinRow: string; - resizeColumn: (columnLabel: string) => string; - grouping?: string; - groupBy?: (columnLabel: string) => string; - ungroup?: (columnLabel: string) => string; - removeGrouping?: (columnLabel: string) => string; - moveGroupingEarlier?: (columnLabel: string) => string; - moveGroupingLater?: (columnLabel: string) => string; - facetSearch?: (columnLabel: string) => string; - searchColumns?: string; - showAllColumns?: string; - hideAllColumns?: string; - moveColumnEarlier?: (columnLabel: string) => string; - moveColumnLater?: (columnLabel: string) => string; - resetColumnLayout?: string; - savedViews?: string; - createSavedView?: string; - savedViewName?: string; - applySavedView?: (name: string) => string; - renameSavedView?: (name: string) => string; - deleteSavedView?: (name: string) => string; - saveSavedView?: string; -}; -type DataTableSummaryRow = { - key: string; - label?: React.ReactNode; - cells: Record; - columnId: string; - }) => React.ReactNode)>; -}; -type DataTableRowClassNameContext = { - row: TData; - rowId: string; - rowIndex: number; - isEditing: boolean; - isExpanded: boolean; - isLoading: boolean; - isSelected: boolean; - pinnedPosition: false | "top" | "bottom"; -}; -type DataTableScrollbarVisibility = "auto" | "always" | "scroll" | "hover"; -type DataTableProps = { - columns: Array>; - data: Array; - getRowId: (row: TData, index: number) => string; - children?: React.ReactNode; - title?: string; - description?: string; - toolbarQueryValue?: string; - onToolbarQueryValueChange?: (value: string) => void; - toolbarQueryPlaceholder?: string; - toolbarQueryDebounceMs?: number; - manualFiltering?: boolean; - enableToolbarQueryFiltering?: boolean; - globalFilterFn?: FilterFnOption; - columnFilters?: ColumnFiltersState; - onColumnFiltersChange?: (filters: ColumnFiltersState) => void; - enableColumnFilters?: boolean; - customToolbar?: React.ReactNode; - compactToolbar?: React.ReactNode; - rowsPerPageOptions?: Array; - totalRowCount?: number; - hasNextPage?: boolean; - sorting?: SortingState; - onSortingChange?: (sorting: SortingState) => void; - manualSorting?: boolean; - grouping?: GroupingState; - onGroupingChange?: (grouping: GroupingState) => void; - /** Use rows already grouped by the server instead of TanStack's grouping model. */ - manualGrouping?: boolean; - /** Show group/ungroup controls in the table options menu and grouping bar. */ - enableGrouping?: boolean; - /** Controls whether grouped columns are reordered, removed, or left in place. */ - groupedColumnMode?: false | "reorder" | "remove"; - /** Named aggregation functions available to column `aggregationFn` definitions. */ - aggregationFns?: Record>; - pageIndex?: number; - pageSize?: number; - /** Sizes an opt-in page from the measurable table scroll viewport. */ - autoPageSize?: boolean | DataTableAutoPageSizeConfig; - onPageIndexChange?: (pageIndex: number) => void; - onPageSizeChange?: (pageSize: number) => void; - pageCount?: number; - manualPagination?: boolean; - rowSelection?: Record; - onRowSelectionChange?: (rowSelection: Record) => void; - enableRowSelection?: boolean; - /** Allows multiple selected rows globally or per row. Defaults to true. */ - enableMultiRowSelection?: boolean | ((row: TData) => boolean); - /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */ - enableSubRowSelection?: boolean | ((row: TData) => boolean); - /** Prevents individual rows from being selected. */ - getRowCanSelect?: (row: TData) => boolean; - /** Select-all affects the current page or all loaded filtered rows. */ - rowSelectionSelectAllScope?: "page" | "filtered"; - expanded?: ExpandedState; - onExpandedChange?: (expanded: ExpandedState) => void; - /** Resolve nested records for tree expansion. */ - getSubRows?: (row: TData, index: number) => Array | undefined; - /** Keep expansion state controlled by the host; useful for server-loaded children. */ - manualExpanding?: boolean; - /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */ - paginateExpandedRows?: boolean; - /** Include parents when a descendant matches a filter. */ - filterFromLeafRows?: boolean; - /** Limit descendant traversal while filtering. */ - maxLeafRowFilterDepth?: number; - /** New, independently controlled detail-panel contract. */ - detailPanel?: DataTableDetailPanel; - getRowCanExpand?: (row: TData) => boolean; - /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */ - renderExpandedRow?: (props: DataTableExpandedRowProps) => React.ReactNode; - columnOrder?: ColumnOrderState; - onColumnOrderChange?: (columnOrder: ColumnOrderState) => void; - enableColumnReordering?: boolean; - /** Default height for shared column-group header cells. */ - columnGroupHeaderHeight?: React.CSSProperties["height"]; - columnPinning?: ColumnPinningState; - onColumnPinningChange?: (columnPinning: ColumnPinningState) => void; - enableColumnPinning?: boolean; - rowPinning?: RowPinningState; - onRowPinningChange?: (rowPinning: RowPinningState) => void; - /** Enables row actions that pin a row to the top or bottom of the table. */ - enableRowPinning?: boolean | ((row: TData) => boolean); - /** Keep pinned rows visible when filtering or paginating them out. */ - keepPinnedRows?: boolean; - toolbarActions?: Array>; - selectionActions?: Array>; - rowActions?: Array>; - csvExport?: boolean | DataTableCsvExportOptions; - /** Opt-in TSV/CSV copy and application-owned paste handling. */ - clipboard?: DataTableClipboardConfig; - /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */ - enableCellSelection?: boolean; - /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */ - cellSelection?: DataTableCellSelection | null; - /** Initial cell/range selection when uncontrolled. */ - defaultCellSelection?: DataTableCellSelection | null; - onCellSelectionChange?: (selection: DataTableCellSelection | null) => void; - /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */ - gridCommands?: DataTableGridCommands; - density?: DataTableDensity; - onDensityChange?: (density: DataTableDensity) => void; - enableDensityToggle?: boolean; - columnPrefsKey?: string; - persistence?: DataTablePersistenceConfig; - savedViews?: DataTableSavedViewsConfig; - initialState?: DataTableInitialState; - state?: Partial; - onStateChange?: (updater: Updater) => void; - apiRef?: React.Ref>; - labels?: Partial; - summaryRows?: Array>; - cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode; - cardSizing?: DataTableCardSizing; - cardGridClassName?: string; - cardClassName?: string; - viewMode?: DataTableViewMode; - onViewModeChange?: (viewMode: DataTableViewMode) => void; - enableViewToggle?: boolean; - enablePrint?: boolean; - enableFullscreen?: boolean; - emptyState?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); - /** Explicit empty/error/retry rendering contract. */ - stateOverlay?: DataTableStateOverlay; - isLoading?: boolean; - loadingRowCount?: number; - getRowLoadingState?: (row: TData, index: number) => boolean | DataTableRowLoadingState; - hiddenRows?: DataTableHiddenRowsConfig; - showHiddenRows?: boolean; - onShowHiddenRowsChange?: (showHiddenRows: boolean) => void; - infiniteScroll?: DataTableInfiniteScroll; - editableRows?: DataTableEditableRowsConfig; - columnVisibility?: VisibilityState; - onColumnVisibilityChange?: (visibility: VisibilityState) => void; - columnSizing?: ColumnSizingState; - onColumnSizingChange?: (sizing: ColumnSizingState) => void; - enableColumnResizing?: boolean; - columnResizeMode?: "onChange" | "onEnd"; - layoutMode?: "fill" | "fit"; - stickyHeader?: boolean; - /** Controls when scrollbars are visible. Defaults to `"hover"`. */ - scrollbarVisibility?: DataTableScrollbarVisibility; - showFooter?: boolean; - showToolbar?: boolean; - dir?: "ltr" | "rtl"; - flexGrow?: boolean; - toolbarVisibility?: DataTableToolbarVisibility; - /** Opts into enhanced layout and saved-view toolbar controls. */ - toolbarDataOperations?: boolean | DataTableToolbarDataOperations; - className?: string; - tableClassName?: string; - tableContainerClassName?: string; - stripedRows?: boolean; - getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; - onRowClick?: (context: { - row: TData; - rowId: string; - }) => void | Promise; - onActionError?: (context: DataTableActionErrorContext) => void; - dragAndDrop?: DataTableDragAndDropConfig; - fileUpload?: DataTableFileUploadConfig; - virtualization?: boolean | DataTableVirtualizationConfig; - /** Opt in to ARIA grid semantics and roving keyboard navigation. */ - accessibility?: DataTableAccessibilityOptions; - /** Shorthand for `accessibility={{ mode: "grid" }}`. */ - interactiveGrid?: boolean | DataTableInteractiveGridOptions; -}; -declare function isRowVisible(row: TData, hiddenRows: DataTableHiddenRowsConfig | undefined, showHiddenRows: boolean): boolean; -declare function resolveRowActionLabel(label: DataTableRowAction["label"], row: TData): string; -declare function canUseRowAction(action: DataTableRowAction, row: TData): boolean; -declare function canEditRow(editableRows: DataTableEditableRowsConfig | undefined, row: TData): boolean; -declare function alignClassName(align: DataTableAlign | undefined): "text-center" | "text-right" | "text-left"; -declare function resolveColumnAlign(align: DataTableAlign | undefined, type: DataTableColumnType | undefined): DataTableAlign; -declare function headerAlignClassName(context: HeaderContext): "text-center" | "text-right" | "text-left"; -declare function cellAlignClassName(context: CellContext): "text-center" | "text-right" | "text-left"; -declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined): string | undefined; -declare function isHiddenAtContainerWidth(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; -declare function rowSelectionStateFromRows(rows: Array>): TData[]; - -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableAccessibilityOptions, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableAutoPageSizeConfig, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellCoordinate, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableCellSelection, type DataTableClipboardConfig, type DataTableClipboardCopyOptions, type DataTableClipboardCopyScope, type DataTableClipboardPasteContext, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOperator, type DataTableColumnFilterOption, type DataTableColumnFilterRangeValue, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDetailPanel, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFacetedFilterOptions, type DataTableFileUploadConfig, type DataTableGridCommandContext, type DataTableGridCommands, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableInteractiveGridOptions, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableScrollbarVisibility, type DataTableSelectionAction, type DataTableSelectionActionContext, type DataTableState, type DataTableStateOverlay, type DataTableStateOverlayContext, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarDataOperations, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, D as DataTableProps, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; +import '@tanstack/react-table'; +import 'react'; ``` diff --git a/demo/src/DemoApp.tsx b/demo/src/DemoApp.tsx index 0d0de2f..582cd82 100644 --- a/demo/src/DemoApp.tsx +++ b/demo/src/DemoApp.tsx @@ -17,7 +17,10 @@ import type { DataTableProps, DataTableViewMode, } from "data-table-pro"; -import type { SortingState, VisibilityState } from "@tanstack/react-table"; +import type { + ColumnVisibilityState as VisibilityState, + SortingState, +} from "@tanstack/react-table"; type AdapterKey = "shadcn" | "heroui" | "thegridcn"; type ThemeKey = "light" | "dark"; diff --git a/dist/adapter-virtual.d.ts b/dist/adapter-virtual.d.ts index 8574681..f5ed558 100644 --- a/dist/adapter-virtual.d.ts +++ b/dist/adapter-virtual.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; diff --git a/dist/adapter-virtual.js b/dist/adapter-virtual.js index ebf8719..f71650f 100644 --- a/dist/adapter-virtual.js +++ b/dist/adapter-virtual.js @@ -1,2 +1,2 @@ -export{a as createVirtualDataTable}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter-virtual.js.map +export{a as createVirtualDataTable}from'./chunk-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter-virtual.js.map //# sourceMappingURL=adapter-virtual.js.map \ No newline at end of file diff --git a/dist/adapter.d.ts b/dist/adapter.d.ts index e1c5d49..c12a84a 100644 --- a/dist/adapter.d.ts +++ b/dist/adapter.d.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit } from './ui-kit-C6Z8X6oi.js'; export { a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; import '@tanstack/react-table'; diff --git a/dist/adapter.js b/dist/adapter.js index 3f35426..67b231b 100644 --- a/dist/adapter.js +++ b/dist/adapter.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-VSIOOKCO.js';export{i as createDataTable}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter.js.map +export{X as primitiveUiKit}from'./chunk-VSIOOKCO.js';export{i as createDataTable}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=adapter.js.map //# sourceMappingURL=adapter.js.map \ No newline at end of file diff --git a/dist/advanced.d.ts b/dist/advanced.d.ts index ae6ed6d..6ec80be 100644 --- a/dist/advanced.d.ts +++ b/dist/advanced.d.ts @@ -1,9 +1,9 @@ export { createDataTable, primitiveUiKit } from './adapter.js'; import * as React from 'react'; import * as _tanstack_react_table from '@tanstack/react-table'; -import { ExpandedState, Row, OnChangeFn, ColumnSizingState, Column, RowPinningPosition, Cell, Table, PaginationState, SortingState, Header, Updater, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, RowPinningState, GroupingState, VisibilityState, FilterFnOption } from '@tanstack/react-table'; -import { DataTableProps, DataTableLabels, DataTableColumnDef, DataTableDensity, DataTableRowLoadingState, DataTableCellSelection, DataTableSavedView, DataTableEditableRowsConfig, DataTableRowAction, DataTableDetailPanel } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDragAndDropConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowClassNameContext, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { ExpandedState, OnChangeFn, ColumnSizingState, RowPinningPosition, PaginationState, SortingState, Updater, ColumnFiltersState, ColumnOrderState, RowPinningState, GroupingState, ColumnVisibilityState } from '@tanstack/react-table'; +import { D as DataTableProps, az as DataTableTanStackRow, Y as DataTableLabels, t as DataTableColumnDef, aA as DataTableTanStackColumn, K as DataTableDensity, a6 as DataTableRowLoadingState, aB as DataTableTanStackCell, o as DataTableCellSelection, aC as DataTableTanStackTable, aD as DataTableTanStackHeader, a7 as DataTableSavedView, N as DataTableEditableRowsConfig, a4 as DataTableRowAction, L as DataTableDetailPanel, aE as DataTableTanStackColumnDef, C as DataTableColumnPinningState, aF as DataTableTanStackFilterFnOption } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, M as DataTableDragAndDropConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a5 as DataTableRowClassNameContext, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import { D as DataTableUiKit, a as DataTableUiClassNames } from './ui-kit-C6Z8X6oi.js'; type DataTableCardPanelProps = { @@ -27,7 +27,7 @@ type DataTableCardPanelProps = { infiniteScroll: DataTableProps["infiniteScroll"]; localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; resolvedLabels: DataTableLabels; resolvedLoadingRowCount: number; @@ -70,7 +70,7 @@ declare function useColumnLayout({ columns, columnSizing, editableRows, e hasRowExpansion: boolean; layoutMode: ColumnLayoutMode; uiClassNames: DataTableUiClassNames; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }): { columnLayouts: Map; explicitlySizedColumnIds: Set; @@ -125,12 +125,12 @@ type DataTableBodyRowProps = { pinnedPosition?: Exclude; originalRow: TData; detailPanel: DataTableProps["detailPanel"]; - row: Row; + row: DataTableTanStackRow; rowIndex: number; setDraftValues: React.Dispatch>>; stripedRows: boolean; uiClassNames: DataTableUiClassNames; - visibleCells: Array>; + visibleCells: Array>; visibleLeafColumnCount: number; }; declare function DataTableBodyRowInner({ columnLayouts, components, currentDensity, draftValues, editingContext, dragAndDrop, explicitCustomCellColumnIds, getRowClassName, groupToggleLabel, gridMode, gridRowAriaIndex, gridRowIndex, activeGridCell, cellSelectionEnabled, isGridCellSelected, onGridCellFocus, onGridCellKeyDown, onGridCellPointerDown, onGridCellPointerEnter, isDraggable, isDetailExpanded, isEditing, isExpanded, isInitialLoadingRow, isSelected, loadingState, onRowClick, pinnedPosition, originalRow, detailPanel, row, rowIndex, setDraftValues, stripedRows, uiClassNames, visibleCells, visibleLeafColumnCount, }: DataTableBodyRowProps): React.JSX.Element; @@ -173,15 +173,15 @@ type DataTableTablePanelProps = { localSearchValue: string; onRowClick: DataTableProps["onRowClick"]; primeColumnForResize: (columnId: string, currentSize: number) => void; - renderedRows: Array>; + renderedRows: Array>; detailPanel: DataTableProps["detailPanel"]; - topPinnedRows: Array>; - bottomPinnedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; resetColumnSize: (columnId: string) => void; resolvedLabels: DataTableLabels; rowsToRender: Array<{ - row: Row; + row: DataTableTanStackRow; rowIndex: number; }>; ScrollArea: DataTableUiKit["ScrollArea"]; @@ -194,7 +194,7 @@ type DataTableTablePanelProps = { stickyHeader: boolean; stripedRows: boolean; summaryRows: NonNullable["summaryRows"]>; - table: Table; + table: DataTableTanStackTable; tableClassName: string | undefined; tableContainerClassName: string | undefined; Table: DataTableUiKit["Table"]; @@ -213,7 +213,7 @@ type DataTableTablePanelProps = { virtualPaddingBottom: number; virtualPaddingTop: number; visibleLeafColumnCount: number; - visibleLeafColumns: Array>; + visibleLeafColumns: Array>; }; declare function DataTableTablePanel({ ariaDescribedBy, ariaLabelledBy, bodyRowComponents, cellSelection, cellSelectionEnabled, columnLayouts, columnGroupHeaderHeight, currentDensity, currentDetailExpanded, currentSorting, dir, DataTableEmptyState, dragAndDrop, draggedColumnIdRef, draftValues, editingRowId, editingContext, emptyNode, enableColumnReordering, enableColumnResizing, explicitCustomCellColumnIds, fillMinWidth, flexGrow, gridMode, gridPageSize, gridRowOffset, onGridActiveRowIndexChange, onCellSelectionChange, getColumnLayout, getRowClassName, getRowLoadingState, infiniteScroll, layoutMode, localSearchValue, onRowClick, primeColumnForResize, renderedRows, detailPanel, topPinnedRows, bottomPinnedRows, reorderColumn, resetColumnSize, resolvedLabels, rowsToRender, ScrollArea, ScrollBar, scrollbarVisibility, sentinelRef, setDraftValues, shouldRenderInitialLoading, stateOverlayNode, stickyHeader, stripedRows, summaryRows, table, tableClassName, tableContainerClassName, Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, tableScrollContainerRef, tableScrollElement, totalRowCount, uiClassNames, virtualPaddingBottom, virtualPaddingTop, visibleLeafColumnCount, visibleLeafColumns, }: DataTableTablePanelProps): React.JSX.Element; @@ -242,8 +242,8 @@ type DataTableHeaderCellProps = { enableColumnResizing: boolean; gridColumnIndex?: number; gridMode: boolean; - header: Header; - headerGroupHeaders: Array>; + header: DataTableTanStackHeader; + headerGroupHeaders: Array>; layout: DataTableColumnLayout; primeColumnForResize: (columnId: string, currentSize: number) => void; reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; @@ -295,7 +295,7 @@ type DataTableToolbarSectionProps = { selectionActions: DataTableProps["selectionActions"]; savedViews: Array; showHiddenRows: boolean; - table: Table; + table: DataTableTanStackTable; title: string | undefined; titleId: string | undefined; toolbarQueryPlaceholder: string; @@ -353,8 +353,8 @@ declare function useDataTableColumns({ Button, Checkbox, DataTableRowActi rowActions: Array>; saveEdit: (row: TData) => Promise; startEditingRow: (row: TData, rowId: string) => void; - tableRef: React.RefObject | null>; -}): ColumnDef[]; + tableRef: React.RefObject | null>; +}): DataTableTanStackColumnDef[]; type DataTableColumnGroupPathSegment = { id: string; @@ -362,6 +362,27 @@ type DataTableColumnGroupPathSegment = { }; type DataTableColumnGroupPaths = ReadonlyMap>; +type DataTableRowsToRender = Array<{ + row: DataTableTanStackRow; + rowIndex: number; +}>; +type DataTableInstanceResult = { + effectivePageCount: number; + footerTotalRowCount: number | undefined; + handleFooterPageIndexChange: (nextPageIndex: number) => void; + handleFooterPageSizeChange: (nextPageSize: number) => void; + isPageCountKnown: boolean; + renderedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + rowsToRender: DataTableRowsToRender; + sentinelRef: React.RefObject; + table: DataTableTanStackTable; + virtualPaddingBottom: number; + virtualPaddingTop: number; + visibleLeafColumns: Array>; +}; declare function useDataTableInstance({ autoResetPageIndex, columnGroupPaths, columnResizeMode, dir, currentColumnFilters, currentColumnOrder, currentColumnPinning, currentRowPinning, currentColumnSizing, currentExpanded, currentGrouping, currentPagination, currentRowSelection, currentSorting, currentViewMode, defaultColumn, effectiveColumnVisibility, enableColumnResizing, enableMultiRowSelection, enableRowPinning, enableRowSelection, enableSubRowSelection, getRowCanSelect, getRowCanExpand, getSubRows, aggregationFns, groupedColumnMode, globalFilterFn, globalFilterValue, hasNextPage, handleColumnFiltersChange, handleColumnOrderChange, handleColumnPinningChange, handleRowPinningChange, handleColumnVisibilityChange, handleExpandedChange, handleGroupingChange, infiniteScroll, keepPinnedRows, manualFiltering, manualGrouping, manualExpanding, manualPagination, manualSorting, onActionError, onPageIndexChange, onPageSizeChange, pageCount, pageIndex, pageSize, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, setCurrentRowSelection, setCurrentSorting, setLocalColumnSizing, setLocalPagination, shouldRenderInitialLoading, tableColumns, tableData, tableGetRowId, tableRef, totalRowCount, virtualization, }: { autoResetPageIndex: boolean; columnGroupPaths: DataTableColumnGroupPaths; @@ -369,7 +390,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; @@ -378,8 +399,8 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa currentRowSelection: Record; currentSorting: SortingState; currentViewMode: "table" | "card"; - defaultColumn: Partial>; - effectiveColumnVisibility: VisibilityState; + defaultColumn: Partial>; + effectiveColumnVisibility: ColumnVisibilityState; enableColumnResizing: boolean; enableMultiRowSelection: NonNullable["enableMultiRowSelection"]>; enableRowPinning: DataTableProps["enableRowPinning"]; @@ -390,14 +411,14 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa getSubRows: DataTableProps["getSubRows"]; aggregationFns: DataTableProps["aggregationFns"]; groupedColumnMode: DataTableProps["groupedColumnMode"]; - globalFilterFn: FilterFnOption | undefined; + globalFilterFn: DataTableTanStackFilterFnOption | undefined; globalFilterValue: string; hasNextPage?: DataTableProps["hasNextPage"]; handleColumnFiltersChange: OnChangeFn; handleColumnOrderChange: OnChangeFn; - handleColumnPinningChange: OnChangeFn; + handleColumnPinningChange: OnChangeFn; handleRowPinningChange: OnChangeFn; - handleColumnVisibilityChange: OnChangeFn; + handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; handleGroupingChange: OnChangeFn; infiniteScroll: DataTableProps["infiniteScroll"]; @@ -421,10 +442,10 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa setLocalColumnSizing: OnChangeFn; setLocalPagination: React.Dispatch>; shouldRenderInitialLoading: boolean; - tableColumns: Array>; + tableColumns: Array>; tableData: Array; tableGetRowId: DataTableProps["getRowId"]; - tableRef: React.RefObject | null>; + tableRef: React.RefObject | null>; tableScrollElement: HTMLElement | null; /** * @deprecated Filtering now runs through TanStack Table. Retained so @@ -434,30 +455,7 @@ declare function useDataTableInstance({ autoResetPageIndex, columnGroupPa totalRowCount: DataTableProps["totalRowCount"]; virtualization: DataTableProps["virtualization"]; viewportHeight: number; -}): { - effectivePageCount: number; - footerTotalRowCount: number | undefined; - handleFooterPageIndexChange: (nextPageIndex: number) => void; - handleFooterPageSizeChange: (nextPageSize: number) => void; - isPageCountKnown: boolean; - renderedRows: Row[]; - topPinnedRows: Row[]; - bottomPinnedRows: Row[]; - reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; - rowsToRender: { - row: Row; - rowIndex: number; - }[]; - sentinelRef: React.RefObject; - table: Table; - virtualPaddingBottom: number; - virtualPaddingTop: number; - visibleLeafColumns: _tanstack_react_table.Column[]; -}; -type DataTableRowsToRender = Array<{ - row: Row; - rowIndex: number; -}>; +}): DataTableInstanceResult; declare function useDataTableState({ columnFilters, columnOrder, columnPinning, rowPinning, columnSizing, columnPrefsKey, persistence, columnVisibility, columns, data, density, enableRowSelection, enableToolbarQueryFiltering, expanded, grouping, getSubRows, getRowId, hiddenRows, initialState, isLoading, loadingRowCount, manualFiltering, onColumnFiltersChange, onColumnOrderChange, onColumnPinningChange, onRowPinningChange, onColumnSizingChange, onColumnVisibilityChange, onDensityChange, onExpandedChange, onGroupingChange, onPageIndexChange, onRowSelectionChange, onShowHiddenRowsChange, onSortingChange, onToolbarQueryValueChange, onViewModeChange, pageIndex, pageSize, resolvedLabels, rowSelection, rowsPerPageOptions, selectionActions, showHiddenRows, sorting, toolbarQueryDebounceMs, toolbarQueryPlaceholder, toolbarQueryValue, viewMode, containerRef, }: { columnFilters: DataTableProps["columnFilters"]; @@ -514,10 +512,10 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi containerWidth: number; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; - currentColumnVisibility: VisibilityState; + currentColumnVisibility: ColumnVisibilityState; currentDensity: DataTableDensity; currentExpanded: ExpandedState; currentGrouping: GroupingState; @@ -526,7 +524,7 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi currentShowHiddenRows: boolean; currentSorting: SortingState; currentViewMode: "table" | "card"; - effectiveColumnVisibility: VisibilityState; + effectiveColumnVisibility: ColumnVisibilityState; globalFilterValue: string; handleDensityChange: (nextDensity: DataTableDensity) => void; handleShowHiddenRowsChange: (nextShowHiddenRows: boolean) => void; @@ -538,9 +536,9 @@ declare function useDataTableState({ columnFilters, columnOrder, columnPi selectedRows: TData[]; setCurrentColumnFilters: (updater: _tanstack_react_table.Updater) => void; setCurrentColumnOrder: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; + setCurrentColumnPinning: (updater: _tanstack_react_table.Updater) => void; setCurrentRowPinning: (updater: _tanstack_react_table.Updater) => void; - setCurrentColumnVisibility: (updater: _tanstack_react_table.Updater) => void; + setCurrentColumnVisibility: (updater: _tanstack_react_table.Updater) => void; setCurrentExpanded: (updater: _tanstack_react_table.Updater) => void; setCurrentGrouping: (updater: _tanstack_react_table.Updater) => void; setCurrentRowSelection: (updater: _tanstack_react_table.Updater>) => void; @@ -579,4 +577,4 @@ declare function useRowEditing({ columns, editableRows, onError, }: { declare function useStableCallback, TResult>(callback: ((...args: TArgs) => TResult) | undefined): (...args: TArgs) => TResult | undefined; -export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableSavedView, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; +export { DataTableBodyRow, DataTableCardPanel, DataTableCellSelection, DataTableColumnDef, type DataTableColumnLayout, DataTableColumnPinningState, DataTableDensity, DataTableDetailPanel, DataTableEditableRowsConfig, DataTableFooterSection, DataTableHeaderCell, DataTableLabels, DataTableProps, DataTableRowAction, DataTableRowLoadingState, type DataTableRowsToRender, DataTableSavedView, DataTableTablePanel, DataTableToolbarSection, DataTableUiClassNames, DataTableUiKit, useColumnLayout, useControllableState, useDataTableColumns, useDataTableInstance, useDataTableState, useRowEditing, useStableCallback }; diff --git a/dist/advanced.js b/dist/advanced.js index 48c0b4d..6da2ffe 100644 --- a/dist/advanced.js +++ b/dist/advanced.js @@ -1,2 +1,2 @@ -export{X as primitiveUiKit}from'./chunk-VSIOOKCO.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,e as useControllableState,d as useDataTableColumns,f as useDataTableInstance,g as useDataTableState}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';export{c as DataTableBodyRow,d as DataTableHeaderCell,e as DataTableTablePanel,a as useRowEditing}from'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map +export{X as primitiveUiKit}from'./chunk-VSIOOKCO.js';export{a as DataTableCardPanel,b as DataTableFooterSection,c as DataTableToolbarSection,i as createDataTable,h as useColumnLayout,e as useControllableState,d as useDataTableColumns,f as useDataTableInstance,g as useDataTableState}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';export{c as DataTableBodyRow,d as DataTableHeaderCell,e as DataTableTablePanel,a as useRowEditing}from'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';import*as e from'react';function R(a){let t=e.useRef(a);return e.useLayoutEffect(()=>{t.current=a;}),e.useCallback((...o)=>t.current?.(...o),[])}export{R as useStableCallback};//# sourceMappingURL=advanced.js.map //# sourceMappingURL=advanced.js.map \ No newline at end of file diff --git a/dist/chunk-7IWMFF7E.js b/dist/chunk-7IWMFF7E.js new file mode 100644 index 0000000..5c1b533 --- /dev/null +++ b/dist/chunk-7IWMFF7E.js @@ -0,0 +1,2 @@ +var i={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function l(e,a,t){return !a||t?true:!a.getIsHidden(e)}function s(e,a){return typeof e=="function"?e(a):e}function d(e,a){return !e.hidden?.(a)}function b(e,a){return e?.canEditRow?e.canEditRow(a):!!e}function n(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function o(e,a){return e||(a==="numeric"?"end":"start")}function g(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function T(e){let a=e.column.columnDef.meta;return n(o(a?.align,a?.type))}function p(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function c(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(r=>a;\n\n/** A stable grid coordinate used for cell and rectangular range selection. */\nexport type DataTableCellCoordinate = {\n rowId: string;\n columnId: string;\n};\n\n/** The two corners of a cell selection. A single-cell selection has equal corners. */\nexport type DataTableCellSelection = {\n anchor: DataTableCellCoordinate;\n focus: DataTableCellCoordinate;\n};\n\nexport type DataTableGridCommandContext = {\n table: TanStackTable;\n cellSelection: DataTableCellSelection | null;\n};\n\n/** Commands are delegated to the application; the table never records app data. */\nexport type DataTableGridCommands = {\n undo?: (context: DataTableGridCommandContext) => void | Promise;\n redo?: (context: DataTableGridCommandContext) => void | Promise;\n};\n\nexport type DataTableAlign = \"start\" | \"center\" | \"end\";\nexport type DataTableColumnType = \"text\" | \"numeric\" | \"date\";\nexport type DataTableColumnFixed = \"left\" | \"right\";\n/** Physical pinning state retained at the public API and persistence boundary. */\nexport type DataTableColumnPinningState = {\n left?: Array;\n right?: Array;\n};\n/** A TanStack Table v9 context-based aggregation definition. */\nexport type DataTableAggregationFn =\n DataTableTanStackAggregationFn;\nexport type DataTableContainerBreakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type DataTableDensity = \"compact\" | \"comfortable\" | \"spacious\";\nexport type DataTableCardSizing = \"fixed\" | \"content\" | \"fluid\";\nexport type DataTableCellOverflow =\n | \"truncate\"\n | \"clip\"\n | \"wrap\"\n | \"visible\";\nexport type DataTableColumnFilterType =\n | \"text\"\n | \"select\"\n | \"multi\"\n | \"faceted\"\n | \"boolean\"\n | \"numberRange\"\n | \"dateRange\";\nexport type DataTableColumnFilterOperator =\n | \"contains\"\n | \"equals\"\n | \"startsWith\"\n | \"endsWith\";\nexport type DataTableCsvExportScope =\n | \"filtered\"\n | \"page\"\n | \"selected\"\n | \"all\";\nexport type DataTableClipboardCopyScope =\n | DataTableCsvExportScope\n | \"cellSelection\";\nexport type DataTableClipboardCopyOptions = {\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableClipboardCopyScope;\n /** Defaults to tab-separated text. */\n delimiter?: \"\\t\" | \",\";\n escapeFormulaValues?: boolean;\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n /** Host-owned clipboard delivery for non-browser or permission-managed apps. */\n onCopy?: (context: {\n text: string;\n rows: Array;\n scope: DataTableClipboardCopyScope;\n }) => void | Promise;\n};\nexport type DataTableClipboardPasteContext = {\n text: string;\n values: Array>;\n table: TanStackTable;\n};\nexport type DataTableClipboardConfig = {\n copy?: boolean | DataTableClipboardCopyOptions;\n paste?: {\n enabled?: boolean;\n preventDefault?: boolean;\n onPaste: (\n context: DataTableClipboardPasteContext,\n ) => void | Promise;\n };\n};\nexport type DataTableActionErrorSource =\n | \"toolbarAction\"\n | \"selectionAction\"\n | \"rowAction\"\n | \"rowClick\"\n | \"edit\"\n | \"undo\"\n | \"redo\"\n | \"clipboardCopy\"\n | \"clipboardPaste\"\n | \"fileUpload\"\n | \"infiniteScroll\"\n | \"retry\";\n\nexport const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record<\n DataTableContainerBreakpoint,\n number\n> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableAutoPageSizeConfig = {\n minRows?: number;\n maxRows?: number;\n estimateRowHeight?: number;\n};\n\nexport type DataTableStateOverlayContext = {\n rows: Array;\n toolbarQueryValue: string;\n error: unknown;\n isRetrying: boolean;\n retry: (() => void | Promise) | undefined;\n};\n\nexport type DataTableStateOverlay = {\n empty?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n error?: unknown;\n isRetrying?: boolean;\n onRetry?: () => void | Promise;\n renderError?: (\n context: DataTableStateOverlayContext,\n ) => React.ReactNode;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n error?: string;\n isDirty: boolean;\n isPending: boolean;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n /** Number of matching records. Omit when the count is not known. */\n count?: number;\n disabled?: boolean;\n};\n\nexport type DataTableFacetedFilterOptions = {\n /**\n * Server-provided facet values. When supplied, these take precedence over\n * locally calculated unique values and their counts.\n */\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n /** Render a readable label for values discovered from the local row model. */\n getOptionLabel?: (value: TValue | undefined) => string;\n /** Enables an in-menu search input. Defaults to true. */\n searchable?: boolean;\n searchPlaceholder?: string;\n};\n\nexport type DataTableColumnFilterRangeValue = {\n from?: TValue;\n to?: TValue;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n /** Settings for `type: \"faceted\"`, including server-provided facet data. */\n faceting?: DataTableFacetedFilterOptions;\n operator?: DataTableColumnFilterOperator;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n /**\n * A concise explanation of the columns in this group. It is exposed as an\n * accessible description and native tooltip on the shared header.\n */\n description?: string;\n /**\n * Allows leaves to cross this group's boundary during column reordering.\n * Groups are locked by default so a shared heading remains intact.\n */\n freeReordering?: boolean;\n /** Additional class name for this shared group header. */\n headerClassName?: string;\n /** Additional inline styles for this shared group header. */\n headerStyle?: React.CSSProperties;\n /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */\n headerHeight?: React.CSSProperties[\"height\"];\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionActionContext = {\n /** Selected row objects that are present in the currently loaded data. */\n rows: Array;\n /** Every selected row id, including ids retained across server pages. */\n rowIds: Array;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: DataTableSelectionActionContext) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?:\n | boolean\n | ((\n rows: Array,\n context: DataTableSelectionActionContext,\n ) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\n/** Optional toolbar controls for working with the current table layout and views. */\nexport type DataTableToolbarDataOperations = {\n /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */\n columnChooser?: boolean;\n /** Create, apply, rename, and delete saved views when `savedViews` is configured. */\n savedViews?: boolean;\n /** Adds a reset-layout action using the table's initial layout. */\n resetLayout?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n depth: number;\n canExpandSubRows: boolean;\n isSubRowsExpanded: boolean;\n toggleSubRowsExpanded: () => void;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n validateRow?: (\n row: TData,\n draftValues: Record,\n ) =>\n | void\n | string\n | Record\n | Promise>;\n /** Apply an optimistic host update and optionally return a rollback callback. */\n onOptimisticUpdate?: (\n row: TData,\n draftValues: Record,\n ) => void | (() => void);\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n onSaveSuccess?: (\n row: TData,\n draftValues: Record,\n ) => void;\n onSaveError?: (\n error: unknown,\n row: TData,\n draftValues: Record,\n ) => void;\n /** Defaults to true for inputs owned by the table. */\n commitOnEnter?: boolean;\n /** Defaults to true for inputs owned by the table. */\n cancelOnEscape?: boolean;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n fallbackRowCount?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n fallbackCardCount?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\n/** A separately controlled application detail panel rendered beneath a row. */\nexport type DataTableDetailPanel = {\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n render: (props: DataTableExpandedRowProps) => React.ReactNode;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: DataTableColumnPinningState;\n rowPinning?: RowPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: DataTableColumnPinningState;\n rowPinning: RowPinningState;\n columnSizing: ColumnSizingState;\n /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */\n grouping?: GroupingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n pinRow: (rowId: string, position?: \"top\" | \"bottom\") => boolean;\n unpinRow: (rowId: string) => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n copyToClipboard: (\n options?: boolean | DataTableClipboardCopyOptions,\n ) => Promise;\n getCellSelection: () => DataTableCellSelection | null;\n setCellSelection: (selection: DataTableCellSelection | null) => void;\n clearCellSelection: () => void;\n print: () => boolean;\n toggleFullscreen: () => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n filterFrom?: string;\n filterTo?: string;\n filterTrue?: string;\n filterFalse?: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectAllFilteredRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n expandRowDetails?: string;\n collapseRowDetails?: string;\n exportCsv: string;\n print?: string;\n enterFullscreen?: string;\n exitFullscreen?: string;\n errorTitle?: string;\n errorDescription?: string;\n retry?: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n pinRowToTop: string;\n pinRowToBottom: string;\n unpinRow: string;\n resizeColumn: (columnLabel: string) => string;\n grouping?: string;\n groupBy?: (columnLabel: string) => string;\n ungroup?: (columnLabel: string) => string;\n removeGrouping?: (columnLabel: string) => string;\n moveGroupingEarlier?: (columnLabel: string) => string;\n moveGroupingLater?: (columnLabel: string) => string;\n facetSearch?: (columnLabel: string) => string;\n searchColumns?: string;\n showAllColumns?: string;\n hideAllColumns?: string;\n moveColumnEarlier?: (columnLabel: string) => string;\n moveColumnLater?: (columnLabel: string) => string;\n resetColumnLayout?: string;\n savedViews?: string;\n createSavedView?: string;\n savedViewName?: string;\n applySavedView?: (name: string) => string;\n renameSavedView?: (name: string) => string;\n deleteSavedView?: (name: string) => string;\n saveSavedView?: string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableRowClassNameContext = {\n row: TData;\n rowId: string;\n rowIndex: number;\n isEditing: boolean;\n isExpanded: boolean;\n isLoading: boolean;\n isSelected: boolean;\n pinnedPosition: false | \"top\" | \"bottom\";\n};\n\nexport type DataTableScrollbarVisibility =\n | \"auto\"\n | \"always\"\n | \"scroll\"\n | \"hover\";\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n grouping?: GroupingState;\n onGroupingChange?: (grouping: GroupingState) => void;\n /** Use rows already grouped by the server instead of TanStack's grouping model. */\n manualGrouping?: boolean;\n /** Show group/ungroup controls in the table options menu and grouping bar. */\n enableGrouping?: boolean;\n /** Controls whether grouped columns are reordered, removed, or left in place. */\n groupedColumnMode?: false | \"reorder\" | \"remove\";\n /** Named aggregation functions available to column `aggregationFn` definitions. */\n aggregationFns?: Record>;\n pageIndex?: number;\n pageSize?: number;\n /** Sizes an opt-in page from the measurable table scroll viewport. */\n autoPageSize?: boolean | DataTableAutoPageSizeConfig;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n /** Allows multiple selected rows globally or per row. Defaults to true. */\n enableMultiRowSelection?: boolean | ((row: TData) => boolean);\n /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */\n enableSubRowSelection?: boolean | ((row: TData) => boolean);\n /** Prevents individual rows from being selected. */\n getRowCanSelect?: (row: TData) => boolean;\n /** Select-all affects the current page or all loaded filtered rows. */\n rowSelectionSelectAllScope?: \"page\" | \"filtered\";\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n /** Resolve nested records for tree expansion. */\n getSubRows?: (row: TData, index: number) => Array | undefined;\n /** Keep expansion state controlled by the host; useful for server-loaded children. */\n manualExpanding?: boolean;\n /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */\n paginateExpandedRows?: boolean;\n /** Include parents when a descendant matches a filter. */\n filterFromLeafRows?: boolean;\n /** Limit descendant traversal while filtering. */\n maxLeafRowFilterDepth?: number;\n /** New, independently controlled detail-panel contract. */\n detailPanel?: DataTableDetailPanel;\n getRowCanExpand?: (row: TData) => boolean;\n /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n /** Default height for shared column-group header cells. */\n columnGroupHeaderHeight?: React.CSSProperties[\"height\"];\n columnPinning?: DataTableColumnPinningState;\n onColumnPinningChange?: (columnPinning: DataTableColumnPinningState) => void;\n enableColumnPinning?: boolean;\n rowPinning?: RowPinningState;\n onRowPinningChange?: (rowPinning: RowPinningState) => void;\n /** Enables row actions that pin a row to the top or bottom of the table. */\n enableRowPinning?: boolean | ((row: TData) => boolean);\n /** Keep pinned rows visible when filtering or paginating them out. */\n keepPinnedRows?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n /** Opt-in TSV/CSV copy and application-owned paste handling. */\n clipboard?: DataTableClipboardConfig;\n /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */\n enableCellSelection?: boolean;\n /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */\n cellSelection?: DataTableCellSelection | null;\n /** Initial cell/range selection when uncontrolled. */\n defaultCellSelection?: DataTableCellSelection | null;\n onCellSelectionChange?: (selection: DataTableCellSelection | null) => void;\n /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */\n gridCommands?: DataTableGridCommands;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n enablePrint?: boolean;\n enableFullscreen?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n /** Explicit empty/error/retry rendering contract. */\n stateOverlay?: DataTableStateOverlay;\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n /** Controls when scrollbars are visible. Defaults to `\"hover\"`. */\n scrollbarVisibility?: DataTableScrollbarVisibility;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n /** Opts into enhanced layout and saved-view toolbar controls. */\n toolbarDataOperations?: boolean | DataTableToolbarDataOperations;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n stripedRows?: boolean;\n getRowClassName?: (\n row: TData,\n context: DataTableRowClassNameContext,\n ) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n /** Opt in to ARIA grid semantics and roving keyboard navigation. */\n accessibility?: DataTableAccessibilityOptions;\n /** Shorthand for `accessibility={{ mode: \"grid\" }}`. */\n interactiveGrid?: boolean | DataTableInteractiveGridOptions;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-B6JTUAWE.js.map b/dist/chunk-B6JTUAWE.js.map deleted file mode 100644 index 80e7203..0000000 --- a/dist/chunk-B6JTUAWE.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","containerWidth","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","scrollbarVisibility","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","getItemKey","index","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","jsxs","cn","virtualRow","startIndex","configuredLanes","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS"],"mappings":"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","file":"chunk-B6JTUAWE.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n containerWidth,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n scrollbarVisibility,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index * lanes]?.id ?? index,\n [lanes, renderedRows],\n );\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getItemKey,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(\n renderedRows.slice(\n 0,\n Math.max(\n 1,\n Math.floor(\n virtualizationConfig?.fallbackCardCount ?? 12,\n ),\n ),\n ),\n )\n )\n ) : (\n
\n {emptyNode ?? (\n \n )}\n
\n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n
\n \n {stateOverlayNode}\n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[\"2xl\"]) {\n return 5;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.xl) {\n return 4;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.lg) {\n return 3;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.sm) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-F2RBZWQV.js b/dist/chunk-F2RBZWQV.js deleted file mode 100644 index 3dfa529..0000000 --- a/dist/chunk-F2RBZWQV.js +++ /dev/null @@ -1,3 +0,0 @@ -import {a}from'./chunk-XTVBESM5.js';var _=Symbol("data-table-loading-row"),z=50;function F(e,t,n){if(e===true)return Object.fromEntries(n.flatMap(a=>a===t?[]:[[a,true]]));let r={...e};return r[t]?delete r[t]:r[t]=true,r}function U(e){return Array.from({length:e},(t,n)=>({[_]:true,index:n}))}function j(e){return !!(e&&typeof e=="object"&&_ in e)}function G(e){return `__loading__${e}`}function V(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function M(e){return Object.prototype.hasOwnProperty.call(e,"size")&&typeof e.size=="number"}function S(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(n=>S(n))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(n,r,a)=>{if(!x(a))return true;let o=n.getValue(r),i=t.getOptionValue?.(o,n.original)??g(o);if(t.type==="multi"||t.type==="faceted")return Array.isArray(a)?a.map(String).includes(i):true;if(t.type==="select"||t.type==="boolean")return i===String(a);if(t.type==="numberRange"){let u=C(a),c=Number(i),p=u.from===""?void 0:Number(u.from),d=u.to===""?void 0:Number(u.to);return Number.isNaN(c)?false:(p===void 0||Number.isNaN(p)||c>=p)&&(d===void 0||Number.isNaN(d)||c<=d)}if(t.type==="dateRange"){let u=C(a),c=k(i);return c?(!u.from||c>=String(u.from))&&(!u.to||c<=String(u.to)):false}let l=i.toLowerCase(),f=String(a).toLowerCase();switch(t.operator??"contains"){case "equals":return l===f;case "startsWith":return l.startsWith(f);case "endsWith":return l.endsWith(f);default:return l.includes(f)}}}}function W(e){let t=new Map,n=(r,a)=>{r.forEach((o,i)=>{if("columns"in o&&o.columns?.length){let l=o;n(o.columns,[...a,{id:D(o),freeReordering:l.freeReordering===true}]);return}t.set(D(o),a);});};return n(e,[]),t}function B(e,t,n){let r=n.get(e)??[],a=n.get(t)??[],o=0;for(;oi.freeReordering)}function A(e){let t=[],n=r=>{r.forEach((a,o)=>{if("columns"in a&&a.columns?.length){n(a.columns);return}t.push({column:a,index:o});});};return n(e),t}function $(e){return e.map(t=>typeof t=="string"?{label:h(t),value:t}:t)}function g(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function x(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(x):true:e!=null&&e!==""}function C(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="string"||typeof t.from=="number"?{from:t.from}:{},...typeof t.to=="string"||typeof t.to=="number"?{to:t.to}:{}}}function k(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e.toISOString().slice(0,10);let t=g(e);if(/^\d{4}-\d{2}-\d{2}/.test(t))return t.slice(0,10);let n=Date.parse(t);return Number.isNaN(n)?"":new Date(n).toISOString().slice(0,10)}function K(e){return g(e).trim().toLowerCase()}async function q({csvExport:e,table:t}){if(e===false)return;let n=e===true?{}:e,r=n.filename??"data-table.csv",a=n.scope??"filtered",o=n.columns?new Set(n.columns):void 0,i=t.getVisibleLeafColumns().filter(s=>!O(s.id)&&s.id!=="__spacer__"&&(!o||o.has(s.id))),l=E(t,a),f=[];(n.includeHeaders??true)&&f.push(i.map(s=>typeof s.columnDef.header=="string"?s.columnDef.header:h(s.id)));for(let s of l)f.push(i.map(m=>{let y=s.getValue(m.id);return n.getCellValue?n.getCellValue({row:s.original,rowId:s.id,columnId:m.id,value:y}):y}));let u=n.lineEnding??`\r -`,c=n.escapeFormulaValues??true,p=f.map(s=>s.map(m=>R(m,c)).join(",")).join(u);if(n.onExport){await n.onExport({csv:p,filename:r,rows:l.map(s=>s.original),scope:a});return}if(typeof window>"u")return;let d=new Blob([p],{type:"text/csv;charset=utf-8"}),T=window.URL.createObjectURL(d),b=window.document.createElement("a");b.href=T,b.download=r,b.click(),window.URL.revokeObjectURL(T);}function E(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginationRowModel().rows.filter(n=>n.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginationRowModel().rows}}function R(e,t){let n=g(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(n=`'${n}`),/[",\n\r]/.test(n)?`"${n.replace(/"/g,'""')}"`:n}function H(e){let t=[],n=[];for(let{column:r,index:a}of A(e)){let o=D(r);r.meta?.fixed==="left"&&t.push(o),r.meta?.fixed==="right"&&n.push(o);}return {left:t,right:n}}function D(e,t){if(e.id)return e.id;let n=N(e);if(n)return n.replace(/\./g,"_");if(typeof e.header=="string")return e.header;throw new Error("Data table columns using an accessor function or non-string header must define a unique id.")}var L=new Set(["__select__","__expand__","__actions__","__spacer__"]);function Q(e){let t=new Set,n=r=>{r.forEach((a,o)=>{let i=D(a);if(L.has(i))throw new Error(`Data table column id "${i}" is reserved for an internal column.`);if(t.has(i))throw new Error(`Duplicate data table column id "${i}".`);t.add(i),"columns"in a&&a.columns?.length&&n(a.columns);});};n(e);}function N(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function Z(e){let t=e.getIsPinned();return t||(e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed)}function J(e,t,n){let r=n?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!r&&"border-dotted",r?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function O(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}var P=["[data-row-click-ignore='true']","a[href]","button","input","select","summary","textarea","[contenteditable='true']","[role='button']","[role='link']"].join(",");function Y(e,t){if(!(e instanceof Element))return false;let n=e.closest(P);return !!(n&&n!==t&&t.contains(n))}function X(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function v(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function ee(e,t,n){let r=e.includes(t)?e.slice():[...e,t],a=r.indexOf(t),o=r.indexOf(n);if(a<0||o<0||a===o)return r;let[i]=r.splice(a,1);return r.splice(o,0,i),r}function h(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}export{v as A,ee as B,h as C,z as a,F as b,U as c,j as d,G as e,V as f,M as g,S as h,W as i,B as j,A as k,$ as l,g as m,x as n,K as o,q as p,E as q,H as r,D as s,Q as t,N as u,Z as v,J as w,O as x,Y as y,X as z};//# sourceMappingURL=chunk-F2RBZWQV.js.map -//# sourceMappingURL=chunk-F2RBZWQV.js.map \ No newline at end of file diff --git a/dist/chunk-F2RBZWQV.js.map b/dist/chunk-F2RBZWQV.js.map deleted file mode 100644 index 2f1cea8..0000000 --- a/dist/chunk-F2RBZWQV.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-utils.ts"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","toggleDataTableExpandedState","current","rowId","loadedRowIds","loadedRowId","next","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","hasExplicitDataTableColumnSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","range","normalizeRangeFilterValue","numericValue","from","to","dateValue","normalizeDateFilterValue","normalizedValue","normalizedQuery","getDataTableColumnGroupPaths","columns","paths","visit","currentColumns","parentPath","group","getColumnId","canReorderDataTableColumn","sourceColumnId","targetColumnId","groupPaths","sourcePath","targetPath","commonLength","getDataTableLeafColumns","leaves","normalizeColumnFilterOptions","options","option","startCase","normalized","timestamp","normalizeDataTableSearchText","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getDataTableExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","_index","accessorKey","getAccessorKey","RESERVED_DATA_TABLE_COLUMN_IDS","validateDataTableColumnIds","ids","id","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","DATA_TABLE_INTERACTIVE_TARGET_SELECTOR","isDataTableInteractiveTarget","target","boundary","interactiveTarget","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","order","sourceIndex","targetIndex","source","character"],"mappings":"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","file":"chunk-F2RBZWQV.js","sourcesContent":["import type {\n Column,\n ColumnDef,\n ColumnPinningState,\n ExpandedState,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\nexport function toggleDataTableExpandedState(\n current: ExpandedState,\n rowId: string,\n loadedRowIds: Array,\n): ExpandedState {\n if (current === true) {\n return Object.fromEntries(\n loadedRowIds.flatMap((loadedRowId) =>\n loadedRowId === rowId ? [] : [[loadedRowId, true]],\n ),\n );\n }\n\n const next = { ...current };\n if (next[rowId]) {\n delete next[rowId];\n } else {\n next[rowId] = true;\n }\n return next;\n}\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function hasExplicitDataTableColumnSize(\n column: DataTableColumnDef,\n) {\n return (\n Object.prototype.hasOwnProperty.call(column, \"size\") &&\n typeof column.size === \"number\"\n );\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\" || filter.type === \"faceted\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"boolean\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"numberRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const numericValue = Number(optionValue);\n const from = range.from === \"\" ? undefined : Number(range.from);\n const to = range.to === \"\" ? undefined : Number(range.to);\n\n if (Number.isNaN(numericValue)) {\n return false;\n }\n\n return (\n (from === undefined || Number.isNaN(from) || numericValue >= from) &&\n (to === undefined || Number.isNaN(to) || numericValue <= to)\n );\n }\n\n if (filter.type === \"dateRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const dateValue = normalizeDateFilterValue(optionValue);\n\n if (!dateValue) {\n return false;\n }\n\n return (\n (!range.from || dateValue >= String(range.from)) &&\n (!range.to || dateValue <= String(range.to))\n );\n }\n\n const normalizedValue = optionValue.toLowerCase();\n const normalizedQuery = String(filterValue).toLowerCase();\n\n switch (filter.operator ?? \"contains\") {\n case \"equals\":\n return normalizedValue === normalizedQuery;\n case \"startsWith\":\n return normalizedValue.startsWith(normalizedQuery);\n case \"endsWith\":\n return normalizedValue.endsWith(normalizedQuery);\n default:\n return normalizedValue.includes(normalizedQuery);\n }\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport type DataTableColumnGroupPathSegment = {\n id: string;\n freeReordering: boolean;\n};\n\nexport type DataTableColumnGroupPaths = ReadonlyMap<\n string,\n ReadonlyArray\n>;\n\n/**\n * Returns the nested shared-header path for every leaf. The path deliberately\n * uses stable column ids rather than header text so it also works with custom\n * header render functions.\n */\nexport function getDataTableColumnGroupPaths(\n columns: Array>,\n): DataTableColumnGroupPaths {\n const paths = new Map<\n string,\n ReadonlyArray\n >();\n\n const visit = (\n currentColumns: Array>,\n parentPath: ReadonlyArray,\n ) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n const group = column as DataTableColumnDef & {\n freeReordering?: boolean;\n };\n visit(column.columns, [\n ...parentPath,\n {\n id: getColumnId(column, index),\n freeReordering: group.freeReordering === true,\n },\n ]);\n return;\n }\n\n paths.set(getColumnId(column, index), parentPath);\n });\n };\n\n visit(columns, []);\n return paths;\n}\n\n/**\n * Locked groups preserve their shared heading by default. Reordering within a\n * common group path is always allowed; leaving or entering a group requires\n * each crossed group to explicitly opt into `freeReordering`.\n */\nexport function canReorderDataTableColumn(\n sourceColumnId: string,\n targetColumnId: string,\n groupPaths: DataTableColumnGroupPaths,\n) {\n const sourcePath = groupPaths.get(sourceColumnId) ?? [];\n const targetPath = groupPaths.get(targetColumnId) ?? [];\n let commonLength = 0;\n\n while (\n commonLength < sourcePath.length &&\n commonLength < targetPath.length &&\n sourcePath[commonLength]?.id === targetPath[commonLength]?.id\n ) {\n commonLength += 1;\n }\n\n return [\n ...sourcePath.slice(commonLength),\n ...targetPath.slice(commonLength),\n ].every((group) => group.freeReordering);\n}\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeRangeFilterValue(value: unknown): {\n from?: string | number;\n to?: string | number;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"string\" || typeof range.from === \"number\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"string\" || typeof range.to === \"number\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction normalizeDateFilterValue(value: unknown) {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value.toISOString().slice(0, 10);\n }\n\n const normalized = normalizeFilterValue(value);\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(normalized)) {\n return normalized.slice(0, 10);\n }\n\n const timestamp = Date.parse(normalized);\n return Number.isNaN(timestamp)\n ? \"\"\n : new Date(timestamp).toISOString().slice(0, 10);\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport function normalizeDataTableSearchText(value: unknown) {\n return normalizeFilterValue(value).trim().toLowerCase();\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getDataTableExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nexport function getDataTableExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginationRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginationRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): ColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n _index?: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey.replace(/\\./g, \"_\");\n }\n\n if (typeof column.header === \"string\") {\n return column.header;\n }\n\n throw new Error(\n \"Data table columns using an accessor function or non-string header must define a unique id.\",\n );\n}\n\nconst RESERVED_DATA_TABLE_COLUMN_IDS = new Set([\n \"__select__\",\n \"__expand__\",\n \"__actions__\",\n \"__spacer__\",\n]);\n\nexport function validateDataTableColumnIds(\n columns: Array>,\n) {\n const ids = new Set();\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n const id = getColumnId(column, index);\n if (RESERVED_DATA_TABLE_COLUMN_IDS.has(id)) {\n throw new Error(\n `Data table column id \"${id}\" is reserved for an internal column.`,\n );\n }\n if (ids.has(id)) {\n throw new Error(`Duplicate data table column id \"${id}\".`);\n }\n ids.add(id);\n\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n }\n });\n };\n\n visit(columns);\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide) {\n return pinnedSide;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nconst DATA_TABLE_INTERACTIVE_TARGET_SELECTOR = [\n \"[data-row-click-ignore='true']\",\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"summary\",\n \"textarea\",\n \"[contenteditable='true']\",\n \"[role='button']\",\n \"[role='link']\",\n].join(\",\");\n\nexport function isDataTableInteractiveTarget(\n target: EventTarget | null,\n boundary: Element,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveTarget = target.closest(\n DATA_TABLE_INTERACTIVE_TARGET_SELECTOR,\n );\n return Boolean(\n interactiveTarget &&\n interactiveTarget !== boundary &&\n boundary.contains(interactiveTarget),\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-I3CW6DTA.js b/dist/chunk-I3CW6DTA.js deleted file mode 100644 index b0a76fd..0000000 --- a/dist/chunk-I3CW6DTA.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$4}from'./chunk-EJHT5JBZ.js';import {a as a$3,e as e$1}from'./chunk-PRDXFLFB.js';import {d,a as a$1,b,h,k,s,x,j,B,r,c as c$1,e,g,f,v,w,t,i as i$1,p,o,y,u as u$1,C,l,n}from'./chunk-F2RBZWQV.js';import {c,p as p$1,u,k as k$1,m,s as s$1,a as a$5,r as r$1,q,l as l$1,j as j$1}from'./chunk-CVR2ZXHQ.js';import {a,i,b as b$1,d as d$1,e as e$2,c as c$2}from'./chunk-O6MUTKGE.js';import {a as a$2}from'./chunk-XTVBESM5.js';import*as T from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useReactTable,getPaginationRowModel,getExpandedRowModel,getSortedRowModel,getGroupedRowModel,getFacetedMinMaxValues,getFacetedUniqueValues,getFacetedRowModel,getFilteredRowModel,getCoreRowModel}from'@tanstack/react-table';import {flushSync}from'react-dom';function On({cardClassName:e,cardGridClassName:a,cardSizing:n,cardRenderer:i,currentRowSelection:r,currentDetailExpanded:l,DataTableCardView:d,DataTableEmptyState:p,dragAndDrop:u,editableRows:h,editingRowId:E,emptyNode:S,enableRowSelection:I,flexGrow:A,getRowClassName:G,hasCardTitle:J,infiniteScroll:V,localSearchValue:g,onRowClick:f,renderedRows:s,detailPanel:D,resolvedLabels:m,resolvedLoadingRowCount:v,rowActions:L=[],ScrollArea:C,scrollbarVisibility:$,sentinelRef:K,setCurrentDetailExpanded:_,setCurrentRowSelection:U,setEditingRowId:R,shouldRenderInitialLoading:b,stateOverlayNode:x,tableContainerClassName:k,uiClassNames:F}){let Q=b||s.length>0,P=T.useRef(null),q=(B,M)=>jsx(d,{rows:B,cardRenderer:i,cardGridClassName:a,cardClassName:e,cardSizing:n,rowActions:L,editableRows:h,detailPanel:D,detailExpanded:l,onDetailExpandedChange:_,hasCardTitle:J,rowSelection:r,onRowSelectionChange:U,enableRowSelection:I,editingRowId:E,onEditingRowIdChange:R,getRowClassName:G,onRowClick:f,getRowDraggable:u?.getRowDraggable,onRowDragStart:u?.onRowDragStart,onRowDragEnd:u?.onRowDragEnd,isLoading:M?.isLoading,loadingRowCount:M?.loadingRowCount,labels:m});return jsxs("div",{ref:P,"data-dtp-slot":"data-table-card-shell",className:a$2("relative box-border border-2 border-transparent transition-colors",A?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(F.dragActive??"rounded-md border-dashed")),children:[jsx(C,{type:$,className:a$2(A?"min-h-0 flex-1":"h-full",F.cardScrollArea,k),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$2("flex min-h-full min-w-0 flex-col",A&&"min-h-0 flex-1",F.cardViewport),children:[Q?b?q([],{isLoading:true,loadingRowCount:v}):q(s):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:S??jsx(p,{title:g?m.noMatchingRowsTitle:m.noRowsTitle,description:g?m.noMatchingRowsDescription:m.noRowsDescription})}),V?.enabled&&!b?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:K,className:"h-4 w-full"})}):null]})}),x]})}var ds=T.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-3PHPB23A.js')).DataTableVirtualCardPanel}));function Ci(e){let a=typeof e.virtualization=="object"?e.virtualization.card:void 0;return a?.enabled!==true?jsx(On,{...e}):jsx(T.Suspense,{fallback:jsx(On,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(a.fallbackCardCount??12)))}),children:jsx(ds,{...e})})}function Di({children:e,currentPagination:a,DataTableFooter:n,effectivePageCount:i,footerTotalRowCount:r,handleFooterPageIndexChange:l,handleFooterPageSizeChange:d,labels:p,pageCountKnown:u=true,rowsPerPageOptions:h,showFooter:E}){return !E&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[E?jsx(n,{pageIndex:a.pageIndex,pageCount:i,pageCountKnown:u,pageSize:a.pageSize,totalRowCount:r,rowsPerPageOptions:h,onPageIndexChange:l,onPageSizeChange:d,labels:p}):null,e]})}function yi({allRows:e,columnFilters:a,columnVisibilityOptions:n,compactToolbar:i,customToolbar:r,DataTableToolbar:l,description:d,descriptionId:p,effectiveToolbarActions:u,enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:I,enableToolbarResetLayout:A,enableToolbarSavedViews:G,enableDensityToggle:J,enableViewToggle:V,hiddenRowsLabel:g,labels:f,onClearColumnFilters:s,onColumnFilterChange:D,onColumnPinningChange:m,onDensityChange:v,onShowHiddenRowsChange:L,onToolbarQueryValueChange:C,reorderColumn:$,onResetColumnLayout:K,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:b,onViewModeChange:x,openFileDialog:k,selectedRowIds:F,selectedRows:Q,selectionActions:P,savedViews:q,showHiddenRows:B,table:M,title:W,titleId:ne,toolbarQueryPlaceholder:be,toolbarQueryValue:fe,toolbarVisibility:De,density:Se,viewMode:Te}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(l,{title:W,titleId:ne,description:d,descriptionId:p,toolbarQueryValue:fe,toolbarQueryPlaceholder:be,onToolbarQueryValueChange:C,reorderColumn:$,customToolbar:r,compactToolbar:i,viewMode:Te,onViewModeChange:x,enableViewToggle:V,toolbarActions:u,selectionActions:P,selectedRowIds:F,selectedRows:Q,showHiddenRows:B,hiddenRowsLabel:g,onShowHiddenRowsChange:L,allRows:e,columnVisibilityOptions:n,onColumnVisibilityChange:(Ee,Oe)=>{M.getColumn(Ee)?.toggleVisibility(Oe);},enableColumnPinning:h,enableGrouping:E,enableToolbarColumnChooser:S,enableToolbarFilterChips:I,enableToolbarResetLayout:A,enableToolbarSavedViews:G,onColumnPinningChange:m,columnFilters:a,onColumnFilterChange:D,onClearColumnFilters:s,onResetColumnLayout:K,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:b,density:Se,onDensityChange:v,enableDensityToggle:J,labels:f,toolbarVisibility:De,openFileDialog:k,savedViews:q,table:M})})}var oe={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",filterFrom:"From",filterTo:"To",filterTrue:"Yes",filterFalse:"No",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,a)=>`Page ${e+1} of ${a}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectAllFilteredRows:"Select all filtered rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",expandRowDetails:"Expand row details",collapseRowDetails:"Collapse row details",exportCsv:"Export CSV",print:"Print table",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",errorTitle:"Unable to load this table",errorDescription:"Try again or check your connection.",retry:"Retry",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",pinRowToTop:"Pin row to top",pinRowToBottom:"Pin row to bottom",unpinRow:"Unpin row",resizeColumn:e=>`Resize ${e}`,grouping:"Grouping",groupBy:e=>`Group by ${e}`,ungroup:e=>`Ungroup ${e}`,removeGrouping:e=>`Remove ${e} grouping`,moveGroupingEarlier:e=>`Move ${e} grouping earlier`,moveGroupingLater:e=>`Move ${e} grouping later`,facetSearch:e=>`Search ${e} options`,searchColumns:"Search columns",showAllColumns:"Show all columns",hideAllColumns:"Hide all columns",moveColumnEarlier:e=>`Move ${e} earlier`,moveColumnLater:e=>`Move ${e} later`,resetColumnLayout:"Reset column layout",savedViews:"Saved views",createSavedView:"Create saved view",savedViewName:"View name",applySavedView:e=>`Apply saved view ${e}`,renameSavedView:e=>`Rename saved view ${e}`,deleteSavedView:e=>`Delete saved view ${e}`,saveSavedView:"Save view"};function Ri(e){return {...oe,...e}}function Si({Button:e,Checkbox:a,DataTableRowActions:n,Tooltip:i,TooltipContent:r,TooltipTrigger:l,cancelEditing:d$1,columns:p,editableRows:u,editingRowId:h$1,editErrors:E,enableRowSelection:S,enableRowPinning:I,hasTreeExpansion:A,isSavingEdit:G,isEditDirty:J,includeFillSpacer:V=false,labels:g,lastSelectedRowIdRef:f,detailPanel:s,detailExpanded:D,onDetailExpandedChange:m,rowSelectionSelectAllScope:v,rowActions:L,saveEdit:C,startEditingRow:$,tableRef:K}){let _=T.useCallback((U,R)=>{let b=K.current;if(!b||!f.current)return;let x=b.getRowModel().rows.filter(q=>!d(q.original)),k=x.findIndex(q=>q.id===f.current),F=x.findIndex(q=>q.id===U);if(k<0||F<0)return;let Q=Math.min(k,F),P=Math.max(k,F);b.setRowSelection(q=>{let B={...q};for(let M of x.slice(Q,P+1).filter(W=>W.getCanSelect()&&W.getCanMultiSelect()))R?B[M.id]=true:delete B[M.id];return B});},[f,K]);return T.useMemo(()=>{let U=[];if(A||s){let R=A&&s?80:a$1;U.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:R,minSize:R,maxSize:R,header:()=>jsx("span",{className:"sr-only",children:g.expandRow}),cell:({row:b$1,table:x})=>{let k=A&&b$1.getCanExpand(),F=!!(s&&(s.getRowCanExpand?.(b$1.original)??true));if(!k&&!F)return null;let Q=b$1.getIsExpanded(),P=D===true||!!D[b$1.id];return jsxs("div",{className:"flex items-center justify-center gap-1",children:[k?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":Q?g.collapseRow:g.expandRow,"aria-expanded":Q,"data-tree-toggle":"true",onClick:()=>b$1.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",Q?"rotate-0":"-rotate-90")})}):null,F?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":P?A?g.collapseRowDetails??oe.collapseRowDetails:g.collapseRow:A?g.expandRowDetails??oe.expandRowDetails:g.expandRow,"aria-expanded":P,"data-detail-toggle":"true",onClick:()=>{m(q=>b(q,b$1.id,x.getCoreRowModel().flatRows.map(B=>B.id)));},children:jsx(c,{className:a$2("transition-transform",P?"rotate-0":"-rotate-90")})}):null]})}});}return S&&U.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:({table:R})=>{let b=v==="filtered",x=(b?R.getFilteredRowModel().flatRows:R.getRowModel().flatRows).filter(P=>P.getCanSelect()&&P.getCanMultiSelect()),k=x.length>0&&x.every(P=>P.getIsSelected()),F=x.some(P=>P.getIsSelected()),Q=b?g.selectAllFilteredRows??oe.selectAllFilteredRows:g.selectAllVisibleRows??oe.selectAllVisibleRows;return x.length===0?jsx("span",{className:"sr-only",children:Q}):jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:k?true:F?"indeterminate":false,onCheckedChange:P=>{R.setRowSelection(q=>{let B={...q};for(let M of x)P===true?B[M.id]=true:delete B[M.id];return B});},"aria-label":Q})})},cell:({row:R})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:R.getIsSelected(),disabled:!R.getCanSelect(),onClick:b=>{if(!b.shiftKey||!f.current||!R.getCanMultiSelect()){f.current=R.id;return}b.preventDefault(),b.stopPropagation(),_(R.id,!R.getIsSelected()),f.current=R.id;},onCheckedChange:b=>{f.current=R.id,R.toggleSelected(b===true);},"aria-label":g.selectRow??oe.selectRow})})}),U.push(...p.map(R=>h(R))),V&&U.push({id:"__spacer__",cell:()=>null,header:()=>null,enableColumnFilter:false,enableGlobalFilter:false,enableGrouping:false,enableHiding:false,enablePinning:false,enableResizing:false,enableSorting:false,minSize:0,size:0}),(L.length||u||I)&&U.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:()=>jsx("span",{className:"sr-only",children:g.actions}),cell:({row:R})=>{let b=R.id;return h$1===b?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[E._row?jsx("span",{className:"sr-only",role:"alert",children:E._row}):null,jsx(e,{type:"button",size:"sm",disabled:G||!J,onClick:()=>{C(R.original);},children:g.saveEdit}),jsxs(i,{children:[jsx(l,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:d$1,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:g.cancelEdit})]})}),jsx(r,{children:g.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(n,{row:R.original,rowActions:L,editableRows:u,isEditing:false,onStartEditing:()=>{$(R.original,R.id);},onCancelEditing:()=>{},labels:g,rowPinning:I?{canPin:R.getCanPin(),position:R.getIsPinned(),pin:k=>R.pin(k)}:void 0})})}}),U},[e,a,n,i,r,l,d$1,p,u,D,s,E,h$1,S,I,A,V,G,J,g,f,m,v,L,C,_,$])}function Re({defaultValue:e,onChange:a,value:n}){let[i,r]=T.useState(e),l=n??i,d=T.useRef(l);T.useEffect(()=>{d.current=l;},[l]);let p=T.useCallback(u=>{let h=typeof u=="function"?u(d.current):u;d.current=h,a?.(h),n===void 0&&r(h);},[a,n]);return [l,p]}function vi({enabled:e,hasMore:a,isLoadingMore:n,onLoadMore:i,onError:r}){let l=T.useRef(null),d=T.useRef(false),p=T.useEffectEvent(i),u=T.useEffectEvent(h=>{r?.(h);});return T.useEffect(()=>{if(!e||!a||n)return;let h=l.current;if(!h)return;let E=new IntersectionObserver(S=>{if(S[0].isIntersecting&&!d.current){d.current=true;let A;try{A=p();}catch(G){d.current=false,u(G);return}Promise.resolve(A).catch(G=>{u(G);}).finally(()=>{d.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return E.observe(h),()=>{E.disconnect();}},[e,a,n]),l}function xi({enabled:e,maxPageIndex:a,onPageIndexChange:n,pageIndex:i,setLocalPageIndex:r}){T.useEffect(()=>{if(!e||i>=0&&i<=a)return;let l=Math.min(Math.max(i,0),a);r(l),n?.(l);},[e,a,n,i,r]);}function ki(){return T.useMemo(()=>{let e=new WeakMap;return (a,n,i)=>{let r=o(i);if(!r)return true;let l=a.original;if(typeof l!="object"||l===null)return o(a.getValue(n)).includes(r);let d=e.get(l);d||(d=new Map,e.set(l,d));let p=d.get(n);if(p===void 0){let u=a.getValue(n);p=o(u),d.set(n,p);}return p.includes(r)}},[])}function Mi({autoResetPageIndex:e,columnGroupPaths:a,columnResizeMode:n,dir:i,currentColumnFilters:r,currentColumnOrder:l,currentColumnPinning:d$1,currentRowPinning:p,currentColumnSizing:u,currentExpanded:h,currentGrouping:E,currentPagination:S,currentRowSelection:I,currentSorting:A,currentViewMode:G,defaultColumn:J,effectiveColumnVisibility:V,enableColumnResizing:g,enableMultiRowSelection:f,enableRowPinning:s$1,enableRowSelection:D,enableSubRowSelection:m,getRowCanSelect:v,getRowCanExpand:L,getSubRows:C,aggregationFns:$,groupedColumnMode:K,globalFilterFn:_,globalFilterValue:U,hasNextPage:R,handleColumnFiltersChange:b,handleColumnOrderChange:x$1,handleColumnPinningChange:k$1,handleRowPinningChange:F,handleColumnVisibilityChange:Q,handleExpandedChange:P,handleGroupingChange:q,infiniteScroll:B$1,keepPinnedRows:M,manualFiltering:W,manualGrouping:ne,manualExpanding:be,manualPagination:fe,manualSorting:De,onActionError:Se,onPageIndexChange:Te,onPageSizeChange:Ee,pageCount:Oe,pageIndex:X,pageSize:he,paginateExpandedRows:z,filterFromLeafRows:we,maxLeafRowFilterDepth:$e,setCurrentRowSelection:na,setCurrentSorting:Ye,setLocalColumnSizing:oa,setLocalPagination:de,shouldRenderInitialLoading:ia,tableColumns:Ae,tableData:pa,tableGetRowId:_e,tableRef:Ra,totalRowCount:ga,virtualization:Je}){let ma=ki(),ye=T.useMemo(()=>k(Ae).map(({column:t,index:w})=>s(t,w)),[Ae]),ra=T.useMemo(()=>{let t=ye,w=t.filter(N=>!x(N)&&N!=="__spacer__"),j=new Set(w),ue=l.filter(N=>j.has(N)),ae=w.filter(N=>!ue.includes(N));return [...t.filter(N=>N==="__expand__"||N==="__select__"),...ue,...ae,...t.filter(N=>N==="__spacer__"),...t.filter(N=>N==="__actions__")]},[l,ye]),He=T.useMemo(()=>{let t=new Set(ye),w=new Set(ye.filter(ae=>!x(ae)&&ae!=="__spacer__")),j=(d$1.left??[]).filter(ae=>w.has(ae)),ue=(d$1.right??[]).filter(ae=>w.has(ae));return {left:[...["__expand__","__select__"].filter(ae=>t.has(ae)),...j],right:[...ue,...["__actions__"].filter(ae=>t.has(ae))]}},[d$1,ye]),la=T.useMemo(()=>{let t=new Set,w=N=>{N.forEach((ea,Oa)=>{if(t.add(_e(ea,Oa)),!d(ea)){let _a=C?.(ea,Oa);_a?.length&&w(_a);}});};w(pa);let j=(p.top??[]).filter(N=>t.has(N)),ue=new Set(j),ae=(p.bottom??[]).filter(N=>t.has(N)&&!ue.has(N));return {top:j,bottom:ae}},[p.bottom,p.top,C,pa,_e]),ve=T.useMemo(()=>({sorting:A,pagination:S,rowSelection:I,columnVisibility:V,columnFilters:r,globalFilter:U,expanded:h,grouping:E,columnOrder:ra,columnPinning:He,rowPinning:la,columnSizing:u}),[r,u,h,E,S,I,A,V,ra,He,la,U]),Be=T.useCallback(t=>{let w=typeof t=="function"?t(S):t;(X===void 0||he===void 0)&&de(j=>({pageIndex:X===void 0?w.pageIndex:j.pageIndex,pageSize:he===void 0?w.pageSize:j.pageSize})),w.pageIndex!==S.pageIndex&&Te?.(w.pageIndex),w.pageSize!==S.pageSize&&Ee?.(w.pageSize);},[S,Te,Ee,X,he,de]),Sa=T.useCallback(t=>{oa(t);},[oa]),Xe=T.useMemo(()=>{let t=false,w=false;for(let{column:j}of k(Ae))t||=j.meta?.filter?.type==="faceted",w||=j.meta?.filter?.type==="numberRange";return {minMaxValues:w,uniqueValues:t}},[Ae]),ce=useReactTable({data:pa,columns:Ae,getCoreRowModel:getCoreRowModel(),getFilteredRowModel:W?void 0:getFilteredRowModel(),getFacetedRowModel:(Xe.uniqueValues||Xe.minMaxValues)&&!W?getFacetedRowModel():void 0,getFacetedUniqueValues:Xe.uniqueValues&&!W?getFacetedUniqueValues():void 0,getFacetedMinMaxValues:Xe.minMaxValues&&!W?getFacetedMinMaxValues():void 0,getGroupedRowModel:E.length&&!ne?getGroupedRowModel():void 0,getSortedRowModel:De?void 0:getSortedRowModel(),getExpandedRowModel:(C||E.length)&&!be?getExpandedRowModel():void 0,getPaginationRowModel:fe||B$1?.enabled?void 0:getPaginationRowModel(),enableRowSelection:v?t=>D&&v(t.original):D,enableRowPinning:typeof s$1=="function"?t=>s$1(t.original):s$1,keepPinnedRows:M,enableMultiRowSelection:typeof f=="function"?t=>f(t.original):f,enableSubRowSelection:typeof m=="function"?t=>m(t.original):m,enableColumnResizing:g,columnResizeMode:n,columnResizeDirection:i,getRowId:_e,getSubRows:C,getRowCanExpand:C?t=>L?.(t.original)??t.subRows.length>0:void 0,globalFilterFn:_??ma,getColumnCanGlobalFilter:t=>t.columnDef.enableGlobalFilter!==false&&typeof t.accessorFn=="function",manualSorting:De,manualGrouping:ne,manualFiltering:W,manualExpanding:be,manualPagination:fe||!!B$1?.enabled,paginateExpandedRows:z,filterFromLeafRows:we,maxLeafRowFilterDepth:$e,defaultColumn:J,autoResetPageIndex:e,state:ve,onSortingChange:Ye,onPaginationChange:Be,onRowSelectionChange:na,onColumnVisibilityChange:Q,onColumnFiltersChange:b,onExpandedChange:P,onGroupingChange:q,onColumnOrderChange:x$1,onColumnPinningChange:k$1,onRowPinningChange:F,onColumnSizingChange:Sa,aggregationFns:$,groupedColumnMode:K});Ra.current=ce;let va=ce.getVisibleLeafColumns(),ba=T.useCallback((t,w)=>{if(t===w||!j(t,w,a))return;let j$1=ce.getAllLeafColumns().map(ae=>ae.id).filter(ae=>!x(ae)&&ae!=="__spacer__"),ue=B(l.length?l:j$1,t,w);x$1(ue);},[a,l,x$1,ce]),fa=ce.getTopRows(),Fe=ce.getBottomRows(),Ue=G==="table"?ce.getCenterRows():ce.getRowModel().rows,Ta=typeof Je=="object"?Je:void 0,Ge=Je===true||Ta?.enabled===true,La=Math.max(1,Math.floor(Ta?.fallbackRowCount??20)),ke=(Ge?Ue.slice(0,La):Ue).map((t,w)=>({row:t,rowIndex:w})),je=fe||!!B$1?.enabled,sa=je?void 0:ce.getFilteredRowModel().rows.length,da=ga??sa,Ze=!je||Oe!==void 0||ga!==void 0,xa=da,Ke=ia?1:Oe??(da!==void 0?Math.max(1,Math.ceil(da/S.pageSize)):je?S.pageIndex+(R?2:1):ce.getPageCount()),wa=Math.max(0,Ke-1),Na=T.useCallback(t=>{X===void 0&&de(w=>w.pageIndex===t?w:{...w,pageIndex:t});},[X,de]);xi({enabled:!ia&&!B$1?.enabled&&Ze,maxPageIndex:wa,onPageIndexChange:Te,pageIndex:S.pageIndex,setLocalPageIndex:Na});let We=T.useCallback(t=>{t!==S.pageIndex&&(Te?.(t),X===void 0&&de(w=>w.pageIndex===t?w:{...w,pageIndex:t}));},[S.pageIndex,Te,X,de]),Ea=T.useCallback(t=>{S.pageIndex!==0&&Te?.(0),t!==S.pageSize&&Ee?.(t),he===void 0&&de({pageIndex:0,pageSize:t});},[S.pageIndex,S.pageSize,Te,Ee,he,de]),ka=vi({enabled:!!B$1?.enabled,hasMore:!!B$1?.hasMore,isLoadingMore:B$1?.isLoadingMore,onLoadMore:()=>B$1?.onLoadMore(),onError:t=>{Se?.({error:t,source:"infiniteScroll"});}});return {effectivePageCount:Ke,footerTotalRowCount:xa,handleFooterPageIndexChange:We,handleFooterPageSizeChange:Ea,isPageCountKnown:Ze,renderedRows:Ue,topPinnedRows:fa,bottomPinnedRows:Fe,reorderColumn:ba,rowsToRender:ke,sentinelRef:ka,table:ce,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:va}}var ys="data-table-pro:column-prefs:",Ai=1,Vi=["visibility","sizing","order","pinning","rowPinning","density"];function Fi(e){let a=_n(e);if(!a)return {};let n=Hn(a);if(!n)return {};let i=Bn(a.key),r;try{r=n.getItem(i);}catch(u){return a.onError?.({error:u,operation:"read"}),{}}if(!r)return {};let l;try{l=(a.deserialize??JSON.parse)(r);}catch(u){return a.onError?.({error:u,operation:"deserialize"}),{}}let d=a.version??Ai,p;if(Rs(l))if(l.version===d)p=l.state;else if(a.migrate)try{p=a.migrate({version:l.version,state:l.state},d);}catch(u){return a.onError?.({error:u,operation:"migrate"}),{}}else return {};else p=l;return Li(Ss(p),a.slices)}function Ii(e){let a=_n(e);if(!a)return false;let n=Hn(a);if(!n)return false;try{return n.removeItem(Bn(a.key)),!0}catch(i){return a.onError?.({error:i,operation:"remove"}),false}}function zi({key:e,persistence:a,prefs:n}){let i=a??_n(e),r=i?Hn(i):void 0,l=i?Bn(i.key):void 0,d=i?.version??Ai,p=Math.max(0,i?.debounceMs??100),u=Li(n,i?.slices),h=T.useMemo(()=>{if(!i)return {value:void 0};try{let S={version:d,state:u};return {value:(i.serialize??JSON.stringify)(S)}}catch(S){return {error:S,value:void 0}}},[i,u,d]),E=T.useEffectEvent((S,I)=>{i?.onError?.({error:S,operation:I});});T.useEffect(()=>{h.error!==void 0&&E(h.error,"serialize");},[h.error]),T.useEffect(()=>{if(!r||!l||h.value===void 0)return;let S=()=>{try{if(r.getItem(l)===h.value)return;r.setItem(l,h.value);}catch(A){E(A,"write");}};if(p===0){S();return}let I=globalThis.setTimeout(S,p);return ()=>{globalThis.clearTimeout(I);}},[p,h.value,r,l]);}function _n(e){if(e)return typeof e=="string"?{key:e}:e}function Hn(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}function Bn(e){return `${ys}${e}`}function Rs(e){return nt(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Li(e,a){let n=new Set(a??Vi),i={};for(let r of Vi)n.has(r)&&e[r]!==void 0&&Object.assign(i,{[r]:e[r]});return i}function Ss(e){if(!nt(e))return {};let a={},n=vs(e.visibility);n&&(a.visibility=n);let i=Ps(e.sizing);i&&(a.sizing=i);let r=mt(e.order);if(r&&(a.order=r),nt(e.pinning)){let d=mt(e.pinning.left)??[],p=mt(e.pinning.right)??[];a.pinning={left:d,right:p};}let l=xs(e.rowPinning);return l&&(a.rowPinning=l),Es(e.density)&&(a.density=e.density),a}function vs(e){if(nt(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Ps(e){if(nt(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function mt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function xs(e){if(nt(e))return {top:mt(e.top)??[],bottom:mt(e.bottom)??[]}}function Es(e){return e==="compact"||e==="comfortable"||e==="spacious"}function nt(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var ks=Object.values(a).slice().sort((e,a)=>e-a);function Ni(e){let a=T.useRef(0),[n,i]=T.useState(0);return T.useEffect(()=>{let r=e.current;if(!r)return;let l=(p=r.clientWidth)=>{let u=Ms(p);u!==a.current&&(a.current=u,i(u));};if(l(),typeof ResizeObserver>"u")return;let d=new ResizeObserver(p=>{let u=p[0];l(u?Vs(u):void 0);});return d.observe(r),()=>{d.disconnect();}},[e]),n}function Ms(e){if(e<=0)return 0;let a=1;for(let n of ks){if(ed$1??(l?{key:l}:void 0),[l,d$1]),we=T.useMemo(()=>Fi(z),[z]),[$e,na]=T.useState({pageIndex:f?.pagination?.pageIndex??0,pageSize:f?.pagination?.pageSize??be[0]??20}),[Ye,oa]=Re({value:Se,onChange:Q,defaultValue:()=>f?.sorting??[]}),[de,ia]=Re({value:ne,onChange:k$1,defaultValue:()=>f?.rowSelection??{}}),[Ae,pa]=Re({value:p,onChange:_,defaultValue:()=>f?.columnVisibility??we.visibility??{}}),[_e,Ra]=Re({value:e$1,onChange:v,defaultValue:()=>f?.columnFilters??[]}),[ga,Je]=Re({value:A,onChange:R,defaultValue:()=>f?.expanded??{}}),[ma,ye]=Re({value:a,onChange:L,defaultValue:()=>f?.columnOrder??we.order??[]}),[ra,He]=Re({value:n,onChange:C,defaultValue:()=>f?.columnPinning??we.pinning??r(u)}),[la,ve]=Re({value:i$1,onChange:$,defaultValue:()=>f?.rowPinning??we.rowPinning??{top:[],bottom:[]}}),[Be,Sa]=Re({value:r$1,onChange:K,defaultValue:()=>f?.columnSizing??we.sizing??{}}),[Xe,ce]=Re({value:X,onChange:q,defaultValue:()=>f?.viewMode??"table"}),[va,ba]=Re({value:G,onChange:b,defaultValue:()=>f?.grouping??[]}),[fa,Fe]=Re({value:De,onChange:F,defaultValue:()=>f?.showHiddenRows??false}),[Ue,Ta]=Re({value:E,onChange:U,defaultValue:()=>f?.density??we.density??"comfortable"}),Ge=Oe??f?.globalFilter??"",La=Ee??W.searchPlaceholder,Pa=Te??250,[ke,je]=T.useState(Ge),sa=Ni(he),da=!!P,Ze=T.useRef(Ge),xa=T.useEffectEvent(H=>{Ze.current=H,P?.(H);});T.useEffect(()=>{Ze.current=Ge,je(Ge);},[Ge]),T.useEffect(()=>{if(!da||ke===Ge||ke===Ze.current)return;let H=window.setTimeout(()=>{xa(ke);},Pa);return ()=>{window.clearTimeout(H);}},[da,ke,Pa,Ge]);let Ke=T.useMemo(()=>({pageIndex:B??$e.pageIndex,pageSize:M??$e.pageSize}),[$e.pageIndex,$e.pageSize,B,M]),wa=Math.max(1,D??Math.min(5,Ke.pageSize)),Na=T.useDeferredValue(ke),We=I?m?ke:Na:"",Ea=T.useCallback(H=>{ce(H);},[ce]),ka=T.useCallback(H=>{Fe(H);},[Fe]),t=T.useCallback(H=>{Ta(H);},[Ta]),w=T.useCallback(()=>{x?.(0),B===void 0&&na(H=>H.pageIndex===0?H:{...H,pageIndex:0});},[x,B]),j=T.useRef({columnFilters:_e,globalFilterValue:We});T.useEffect(()=>{let H=j.current,Pe=H.columnFilters!==_e,re=H.globalFilterValue!==We;j.current={columnFilters:_e,globalFilterValue:We},!m&&(!Pe&&!re||w());},[_e,We,m,w]),zi({persistence:z,prefs:{visibility:p?void 0:Ae,sizing:r$1===void 0?Be:void 0,order:a?void 0:ma,pinning:n?void 0:ra,rowPinning:i$1===void 0?la:void 0,density:E?void 0:Ue}});let ue=T.useMemo(()=>k(u).reduce((H,{column:Pe,index:re})=>{let ca=s(Pe,re);return i(Pe.meta?.hideOn,sa)&&(H[ca]=false),H},{}),[u,sa]),ae=T.useMemo(()=>({...Ae,...ue}),[Ae,ue]),N=T.useMemo(()=>h.filter(H=>b$1(H,g,fa)),[fa,h,g]),ea=s$1&&N.length===0,Oa=T.useMemo(()=>c$1(wa),[wa]),_a=ea?Oa:N,Yt=T.useCallback((H,Pe)=>d(H)?e(Pe):V(H,Pe),[V]),Ma=S||(fe?.length??0)>0||Object.values(de).some(Boolean),rt=T.useMemo(()=>{if(!Ma)return new Map;let H=new Map,Pe=re=>{re.forEach((ca,te)=>{H.set(V(ca,te),ca);let pe=J?.(ca,te);pe?.length&&Pe(pe);});};return Pe(N),H},[V,J,Ma,N]),Jt=T.useMemo(()=>Ma?Object.entries(de).filter(([,H])=>H).map(([H])=>rt.get(H)).filter(H=>!!H):[],[de,rt,Ma]),Xt=T.useMemo(()=>Object.entries(de).flatMap(([H,Pe])=>Pe?[H]:[]),[de]);return {containerWidth:sa,currentColumnFilters:_e,currentColumnOrder:ma,currentColumnPinning:ra,currentRowPinning:la,currentColumnSizing:Be,currentColumnVisibility:Ae,currentDensity:Ue,currentExpanded:ga,currentGrouping:va,currentPagination:Ke,currentRowSelection:de,currentShowHiddenRows:fa,currentSorting:Ye,currentViewMode:Xe,effectiveColumnVisibility:ae,globalFilterValue:We,handleDensityChange:t,handleShowHiddenRowsChange:ka,handleViewModeChange:Ea,localSearchValue:ke,resolvedLoadingRowCount:wa,resolvedToolbarQueryPlaceholder:La,selectedRowIds:Xt,selectedRows:Jt,setCurrentColumnFilters:Ra,setCurrentColumnOrder:ye,setCurrentColumnPinning:He,setCurrentRowPinning:ve,setCurrentColumnVisibility:pa,setCurrentExpanded:Je,setCurrentGrouping:ba,setCurrentRowSelection:ia,setCurrentSorting:oa,setLocalColumnSizing:Sa,setLocalPagination:na,setLocalSearchValue:je,shouldRenderInitialLoading:ea,tableData:_a,tableGetRowId:Yt,toolbarFilteredData:N,visibleData:N}}var Fs={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function Hi({columns:e,columnSizing:a,editableRows:n,enableRowSelection:i,hasRowActions:r,hasRowExpansion:l,layoutMode:d,uiClassNames:p,visibleLeafColumns:u}){let h=T.useMemo(()=>{let V=new Set;for(let{column:g$1,index:f}of k(e))g(g$1)&&V.add(s(g$1,f));return i&&V.add("__select__"),l&&V.add("__expand__"),(r||n)&&V.add("__actions__"),V},[e,n,i,r,l]),E=T.useMemo(()=>{let V=new Map;for(let{column:g,index:f$1}of k(e)){let s$1=f(g);s$1!==void 0&&V.set(s(g,f$1),s$1);}return V},[e]),S=T.useMemo(()=>{let V=new Map,g=new Map,f=0;for(let D of u)v(D)==="left"&&(V.set(D.id,f),f+=_i(D));let s=0;for(let D of [...u].reverse())v(D)==="right"&&(g.set(D.id,s),s+=_i(D));return {left:V,right:g}},[u]),I=T.useMemo(()=>new Set([...h,...Object.keys(a)]),[a,h]),A=T.useMemo(()=>{let V=new Map;for(let g of u){let f=g.id==="__select__",s=g.id==="__expand__",D=g.id==="__actions__",m=f||s||D,v$1=g.id==="__spacer__",C=E.get(g.id),$=!v$1&&(d==="fit"||m||I.has(g.id)),K=$||C!==void 0?{width:$?m?a$1:g.getSize():void 0,minWidth:m?a$1:$?g.getSize():C,maxWidth:$?m?a$1:g.getSize():void 0}:void 0,_=v(g),U=_?{left:_==="left"?S.left.get(g.id):void 0,right:_==="right"?S.right.get(g.id):void 0}:void 0,R=K||U?{...K,...U}:void 0;V.set(g.id,{cellStyle:R,colStyle:K,fixedSide:_,headerStyle:R,isActionsColumn:D,isExpansionColumn:s,isSelectionColumn:f,isSpacerColumn:v$1,isUtilityColumn:m,pinnedClassName:_?w(_,p,{isUtilityColumn:m}):void 0,utilityClassName:m?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return V},[I,d,E,S,p,u]),G=T.useMemo(()=>u.reduce((V,g)=>{let f=A.get(g.id),s=E.get(g.id);return f?.isUtilityColumn?V+a$1:I.has(g.id)?V+g.getSize():V+(s??0)},0),[A,I,E,u]),J=T.useCallback(V=>A.get(V)??Fs,[A]);return {columnLayouts:A,explicitlySizedColumnIds:h,fillMinWidth:G,getColumnLayout:J}}function _i(e){return x(e.id)?a$1:e.getSize()}function Gi(e,a){let n=e.classNames??{},{Button:i,Card:r,CardContent:l,CardHeader:d,Checkbox:p,Skeleton:u}=e;return function({rows:E,cardRenderer:S,cardSizing:I="fixed",cardGridClassName:A,cardClassName:G,rowActions:J,editableRows:V,detailPanel:g,detailExpanded:f,onDetailExpandedChange:s,hasCardTitle:D,rowSelection:m,onRowSelectionChange:v,enableRowSelection:L,editingRowId:C,onEditingRowIdChange:$,getRowClassName:K,onRowClick:_,getRowDraggable:U,onRowDragStart:R,onRowDragEnd:b$1,isLoading:x=false,loadingRowCount:k=5,labels:F}){let Q=I??"fixed",P=A?a$2("grid",A):Is(Q),q=a$2("min-h-0 w-full gap-4 p-1",n.cardGrid,P),B=M=>a$2("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",zs(Q),n.cardItem,G,M);return x?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:Array.from({length:Math.max(1,k)},(M,W)=>jsxs(r,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:B("min-h-52"),children:[D?jsxs(d,{className:"px-4 pt-4 pb-3",children:[jsx(u,{className:"h-5 w-40 max-w-[70%]"}),jsx(u,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(l,{className:a$2("space-y-3 pb-4",D?"":"pt-4"),children:[jsx(u,{className:"h-4 w-full"}),jsx(u,{className:"h-4 w-[82%]"}),jsx(u,{className:"h-4 w-[68%]"}),jsx(u,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${W}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:E.map(M=>{let W=M.id,ne=M.original,be=!!m[W],fe=C===W,De=J.length>0||!!V,Se=!!(g&&(g.getRowCanExpand?.(ne)??true)),Te=L||De||D,Ee=L||De||M.getCanExpand()||Se,Oe=()=>{_&&_({row:ne,rowId:W});};return jsxs(r,{role:"listitem","data-row-id":W,"data-tree-depth":M.depth,draggable:U?.(ne)??false,"data-dtp-slot":"data-table-card-item","data-state":be?"selected":void 0,className:B(a$2([K?.(ne,{row:ne,rowId:W,rowIndex:M.index,isEditing:fe,isExpanded:M.getIsExpanded(),isLoading:false,isSelected:be,pinnedPosition:false})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",n.card,be?n.cardSelected:n.cardUnselected)),onDragStart:X=>{R?.({row:ne,rowId:W,event:X});},onDragEnd:X=>{b$1?.({row:ne,rowId:W,event:X});},children:[Te?jsx("div",{"aria-hidden":"true",className:a$2("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",n.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsx("div",{"data-dtp-slot":"data-table-card-renderer",role:_?"button":void 0,tabIndex:_?0:void 0,className:a$2("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",Ls(Q),_&&"cursor-pointer focus-visible:outline-none"),onClick:X=>{y(X.target,X.currentTarget)||Oe();},onKeyDown:X=>{y(X.target,X.currentTarget)||(X.key==="Enter"||X.key===" ")&&(X.preventDefault(),Oe());},children:S({row:ne,rowId:W,depth:M.depth,canExpandSubRows:M.getCanExpand(),isSubRowsExpanded:M.getIsExpanded(),toggleSubRowsExpanded:()=>M.toggleExpanded(),isSelected:be,onSelectedChange:X=>{v(Bi(m,W,X,M.getCanSelect(),M.getCanMultiSelect()));},actions:J,isEditing:fe,startEditing:()=>{$(W);},cancelEditing:()=>{$(null);}})}),fe||!g||!(f===true||f[M.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:g.render({row:ne,rowId:W,tableRow:M})}),Ee?jsxs(d,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[L?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(p,{checked:be,disabled:!M.getCanSelect(),"aria-label":(F.selectCardRow??oe.selectCardRow)(W),onCheckedChange:X=>{v(Bi(m,W,X===true,M.getCanSelect(),M.getCanMultiSelect()));}})}):null,M.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":M.getIsExpanded()?F.collapseRow:F.expandRow,"aria-expanded":M.getIsExpanded(),onClick:()=>M.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",M.getIsExpanded()?"rotate-0":"-rotate-90")})})}):null,Se?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(i,{type:"button",size:"icon-sm",variant:"ghost","aria-label":f===true||f[M.id]?M.getCanExpand()?F.collapseRowDetails??oe.collapseRowDetails:F.collapseRow:M.getCanExpand()?F.expandRowDetails??oe.expandRowDetails:F.expandRow,"aria-expanded":f===true||!!f[M.id],"data-detail-toggle":"true",onClick:()=>{s(X=>b(X,M.id,E.map(he=>he.id)));},children:jsx(c,{className:a$2("transition-transform",f===true||f[M.id]?"rotate-0":"-rotate-90")})})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),De?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a,{row:ne,rowActions:J,editableRows:V,isEditing:fe,onStartEditing:()=>{$(W);},onCancelEditing:()=>{$(null);},labels:F})}):null]}):null]},W)})})}}function Is(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function zs(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function Ls(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function Bi(e,a,n,i,r){if(!i)return e;if(n)return r?{...e,[a]:true}:{[a]:true};if(!e[a])return e;let l={...e};return delete l[a],l}function Ui(e){let a=e.classNames??{},{Empty:n,EmptyContent:i,EmptyDescription:r,EmptyHeader:l,EmptyMedia:d,EmptyTitle:p}=e;return function({title:h="No rows found",description:E="Adjust your filters or create a new record to populate this table."}){return jsxs(n,{className:`min-h-60 rounded-2xl ${a.emptyState??"border bg-transparent"}`,children:[jsxs(l,{children:[jsx(d,{variant:"icon",children:jsx(p$1,{})}),jsx(p,{children:h}),jsx(r,{children:E})]}),jsx(i,{})]})}}function ji(e){let a=e.classNames??{},{Pagination:n,PaginationContent:i,PaginationEllipsis:r,PaginationFirst:l,PaginationItem:d,PaginationLast:p,PaginationLink:u,PaginationNext:h,PaginationPrevious:E,Select:S,SelectContent:I,SelectGroup:A,SelectItem:G,SelectTrigger:J,SelectValue:V,Tooltip:g,TooltipContent:f,TooltipTrigger:s}=e;function D({pageIndex:v,pageCount:L,pageCountKnown:C,pageSize:$,totalRowCount:K,rowsPerPageOptions:_,onPageIndexChange:U,onPageSizeChange:R,labels:b}){let x=C?Ns(v,Math.max(1,L)):[],k=v>0,F=v+1{R(Number(P));},children:[jsx(J,{"aria-label":b.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(V,{})}),jsx(I,{children:jsx(A,{children:_.map(P=>jsx(G,{value:String(P),children:P},P))})})]})]}),K!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${a.paginationTotal??""}`,"aria-label":b.totalRecords(K),children:[jsx(j$1,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:K}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:b.totalRecords(K)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${a.mutedText??"opacity-70"}`,children:C?b.pageStatus(v,Math.max(1,L)):(b.pageStatusUnknown??oe.pageStatusUnknown)(v)}),jsx(n,{"aria-label":b.pagination??oe.pagination,className:"mx-0 w-auto justify-end",children:jsxs(i,{children:[jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(l,{"aria-label":b.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(0);},text:b.firstPage})}),jsx(f,{children:b.firstPage})]})}),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(E,{"aria-label":b.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(v-1);},text:b.previousPage})}),jsx(f,{children:b.previousPage})]})}),x.map((P,q)=>jsx(d,{className:"hidden @min-[768px]/data-table:block",children:P==="ellipsis"?jsx(r,{text:b.morePages??oe.morePages}):jsx(u,{href:"#",isActive:P===v+1,size:"icon-sm",onClick:B=>{B.preventDefault(),U(P-1);},children:P})},`${P}-${q}`)),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(h,{"aria-label":b.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!F,onClick:P=>{P.preventDefault(),F&&U(v+1);},text:b.nextPage})}),jsx(f,{children:b.nextPage})]})}),C?jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(p,{"aria-label":b.lastPage,href:"#",size:"icon-sm",showText:false,text:b.lastPage,disabled:!F,onClick:P=>{P.preventDefault(),F&&U(Q);}})}),jsx(f,{children:b.lastPage})]})}):null]})})]})]})}function m(v){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(D,{...v})})}return {DataTableFooter:m,DataTablePagination:D}}function Ns(e,a){let n=e+1,i=new Set([1,a]);for(let d=Math.max(1,n-2);d<=Math.min(a,n+2);d+=1)i.add(d);let r=Array.from(i).sort((d,p)=>d-p),l=[];for(let d=0;d1&&l.push("ellipsis"),l.push(p);}return l}function Wi(e){let{Button:a,DropdownMenu:n,DropdownMenuContent:i,DropdownMenuGroup:r,DropdownMenuItem:l,DropdownMenuSeparator:d,DropdownMenuTrigger:p,Tooltip:u$1,TooltipContent:h,TooltipTrigger:E}=e;return function({row:I,rowActions:A,editableRows:G,isEditing:J,onStartEditing:V,onCancelEditing:g,labels:f,rowPinning:s}){let D=A.filter(C=>d$1(C,I)),m$1=T.useCallback(C=>{C.stopPropagation();},[]);if(J)return jsxs(u$1,{children:[jsx(E,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:g,children:[jsx(u,{}),jsx("span",{className:"sr-only",children:f.cancelEdit})]})}),jsx(h,{children:f.cancelEdit})]});let v=e$2(G,I),L=s?.canPin??false;return !D.length&&!v&&!L?null:jsxs(n,{children:[jsxs(u$1,{children:[jsx(E,{asChild:true,children:jsx(p,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:m$1,children:[jsx(k$1,{}),jsx("span",{className:"sr-only",children:f.rowActions})]})})}),jsx(h,{children:f.rowActions})]}),jsxs(i,{align:"end",className:"w-52",children:[v?jsx(r,{children:jsxs(l,{onClick:C=>{C.stopPropagation(),V();},children:[jsx(m,{"data-icon":"inline-start"}),f.editRow]})}):null,v&&(D.length||L)?jsx(d,{}):null,L?jsx(r,{children:s?.position?jsx(l,{onClick:C=>{C.stopPropagation(),s.pin(false);},children:f.unpinRow}):jsxs(Fragment,{children:[jsx(l,{onClick:C=>{C.stopPropagation(),s?.pin("top");},children:f.pinRowToTop}),jsx(l,{onClick:C=>{C.stopPropagation(),s?.pin("bottom");},children:f.pinRowToBottom})]})}):null,L&&D.length?jsx(d,{}):null,D.length?jsx(r,{children:D.map(C=>{let $=C.icon;return jsxs(l,{disabled:C.disabled?.(I),variant:C.variant==="destructive"?"destructive":void 0,onClick:K=>{K.stopPropagation(),C.onClick(I);},children:[$?jsx($,{"data-icon":"inline-start"}):null,c$2(C.label,I)]},C.key)})}):null]})]})}}var _s=T.lazy(()=>import('./data-table-toolbar-operations-IDEGCKBK.js'));function qi(e){let a=e.classNames??{},{Button:n,ButtonGroup:i,DropdownMenu:r,DropdownMenuCheckboxItem:l,DropdownMenuContent:d,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:h,DropdownMenuSeparator:E,DropdownMenuTrigger:S,InputGroup:I,InputGroupAddon:A,InputGroupInput:G,Tooltip:J,TooltipContent:V,TooltipTrigger:g}=e;return function({title:D,titleId:m,description:v,descriptionId:L,toolbarQueryValue:C,toolbarQueryPlaceholder:$,onToolbarQueryValueChange:K,customToolbar:_,compactToolbar:U,viewMode:R,onViewModeChange:b,enableViewToggle:x,toolbarActions:k,selectionActions:F,selectedRows:Q,selectedRowIds:P,showHiddenRows:q$1,hiddenRowsLabel:B,onShowHiddenRowsChange:M,allRows:W,columnVisibilityOptions:ne,onColumnVisibilityChange:be,enableColumnPinning:fe,onColumnPinningChange:De,columnFilters:Se,onColumnFilterChange:Te,onClearColumnFilters:Ee,density:Oe,onDensityChange:X,enableDensityToggle:he,labels:z,toolbarVisibility:we,openFileDialog:$e,enableGrouping:na,enableToolbarColumnChooser:Ye,enableToolbarFilterChips:oa,enableToolbarResetLayout:de,enableToolbarSavedViews:ia,savedViews:Ae,onResetColumnLayout:pa,onCreateSavedView:_e,onApplySavedView:Ra,onRenameSavedView:ga,onDeleteSavedView:Je,reorderColumn:ma,table:ye}){let ra=T.useRef(null),[He,la]=T.useState(false),ve=a.toolbarCompactIconButton??"",Be=k.filter(t=>(t.placement??"primary")==="primary"),Sa=k.filter(t=>t.placement==="trailing"),Xe=we?.title??true,ce=we?.search??true,va=we?.actions??true,ba=we?.trailingActions??true,fa=we?.options??true,Fe=we?.viewToggle??true,Ue=we?.customToolbar??true,Ta=Xe&&!!(D||v),Ge=ce,La=va&&Be.length>0,Pa=P.length>0&&F.length>0,ke=fa&&(ne.some(t=>t.canHide)||!!(M&&B)||fe||he||na||Ye||de||ia),je=Ye||de||ia,sa=Se.filter(t=>Gn(t.value)),da={Button:n,DropdownMenuCheckboxItem:l,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:h,DropdownMenuSeparator:E,InputGroup:I,InputGroupAddon:A,InputGroupInput:G},Ze=t=>jsx(T.Suspense,{fallback:null,children:jsx(_s,{placement:t,ui:da,labels:z,enableColumnChooser:Ye,enableFilterChips:oa,enableResetLayout:de,enableSavedViews:ia,enableColumnPinning:fe,columnVisibilityOptions:ne,onColumnVisibilityChange:be,onColumnPinningChange:De,reorderColumn:ma,table:ye,onResetColumnLayout:pa,savedViews:Ae,onCreateSavedView:_e,onApplySavedView:Ra,onRenameSavedView:ga,onDeleteSavedView:Je,toolbarQueryValue:C,onToolbarQueryValueChange:K,activeColumnFilters:sa,onColumnFilterChange:Te,onClearColumnFilters:Ee})}),xa=ye.getAllLeafColumns().filter(t=>!t.id.startsWith("__")&&t.getCanGroup()),Ke=ye.getState().grouping.flatMap(t=>{let w=ye.getColumn(t);return w?[w]:[]}),wa=Fe&&x&&!!b,Na=ba&&Sa.length>0,We=Ue&&!!_,Ea=Ue&&!!(U??_),ka=z.selectedRows(P.length);return T.useEffect(()=>{He&&ra.current?.focus();},[He]),!Ta&&!Ge&&!La&&!Pa&&!ke&&!wa&&!Na&&!We&&!Ea?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[Xe&&(D||v)?jsxs("div",{className:"flex flex-col gap-1",children:[D?jsx("h2",{id:m,className:"text-lg font-semibold tracking-tight",children:D}):null,v?jsx("p",{id:L,className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:v}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[ce?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(I,{className:"min-w-0",children:[jsx(G,{value:C,onChange:t=>{K(t.target.value);},placeholder:$}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),C?jsx(A,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{K("");},"aria-label":z.clearSearch,title:z.clearSearch,children:jsx(u,{})})}):null]})}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:He||C?"secondary":"outline",size:"icon-sm","aria-label":z.searchTable,"aria-pressed":He,className:`shrink-0 @min-[768px]/data-table:hidden ${ve} ${a.toolbarInputButton??""}`,onClick:()=>{la(t=>!t);},children:[jsx(s$1,{}),jsx("span",{className:"sr-only",children:z.searchTable})]})}),jsx(V,{children:z.searchTable})]})]}):null,va?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Be.map(t=>{let w=!t.iconOnly&&!!t.icon,j=jsxs(n,{type:"button",className:w?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${ve}`:t.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${ve}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:t.variant??"outline",size:t.iconOnly?"icon":"default",onClick:()=>{t.onClick({rows:W,openFileDialog:$e});},disabled:t.disabled,"aria-label":t.label,title:t.iconOnly?void 0:t.label,children:[t.icon?jsx(t.icon,{}):null,t.iconOnly?jsx("span",{className:"sr-only",children:t.label}):w?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:t.label}):jsx("span",{children:t.label})]},t.key);return t.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:j}),jsx(V,{children:t.label})]},t.key):j})}):null,Ea?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:U??_}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[P.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${a.mutedText??"opacity-70"}`,children:ka}):null,P.length?F.map(t=>{let w=t.icon,j={rows:Q,rowIds:P},ue=typeof t.disabled=="function"?t.disabled(Q,j):t.disabled;return jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:t.variant??"secondary",size:"icon-sm",className:ve,disabled:ue,onClick:()=>{t.onClick(j);},"aria-label":t.label,children:[w?jsx(w,{}):null,jsx("span",{className:"sr-only",children:t.label})]})}),jsx(V,{children:t.label})]},t.key)}):null,ke?jsxs(r,{children:[jsx(S,{asChild:true,children:jsxs(n,{type:"button",variant:"outline",size:"icon-sm","aria-label":z.tableOptions,className:`${ve} ${a.toolbarInputButton??""}`,title:z.tableOptions,children:[jsx(a$5,{}),jsx("span",{className:"sr-only",children:z.tableOptions})]})}),jsxs(d,{align:"end",className:"w-56",children:[jsx(h,{children:z.tableOptions}),jsx(p,{children:M&&B?jsx(l,{checked:q$1,onCheckedChange:t=>{M(t===true);},children:z.showHiddenRows(B)}):null}),he?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:z.density}),jsx(p,{children:[["compact",z.compactDensity],["comfortable",z.comfortableDensity],["spacious",z.spaciousDensity]].map(([t,w])=>jsx(l,{checked:Oe===t,onCheckedChange:()=>{X(t);},children:w},t))})]}):null,je?Ze("menu"):null,!Ye&&ne.some(t=>t.canHide)?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:z.columns}),jsx(p,{children:ne.filter(t=>t.canHide).map(t=>jsx(l,{checked:t.visible,onCheckedChange:w=>{be?.(t.id,w===true);},children:t.label},t.id))})]}):null,fe&&!Ye?jsxs(Fragment,{children:[jsx(E,{}),jsxs(h,{children:[z.pinLeft," / ",z.pinRight]}),jsx(p,{children:ne.map(t=>jsxs(u$1,{onSelect:w=>{w.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:t.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${z.pinLeft}: ${t.label}`,onClick:w=>{w.stopPropagation(),De(t.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${z.pinRight}: ${t.label}`,onClick:w=>{w.stopPropagation(),De(t.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${z.unpin}: ${t.label}`,onClick:w=>{w.stopPropagation(),De(t.id,false);},children:"-"})]},`pin-${t.id}`))})]}):null,na&&xa.length?jsxs(Fragment,{children:[jsx(E,{}),jsx(h,{children:z.grouping}),jsx(p,{children:xa.map(t=>{let w=typeof t.columnDef.header=="string"?t.columnDef.header:t.id,j=t.getIsGrouped();return jsx(l,{checked:j,onCheckedChange:()=>{t.toggleGrouping();},children:j?z.ungroup(w):z.groupBy(w)},`group-${t.id}`)})})]}):null]})]}):null,Fe&&x&&b?jsxs(i,{children:[jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:R==="table"?"default":"outline","aria-pressed":R==="table",className:R==="table"?ve:`${ve} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{b("table");},children:[jsx(r$1,{}),jsx("span",{className:"sr-only",children:z.switchToTableView??oe.switchToTableView})]})}),jsx(V,{children:z.tableView??oe.tableView})]}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(n,{type:"button",variant:R==="card"?"default":"outline","aria-pressed":R==="card",className:R==="table"?`${ve} ${a.toolbarInputButton??""}`:ve,size:"icon-sm",onClick:()=>{b("card");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:z.switchToCardView??oe.switchToCardView})]})}),jsx(V,{children:z.cardView??oe.cardView})]})]}):null,ba?Sa.map(t=>{let w=!t.iconOnly&&!!t.icon,j=jsxs(n,{type:"button",variant:t.variant??"outline",size:t.iconOnly?"icon-sm":"default",onClick:()=>{t.onClick({rows:W,openFileDialog:$e});},disabled:t.disabled,"aria-label":t.label,title:t.iconOnly?void 0:t.label,className:`size-7 shrink-0 ${t.iconOnly?"":`${w?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${t.iconOnly||w?ve:""} ${a.toolbarInputButton??""}`,children:[t.icon?jsx(t.icon,{"data-icon":t.iconOnly?void 0:"inline-start"}):null,t.iconOnly?jsx("span",{className:"sr-only",children:t.label}):w?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:t.label}):jsx("span",{children:t.label})]},t.key);return t.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:j}),jsx(V,{children:t.label})]},t.key):j}):null]})]}),ce&&He?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(I,{children:[jsx(G,{ref:ra,value:C,onChange:t=>{K(t.target.value);},placeholder:$}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),C?jsx(A,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{K("");},"aria-label":z.clearSearch,title:z.clearSearch,children:jsx(u,{})})}):null]})}):null,Se.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Se.map(t=>jsx(f,{filter:t,labels:z,onColumnFilterChange:Te},t.id)),Se.some(t=>Gn(t.value))?jsx(n,{type:"button",variant:"ghost",size:"sm",onClick:Ee,children:z.clearFilters}):null]}):null,oa?Ze("chips"):null,na&&Ke.length?jsxs("div",{"data-dtp-slot":"data-table-grouping-bar","aria-label":z.grouping,className:"flex flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[z.grouping,":"]}),Ke.map((t,w)=>{let j=typeof t.columnDef.header=="string"?t.columnDef.header:t.id,ue=ae=>{let N=[...ye.getState().grouping],[ea]=N.splice(w,1);ea!==void 0&&(N.splice(ae,0,ea),ye.setGrouping(N));};return jsxs("div",{className:"inline-flex items-center rounded-md border",children:[jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:w===0,onClick:()=>ue(w-1),"aria-label":z.moveGroupingEarlier(j),children:jsx("span",{"aria-hidden":"true",children:"\u2190"})}),jsxs(n,{type:"button",variant:"secondary",size:"sm",onClick:()=>t.toggleGrouping(),"aria-label":z.removeGrouping(j),children:[j," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}),jsx(n,{type:"button",variant:"ghost",size:"sm",disabled:w===Ke.length-1,onClick:()=>ue(w+1),"aria-label":z.moveGroupingLater(j),children:jsx("span",{"aria-hidden":"true",children:"\u2192"})})]},`grouping-bar-${t.id}`)})]}):null]}),Ue&&_?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:_}):null]})};function f({filter:s,labels:D,onColumnFilterChange:m}){let[v,L]=T.useState("");if(s.type==="text")return jsxs(I,{className:"min-w-48 max-w-64",children:[jsx(G,{value:typeof s.value=="string"?s.value:"",onChange:k=>{m(s.id,k.target.value);},placeholder:s.placeholder??s.label,"aria-label":`${D.filters}: ${s.label}`}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]});if(s.type==="numberRange"||s.type==="dateRange"){let k=Hs(s.value),F=s.type==="numberRange"?"number":"date",Q=D.filterFrom??oe.filterFrom,P=D.filterTo??oe.filterTo;return jsxs("div",{role:"group","aria-label":`${D.filters}: ${s.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(I,{className:"min-w-32 max-w-44",children:[jsx(G,{type:F,inputMode:F==="number"?"decimal":void 0,value:k.from??"",min:s.min,max:s.max,step:F==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,from:Qi(q.target.value,F)});},"aria-label":`${s.label}: ${Q}`}),jsx(A,{align:"inline-start",children:Q})]}),jsxs(I,{className:"min-w-32 max-w-44",children:[jsx(G,{type:F,inputMode:F==="number"?"decimal":void 0,value:k.to??"",min:s.min,max:s.max,step:F==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,to:Qi(q.target.value,F)});},"aria-label":`${s.label}: ${P}`}),jsx(A,{align:"inline-start",children:P})]})]})}let C=s.type==="boolean",$=s.type==="faceted",K=[{label:s.trueLabel??D.filterTrue??oe.filterTrue,value:"true"},{label:s.falseLabel??D.filterFalse??oe.filterFalse,value:"false"}],_=C?K:s.options,U=$&&v?_.filter(k=>k.label.toLocaleLowerCase().includes(v.toLocaleLowerCase())):_,R=typeof s.value=="string"||typeof s.value=="boolean"?String(s.value):"",b=Array.isArray(s.value)?s.value.map(String):R?[R]:[],x=b.length===0?s.label:`${s.label}: ${b.length===1?_.find(k=>k.value===String(b[0]))?.label??b[0]:b.length}`;return jsxs(r,{children:[jsx(S,{asChild:true,children:jsx(n,{type:"button",variant:"outline",size:"sm",children:x})}),jsxs(d,{align:"start",className:"w-56",children:[jsx(h,{children:s.label}),$&&s.searchable!==false?jsx("div",{className:"px-2 pb-2",children:jsxs(I,{children:[jsx(G,{value:v,onChange:k=>{L(k.target.value);},placeholder:s.searchPlaceholder??D.facetSearch(s.label),"aria-label":D.facetSearch(s.label)}),jsx(A,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]})}):null,jsxs(p,{children:[s.type==="select"||C||$?jsx(u$1,{onClick:()=>{m(s.id,"");},children:D.allFilterOptions??oe.allFilterOptions}):null,U.map(k=>jsxs(l,{checked:b.includes(k.value),disabled:k.disabled,onCheckedChange:F=>{if(s.type==="select"||C){m(s.id,F===true?k.value:"");return}let Q=new Set(b);F===true?Q.add(k.value):Q.delete(k.value),m(s.id,Array.from(Q));},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:k.label}),k.count!==void 0?jsx("span",{className:"ml-3 tabular-nums opacity-70",children:k.count}):null]},k.value))]})]})]})}}function Gn(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(Gn):true:e!=null&&e!==""}function Hs(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let a=e;return {...typeof a.from=="number"||typeof a.from=="string"?{from:a.from}:{},...typeof a.to=="number"||typeof a.to=="string"?{to:a.to}:{}}}function Qi(e,a){if(e)return a==="number"?Number(e):e}var Bs=T.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-ZOYCXFM5.js')).DataTableVirtualTablePanel}));function Yi(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(T.Suspense,{fallback:jsx(e$1,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(a?.fallbackRowCount??20)))}),children:jsx(Bs,{...e})}):jsx(e$1,{...e})}var Gs="data-table-pro:saved-views:";var Xi=["sorting","columnVisibility","columnFilters","grouping","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],Ji=0;function Ua(e){let a=Kn(e);if(!e||!a)return [];let n;try{n=a.getItem(Wn(e.key));}catch(d){return e.onError?.({error:d,operation:"read"}),[]}if(!n)return [];let i;try{i=(e.deserialize??JSON.parse)(n);}catch(d){return e.onError?.({error:d,operation:"deserialize"}),[]}if(!Qe(i)||!("version"in i)||!("views"in i))return [];let r=e.version??1,l=i.views;if(i.version!==r){if(!e.migrate)return [];try{l=e.migrate({version:i.version,views:i.views},r);}catch(d){return e.onError?.({error:d,operation:"migrate"}),[]}}return Array.isArray(l)?l.map(d=>Us(d,e.slices)).filter(d=>!!d):[]}function Zi(e,a,n){let i=a.trim();if(!e||!i)return;let r=new Date().toISOString(),l={id:Xs(),name:i,createdAt:r,updatedAt:r,state:$s(n,e.slices)},d=[...Ua(e),l];return Un(e,d,"create")?jn(l):void 0}function er(e,a,n){let i=n.trim();if(!e||!i)return;let r,l=Ua(e).map(d=>d.id!==a?d:(r={...d,name:i,updatedAt:new Date().toISOString()},r));if(r)return Un(e,l,"rename")?jn(r):void 0}function ar(e,a){if(!e)return false;let n=Ua(e),i=n.filter(r=>r.id!==a);return i.length!==n.length&&Un(e,i,"delete")}function tr(e){let a=Kn(e);if(!e||!a)return false;try{a.removeItem(Wn(e.key));}catch(n){return e.onError?.({error:n,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Un(e,a,n){let i=Kn(e);if(!i)return false;let r;try{let d={version:e.version??1,views:a};r=(e.serialize??JSON.stringify)(d);}catch(d){return e.onError?.({error:d,operation:"serialize"}),false}try{i.setItem(Wn(e.key),r);}catch(d){return e.onError?.({error:d,operation:"write"}),false}let l=a.map(jn);return e.onChange?.(l,n),true}function $s(e,a){let n=new Set(a??Xi),i={};for(let r of Object.keys(e))n.has(r)&&Object.assign(i,{[r]:js(r,e[r])});return i}function Us(e,a){if(!(!Qe(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:nr(e.state,a)}}function nr(e,a){if(!Qe(e))return {};let n=new Set(a??Xi),i={},r=Ks(e.sorting);n.has("sorting")&&r&&(i.sorting=r);let l=Ws(e.pagination);n.has("pagination")&&l&&(i.pagination=l);let d=$n(e.rowSelection);n.has("rowSelection")&&d&&(i.rowSelection=d);let p=$n(e.columnVisibility);n.has("columnVisibility")&&p&&(i.columnVisibility=p);let u=Qs(e.columnFilters);n.has("columnFilters")&&u&&(i.columnFilters=u);let h=it(e.grouping);n.has("grouping")&&h&&(i.grouping=h);let E=e.expanded===true?true:$n(e.expanded);n.has("expanded")&&E!==void 0&&(i.expanded=E);let S=it(e.columnOrder);n.has("columnOrder")&&S&&(i.columnOrder=S);let I=qs(e.columnPinning);n.has("columnPinning")&&I&&(i.columnPinning=I);let A=Ys(e.rowPinning);n.has("rowPinning")&&A&&(i.rowPinning=A);let G=Js(e.columnSizing);return n.has("columnSizing")&&G&&(i.columnSizing=G),n.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(i.density=e.density),n.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(i.viewMode=e.viewMode),n.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(i.showHiddenRows=e.showHiddenRows),n.has("globalFilter")&&typeof e.globalFilter=="string"&&(i.globalFilter=e.globalFilter),i}function jn(e){return {...e,state:nr(e.state,Object.keys(e.state))}}function js(e,a){return Array.isArray(a)?a.map(n=>Qe(n)?{...n}:n):Qe(a)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{top:Array.isArray(a.top)?[...a.top]:void 0,bottom:Array.isArray(a.bottom)?[...a.bottom]:void 0}}:{...a}:a}function Ks(e){if(Array.isArray(e))return e.filter(a=>Qe(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function Ws(e){if(!(!Qe(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function Qs(e){if(Array.isArray(e))return e.filter(a=>Qe(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function qs(e){if(Qe(e))return {left:it(e.left)??[],right:it(e.right)??[]}}function Ys(e){if(Qe(e))return {top:it(e.top)??[],bottom:it(e.bottom)??[]}}function $n(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function Js(e){if(Qe(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function it(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Kn(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}}function Xs(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(Ji+=1,`view-${Date.now().toString(36)}-${Ji.toString(36)}`)}function Wn(e){return `${Gs}${e}`}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function or({columns:e,currentColumnFilters:a,currentColumnPinning:n$1,effectiveColumnVisibility:i,enableColumnFilters:r,handleColumnFiltersChange:l$2,handleColumnPinningChange:d,labels:p$1,table:u,toolbarActions:h,visibleData:E,csvExport:S}){let I=T.useMemo(()=>k(e).map(({column:s$1,index:D})=>{let m=s(s$1,D),v=s$1.header,L=u$1(s$1),C$1=typeof v=="string"?v:L?C(L):C(m),$=n$1.left?.includes(m)===true?"left":n$1.right?.includes(m)===true?"right":false;return {id:m,label:C$1,visible:i[m]!==false,canHide:s$1.enableHiding!==false,pinned:$}}),[e,n$1,i]),A=T.useMemo(()=>r===false?[]:k(e).flatMap(({column:s$1,index:D})=>{let m=s$1.meta?.filter;if(!m)return [];let v=s(s$1,D),L=s$1.header,C$1=u$1(s$1),$=m.label??(typeof L=="string"?L:C$1?C(C$1):C(v)),K=a.find(b=>b.id===v),_=m.faceting?.options,U=m.type==="numberRange"?u.getColumn(v)?.getFacetedMinMaxValues():void 0,R=m.type==="faceted"&&_?typeof _=="function"?_({rows:E}):_:m.type==="faceted"?Array.from(u.getColumn(v)?.getFacetedUniqueValues()??[]).map(([b,x])=>({label:m.faceting?.getOptionLabel?.(b)??String(b),value:String(b),count:x})):typeof m.options=="function"?m.options({rows:E}):m.options??[];return [{id:v,label:$,type:m.type,value:K?.value,placeholder:m.placeholder,options:l(R),searchable:m.faceting?.searchable,searchPlaceholder:m.faceting?.searchPlaceholder,trueLabel:m.trueLabel,falseLabel:m.falseLabel,min:m.min??U?.[0],max:m.max??U?.[1],step:m.step}]}),[e,a,r,u,E]),G=T.useCallback((s,D)=>{l$2(m=>{let v=m.filter(L=>L.id!==s);return n(D)&&v.push({id:s,value:D}),v});},[l$2]),J=T.useCallback(()=>{l$2([]);},[l$2]),V=T.useCallback((s,D)=>{d(m=>{let v=(m.left??[]).filter(C=>C!==s),L=(m.right??[]).filter(C=>C!==s);return D==="left"&&v.push(s),D==="right"&&L.push(s),{left:v,right:L}});},[d]),g=T.useCallback(()=>{if(S)return p({csvExport:S,table:u,labels:p$1})},[S,p$1,u]),f=T.useMemo(()=>S?[...h??[],{key:"__csv_export__",label:p$1.exportCsv,icon:l$1,placement:"trailing",onClick:g}]:h??[],[S,g,p$1.exportCsv,h]);return {columnVisibilityOptions:I,effectiveToolbarActions:f,handleClearColumnFilters:J,handleToolbarColumnFilterChange:G,handleToolbarColumnPinningChange:V,toolbarColumnFilters:A}}function rr({columns:e,data:a,getRowId:n}){let i=T.useRef({columns:e,data:a,getRowId:n}),r=T.useRef(new Set);T.useEffect(()=>{if(!Zs())return;let l=i.current;l.data!==a&&ir(l.data,a)&&!r.current.has("data")&&qt(r.current,"data","The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused."),l.columns!==e&&ir(l.columns,e)&&!r.current.has("columns")&&qt(r.current,"columns","The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused."),l.getRowId!==n&&!r.current.has("getRowId")&&qt(r.current,"getRowId","getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.");let d=new Set;for(let p=0;pObject.is(n,a[i]))}function qt(e,a,n){e.add(a),console.warn(`[data-table-pro] ${n}`);}function Zs(){return globalThis.process?.env?.NODE_ENV!=="production"}var ad=T.lazy(()=>import('./data-table-auto-page-size-EICVZJQ5.js'));function qc(e){return td(e)}function td(e,a={}){let n=a.CardPanel??Ci,i=a.TablePanel??Yi,r$1=e.classNames??{},{rootClassName:l,Button:d,Checkbox:p$1,Input:u,ScrollArea:h,ScrollBar:E,Skeleton:S,Table:I,TableBody:A,TableCell:G,TableFooter:J="tfoot",TableHead:V,TableHeader:g$1,TableRow:f,Tooltip:s$1,TooltipContent:D,TooltipProvider:m=T.Fragment,TooltipTrigger:v}=e,L=Ui(e),C=Wi(e),{DataTableFooter:$}=ji(e),K=qi(e),_=Gi(e,C),U=T.lazy(async()=>{let{createDataTableStateOverlay:b}=await import('./data-table-state-overlay-AQ7VU6EM.js');return {default:b(e)}}),R={minSize:80,size:180,maxSize:720};return function({columns:x,data:k$1,getRowId:F,children:Q,title:P,description:q,toolbarQueryValue:B,onToolbarQueryValueChange:M,toolbarQueryPlaceholder:W,toolbarQueryDebounceMs:ne,manualFiltering:be=false,enableToolbarQueryFiltering:fe=true,globalFilterFn:De,columnFilters:Se,onColumnFiltersChange:Te,enableColumnFilters:Ee,customToolbar:Oe,compactToolbar:X,rowsPerPageOptions:he=[10,20,50,100],totalRowCount:z,hasNextPage:we,sorting:$e,onSortingChange:na,manualSorting:Ye=false,grouping:oa,onGroupingChange:de,manualGrouping:ia=false,enableGrouping:Ae=false,groupedColumnMode:pa="reorder",aggregationFns:_e,pageIndex:Ra,pageSize:ga,autoPageSize:Je=false,onPageIndexChange:ma,onPageSizeChange:ye,pageCount:ra,manualPagination:He=false,rowSelection:la,onRowSelectionChange:ve,enableRowSelection:Be=false,enableMultiRowSelection:Sa=true,enableSubRowSelection:Xe=true,getRowCanSelect:ce,rowSelectionSelectAllScope:va="page",expanded:ba,onExpandedChange:fa,getSubRows:Fe,manualExpanding:Ue=false,paginateExpandedRows:Ta,filterFromLeafRows:Ge,maxLeafRowFilterDepth:La,detailPanel:Pa,getRowCanExpand:ke,renderExpandedRow:je,columnOrder:sa,onColumnOrderChange:da,enableColumnReordering:Ze=false,columnGroupHeaderHeight:xa,columnPinning:Ke,onColumnPinningChange:wa,enableColumnPinning:Na=false,rowPinning:We,onRowPinningChange:Ea,enableRowPinning:ka=false,keepPinnedRows:t$1=true,toolbarActions:w=[],selectionActions:j=[],rowActions:ue=[],csvExport:ae,clipboard:N,enableCellSelection:ea=false,cellSelection:Oa,defaultCellSelection:_a,onCellSelectionChange:Yt,gridCommands:Ma,density:rt,onDensityChange:Jt,enableDensityToggle:Xt=false,columnPrefsKey:H,persistence:Pe,savedViews:re,toolbarDataOperations:ca,initialState:te,state:pe,onStateChange:Ce,apiRef:dr,labels:qn,summaryRows:cr=[],cardRenderer:Zt,cardSizing:ur,cardGridClassName:pr,cardClassName:gr,viewMode:Yn,onViewModeChange:mr,enableViewToggle:br=false,enablePrint:Jn=false,enableFullscreen:Ct=false,emptyState:fr,stateOverlay:ja,isLoading:Xn=false,loadingRowCount:Tr,getRowLoadingState:wr,hiddenRows:Zn,showHiddenRows:eo,onShowHiddenRowsChange:Cr,infiniteScroll:Dt,editableRows:Va,columnVisibility:ao,onColumnVisibilityChange:Dr,columnSizing:to,onColumnSizingChange:hr,enableColumnResizing:no=false,columnResizeMode:yr="onEnd",layoutMode:ht="fill",stickyHeader:Rr=true,scrollbarVisibility:oo,showFooter:Sr=true,showToolbar:io=true,dir:en="ltr",flexGrow:Ka=true,toolbarVisibility:ro,className:vr,tableClassName:Pr,tableContainerClassName:lo,stripedRows:so=false,getRowClassName:co,onRowClick:an,onActionError:lt,dragAndDrop:Wa,fileUpload:Ca,virtualization:tn,accessibility:uo,interactiveGrid:yt}){let Ha=T.useRef(null),po=T.useRef(null),go=T.useRef(null),xr=T.useRef(null),nn=T.useRef(null),Er=T.useRef(null),[mo,on]=T.useState(0),kr=T.useId(),Mr=T.useId();rr({columns:x,data:k$1,getRowId:F}),T.useMemo(()=>t(x),[x]);let xe=T.useMemo(()=>Ri(qn),[qn]),rn=ca===true?{columnChooser:true,savedViews:true,resetLayout:true}:ca===false?{}:ca??{},ln=uo?.mode==="grid"||yt===true||typeof yt=="object",[Aa,Rt]=Re({defaultValue:_a??null,onChange:Yt,value:Oa}),Vr=B??pe?.globalFilter,Ar=$e??pe?.sorting,Fr=oa??pe?.grouping,St=Ra??pe?.pagination?.pageIndex,Qa=ga??pe?.pagination?.pageSize,Ir=la??pe?.rowSelection,zr=ao??pe?.columnVisibility,Lr=Se??pe?.columnFilters,Nr=ba??pe?.expanded,Or=sa??pe?.columnOrder,_r=Ke??pe?.columnPinning,Hr=We??pe?.rowPinning,Br=to??pe?.columnSizing,Gr=rt??pe?.density,$r=Yn??pe?.viewMode,Ur=eo??pe?.showHiddenRows,bo=io&&(ro?.title??true),fo=bo&&P?kr:void 0,To=bo&&q?Mr:void 0;od(pe,{columnFilters:Se!==void 0,columnOrder:sa!==void 0,columnPinning:Ke!==void 0,rowPinning:We!==void 0,columnSizing:to!==void 0,columnVisibility:ao!==void 0,density:rt!==void 0,expanded:ba!==void 0,grouping:oa!==void 0,globalFilter:B!==void 0,pagination:Ra!==void 0||ga!==void 0,rowSelection:la!==void 0,showHiddenRows:eo!==void 0,sorting:$e!==void 0,viewMode:Yn!==void 0});let jr=Ne("globalFilter",M,Ce),Kr=Ne("sorting",na,Ce),Wr=Ne("grouping",de,Ce),Qr=Ne("rowSelection",ve,Ce),qr=Ne("columnVisibility",Dr,Ce),Yr=Ne("columnFilters",Te,Ce),Jr=Ne("expanded",fa,Ce),Xr=Ne("columnOrder",da,Ce),Zr=Ne("columnPinning",wa,Ce),el=Ne("rowPinning",Ea,Ce),al=Ne("columnSizing",hr,Ce),tl=Ne("density",Jt,Ce),nl=Ne("viewMode",mr,Ce),ol=Ne("showHiddenRows",Cr,Ce),vt=T.useCallback(o=>{ma?.(o),Ce?.(y=>({...y,pagination:{pageIndex:o,pageSize:Qa??y.pagination.pageSize}}));},[ma,Ce,Qa]),sn=T.useCallback(o=>{ye?.(o),Ce?.(y=>({...y,pagination:{pageIndex:St??y.pagination.pageIndex,pageSize:o}}));},[ye,Ce,St]),Me=T.useCallback((o,y)=>{nd(y,o,lt);},[lt]),wo=T.useMemo(()=>ue.map(o=>({...o,onClick:y=>{Me({actionKey:o.key,row:y,source:"rowAction"},()=>o.onClick(y));}})),[ue,Me]),Co=T.useMemo(()=>an?o=>{Me({row:o.row,source:"rowClick"},()=>an(o));}:void 0,[an,Me]),il=T.useCallback((o,y)=>{lt?.({error:o,row:y,source:"edit"});},[lt]),{containerWidth:rl,currentColumnFilters:Pt,currentColumnOrder:dn,currentColumnPinning:xt,currentRowPinning:cn,currentColumnSizing:qa,currentColumnVisibility:Do,currentDensity:st,currentExpanded:Et,currentGrouping:un,currentPagination:aa,currentRowSelection:kt,currentShowHiddenRows:pn,currentSorting:Mt,currentViewMode:Ya,effectiveColumnVisibility:Vt,globalFilterValue:ll,handleDensityChange:gn,handleShowHiddenRowsChange:mn,handleViewModeChange:bn,localSearchValue:Ba,resolvedLoadingRowCount:sl,resolvedToolbarQueryPlaceholder:dl,selectedRowIds:cl,selectedRows:ul,setCurrentColumnFilters:ho,setCurrentColumnOrder:pl,setCurrentColumnPinning:yo,setCurrentRowPinning:gl,setCurrentColumnVisibility:ml,setCurrentExpanded:Ro,setCurrentGrouping:bl,setCurrentRowSelection:So,setCurrentSorting:fl,setLocalColumnSizing:Tl,setLocalPagination:fn,setLocalSearchValue:Tn,shouldRenderInitialLoading:wn,tableData:wl,tableGetRowId:Cl,visibleData:Dl}=Oi({columnFilters:Lr,columnOrder:Or,columnPinning:_r,rowPinning:Hr,columnSizing:Br,columnPrefsKey:H,persistence:Pe,columnVisibility:zr,columns:x,containerRef:Ha,data:k$1,density:Gr,enableRowSelection:Be,enableToolbarQueryFiltering:fe,expanded:Nr,grouping:Fr,getSubRows:Fe,getRowId:F,hiddenRows:Zn,isLoading:Xn,loadingRowCount:Tr,manualFiltering:be,initialState:te,onColumnFiltersChange:Yr,onColumnOrderChange:Xr,onColumnPinningChange:Zr,onRowPinningChange:el,onColumnSizingChange:al,onColumnVisibilityChange:qr,onDensityChange:tl,onExpandedChange:Jr,onGroupingChange:Wr,onPageIndexChange:vt,onRowSelectionChange:Qr,onShowHiddenRowsChange:ol,onSortingChange:Kr,onToolbarQueryValueChange:jr,onViewModeChange:nl,pageIndex:St,pageSize:Qa,resolvedLabels:xe,rowSelection:Ir,rowsPerPageOptions:he,selectionActions:j,showHiddenRows:Ur,sorting:Ar,toolbarQueryDebounceMs:ne,toolbarQueryPlaceholder:W,toolbarQueryValue:Vr,viewMode:$r}),Cn=!!(je&&!Pa&&!Fe),Ja=Pa??(je?{getRowCanExpand:Fe?void 0:ke,render:je}:void 0),[Dn,vo]=Re({defaultValue:()=>Cn?te?.expanded??{}:{},onChange:Cn?Ro:Ja?.onExpandedChange,value:Cn?Et:Ja?.expanded}),{cancelEditing:hn,clearEditError:Po,draftValues:hl,editErrors:yn,editingRowId:Rn,isEditDirty:Sn,isSavingEdit:vn,saveEdit:Pn,setDraftValues:yl,setEditingRowId:Rl,startEditingRow:Sl}=a$3({columns:x,editableRows:Va,onError:il}),vl=T.useMemo(()=>({cancel:hn,cancelOnEscape:Va?.cancelOnEscape!==false,clearError:Po,commit:o=>{Pn(o);},commitOnEnter:Va?.commitOnEnter!==false,errors:yn,isDirty:Sn,isPending:vn}),[hn,Po,Va?.cancelOnEscape,Va?.commitOnEnter,yn,Sn,vn,Pn]),{viewportElement:xn,viewportHeight:En}=a$4(go,Ya),xo=typeof Je=="object"?Je:void 0,Pl=T.useCallback(o=>{o!==aa.pageSize&&(aa.pageIndex!==0&&vt(0),sn(o),Qa===void 0&&fn({pageIndex:0,pageSize:o}));},[aa.pageIndex,aa.pageSize,vt,sn,Qa,fn]),xl=Je===true||xo!==void 0,At=T.useCallback(()=>typeof window>"u"||typeof window.print!="function"?false:(window.print(),true),[]),Ft=T.useCallback(async()=>{let o=Ha.current;return !o||typeof document>"u"?false:document.fullscreenElement?typeof document.exitFullscreen!="function"?false:(await document.exitFullscreen(),true):typeof o.requestFullscreen!="function"?false:(await o.requestFullscreen(),true)},[]),[Eo,El]=T.useState(false);T.useEffect(()=>{if(!Ct||typeof document>"u")return;let o=()=>{El(document.fullscreenElement===Ha.current);};return o(),document.addEventListener("fullscreenchange",o),()=>document.removeEventListener("fullscreenchange",o)},[Ct]);let kl=T.useCallback(()=>{Ca?.disabled||po.current?.click();},[Ca?.disabled]),Ml=T.useCallback(o=>{Me({source:"fileUpload"},()=>Ca?.onFilesSelected(o));},[Ca,Me]),Vl=T.useMemo(()=>{if(ht!=="fill")return false;let o=k(x).filter(({column:y,index:ie})=>Vt[s(y,ie)]!==false);return o.length>0&&o.every(({column:y,index:ie})=>{let ct=s(y,ie);return g(y)||Object.prototype.hasOwnProperty.call(qa,ct)})},[x,qa,Vt,ht]),Al=Si({Button:d,Checkbox:p$1,DataTableRowActions:C,Tooltip:s$1,TooltipContent:D,TooltipTrigger:v,cancelEditing:hn,columns:x,editableRows:Va,editErrors:yn,editingRowId:Rn,enableRowSelection:Be,enableRowPinning:ka,hasTreeExpansion:!!Fe,isSavingEdit:vn,isEditDirty:Sn,includeFillSpacer:Vl,labels:xe,lastSelectedRowIdRef:Er,detailPanel:Ja,detailExpanded:Dn,onDetailExpandedChange:vo,rowSelectionSelectAllScope:va,rowActions:wo,saveEdit:Pn,startEditingRow:Sl,tableRef:nn}),Fl=T.useMemo(()=>i$1(x),[x]),{effectivePageCount:Il,footerTotalRowCount:zl,handleFooterPageIndexChange:Ll,handleFooterPageSizeChange:Nl,isPageCountKnown:Ol,renderedRows:ko,topPinnedRows:_l,bottomPinnedRows:Hl,reorderColumn:Mo,rowsToRender:Bl,sentinelRef:Vo,table:Z,virtualPaddingBottom:Gl,virtualPaddingTop:$l,visibleLeafColumns:kn}=Mi({autoResetPageIndex:false,columnGroupPaths:Fl,columnResizeMode:yr,dir:en,currentColumnFilters:Pt,currentColumnOrder:dn,currentColumnPinning:xt,currentRowPinning:cn,currentColumnSizing:qa,currentExpanded:Et,currentGrouping:un,currentPagination:aa,currentRowSelection:kt,currentSorting:Mt,currentViewMode:Ya,defaultColumn:R,effectiveColumnVisibility:Vt,enableColumnResizing:no,enableRowPinning:ka,enableRowSelection:Be,enableMultiRowSelection:Sa,enableSubRowSelection:Xe,getRowCanSelect:ce,getRowCanExpand:ke,getSubRows:Fe,aggregationFns:_e,groupedColumnMode:pa,globalFilterFn:De,globalFilterValue:ll,hasNextPage:we,handleColumnFiltersChange:ho,handleColumnOrderChange:pl,handleColumnPinningChange:yo,handleRowPinningChange:gl,handleColumnVisibilityChange:ml,handleExpandedChange:Ro,handleGroupingChange:bl,infiniteScroll:Dt,keepPinnedRows:t$1,manualFiltering:be,manualGrouping:ia,manualExpanding:Ue,manualPagination:He,manualSorting:Ye,onActionError:lt,onPageIndexChange:vt,onPageSizeChange:sn,pageCount:ra,pageIndex:St,pageSize:Qa,paginateExpandedRows:Ta,filterFromLeafRows:Ge,maxLeafRowFilterDepth:La,setCurrentRowSelection:So,setCurrentSorting:fl,setLocalColumnSizing:Tl,setLocalPagination:fn,shouldRenderInitialLoading:wn,tableColumns:Al,tableData:wl,tableGetRowId:Cl,tableRef:nn,totalRowCount:z,virtualization:tn}),Ao=Hi({columns:x,columnSizing:qa,editableRows:!!Va,enableRowSelection:Be,hasRowActions:ue.length>0,hasRowExpansion:!!(Fe||Ja),layoutMode:ht,uiClassNames:r$1,visibleLeafColumns:kn}),{explicitlySizedColumnIds:It,fillMinWidth:Ul,getColumnLayout:jl}=Ao,Kl=T.useMemo(()=>new Set(k(x).flatMap(({column:o,index:y})=>Object.prototype.hasOwnProperty.call(o,"cell")&&typeof o.cell=="function"?[s(o,y)]:[])),[x]),Wl=kn.length,Ql=T.useMemo(()=>({Checkbox:p$1,Input:u,Skeleton:S,TableCell:G,TableRow:f}),[]),ql=T.useMemo(()=>k(x).some(({column:o})=>o.meta?.cardTitle),[x]),Yl=T.useCallback((o,y)=>{It.has(o)||Object.prototype.hasOwnProperty.call(Z.getState().columnSizing,o)||flushSync(()=>{Z.setColumnSizing(ie=>({...ie,[o]:y}));});},[It,Z]),Jl=T.useCallback(o=>{if(It.has(o)){Z.getColumn(o)?.resetSize();return}Z.setColumnSizing(y=>{if(!Object.prototype.hasOwnProperty.call(y,o))return y;let ie={...y};return delete ie[o],ie});},[It,Z]),Mn=Z.getFilteredRowModel().rows.map(o=>o.original),Vn=ja?.empty??fr,Fo=typeof Vn=="function"?Vn({rows:Mn,toolbarQueryValue:Ba}):Vn,Io=T.useMemo(()=>ja?{...ja,onRetry:ja.onRetry?()=>Me({source:"retry"},ja.onRetry):void 0}:void 0,[Me,ja]),zo=Io?.error!=null?jsx(T.Suspense,{fallback:null,children:jsx(U,{labels:xe,overlay:Io,rows:Mn,toolbarQueryValue:Ba})}):void 0,{columnVisibilityOptions:Xl,effectiveToolbarActions:Lo,handleClearColumnFilters:Zl,handleToolbarColumnFilterChange:es,handleToolbarColumnPinningChange:as,toolbarColumnFilters:ts}=or({columns:x,currentColumnFilters:Pt,currentColumnPinning:xt,csvExport:ae,effectiveColumnVisibility:Vt,enableColumnFilters:Ee,handleColumnFiltersChange:ho,handleColumnPinningChange:yo,labels:xe,table:Z,toolbarActions:w,visibleData:Dl}),ns=T.useMemo(()=>[...Lo,...Jn?[{key:"__print__",label:xe.print,placement:"trailing",onClick:()=>{At();}}]:[],...Ct?[{key:"__fullscreen__",label:Eo?xe.exitFullscreen:xe.enterFullscreen,placement:"trailing",onClick:()=>Ft()}]:[]].map(o=>({...o,onClick:y=>{Me({actionKey:o.key,source:"toolbarAction"},()=>o.onClick(y));}})),[Lo,Ct,Jn,Eo,At,xe.enterFullscreen,xe.exitFullscreen,xe.print,Me,Ft]),os=T.useMemo(()=>j.map(o=>({...o,onClick:y=>{Me({actionKey:o.key,source:"selectionAction"},()=>o.onClick(y));}})),[Me,j]),No=T.useMemo(()=>({sorting:Mt,pagination:aa,rowSelection:kt,columnVisibility:Do,columnFilters:Pt,expanded:Et,grouping:un,columnOrder:dn,columnPinning:xt,rowPinning:cn,columnSizing:qa,density:st,viewMode:Ya,showHiddenRows:pn,globalFilter:Ba}),[Pt,dn,xt,cn,qa,Do,st,Et,un,aa,kt,pn,Mt,Ya,Ba]),dt=T.useCallback(()=>rd(No),[No]),Fa=T.useCallback(o=>{o.sorting!==void 0&&Z.setSorting(o.sorting),o.pagination!==void 0&&Z.setPagination(o.pagination),o.rowSelection!==void 0&&Z.setRowSelection(o.rowSelection),o.columnVisibility!==void 0&&Z.setColumnVisibility(o.columnVisibility),o.columnFilters!==void 0&&Z.setColumnFilters(o.columnFilters),o.expanded!==void 0&&Z.setExpanded(o.expanded),o.grouping!==void 0&&Z.setGrouping(o.grouping),o.columnOrder!==void 0&&Z.setColumnOrder(o.columnOrder),o.columnPinning!==void 0&&Z.setColumnPinning(o.columnPinning),o.rowPinning!==void 0&&Z.setRowPinning(o.rowPinning),o.columnSizing!==void 0&&Z.setColumnSizing(o.columnSizing),o.density!==void 0&&gn(o.density),o.viewMode!==void 0&&bn(o.viewMode),o.showHiddenRows!==void 0&&mn(o.showHiddenRows),o.globalFilter!==void 0&&Tn(o.globalFilter);},[gn,mn,bn,Tn,Z]),Xa=T.useCallback(()=>Ii(Pe??H),[H,Pe]),An=T.useCallback(o=>{o?.clearPersistence&&Xa(),Fa({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[Xa,x,te,Fa]),Oo=T.useCallback(o=>{o?.clearPersistence&&Xa(),Fa({sorting:te?.sorting??[],pagination:te?.pagination??{pageIndex:0,pageSize:he[0]??20},rowSelection:te?.rowSelection??{},columnVisibility:te?.columnVisibility??{},columnFilters:te?.columnFilters??[],expanded:te?.expanded??{},grouping:te?.grouping??[],columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[Xa,x,te,Fa,he]),_o=T.useCallback(()=>Ua(re),[re]),zt=T.useCallback(o=>Zi(re,o,dt()),[dt,re]),Fn=T.useCallback(o=>{let y=Ua(re).find(ie=>ie.id===o);return y?(Fa(y.state),re?.onApply?.(y),true):false},[Fa,re]),Lt=T.useCallback((o,y)=>er(re,o,y),[re]),Nt=T.useCallback(o=>ar(re,o),[re]),Ho=T.useCallback(()=>tr(re),[re]),is=T.useMemo(()=>Ua(re),[re,mo]),rs=T.useCallback(o=>{let y=zt(o);return y&&on(ie=>ie+1),y},[zt]),ls=T.useCallback((o,y)=>{let ie=Lt(o,y);return ie&&on(ct=>ct+1),ie},[Lt]),ss=T.useCallback(o=>{let y=Nt(o);return y&&on(ie=>ie+1),y},[Nt]),Bo=T.useCallback(o=>p({csvExport:o??(ae||true),labels:xe,table:Z}),[ae,xe,Z]),In=T.useCallback(async o=>{let{copyDataTableToClipboard:y}=await import('./data-table-clipboard-7IVWTPU3.js');return y({clipboard:o??(N?.copy===false?false:Aa?{...N?.copy===true?{}:N?.copy,scope:"cellSelection"}:N?.copy??true),cellSelection:Aa,table:Z})},[N?.copy,Aa,Z]),Go=T.useCallback((o,y="top")=>{try{let ie=Z.getRow(o,!0);return ie.getCanPin()?(ie.pin(y),!0):!1}catch{return false}},[Z]),$o=T.useCallback(o=>{try{let y=Z.getRow(o,!0);return y.getCanPin()?(y.pin(!1),!0):!1}catch{return false}},[Z]);return T.useImperativeHandle(dr,()=>({getTable:()=>nn.current,getState:dt,snapshot:dt,restore:Fa,resetColumnLayout:An,resetState:Oo,clearPersistedState:Xa,getSavedViews:_o,createSavedView:zt,applySavedView:Fn,renameSavedView:Lt,deleteSavedView:Nt,clearSavedViews:Ho,pinRow:Go,unpinRow:$o,focus:()=>{Ha.current?.focus();},scrollToRow:o=>lr(Ha.current,"row",o),scrollToColumn:o=>lr(Ha.current,"column",o),exportCsv:Bo,copyToClipboard:In,getCellSelection:()=>Aa,setCellSelection:Rt,clearCellSelection:()=>Rt(null),print:At,toggleFullscreen:Ft}),[Fn,Xa,Ho,In,Aa,zt,Nt,Bo,_o,dt,Lt,An,Oo,Fa,Go,At,Rt,$o,Ft]),jsx(m,{children:jsxs("div",{ref:Ha,"data-dtp-slot":"data-table-root","data-density":st,"data-dtp-striped-rows":so||void 0,"aria-busy":Xn||void 0,dir:en,tabIndex:-1,className:a$2("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",Ka?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Wa?.onDragEnter,onDragOver:Wa?.onDragOver,onDragLeave:Wa?.onDragLeave,onDrop:Wa?.onDrop,onKeyDown:o=>{if(ln&&Ma&&(o.ctrlKey||o.metaKey)&&o.key.toLowerCase()==="z"&&!Qn(o.target)){let y=o.shiftKey?Ma.redo:Ma.undo;y&&(o.preventDefault(),Me({source:o.shiftKey?"redo":"undo"},()=>y({cellSelection:Aa,table:Z})));return}!N?.copy||!(o.ctrlKey||o.metaKey)||o.key.toLowerCase()!=="c"||Qn(o.target)||(o.preventDefault(),Me({source:"clipboardCopy"},async()=>{await In(N.copy===true?void 0:Aa&&typeof N.copy=="object"&&!N.copy.scope?{...N.copy,scope:"cellSelection"}:N.copy);}));},onPaste:o=>{let y=N?.paste;if(!y||y.enabled===false||Qn(o.target))return;let ie=o.clipboardData.getData("text/plain");ie&&((y.preventDefault??true)&&o.preventDefault(),Me({source:"clipboardPaste"},async()=>{let{parseDataTableClipboardText:ct}=await import('./data-table-clipboard-7IVWTPU3.js');return y.onPaste({table:Z,text:ie,values:ct(ie)})}));},children:[xl?jsx(T.Suspense,{fallback:null,children:jsx(ad,{config:xo,currentPageSize:aa.pageSize,enabled:true,onPageSizeChange:Pl,viewportElement:xn,viewportHeight:En})}):null,Ca?jsx("input",{ref:po,className:"hidden",type:"file",accept:Ca.accept,multiple:Ca.multiple??true,disabled:Ca.disabled,onChange:o=>{let y=o.currentTarget.files;y?.length&&Ml(y),o.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a$2("flex w-full flex-col",Ka?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a$2("flex w-full flex-col gap-4",Ka?"min-h-0 flex-1":"grow",vr),children:[io?jsx(yi,{allRows:Mn,columnFilters:ts,columnVisibilityOptions:Xl,compactToolbar:X,customToolbar:Oe,DataTableToolbar:K,density:st,description:q,descriptionId:To,effectiveToolbarActions:ns,enableColumnPinning:Na,enableGrouping:Ae,enableToolbarColumnChooser:rn.columnChooser===true,enableToolbarFilterChips:!!ca,enableToolbarResetLayout:rn.resetLayout===true,enableToolbarSavedViews:rn.savedViews===true&&!!re,enableDensityToggle:Xt,enableViewToggle:br&&!!Zt,hiddenRowsLabel:Zn?.label,labels:xe,onClearColumnFilters:Zl,onColumnFilterChange:es,onColumnPinningChange:as,onDensityChange:gn,onShowHiddenRowsChange:mn,onToolbarQueryValueChange:Tn,reorderColumn:Mo,onResetColumnLayout:An,onCreateSavedView:rs,onApplySavedView:Fn,onRenameSavedView:ls,onDeleteSavedView:ss,onViewModeChange:bn,openFileDialog:Ca?kl:void 0,selectedRowIds:cl,selectedRows:ul,selectionActions:os,savedViews:is,showHiddenRows:pn,table:Z,title:P,titleId:fo,toolbarQueryPlaceholder:dl,toolbarQueryValue:Ba,toolbarVisibility:ro,viewMode:Ya}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a$2(Ka?"flex min-h-0 flex-1 flex-col":""),children:Ya==="card"&&Zt?jsx(n,{cardClassName:gr,cardGridClassName:pr,cardSizing:ur,cardRenderer:Zt,containerWidth:rl,currentDetailExpanded:Dn,currentRowSelection:kt,DataTableCardView:_,DataTableEmptyState:L,dragAndDrop:Wa,editableRows:Va,editingRowId:Rn,emptyNode:Fo,stateOverlayNode:zo,enableRowSelection:Be,flexGrow:Ka,getRowClassName:co,hasCardTitle:ql,infiniteScroll:Dt,localSearchValue:Ba,onRowClick:Co,renderedRows:ko,detailPanel:Ja,resolvedLabels:xe,resolvedLoadingRowCount:sl,rowActions:wo,ScrollArea:h,scrollbarVisibility:oo,sentinelRef:Vo,setCurrentDetailExpanded:vo,setCurrentRowSelection:So,setEditingRowId:Rl,shouldRenderInitialLoading:wn,tableContainerClassName:lo,uiClassNames:r$1,virtualization:tn}):jsx(i,{ariaDescribedBy:To,ariaLabelledBy:fo,bodyRowComponents:Ql,columnLayouts:Ao.columnLayouts,currentDensity:st,columnGroupHeaderHeight:xa,currentDetailExpanded:Dn,currentSorting:Mt,dir:en,DataTableEmptyState:L,dragAndDrop:Wa,draggedColumnIdRef:xr,draftValues:hl,editingRowId:Rn,editingContext:vl,emptyNode:Fo,stateOverlayNode:zo,enableColumnReordering:Ze,enableColumnResizing:no,explicitCustomCellColumnIds:Kl,fillMinWidth:Ul,flexGrow:Ka,getColumnLayout:jl,getRowClassName:co,getRowLoadingState:wr,infiniteScroll:Dt,layoutMode:ht,localSearchValue:Ba,onRowClick:Co,primeColumnForResize:Yl,renderedRows:ko,detailPanel:Ja,topPinnedRows:_l,bottomPinnedRows:Hl,reorderColumn:Mo,resetColumnSize:Jl,resolvedLabels:xe,rowsToRender:Bl,ScrollArea:h,ScrollBar:E,scrollbarVisibility:oo,sentinelRef:Vo,setDraftValues:yl,shouldRenderInitialLoading:wn,stickyHeader:Rr,stripedRows:so,summaryRows:cr,table:Z,tableClassName:Pr,tableContainerClassName:lo,Table:I,TableBody:A,TableCell:G,TableFooter:J,TableHead:V,TableHeader:g$1,TableRow:f,tableScrollContainerRef:go,tableScrollElement:xn,uiClassNames:r$1,viewportHeight:En,virtualization:tn,gridMode:ln,gridPageSize:uo?.pageSize??(typeof yt=="object"?yt.pageSize:void 0),cellSelectionEnabled:ln&&(ea||Oa!==void 0||_a!==void 0),cellSelection:Aa,onCellSelectionChange:Rt,gridRowOffset:He?aa.pageIndex*aa.pageSize:0,totalRowCount:z,virtualPaddingBottom:Gl,virtualPaddingTop:$l,visibleLeafColumnCount:Wl,visibleLeafColumns:kn})}),jsx(Di,{currentPagination:aa,DataTableFooter:$,effectivePageCount:Il,footerTotalRowCount:zl,handleFooterPageIndexChange:Ll,handleFooterPageSizeChange:Nl,labels:xe,pageCountKnown:Ol,rowsPerPageOptions:he,showFooter:Sr&&!Dt?.enabled,children:Q})]})})]})})}}function nd(e,a,n){let i;try{i=e();}catch(r){n?.({...a,error:r});return}Promise.resolve(i).catch(r=>{n?.({...a,error:r});});}function Ne(e,a,n){let i=T.useCallback(r=>{a?.(r),n?.(l=>({...l,[e]:r}));},[e,a,n]);return a||n?i:void 0}function od(e,a){let n=T.useRef(new Set);T.useEffect(()=>{if(!(!e||!id()))for(let i of Object.keys(a))e[i]===void 0||!a[i]||n.current.has(i)||(n.current.add(i),console.warn(`[data-table-pro] Both state.${i} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function id(){return globalThis.process?.env?.NODE_ENV!=="production"}function rd(e){return {sorting:e.sorting.map(a=>({...a})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(a=>({...a})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},grouping:[...e.grouping??[]],columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},rowPinning:{top:e.rowPinning.top?[...e.rowPinning.top]:void 0,bottom:e.rowPinning.bottom?[...e.rowPinning.bottom]:void 0},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function lr(e,a,n){if(!e)return false;let i=a==="row"?"data-row-id":"data-column-id",r=Array.from(e.querySelectorAll(`[${i}]`)).find(l=>l.getAttribute(i)===n);return r?(r.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}function Qn(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement:false}export{Ci as a,Di as b,yi as c,Si as d,Re as e,Mi as f,Oi as g,Hi as h,qc as i,td as j};//# sourceMappingURL=chunk-I3CW6DTA.js.map -//# sourceMappingURL=chunk-I3CW6DTA.js.map \ No newline at end of file diff --git a/dist/chunk-I3CW6DTA.js.map b/dist/chunk-I3CW6DTA.js.map deleted file mode 100644 index 7d70021..0000000 --- a/dist/chunk-I3CW6DTA.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-search-index.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/use-data-table-performance-diagnostics.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","scrollbarVisibility","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","wi","renderCardView","rows","options","jsx","jsxs","cn","LazyDataTableVirtualCardPanel","Ut","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableGrouping","enableToolbarColumnChooser","enableToolbarFilterChips","enableToolbarResetLayout","enableToolbarSavedViews","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","reorderColumn","onResetColumnLayout","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","onViewModeChange","openFileDialog","selectedRowIds","selectedRows","selectionActions","savedViews","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","name","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","editErrors","enableRowPinning","hasTreeExpansion","isSavingEdit","isEditDirty","includeFillSpacer","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","Kt","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","item","defs","expansionColumnSize","UTILITY_COLUMN_SIZE","canExpandTree","canExpandDetail","isTreeExpanded","isDetailExpanded","IconChevronDown","toggleDataTableExpandedState","selectsFilteredRows","selectableRows","allSelected","someSelected","checked","event","column","decorateFilterableColumn","position","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","Ia","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","za","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","Pi","nextPageIndex","useDataTableSearchIndex","Ei","valuesByRow","filterValue","query","normalizeDataTableSearchText","original","valuesByColumn","text","useDataTableInstance","autoResetPageIndex","columnGroupPaths","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentRowPinning","currentColumnSizing","currentExpanded","currentGrouping","currentSorting","currentViewMode","defaultColumn","effectiveColumnVisibility","enableColumnResizing","enableMultiRowSelection","enableSubRowSelection","getRowCanSelect","getRowCanExpand","getSubRows","aggregationFns","groupedColumnMode","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleRowPinningChange","handleColumnVisibilityChange","handleExpandedChange","handleGroupingChange","keepPinnedRows","manualFiltering","manualGrouping","manualExpanding","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","paginateExpandedRows","filterFromLeafRows","maxLeafRowFilterDepth","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","cachedGlobalFilterFn","generatedColumnIds","Le","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","effectiveRowPinning","availableRowIds","visitRows","subRows","top","topIds","bottom","tableState","handlePaginationChange","handleColumnSizingChange","facetingNeeds","uniqueValues","minMaxValues","useReactTable","getCoreRowModel","getFilteredRowModel","getFacetedRowModel","getFacetedUniqueValues","getFacetedMinMaxValues","getGroupedRowModel","getSortedRowModel","getExpandedRowModel","getPaginationRowModel","visibleLeafColumns","sourceColumnId","targetColumnId","canReorderDataTableColumn","defaultOrder","nextOrder","moveColumnInOrder","topPinnedRows","bottomPinnedRows","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","$a","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","rowPinning","validateRowPinning","isDataTableDensity","entry","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","ot","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","grouping","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onRowPinningChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onGroupingChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","ee","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentRowPinning","setCurrentColumnSizing","setCurrentViewMode","setCurrentGrouping","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","deferredSearchValue","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","currentRows","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","Da","ids","hasExplicitDataTableColumnSize","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","canSelect","canMultiSelect","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Ki","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","LazyToolbarDataOperations","ta","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasToolbarOperationsMenu","activeColumnFilters","filter","hasColumnFilterValue","toolbarOperationsUi","renderToolbarDataOperations","placement","groupableColumns","groupedColumns","id","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","IconSearch","collapsesToIcon","button","context","disabled","IconAdjustmentsHorizontal","isGrouped","IconList","IconLayoutGrid","ToolbarColumnFilterControl","groupingIndex","moveGrouping","nextIndex","nextGrouping","groupingId","facetQuery","setFacetQuery","range","normalizeToolbarRangeValue","inputType","fromLabel","toLabel","parseRangeInputValue","isBoolean","isFaceted","booleanOptions","visibleOptions","selectedValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","Qt","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","ya","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","configuredFacetOptions","facetedMinMax","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","useDataTablePerformanceDiagnostics","wt","warned","isDevelopmentEnvironment","last","haveSameItems","warn","message","DataTableAutoPageSize","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","DataTableStateOverlay","createDataTableStateOverlay","autoPageSize","renderExpandedRow","enableColumnReordering","columnGroupHeaderHeight","clipboard","enableCellSelection","cellSelection","defaultCellSelection","onCellSelectionChange","gridCommands","toolbarDataOperations","unifiedState","onStateChange","apiRef","summaryRows","enablePrint","enableFullscreen","emptyState","stateOverlay","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","accessibility","interactiveGrid","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","toolbarSavedViewsVersion","setToolbarSavedViewsVersion","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","toolbarOperations","gridMode","currentCellSelection","setCurrentCellSelection","resolvedSorting","resolvedGrouping","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedRowPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleGroupingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleRowPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","usesLegacyDetailPanelState","resolvedDetailPanel","clearEditError","draftValues","setDraftValues","useRowEditing","rowEditingContext","tableScrollElement","viewportHeight","useDataTableScrollViewport","autoPageSizeConfig","handleAutoPageSizeChange","autoPageSizeEnabled","print","toggleFullscreen","isFullscreen","setIsFullscreen","update","handleSelectedFiles","files","visibleDataColumns","getDataTableColumnGroupPaths","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","configuredEmptyState","guardedStateOverlay","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","toolbarSavedViews","handleToolbarCreateSavedView","handleToolbarRenameSavedView","handleToolbarDeleteSavedView","deleted","exportCsvFromApi","copyToClipboard","copyDataTableToClipboard","pinRow","unpinRow","scrollDataTableElementIntoView","isDataTableEditableClipboardTarget","command","paste","parseDataTableClipboardText","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","container","kind","attribute"],"mappings":"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","file":"chunk-I3CW6DTA.js","sourcesContent":["import * as React from \"react\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n scrollbarVisibility,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
\n {emptyNode ?? (\n \n )}\n
\n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n
\n \n {stateOverlayNode}\n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
\n {showFooter ? (\n \n ) : null}\n {children}\n
\n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport type {\n DataTableLabels,\n DataTableProps,\n DataTableSavedView,\n} from \"../types\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRowIds: Array;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n savedViews: Array;\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n reorderColumn,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n onViewModeChange,\n openFileDialog,\n selectedRowIds,\n selectedRows,\n selectionActions,\n savedViews,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
\n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n enableGrouping={enableGrouping}\n enableToolbarColumnChooser={enableToolbarColumnChooser}\n enableToolbarFilterChips={enableToolbarFilterChips}\n enableToolbarResetLayout={enableToolbarResetLayout}\n enableToolbarSavedViews={enableToolbarSavedViews}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n onResetColumnLayout={onResetColumnLayout}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n savedViews={savedViews}\n table={table}\n />\n
\n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n filterFrom: \"From\",\n filterTo: \"To\",\n filterTrue: \"Yes\",\n filterFalse: \"No\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectAllFilteredRows: \"Select all filtered rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n expandRowDetails: \"Expand row details\",\n collapseRowDetails: \"Collapse row details\",\n exportCsv: \"Export CSV\",\n print: \"Print table\",\n enterFullscreen: \"Enter fullscreen\",\n exitFullscreen: \"Exit fullscreen\",\n errorTitle: \"Unable to load this table\",\n errorDescription: \"Try again or check your connection.\",\n retry: \"Retry\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n pinRowToTop: \"Pin row to top\",\n pinRowToBottom: \"Pin row to bottom\",\n unpinRow: \"Unpin row\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n grouping: \"Grouping\",\n groupBy: (columnLabel) => `Group by ${columnLabel}`,\n ungroup: (columnLabel) => `Ungroup ${columnLabel}`,\n removeGrouping: (columnLabel) => `Remove ${columnLabel} grouping`,\n moveGroupingEarlier: (columnLabel) => `Move ${columnLabel} grouping earlier`,\n moveGroupingLater: (columnLabel) => `Move ${columnLabel} grouping later`,\n facetSearch: (columnLabel) => `Search ${columnLabel} options`,\n searchColumns: \"Search columns\",\n showAllColumns: \"Show all columns\",\n hideAllColumns: \"Hide all columns\",\n moveColumnEarlier: (columnLabel) => `Move ${columnLabel} earlier`,\n moveColumnLater: (columnLabel) => `Move ${columnLabel} later`,\n resetColumnLayout: \"Reset column layout\",\n savedViews: \"Saved views\",\n createSavedView: \"Create saved view\",\n savedViewName: \"View name\",\n applySavedView: (name) => `Apply saved view ${name}`,\n renameSavedView: (name) => `Rename saved view ${name}`,\n deleteSavedView: (name) => `Delete saved view ${name}`,\n saveSavedView: \"Save view\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type {\n ColumnDef,\n ExpandedState,\n OnChangeFn,\n RowPinningPosition,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n editErrors,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n includeFillSpacer = false,\n labels,\n lastSelectedRowIdRef,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n editErrors: Record;\n enableRowSelection: boolean;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n hasTreeExpansion: boolean;\n isSavingEdit: boolean;\n isEditDirty: boolean;\n includeFillSpacer?: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n detailPanel: DataTableDetailPanel | undefined;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n rowSelectionSelectAllScope: NonNullable<\n DataTableProps[\"rowSelectionSelectAllScope\"]\n >;\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows\n .slice(from, to + 1)\n .filter(\n (item) => item.getCanSelect() && item.getCanMultiSelect(),\n )) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (hasTreeExpansion || detailPanel) {\n const expansionColumnSize =\n hasTreeExpansion && detailPanel ? 80 : UTILITY_COLUMN_SIZE;\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: expansionColumnSize,\n minSize: expansionColumnSize,\n maxSize: expansionColumnSize,\n header: () => {labels.expandRow},\n cell: ({ row, table }) => {\n const canExpandTree = hasTreeExpansion && row.getCanExpand();\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(row.original) ?? true),\n );\n if (!canExpandTree && !canExpandDetail) {\n return null;\n }\n\n const isTreeExpanded = row.getIsExpanded();\n const isDetailExpanded =\n detailExpanded === true || Boolean(detailExpanded[row.id]);\n return (\n
\n {canExpandTree ? (\n row.toggleExpanded()}\n >\n \n \n ) : null}\n {canExpandDetail ? (\n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n table.getCoreRowModel().flatRows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n ) : null}\n
\n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => {\n const selectsFilteredRows = rowSelectionSelectAllScope === \"filtered\";\n const selectableRows = (selectsFilteredRows\n ? table.getFilteredRowModel().flatRows\n : table.getRowModel().flatRows\n ).filter((row) => row.getCanSelect() && row.getCanMultiSelect());\n const allSelected =\n selectableRows.length > 0 &&\n selectableRows.every((row) => row.getIsSelected());\n const someSelected = selectableRows.some((row) => row.getIsSelected());\n const label = selectsFilteredRows\n ? (labels.selectAllFilteredRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllFilteredRows)\n : (labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows);\n\n if (selectableRows.length === 0) {\n return {label};\n }\n\n return (\n
\n {\n table.setRowSelection((current) => {\n const next = { ...current };\n for (const row of selectableRows) {\n if (checked === true) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n }}\n aria-label={label}\n />\n
\n );\n },\n cell: ({ row }) => (\n
\n ) => {\n if (\n !event.shiftKey ||\n !lastSelectedRowIdRef.current ||\n !row.getCanMultiSelect()\n ) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
\n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (includeFillSpacer) {\n defs.push({\n id: \"__spacer__\",\n cell: () => null,\n header: () => null,\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enablePinning: false,\n enableResizing: false,\n enableSorting: false,\n minSize: 0,\n size: 0,\n });\n }\n\n if (rowActions.length || editableRows || enableRowPinning) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
\n {editErrors._row ? (\n \n {editErrors._row}\n \n ) : null}\n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
\n );\n }\n\n return (\n
\n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n rowPinning={\n enableRowPinning\n ? {\n canPin: row.getCanPin(),\n position: row.getIsPinned(),\n pin: (position) => row.pin(position),\n }\n : undefined\n }\n />\n
\n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n detailExpanded,\n detailPanel,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n includeFillSpacer,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport type { FilterFn, Row } from \"@tanstack/react-table\";\nimport { normalizeDataTableSearchText } from \"./data-table-utils\";\n\n/**\n * Caches each searchable cell against the application-owned row object and\n * stable column id. WeakMap entries disappear with immutable rows and never\n * retain removed data. Mutable rows are deliberately unsupported because a\n * cache cannot safely observe deep changes without defeating its purpose.\n */\nexport function useDataTableSearchIndex(\n) {\n // eslint-disable-next-line react-hooks/immutability -- This weak cache is deliberately populated by TanStack's filter pass, never read during React render.\n return React.useMemo>(() => {\n const valuesByRow = new WeakMap>();\n\n return (row: Row, columnId: string, filterValue: unknown) => {\n const query = normalizeDataTableSearchText(filterValue);\n if (!query) {\n return true;\n }\n\n const original = row.original;\n if (typeof original !== \"object\" || original === null) {\n return normalizeDataTableSearchText(row.getValue(columnId)).includes(\n query,\n );\n }\n\n let valuesByColumn = valuesByRow.get(original);\n if (!valuesByColumn) {\n valuesByColumn = new Map();\n valuesByRow.set(original, valuesByColumn);\n }\n\n let text = valuesByColumn.get(columnId);\n if (text === undefined) {\n const value = row.getValue(columnId);\n text = normalizeDataTableSearchText(value);\n valuesByColumn.set(columnId, text);\n }\n\n return text.includes(query);\n };\n }, []);\n}\n","import * as React from \"react\";\nimport {\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport type {\n ColumnDef,\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n FilterFnOption,\n OnChangeFn,\n PaginationState,\n RowPinningState,\n Row,\n SortingState,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type { DataTableProps } from \"../types\";\nimport {\n canReorderDataTableColumn,\n getColumnId,\n getDataTableLeafColumns,\n isDataTableLoadingRow,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport type { DataTableColumnGroupPaths } from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\nimport { useDataTableSearchIndex } from \"./use-data-table-search-index\";\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableMultiRowSelection,\n enableRowPinning,\n enableRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleRowPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n handleGroupingChange,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnGroupPaths: DataTableColumnGroupPaths;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: ColumnPinningState;\n currentRowPinning: RowPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentGrouping: GroupingState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableMultiRowSelection: NonNullable<\n DataTableProps[\"enableMultiRowSelection\"]\n >;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n enableRowSelection: boolean;\n enableSubRowSelection: NonNullable<\n DataTableProps[\"enableSubRowSelection\"]\n >;\n getRowCanSelect: DataTableProps[\"getRowCanSelect\"];\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n aggregationFns: DataTableProps[\"aggregationFns\"];\n groupedColumnMode: DataTableProps[\"groupedColumnMode\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleRowPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n handleGroupingChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n keepPinnedRows: boolean;\n manualFiltering: boolean;\n manualGrouping: boolean;\n manualExpanding: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n paginateExpandedRows: DataTableProps[\"paginateExpandedRows\"];\n filterFromLeafRows: DataTableProps[\"filterFromLeafRows\"];\n maxLeafRowFilterDepth: DataTableProps[\"maxLeafRowFilterDepth\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}) {\n const cachedGlobalFilterFn = useDataTableSearchIndex();\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n left: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n right: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const effectiveRowPinning = React.useMemo(() => {\n const availableRowIds = new Set();\n const visitRows = (rows: Array) => {\n rows.forEach((row, index) => {\n availableRowIds.add(tableGetRowId(row, index));\n if (!isDataTableLoadingRow(row)) {\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n }\n });\n };\n visitRows(tableData);\n const top = (currentRowPinning.top ?? []).filter((rowId) =>\n availableRowIds.has(rowId),\n );\n const topIds = new Set(top);\n const bottom = (currentRowPinning.bottom ?? []).filter(\n (rowId) => availableRowIds.has(rowId) && !topIds.has(rowId),\n );\n return { top, bottom };\n }, [\n currentRowPinning.bottom,\n currentRowPinning.top,\n getSubRows,\n tableData,\n tableGetRowId,\n ]);\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n rowPinning: effectiveRowPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n effectiveRowPinning,\n globalFilterValue,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n const facetingNeeds = React.useMemo(\n () => {\n let uniqueValues = false;\n let minMaxValues = false;\n for (const { column } of getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n )) {\n uniqueValues ||= column.meta?.filter?.type === \"faceted\";\n minMaxValues ||= column.meta?.filter?.type === \"numberRange\";\n }\n return { minMaxValues, uniqueValues };\n },\n [tableColumns],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions.\n const table = useReactTable({\n data: tableData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(),\n getFacetedRowModel:\n (facetingNeeds.uniqueValues || facetingNeeds.minMaxValues) &&\n !manualFiltering\n ? getFacetedRowModel()\n : undefined,\n getFacetedUniqueValues:\n facetingNeeds.uniqueValues && !manualFiltering\n ? getFacetedUniqueValues()\n : undefined,\n getFacetedMinMaxValues:\n facetingNeeds.minMaxValues && !manualFiltering\n ? getFacetedMinMaxValues()\n : undefined,\n getGroupedRowModel:\n currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined,\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getExpandedRowModel:\n (getSubRows || currentGrouping.length) && !manualExpanding\n ? getExpandedRowModel()\n : undefined,\n getPaginationRowModel:\n manualPagination || infiniteScroll?.enabled\n ? undefined\n : getPaginationRowModel(),\n enableRowSelection: getRowCanSelect\n ? (row) => enableRowSelection && getRowCanSelect(row.original)\n : enableRowSelection,\n enableRowPinning:\n typeof enableRowPinning === \"function\"\n ? (row) => enableRowPinning(row.original)\n : enableRowPinning,\n keepPinnedRows,\n enableMultiRowSelection:\n typeof enableMultiRowSelection === \"function\"\n ? (row) => enableMultiRowSelection(row.original)\n : enableMultiRowSelection,\n enableSubRowSelection:\n typeof enableSubRowSelection === \"function\"\n ? (row) => enableSubRowSelection(row.original)\n : enableSubRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getSubRows,\n getRowCanExpand: getSubRows\n ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0\n : undefined,\n globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n column.columnDef.enableGlobalFilter !== false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualGrouping,\n manualFiltering,\n manualExpanding,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: setCurrentRowSelection,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onGroupingChange: handleGroupingChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleColumnPinningChange,\n onRowPinningChange: handleRowPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n aggregationFns,\n groupedColumnMode,\n });\n tableRef.current = table;\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n if (\n !canReorderDataTableColumn(\n sourceColumnId,\n targetColumnId,\n columnGroupPaths,\n )\n ) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [columnGroupPaths, currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const topPinnedRows = table.getTopRows();\n const bottomPinnedRows = table.getBottomRows();\n // Card rendering has no top/bottom table regions. Keep its original row\n // model intact rather than silently dropping pinned records.\n const renderedRows =\n currentViewMode === \"table\"\n ? table.getCenterRows()\n : table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\nimport type { RowPinningState } from \"@tanstack/react-table\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"rowPinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (rowPinning) {\n prefs.rowPinning = rowPinning;\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateRowPinning(value: unknown): RowPinningState | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n ExpandedState,\n GroupingState,\n PaginationState,\n RowPinningState,\n SortingState,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n rowPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n grouping,\n getSubRows,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onRowPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onGroupingChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n rowPinning: DataTableProps[\"rowPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n grouping: DataTableProps[\"grouping\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onRowPinningChange: DataTableProps[\"onRowPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onGroupingChange: DataTableProps[\"onGroupingChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentRowPinning, setCurrentRowPinning] =\n useControllableState({\n value: rowPinning,\n onChange: onRowPinningChange,\n defaultValue: () =>\n initialState?.rowPinning ?? persistedColumnPrefs.rowPinning ?? {\n top: [],\n bottom: [],\n },\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentGrouping, setCurrentGrouping] = useControllableState({\n value: grouping,\n onChange: onGroupingChange,\n defaultValue: () => initialState?.grouping ?? [],\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n // Keep input/callback state eager. Only the client row-model input is\n // deferred, so server/manual callbacks never wait behind a large filter.\n const deferredSearchValue = React.useDeferredValue(localSearchValue);\n const globalFilterValue = enableToolbarQueryFiltering\n ? manualFiltering\n ? localSearchValue\n : deferredSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n rowPinning: rowPinning === undefined ? currentRowPinning : undefined,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n const rows = new Map();\n const visitRows = (currentRows: Array) => {\n currentRows.forEach((row, index) => {\n rows.set(getRowId(row, index), row);\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n });\n };\n visitRows(visibleData);\n return rows;\n }, [getRowId, getSubRows, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n const selectedRowIds = React.useMemo(\n () =>\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [rowId] : [],\n ),\n [currentRowSelection],\n );\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { Column, ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n hasExplicitDataTableColumnSize,\n isUtilityColumnId,\n} from \"./data-table-utils\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (hasExplicitDataTableColumnSize(column)) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n return new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n }, [columnSizing, explicitlySizedColumnIds]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const columnMinWidth = configuredMinWidth;\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? 0)\n );\n }, 0);\n }, [\n columnLayouts,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { ExpandedState, OnChangeFn, Row } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport {\n isDataTableInteractiveTarget,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n detailPanel?: DataTableDetailPanel;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Button, Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(originalRow) ?? true),\n );\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls =\n enableRowSelection ||\n hasCardActions ||\n row.getCanExpand() ||\n canExpandDetail;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n depth: row.depth,\n canExpandSubRows: row.getCanExpand(),\n isSubRowsExpanded: row.getIsExpanded(),\n toggleSubRowsExpanded: () => row.toggleExpanded(),\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n nextValue,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n \n {isEditing ||\n !detailPanel ||\n !(detailExpanded === true || Boolean(detailExpanded[row.id]))\n ? null\n : (\n \n {detailPanel.render({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n )}\n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n }}\n />\n \n ) : null}\n {row.getCanExpand() ? (\n
\n row.toggleExpanded()}\n >\n \n \n
\n ) : null}\n {canExpandDetail ? (\n \n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n rows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n \n ) : null}\n
\n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
\n ) : null}\n
\n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n canSelect: boolean,\n canMultiSelect: boolean,\n) {\n if (!canSelect) {\n return rowSelection;\n }\n\n if (isSelected) {\n return canMultiSelect\n ? {\n ...rowSelection,\n [rowId]: true,\n }\n : { [rowId]: true };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
\n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
\n\n {totalRowCount !== undefined ? (\n
\n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
\n \n ) : null}\n\n
\n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n rowPinning,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n const canPin = rowPinning?.canPin ?? false;\n if (!actions.length && !allowEdit && !canPin) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && (actions.length || canPin) ? : null}\n {canPin ? (\n \n {rowPinning?.position ? (\n ) => {\n event.stopPropagation();\n rowPinning.pin(false);\n }}\n >\n {labels.unpinRow}\n \n ) : (\n <>\n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"top\");\n }}\n >\n {labels.pinRowToTop}\n \n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"bottom\");\n }}\n >\n {labels.pinRowToBottom}\n \n \n )}\n \n ) : null}\n {canPin && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSavedView,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nconst LazyToolbarDataOperations = React.lazy(\n () => import(\"./data-table-toolbar-operations\"),\n);\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string; count?: number; disabled?: boolean }>;\n searchable?: boolean;\n searchPlaceholder?: string;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n selectedRowIds: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: Required;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n savedViews: Array;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: TanStackTable;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n selectedRowIds,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n savedViews,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n reorderColumn,\n table,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRowIds.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle ||\n enableGrouping ||\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews);\n const hasToolbarOperationsMenu =\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews;\n const activeColumnFilters = columnFilters.filter((filter) =>\n hasColumnFilterValue(filter.value),\n );\n const toolbarOperationsUi = {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n };\n const renderToolbarDataOperations = (placement: \"menu\" | \"chips\") => (\n \n }\n onResetColumnLayout={onResetColumnLayout}\n savedViews={savedViews}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n toolbarQueryValue={toolbarQueryValue}\n onToolbarQueryValueChange={onToolbarQueryValueChange}\n activeColumnFilters={activeColumnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n />\n \n );\n const groupableColumns = table\n .getAllLeafColumns()\n .filter(\n (column) =>\n !column.id.startsWith(\"__\") &&\n column.getCanGroup(),\n );\n const groupedColumns = table.getState().grouping.flatMap((id) => {\n const column = table.getColumn(id);\n return column ? [column] : [];\n });\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRowIds.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
\n {showTitle && (title || description) ? (\n
\n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

\n ) : null}\n
\n ) : null}\n\n
\n \n {showSearch ? (\n <>\n
\n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
\n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
\n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
\n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
\n ) : null}\n\n
\n\n \n {selectedRowIds.length ? (\n \n {selectedRowCountLabel}\n
\n ) : null}\n {selectedRowIds.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const context = {\n rows: selectedRows,\n rowIds: selectedRowIds,\n };\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows, context)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick(context);\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {hasToolbarOperationsMenu\n ? renderToolbarDataOperations(\"menu\")\n : null}\n {!enableToolbarColumnChooser &&\n columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning && !enableToolbarColumnChooser ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n {enableGrouping && groupableColumns.length ? (\n <>\n \n {labels.grouping}\n \n {groupableColumns.map((column) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const isGrouped = column.getIsGrouped();\n return (\n {\n column.toggleGrouping();\n }}\n >\n {isGrouped\n ? labels.ungroup(columnLabel)\n : labels.groupBy(columnLabel)}\n \n );\n })}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
\n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n {enableToolbarFilterChips\n ? renderToolbarDataOperations(\"chips\")\n : null}\n\n {enableGrouping && groupedColumns.length ? (\n \n {labels.grouping}:\n {groupedColumns.map((column, groupingIndex) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const moveGrouping = (nextIndex: number) => {\n const nextGrouping = [...table.getState().grouping];\n const [groupingId] = nextGrouping.splice(groupingIndex, 1);\n if (groupingId === undefined) return;\n nextGrouping.splice(nextIndex, 0, groupingId);\n table.setGrouping(nextGrouping);\n };\n return (\n \n moveGrouping(groupingIndex - 1)}\n aria-label={labels.moveGroupingEarlier(columnLabel)}\n >\n \n \n column.toggleGrouping()}\n aria-label={labels.removeGrouping(columnLabel)}\n >\n {columnLabel} ×\n \n moveGrouping(groupingIndex + 1)}\n aria-label={labels.moveGroupingLater(columnLabel)}\n >\n \n \n \n );\n })}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: Required;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n const [facetQuery, setFacetQuery] = React.useState(\"\");\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n if (filter.type === \"numberRange\" || filter.type === \"dateRange\") {\n const range = normalizeToolbarRangeValue(filter.value);\n const inputType = filter.type === \"numberRange\" ? \"number\" : \"date\";\n const fromLabel =\n labels.filterFrom ?? DATA_TABLE_DEFAULT_LABELS.filterFrom;\n const toLabel = labels.filterTo ?? DATA_TABLE_DEFAULT_LABELS.filterTo;\n\n return (\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n from: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${fromLabel}`}\n />\n {fromLabel}\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n to: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${toLabel}`}\n />\n {toLabel}\n \n \n );\n }\n\n const isBoolean = filter.type === \"boolean\";\n const isFaceted = filter.type === \"faceted\";\n const booleanOptions = [\n {\n label:\n filter.trueLabel ??\n labels.filterTrue ??\n DATA_TABLE_DEFAULT_LABELS.filterTrue,\n value: \"true\",\n },\n {\n label:\n filter.falseLabel ??\n labels.filterFalse ??\n DATA_TABLE_DEFAULT_LABELS.filterFalse,\n value: \"false\",\n },\n ];\n const options: DataTableToolbarColumnFilter[\"options\"] = isBoolean\n ? booleanOptions\n : filter.options;\n const visibleOptions =\n isFaceted && facetQuery\n ? options.filter((option) =>\n option.label.toLocaleLowerCase().includes(facetQuery.toLocaleLowerCase()),\n )\n : options;\n const selectedValue =\n typeof filter.value === \"string\" || typeof filter.value === \"boolean\"\n ? String(filter.value)\n : \"\";\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : selectedValue\n ? [selectedValue]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (options.find(\n (option) => option.value === String(selectedValues[0]),\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n {isFaceted && filter.searchable !== false ? (\n
\n \n ) => {\n setFacetQuery(event.target.value);\n }}\n placeholder={filter.searchPlaceholder ?? labels.facetSearch(filter.label)}\n aria-label={labels.facetSearch(filter.label)}\n />\n \n \n \n \n
\n ) : null}\n \n {filter.type === \"select\" || isBoolean || isFaceted ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {visibleOptions.map((option) => (\n {\n if (filter.type === \"select\" || isBoolean) {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n {option.count !== undefined ? (\n {option.count}\n ) : null}\n \n ))}\n \n
\n
\n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasColumnFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeToolbarRangeValue(value: unknown): {\n from?: number | string;\n to?: number | string;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"number\" || typeof range.from === \"string\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"number\" || typeof range.to === \"string\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction parseRangeInputValue(value: string, inputType: \"number\" | \"date\") {\n if (!value) {\n return undefined;\n }\n\n return inputType === \"number\" ? Number(value) : value;\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"grouping\",\n \"columnOrder\",\n \"columnPinning\",\n \"rowPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const grouping = validateStringArray(value.grouping);\n if (selected.has(\"grouping\") && grouping) state.grouping = grouping;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (selected.has(\"rowPinning\") && rowPinning) {\n state.rowPinning = rowPinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\" || slice === \"rowPinning\") {\n return {\n ...(slice === \"columnPinning\"\n ? {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n }\n : {\n top: Array.isArray(value.top)\n ? [...(value.top as Array)]\n : undefined,\n bottom: Array.isArray(value.bottom)\n ? [...(value.bottom as Array)]\n : undefined,\n }),\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateRowPinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnPinningState,\n OnChangeFn,\n Table as TanStackTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const configuredFacetOptions = filter.faceting?.options;\n const facetedMinMax =\n filter.type === \"numberRange\"\n ? table.getColumn(id)?.getFacetedMinMaxValues()\n : undefined;\n const rawOptions =\n filter.type === \"faceted\" && configuredFacetOptions\n ? typeof configuredFacetOptions === \"function\"\n ? configuredFacetOptions({ rows: visibleData })\n : configuredFacetOptions\n : filter.type === \"faceted\"\n ? Array.from(table.getColumn(id)?.getFacetedUniqueValues() ?? []).map(\n ([value, count]) => ({\n label:\n filter.faceting?.getOptionLabel?.(value as never) ??\n String(value),\n value: String(value),\n count,\n }),\n )\n : typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n searchable: filter.faceting?.searchable,\n searchPlaceholder: filter.faceting?.searchPlaceholder,\n trueLabel: filter.trueLabel,\n falseLabel: filter.falseLabel,\n min: filter.min ?? facetedMinMax?.[0],\n max: filter.max ?? facetedMinMax?.[1],\n step: filter.step,\n },\n ];\n });\n }, [\n columns,\n currentColumnFilters,\n enableColumnFilters,\n table,\n visibleData,\n ]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport type { DataTableProps } from \"../types\";\n\n/** Development-only guardrails for identities used by row models and caches. */\nexport function useDataTablePerformanceDiagnostics({\n columns,\n data,\n getRowId,\n}: Pick, \"columns\" | \"data\" | \"getRowId\">) {\n const previous = React.useRef({ columns, data, getRowId });\n const warned = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!isDevelopmentEnvironment()) {\n return;\n }\n\n const last = previous.current;\n if (\n last.data !== data &&\n haveSameItems(last.data, data) &&\n !warned.current.has(\"data\")\n ) {\n warn(\n warned.current,\n \"data\",\n \"The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused.\",\n );\n }\n if (\n last.columns !== columns &&\n haveSameItems(last.columns, columns) &&\n !warned.current.has(\"columns\")\n ) {\n warn(\n warned.current,\n \"columns\",\n \"The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused.\",\n );\n }\n if (last.getRowId !== getRowId && !warned.current.has(\"getRowId\")) {\n warn(\n warned.current,\n \"getRowId\",\n \"getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.\",\n );\n }\n\n const ids = new Set();\n for (let index = 0; index < data.length; index += 1) {\n const id = getRowId(data[index]!, index);\n if (ids.has(id) && !warned.current.has(\"duplicate-row-id\")) {\n warn(\n warned.current,\n \"duplicate-row-id\",\n `Duplicate row id \"${id}\" detected. Row ids must be unique and immutable.`,\n );\n break;\n }\n ids.add(id);\n }\n previous.current = { columns, data, getRowId };\n }, [columns, data, getRowId]);\n}\n\nfunction haveSameItems(previous: Array, next: Array) {\n return (\n previous.length === next.length &&\n previous.every((item, index) => Object.is(item, next[index]))\n );\n}\n\nfunction warn(warned: Set, key: string, message: string) {\n warned.add(key);\n console.warn(`[data-table-pro] ${message}`);\n}\n\nfunction isDevelopmentEnvironment() {\n return (\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV !== \"production\"\n );\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type {\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableCellSelection,\n DataTableLabels,\n DataTableProps,\n DataTableState,\n DataTableStateOverlay as DataTableStateOverlayConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableColumnGroupPaths,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n hasExplicitDataTableColumnSize,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\nimport { useDataTablePerformanceDiagnostics } from \"./use-data-table-performance-diagnostics\";\n\nconst DataTableAutoPageSize = React.lazy(\n () => import(\"./data-table-auto-page-size\"),\n);\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const DataTableStateOverlay = React.lazy(async () => {\n const { createDataTableStateOverlay } = await import(\n \"./data-table-state-overlay\"\n );\n return { default: createDataTableStateOverlay(ui) };\n }) as unknown as (props: {\n labels: DataTableLabels;\n overlay: DataTableStateOverlayConfig;\n rows: Array;\n toolbarQueryValue: string;\n }) => React.ReactElement | null;\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n grouping,\n onGroupingChange,\n manualGrouping = false,\n enableGrouping = false,\n groupedColumnMode = \"reorder\",\n aggregationFns,\n pageIndex,\n pageSize,\n autoPageSize = false,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableSubRowSelection = true,\n getRowCanSelect,\n rowSelectionSelectAllScope = \"page\",\n expanded,\n onExpandedChange,\n getSubRows,\n manualExpanding = false,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n detailPanel,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnGroupHeaderHeight,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n rowPinning,\n onRowPinningChange,\n enableRowPinning = false,\n keepPinnedRows = true,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n clipboard,\n enableCellSelection = false,\n cellSelection,\n defaultCellSelection,\n onCellSelectionChange,\n gridCommands,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n toolbarDataOperations,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n enablePrint = false,\n enableFullscreen = false,\n emptyState,\n stateOverlay,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n scrollbarVisibility,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n accessibility,\n interactiveGrid,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const [toolbarSavedViewsVersion, setToolbarSavedViewsVersion] =\n React.useState(0);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n useDataTablePerformanceDiagnostics({ columns, data, getRowId });\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const toolbarOperations =\n toolbarDataOperations === true\n ? { columnChooser: true, savedViews: true, resetLayout: true }\n : toolbarDataOperations === false\n ? {}\n : (toolbarDataOperations ?? {});\n const gridMode =\n accessibility?.mode === \"grid\" ||\n interactiveGrid === true ||\n typeof interactiveGrid === \"object\";\n const [currentCellSelection, setCurrentCellSelection] =\n useControllableState({\n defaultValue: defaultCellSelection ?? null,\n onChange: onCellSelectionChange,\n value: cellSelection,\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedGrouping = grouping ?? unifiedState?.grouping;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedRowPinning = rowPinning ?? unifiedState?.rowPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n rowPinning: rowPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n grouping: grouping !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleGroupingPropChange = useDataTableStateSliceChange(\n \"grouping\",\n onGroupingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleRowPinningPropChange = useDataTableStateSliceChange(\n \"rowPinning\",\n onRowPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n rowPinning: resolvedRowPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n grouping: resolvedGrouping,\n getSubRows,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onRowPinningChange: handleRowPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onGroupingChange: handleGroupingPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const usesLegacyDetailPanelState = Boolean(\n renderExpandedRow && !detailPanel && !getSubRows,\n );\n const resolvedDetailPanel =\n detailPanel ??\n (renderExpandedRow\n ? {\n getRowCanExpand: getSubRows ? undefined : getRowCanExpand,\n render: renderExpandedRow,\n }\n : undefined);\n const [currentDetailExpanded, setCurrentDetailExpanded] =\n useControllableState({\n defaultValue: () =>\n usesLegacyDetailPanelState ? (initialState?.expanded ?? {}) : {},\n onChange: usesLegacyDetailPanelState\n ? setCurrentExpanded\n : resolvedDetailPanel?.onExpandedChange,\n value: usesLegacyDetailPanelState\n ? currentExpanded\n : resolvedDetailPanel?.expanded,\n });\n const {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const rowEditingContext = React.useMemo(\n () => ({\n cancel: cancelEditing,\n cancelOnEscape: editableRows?.cancelOnEscape !== false,\n clearError: clearEditError,\n commit: (row: TData) => {\n void saveEdit(row);\n },\n commitOnEnter: editableRows?.commitOnEnter !== false,\n errors: editErrors,\n isDirty: isEditDirty,\n isPending: isSavingEdit,\n }),\n [\n cancelEditing,\n clearEditError,\n editableRows?.cancelOnEscape,\n editableRows?.commitOnEnter,\n editErrors,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n ],\n );\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const autoPageSizeConfig =\n typeof autoPageSize === \"object\" ? autoPageSize : undefined;\n const handleAutoPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (nextPageSize === currentPagination.pageSize) {\n return;\n }\n if (currentPagination.pageIndex !== 0) {\n handlePageIndexPropChange(0);\n }\n handlePageSizePropChange(nextPageSize);\n if (resolvedPageSize === undefined) {\n setLocalPagination({ pageIndex: 0, pageSize: nextPageSize });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n handlePageIndexPropChange,\n handlePageSizePropChange,\n resolvedPageSize,\n setLocalPagination,\n ],\n );\n const autoPageSizeEnabled =\n autoPageSize === true || autoPageSizeConfig !== undefined;\n const print = React.useCallback(() => {\n if (typeof window === \"undefined\" || typeof window.print !== \"function\") {\n return false;\n }\n window.print();\n return true;\n }, []);\n const toggleFullscreen = React.useCallback(async () => {\n const element = containerRef.current;\n if (!element || typeof document === \"undefined\") {\n return false;\n }\n if (document.fullscreenElement) {\n if (typeof document.exitFullscreen !== \"function\") return false;\n await document.exitFullscreen();\n return true;\n }\n if (typeof element.requestFullscreen !== \"function\") return false;\n await element.requestFullscreen();\n return true;\n }, []);\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n React.useEffect(() => {\n if (!enableFullscreen || typeof document === \"undefined\") return;\n const update = () => {\n setIsFullscreen(document.fullscreenElement === containerRef.current);\n };\n update();\n document.addEventListener(\"fullscreenchange\", update);\n return () => document.removeEventListener(\"fullscreenchange\", update);\n }, [enableFullscreen]);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const includeFillSpacer = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return false;\n }\n\n const visibleDataColumns = getDataTableLeafColumns(columns).filter(\n ({ column, index }) =>\n effectiveColumnVisibility[getColumnId(column, index)] !== false,\n );\n\n return (\n visibleDataColumns.length > 0 &&\n visibleDataColumns.every(({ column, index }) => {\n const columnId = getColumnId(column, index);\n return (\n hasExplicitDataTableColumnSize(column) ||\n Object.prototype.hasOwnProperty.call(\n currentColumnSizing,\n columnId,\n )\n );\n })\n );\n }, [\n columns,\n currentColumnSizing,\n effectiveColumnVisibility,\n layoutMode,\n ]);\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion: Boolean(getSubRows),\n isSavingEdit,\n isEditDirty,\n includeFillSpacer,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n detailPanel: resolvedDetailPanel,\n detailExpanded: currentDetailExpanded,\n onDetailExpandedChange: setCurrentDetailExpanded,\n rowSelectionSelectAllScope,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n const columnGroupPaths = React.useMemo(\n () => getDataTableColumnGroupPaths(columns),\n [columns],\n );\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowPinning,\n enableRowSelection,\n enableMultiRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleRowPinningChange: setCurrentRowPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n handleGroupingChange: setCurrentGrouping,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(getSubRows || resolvedDetailPanel),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.getState().columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const configuredEmptyState = stateOverlay?.empty ?? emptyState;\n const emptyNode =\n typeof configuredEmptyState === \"function\"\n ? configuredEmptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : configuredEmptyState;\n const guardedStateOverlay = React.useMemo(\n () =>\n stateOverlay\n ? {\n ...stateOverlay,\n onRetry: stateOverlay.onRetry\n ? () =>\n runAction(\n { source: \"retry\" },\n stateOverlay.onRetry!,\n )\n : undefined,\n }\n : undefined,\n [runAction, stateOverlay],\n );\n const stateOverlayNode = guardedStateOverlay?.error != null ? (\n \n \n \n ) : undefined;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n [\n ...effectiveToolbarActions,\n ...(enablePrint\n ? [\n {\n key: \"__print__\",\n label: resolvedLabels.print,\n placement: \"trailing\" as const,\n onClick: () => {\n print();\n },\n },\n ]\n : []),\n ...(enableFullscreen\n ? [\n {\n key: \"__fullscreen__\",\n label: isFullscreen\n ? resolvedLabels.exitFullscreen\n : resolvedLabels.enterFullscreen,\n placement: \"trailing\" as const,\n onClick: () => toggleFullscreen(),\n },\n ]\n : []),\n ].map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [\n effectiveToolbarActions,\n enableFullscreen,\n enablePrint,\n isFullscreen,\n print,\n resolvedLabels.enterFullscreen,\n resolvedLabels.exitFullscreen,\n resolvedLabels.print,\n runAction,\n toggleFullscreen,\n ],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n rowPinning: currentRowPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n table.setRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.grouping !== undefined) {\n table.setGrouping(nextState.grouping);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n table.setColumnPinning(nextState.columnPinning);\n }\n if (nextState.rowPinning !== undefined) {\n table.setRowPinning(nextState.rowPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n grouping: initialState?.grouping ?? [],\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const toolbarSavedViews = React.useMemo(() => {\n void toolbarSavedViewsVersion;\n return readDataTableSavedViews(savedViews);\n }, [savedViews, toolbarSavedViewsVersion]);\n const handleToolbarCreateSavedView = React.useCallback(\n (name: string) => {\n const view = createSavedView(name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [createSavedView],\n );\n const handleToolbarRenameSavedView = React.useCallback(\n (id: string, name: string) => {\n const view = renameSavedView(id, name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [renameSavedView],\n );\n const handleToolbarDeleteSavedView = React.useCallback(\n (id: string) => {\n const deleted = deleteSavedView(id);\n if (deleted) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return deleted;\n },\n [deleteSavedView],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n const copyToClipboard = React.useCallback<\n DataTableApi[\"copyToClipboard\"]\n >(\n async (options) => {\n const { copyDataTableToClipboard } = await import(\n \"./data-table-clipboard\"\n );\n return copyDataTableToClipboard({\n clipboard:\n options ??\n (clipboard?.copy === false\n ? false\n : currentCellSelection\n ? {\n ...(clipboard?.copy === true ? {} : clipboard?.copy),\n scope: \"cellSelection\",\n }\n : clipboard?.copy ?? true),\n cellSelection: currentCellSelection,\n table,\n });\n },\n [clipboard?.copy, currentCellSelection, table],\n );\n const pinRow = React.useCallback[\"pinRow\"]>(\n (rowId, position = \"top\") => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(position);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n const unpinRow = React.useCallback[\"unpinRow\"]>(\n (rowId) => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(false);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n pinRow,\n unpinRow,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n copyToClipboard,\n getCellSelection: () => currentCellSelection,\n setCellSelection: setCurrentCellSelection,\n clearCellSelection: () => setCurrentCellSelection(null),\n print,\n toggleFullscreen,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n copyToClipboard,\n currentCellSelection,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n pinRow,\n print,\n setCurrentCellSelection,\n unpinRow,\n toggleFullscreen,\n ],\n );\n\n return (\n \n {\n if (\n gridMode &&\n gridCommands &&\n (event.ctrlKey || event.metaKey) &&\n event.key.toLowerCase() === \"z\" &&\n !isDataTableEditableClipboardTarget(event.target)\n ) {\n const command = event.shiftKey ? gridCommands.redo : gridCommands.undo;\n if (command) {\n event.preventDefault();\n runAction(\n { source: event.shiftKey ? \"redo\" : \"undo\" },\n () => command({ cellSelection: currentCellSelection, table }),\n );\n }\n return;\n }\n if (\n !clipboard?.copy ||\n !(event.ctrlKey || event.metaKey) ||\n event.key.toLowerCase() !== \"c\" ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n event.preventDefault();\n runAction(\n { source: \"clipboardCopy\" },\n async () => {\n await copyToClipboard(\n clipboard.copy === true\n ? undefined\n : currentCellSelection &&\n typeof clipboard.copy === \"object\" &&\n !clipboard.copy.scope\n ? { ...clipboard.copy, scope: \"cellSelection\" }\n : clipboard.copy,\n );\n },\n );\n }}\n onPaste={(event) => {\n const paste = clipboard?.paste;\n if (\n !paste ||\n paste.enabled === false ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n const text = event.clipboardData.getData(\"text/plain\");\n if (!text) {\n return;\n }\n if (paste.preventDefault ?? true) {\n event.preventDefault();\n }\n runAction(\n { source: \"clipboardPaste\" },\n async () => {\n const { parseDataTableClipboardText } = await import(\n \"./data-table-clipboard\"\n );\n return paste.onPaste({\n table,\n text,\n values: parseDataTableClipboardText(text),\n });\n },\n );\n }}\n >\n {autoPageSizeEnabled ? (\n \n \n \n ) : null}\n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange:\n | ((value: Exclude) => void)\n | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: Exclude) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n grouping: [...(state.grouping ?? [])],\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n rowPinning: {\n top: state.rowPinning.top ? [...state.rowPinning.top] : undefined,\n bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined,\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n\nfunction isDataTableEditableClipboardTarget(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n return (\n target.isContentEditable ||\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-W7VNQT7O.js b/dist/chunk-IZQDLLCH.js similarity index 86% rename from dist/chunk-W7VNQT7O.js rename to dist/chunk-IZQDLLCH.js index a9728aa..c3ac5cd 100644 --- a/dist/chunk-W7VNQT7O.js +++ b/dist/chunk-IZQDLLCH.js @@ -1,2 +1,2 @@ -import {b,e}from'./chunk-PRDXFLFB.js';import*as i from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function V(t){let{renderedRows:n,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:w=0,virtualization:d}=t,l=typeof d=="object"?d:void 0,c=!T&&(d===true||l?.enabled===true),a=c&&!!s&&w>0,f=i.useCallback(e=>n[e]?.id??e,[n]),o=useVirtualizer({count:c?n.length:0,enabled:a,estimateSize:()=>l?.estimateRowHeight??48,getItemKey:f,getScrollElement:()=>s??null,overscan:l?.overscan??8}),u=a?o.getVirtualItems():[],h=a?u.flatMap(e=>{let r=n[e.index];return r?[{row:r,rowIndex:e.index}]:[]}):n.slice(0,Math.max(1,Math.floor(l?.fallbackRowCount??20))).map((e,r)=>({row:e,rowIndex:r})),m=a?u[0]?.start??0:0,P=a?Math.max(0,o.getTotalSize()-(u.at(-1)?.end??m)):0,v=i.useCallback(e=>{!t.gridMode||!a||o.scrollToIndex(Math.max(0,e-t.topPinnedRows.length),{align:"auto"});},[t.gridMode,t.topPinnedRows.length,o,a]),M=i.useCallback(e=>{e&&o.measureElement(e);},[o]);return jsx(b,{measureRow:a?M:void 0,children:jsx(e,{...t,rowsToRender:h,virtualPaddingBottom:P,virtualPaddingTop:m,onGridActiveRowIndexChange:v})})}export{V as a};//# sourceMappingURL=chunk-W7VNQT7O.js.map -//# sourceMappingURL=chunk-W7VNQT7O.js.map \ No newline at end of file +import {b,e}from'./chunk-YKVWP3UJ.js';import*as i from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsx}from'react/jsx-runtime';function V(t){let{renderedRows:n,shouldRenderInitialLoading:T,tableScrollElement:s,viewportHeight:w=0,virtualization:d}=t,l=typeof d=="object"?d:void 0,c=!T&&(d===true||l?.enabled===true),a=c&&!!s&&w>0,f=i.useCallback(e=>n[e]?.id??e,[n]),o=useVirtualizer({count:c?n.length:0,enabled:a,estimateSize:()=>l?.estimateRowHeight??48,getItemKey:f,getScrollElement:()=>s??null,overscan:l?.overscan??8}),u=a?o.getVirtualItems():[],h=a?u.flatMap(e=>{let r=n[e.index];return r?[{row:r,rowIndex:e.index}]:[]}):n.slice(0,Math.max(1,Math.floor(l?.fallbackRowCount??20))).map((e,r)=>({row:e,rowIndex:r})),m=a?u[0]?.start??0:0,P=a?Math.max(0,o.getTotalSize()-(u.at(-1)?.end??m)):0,v=i.useCallback(e=>{!t.gridMode||!a||o.scrollToIndex(Math.max(0,e-t.topPinnedRows.length),{align:"auto"});},[t.gridMode,t.topPinnedRows.length,o,a]),M=i.useCallback(e=>{e&&o.measureElement(e);},[o]);return jsx(b,{measureRow:a?M:void 0,children:jsx(e,{...t,rowsToRender:h,virtualPaddingBottom:P,virtualPaddingTop:m,onGridActiveRowIndexChange:v})})}export{V as a};//# sourceMappingURL=chunk-IZQDLLCH.js.map +//# sourceMappingURL=chunk-IZQDLLCH.js.map \ No newline at end of file diff --git a/dist/chunk-W7VNQT7O.js.map b/dist/chunk-IZQDLLCH.js.map similarity index 99% rename from dist/chunk-W7VNQT7O.js.map rename to dist/chunk-IZQDLLCH.js.map index 9483f4c..5897b40 100644 --- a/dist/chunk-W7VNQT7O.js.map +++ b/dist/chunk-IZQDLLCH.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","handleGridActiveRowIndexChange","gridRowIndex","measureRow","element","jsx","DataTableVirtualRowMeasurementProvider","DataTableTablePanel"],"mappings":"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","file":"chunk-W7VNQT7O.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\nimport { DataTableVirtualRowMeasurementProvider } from \"./data-table-virtual-row-measurement\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n const handleGridActiveRowIndexChange = React.useCallback(\n (gridRowIndex: number) => {\n if (!props.gridMode || !shouldUseVirtualRows) return;\n rowVirtualizer.scrollToIndex(\n Math.max(0, gridRowIndex - props.topPinnedRows.length),\n { align: \"auto\" },\n );\n },\n [\n props.gridMode,\n props.topPinnedRows.length,\n rowVirtualizer,\n shouldUseVirtualRows,\n ],\n );\n const measureRow = React.useCallback>(\n (element) => {\n if (element) {\n rowVirtualizer.measureElement(element);\n }\n },\n [rowVirtualizer],\n );\n\n return (\n \n \n \n );\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/data-table-virtual-table-panel.tsx"],"names":["DataTableVirtualTablePanel","props","renderedRows","shouldRenderInitialLoading","tableScrollElement","viewportHeight","virtualization","virtualizationConfig","enableVirtualization","shouldUseVirtualRows","getItemKey","index","rowVirtualizer","useVirtualizer","virtualItems","rowsToRender","virtualItem","row","rowIndex","virtualPaddingTop","virtualPaddingBottom","handleGridActiveRowIndexChange","gridRowIndex","measureRow","element","jsx","DataTableVirtualRowMeasurementProvider","DataTableTablePanel"],"mappings":"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","file":"chunk-IZQDLLCH.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\nimport { DataTableVirtualRowMeasurementProvider } from \"./data-table-virtual-row-measurement\";\n\nexport function DataTableVirtualTablePanel(\n props: DataTableTablePanelProps,\n) {\n const {\n renderedRows,\n shouldRenderInitialLoading,\n tableScrollElement,\n viewportHeight = 0,\n virtualization,\n } = props;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const enableVirtualization =\n !shouldRenderInitialLoading &&\n (virtualization === true || virtualizationConfig?.enabled === true);\n const shouldUseVirtualRows =\n enableVirtualization && Boolean(tableScrollElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index]?.id ?? index,\n [renderedRows],\n );\n\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const rowVirtualizer = useVirtualizer({\n count: enableVirtualization ? renderedRows.length : 0,\n enabled: shouldUseVirtualRows,\n estimateSize: () => virtualizationConfig?.estimateRowHeight ?? 48,\n getItemKey,\n getScrollElement: () => tableScrollElement ?? null,\n overscan: virtualizationConfig?.overscan ?? 8,\n });\n const virtualItems = shouldUseVirtualRows\n ? rowVirtualizer.getVirtualItems()\n : [];\n const rowsToRender = shouldUseVirtualRows\n ? virtualItems.flatMap((virtualItem) => {\n const row = renderedRows[virtualItem.index];\n return row ? [{ row, rowIndex: virtualItem.index }] : [];\n })\n : renderedRows\n .slice(\n 0,\n Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n ),\n )\n .map((row, rowIndex) => ({ row, rowIndex }));\n const virtualPaddingTop = shouldUseVirtualRows\n ? (virtualItems[0]?.start ?? 0)\n : 0;\n const virtualPaddingBottom = shouldUseVirtualRows\n ? Math.max(\n 0,\n rowVirtualizer.getTotalSize() -\n (virtualItems.at(-1)?.end ?? virtualPaddingTop),\n )\n : 0;\n const handleGridActiveRowIndexChange = React.useCallback(\n (gridRowIndex: number) => {\n if (!props.gridMode || !shouldUseVirtualRows) return;\n rowVirtualizer.scrollToIndex(\n Math.max(0, gridRowIndex - props.topPinnedRows.length),\n { align: \"auto\" },\n );\n },\n [\n props.gridMode,\n props.topPinnedRows.length,\n rowVirtualizer,\n shouldUseVirtualRows,\n ],\n );\n const measureRow = React.useCallback>(\n (element) => {\n if (element) {\n rowVirtualizer.measureElement(element);\n }\n },\n [rowVirtualizer],\n );\n\n return (\n \n \n \n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-B6JTUAWE.js b/dist/chunk-LTEXTQ2M.js similarity index 63% rename from dist/chunk-B6JTUAWE.js rename to dist/chunk-LTEXTQ2M.js index 560a56c..324c1cd 100644 --- a/dist/chunk-B6JTUAWE.js +++ b/dist/chunk-LTEXTQ2M.js @@ -1,2 +1,2 @@ -import {a}from'./chunk-EJHT5JBZ.js';import {a as a$2}from'./chunk-O6MUTKGE.js';import {a as a$1}from'./chunk-XTVBESM5.js';import*as f from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsxs,jsx}from'react/jsx-runtime';function ct({cardClassName:r,cardGridClassName:o,cardSizing:E,cardRenderer:N,containerWidth:V,currentRowSelection:z,currentDetailExpanded:M,DataTableCardView:k,DataTableEmptyState:A,dragAndDrop:c,editableRows:P,editingRowId:I,emptyNode:H,enableRowSelection:_,flexGrow:g,getRowClassName:B,hasCardTitle:K,infiniteScroll:O,localSearchValue:h,onRowClick:j,renderedRows:e,detailPanel:U,resolvedLabels:n,resolvedLoadingRowCount:Y,rowActions:$=[],ScrollArea:q,scrollbarVisibility:F,sentinelRef:J,setCurrentDetailExpanded:Q,setCurrentRowSelection:X,setEditingRowId:Z,shouldRenderInitialLoading:m,stateOverlayNode:G,tableContainerClassName:L,uiClassNames:p,virtualization:R}){let v=m||e.length>0,x=f.useRef(null),{viewportElement:D,viewportHeight:W}=a(x,v),l=typeof R=="object"?R.card:void 0,T=!m&&e.length>0&&l?.enabled===true,i=nt(l?.lanes,V),tt=Math.ceil(e.length/i),b=T&&!!D&&W>0,at=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:T?tt:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:at,getScrollElement:()=>D,overscan:l?.overscan??4}),et=b?w.getVirtualItems():[],C=(t,s)=>jsx(k,{rows:t,cardRenderer:N,cardGridClassName:o,cardClassName:r,cardSizing:E,rowActions:$,editableRows:P,detailPanel:U,detailExpanded:M,onDetailExpandedChange:Q,hasCardTitle:K,rowSelection:z,onRowSelectionChange:X,enableRowSelection:_,editingRowId:I,onEditingRowIdChange:Z,getRowClassName:B,onRowClick:j,getRowDraggable:c?.getRowDraggable,onRowDragStart:c?.onRowDragStart,onRowDragEnd:c?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:n});return jsxs("div",{ref:x,"data-dtp-slot":"data-table-card-shell",className:a$1("relative box-border border-2 border-transparent transition-colors",g?"flex min-h-0 flex-1 flex-col":"h-full",c?.isDragging&&(p.dragActive??"rounded-md border-dashed")),children:[jsx(q,{type:F,className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,L),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",g&&"min-h-0 flex-1",p.cardViewport),children:[v?m?C([],{isLoading:true,loadingRowCount:Y}):b?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:et.map(t=>{let s=t.index*i,ot=e.slice(s,s+i);return jsx("div",{"data-index":t.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${t.start}px)`,width:"100%"},children:C(ot)},t.key)})}):C(e.slice(0,Math.max(1,Math.floor(l?.fallbackCardCount??12)))):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:H??jsx(A,{title:h?n.noMatchingRowsTitle:n.noRowsTitle,description:h?n.noMatchingRowsDescription:n.noRowsDescription})}),O?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:J,className:"h-4 w-full"})}):null]})}),G]})}function nt(r,o){return typeof r=="number"?Math.max(1,Math.floor(r)):r!=="auto"?1:o>=a$2["2xl"]?5:o>=a$2.xl?4:o>=a$2.lg?3:o>=a$2.sm?2:1}export{ct as a};//# sourceMappingURL=chunk-B6JTUAWE.js.map -//# sourceMappingURL=chunk-B6JTUAWE.js.map \ No newline at end of file +import {a}from'./chunk-EJHT5JBZ.js';import {a as a$2}from'./chunk-7IWMFF7E.js';import {a as a$1}from'./chunk-XTVBESM5.js';import*as f from'react';import {useVirtualizer}from'@tanstack/react-virtual';import {jsxs,jsx}from'react/jsx-runtime';function ct({cardClassName:n,cardGridClassName:o,cardSizing:E,cardRenderer:N,containerWidth:V,currentRowSelection:k,currentDetailExpanded:z,DataTableCardView:M,DataTableEmptyState:A,dragAndDrop:c,editableRows:P,editingRowId:I,emptyNode:H,enableRowSelection:_,flexGrow:g,getRowClassName:B,hasCardTitle:K,infiniteScroll:O,localSearchValue:h,onRowClick:j,renderedRows:e,detailPanel:U,resolvedLabels:r,resolvedLoadingRowCount:Y,rowActions:$=[],ScrollArea:q,scrollbarVisibility:F,sentinelRef:J,setCurrentDetailExpanded:Q,setCurrentRowSelection:X,setEditingRowId:Z,shouldRenderInitialLoading:m,stateOverlayNode:G,tableContainerClassName:L,uiClassNames:p,virtualization:R}){let v=m||e.length>0,x=f.useRef(null),{viewportElement:T,viewportHeight:W}=a(x,v),l=typeof R=="object"?R.card:void 0,D=!m&&e.length>0&&l?.enabled===true,i=rt(l?.lanes,V),tt=Math.ceil(e.length/i),b=D&&!!T&&W>0,at=f.useCallback(t=>e[t*i]?.id??t,[i,e]),w=useVirtualizer({count:D?tt:0,enabled:b,estimateSize:()=>l?.estimateCardHeight??280,getItemKey:at,getScrollElement:()=>T,overscan:l?.overscan??4}),et=b?w.getVirtualItems():[],C=(t,s)=>jsx(M,{rows:t,cardRenderer:N,cardGridClassName:o,cardClassName:n,cardSizing:E,rowActions:$,editableRows:P,detailPanel:U,detailExpanded:z,onDetailExpandedChange:Q,hasCardTitle:K,rowSelection:k,onRowSelectionChange:X,enableRowSelection:_,editingRowId:I,onEditingRowIdChange:Z,getRowClassName:B,onRowClick:j,getRowDraggable:c?.getRowDraggable,onRowDragStart:c?.onRowDragStart,onRowDragEnd:c?.onRowDragEnd,isLoading:s?.isLoading,loadingRowCount:s?.loadingRowCount,labels:r});return jsxs("div",{ref:x,"data-dtp-slot":"data-table-card-shell",className:a$1("relative box-border border-2 border-transparent transition-colors",g?"flex min-h-0 flex-1 flex-col":"h-full",c?.isDragging&&(p.dragActive??"rounded-md border-dashed")),children:[jsx(q,{type:F,className:a$1(g?"min-h-0 flex-1":"h-full",p.cardScrollArea,L),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$1("flex min-h-full min-w-0 flex-col",g&&"min-h-0 flex-1",p.cardViewport),children:[v?m?C([],{isLoading:true,loadingRowCount:Y}):b?jsx("div",{"data-dtp-slot":"data-table-card-virtualizer",style:{height:w.getTotalSize(),position:"relative",width:"100%"},children:et.map(t=>{let s=t.index*i,ot=e.slice(s,s+i);return jsx("div",{"data-index":t.index,ref:w.measureElement,style:{left:0,position:"absolute",top:0,transform:`translateY(${t.start}px)`,width:"100%"},children:C(ot)},t.key)})}):C(e.slice(0,Math.max(1,Math.floor(l?.fallbackCardCount??12)))):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:H??jsx(A,{title:h?r.noMatchingRowsTitle:r.noRowsTitle,description:h?r.noMatchingRowsDescription:r.noRowsDescription})}),O?.enabled&&!m?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:J,className:"h-4 w-full"})}):null]})}),G]})}function rt(n,o){return typeof n=="number"?Math.max(1,Math.floor(n)):n!=="auto"?1:o>=a$2["2xl"]?5:o>=a$2.xl?4:o>=a$2.lg?3:o>=a$2.sm?2:1}export{ct as a};//# sourceMappingURL=chunk-LTEXTQ2M.js.map +//# sourceMappingURL=chunk-LTEXTQ2M.js.map \ No newline at end of file diff --git a/dist/chunk-LTEXTQ2M.js.map b/dist/chunk-LTEXTQ2M.js.map new file mode 100644 index 0000000..60f721f --- /dev/null +++ b/dist/chunk-LTEXTQ2M.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-virtual-card-panel.tsx"],"names":["DataTableVirtualCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","containerWidth","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","scrollbarVisibility","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","virtualization","shouldRenderCards","cardScrollContainerRef","viewportElement","viewportHeight","useDataTableScrollViewport","virtualizationConfig","enableCardVirtualization","lanes","resolveCardVirtualizationLanes","virtualRowCount","shouldUseVirtualCardRows","getItemKey","index","cardVirtualizer","useVirtualizer","virtualCardRows","renderCardView","rows","options","jsx","jsxs","cn","virtualRow","startIndex","configuredLanes","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS"],"mappings":"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","file":"chunk-LTEXTQ2M.js","sourcesContent":["import * as React from \"react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport type { DataTableTanStackRow as Row } from \"./tanstack-v9\";\n\nexport function DataTableVirtualCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n containerWidth,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n scrollbarVisibility,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n virtualization,\n}: DataTableCardPanelProps) {\n const shouldRenderCards = shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n const { viewportElement, viewportHeight } = useDataTableScrollViewport(\n cardScrollContainerRef,\n shouldRenderCards,\n );\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization.card : undefined;\n const enableCardVirtualization =\n !shouldRenderInitialLoading &&\n renderedRows.length > 0 &&\n virtualizationConfig?.enabled === true;\n const lanes = resolveCardVirtualizationLanes(\n virtualizationConfig?.lanes,\n containerWidth,\n );\n const virtualRowCount = Math.ceil(renderedRows.length / lanes);\n const shouldUseVirtualCardRows =\n enableCardVirtualization && Boolean(viewportElement) && viewportHeight > 0;\n const getItemKey = React.useCallback(\n (index: number) => renderedRows[index * lanes]?.id ?? index,\n [lanes, renderedRows],\n );\n // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual owns its instance functions.\n const cardVirtualizer = useVirtualizer({\n count: enableCardVirtualization ? virtualRowCount : 0,\n enabled: shouldUseVirtualCardRows,\n estimateSize: () => virtualizationConfig?.estimateCardHeight ?? 280,\n getItemKey,\n getScrollElement: () => viewportElement,\n overscan: virtualizationConfig?.overscan ?? 4,\n });\n const virtualCardRows = shouldUseVirtualCardRows\n ? cardVirtualizer.getVirtualItems()\n : [];\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : shouldUseVirtualCardRows ? (\n \n {virtualCardRows.map((virtualRow) => {\n const startIndex = virtualRow.index * lanes;\n const rows = renderedRows.slice(\n startIndex,\n startIndex + lanes,\n );\n\n return (\n \n {renderCardView(rows)}\n \n );\n })}\n \n ) : (\n renderCardView(\n renderedRows.slice(\n 0,\n Math.max(\n 1,\n Math.floor(\n virtualizationConfig?.fallbackCardCount ?? 12,\n ),\n ),\n ),\n )\n )\n ) : (\n
\n {emptyNode ?? (\n \n )}\n
\n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n
\n \n {stateOverlayNode}\n \n );\n}\n\nfunction resolveCardVirtualizationLanes(\n configuredLanes: number | \"auto\" | undefined,\n containerWidth: number,\n) {\n if (typeof configuredLanes === \"number\") {\n return Math.max(1, Math.floor(configuredLanes));\n }\n\n if (configuredLanes !== \"auto\") {\n return 1;\n }\n\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[\"2xl\"]) {\n return 5;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.xl) {\n return 4;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.lg) {\n return 3;\n }\n if (containerWidth >= DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS.sm) {\n return 2;\n }\n return 1;\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-O6MUTKGE.js b/dist/chunk-O6MUTKGE.js deleted file mode 100644 index bdbb31a..0000000 --- a/dist/chunk-O6MUTKGE.js +++ /dev/null @@ -1,2 +0,0 @@ -var r={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function l(e,a,t){return !a||t?true:!a.getIsHidden(e)}function s(e,a){return typeof e=="function"?e(a):e}function d(e,a){return !e.hidden?.(a)}function b(e,a){return e?.canEditRow?e.canEditRow(a):!!e}function o(e){switch(e){case "center":return "text-center";case "end":return "text-right";default:return "text-left"}}function n(e,a){return e||(a==="numeric"?"end":"start")}function g(e){let a=e.column.columnDef.meta;return o(n(a?.align,a?.type))}function p(e){let a=e.column.columnDef.meta;return o(n(a?.align,a?.type))}function T(e){return e?(Array.isArray(e)?e:[e]).map(t=>`dt-hide-on-${t}`).join(" "):void 0}function u(e,a){return !e||a<=0?false:(Array.isArray(e)?e:[e]).some(i=>a;\n\n/** A stable grid coordinate used for cell and rectangular range selection. */\nexport type DataTableCellCoordinate = {\n rowId: string;\n columnId: string;\n};\n\n/** The two corners of a cell selection. A single-cell selection has equal corners. */\nexport type DataTableCellSelection = {\n anchor: DataTableCellCoordinate;\n focus: DataTableCellCoordinate;\n};\n\nexport type DataTableGridCommandContext = {\n table: TanStackTable;\n cellSelection: DataTableCellSelection | null;\n};\n\n/** Commands are delegated to the application; the table never records app data. */\nexport type DataTableGridCommands = {\n undo?: (context: DataTableGridCommandContext) => void | Promise;\n redo?: (context: DataTableGridCommandContext) => void | Promise;\n};\n\nexport type DataTableAlign = \"start\" | \"center\" | \"end\";\nexport type DataTableColumnType = \"text\" | \"numeric\" | \"date\";\nexport type DataTableColumnFixed = \"left\" | \"right\";\nexport type DataTableContainerBreakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type DataTableDensity = \"compact\" | \"comfortable\" | \"spacious\";\nexport type DataTableCardSizing = \"fixed\" | \"content\" | \"fluid\";\nexport type DataTableCellOverflow =\n | \"truncate\"\n | \"clip\"\n | \"wrap\"\n | \"visible\";\nexport type DataTableColumnFilterType =\n | \"text\"\n | \"select\"\n | \"multi\"\n | \"faceted\"\n | \"boolean\"\n | \"numberRange\"\n | \"dateRange\";\nexport type DataTableColumnFilterOperator =\n | \"contains\"\n | \"equals\"\n | \"startsWith\"\n | \"endsWith\";\nexport type DataTableCsvExportScope =\n | \"filtered\"\n | \"page\"\n | \"selected\"\n | \"all\";\nexport type DataTableClipboardCopyScope =\n | DataTableCsvExportScope\n | \"cellSelection\";\nexport type DataTableClipboardCopyOptions = {\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableClipboardCopyScope;\n /** Defaults to tab-separated text. */\n delimiter?: \"\\t\" | \",\";\n escapeFormulaValues?: boolean;\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n /** Host-owned clipboard delivery for non-browser or permission-managed apps. */\n onCopy?: (context: {\n text: string;\n rows: Array;\n scope: DataTableClipboardCopyScope;\n }) => void | Promise;\n};\nexport type DataTableClipboardPasteContext = {\n text: string;\n values: Array>;\n table: TanStackTable;\n};\nexport type DataTableClipboardConfig = {\n copy?: boolean | DataTableClipboardCopyOptions;\n paste?: {\n enabled?: boolean;\n preventDefault?: boolean;\n onPaste: (\n context: DataTableClipboardPasteContext,\n ) => void | Promise;\n };\n};\nexport type DataTableActionErrorSource =\n | \"toolbarAction\"\n | \"selectionAction\"\n | \"rowAction\"\n | \"rowClick\"\n | \"edit\"\n | \"undo\"\n | \"redo\"\n | \"clipboardCopy\"\n | \"clipboardPaste\"\n | \"fileUpload\"\n | \"infiniteScroll\"\n | \"retry\";\n\nexport const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record<\n DataTableContainerBreakpoint,\n number\n> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};\n\nexport type DataTableRowLoadingState = {\n isLoading: boolean;\n skeleton?: React.ReactNode;\n};\n\nexport type DataTableLoadingState = {\n isLoading: boolean;\n loadingRowCount?: number;\n};\n\nexport type DataTableAutoPageSizeConfig = {\n minRows?: number;\n maxRows?: number;\n estimateRowHeight?: number;\n};\n\nexport type DataTableStateOverlayContext = {\n rows: Array;\n toolbarQueryValue: string;\n error: unknown;\n isRetrying: boolean;\n retry: (() => void | Promise) | undefined;\n};\n\nexport type DataTableStateOverlay = {\n empty?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n error?: unknown;\n isRetrying?: boolean;\n onRetry?: () => void | Promise;\n renderError?: (\n context: DataTableStateOverlayContext,\n ) => React.ReactNode;\n};\n\nexport type DataTableCellEditRenderProps = {\n cell: CellContext;\n row: TData;\n value: TValue | undefined;\n draftValue: unknown;\n setDraftValue: (value: unknown) => void;\n error?: string;\n isDirty: boolean;\n isPending: boolean;\n};\n\nexport type DataTableColumnFilterOption = {\n label: string;\n value: string;\n /** Number of matching records. Omit when the count is not known. */\n count?: number;\n disabled?: boolean;\n};\n\nexport type DataTableFacetedFilterOptions = {\n /**\n * Server-provided facet values. When supplied, these take precedence over\n * locally calculated unique values and their counts.\n */\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n /** Render a readable label for values discovered from the local row model. */\n getOptionLabel?: (value: TValue | undefined) => string;\n /** Enables an in-menu search input. Defaults to true. */\n searchable?: boolean;\n searchPlaceholder?: string;\n};\n\nexport type DataTableColumnFilterRangeValue = {\n from?: TValue;\n to?: TValue;\n};\n\nexport type DataTableColumnFilterConfig = {\n type: DataTableColumnFilterType;\n label?: string;\n placeholder?: string;\n options?:\n | Array\n | ((context: { rows: Array }) => Array);\n getOptionValue?: (value: TValue | undefined, row: TData) => string;\n /** Settings for `type: \"faceted\"`, including server-provided facet data. */\n faceting?: DataTableFacetedFilterOptions;\n operator?: DataTableColumnFilterOperator;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\nexport type DataTableColumnMeta = {\n type?: DataTableColumnType;\n fixed?: DataTableColumnFixed;\n cardTitle?: boolean;\n hideOn?: DataTableContainerBreakpoint | Array;\n minWidth?: number;\n align?: DataTableAlign;\n overflow?:\n | DataTableCellOverflow\n | ((args: {\n row: TData;\n value: TValue | undefined;\n }) => DataTableCellOverflow | undefined);\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n cellClassName?:\n | string\n | ((args: { row: TData; value: TValue | undefined }) => string | undefined);\n responsiveClassName?: string;\n skeleton?: (context: CellContext) => React.ReactNode;\n filter?: DataTableColumnFilterConfig;\n parseEditValue?: (value: unknown, context: CellContext) => unknown;\n formatEditValue?: (\n value: unknown,\n context: CellContext,\n ) => string;\n renderEditCell?: (\n props: DataTableCellEditRenderProps,\n ) => React.ReactNode;\n};\n\nexport type DataTableColumnDef = ColumnDef<\n TData,\n TValue\n> & {\n meta?: DataTableColumnMeta;\n columns?: Array>;\n};\n\nexport type DataTableColumnGroupDef = DataTableColumnDef<\n TData,\n unknown\n> & {\n id: string;\n columns: Array>;\n /**\n * A concise explanation of the columns in this group. It is exposed as an\n * accessible description and native tooltip on the shared header.\n */\n description?: string;\n /**\n * Allows leaves to cross this group's boundary during column reordering.\n * Groups are locked by default so a shared heading remains intact.\n */\n freeReordering?: boolean;\n /** Additional class name for this shared group header. */\n headerClassName?: string;\n /** Additional inline styles for this shared group header. */\n headerStyle?: React.CSSProperties;\n /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */\n headerHeight?: React.CSSProperties[\"height\"];\n};\n\nexport type DataTableToolbarAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n placement?: \"primary\" | \"trailing\";\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?: boolean;\n};\n\nexport type DataTableSelectionActionContext = {\n /** Selected row objects that are present in the currently loaded data. */\n rows: Array;\n /** Every selected row id, including ids retained across server pages. */\n rowIds: Array;\n};\n\nexport type DataTableSelectionAction = {\n key: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n iconOnly?: boolean;\n onClick: (context: DataTableSelectionActionContext) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\";\n disabled?:\n | boolean\n | ((\n rows: Array,\n context: DataTableSelectionActionContext,\n ) => boolean);\n};\n\nexport type DataTableRowAction = {\n key: string;\n label: string | ((row: TData) => string);\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (row: TData) => void | Promise;\n variant?: \"default\" | \"secondary\" | \"destructive\";\n hidden?: (row: TData) => boolean;\n disabled?: (row: TData) => boolean;\n};\n\nexport type DataTableColumnVisibilityOption = {\n id: string;\n label: string;\n visible: boolean;\n canHide: boolean;\n pinned?: false | DataTableColumnFixed;\n};\n\nexport type DataTableToolbarVisibility = {\n title?: boolean;\n search?: boolean;\n actions?: boolean;\n trailingActions?: boolean;\n options?: boolean;\n viewToggle?: boolean;\n customToolbar?: boolean;\n};\n\n/** Optional toolbar controls for working with the current table layout and views. */\nexport type DataTableToolbarDataOperations = {\n /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */\n columnChooser?: boolean;\n /** Create, apply, rename, and delete saved views when `savedViews` is configured. */\n savedViews?: boolean;\n /** Adds a reset-layout action using the table's initial layout. */\n resetLayout?: boolean;\n};\n\nexport type DataTableCardRendererProps = {\n row: TData;\n rowId: string;\n depth: number;\n canExpandSubRows: boolean;\n isSubRowsExpanded: boolean;\n toggleSubRowsExpanded: () => void;\n isSelected: boolean;\n onSelectedChange: (nextValue: boolean) => void;\n actions: Array>;\n isEditing: boolean;\n startEditing: () => void;\n cancelEditing: () => void;\n};\n\nexport type DataTableEditableRowsConfig = {\n canEditRow?: (row: TData) => boolean;\n getInitialValues?: (row: TData) => Record;\n validateRow?: (\n row: TData,\n draftValues: Record,\n ) =>\n | void\n | string\n | Record\n | Promise>;\n /** Apply an optimistic host update and optionally return a rollback callback. */\n onOptimisticUpdate?: (\n row: TData,\n draftValues: Record,\n ) => void | (() => void);\n onSaveRow: (\n row: TData,\n draftValues: Record,\n ) => void | Promise;\n onSaveSuccess?: (\n row: TData,\n draftValues: Record,\n ) => void;\n onSaveError?: (\n error: unknown,\n row: TData,\n draftValues: Record,\n ) => void;\n /** Defaults to true for inputs owned by the table. */\n commitOnEnter?: boolean;\n /** Defaults to true for inputs owned by the table. */\n cancelOnEscape?: boolean;\n};\n\nexport type DataTableInfiniteScroll = {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n};\n\nexport type DataTableHiddenRowsConfig = {\n getIsHidden: (row: TData) => boolean;\n label?: string;\n};\n\nexport type DataTableEmptyStateContext = {\n rows: Array;\n toolbarQueryValue: string;\n};\n\nexport type DataTableDragAndDropConfig = {\n isDragging?: boolean;\n onDragEnter?: React.DragEventHandler;\n onDragOver?: React.DragEventHandler;\n onDragLeave?: React.DragEventHandler;\n onDrop?: React.DragEventHandler;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n};\n\nexport type DataTableFileUploadConfig = {\n accept?: string;\n disabled?: boolean;\n multiple?: boolean;\n onFilesSelected: (files: FileList | Array) => void | Promise;\n};\n\nexport type DataTableVirtualizationConfig = {\n enabled?: boolean;\n estimateRowHeight?: number;\n fallbackRowCount?: number;\n overscan?: number;\n card?: DataTableCardVirtualizationConfig;\n};\n\nexport type DataTableCardVirtualizationConfig = {\n enabled?: boolean;\n estimateCardHeight?: number;\n fallbackCardCount?: number;\n overscan?: number;\n lanes?: number | \"auto\";\n};\n\nexport type DataTableExpandedRowProps = {\n row: TData;\n rowId: string;\n tableRow: Row;\n};\n\n/** A separately controlled application detail panel rendered beneath a row. */\nexport type DataTableDetailPanel = {\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n getRowCanExpand?: (row: TData) => boolean;\n render: (props: DataTableExpandedRowProps) => React.ReactNode;\n};\n\nexport type DataTableCsvExportOptions = {\n filename?: string;\n includeHeaders?: boolean;\n columns?: Array;\n scope?: DataTableCsvExportScope;\n escapeFormulaValues?: boolean;\n lineEnding?: \"\\n\" | \"\\r\\n\";\n getCellValue?: (context: {\n row: TData;\n rowId: string;\n columnId: string;\n value: unknown;\n }) => unknown;\n onExport?: (context: {\n csv: string;\n filename: string;\n rows: Array;\n scope: DataTableCsvExportScope;\n }) => void | Promise;\n};\n\nexport type DataTableActionErrorContext = {\n source: DataTableActionErrorSource;\n error: unknown;\n actionKey?: string;\n row?: TData;\n};\n\nexport type DataTableColumnPrefs = {\n visibility?: VisibilityState;\n sizing?: Record;\n order?: ColumnOrderState;\n pinning?: ColumnPinningState;\n rowPinning?: RowPinningState;\n density?: DataTableDensity;\n};\n\nexport type DataTablePersistenceSlice = keyof DataTableColumnPrefs;\n\nexport type DataTablePersistenceStorage = Pick<\n Storage,\n \"getItem\" | \"setItem\" | \"removeItem\"\n>;\n\nexport type DataTablePersistenceOperation =\n | \"read\"\n | \"write\"\n | \"remove\"\n | \"serialize\"\n | \"deserialize\"\n | \"migrate\";\n\nexport type DataTablePersistencePayload = {\n version: string | number;\n state: DataTableColumnPrefs;\n};\n\nexport type DataTablePersistenceConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTablePersistencePayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; state: unknown },\n targetVersion: string | number,\n ) => DataTableColumnPrefs | undefined;\n debounceMs?: number;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableState = {\n sorting: SortingState;\n pagination: PaginationState;\n rowSelection: Record;\n columnVisibility: VisibilityState;\n columnFilters: ColumnFiltersState;\n expanded: ExpandedState;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n rowPinning: RowPinningState;\n columnSizing: ColumnSizingState;\n /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */\n grouping?: GroupingState;\n density: DataTableDensity;\n viewMode: DataTableViewMode;\n showHiddenRows: boolean;\n globalFilter: string;\n};\n\nexport type DataTableInitialState = Partial;\n\nexport type DataTableSavedViewSlice = keyof DataTableState;\n\nexport type DataTableSavedView = {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n state: Partial;\n};\n\nexport type DataTableSavedViewsPayload = {\n version: string | number;\n views: Array;\n};\n\nexport type DataTableSavedViewsChangeOperation =\n | \"create\"\n | \"rename\"\n | \"delete\"\n | \"clear\";\n\nexport type DataTableSavedViewsConfig = {\n key: string;\n version?: string | number;\n slices?: Array;\n storage?: DataTablePersistenceStorage;\n serialize?: (payload: DataTableSavedViewsPayload) => string;\n deserialize?: (value: string) => unknown;\n migrate?: (\n payload: { version: unknown; views: unknown },\n targetVersion: string | number,\n ) => Array | undefined;\n onChange?: (\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n ) => void;\n onApply?: (view: DataTableSavedView) => void;\n onError?: (context: {\n error: unknown;\n operation: DataTablePersistenceOperation;\n }) => void;\n};\n\nexport type DataTableResetOptions = {\n clearPersistence?: boolean;\n};\n\nexport type DataTableApi = {\n getTable: () => TanStackTable | null;\n getState: () => DataTableState;\n snapshot: () => DataTableState;\n restore: (state: Partial) => void;\n resetColumnLayout: (options?: DataTableResetOptions) => void;\n resetState: (options?: DataTableResetOptions) => void;\n clearPersistedState: () => boolean;\n getSavedViews: () => Array;\n createSavedView: (name: string) => DataTableSavedView | undefined;\n applySavedView: (id: string) => boolean;\n renameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n deleteSavedView: (id: string) => boolean;\n clearSavedViews: () => boolean;\n pinRow: (rowId: string, position?: \"top\" | \"bottom\") => boolean;\n unpinRow: (rowId: string) => boolean;\n focus: () => void;\n scrollToRow: (rowId: string) => boolean;\n scrollToColumn: (columnId: string) => boolean;\n exportCsv: (\n options?: boolean | DataTableCsvExportOptions,\n ) => Promise;\n copyToClipboard: (\n options?: boolean | DataTableClipboardCopyOptions,\n ) => Promise;\n getCellSelection: () => DataTableCellSelection | null;\n setCellSelection: (selection: DataTableCellSelection | null) => void;\n clearCellSelection: () => void;\n print: () => boolean;\n toggleFullscreen: () => Promise;\n};\n\nexport type DataTableLabels = {\n searchPlaceholder: string;\n searchTable: string;\n clearSearch: string;\n noRowsTitle: string;\n noRowsDescription: string;\n noMatchingRowsTitle: string;\n noMatchingRowsDescription: string;\n tableOptions: string;\n columns: string;\n filters: string;\n clearFilters: string;\n filterFrom?: string;\n filterTo?: string;\n filterTrue?: string;\n filterFalse?: string;\n selectedRows: (count: number) => string;\n showHiddenRows: (label: string) => string;\n recordsPerPage: string;\n totalRecords: (count: number) => string;\n pageStatus: (pageIndex: number, pageCount: number) => string;\n pageStatusUnknown?: (pageIndex: number) => string;\n pagination?: string;\n morePages?: string;\n firstPage: string;\n previousPage: string;\n nextPage: string;\n lastPage: string;\n selectAllVisibleRows?: string;\n selectAllFilteredRows?: string;\n selectRow?: string;\n selectCardRow?: (rowId: string) => string;\n switchToTableView?: string;\n switchToCardView?: string;\n tableView?: string;\n cardView?: string;\n allFilterOptions?: string;\n actions: string;\n rowActions: string;\n editRow: string;\n saveEdit: string;\n cancelEdit: string;\n expandRow: string;\n collapseRow: string;\n expandRowDetails?: string;\n collapseRowDetails?: string;\n exportCsv: string;\n print?: string;\n enterFullscreen?: string;\n exitFullscreen?: string;\n errorTitle?: string;\n errorDescription?: string;\n retry?: string;\n density: string;\n compactDensity: string;\n comfortableDensity: string;\n spaciousDensity: string;\n pinLeft: string;\n pinRight: string;\n unpin: string;\n pinRowToTop: string;\n pinRowToBottom: string;\n unpinRow: string;\n resizeColumn: (columnLabel: string) => string;\n grouping?: string;\n groupBy?: (columnLabel: string) => string;\n ungroup?: (columnLabel: string) => string;\n removeGrouping?: (columnLabel: string) => string;\n moveGroupingEarlier?: (columnLabel: string) => string;\n moveGroupingLater?: (columnLabel: string) => string;\n facetSearch?: (columnLabel: string) => string;\n searchColumns?: string;\n showAllColumns?: string;\n hideAllColumns?: string;\n moveColumnEarlier?: (columnLabel: string) => string;\n moveColumnLater?: (columnLabel: string) => string;\n resetColumnLayout?: string;\n savedViews?: string;\n createSavedView?: string;\n savedViewName?: string;\n applySavedView?: (name: string) => string;\n renameSavedView?: (name: string) => string;\n deleteSavedView?: (name: string) => string;\n saveSavedView?: string;\n};\n\nexport type DataTableSummaryRow = {\n key: string;\n label?: React.ReactNode;\n cells: Record<\n string,\n React.ReactNode | ((context: { rows: Array; columnId: string }) => React.ReactNode)\n >;\n};\n\nexport type DataTableRowClassNameContext = {\n row: TData;\n rowId: string;\n rowIndex: number;\n isEditing: boolean;\n isExpanded: boolean;\n isLoading: boolean;\n isSelected: boolean;\n pinnedPosition: false | \"top\" | \"bottom\";\n};\n\nexport type DataTableScrollbarVisibility =\n | \"auto\"\n | \"always\"\n | \"scroll\"\n | \"hover\";\n\nexport type DataTableProps = {\n columns: Array>;\n data: Array;\n getRowId: (row: TData, index: number) => string;\n children?: React.ReactNode;\n title?: string;\n description?: string;\n toolbarQueryValue?: string;\n onToolbarQueryValueChange?: (value: string) => void;\n toolbarQueryPlaceholder?: string;\n toolbarQueryDebounceMs?: number;\n manualFiltering?: boolean;\n enableToolbarQueryFiltering?: boolean;\n globalFilterFn?: FilterFnOption;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n enableColumnFilters?: boolean;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n rowsPerPageOptions?: Array;\n totalRowCount?: number;\n hasNextPage?: boolean;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n grouping?: GroupingState;\n onGroupingChange?: (grouping: GroupingState) => void;\n /** Use rows already grouped by the server instead of TanStack's grouping model. */\n manualGrouping?: boolean;\n /** Show group/ungroup controls in the table options menu and grouping bar. */\n enableGrouping?: boolean;\n /** Controls whether grouped columns are reordered, removed, or left in place. */\n groupedColumnMode?: false | \"reorder\" | \"remove\";\n /** Named aggregation functions available to column `aggregationFn` definitions. */\n aggregationFns?: Record>;\n pageIndex?: number;\n pageSize?: number;\n /** Sizes an opt-in page from the measurable table scroll viewport. */\n autoPageSize?: boolean | DataTableAutoPageSizeConfig;\n onPageIndexChange?: (pageIndex: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n pageCount?: number;\n manualPagination?: boolean;\n rowSelection?: Record;\n onRowSelectionChange?: (rowSelection: Record) => void;\n enableRowSelection?: boolean;\n /** Allows multiple selected rows globally or per row. Defaults to true. */\n enableMultiRowSelection?: boolean | ((row: TData) => boolean);\n /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */\n enableSubRowSelection?: boolean | ((row: TData) => boolean);\n /** Prevents individual rows from being selected. */\n getRowCanSelect?: (row: TData) => boolean;\n /** Select-all affects the current page or all loaded filtered rows. */\n rowSelectionSelectAllScope?: \"page\" | \"filtered\";\n expanded?: ExpandedState;\n onExpandedChange?: (expanded: ExpandedState) => void;\n /** Resolve nested records for tree expansion. */\n getSubRows?: (row: TData, index: number) => Array | undefined;\n /** Keep expansion state controlled by the host; useful for server-loaded children. */\n manualExpanding?: boolean;\n /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */\n paginateExpandedRows?: boolean;\n /** Include parents when a descendant matches a filter. */\n filterFromLeafRows?: boolean;\n /** Limit descendant traversal while filtering. */\n maxLeafRowFilterDepth?: number;\n /** New, independently controlled detail-panel contract. */\n detailPanel?: DataTableDetailPanel;\n getRowCanExpand?: (row: TData) => boolean;\n /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */\n renderExpandedRow?: (\n props: DataTableExpandedRowProps,\n ) => React.ReactNode;\n columnOrder?: ColumnOrderState;\n onColumnOrderChange?: (columnOrder: ColumnOrderState) => void;\n enableColumnReordering?: boolean;\n /** Default height for shared column-group header cells. */\n columnGroupHeaderHeight?: React.CSSProperties[\"height\"];\n columnPinning?: ColumnPinningState;\n onColumnPinningChange?: (columnPinning: ColumnPinningState) => void;\n enableColumnPinning?: boolean;\n rowPinning?: RowPinningState;\n onRowPinningChange?: (rowPinning: RowPinningState) => void;\n /** Enables row actions that pin a row to the top or bottom of the table. */\n enableRowPinning?: boolean | ((row: TData) => boolean);\n /** Keep pinned rows visible when filtering or paginating them out. */\n keepPinnedRows?: boolean;\n toolbarActions?: Array>;\n selectionActions?: Array>;\n rowActions?: Array>;\n csvExport?: boolean | DataTableCsvExportOptions;\n /** Opt-in TSV/CSV copy and application-owned paste handling. */\n clipboard?: DataTableClipboardConfig;\n /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */\n enableCellSelection?: boolean;\n /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */\n cellSelection?: DataTableCellSelection | null;\n /** Initial cell/range selection when uncontrolled. */\n defaultCellSelection?: DataTableCellSelection | null;\n onCellSelectionChange?: (selection: DataTableCellSelection | null) => void;\n /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */\n gridCommands?: DataTableGridCommands;\n density?: DataTableDensity;\n onDensityChange?: (density: DataTableDensity) => void;\n enableDensityToggle?: boolean;\n columnPrefsKey?: string;\n persistence?: DataTablePersistenceConfig;\n savedViews?: DataTableSavedViewsConfig;\n initialState?: DataTableInitialState;\n state?: Partial;\n onStateChange?: (updater: Updater) => void;\n apiRef?: React.Ref>;\n labels?: Partial;\n summaryRows?: Array>;\n cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n viewMode?: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle?: boolean;\n enablePrint?: boolean;\n enableFullscreen?: boolean;\n emptyState?:\n | React.ReactNode\n | ((context: DataTableEmptyStateContext) => React.ReactNode);\n /** Explicit empty/error/retry rendering contract. */\n stateOverlay?: DataTableStateOverlay;\n isLoading?: boolean;\n loadingRowCount?: number;\n getRowLoadingState?: (\n row: TData,\n index: number,\n ) => boolean | DataTableRowLoadingState;\n hiddenRows?: DataTableHiddenRowsConfig;\n showHiddenRows?: boolean;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n infiniteScroll?: DataTableInfiniteScroll;\n editableRows?: DataTableEditableRowsConfig;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n columnSizing?: ColumnSizingState;\n onColumnSizingChange?: (sizing: ColumnSizingState) => void;\n enableColumnResizing?: boolean;\n columnResizeMode?: \"onChange\" | \"onEnd\";\n layoutMode?: \"fill\" | \"fit\";\n stickyHeader?: boolean;\n /** Controls when scrollbars are visible. Defaults to `\"hover\"`. */\n scrollbarVisibility?: DataTableScrollbarVisibility;\n showFooter?: boolean;\n showToolbar?: boolean;\n dir?: \"ltr\" | \"rtl\";\n flexGrow?: boolean;\n toolbarVisibility?: DataTableToolbarVisibility;\n /** Opts into enhanced layout and saved-view toolbar controls. */\n toolbarDataOperations?: boolean | DataTableToolbarDataOperations;\n className?: string;\n tableClassName?: string;\n tableContainerClassName?: string;\n stripedRows?: boolean;\n getRowClassName?: (\n row: TData,\n context: DataTableRowClassNameContext,\n ) => string | undefined;\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n onActionError?: (context: DataTableActionErrorContext) => void;\n dragAndDrop?: DataTableDragAndDropConfig;\n fileUpload?: DataTableFileUploadConfig;\n virtualization?: boolean | DataTableVirtualizationConfig;\n /** Opt in to ARIA grid semantics and roving keyboard navigation. */\n accessibility?: DataTableAccessibilityOptions;\n /** Shorthand for `accessibility={{ mode: \"grid\" }}`. */\n interactiveGrid?: boolean | DataTableInteractiveGridOptions;\n};\n\nexport function isRowVisible(\n row: TData,\n hiddenRows: DataTableHiddenRowsConfig | undefined,\n showHiddenRows: boolean,\n) {\n if (!hiddenRows) {\n return true;\n }\n\n if (showHiddenRows) {\n return true;\n }\n\n return !hiddenRows.getIsHidden(row);\n}\n\nexport function resolveRowActionLabel(\n label: DataTableRowAction[\"label\"],\n row: TData,\n) {\n return typeof label === \"function\" ? label(row) : label;\n}\n\nexport function canUseRowAction(\n action: DataTableRowAction,\n row: TData,\n) {\n return !action.hidden?.(row);\n}\n\nexport function canEditRow(\n editableRows: DataTableEditableRowsConfig | undefined,\n row: TData,\n) {\n return editableRows?.canEditRow\n ? editableRows.canEditRow(row)\n : Boolean(editableRows);\n}\n\nexport function alignClassName(align: DataTableAlign | undefined) {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"end\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n}\n\nexport function resolveColumnAlign(\n align: DataTableAlign | undefined,\n type: DataTableColumnType | undefined,\n) {\n if (align) {\n return align;\n }\n\n if (type === \"numeric\") {\n return \"end\";\n }\n\n return \"start\";\n}\n\nexport function headerAlignClassName(\n context: HeaderContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function cellAlignClassName(\n context: CellContext,\n) {\n const meta = (context.column.columnDef as DataTableColumnDef)\n .meta;\n return alignClassName(resolveColumnAlign(meta?.align, meta?.type));\n}\n\nexport function hideOnClassName(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n) {\n if (!hideOn) {\n return undefined;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.map((value) => `dt-hide-on-${value}`).join(\" \");\n}\n\nexport function isHiddenAtContainerWidth(\n hideOn:\n | DataTableContainerBreakpoint\n | Array\n | undefined,\n containerWidth: number,\n) {\n if (!hideOn || containerWidth <= 0) {\n return false;\n }\n\n const values = Array.isArray(hideOn) ? hideOn : [hideOn];\n return values.some(\n (value) => containerWidth < DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS[value],\n );\n}\n\nexport function rowSelectionStateFromRows(rows: Array>) {\n return rows.map((row) => row.original);\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-PRDXFLFB.js b/dist/chunk-PRDXFLFB.js deleted file mode 100644 index aa8a820..0000000 --- a/dist/chunk-PRDXFLFB.js +++ /dev/null @@ -1,2 +0,0 @@ -import {d,A,y,x,z,k}from'./chunk-F2RBZWQV.js';import {c,t,i}from'./chunk-CVR2ZXHQ.js';import {h,g,f}from'./chunk-O6MUTKGE.js';import {a}from'./chunk-XTVBESM5.js';import*as E from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function mt({columns:e,editableRows:a,onError:s}){let[o,n]=E.useState(null),[u,D]=E.useState({}),C=E.useRef(u),[h,t]=E.useState({}),[I,c]=E.useState({}),[A,x]=E.useState(false),v=E.useMemo(()=>!Ka(u,h),[u,h]);E.useEffect(()=>{C.current=u;},[u]);let S=E.useCallback(()=>{n(null),D({}),c({}),t({});},[]),V=E.useCallback((H,b)=>{let k=a?.getInitialValues?.(H)??Aa(H,e);t({...k}),D(k),c({}),n(b);},[e,a]),_=E.useCallback(async H=>{if(!a)return false;x(true);let b={...C.current},k;try{let G=await a.validateRow?.(H,b),r=Ga(G);if(Object.keys(r).length>0)return c(r),!1;c({});let z=a.onOptimisticUpdate?.(H,b);return k=typeof z=="function"?z:void 0,await a.onSaveRow(H,b),a.onSaveSuccess?.(H,b),E.startTransition(S),!0}catch(G){try{k?.();}catch{}return a.onSaveError?.(G,H,b),s?.(G,H),false}finally{x(false);}},[S,a,s]),W=E.useCallback(H=>{c(b=>{if(!b[H]&&!b._row)return b;let k={...b};return delete k[H],delete k._row,k});},[]);return {cancelEditing:S,clearEditError:W,draftValues:u,editErrors:I,editingRowId:o,isEditDirty:v,isSavingEdit:A,saveEdit:_,setDraftValues:D,setEditingRowId:n,startEditingRow:V}}function Aa(e,a){return k(a).reduce((s,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(s[o.accessorKey]=e[o.accessorKey]),s),{})}function pa(e,a,s,o,n){let{Checkbox:u,Input:D}=o,C=e.column.columnDef,h=C.meta,t="accessorKey"in C&&typeof C.accessorKey=="string"?C.accessorKey:e.column.id,I=a[t],c=n?.errors[t]??n?.errors[e.column.id]??n?.errors._row,A=S=>{n?.onValueChange(t),s(V=>({...V,[t]:S}));},x=S=>{S.key==="Escape"&&n?.cancelOnEscape?(S.preventDefault(),n.cancel()):S.key==="Enter"&&!S.shiftKey&&n?.commitOnEnter&&(S.preventDefault(),n.commit());};if(h?.renderEditCell)return h.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:I,error:c,isDirty:n?.isDirty??false,isPending:n?.isPending??false,setDraftValue:A});let v=za(h?.type,I);return typeof I=="boolean"?jsxs("div",{className:"min-w-0",children:[jsx(u,{"aria-invalid":!!c||void 0,checked:I,disabled:n?.isPending,onCheckedChange:S=>{A(S===true);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]}):jsxs("div",{className:"min-w-0",children:[jsx(D,{"aria-invalid":!!c||void 0,disabled:n?.isPending,type:v,value:h?.formatEditValue?h.formatEditValue(I,e):Ma(I,v),onChange:S=>{let V=S.target.value,_=h?.parseEditValue?h.parseEditValue(V,e):Va(V,v,I);A(_);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]})}function Ga(e){return e?typeof e=="string"?{_row:e}:e:{}}function Ka(e,a){let s=new Set([...Object.keys(e),...Object.keys(a)]);return Array.from(s).every(o=>Object.is(e[o],a[o]))}function za(e,a){return e==="numeric"||typeof a=="number"?"number":e==="date"||a instanceof Date?"datetime-local":"text"}function Ma(e,a="text"){return e==null?"":e instanceof Date?a==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Va(e,a,s){return a==="number"?e===""?null:Number(e):a==="datetime-local"?e?s instanceof Date?new Date(e):e:null:e}var Ca=E.createContext(void 0);function gt({children:e,measureRow:a}){return jsx(Ca.Provider,{value:a,children:e})}function Ta(){return E.useContext(Ca)}function ze(e,a$1,s){let o=e.column.columnDef,n=o.meta,u=e.getValue(),D=s?.hasCustomCell??false,C=D&&o.cell?flexRender(o.cell,e):void 0,h=Ba(C),t=Ua({context:e,useCustomOverflowDefaults:s?.useCustomOverflowDefaults??false,value:u});if(n?.type==="date"&&!D)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(ya(t),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(i,{className:a("shrink-0",a$1?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:va(u)})]});let I=C!=null&&C!==""?C:u==null||u===""?jsx("span",{className:a$1?.mutedText??"opacity-70",children:"-"}):Fa(u);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(ya(t),"w-full min-w-0 max-w-full",h&&"[&>*]:max-w-full [&>*]:min-w-0"),children:I})}function Ua({context:e,useCustomOverflowDefaults:a,value:s}){let o=e.column.columnDef,n=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:s}):o.meta?.overflow;return n||(a?"clip":"truncate")}function ya(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function Ba(e){return e==null?false:E.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function va(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function Fa(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function qa({columnLayouts:e,components:a$1,currentDensity:s,draftValues:o,editingContext:n,dragAndDrop:u,explicitCustomCellColumnIds:D,getRowClassName:C,groupToggleLabel:h$1,gridMode:t,gridRowAriaIndex:I,gridRowIndex:c,activeGridCell:A$1,cellSelectionEnabled:x,isGridCellSelected:v,onGridCellFocus:S,onGridCellKeyDown:V,onGridCellPointerDown:_,onGridCellPointerEnter:W,isDraggable:H,isDetailExpanded:b,isEditing:k,isExpanded:G,isInitialLoadingRow:r,isSelected:z,loadingState:M,onRowClick:j,pinnedPosition:d$1,originalRow:g$1,detailPanel:$,row:T,rowIndex:O,setDraftValues:ye,stripedRows:ce,uiClassNames:K,visibleCells:me,visibleLeafColumnCount:ae}){let{Checkbox:Oe,Input:X,Skeleton:le,TableCell:we,TableRow:Re}=a$1,J=Ta(),he=d$1?void 0:J,Ue=me.find(m=>!e.get(m.column.id)?.isUtilityColumn)?.column.id,Se=me.findIndex(m=>m.column.id==="__spacer__");return jsxs(E.Fragment,{children:[jsx(Re,{ref:he,"data-row-id":T.id,"data-index":he?O:void 0,"data-tree-depth":!r&&T.depth>0?T.depth:void 0,"data-dtp-slot":d$1?"data-table-pinned-row":"data-table-row","data-row-pinned":d$1,"data-row-grouped":T.getIsGrouped()||void 0,draggable:r?false:H,"data-loading":M?.isLoading||void 0,"data-row-index":r?void 0:O,"data-row-parity":ce&&!r?O%2===0?"odd":"even":void 0,"data-state":r?void 0:z?"selected":void 0,role:t?"row":void 0,"aria-rowindex":t?I:void 0,tabIndex:!t&&j&&!r?0:void 0,className:a(!r&&C?.(g$1,{row:g$1,rowId:T.id,rowIndex:O,isEditing:k,isExpanded:G,isLoading:!!M?.isLoading,isSelected:z,pinnedPosition:d$1??false}),K.row,d$1==="top"&&a("border-b-2",K.rowPinnedTop),d$1==="bottom"&&a("border-t-2",K.rowPinnedBottom),ce&&!r&&(O%2===0?K.rowOdd:K.rowEven),z&&!r&&K.rowSelected,j&&!r&&"cursor-pointer",r&&"pointer-events-none"),onClick:m=>{r||y(m.target,m.currentTarget)||t&&x||j?.({row:g$1,rowId:T.id});},onKeyDown:m=>{r||!j||m.key!=="Enter"&&m.key!==" "||y(m.target,m.currentTarget)||(m.preventDefault(),j({row:g$1,rowId:T.id}));},onDragStart:m=>{r||u?.onRowDragStart?.({row:g$1,rowId:T.id,event:m});},onDragEnd:m=>{r||u?.onRowDragEnd?.({row:g$1,rowId:T.id,event:m});},children:me.map((m,F)=>{let q=m.column.columnDef.meta,Q=m.getContext(),Be=m.getValue(),U=e.get(m.column.id),fe=U?.isSelectionColumn??false,Y=U?.isExpansionColumn??false,B=U?.isActionsColumn??false,P=U?.isSpacerColumn??false,ve=F+1-(Se>=0&&SeS({row:c,column:F}):void 0,onKeyDown:t&&!P?L=>{if(L.target!==L.currentTarget){L.key==="Escape"&&(L.preventDefault(),L.currentTarget.focus());return}V(L,c,F);}:void 0,onPointerDown:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||(L.currentTarget.focus(),_(L,c,F));}:void 0,onPointerEnter:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||W(L,c,F);}:void 0,className:a("border-b",A(s),K.cellBorder,te&&K.cellSelected,U?.utilityClassName,U?.isSpacerColumn&&"border-b-0 bg-transparent! p-0",U?.pinnedClassName,Fe,g(Q),q?.responsiveClassName,We),style:U?.cellStyle,children:jsx("div",{"data-row-click-ignore":fe||Y||B||P?"true":void 0,className:"min-w-0 max-w-full",style:T.depth>0&&m.column.id===Ue?{paddingInlineStart:`${T.depth}rem`}:void 0,children:P?null:M?.isLoading?q?.skeleton?.(Q)??M.skeleton??jsx(le,{className:a("h-4 rounded",q?.type==="numeric"?"ml-auto w-16":q?.type==="date"?"ml-auto w-28":"w-full")}):k&&m.column.id!=="__select__"&&m.column.id!=="__expand__"&&m.column.id!=="__actions__"?pa(Q,o,ye,{Checkbox:Oe,Input:X},n?{cancel:n.cancel,cancelOnEscape:n.cancelOnEscape,commit:()=>n.commit(g$1),commitOnEnter:n.commitOnEnter,errors:n.errors,isDirty:n.isDirty,isPending:n.isPending,onValueChange:n.clearError}:void 0):T.getIsGrouped()&&m.getIsPlaceholder()?null:T.getIsGrouped()&&m.getIsGrouped()?jsxs("button",{type:"button",className:"inline-flex min-w-0 items-center gap-1 text-left font-medium",onClick:()=>T.toggleExpanded(),"aria-expanded":T.getIsExpanded(),"aria-label":h$1,children:[jsx("span",{"aria-hidden":"true",children:ze(Q,K,{hasCustomCell:D.has(m.column.id),useCustomOverflowDefaults:D.has(m.column.id)})}),jsxs("span",{className:"shrink-0 opacity-70",children:["(",T.subRows.length,")"]})]}):T.getIsGrouped()&&m.getIsAggregated()?m.column.columnDef.aggregatedCell?flexRender(m.column.columnDef.aggregatedCell,Q):ze(Q,K,{hasCustomCell:false,useCustomOverflowDefaults:false}):ze(Q,K,{hasCustomCell:D.has(m.column.id)||fe||Y||B||P,useCustomOverflowDefaults:D.has(m.column.id)||fe||Y||B||P})})},m.id)})}),!r&&$&&b?jsx(Re,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":d$1,children:jsx(we,{colSpan:Math.max(1,ae),className:a("border-b",A(s),K.cellBorder),children:$.render({row:g$1,rowId:T.id,tableRow:T})})}):null]})}function $a(e,a){return e.row.id===a.row.id&&e.row.original===a.row.original&&e.rowIndex===a.rowIndex&&e.isSelected===a.isSelected&&e.isInitialLoadingRow===a.isInitialLoadingRow&&e.isEditing===a.isEditing&&(!e.isEditing||e.editingContext===a.editingContext)&&e.isExpanded===a.isExpanded&&e.isDraggable===a.isDraggable&&Xa(e.loadingState,a.loadingState)&&Ja(e.visibleCells,a.visibleCells)&&e.components===a.components&&Qa(e.columnLayouts,a.columnLayouts,a.visibleCells)&&e.currentDensity===a.currentDensity&&e.detailPanel===a.detailPanel&&e.isDetailExpanded===a.isDetailExpanded&&e.pinnedPosition===a.pinnedPosition&&e.onRowClick===a.onRowClick&&e.dragAndDrop===a.dragAndDrop&&e.getRowClassName===a.getRowClassName&&e.groupToggleLabel===a.groupToggleLabel&&e.gridMode===a.gridMode&&(!a.gridMode||e.gridRowAriaIndex===a.gridRowAriaIndex&&e.gridRowIndex===a.gridRowIndex&&e.activeGridCell.row===a.activeGridCell.row&&e.activeGridCell.column===a.activeGridCell.column&&e.cellSelectionEnabled===a.cellSelectionEnabled&&e.isGridCellSelected===a.isGridCellSelected&&e.onGridCellFocus===a.onGridCellFocus&&e.onGridCellKeyDown===a.onGridCellKeyDown&&e.onGridCellPointerDown===a.onGridCellPointerDown&&e.onGridCellPointerEnter===a.onGridCellPointerEnter)&&e.stripedRows===a.stripedRows&&e.uiClassNames===a.uiClassNames&&e.explicitCustomCellColumnIds===a.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===a.draftValues)}function Xa(e,a){return e?.isLoading===a?.isLoading&&e?.skeleton===a?.skeleton}function Ja(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.column.id===s.column.id})}function Qa(e,a,s){return s.every(o=>{let n=e.get(o.column.id),u=a.get(o.column.id);return n?.fixedSide===u?.fixedSide&&n?.isActionsColumn===u?.isActionsColumn&&n?.isExpansionColumn===u?.isExpansionColumn&&n?.isSelectionColumn===u?.isSelectionColumn&&n?.isSpacerColumn===u?.isSpacerColumn&&n?.isUtilityColumn===u?.isUtilityColumn&&n?.pinnedClassName===u?.pinnedClassName&&n?.utilityClassName===u?.utilityClassName&&Ya(n?.cellStyle,u?.cellStyle)})}function Ya(e,a){return e?.width===a?.width&&e?.minWidth===a?.minWidth&&e?.maxWidth===a?.maxWidth&&e?.left===a?.left&&e?.right===a?.right}var Ra=E.memo(qa,$a);function Za({columnGroupHeaderHeight:e,currentDensity:a$1,currentSorting:s,dir:o,draggedColumnIdRef:n,enableColumnReordering:u,enableColumnResizing:D,gridColumnIndex:C,gridMode:h$1,header:t$1,headerGroupHeaders:I,layout:c$1,primeColumnForResize:A,reorderColumn:x$1,resizeColumnLabel:v,resetColumnSize:S,TableHead:V,uiClassNames:_}){let W=t$1.column.columnDef.meta,H=E.useId(),b=!t$1.isPlaceholder&&t$1.subHeaders.length>0,k=b?t$1.column.columnDef:void 0,G=t$1.column.getCanSort(),r=t$1.column.getIsSorted(),z$1=s.findIndex(d=>d.id===t$1.column.id),M=u&&!t$1.isPlaceholder&&!b&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn,j=h(W?.hideOn);return jsxs(V,{colSpan:t$1.colSpan,scope:t$1.isPlaceholder||c$1.isSpacerColumn?void 0:b?"colgroup":"col",role:h$1?c$1.isSpacerColumn?"presentation":"columnheader":void 0,"aria-colindex":h$1&&!c$1.isSpacerColumn?C:void 0,"aria-hidden":t$1.isPlaceholder||c$1.isSpacerColumn||void 0,"aria-description":b?k?.description:void 0,"aria-labelledby":!t$1.isPlaceholder&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn?H:void 0,"data-column-id":t$1.column.id,"data-column-group-id":b?k?.id:void 0,"data-header-depth":t$1.depth,"data-dtp-slot":b?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",z(a$1),b&&_.columnGroupHeader,c$1.utilityClassName,c$1.isSpacerColumn&&"border-b-0 bg-transparent! p-0",c$1.pinnedClassName,j,f(t$1.getContext()),W?.headerClassName,b&&k?.headerClassName,W?.responsiveClassName),style:{...W?.headerStyle,...b?k?.headerStyle:void 0,...b&&(k?.headerHeight??e)!==void 0?{height:k?.headerHeight??e}:void 0,...c$1.headerStyle},title:b?k?.description:void 0,"aria-sort":r==="asc"?"ascending":r==="desc"?"descending":G?"none":void 0,draggable:M,tabIndex:M&&!G&&!(D&&t$1.column.getCanResize())?0:void 0,onDragStart:M?d=>{n.current=t$1.column.id,d.dataTransfer.effectAllowed="move";}:void 0,onDragOver:M?d=>{d.preventDefault(),d.dataTransfer.dropEffect="move";}:void 0,onDrop:M?d=>{d.preventDefault();let g=n.current;n.current=null,g&&x$1(g,t$1.column.id);}:void 0,onKeyDown:M?d=>{if(!d.altKey||d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();let g=I.filter(O=>!x(O.column.id)&&O.column.id!=="__spacer__"),$=g.findIndex(O=>O.column.id===t$1.column.id),T=g[d.key==="ArrowLeft"!=(o==="rtl")?$-1:$+1];T&&x$1(t$1.column.id,T.column.id);}:void 0,children:[t$1.isPlaceholder?null:G?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",f(t$1.getContext())),onClick:t$1.column.getToggleSortingHandler(),children:[jsx("span",{id:H,className:"truncate",children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),r?jsxs(Fragment,{children:[jsx(c,{className:a("size-4 shrink-0 transition-transform",r==="desc"?"rotate-0":"rotate-180")}),s.length>1&&z$1>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:z$1+1}):null]}):jsx(t,{className:a("size-4 shrink-0",_.headerSortIcon??"opacity-70")})]}):c$1.isUtilityColumn||c$1.isSpacerColumn?flexRender(t$1.column.columnDef.header,t$1.getContext()):jsx("span",{id:H,children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),D&&!t$1.isPlaceholder&&t$1.column.getCanResize()?jsx("div",{"aria-label":v,"aria-orientation":"vertical","aria-valuemax":tt(t$1),"aria-valuemin":at(t$1),"aria-valuenow":Math.round(t$1.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let d of ie(t$1))S(d.column.id);},onMouseDown:d=>{for(let g of ie(t$1))A(g.column.id,g.getSize());t$1.getResizeHandler()(d);},onTouchStart:d=>{for(let g of ie(t$1))A(g.column.id,g.getSize());t$1.getResizeHandler()(d);},onKeyDown:d=>{if(d.altKey)return;if(d.key==="Home"){d.preventDefault();for(let $ of ie(t$1))S($.column.id);return}if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault(),d.stopPropagation();let g=d.key==="ArrowRight"!=(o==="rtl");nt(t$1,(g?1:-1)*(d.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",_.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",t$1.column.getIsResizing()&&(_.resizeHandleActive??"after:opacity-100"))}):null]},t$1.id)}function et(e,a){return e.header.id===a.header.id&&e.header.column.id===a.header.column.id&&e.header.column.columnDef===a.header.column.columnDef&&e.header.colSpan===a.header.colSpan&&e.header.isPlaceholder===a.header.isPlaceholder&<(e.header,a.header)&&e.currentDensity===a.currentDensity&&e.columnGroupHeaderHeight===a.columnGroupHeaderHeight&&e.dir===a.dir&&e.enableColumnReordering===a.enableColumnReordering&&e.enableColumnResizing===a.enableColumnResizing&&e.gridMode===a.gridMode&&e.gridColumnIndex===a.gridColumnIndex&&e.TableHead===a.TableHead&&e.uiClassNames===a.uiClassNames&&e.draggedColumnIdRef===a.draggedColumnIdRef&&e.primeColumnForResize===a.primeColumnForResize&&e.reorderColumn===a.reorderColumn&&e.resizeColumnLabel===a.resizeColumnLabel&&e.resetColumnSize===a.resetColumnSize&&e.selectionState===a.selectionState&&ot(e.currentSorting,a.currentSorting)&&rt(e.headerGroupHeaders,a.headerGroupHeaders)&&it(e.layout,a.layout)}function ie(e){return e.subHeaders.length?e.getLeafHeaders().filter(a=>!a.subHeaders.length):[e]}function at(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.minSize??20),0)}function tt(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function nt(e,a){let s=ie(e),o=a/s.length;e.getContext().table.setColumnSizing(n=>{let u={...n};for(let D of s){let C=D.column,h=C.columnDef.minSize??20,t=C.columnDef.maxSize??Number.MAX_SAFE_INTEGER;u[C.id]=Math.min(t,Math.max(h,C.getSize()+o));}return u});}function lt(e,a){return e.subHeaders.length===a.subHeaders.length&&e.subHeaders.every((s,o)=>a.subHeaders[o]?.id===s.id)}function ot(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.desc===s.desc})}function rt(e,a){return e.length===a.length&&e.every((s,o)=>a[o]?.id===s.id)}function it(e,a){return e.fixedSide===a.fixedSide&&e.isSpacerColumn===a.isSpacerColumn&&e.isUtilityColumn===a.isUtilityColumn&&e.pinnedClassName===a.pinnedClassName&&e.utilityClassName===a.utilityClassName&&e.headerStyle?.width===a.headerStyle?.width&&e.headerStyle?.minWidth===a.headerStyle?.minWidth&&e.headerStyle?.maxWidth===a.headerStyle?.maxWidth&&e.headerStyle?.left===a.headerStyle?.left&&e.headerStyle?.right===a.headerStyle?.right}var ha=E.memo(Za,et);function vt({ariaDescribedBy:e,ariaLabelledBy:a$1,bodyRowComponents:s,cellSelection:o,cellSelectionEnabled:n,columnLayouts:u,columnGroupHeaderHeight:D,currentDensity:C,currentDetailExpanded:h,currentSorting:t=[],dir:I,DataTableEmptyState:c,dragAndDrop:A,draggedColumnIdRef:x$1,draftValues:v,editingRowId:S,editingContext:V,emptyNode:_,enableColumnReordering:W,enableColumnResizing:H,explicitCustomCellColumnIds:b,fillMinWidth:k,flexGrow:G,gridMode:r,gridPageSize:z,gridRowOffset:M,onGridActiveRowIndexChange:j,onCellSelectionChange:d$1,getColumnLayout:g,getRowClassName:$,getRowLoadingState:T,infiniteScroll:O,layoutMode:ye,localSearchValue:ce,onRowClick:K,primeColumnForResize:me,renderedRows:ae,detailPanel:Oe,topPinnedRows:X,bottomPinnedRows:le,reorderColumn:we,resetColumnSize:Re,resolvedLabels:J,rowsToRender:he,ScrollArea:Ue,ScrollBar:Se,scrollbarVisibility:m,sentinelRef:F,setDraftValues:q,shouldRenderInitialLoading:Q,stateOverlayNode:Be,stickyHeader:U,stripedRows:fe,summaryRows:Y,table:B,tableClassName:P,tableContainerClassName:ve,Table:Fe,TableBody:We,TableCell:te,TableFooter:L="tfoot",TableHead:Sa,TableHeader:ka,TableRow:be,tableScrollContainerRef:je,tableScrollElement:qe,totalRowCount:na,uiClassNames:oe,virtualPaddingBottom:la,virtualPaddingTop:oa,visibleLeafColumnCount:ke,visibleLeafColumns:ne}){let Ea=B.getIsAllPageRowsSelected()?true:B.getIsSomePageRowsSelected()?"indeterminate":false,ra=B.getFilteredRowModel().rows,Ha=E.useMemo(()=>Y.length?ra.map(l=>l.original):[],[ra,Y.length]),Ee=B.getHeaderGroups().length,He=X.length+ae.length+le.length,[ge,ia]=E.useState({row:0,column:0}),sa=E.useRef(false),$e=E.useRef(false),De=E.useMemo(()=>[...X,...ae,...le],[le,ae,X]),se=E.useMemo(()=>ne.flatMap((l,i)=>l.id==="__spacer__"?[]:[i]),[ne]),pe=E.useCallback((l,i)=>{let f=De[l],p=ne[i];return f&&p&&!x(p.id)&&p.id!=="__spacer__"?{rowId:f.id,columnId:p.id}:void 0},[De,ne]),de=E.useMemo(()=>{if(!o)return;let l=De.findIndex(y=>y.id===o.anchor.rowId),i=De.findIndex(y=>y.id===o.focus.rowId),f=ne.findIndex(y=>y.id===o.anchor.columnId),p=ne.findIndex(y=>y.id===o.focus.columnId);if(!(l<0||i<0||f<0||p<0))return {firstRow:Math.min(l,i),lastRow:Math.max(l,i),firstColumn:Math.min(f,p),lastColumn:Math.max(f,p)}},[o,De,ne]),Pa=E.useCallback((l,i)=>!!(de&&l>=de.firstRow&&l<=de.lastRow&&i>=de.firstColumn&&i<=de.lastColumn),[de]),Na=E.useCallback(l=>{sa.current=true,ia(l);},[]),Pe=E.useCallback((l,i,f)=>{if(!n)return;let p=pe(l,i);if(!p)return;let y=f&&o?.anchor?o.anchor:p;d$1({anchor:y,focus:p});},[o,n,pe,d$1]),Ia=E.useCallback((l,i,f)=>{!n||l.button!==0||(l.preventDefault(),$e.current=true,Pe(i,f,l.shiftKey));},[n,Pe]),La=E.useCallback((l,i,f)=>{!n||!$e.current||l.buttons!==1||Pe(i,f,true);},[n,Pe]);E.useEffect(()=>{let l=()=>{$e.current=false;};return window.addEventListener("pointerup",l),()=>window.removeEventListener("pointerup",l)},[]),E.useEffect(()=>{if(!r)return;j?.(ge.row);let l=requestAnimationFrame(()=>{let i=je.current?.querySelectorAll('[data-dtp-grid-cell="true"]'),f=Array.from(i??[]).find(p=>Number(p.dataset.gridRowIndex)===ge.row&&Number(p.dataset.gridColumnIndex)===ge.column);f&&sa.current&&f.focus();});return ()=>cancelAnimationFrame(l)},[ge,r,j,je]);let xa=E.useCallback((l,i,f)=>{if(l.defaultPrevented||l.target!==l.currentTarget)return;let p=Math.max(1,z??(Math.floor((qe?.clientHeight||0)/Math.max(1,qe?.querySelector("tr")?.offsetHeight||48))||10)),y=Math.max(0,He-1),Z=Math.max(0,se.indexOf(f)),Ne=Math.max(0,se.length-1),ee=i,Ce=Z;switch(l.key){case "ArrowUp":ee--;break;case "ArrowDown":ee++;break;case "ArrowLeft":Ce--;break;case "ArrowRight":Ce++;break;case "Home":(l.ctrlKey||l.metaKey)&&(ee=0),Ce=0;break;case "End":(l.ctrlKey||l.metaKey)&&(ee=y),Ce=Ne;break;case "PageUp":ee-=p;break;case "PageDown":ee+=p;break;default:return}l.preventDefault();let Je={row:Math.min(y,Math.max(0,ee)),column:se[Math.min(Ne,Math.max(0,Ce))]??0};if(ia(Je),l.shiftKey&&n){let Qe=pe(Je.row,Je.column),da=o?.anchor??pe(i,f)??Qe;da&&Qe&&d$1({anchor:da,focus:Qe});}},[o,n,He,pe,z,se,d$1,qe]),Xe=(l,i,f)=>{let p=l.original,y=d(p),Z=y?{isLoading:true}:T?.(p,i),Ne=typeof Z=="boolean"?{isLoading:Z}:Z,ee=y?false:A?.getRowDraggable?.(p)??false;return jsx(Ra,{columnLayouts:u,components:s,currentDensity:C,draftValues:v,editingContext:V,dragAndDrop:A,explicitCustomCellColumnIds:b,getRowClassName:$,groupToggleLabel:l.getIsExpanded()?J.collapseRow:J.expandRow,isDraggable:ee,isDetailExpanded:h===true||!!h[l.id],isEditing:S===l.id,isExpanded:l.getIsExpanded(),isInitialLoadingRow:y,isSelected:l.getIsSelected(),loadingState:Ne,onRowClick:K,originalRow:p,pinnedPosition:f,detailPanel:Oe,row:l,rowIndex:i,setDraftValues:q,stripedRows:fe,uiClassNames:oe,visibleCells:l.getVisibleCells(),visibleLeafColumnCount:ke,gridMode:r,gridRowIndex:i,gridRowAriaIndex:Ee+M+i+1,activeGridCell:ge,cellSelectionEnabled:n,isGridCellSelected:Pa,onGridCellFocus:Na,onGridCellKeyDown:xa,onGridCellPointerDown:Ia,onGridCellPointerEnter:La},`${f??"center"}-${l.id}`)};return jsxs("div",{"data-dtp-slot":"data-table-table-shell",className:a("relative box-border border-2 border-transparent transition-colors",G?"flex min-h-0 flex-1 flex-col":"h-full",A?.isDragging&&(oe.dragActive??"rounded-md border-dashed")),children:[jsx("div",{ref:je,className:a(G?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(Ue,{type:m,className:a("rounded-md border",G?"min-h-0 flex-1":"h-full",oe.tableContainer,oe.tableScrollArea,ve),children:[jsx("div",{className:"min-h-full",children:jsxs(Fe,{"aria-describedby":e,"aria-labelledby":a$1,role:r?"grid":void 0,"aria-colcount":r?se.length:void 0,"aria-rowcount":r?Ee+(na??He)+Y.length:void 0,className:a("w-full table-fixed border-separate border-spacing-0",P),style:{minWidth:ye==="fill"&&k||void 0,width:ye==="fit"?B.getTotalSize():"100%"},children:[jsx("colgroup",{children:B.getVisibleLeafColumns().map(l=>{let i=g(l.id);return jsx("col",{style:i.colStyle},l.id)})}),jsx(ka,{role:r?"rowgroup":void 0,className:a(U?oe.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:B.getHeaderGroups().map(l=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?l.depth+1:void 0,children:l.headers.map(i=>jsx(ha,{columnGroupHeaderHeight:D,currentDensity:C,currentSorting:t,dir:I,draggedColumnIdRef:x$1,enableColumnReordering:W,enableColumnResizing:H,header:i,headerGroupHeaders:l.headers,layout:dt(i,g),primeColumnForResize:me,reorderColumn:we,resizeColumnLabel:J.resizeColumn(typeof i.column.columnDef.header=="string"?i.column.columnDef.header:i.column.id),resetColumnSize:Re,selectionState:i.column.id==="__select__"?Ea:void 0,TableHead:Sa,uiClassNames:oe,gridMode:r,gridColumnIndex:i.isPlaceholder||i.subHeaders.length||i.column.id==="__spacer__"?void 0:B.getVisibleLeafColumns().filter(f=>f.id!=="__spacer__").findIndex(f=>f.id===i.column.id)+1},i.id))},l.id))}),jsx(We,{role:r?"rowgroup":void 0,children:X.length||ae.length||le.length?jsxs(Fragment,{children:[X.map((l,i)=>Xe(l,i,"top")),oa>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:oa}})}):null,he.map(({row:l,rowIndex:i})=>Xe(l,i+X.length)),la>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:la}})}):null,le.map((l,i)=>Xe(l,X.length+ae.length+i,"bottom"))]}):jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+1:void 0,children:jsx(te,{role:r?"gridcell":void 0,"aria-colindex":r?1:void 0,colSpan:Math.max(1,ke),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:_??jsx(c,{title:ce?J.noMatchingRowsTitle:J.noRowsTitle,description:ce?J.noMatchingRowsDescription:J.noRowsDescription})})})})}),Y.length?jsx(L,{role:r?"rowgroup":void 0,children:Y.map((l,i)=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+(na??He)+i+1:void 0,children:ne.map((f,p)=>{let y=g(f.id),Z=y.isSpacerColumn?null:l.cells[f.id]??(p===0?l.label:null);return jsx(te,{"data-column-id":f.id,role:r?y.isSpacerColumn?"presentation":"gridcell":void 0,"aria-colindex":r&&!y.isSpacerColumn?se.indexOf(p)+1:void 0,"aria-hidden":y.isSpacerColumn||void 0,className:a(y.isSpacerColumn?"border-b-0 bg-transparent! p-0":"border-b font-medium",!y.isSpacerColumn&&oe.cellBorder),style:y.cellStyle,children:typeof Z=="function"?Z({rows:Ha,columnId:f.id}):Z},`${l.key}-${f.id}`)})},l.key))}):null]})}),O?.enabled&&ae.length&&!Q?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null,jsx(Se,{orientation:"horizontal"})]})}),Be]})}function dt(e,a){let s=a(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return s;let o=e.getLeafHeaders().filter(D=>!D.subHeaders.length).map(D=>a(D.column.id)),n=o[0]?.fixedSide;if(!n||!o.every(D=>D.fixedSide===n))return s;let u=n==="left"?o[0]:o.at(-1);return {...s,fixedSide:n,headerStyle:u?.headerStyle?{left:u.headerStyle.left,right:u.headerStyle.right}:void 0,pinnedClassName:u?.pinnedClassName}}export{mt as a,gt as b,Ra as c,ha as d,vt as e};//# sourceMappingURL=chunk-PRDXFLFB.js.map -//# sourceMappingURL=chunk-PRDXFLFB.js.map \ No newline at end of file diff --git a/dist/chunk-PRDXFLFB.js.map b/dist/chunk-PRDXFLFB.js.map deleted file mode 100644 index 9748373..0000000 --- a/dist/chunk-PRDXFLFB.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/use-row-editing.tsx","../src/core/data-table/data-table-virtual-row-measurement.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["useRowEditing","columns","editableRows","onError","editingRowId","setEditingRowId","N","draftValues","setDraftValues","draftValuesRef","originalDraftValues","setOriginalDraftValues","editErrors","setEditErrors","isSavingEdit","setIsSavingEdit","isEditDirty","areDraftValuesEqual","cancelEditing","startEditingRow","row","rowId","initialValues","defaultDraftValues","saveEdit","draftSnapshot","rollback","validation","validationErrors","normalizeEditValidationErrors","optimisticResult","error","clearEditError","columnId","current","next","getDataTableLeafColumns","draft","column","renderEditableCell","context","components","editing","Checkbox","Input","meta","accessorKey","draftValue","setDraftValue","value","handleKeyDown","event","inputType","getEditableInputType","jsxs","jsx","checked","getEditableInputValue","rawValue","parsedValue","parseEditableInputValue","left","right","keys","key","type","previousValue","DataTableVirtualRowMeasurementContext","Ge","DataTableVirtualRowMeasurementProvider","children","measureRow","useDataTableVirtualRowMeasurement","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","IconClock","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","wa","DataTableBodyRowInner","columnLayouts","currentDensity","editingContext","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","groupToggleLabel","gridMode","gridRowAriaIndex","gridRowIndex","activeGridCell","cellSelectionEnabled","isGridCellSelected","onGridCellFocus","onGridCellKeyDown","onGridCellPointerDown","onGridCellPointerEnter","isDraggable","isDetailExpanded","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","pinnedPosition","originalRow","detailPanel","rowIndex","stripedRows","uiClassNames","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","virtualRowMeasurement","measureElement","firstDataColumnId","cell","spacerColumnIndex","Me","isDataTableInteractiveTarget","columnIndex","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","gridColumnAriaIndex","hideClassName","hideOnClassName","cellClassName","isDataTableLoadingRow","isCellSelected","getDensityCellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","sameLoadingState","sameVisibleCells","sameColumnLayouts","index","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","columnGroupHeaderHeight","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","gridColumnIndex","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","Ve","isColumnGroup","groupDefinition","canSort","sortingState","sortingIndex","sort","canReorderColumn","getDensityHeaderClassName","headerAlignClassName","sourceColumnId","headers","item","isUtilityColumnId","currentIndex","target","Fragment","IconChevronDown","IconSelector","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","cellSelection","currentDetailExpanded","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","gridPageSize","gridRowOffset","onGridActiveRowIndexChange","onCellSelectionChange","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","topPinnedRows","bottomPinnedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","scrollbarVisibility","sentinelRef","shouldRenderInitialLoading","stateOverlayNode","stickyHeader","summaryRows","table","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","tableScrollElement","totalRowCount","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","headerRowCount","displayRowCount","activeCell","setActiveCell","shouldRestoreGridFocusRef","pointerSelectingRef","gridRows","navigableGridColumnIndices","getGridCoordinate","selectedBounds","anchorRow","focusRow","anchorColumn","focusColumn","handleGridCellFocus","selectGridCell","extend","focus","anchor","handleGridCellPointerDown","handleGridCellPointerEnter","stopSelecting","frame","moveGridFocus","pageRows","lastRow","currentColumnPosition","lastColumnPosition","nextRow","nextColumnPosition","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","summaryIndex","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-PRDXFLFB.js","sourcesContent":["import * as React from \"react\";\nimport type { CellContext } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [originalDraftValues, setOriginalDraftValues] = React.useState<\n Record\n >({});\n const [editErrors, setEditErrors] = React.useState>(\n {},\n );\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n const isEditDirty = React.useMemo(\n () => !areDraftValuesEqual(draftValues, originalDraftValues),\n [draftValues, originalDraftValues],\n );\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n setEditErrors({});\n setOriginalDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setOriginalDraftValues({ ...initialValues });\n setDraftValues(initialValues);\n setEditErrors({});\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return false;\n }\n\n setIsSavingEdit(true);\n const draftSnapshot = { ...draftValuesRef.current };\n let rollback: (() => void) | undefined;\n try {\n const validation = await editableRows.validateRow?.(\n row,\n draftSnapshot,\n );\n const validationErrors = normalizeEditValidationErrors(validation);\n if (Object.keys(validationErrors).length > 0) {\n setEditErrors(validationErrors);\n return false;\n }\n\n setEditErrors({});\n const optimisticResult = editableRows.onOptimisticUpdate?.(\n row,\n draftSnapshot,\n );\n rollback =\n typeof optimisticResult === \"function\"\n ? optimisticResult\n : undefined;\n await editableRows.onSaveRow(row, draftSnapshot);\n editableRows.onSaveSuccess?.(row, draftSnapshot);\n React.startTransition(cancelEditing);\n return true;\n } catch (error) {\n try {\n rollback?.();\n } catch {\n // Preserve the original save error for the public error callbacks.\n }\n editableRows.onSaveError?.(error, row, draftSnapshot);\n onError?.(error, row);\n return false;\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n const clearEditError = React.useCallback((columnId: string) => {\n setEditErrors((current) => {\n if (!current[columnId] && !current._row) {\n return current;\n }\n const next = { ...current };\n delete next[columnId];\n delete next._row;\n return next;\n });\n }, []);\n\n return {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n editing?: {\n cancel: () => void;\n commit: () => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n onValueChange: (columnId: string) => void;\n },\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const error =\n editing?.errors[accessorKey] ??\n editing?.errors[context.column.id] ??\n editing?.errors._row;\n const setDraftValue = (value: unknown) => {\n editing?.onValueChange(accessorKey);\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\" && editing?.cancelOnEscape) {\n event.preventDefault();\n editing.cancel();\n } else if (\n event.key === \"Enter\" &&\n !event.shiftKey &&\n editing?.commitOnEnter\n ) {\n event.preventDefault();\n editing.commit();\n }\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n error,\n isDirty: editing?.isDirty ?? false,\n isPending: editing?.isPending ?? false,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n
\n {\n setDraftValue(checked === true);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
\n );\n }\n\n return (\n
\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
\n );\n}\n\nfunction normalizeEditValidationErrors(\n value: void | string | Record,\n) {\n if (!value) {\n return {};\n }\n return typeof value === \"string\" ? { _row: value } : value;\n}\n\nfunction areDraftValuesEqual(\n left: Record,\n right: Record,\n) {\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n return Array.from(keys).every((key) => Object.is(left[key], right[key]));\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\nconst DataTableVirtualRowMeasurementContext = React.createContext<\n ((element: HTMLTableRowElement | null) => void) | undefined\n>(undefined);\n\nexport function DataTableVirtualRowMeasurementProvider({\n children,\n measureRow,\n}: {\n children: React.ReactNode;\n measureRow: ((element: HTMLTableRowElement | null) => void) | undefined;\n}) {\n return (\n \n {children}\n \n );\n}\n\nexport function useDataTableVirtualRowMeasurement():\n | ((element: HTMLTableRowElement | null) => void)\n | undefined {\n return React.useContext(DataTableVirtualRowMeasurementContext);\n}\n","import * as React from \"react\";\nimport { flexRender, type CellContext } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport { flexRender, type Cell, type Row } from \"@tanstack/react-table\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { useDataTableVirtualRowMeasurement } from \"./data-table-virtual-row-measurement\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\n\nexport type DataTableRowEditingContext = {\n cancel: () => void;\n clearError: (columnId: string) => void;\n commit: (row: TData) => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n};\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n editingContext?: DataTableRowEditingContext;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n groupToggleLabel: string;\n gridMode: boolean;\n gridRowAriaIndex: number;\n gridRowIndex: number;\n activeGridCell: { row: number; column: number };\n cellSelectionEnabled: boolean;\n isGridCellSelected: (row: number, column: number) => boolean;\n onGridCellFocus: (cell: { row: number; column: number }) => void;\n onGridCellKeyDown: (\n event: React.KeyboardEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerDown: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerEnter: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n isDraggable: boolean;\n isDetailExpanded: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n pinnedPosition?: Exclude;\n originalRow: TData;\n detailPanel: DataTableProps[\"detailPanel\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n editingContext,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n groupToggleLabel,\n gridMode,\n gridRowAriaIndex,\n gridRowIndex,\n activeGridCell,\n cellSelectionEnabled,\n isGridCellSelected,\n onGridCellFocus,\n onGridCellKeyDown,\n onGridCellPointerDown,\n onGridCellPointerEnter,\n isDraggable,\n isDetailExpanded,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n pinnedPosition,\n originalRow,\n detailPanel,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n const virtualRowMeasurement = useDataTableVirtualRowMeasurement();\n const measureElement = pinnedPosition ? undefined : virtualRowMeasurement;\n const firstDataColumnId = visibleCells.find(\n (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn,\n )?.column.id;\n const spacerColumnIndex = visibleCells.findIndex(\n (cell) => cell.column.id === \"__spacer__\",\n );\n\n return (\n \n 0 ? row.depth : undefined\n }\n data-dtp-slot={\n pinnedPosition ? \"data-table-pinned-row\" : \"data-table-row\"\n }\n data-row-pinned={pinnedPosition}\n data-row-grouped={row.getIsGrouped() || undefined}\n draggable={isInitialLoadingRow ? false : isDraggable}\n data-loading={loadingState?.isLoading || undefined}\n data-row-index={isInitialLoadingRow ? undefined : rowIndex}\n data-row-parity={\n stripedRows && !isInitialLoadingRow\n ? rowIndex % 2 === 0\n ? \"odd\"\n : \"even\"\n : undefined\n }\n data-state={\n isInitialLoadingRow ? undefined : isSelected ? \"selected\" : undefined\n }\n role={gridMode ? \"row\" : undefined}\n aria-rowindex={gridMode ? gridRowAriaIndex : undefined}\n tabIndex={\n !gridMode && onRowClick && !isInitialLoadingRow ? 0 : undefined\n }\n className={cn(\n !isInitialLoadingRow &&\n getRowClassName?.(originalRow, {\n row: originalRow,\n rowId: row.id,\n rowIndex,\n isEditing,\n isExpanded,\n isLoading: Boolean(loadingState?.isLoading),\n isSelected,\n pinnedPosition: pinnedPosition ?? false,\n }),\n uiClassNames.row,\n pinnedPosition === \"top\" &&\n cn(\"border-b-2\", uiClassNames.rowPinnedTop),\n pinnedPosition === \"bottom\" &&\n cn(\"border-t-2\", uiClassNames.rowPinnedBottom),\n stripedRows &&\n !isInitialLoadingRow &&\n (rowIndex % 2 === 0\n ? uiClassNames.rowOdd\n : uiClassNames.rowEven),\n isSelected && !isInitialLoadingRow && uiClassNames.rowSelected,\n onRowClick && !isInitialLoadingRow && \"cursor-pointer\",\n isInitialLoadingRow && \"pointer-events-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n if (gridMode && cellSelectionEnabled) return;\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell, columnIndex) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const gridColumnAriaIndex =\n columnIndex +\n 1 -\n (spacerColumnIndex >= 0 && spacerColumnIndex < columnIndex ? 1 : 0);\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n const isCellSelected =\n gridMode && cellSelectionEnabled &&\n !isInitialLoadingRow &&\n !isSpacerColumn &&\n isGridCellSelected(gridRowIndex, columnIndex);\n\n return (\n onGridCellFocus({ row: gridRowIndex, column: columnIndex })\n : undefined\n }\n onKeyDown={\n gridMode && !isSpacerColumn\n ? (event: React.KeyboardEvent) => {\n if (event.target !== event.currentTarget) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.currentTarget.focus();\n }\n return;\n }\n onGridCellKeyDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerDown={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n event.currentTarget.focus();\n onGridCellPointerDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerEnter={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n onGridCellPointerEnter(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n className={cn(\n \"border-b\",\n getDensityCellClassName(currentDensity),\n uiClassNames.cellBorder,\n isCellSelected && uiClassNames.cellSelected,\n layout?.utilityClassName,\n layout?.isSpacerColumn && \"border-b-0 bg-transparent! p-0\",\n layout?.pinnedClassName,\n hideClassName,\n cellAlignClassName(cellContext),\n meta?.responsiveClassName,\n cellClassName,\n )}\n style={layout?.cellStyle}\n >\n 0 && cell.column.id === firstDataColumnId\n ? { paddingInlineStart: `${row.depth}rem` }\n : undefined\n }\n >\n {isSpacerColumn ? null : loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(\n cellContext,\n draftValues,\n setDraftValues,\n {\n Checkbox,\n Input,\n },\n editingContext\n ? {\n cancel: editingContext.cancel,\n cancelOnEscape: editingContext.cancelOnEscape,\n commit: () => editingContext.commit(originalRow),\n commitOnEnter: editingContext.commitOnEnter,\n errors: editingContext.errors,\n isDirty: editingContext.isDirty,\n isPending: editingContext.isPending,\n onValueChange: editingContext.clearError,\n }\n : undefined,\n )\n ) : row.getIsGrouped() && cell.getIsPlaceholder() ? null : row.getIsGrouped() && cell.getIsGrouped() ? (\n row.toggleExpanded()}\n aria-expanded={row.getIsExpanded()}\n aria-label={groupToggleLabel}\n >\n \n {renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id),\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id),\n })}\n \n \n ({row.subRows.length})\n \n \n ) : row.getIsGrouped() && cell.getIsAggregated() ? (\n cell.column.columnDef.aggregatedCell\n ? flexRender(cell.column.columnDef.aggregatedCell, cellContext)\n : renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell: false,\n useCustomOverflowDefaults: false,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && detailPanel && isDetailExpanded ? (\n \n \n {detailPanel.render({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n (!previous.isEditing || previous.editingContext === next.editingContext) &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.detailPanel === next.detailPanel &&\n previous.isDetailExpanded === next.isDetailExpanded &&\n previous.pinnedPosition === next.pinnedPosition &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.groupToggleLabel === next.groupToggleLabel &&\n previous.gridMode === next.gridMode &&\n (!next.gridMode ||\n (previous.gridRowAriaIndex === next.gridRowAriaIndex &&\n previous.gridRowIndex === next.gridRowIndex &&\n previous.activeGridCell.row === next.activeGridCell.row &&\n previous.activeGridCell.column === next.activeGridCell.column &&\n previous.cellSelectionEnabled === next.cellSelectionEnabled &&\n previous.isGridCellSelected === next.isGridCellSelected &&\n previous.onGridCellFocus === next.onGridCellFocus &&\n previous.onGridCellKeyDown === next.onGridCellKeyDown &&\n previous.onGridCellPointerDown === next.onGridCellPointerDown &&\n previous.onGridCellPointerEnter === next.onGridCellPointerEnter)) &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { Header, SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnGroupDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\n\ntype DataTableHeaderCellProps = {\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n gridColumnIndex?: number;\n gridMode: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n columnGroupHeaderHeight,\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n gridColumnIndex,\n gridMode,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const groupDefinition = isColumnGroup\n ? (header.column.columnDef as DataTableColumnGroupDef)\n : undefined;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.columnGroupHeaderHeight === next.columnGroupHeaderHeight &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.gridMode === next.gridMode &&\n previous.gridColumnIndex === next.gridColumnIndex &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n Column,\n ExpandedState,\n Header,\n RowPinningPosition,\n Row,\n Table as TanStackTable,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableCellSelection,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DataTableBodyRow,\n type DataTableRowEditingContext,\n} from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow, isUtilityColumnId } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n cellSelection: DataTableCellSelection | null;\n cellSelectionEnabled: boolean;\n columnLayouts: ReadonlyMap;\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentDetailExpanded: ExpandedState;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n editingContext?: DataTableRowEditingContext;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n gridMode: boolean;\n gridPageSize?: number;\n gridRowOffset: number;\n onGridActiveRowIndexChange?: (rowIndex: number) => void;\n onCellSelectionChange: (selection: DataTableCellSelection | null) => void;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n detailPanel: DataTableProps[\"detailPanel\"];\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n scrollbarVisibility: DataTableProps[\"scrollbarVisibility\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stateOverlayNode?: React.ReactNode;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n totalRowCount?: number;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n cellSelection,\n cellSelectionEnabled,\n columnLayouts,\n columnGroupHeaderHeight,\n currentDensity,\n currentDetailExpanded,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n editingContext,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n gridMode,\n gridPageSize,\n gridRowOffset,\n onGridActiveRowIndexChange,\n onCellSelectionChange,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n detailPanel,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n scrollbarVisibility,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stateOverlayNode,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n tableScrollElement,\n totalRowCount,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n const headerRowCount = table.getHeaderGroups().length;\n const displayRowCount =\n topPinnedRows.length + renderedRows.length + bottomPinnedRows.length;\n const [activeCell, setActiveCell] = React.useState({ row: 0, column: 0 });\n const shouldRestoreGridFocusRef = React.useRef(false);\n const pointerSelectingRef = React.useRef(false);\n const gridRows = React.useMemo(\n () => [...topPinnedRows, ...renderedRows, ...bottomPinnedRows],\n [bottomPinnedRows, renderedRows, topPinnedRows],\n );\n const navigableGridColumnIndices = React.useMemo(\n () =>\n visibleLeafColumns.flatMap((column, index) =>\n column.id === \"__spacer__\" ? [] : [index],\n ),\n [visibleLeafColumns],\n );\n const getGridCoordinate = React.useCallback(\n (rowIndex: number, columnIndex: number) => {\n const row = gridRows[rowIndex];\n const column = visibleLeafColumns[columnIndex];\n return row &&\n column &&\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\"\n ? { rowId: row.id, columnId: column.id }\n : undefined;\n },\n [gridRows, visibleLeafColumns],\n );\n const selectedBounds = React.useMemo(() => {\n if (!cellSelection) return undefined;\n const anchorRow = gridRows.findIndex((row) => row.id === cellSelection.anchor.rowId);\n const focusRow = gridRows.findIndex((row) => row.id === cellSelection.focus.rowId);\n const anchorColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.anchor.columnId,\n );\n const focusColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) return undefined;\n return {\n firstRow: Math.min(anchorRow, focusRow),\n lastRow: Math.max(anchorRow, focusRow),\n firstColumn: Math.min(anchorColumn, focusColumn),\n lastColumn: Math.max(anchorColumn, focusColumn),\n };\n }, [cellSelection, gridRows, visibleLeafColumns]);\n const isGridCellSelected = React.useCallback(\n (rowIndex: number, columnIndex: number) =>\n Boolean(\n selectedBounds &&\n rowIndex >= selectedBounds.firstRow &&\n rowIndex <= selectedBounds.lastRow &&\n columnIndex >= selectedBounds.firstColumn &&\n columnIndex <= selectedBounds.lastColumn,\n ),\n [selectedBounds],\n );\n const handleGridCellFocus = React.useCallback(\n (cell: { row: number; column: number }) => {\n shouldRestoreGridFocusRef.current = true;\n setActiveCell(cell);\n },\n [],\n );\n const selectGridCell = React.useCallback(\n (rowIndex: number, columnIndex: number, extend: boolean) => {\n if (!cellSelectionEnabled) return;\n const focus = getGridCoordinate(rowIndex, columnIndex);\n if (!focus) return;\n const anchor =\n extend && cellSelection?.anchor\n ? cellSelection.anchor\n : focus;\n onCellSelectionChange({ anchor, focus });\n },\n [cellSelection, cellSelectionEnabled, getGridCoordinate, onCellSelectionChange],\n );\n const handleGridCellPointerDown = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || event.button !== 0) return;\n // Keep native text/image dragging from taking ownership of the pointer\n // stream before the range reaches its destination cell.\n event.preventDefault();\n pointerSelectingRef.current = true;\n selectGridCell(rowIndex, columnIndex, event.shiftKey);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n const handleGridCellPointerEnter = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || !pointerSelectingRef.current || event.buttons !== 1) return;\n selectGridCell(rowIndex, columnIndex, true);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n React.useEffect(() => {\n const stopSelecting = () => { pointerSelectingRef.current = false; };\n window.addEventListener(\"pointerup\", stopSelecting);\n return () => window.removeEventListener(\"pointerup\", stopSelecting);\n }, []);\n\n // Keep focus on the roving cell after sorting, filtering, or a virtual row\n // range changes. A missing target is normal while a virtualizer is rendering.\n React.useEffect(() => {\n if (!gridMode) return;\n onGridActiveRowIndexChange?.(activeCell.row);\n const frame = requestAnimationFrame(() => {\n const cells = tableScrollContainerRef.current?.querySelectorAll(\n '[data-dtp-grid-cell=\"true\"]',\n );\n const target = Array.from(cells ?? []).find(\n (cell) =>\n Number(cell.dataset.gridRowIndex) === activeCell.row &&\n Number(cell.dataset.gridColumnIndex) === activeCell.column,\n );\n if (target && shouldRestoreGridFocusRef.current) {\n target.focus();\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [activeCell, gridMode, onGridActiveRowIndexChange, tableScrollContainerRef]);\n\n const moveGridFocus = React.useCallback(\n (event: React.KeyboardEvent, row: number, column: number) => {\n if (event.defaultPrevented || event.target !== event.currentTarget) return;\n const pageRows = Math.max(\n 1,\n gridPageSize ?? (\n Math.floor(\n (tableScrollElement?.clientHeight || 0) /\n Math.max(1, (tableScrollElement?.querySelector(\"tr\") as HTMLElement | null)?.offsetHeight || 48),\n ) || 10),\n );\n const lastRow = Math.max(0, displayRowCount - 1);\n const currentColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.indexOf(column),\n );\n const lastColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.length - 1,\n );\n let nextRow = row;\n let nextColumnPosition = currentColumnPosition;\n switch (event.key) {\n case \"ArrowUp\": nextRow--; break;\n case \"ArrowDown\": nextRow++; break;\n case \"ArrowLeft\": nextColumnPosition--; break;\n case \"ArrowRight\": nextColumnPosition++; break;\n case \"Home\":\n if (event.ctrlKey || event.metaKey) nextRow = 0;\n nextColumnPosition = 0;\n break;\n case \"End\":\n if (event.ctrlKey || event.metaKey) nextRow = lastRow;\n nextColumnPosition = lastColumnPosition;\n break;\n case \"PageUp\": nextRow -= pageRows; break;\n case \"PageDown\": nextRow += pageRows; break;\n default: return;\n }\n event.preventDefault();\n const nextCell = {\n row: Math.min(lastRow, Math.max(0, nextRow)),\n column:\n navigableGridColumnIndices[\n Math.min(\n lastColumnPosition,\n Math.max(0, nextColumnPosition),\n )\n ] ?? 0,\n };\n setActiveCell(nextCell);\n if (event.shiftKey && cellSelectionEnabled) {\n const focus = getGridCoordinate(nextCell.row, nextCell.column);\n const anchor =\n cellSelection?.anchor ?? getGridCoordinate(row, column) ?? focus;\n if (anchor && focus) onCellSelectionChange({ anchor, focus });\n }\n },\n [\n cellSelection,\n cellSelectionEnabled,\n displayRowCount,\n getGridCoordinate,\n gridPageSize,\n navigableGridColumnIndices,\n onCellSelectionChange,\n tableScrollElement,\n ],\n );\n const renderBodyRow = (\n row: Row,\n rowIndex: number,\n pinnedPosition?: Exclude,\n ) => {\n const originalRow = row.original;\n const isInitialLoadingRow = isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n };\n\n return (\n \n \n \n
\n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n column.id !== \"__spacer__\",\n )\n .findIndex(\n (column) =>\n column.id === header.column.id,\n ) + 1\n }\n />\n ))}\n \n ))}\n \n \n {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? (\n <>\n {topPinnedRows.map((row, index) =>\n renderBodyRow(row, index, \"top\"),\n )}\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) =>\n renderBodyRow(row, rowIndex + topPinnedRows.length),\n )}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n {bottomPinnedRows.map((row, index) =>\n renderBodyRow(\n row,\n topPinnedRows.length + renderedRows.length + index,\n \"bottom\",\n ),\n )}\n \n ) : (\n \n \n
\n {emptyNode ?? (\n \n )}\n
\n \n
\n )}\n
\n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow, summaryIndex) => (\n \n {visibleLeafColumns.map((column, index) => {\n const layout = getColumnLayout(column.id);\n const content = layout.isSpacerColumn\n ? null\n : (summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null));\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
\n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n \n \n
\n {stateOverlayNode}\n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-UMW6DOXG.js b/dist/chunk-UMW6DOXG.js new file mode 100644 index 0000000..632716a --- /dev/null +++ b/dist/chunk-UMW6DOXG.js @@ -0,0 +1,2 @@ +import {a as a$1}from'./chunk-LTEXTQ2M.js';import {a}from'./chunk-IZQDLLCH.js';import {j}from'./chunk-XZTPNWJD.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-UMW6DOXG.js.map +//# sourceMappingURL=chunk-UMW6DOXG.js.map \ No newline at end of file diff --git a/dist/chunk-VGMTY7KM.js.map b/dist/chunk-UMW6DOXG.js.map similarity index 92% rename from dist/chunk-VGMTY7KM.js.map rename to dist/chunk-UMW6DOXG.js.map index e35b609..97cfe4b 100644 --- a/dist/chunk-VGMTY7KM.js.map +++ b/dist/chunk-UMW6DOXG.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-VGMTY7KM.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/create-virtual-data-table.ts"],"names":["createVirtualDataTable","ui","createDataTableWithPanels","DataTableVirtualCardPanel","DataTableVirtualTablePanel"],"mappings":"mHAKO,SAASA,CAAAA,CAAuBC,CAAAA,CAAoB,CACzD,OAAOC,CAAAA,CAA0BD,CAAAA,CAAI,CACnC,SAAA,CAAWE,GAAAA,CACX,UAAA,CAAYC,CACd,CAAC,CACH","file":"chunk-UMW6DOXG.js","sourcesContent":["import type { DataTableUiKit } from \"../ui-kit\";\nimport { createDataTableWithPanels } from \"./create-data-table\";\nimport { DataTableVirtualCardPanel } from \"./data-table-virtual-card-panel\";\nimport { DataTableVirtualTablePanel } from \"./data-table-virtual-table-panel\";\n\nexport function createVirtualDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui, {\n CardPanel: DataTableVirtualCardPanel,\n TablePanel: DataTableVirtualTablePanel,\n });\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-VGMTY7KM.js b/dist/chunk-VGMTY7KM.js deleted file mode 100644 index 2d5ae46..0000000 --- a/dist/chunk-VGMTY7KM.js +++ /dev/null @@ -1,2 +0,0 @@ -import {a as a$1}from'./chunk-B6JTUAWE.js';import {a}from'./chunk-W7VNQT7O.js';import {j}from'./chunk-I3CW6DTA.js';function b(r){return j(r,{CardPanel:a$1,TablePanel:a})}export{b as a};//# sourceMappingURL=chunk-VGMTY7KM.js.map -//# sourceMappingURL=chunk-VGMTY7KM.js.map \ No newline at end of file diff --git a/dist/chunk-XZTPNWJD.js b/dist/chunk-XZTPNWJD.js new file mode 100644 index 0000000..2d37443 --- /dev/null +++ b/dist/chunk-XZTPNWJD.js @@ -0,0 +1,2 @@ +import {a as a$4}from'./chunk-EJHT5JBZ.js';import {a as a$3,e as e$1}from'./chunk-YKVWP3UJ.js';import {d,a as a$1,b,h,k,s,x,j,B,r,c as c$1,e,g,f,v,w,t,i as i$1,p,o,y,u as u$1,C,l,n}from'./chunk-YWMYYP3I.js';import {c,p as p$1,u,k as k$1,m,s as s$1,a as a$5,r as r$1,q,l as l$1,j as j$1}from'./chunk-CVR2ZXHQ.js';import {a,i,b as b$1,d as d$1,e as e$2,c as c$2}from'./chunk-7IWMFF7E.js';import {a as a$2}from'./chunk-XTVBESM5.js';import*as D from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {tableFeatures,sortFns,filterFns,aggregationFns,rowSortingFeature,rowSelectionFeature,rowPinningFeature,rowPaginationFeature,rowExpandingFeature,columnVisibilityFeature,columnResizingFeature,columnSizingFeature,columnPinningFeature,columnOrderingFeature,columnGroupingFeature,rowAggregationFeature,globalFilteringFeature,columnFilteringFeature,columnFacetingFeature,createSortedRowModel,createPaginatedRowModel,createGroupedRowModel,createFilteredRowModel,createFacetedUniqueValues,createFacetedRowModel,createFacetedMinMaxValues,createExpandedRowModel,useTable}from'@tanstack/react-table';import {flushSync}from'react-dom';function Hn({cardClassName:e,cardGridClassName:a,cardSizing:t,cardRenderer:o,currentRowSelection:r,currentDetailExpanded:l,DataTableCardView:d,DataTableEmptyState:p,dragAndDrop:u,editableRows:y,editingRowId:V,emptyNode:S,enableRowSelection:z,flexGrow:M,getRowClassName:$,hasCardTitle:J,infiniteScroll:F,localSearchValue:g,onRowClick:T,renderedRows:s,detailPanel:C,resolvedLabels:m,resolvedLoadingRowCount:v,rowActions:N=[],ScrollArea:w,scrollbarVisibility:G,sentinelRef:W,setCurrentDetailExpanded:_,setCurrentRowSelection:U,setEditingRowId:R,shouldRenderInitialLoading:f,stateOverlayNode:x,tableContainerClassName:k,uiClassNames:A}){let Q=f||s.length>0,P=D.useRef(null),q=(j,E)=>jsx(d,{rows:j,cardRenderer:o,cardGridClassName:a,cardClassName:e,cardSizing:t,rowActions:N,editableRows:y,detailPanel:C,detailExpanded:l,onDetailExpandedChange:_,hasCardTitle:J,rowSelection:r,onRowSelectionChange:U,enableRowSelection:z,editingRowId:V,onEditingRowIdChange:R,getRowClassName:$,onRowClick:T,getRowDraggable:u?.getRowDraggable,onRowDragStart:u?.onRowDragStart,onRowDragEnd:u?.onRowDragEnd,isLoading:E?.isLoading,loadingRowCount:E?.loadingRowCount,labels:m});return jsxs("div",{ref:P,"data-dtp-slot":"data-table-card-shell",className:a$2("relative box-border border-2 border-transparent transition-colors",M?"flex min-h-0 flex-1 flex-col":"h-full",u?.isDragging&&(A.dragActive??"rounded-md border-dashed")),children:[jsx(w,{type:G,className:a$2(M?"min-h-0 flex-1":"h-full",A.cardScrollArea,k),children:jsxs("div",{"data-dtp-slot":"data-table-card-viewport",className:a$2("flex min-h-full min-w-0 flex-col",M&&"min-h-0 flex-1",A.cardViewport),children:[Q?f?q([],{isLoading:true,loadingRowCount:v}):q(s):jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center p-4",children:S??jsx(p,{title:g?m.noMatchingRowsTitle:m.noRowsTitle,description:g?m.noMatchingRowsDescription:m.noRowsDescription})}),F?.enabled&&!f?jsx("div",{className:"shrink-0 px-4 pb-4",children:jsx("div",{ref:W,className:"h-4 w-full"})}):null]})}),x]})}var cs=D.lazy(async()=>({default:(await import('./data-table-virtual-card-panel-Z3BPBPG4.js')).DataTableVirtualCardPanel}));function Ci(e){let a=typeof e.virtualization=="object"?e.virtualization.card:void 0;return a?.enabled!==true?jsx(Hn,{...e}):jsx(D.Suspense,{fallback:jsx(Hn,{...e,renderedRows:e.renderedRows.slice(0,Math.max(1,Math.floor(a.fallbackCardCount??12)))}),children:jsx(cs,{...e})})}function yi({children:e,currentPagination:a,DataTableFooter:t,effectivePageCount:o,footerTotalRowCount:r,handleFooterPageIndexChange:l,handleFooterPageSizeChange:d,labels:p,pageCountKnown:u=true,rowsPerPageOptions:y,showFooter:V}){return !V&&!e?null:jsxs("div",{"data-dtp-slot":"data-table-footer",className:"shrink-0",children:[V?jsx(t,{pageIndex:a.pageIndex,pageCount:o,pageCountKnown:u,pageSize:a.pageSize,totalRowCount:r,rowsPerPageOptions:y,onPageIndexChange:l,onPageSizeChange:d,labels:p}):null,e]})}function Ri({allRows:e,columnFilters:a,columnVisibilityOptions:t,compactToolbar:o,customToolbar:r,DataTableToolbar:l,description:d,descriptionId:p,effectiveToolbarActions:u,enableColumnPinning:y,enableGrouping:V,enableToolbarColumnChooser:S,enableToolbarFilterChips:z,enableToolbarResetLayout:M,enableToolbarSavedViews:$,enableDensityToggle:J,enableViewToggle:F,hiddenRowsLabel:g,labels:T,onClearColumnFilters:s,onColumnFilterChange:C,onColumnPinningChange:m,onDensityChange:v,onShowHiddenRowsChange:N,onToolbarQueryValueChange:w,reorderColumn:G,onResetColumnLayout:W,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:f,onViewModeChange:x,openFileDialog:k,selectedRowIds:A,selectedRows:Q,selectionActions:P,savedViews:q,showHiddenRows:j,table:E,title:Z,titleId:re,toolbarQueryPlaceholder:Re,toolbarQueryValue:Se,toolbarVisibility:ke,density:Ee,viewMode:Ce}){return jsx("div",{"data-dtp-slot":"data-table-toolbar",className:"shrink-0",children:jsx(l,{title:Z,titleId:re,description:d,descriptionId:p,toolbarQueryValue:Se,toolbarQueryPlaceholder:Re,onToolbarQueryValueChange:w,reorderColumn:G,customToolbar:r,compactToolbar:o,viewMode:Ce,onViewModeChange:x,enableViewToggle:F,toolbarActions:u,selectionActions:P,selectedRowIds:A,selectedRows:Q,showHiddenRows:j,hiddenRowsLabel:g,onShowHiddenRowsChange:N,allRows:e,columnVisibilityOptions:t,onColumnVisibilityChange:(Ae,Ge)=>{E.getColumn(Ae)?.toggleVisibility(Ge);},enableColumnPinning:y,enableGrouping:V,enableToolbarColumnChooser:S,enableToolbarFilterChips:z,enableToolbarResetLayout:M,enableToolbarSavedViews:$,onColumnPinningChange:m,columnFilters:a,onColumnFilterChange:C,onClearColumnFilters:s,onResetColumnLayout:W,onCreateSavedView:_,onApplySavedView:U,onRenameSavedView:R,onDeleteSavedView:f,density:Ee,onDensityChange:v,enableDensityToggle:J,labels:T,toolbarVisibility:ke,openFileDialog:k,savedViews:q,table:E})})}var ie={searchPlaceholder:"Search rows...",searchTable:"Search table",clearSearch:"Clear search",noRowsTitle:"No rows yet",noRowsDescription:"Create a record or refresh this view once data exists.",noMatchingRowsTitle:"No matching rows",noMatchingRowsDescription:"Try a different search term or clear filters.",tableOptions:"Show table options",columns:"Columns",filters:"Filters",clearFilters:"Clear filters",filterFrom:"From",filterTo:"To",filterTrue:"Yes",filterFalse:"No",selectedRows:e=>`${e} record${e===1?"":"s"} selected`,showHiddenRows:e=>`Show ${e}`,recordsPerPage:"Records per page",totalRecords:e=>`Total records: ${e}`,pageStatus:(e,a)=>`Page ${e+1} of ${a}`,pageStatusUnknown:e=>`Page ${e+1}`,pagination:"Pagination",morePages:"More pages",firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",selectAllVisibleRows:"Select all visible rows",selectAllFilteredRows:"Select all filtered rows",selectRow:"Select row",selectCardRow:e=>`Select row ${e}`,switchToTableView:"Switch to table view",switchToCardView:"Switch to card view",tableView:"Table view",cardView:"Card view",allFilterOptions:"All",actions:"Actions",rowActions:"Row actions",editRow:"Edit row",saveEdit:"Save",cancelEdit:"Cancel editing",expandRow:"Expand row",collapseRow:"Collapse row",expandRowDetails:"Expand row details",collapseRowDetails:"Collapse row details",exportCsv:"Export CSV",print:"Print table",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",errorTitle:"Unable to load this table",errorDescription:"Try again or check your connection.",retry:"Retry",density:"Density",compactDensity:"Compact",comfortableDensity:"Comfortable",spaciousDensity:"Spacious",pinLeft:"Pin left",pinRight:"Pin right",unpin:"Unpin",pinRowToTop:"Pin row to top",pinRowToBottom:"Pin row to bottom",unpinRow:"Unpin row",resizeColumn:e=>`Resize ${e}`,grouping:"Grouping",groupBy:e=>`Group by ${e}`,ungroup:e=>`Ungroup ${e}`,removeGrouping:e=>`Remove ${e} grouping`,moveGroupingEarlier:e=>`Move ${e} grouping earlier`,moveGroupingLater:e=>`Move ${e} grouping later`,facetSearch:e=>`Search ${e} options`,searchColumns:"Search columns",showAllColumns:"Show all columns",hideAllColumns:"Hide all columns",moveColumnEarlier:e=>`Move ${e} earlier`,moveColumnLater:e=>`Move ${e} later`,resetColumnLayout:"Reset column layout",savedViews:"Saved views",createSavedView:"Create saved view",savedViewName:"View name",applySavedView:e=>`Apply saved view ${e}`,renameSavedView:e=>`Rename saved view ${e}`,deleteSavedView:e=>`Delete saved view ${e}`,saveSavedView:"Save view"};function Si(e){return {...ie,...e}}function vi({Button:e,Checkbox:a,DataTableRowActions:t,Tooltip:o,TooltipContent:r,TooltipTrigger:l,cancelEditing:d$1,columns:p,editableRows:u,editingRowId:y,editErrors:V,enableRowSelection:S,enableRowPinning:z,hasTreeExpansion:M,isSavingEdit:$,isEditDirty:J,includeFillSpacer:F=false,labels:g,lastSelectedRowIdRef:T,detailPanel:s,detailExpanded:C,onDetailExpandedChange:m,rowSelectionSelectAllScope:v,rowActions:N,saveEdit:w,startEditingRow:G,tableRef:W}){let _=D.useCallback((U,R)=>{let f=W.current;if(!f||!T.current)return;let x=f.getRowModel().rows.filter(q=>!d(q.original)),k=x.findIndex(q=>q.id===T.current),A=x.findIndex(q=>q.id===U);if(k<0||A<0)return;let Q=Math.min(k,A),P=Math.max(k,A);f.setRowSelection(q=>{let j={...q};for(let E of x.slice(Q,P+1).filter(Z=>Z.getCanSelect()&&Z.getCanMultiSelect()))R?j[E.id]=true:delete j[E.id];return j});},[T,W]);return D.useMemo(()=>{let U=[];if(M||s){let R=M&&s?80:a$1;U.push({id:"__expand__",enableResizing:false,enableSorting:false,enableHiding:false,size:R,minSize:R,maxSize:R,header:()=>jsx("span",{className:"sr-only",children:g.expandRow}),cell:({row:f,table:x})=>{let k=M&&f.getCanExpand(),A=!!(s&&(s.getRowCanExpand?.(f.original)??true));if(!k&&!A)return null;let Q=f.getIsExpanded(),P=C===true||!!C[f.id];return jsxs("div",{className:"flex items-center justify-center gap-1",children:[k?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":Q?g.collapseRow:g.expandRow,"aria-expanded":Q,"data-tree-toggle":"true",onClick:()=>f.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",Q?"rotate-0":"-rotate-90")})}):null,A?jsx(e,{type:"button",variant:"ghost",size:"icon-sm","aria-label":P?M?g.collapseRowDetails??ie.collapseRowDetails:g.collapseRow:M?g.expandRowDetails??ie.expandRowDetails:g.expandRow,"aria-expanded":P,"data-detail-toggle":"true",onClick:()=>{m(q=>b(q,f.id,x.getCoreRowModel().flatRows.map(j=>j.id)));},children:jsx(c,{className:a$2("transition-transform",P?"rotate-0":"-rotate-90")})}):null]})}});}return S&&U.push({id:"__select__",enableResizing:false,enableSorting:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:({table:R})=>{let f=v==="filtered",x=(f?R.getFilteredRowModel().flatRows:R.getRowModel().flatRows).filter(P=>P.getCanSelect()&&P.getCanMultiSelect()),k=x.length>0&&x.every(P=>P.getIsSelected()),A=x.some(P=>P.getIsSelected()),Q=f?g.selectAllFilteredRows??ie.selectAllFilteredRows:g.selectAllVisibleRows??ie.selectAllVisibleRows;return x.length===0?jsx("span",{className:"sr-only",children:Q}):jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:k?true:A?"indeterminate":false,onCheckedChange:P=>{R.setRowSelection(q=>{let j={...q};for(let E of x)P===true?j[E.id]=true:delete j[E.id];return j});},"aria-label":Q})})},cell:({row:R})=>jsx("div",{className:"flex items-center justify-center",children:jsx(a,{className:"my-0.5",checked:R.getIsSelected(),disabled:!R.getCanSelect(),onClick:f=>{if(!f.shiftKey||!T.current||!R.getCanMultiSelect()){T.current=R.id;return}f.preventDefault(),f.stopPropagation(),_(R.id,!R.getIsSelected()),T.current=R.id;},onCheckedChange:f=>{T.current=R.id,R.toggleSelected(f===true);},"aria-label":g.selectRow??ie.selectRow})})}),U.push(...p.map(R=>h(R))),F&&U.push({id:"__spacer__",cell:()=>null,header:()=>null,enableColumnFilter:false,enableGlobalFilter:false,enableGrouping:false,enableHiding:false,enablePinning:false,enableResizing:false,enableSorting:false,minSize:0,size:0}),(N.length||u||z)&&U.push({id:"__actions__",enableSorting:false,enableResizing:false,enableHiding:false,size:a$1,minSize:a$1,maxSize:a$1,header:()=>jsx("span",{className:"sr-only",children:g.actions}),cell:({row:R})=>{let f=R.id;return y===f?jsxs("div",{className:"flex w-full items-center justify-end gap-2",children:[V._row?jsx("span",{className:"sr-only",role:"alert",children:V._row}):null,jsx(e,{type:"button",size:"sm",disabled:$||!J,onClick:()=>{w(R.original);},children:g.saveEdit}),jsxs(o,{children:[jsx(l,{asChild:true,children:jsxs(e,{type:"button",size:"icon-sm",variant:"ghost",onClick:d$1,children:[jsx(c,{className:"rotate-45"}),jsx("span",{className:"sr-only",children:g.cancelEdit})]})}),jsx(r,{children:g.cancelEdit})]})]}):jsx("div",{className:"flex w-full items-center justify-center",children:jsx(t,{row:R.original,rowActions:N,editableRows:u,isEditing:false,onStartEditing:()=>{G(R.original,R.id);},onCancelEditing:()=>{},labels:g,rowPinning:z?{canPin:R.getCanPin(),position:R.getIsPinned(),pin:k=>R.pin(k)}:void 0})})}}),U},[e,a,t,o,r,l,d$1,p,u,C,s,V,y,S,z,M,F,$,J,g,T,m,v,N,w,_,G])}function xe({defaultValue:e,onChange:a,value:t}){let[o,r]=D.useState(e),l=t??o,d=D.useRef(l);D.useEffect(()=>{d.current=l;},[l]);let p=D.useCallback(u=>{let y=typeof u=="function"?u(d.current):u;d.current=y,a?.(y),t===void 0&&r(y);},[a,t]);return [l,p]}function Pi({enabled:e,hasMore:a,isLoadingMore:t,onLoadMore:o,onError:r}){let l=D.useRef(null),d=D.useRef(false),p=D.useEffectEvent(o),u=D.useEffectEvent(y=>{r?.(y);});return D.useEffect(()=>{if(!e||!a||t)return;let y=l.current;if(!y)return;let V=new IntersectionObserver(S=>{if(S[0].isIntersecting&&!d.current){d.current=true;let M;try{M=p();}catch($){d.current=false,u($);return}Promise.resolve(M).catch($=>{u($);}).finally(()=>{d.current=false;});}},{rootMargin:"200px 0px 200px 0px"});return V.observe(y),()=>{V.disconnect();}},[e,a,t]),l}function ki({enabled:e,maxPageIndex:a,onPageIndexChange:t,pageIndex:o,setLocalPageIndex:r}){D.useEffect(()=>{if(!e||o>=0&&o<=a)return;let l=Math.min(Math.max(o,0),a);r(l),t?.(l);},[e,a,t,o,r]);}function Fi(){return D.useMemo(()=>{let e=new WeakMap;return (a,t,o$1)=>{let r=o(o$1);if(!r)return true;let l=a.original;if(typeof l!="object"||l===null)return o(a.getValue(t)).includes(r);let d=e.get(l);d||(d=new Map,e.set(l,d));let p=d.get(t);if(p===void 0){let u=a.getValue(t);p=o(u),d.set(t,p);}return p.includes(r)}},[])}function Bn(e={}){return tableFeatures({columnFacetingFeature:columnFacetingFeature,columnFilteringFeature:columnFilteringFeature,globalFilteringFeature:globalFilteringFeature,rowAggregationFeature:rowAggregationFeature,columnGroupingFeature:columnGroupingFeature,columnOrderingFeature:columnOrderingFeature,columnPinningFeature:columnPinningFeature,columnSizingFeature:columnSizingFeature,columnResizingFeature:columnResizingFeature,columnVisibilityFeature:columnVisibilityFeature,rowExpandingFeature:rowExpandingFeature,rowPaginationFeature:rowPaginationFeature,rowPinningFeature:rowPinningFeature,rowSelectionFeature:rowSelectionFeature,rowSortingFeature:rowSortingFeature,expandedRowModel:createExpandedRowModel(),facetedMinMaxValues:createFacetedMinMaxValues(),facetedRowModel:createFacetedRowModel(),facetedUniqueValues:createFacetedUniqueValues(),filteredRowModel:createFilteredRowModel(),groupedRowModel:createGroupedRowModel(),paginatedRowModel:createPaginatedRowModel(),sortedRowModel:createSortedRowModel(),aggregationFns:{...aggregationFns,...e},filterFns:filterFns,sortFns:sortFns})}Bn();function Vi({autoResetPageIndex:e,columnGroupPaths:a,columnResizeMode:t,dir:o,currentColumnFilters:r,currentColumnOrder:l,currentColumnPinning:d$1,currentRowPinning:p,currentColumnSizing:u,currentExpanded:y,currentGrouping:V,currentPagination:S,currentRowSelection:z,currentSorting:M,currentViewMode:$,defaultColumn:J,effectiveColumnVisibility:F,enableColumnResizing:g,enableMultiRowSelection:T,enableRowPinning:s$1,enableRowSelection:C,enableSubRowSelection:m,getRowCanSelect:v,getRowCanExpand:N,getSubRows:w,aggregationFns:G,groupedColumnMode:W,globalFilterFn:_,globalFilterValue:U,hasNextPage:R,handleColumnFiltersChange:f,handleColumnOrderChange:x$1,handleColumnPinningChange:k$1,handleRowPinningChange:A,handleColumnVisibilityChange:Q,handleExpandedChange:P,handleGroupingChange:q,infiniteScroll:j$1,keepPinnedRows:E,manualFiltering:Z,manualGrouping:re,manualExpanding:Re,manualPagination:Se,manualSorting:ke,onActionError:Ee,onPageIndexChange:Ce,onPageSizeChange:Ae,pageCount:Ge,pageIndex:X,pageSize:ve,paginateExpandedRows:L,filterFromLeafRows:ye,maxLeafRowFilterDepth:We,setCurrentRowSelection:Xe,setCurrentSorting:Ze,setLocalColumnSizing:ia,setLocalPagination:ge,shouldRenderInitialLoading:ra,tableColumns:Qe,tableData:ba,tableGetRowId:$e,tableRef:ea,totalRowCount:fa,virtualization:aa}){let Ta=Fi(),fe=D.useMemo(()=>k(Qe).map(({column:b,index:I})=>s(b,I)),[Qe]),la=D.useMemo(()=>{let b=fe,I=b.filter(oe=>!x(oe)&&oe!=="__spacer__"),K=new Set(I),de=l.filter(oe=>K.has(oe)),le=I.filter(oe=>!de.includes(oe));return [...b.filter(oe=>oe==="__expand__"||oe==="__select__"),...de,...le,...b.filter(oe=>oe==="__spacer__"),...b.filter(oe=>oe==="__actions__")]},[l,fe]),Ie=D.useMemo(()=>{let b=new Set(fe),I=new Set(fe.filter(le=>!x(le)&&le!=="__spacer__")),K=(d$1.left??[]).filter(le=>I.has(le)),de=(d$1.right??[]).filter(le=>I.has(le));return {start:[...["__expand__","__select__"].filter(le=>b.has(le)),...K],end:[...de,...["__actions__"].filter(le=>b.has(le))]}},[d$1,fe]),Da=D.useCallback(b=>{let I=typeof b=="function"?b(Ie):b,K=new Set(fe.filter(de=>!x(de)&&de!=="__spacer__"));k$1({left:I.start.filter(de=>K.has(de)),right:I.end.filter(de=>K.has(de))});},[Ie,fe,k$1]),Pe=D.useMemo(()=>{let b=new Set,I=oe=>{oe.forEach((Ba,ta)=>{if(b.add($e(Ba,ta)),!d(Ba)){let Ia=w?.(Ba,ta);Ia?.length&&I(Ia);}});};I(ba);let K=(p.top??[]).filter(oe=>b.has(oe)),de=new Set(K),le=(p.bottom??[]).filter(oe=>b.has(oe)&&!de.has(oe));return {top:K,bottom:le}},[p.bottom,p.top,w,ba,$e]),Fe=D.useMemo(()=>Object.fromEntries(Object.entries(z).flatMap(([b,I])=>I?[[b,true]]:[])),[z]),Pa=D.useCallback(b=>{let I=typeof b=="function"?b(Fe):b;Xe({...I});},[Xe,Fe]),xa=D.useMemo(()=>({sorting:M,pagination:S,rowSelection:Fe,columnVisibility:F,columnFilters:r,globalFilter:U,expanded:y,grouping:V,columnOrder:la,columnPinning:Ie,rowPinning:Pe,columnSizing:u}),[r,u,y,V,S,M,F,la,Ie,Pe,U,Fe]),sa=D.useCallback(b=>{let I=typeof b=="function"?b(S):b;(X===void 0||ve===void 0)&&ge(K=>({pageIndex:X===void 0?I.pageIndex:K.pageIndex,pageSize:ve===void 0?I.pageSize:K.pageSize})),I.pageIndex!==S.pageIndex&&Ce?.(I.pageIndex),I.pageSize!==S.pageSize&&Ae?.(I.pageSize);},[S,Ce,Ae,X,ve,ge]),ka=D.useCallback(b=>{ia(b);},[ia]),wa=D.useMemo(()=>Bn(G),[G]),me=useTable({features:wa,data:ba,columns:Qe,enableRowSelection:v?b=>C&&v(b.original):C,enableRowPinning:typeof s$1=="function"?b=>s$1(b.original):s$1,keepPinnedRows:E,enableMultiRowSelection:typeof T=="function"?b=>T(b.original):T,enableSubRowSelection:typeof m=="function"?b=>m(b.original):m,enableColumnResizing:g,columnResizeMode:t,columnResizeDirection:o,getRowId:$e,getSubRows:w?(b,I)=>w(b,I):void 0,getRowCanExpand:w?b=>N?.(b.original)??b.subRows.length>0:void 0,globalFilterFn:_??Ta,getColumnCanGlobalFilter:b=>b.columnDef.enableGlobalFilter!==false&&typeof b.accessorFn=="function",manualSorting:ke,manualGrouping:re,manualFiltering:Z,manualExpanding:Re,manualPagination:Se||!!j$1?.enabled,paginateExpandedRows:L,filterFromLeafRows:ye,maxLeafRowFilterDepth:We,defaultColumn:J,autoResetPageIndex:e,state:xa,onSortingChange:Ze,onPaginationChange:sa,onRowSelectionChange:Pa,onColumnVisibilityChange:Q,onColumnFiltersChange:f,onExpandedChange:P,onGroupingChange:q,onColumnOrderChange:x$1,onColumnPinningChange:Da,onRowPinningChange:A,onColumnSizingChange:ka,groupedColumnMode:W});D.useLayoutEffect(()=>(ea.current=me,()=>{ea.current===me&&(ea.current=null);}),[me,ea]);let Ne=me.getVisibleLeafColumns(),da=D.useCallback((b,I)=>{if(b===I||!j(b,I,a))return;let K=me.getAllLeafColumns().map(le=>le.id).filter(le=>!x(le)&&le!=="__spacer__"),de=B(l.length?l:K,b,I);x$1(de);},[a,l,x$1,me]),Ea=me.getTopRows(),Ue=me.getBottomRows(),Ca=$==="table"?me.getCenterRows():me.getRowModel().rows,ca=typeof aa=="object"?aa:void 0,ze=aa===true||ca?.enabled===true,ua=Math.max(1,Math.floor(ca?.fallbackRowCount??20)),Fa=(ze?Ca.slice(0,ua):Ca).map((b,I)=>({row:b,rowIndex:I})),qe=Se||!!j$1?.enabled,Va=qe?void 0:me.getFilteredRowModel().rows.length,je=fa??Va,pa=!qe||Ge!==void 0||fa!==void 0,Ha=je,Ke=ra?1:Ge??(je!==void 0?Math.max(1,Math.ceil(je/S.pageSize)):qe?S.pageIndex+(R?2:1):me.getPageCount()),Ma=Math.max(0,Ke-1),Aa=D.useCallback(b=>{X===void 0&&ge(I=>I.pageIndex===b?I:{...I,pageIndex:b});},[X,ge]);ki({enabled:!ra&&!j$1?.enabled&&pa,maxPageIndex:Ma,onPageIndexChange:Ce,pageIndex:S.pageIndex,setLocalPageIndex:Aa});let i=D.useCallback(b=>{b!==S.pageIndex&&(Ce?.(b),X===void 0&&ge(I=>I.pageIndex===b?I:{...I,pageIndex:b}));},[S.pageIndex,Ce,X,ge]),H=D.useCallback(b=>{S.pageIndex!==0&&Ce?.(0),b!==S.pageSize&&Ae?.(b),ve===void 0&&ge({pageIndex:0,pageSize:b});},[S.pageIndex,S.pageSize,Ce,Ae,ve,ge]),ne=Pi({enabled:!!j$1?.enabled,hasMore:!!j$1?.hasMore,isLoadingMore:j$1?.isLoadingMore,onLoadMore:()=>j$1?.onLoadMore(),onError:b=>{Ee?.({error:b,source:"infiniteScroll"});}});return {effectivePageCount:Ke,footerTotalRowCount:Ha,handleFooterPageIndexChange:i,handleFooterPageSizeChange:H,isPageCountKnown:pa,renderedRows:Ca,topPinnedRows:Ea,bottomPinnedRows:Ue,reorderColumn:da,rowsToRender:Fa,sentinelRef:ne,table:me,virtualPaddingBottom:0,virtualPaddingTop:0,visibleLeafColumns:Ne}}var Bs="data-table-pro:column-prefs:",Ai=1,Mi=["visibility","sizing","order","pinning","rowPinning","density"];function Ii(e){let a=Gn(e);if(!a)return {};let t=$n(a);if(!t)return {};let o=Un(a.key),r;try{r=t.getItem(o);}catch(u){return a.onError?.({error:u,operation:"read"}),{}}if(!r)return {};let l;try{l=(a.deserialize??JSON.parse)(r);}catch(u){return a.onError?.({error:u,operation:"deserialize"}),{}}let d=a.version??Ai,p;if(Gs(l))if(l.version===d)p=l.state;else if(a.migrate)try{p=a.migrate({version:l.version,state:l.state},d);}catch(u){return a.onError?.({error:u,operation:"migrate"}),{}}else return {};else p=l;return Ni($s(p),a.slices)}function zi(e){let a=Gn(e);if(!a)return false;let t=$n(a);if(!t)return false;try{return t.removeItem(Un(a.key)),!0}catch(o){return a.onError?.({error:o,operation:"remove"}),false}}function Li({key:e,persistence:a,prefs:t}){let o=a??Gn(e),r=o?$n(o):void 0,l=o?Un(o.key):void 0,d=o?.version??Ai,p=Math.max(0,o?.debounceMs??100),u=Ni(t,o?.slices),y=D.useMemo(()=>{if(!o)return {value:void 0};try{let S={version:d,state:u};return {value:(o.serialize??JSON.stringify)(S)}}catch(S){return {error:S,value:void 0}}},[o,u,d]),V=D.useEffectEvent((S,z)=>{o?.onError?.({error:S,operation:z});});D.useEffect(()=>{y.error!==void 0&&V(y.error,"serialize");},[y.error]),D.useEffect(()=>{if(!r||!l||y.value===void 0)return;let S=()=>{try{if(r.getItem(l)===y.value)return;r.setItem(l,y.value);}catch(M){V(M,"write");}};if(p===0){S();return}let z=globalThis.setTimeout(S,p);return ()=>{globalThis.clearTimeout(z);}},[p,y.value,r,l]);}function Gn(e){if(e)return typeof e=="string"?{key:e}:e}function $n(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}function Un(e){return `${Bs}${e}`}function Gs(e){return it(e)&&Object.prototype.hasOwnProperty.call(e,"version")&&Object.prototype.hasOwnProperty.call(e,"state")}function Ni(e,a){let t=new Set(a??Mi),o={};for(let r of Mi)t.has(r)&&e[r]!==void 0&&Object.assign(o,{[r]:e[r]});return o}function $s(e){if(!it(e))return {};let a={},t=Us(e.visibility);t&&(a.visibility=t);let o=js(e.sizing);o&&(a.sizing=o);let r=bt(e.order);if(r&&(a.order=r),it(e.pinning)){let d=bt(e.pinning.left)??[],p=bt(e.pinning.right)??[];a.pinning={left:d,right:p};}let l=Ks(e.rowPinning);return l&&(a.rowPinning=l),Ws(e.density)&&(a.density=e.density),a}function Us(e){if(it(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function js(e){if(it(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function bt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function Ks(e){if(it(e))return {top:bt(e.top)??[],bottom:bt(e.bottom)??[]}}function Ws(e){return e==="compact"||e==="comfortable"||e==="spacious"}function it(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}var Qs=Object.values(a).slice().sort((e,a)=>e-a);function Oi(e){let a=D.useRef(0),[t,o]=D.useState(0);return D.useEffect(()=>{let r=e.current;if(!r)return;let l=(p=r.clientWidth)=>{let u=qs(p);u!==a.current&&(a.current=u,o(u));};if(l(),typeof ResizeObserver>"u")return;let d=new ResizeObserver(p=>{let u=p[0];l(u?Ys(u):void 0);});return d.observe(r),()=>{d.disconnect();}},[e]),t}function qs(e){if(e<=0)return 0;let a=1;for(let t of Qs){if(ed$1??(l?{key:l}:void 0),[l,d$1]),ye=D.useMemo(()=>Ii(L),[L]),[We,Xe]=D.useState({pageIndex:T?.pagination?.pageIndex??0,pageSize:T?.pagination?.pageSize??Re[0]??20}),[Ze,ia]=xe({value:Ee,onChange:Q,defaultValue:()=>T?.sorting??[]}),[ge,ra]=xe({value:re,onChange:k$1,defaultValue:()=>T?.rowSelection??{}}),[Qe,ba]=xe({value:p,onChange:_,defaultValue:()=>T?.columnVisibility??ye.visibility??{}}),[$e,ea]=xe({value:e$1,onChange:v,defaultValue:()=>T?.columnFilters??[]}),[fa,aa]=xe({value:M,onChange:R,defaultValue:()=>T?.expanded??{}}),[Ta,fe]=xe({value:a,onChange:N,defaultValue:()=>T?.columnOrder??ye.order??[]}),[la,Ie]=xe({value:t,onChange:w,defaultValue:()=>T?.columnPinning??ye.pinning??r(u)}),[Da,Pe]=xe({value:o,onChange:G,defaultValue:()=>T?.rowPinning??ye.rowPinning??{top:[],bottom:[]}}),[Fe,Pa]=xe({value:r$1,onChange:W,defaultValue:()=>T?.columnSizing??ye.sizing??{}}),[xa,sa]=xe({value:X,onChange:q,defaultValue:()=>T?.viewMode??"table"}),[ka,wa]=xe({value:$,onChange:f,defaultValue:()=>T?.grouping??[]}),[me,Ne]=xe({value:ke,onChange:A,defaultValue:()=>T?.showHiddenRows??false}),[da,Ea]=xe({value:V,onChange:U,defaultValue:()=>T?.density??ye.density??"comfortable"}),Ue=Ge??T?.globalFilter??"",Ca=Ae??Z.searchPlaceholder,ca=Ce??250,[ze,ua]=D.useState(Ue),ya=Oi(ve),Fa=!!P,qe=D.useRef(Ue),Va=D.useEffectEvent(B=>{qe.current=B,P?.(B);});D.useEffect(()=>{qe.current=Ue,ua(Ue);},[Ue]),D.useEffect(()=>{if(!Fa||ze===Ue||ze===qe.current)return;let B=window.setTimeout(()=>{Va(ze);},ca);return ()=>{window.clearTimeout(B);}},[Fa,ze,ca,Ue]);let je=D.useMemo(()=>({pageIndex:j??We.pageIndex,pageSize:E??We.pageSize}),[We.pageIndex,We.pageSize,j,E]),pa=Math.max(1,C??Math.min(5,je.pageSize)),Ha=D.useDeferredValue(ze),Ke=z?m?ze:Ha:"",Ma=D.useCallback(B=>{sa(B);},[sa]),Aa=D.useCallback(B=>{Ne(B);},[Ne]),i$1=D.useCallback(B=>{Ea(B);},[Ea]),H=D.useCallback(()=>{x?.(0),j===void 0&&Xe(B=>B.pageIndex===0?B:{...B,pageIndex:0});},[x,j]),ne=D.useRef({columnFilters:$e,globalFilterValue:Ke});D.useEffect(()=>{let B=ne.current,Ve=B.columnFilters!==$e,ce=B.globalFilterValue!==Ke;ne.current={columnFilters:$e,globalFilterValue:Ke},!m&&(!Ve&&!ce||H());},[$e,Ke,m,H]),Li({persistence:L,prefs:{visibility:p?void 0:Qe,sizing:r$1===void 0?Fe:void 0,order:a?void 0:Ta,pinning:t?void 0:la,rowPinning:o===void 0?Da:void 0,density:V?void 0:da}});let b=D.useMemo(()=>k(u).reduce((B,{column:Ve,index:ce})=>{let ga=s(Ve,ce);return i(Ve.meta?.hideOn,ya)&&(B[ga]=false),B},{}),[u,ya]),I=D.useMemo(()=>({...Qe,...b}),[Qe,b]),K=D.useMemo(()=>y.filter(B=>b$1(B,g,me)),[me,y,g]),de=s$1&&K.length===0,le=D.useMemo(()=>c$1(pa),[pa]),oe=de?le:K,Ba=D.useCallback((B,Ve)=>d(B)?e(Ve):F(B,Ve),[F]),ta=S||(Se?.length??0)>0||Object.values(ge).some(Boolean),Ia=D.useMemo(()=>{if(!ta)return new Map;let B=new Map,Ve=ce=>{ce.forEach((ga,te)=>{B.set(F(ga,te),ga);let be=J?.(ga,te);be?.length&&Ve(be);});};return Ve(K),B},[F,J,ta,K]),Zt=D.useMemo(()=>ta?Object.entries(ge).filter(([,B])=>B).map(([B])=>Ia.get(B)).filter(B=>!!B):[],[ge,Ia,ta]),en=D.useMemo(()=>Object.entries(ge).flatMap(([B,Ve])=>Ve?[B]:[]),[ge]);return {containerWidth:ya,currentColumnFilters:$e,currentColumnOrder:Ta,currentColumnPinning:la,currentRowPinning:Da,currentColumnSizing:Fe,currentColumnVisibility:Qe,currentDensity:da,currentExpanded:fa,currentGrouping:ka,currentPagination:je,currentRowSelection:ge,currentShowHiddenRows:me,currentSorting:Ze,currentViewMode:xa,effectiveColumnVisibility:I,globalFilterValue:Ke,handleDensityChange:i$1,handleShowHiddenRowsChange:Aa,handleViewModeChange:Ma,localSearchValue:ze,resolvedLoadingRowCount:pa,resolvedToolbarQueryPlaceholder:Ca,selectedRowIds:en,selectedRows:Zt,setCurrentColumnFilters:ea,setCurrentColumnOrder:fe,setCurrentColumnPinning:Ie,setCurrentRowPinning:Pe,setCurrentColumnVisibility:ba,setCurrentExpanded:aa,setCurrentGrouping:wa,setCurrentRowSelection:ra,setCurrentSorting:ia,setLocalColumnSizing:Pa,setLocalPagination:Xe,setLocalSearchValue:ua,shouldRenderInitialLoading:de,tableData:oe,tableGetRowId:Ba,toolbarFilteredData:K,visibleData:K}}var Xs={cellStyle:void 0,colStyle:void 0,fixedSide:void 0,headerStyle:void 0,isActionsColumn:false,isExpansionColumn:false,isSelectionColumn:false,isSpacerColumn:false,isUtilityColumn:false,pinnedClassName:void 0,utilityClassName:void 0};function Bi({columns:e,columnSizing:a,editableRows:t,enableRowSelection:o,hasRowActions:r,hasRowExpansion:l,layoutMode:d,uiClassNames:p,visibleLeafColumns:u}){let y=D.useMemo(()=>{let F=new Set;for(let{column:g$1,index:T}of k(e))g(g$1)&&F.add(s(g$1,T));return o&&F.add("__select__"),l&&F.add("__expand__"),(r||t)&&F.add("__actions__"),F},[e,t,o,r,l]),V=D.useMemo(()=>{let F=new Map;for(let{column:g,index:T}of k(e)){let s$1=f(g);s$1!==void 0&&F.set(s(g,T),s$1);}return F},[e]),S=D.useMemo(()=>{let F=new Map,g=new Map,T=0;for(let C of u)v(C)==="left"&&(F.set(C.id,T),T+=Hi(C));let s=0;for(let C of [...u].reverse())v(C)==="right"&&(g.set(C.id,s),s+=Hi(C));return {left:F,right:g}},[u]),z=D.useMemo(()=>new Set([...y,...Object.keys(a)]),[a,y]),M=D.useMemo(()=>{let F=new Map;for(let g of u){let T=g.id==="__select__",s=g.id==="__expand__",C=g.id==="__actions__",m=T||s||C,v$1=g.id==="__spacer__",w$1=V.get(g.id),G=!v$1&&(d==="fit"||m||z.has(g.id)),W=G||w$1!==void 0?{width:G?m?a$1:g.getSize():void 0,minWidth:m?a$1:G?g.getSize():w$1,maxWidth:G?m?a$1:g.getSize():void 0}:void 0,_=v(g),U=_?{left:_==="left"?S.left.get(g.id):void 0,right:_==="right"?S.right.get(g.id):void 0}:void 0,R=W||U?{...W,...U}:void 0;F.set(g.id,{cellStyle:R,colStyle:W,fixedSide:_,headerStyle:R,isActionsColumn:C,isExpansionColumn:s,isSelectionColumn:T,isSpacerColumn:v$1,isUtilityColumn:m,pinnedClassName:_?w(_,p,{isUtilityColumn:m}):void 0,utilityClassName:m?"w-[50px] max-w-[50px] min-w-[50px] px-0":void 0});}return F},[z,d,V,S,p,u]),$=D.useMemo(()=>u.reduce((F,g)=>{let T=M.get(g.id),s=V.get(g.id);return T?.isUtilityColumn?F+a$1:z.has(g.id)?F+g.getSize():F+(s??0)},0),[M,z,V,u]),J=D.useCallback(F=>M.get(F)??Xs,[M]);return {columnLayouts:M,explicitlySizedColumnIds:y,fillMinWidth:$,getColumnLayout:J}}function Hi(e){return x(e.id)?a$1:e.getSize()}function $i(e,a){let t=e.classNames??{},{Button:o,Card:r,CardContent:l,CardHeader:d,Checkbox:p,Skeleton:u}=e;return function({rows:V,cardRenderer:S,cardSizing:z="fixed",cardGridClassName:M,cardClassName:$,rowActions:J,editableRows:F,detailPanel:g,detailExpanded:T,onDetailExpandedChange:s,hasCardTitle:C,rowSelection:m,onRowSelectionChange:v,enableRowSelection:N,editingRowId:w,onEditingRowIdChange:G,getRowClassName:W,onRowClick:_,getRowDraggable:U,onRowDragStart:R,onRowDragEnd:f,isLoading:x=false,loadingRowCount:k=5,labels:A}){let Q=z??"fixed",P=M?a$2("grid",M):Zs(Q),q=a$2("min-h-0 w-full gap-4 p-1",t.cardGrid,P),j=E=>a$2("relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0",ed(Q),t.cardItem,$,E);return x?jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:Array.from({length:Math.max(1,k)},(E,Z)=>jsxs(r,{role:"listitem","aria-hidden":"true","data-dtp-slot":"data-table-card-item",className:j("min-h-52"),children:[C?jsxs(d,{className:"px-4 pt-4 pb-3",children:[jsx(u,{className:"h-5 w-40 max-w-[70%]"}),jsx(u,{className:"h-4 w-24 max-w-[40%]"})]}):null,jsxs(l,{className:a$2("space-y-3 pb-4",C?"":"pt-4"),children:[jsx(u,{className:"h-4 w-full"}),jsx(u,{className:"h-4 w-[82%]"}),jsx(u,{className:"h-4 w-[68%]"}),jsx(u,{className:"h-24 w-full rounded-xl"})]})]},`loading-card-${Z}`))}):jsx("div",{role:"list","data-dtp-slot":"data-table-card-grid",className:q,children:V.map(E=>{let Z=E.id,re=E.original,Re=!!m[Z],Se=w===Z,ke=J.length>0||!!F,Ee=!!(g&&(g.getRowCanExpand?.(re)??true)),Ce=N||ke||C,Ae=N||ke||E.getCanExpand()||Ee,Ge=()=>{_&&_({row:re,rowId:Z});};return jsxs(r,{role:"listitem","data-row-id":Z,"data-tree-depth":E.depth,draggable:U?.(re)??false,"data-dtp-slot":"data-table-card-item","data-state":Re?"selected":void 0,className:j(a$2([W?.(re,{row:re,rowId:Z,rowIndex:E.index,isEditing:Se,isExpanded:E.getIsExpanded(),isLoading:false,isSelected:Re,pinnedPosition:false})].filter(Boolean).join(" "),"transition transition-colors hover:scale-101 data-[state=selected]:scale-101",t.card,Re?t.cardSelected:t.cardUnselected)),onDragStart:X=>{R?.({row:re,rowId:Z,event:X});},onDragEnd:X=>{f?.({row:re,rowId:Z,event:X});},children:[Ce?jsx("div",{"aria-hidden":"true",className:a$2("pointer-events-none absolute inset-x-0 top-0 z-10 h-24 bg-linear-to-b opacity-0 transition-opacity group-hover/card:opacity-100",t.cardOverlay??"from-transparent via-transparent to-transparent")}):null,jsx("div",{"data-dtp-slot":"data-table-card-renderer",role:_?"button":void 0,tabIndex:_?0:void 0,className:a$2("flex min-h-0 max-w-full min-w-0 overflow-hidden rounded-[inherit] [&>*]:min-w-0",ad(Q),_&&"cursor-pointer focus-visible:outline-none"),onClick:X=>{y(X.target,X.currentTarget)||Ge();},onKeyDown:X=>{y(X.target,X.currentTarget)||(X.key==="Enter"||X.key===" ")&&(X.preventDefault(),Ge());},children:S({row:re,rowId:Z,depth:E.depth,canExpandSubRows:E.getCanExpand(),isSubRowsExpanded:E.getIsExpanded(),toggleSubRowsExpanded:()=>E.toggleExpanded(),isSelected:Re,onSelectedChange:X=>{v(Gi(m,Z,X,E.getCanSelect(),E.getCanMultiSelect()));},actions:J,isEditing:Se,startEditing:()=>{G(Z);},cancelEditing:()=>{G(null);}})}),Se||!g||!(T===true||T[E.id])?null:jsx("div",{"data-dtp-slot":"data-table-card-detail-panel",className:"relative z-20 min-w-0",children:g.render({row:re,rowId:Z,tableRow:E})}),Ae?jsxs(d,{className:"absolute inset-x-0 top-0 z-20 flex flex-row items-center gap-3 space-y-0 px-4 pt-4 pb-8",children:[N?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(p,{checked:Re,disabled:!E.getCanSelect(),"aria-label":(A.selectCardRow??ie.selectCardRow)(Z),onCheckedChange:X=>{v(Gi(m,Z,X===true,E.getCanSelect(),E.getCanMultiSelect()));}})}):null,E.getCanExpand()?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(o,{type:"button",size:"icon-sm",variant:"ghost","aria-label":E.getIsExpanded()?A.collapseRow:A.expandRow,"aria-expanded":E.getIsExpanded(),onClick:()=>E.toggleExpanded(),children:jsx(c,{className:a$2("transition-transform",E.getIsExpanded()?"rotate-0":"-rotate-90")})})}):null,Ee?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(o,{type:"button",size:"icon-sm",variant:"ghost","aria-label":T===true||T[E.id]?E.getCanExpand()?A.collapseRowDetails??ie.collapseRowDetails:A.collapseRow:E.getCanExpand()?A.expandRowDetails??ie.expandRowDetails:A.expandRow,"aria-expanded":T===true||!!T[E.id],"data-detail-toggle":"true",onClick:()=>{s(X=>b(X,E.id,V.map(ve=>ve.id)));},children:jsx(c,{className:a$2("transition-transform",T===true||T[E.id]?"rotate-0":"-rotate-90")})})}):null,jsx("div",{className:"pointer-events-none min-w-0 flex-1"}),ke?jsx("div",{"data-row-click-ignore":"true",className:"pointer-events-auto",children:jsx(a,{row:re,rowActions:J,editableRows:F,isEditing:Se,onStartEditing:()=>{G(Z);},onCancelEditing:()=>{G(null);},labels:A})}):null]}):null]},Z)})})}}function Zs(e){switch(e){case "content":return "flex flex-wrap items-start justify-start";case "fluid":return "grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]";default:return "grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start"}}function ed(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full";default:return}}function ad(e){switch(e){case "content":return "w-fit";case "fluid":return "w-full flex-1 [&>*]:w-full";default:return "flex-1"}}function Gi(e,a,t,o,r){if(!o)return e;if(t)return r?{...e,[a]:true}:{[a]:true};if(!e[a])return e;let l={...e};return delete l[a],l}function ji(e){let a=e.classNames??{},{Empty:t,EmptyContent:o,EmptyDescription:r,EmptyHeader:l,EmptyMedia:d,EmptyTitle:p}=e;return function({title:y="No rows found",description:V="Adjust your filters or create a new record to populate this table."}){return jsxs(t,{className:`min-h-60 rounded-2xl ${a.emptyState??"border bg-transparent"}`,children:[jsxs(l,{children:[jsx(d,{variant:"icon",children:jsx(p$1,{})}),jsx(p,{children:y}),jsx(r,{children:V})]}),jsx(o,{})]})}}function Ki(e){let a=e.classNames??{},{Pagination:t,PaginationContent:o,PaginationEllipsis:r,PaginationFirst:l,PaginationItem:d,PaginationLast:p,PaginationLink:u,PaginationNext:y,PaginationPrevious:V,Select:S,SelectContent:z,SelectGroup:M,SelectItem:$,SelectTrigger:J,SelectValue:F,Tooltip:g,TooltipContent:T,TooltipTrigger:s}=e;function C({pageIndex:v,pageCount:N,pageCountKnown:w,pageSize:G,totalRowCount:W,rowsPerPageOptions:_,onPageIndexChange:U,onPageSizeChange:R,labels:f}){let x=w?td(v,Math.max(1,N)):[],k=v>0,A=v+1{R(Number(P));},children:[jsx(J,{"aria-label":f.recordsPerPage,className:`w-22 ${a.paginationSelectTrigger??""}`,children:jsx(F,{})}),jsx(z,{children:jsx(M,{children:_.map(P=>jsx($,{value:String(P),children:P},P))})})]})]}),W!==void 0?jsx("div",{className:"flex shrink-0 items-center justify-center",children:jsxs("div",{className:`inline-flex items-center gap-2 px-2.5 py-1.5 text-sm ${a.paginationTotal??""}`,"aria-label":f.totalRecords(W),children:[jsx(j$1,{className:"size-4"}),jsx("span",{className:"@min-[768px]/data-table:hidden",children:W}),jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:f.totalRecords(W)})]})}):null,jsxs("div",{className:"flex flex-1 items-center justify-end gap-4",children:[jsx("div",{className:`hidden text-sm @min-[768px]/data-table:inline ${a.mutedText??"opacity-70"}`,children:w?f.pageStatus(v,Math.max(1,N)):(f.pageStatusUnknown??ie.pageStatusUnknown)(v)}),jsx(t,{"aria-label":f.pagination??ie.pagination,className:"mx-0 w-auto justify-end",children:jsxs(o,{children:[jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(l,{"aria-label":f.firstPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(0);},text:f.firstPage})}),jsx(T,{children:f.firstPage})]})}),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(V,{"aria-label":f.previousPage,href:"#",size:"icon-sm",showText:false,disabled:!k,onClick:P=>{P.preventDefault(),k&&U(v-1);},text:f.previousPage})}),jsx(T,{children:f.previousPage})]})}),x.map((P,q)=>jsx(d,{className:"hidden @min-[768px]/data-table:block",children:P==="ellipsis"?jsx(r,{text:f.morePages??ie.morePages}):jsx(u,{href:"#",isActive:P===v+1,size:"icon-sm",onClick:j=>{j.preventDefault(),U(P-1);},children:P})},`${P}-${q}`)),jsx(d,{children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(y,{"aria-label":f.nextPage,href:"#",size:"icon-sm",showText:false,disabled:!A,onClick:P=>{P.preventDefault(),A&&U(v+1);},text:f.nextPage})}),jsx(T,{children:f.nextPage})]})}),w?jsx(d,{className:"@min-[768px]/data-table:hidden",children:jsxs(g,{children:[jsx(s,{asChild:true,children:jsx(p,{"aria-label":f.lastPage,href:"#",size:"icon-sm",showText:false,text:f.lastPage,disabled:!A,onClick:P=>{P.preventDefault(),A&&U(Q);}})}),jsx(T,{children:f.lastPage})]})}):null]})})]})]})}function m(v){return jsx("div",{className:`rounded-md border px-2 py-1 ${a.footer??""}`,children:jsx(C,{...v})})}return {DataTableFooter:m,DataTablePagination:C}}function td(e,a){let t=e+1,o=new Set([1,a]);for(let d=Math.max(1,t-2);d<=Math.min(a,t+2);d+=1)o.add(d);let r=Array.from(o).sort((d,p)=>d-p),l=[];for(let d=0;d1&&l.push("ellipsis"),l.push(p);}return l}function Qi(e){let{Button:a,DropdownMenu:t,DropdownMenuContent:o,DropdownMenuGroup:r,DropdownMenuItem:l,DropdownMenuSeparator:d,DropdownMenuTrigger:p,Tooltip:u$1,TooltipContent:y,TooltipTrigger:V}=e;return function({row:z,rowActions:M,editableRows:$,isEditing:J,onStartEditing:F,onCancelEditing:g,labels:T,rowPinning:s}){let C=M.filter(w=>d$1(w,z)),m$1=D.useCallback(w=>{w.stopPropagation();},[]);if(J)return jsxs(u$1,{children:[jsx(V,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:g,children:[jsx(u,{}),jsx("span",{className:"sr-only",children:T.cancelEdit})]})}),jsx(y,{children:T.cancelEdit})]});let v=e$2($,z),N=s?.canPin??false;return !C.length&&!v&&!N?null:jsxs(t,{children:[jsxs(u$1,{children:[jsx(V,{asChild:true,children:jsx(p,{asChild:true,children:jsxs(a,{type:"button",variant:"ghost",size:"icon-sm",onPointerDown:m$1,onClick:m$1,children:[jsx(k$1,{}),jsx("span",{className:"sr-only",children:T.rowActions})]})})}),jsx(y,{children:T.rowActions})]}),jsxs(o,{align:"end",className:"w-52",children:[v?jsx(r,{children:jsxs(l,{onClick:w=>{w.stopPropagation(),F();},children:[jsx(m,{"data-icon":"inline-start"}),T.editRow]})}):null,v&&(C.length||N)?jsx(d,{}):null,N?jsx(r,{children:s?.position?jsx(l,{onClick:w=>{w.stopPropagation(),s.pin(false);},children:T.unpinRow}):jsxs(Fragment,{children:[jsx(l,{onClick:w=>{w.stopPropagation(),s?.pin("top");},children:T.pinRowToTop}),jsx(l,{onClick:w=>{w.stopPropagation(),s?.pin("bottom");},children:T.pinRowToBottom})]})}):null,N&&C.length?jsx(d,{}):null,C.length?jsx(r,{children:C.map(w=>{let G=w.icon;return jsxs(l,{disabled:w.disabled?.(z),variant:w.variant==="destructive"?"destructive":void 0,onClick:W=>{W.stopPropagation(),w.onClick(z);},children:[G?jsx(G,{"data-icon":"inline-start"}):null,c$2(w.label,z)]},w.key)})}):null]})]})}}var od=D.lazy(()=>import('./data-table-toolbar-operations-E6KRSUL6.js'));function Yi(e){let a=e.classNames??{},{Button:t,ButtonGroup:o,DropdownMenu:r,DropdownMenuCheckboxItem:l,DropdownMenuContent:d,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:y,DropdownMenuSeparator:V,DropdownMenuTrigger:S,InputGroup:z,InputGroupAddon:M,InputGroupInput:$,Tooltip:J,TooltipContent:F,TooltipTrigger:g}=e;return function({title:C,titleId:m,description:v,descriptionId:N,toolbarQueryValue:w,toolbarQueryPlaceholder:G,onToolbarQueryValueChange:W,customToolbar:_,compactToolbar:U,viewMode:R,onViewModeChange:f,enableViewToggle:x,toolbarActions:k,selectionActions:A,selectedRows:Q,selectedRowIds:P,showHiddenRows:q$1,hiddenRowsLabel:j,onShowHiddenRowsChange:E,allRows:Z,columnVisibilityOptions:re,onColumnVisibilityChange:Re,enableColumnPinning:Se,onColumnPinningChange:ke,columnFilters:Ee,onColumnFilterChange:Ce,onClearColumnFilters:Ae,density:Ge,onDensityChange:X,enableDensityToggle:ve,labels:L,toolbarVisibility:ye,openFileDialog:We,enableGrouping:Xe,enableToolbarColumnChooser:Ze,enableToolbarFilterChips:ia,enableToolbarResetLayout:ge,enableToolbarSavedViews:ra,savedViews:Qe,onResetColumnLayout:ba,onCreateSavedView:$e,onApplySavedView:ea,onRenameSavedView:fa,onDeleteSavedView:aa,reorderColumn:Ta,table:fe}){let la=D.useRef(null),[Ie,Da]=D.useState(false),Pe=a.toolbarCompactIconButton??"",Fe=k.filter(i=>(i.placement??"primary")==="primary"),Pa=k.filter(i=>i.placement==="trailing"),xa=ye?.title??true,sa=ye?.search??true,ka=ye?.actions??true,wa=ye?.trailingActions??true,me=ye?.options??true,Ne=ye?.viewToggle??true,da=ye?.customToolbar??true,Ea=xa&&!!(C||v),Ue=sa,Ca=ka&&Fe.length>0,ca=P.length>0&&A.length>0,ze=me&&(re.some(i=>i.canHide)||!!(E&&j)||Se||ve||Xe||Ze||ge||ra),ua=Ze||ge||ra,ya=Ee.filter(i=>jn(i.value)),Fa={Button:t,DropdownMenuCheckboxItem:l,DropdownMenuGroup:p,DropdownMenuItem:u$1,DropdownMenuLabel:y,DropdownMenuSeparator:V,InputGroup:z,InputGroupAddon:M,InputGroupInput:$},qe=i=>jsx(D.Suspense,{fallback:null,children:jsx(od,{placement:i,ui:Fa,labels:L,enableColumnChooser:Ze,enableFilterChips:ia,enableResetLayout:ge,enableSavedViews:ra,enableColumnPinning:Se,columnVisibilityOptions:re,onColumnVisibilityChange:Re,onColumnPinningChange:ke,reorderColumn:Ta,table:fe,onResetColumnLayout:ba,savedViews:Qe,onCreateSavedView:$e,onApplySavedView:ea,onRenameSavedView:fa,onDeleteSavedView:aa,toolbarQueryValue:w,onToolbarQueryValueChange:W,activeColumnFilters:ya,onColumnFilterChange:Ce,onClearColumnFilters:Ae})}),Va=fe.getAllLeafColumns().filter(i=>!i.id.startsWith("__")&&i.getCanGroup()),je=fe.store.state.grouping.flatMap(i=>{let H=fe.getColumn(i);return H?[H]:[]}),pa=Ne&&x&&!!f,Ha=wa&&Pa.length>0,Ke=da&&!!_,Ma=da&&!!(U??_),Aa=L.selectedRows(P.length);return D.useEffect(()=>{Ie&&la.current?.focus();},[Ie]),!Ea&&!Ue&&!Ca&&!ca&&!ze&&!pa&&!Ha&&!Ke&&!Ma?null:jsxs("div",{className:"flex flex-col gap-4 pb-0",children:[xa&&(C||v)?jsxs("div",{className:"flex flex-col gap-1",children:[C?jsx("h2",{id:m,className:"text-lg font-semibold tracking-tight",children:C}):null,v?jsx("p",{id:N,className:`max-w-3xl text-sm ${a.mutedText??"opacity-70"}`,children:v}):null]}):null,jsxs("div",{className:"flex flex-col gap-3",children:[jsxs("div",{"data-dtp-slot":"data-table-toolbar-controls",className:"flex items-center gap-2 overflow-x-auto px-1 @min-[768px]/data-table:gap-3 @min-[768px]/data-table:overflow-visible",children:[sa?jsxs(Fragment,{children:[jsx("div",{className:"hidden min-w-0 grow max-w-md @min-[768px]/data-table:block",children:jsxs(z,{className:"min-w-0",children:[jsx($,{value:w,onChange:i=>{W(i.target.value);},placeholder:G}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),w?jsx(M,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u,{})})}):null]})}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:Ie||w?"secondary":"outline",size:"icon-sm","aria-label":L.searchTable,"aria-pressed":Ie,className:`shrink-0 @min-[768px]/data-table:hidden ${Pe} ${a.toolbarInputButton??""}`,onClick:()=>{Da(i=>!i);},children:[jsx(s$1,{}),jsx("span",{className:"sr-only",children:L.searchTable})]})}),jsx(F,{children:L.searchTable})]})]}):null,ka?jsx("div",{className:"flex shrink-0 items-center gap-2",children:Fe.map(i=>{let H=!i.iconOnly&&!!i.icon,ne=jsxs(t,{type:"button",className:H?`size-7 shrink-0 px-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit @min-[768px]/data-table:px-2.5 ${Pe}`:i.iconOnly?`size-7 shrink-0 @min-[768px]/data-table:size-8 ${Pe}`:"size-7 shrink-0 @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit",variant:i.variant??"outline",size:i.iconOnly?"icon":"default",onClick:()=>{i.onClick({rows:Z,openFileDialog:We});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,children:[i.icon?jsx(i.icon,{}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):H?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:ne}),jsx(F,{children:i.label})]},i.key):ne})}):null,Ma?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-custom",className:"flex shrink-0 items-center gap-2 @min-[1024px]/data-table:hidden",children:U??_}):null,jsx("div",{className:"grow","aria-hidden":"true"}),jsxs("div",{"data-dtp-slot":"data-table-toolbar-end-controls",className:"flex shrink-0 items-center gap-2",children:[P.length?jsx("div",{className:`hidden text-sm @min-[768px]/data-table:block ${a.mutedText??"opacity-70"}`,children:Aa}):null,P.length?A.map(i=>{let H=i.icon,ne={rows:Q,rowIds:P},b=typeof i.disabled=="function"?i.disabled(Q,ne):i.disabled;return jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:i.variant??"secondary",size:"icon-sm",className:Pe,disabled:b,onClick:()=>{i.onClick(ne);},"aria-label":i.label,children:[H?jsx(H,{}):null,jsx("span",{className:"sr-only",children:i.label})]})}),jsx(F,{children:i.label})]},i.key)}):null,ze?jsxs(r,{children:[jsx(S,{asChild:true,children:jsxs(t,{type:"button",variant:"outline",size:"icon-sm","aria-label":L.tableOptions,className:`${Pe} ${a.toolbarInputButton??""}`,title:L.tableOptions,children:[jsx(a$5,{}),jsx("span",{className:"sr-only",children:L.tableOptions})]})}),jsxs(d,{align:"end",className:"w-56",children:[jsx(y,{children:L.tableOptions}),jsx(p,{children:E&&j?jsx(l,{checked:q$1,onCheckedChange:i=>{E(i===true);},children:L.showHiddenRows(j)}):null}),ve?jsxs(Fragment,{children:[jsx(V,{}),jsx(y,{children:L.density}),jsx(p,{children:[["compact",L.compactDensity],["comfortable",L.comfortableDensity],["spacious",L.spaciousDensity]].map(([i,H])=>jsx(l,{checked:Ge===i,onCheckedChange:()=>{X(i);},children:H},i))})]}):null,ua?qe("menu"):null,!Ze&&re.some(i=>i.canHide)?jsxs(Fragment,{children:[jsx(V,{}),jsx(y,{children:L.columns}),jsx(p,{children:re.filter(i=>i.canHide).map(i=>jsx(l,{checked:i.visible,onCheckedChange:H=>{Re?.(i.id,H===true);},children:i.label},i.id))})]}):null,Se&&!Ze?jsxs(Fragment,{children:[jsx(V,{}),jsxs(y,{children:[L.pinLeft," / ",L.pinRight]}),jsx(p,{children:re.map(i=>jsxs(u$1,{onSelect:H=>{H.preventDefault();},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:i.label}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinLeft}: ${i.label}`,onClick:H=>{H.stopPropagation(),ke(i.id,"left");},children:"L"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.pinRight}: ${i.label}`,onClick:H=>{H.stopPropagation(),ke(i.id,"right");},children:"R"}),jsx("button",{type:"button",className:"px-1 text-xs","aria-label":`${L.unpin}: ${i.label}`,onClick:H=>{H.stopPropagation(),ke(i.id,false);},children:"-"})]},`pin-${i.id}`))})]}):null,Xe&&Va.length?jsxs(Fragment,{children:[jsx(V,{}),jsx(y,{children:L.grouping}),jsx(p,{children:Va.map(i=>{let H=typeof i.columnDef.header=="string"?i.columnDef.header:i.id,ne=i.getIsGrouped();return jsx(l,{checked:ne,onCheckedChange:()=>{i.toggleGrouping();},children:ne?L.ungroup(H):L.groupBy(H)},`group-${i.id}`)})})]}):null]})]}):null,Ne&&x&&f?jsxs(o,{children:[jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:R==="table"?"default":"outline","aria-pressed":R==="table",className:R==="table"?Pe:`${Pe} ${a.toolbarInputButton??""}`,size:"icon-sm",onClick:()=>{f("table");},children:[jsx(r$1,{}),jsx("span",{className:"sr-only",children:L.switchToTableView??ie.switchToTableView})]})}),jsx(F,{children:L.tableView??ie.tableView})]}),jsxs(J,{children:[jsx(g,{asChild:true,children:jsxs(t,{type:"button",variant:R==="card"?"default":"outline","aria-pressed":R==="card",className:R==="table"?`${Pe} ${a.toolbarInputButton??""}`:Pe,size:"icon-sm",onClick:()=>{f("card");},children:[jsx(q,{}),jsx("span",{className:"sr-only",children:L.switchToCardView??ie.switchToCardView})]})}),jsx(F,{children:L.cardView??ie.cardView})]})]}):null,wa?Pa.map(i=>{let H=!i.iconOnly&&!!i.icon,ne=jsxs(t,{type:"button",variant:i.variant??"outline",size:i.iconOnly?"icon-sm":"default",onClick:()=>{i.onClick({rows:Z,openFileDialog:We});},disabled:i.disabled,"aria-label":i.label,title:i.iconOnly?void 0:i.label,className:`size-7 shrink-0 ${i.iconOnly?"":`${H?"px-0 @min-[768px]/data-table:px-2.5":""} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${i.iconOnly||H?Pe:""} ${a.toolbarInputButton??""}`,children:[i.icon?jsx(i.icon,{"data-icon":i.iconOnly?void 0:"inline-start"}):null,i.iconOnly?jsx("span",{className:"sr-only",children:i.label}):H?jsx("span",{className:"hidden @min-[768px]/data-table:inline",children:i.label}):jsx("span",{children:i.label})]},i.key);return i.iconOnly?jsxs(J,{children:[jsx(g,{asChild:true,children:ne}),jsx(F,{children:i.label})]},i.key):ne}):null]})]}),sa&&Ie?jsx("div",{"data-dtp-slot":"data-table-toolbar-compact-search",className:"min-w-0 @min-[768px]/data-table:hidden",children:jsxs(z,{children:[jsx($,{ref:la,value:w,onChange:i=>{W(i.target.value);},placeholder:G}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})}),w?jsx(M,{align:"inline-end",children:jsx("button",{type:"button",className:`inline-flex size-5 items-center justify-center rounded-md transition-colors focus-visible:outline-none ${a.toolbarIconButton??"opacity-70 hover:opacity-100"}`,onClick:()=>{W("");},"aria-label":L.clearSearch,title:L.clearSearch,children:jsx(u,{})})}):null]})}):null,Ee.length?jsxs("div",{"data-dtp-slot":"data-table-toolbar-filters",className:"flex min-w-0 flex-wrap items-center gap-2",children:[Ee.map(i=>jsx(T,{filter:i,labels:L,onColumnFilterChange:Ce},i.id)),Ee.some(i=>jn(i.value))?jsx(t,{type:"button",variant:"ghost",size:"sm",onClick:Ae,children:L.clearFilters}):null]}):null,ia?qe("chips"):null,Xe&&je.length?jsxs("div",{"data-dtp-slot":"data-table-grouping-bar","aria-label":L.grouping,className:"flex flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[L.grouping,":"]}),je.map((i,H)=>{let ne=typeof i.columnDef.header=="string"?i.columnDef.header:i.id,b=I=>{let K=[...fe.store.state.grouping],[de]=K.splice(H,1);de!==void 0&&(K.splice(I,0,de),fe.setGrouping(K));};return jsxs("div",{className:"inline-flex items-center rounded-md border",children:[jsx(t,{type:"button",variant:"ghost",size:"sm",disabled:H===0,onClick:()=>b(H-1),"aria-label":L.moveGroupingEarlier(ne),children:jsx("span",{"aria-hidden":"true",children:"\u2190"})}),jsxs(t,{type:"button",variant:"secondary",size:"sm",onClick:()=>i.toggleGrouping(),"aria-label":L.removeGrouping(ne),children:[ne," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}),jsx(t,{type:"button",variant:"ghost",size:"sm",disabled:H===je.length-1,onClick:()=>b(H+1),"aria-label":L.moveGroupingLater(ne),children:jsx("span",{"aria-hidden":"true",children:"\u2192"})})]},`grouping-bar-${i.id}`)})]}):null]}),da&&_?jsx("div",{"data-dtp-slot":"data-table-toolbar-desktop-custom",className:"hidden flex-row items-center gap-3 @min-[1024px]/data-table:flex",children:_}):null]})};function T({filter:s,labels:C,onColumnFilterChange:m}){let[v,N]=D.useState("");if(s.type==="text")return jsxs(z,{className:"min-w-48 max-w-64",children:[jsx($,{value:typeof s.value=="string"?s.value:"",onChange:k=>{m(s.id,k.target.value);},placeholder:s.placeholder??s.label,"aria-label":`${C.filters}: ${s.label}`}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]});if(s.type==="numberRange"||s.type==="dateRange"){let k=id(s.value),A=s.type==="numberRange"?"number":"date",Q=C.filterFrom??ie.filterFrom,P=C.filterTo??ie.filterTo;return jsxs("div",{role:"group","aria-label":`${C.filters}: ${s.label}`,className:"flex min-w-0 items-center gap-1.5",children:[jsxs(z,{className:"min-w-32 max-w-44",children:[jsx($,{type:A,inputMode:A==="number"?"decimal":void 0,value:k.from??"",min:s.min,max:s.max,step:A==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,from:qi(q.target.value,A)});},"aria-label":`${s.label}: ${Q}`}),jsx(M,{align:"inline-start",children:Q})]}),jsxs(z,{className:"min-w-32 max-w-44",children:[jsx($,{type:A,inputMode:A==="number"?"decimal":void 0,value:k.to??"",min:s.min,max:s.max,step:A==="number"?s.step:void 0,onChange:q=>{m(s.id,{...k,to:qi(q.target.value,A)});},"aria-label":`${s.label}: ${P}`}),jsx(M,{align:"inline-start",children:P})]})]})}let w=s.type==="boolean",G=s.type==="faceted",W=[{label:s.trueLabel??C.filterTrue??ie.filterTrue,value:"true"},{label:s.falseLabel??C.filterFalse??ie.filterFalse,value:"false"}],_=w?W:s.options,U=G&&v?_.filter(k=>k.label.toLocaleLowerCase().includes(v.toLocaleLowerCase())):_,R=typeof s.value=="string"||typeof s.value=="boolean"?String(s.value):"",f=Array.isArray(s.value)?s.value.map(String):R?[R]:[],x=f.length===0?s.label:`${s.label}: ${f.length===1?_.find(k=>k.value===String(f[0]))?.label??f[0]:f.length}`;return jsxs(r,{children:[jsx(S,{asChild:true,children:jsx(t,{type:"button",variant:"outline",size:"sm",children:x})}),jsxs(d,{align:"start",className:"w-56",children:[jsx(y,{children:s.label}),G&&s.searchable!==false?jsx("div",{className:"px-2 pb-2",children:jsxs(z,{children:[jsx($,{value:v,onChange:k=>{N(k.target.value);},placeholder:s.searchPlaceholder??C.facetSearch(s.label),"aria-label":C.facetSearch(s.label)}),jsx(M,{align:"inline-start","aria-hidden":"true",children:jsx(s$1,{})})]})}):null,jsxs(p,{children:[s.type==="select"||w||G?jsx(u$1,{onClick:()=>{m(s.id,"");},children:C.allFilterOptions??ie.allFilterOptions}):null,U.map(k=>jsxs(l,{checked:f.includes(k.value),disabled:k.disabled,onCheckedChange:A=>{if(s.type==="select"||w){m(s.id,A===true?k.value:"");return}let Q=new Set(f);A===true?Q.add(k.value):Q.delete(k.value),m(s.id,Array.from(Q));},children:[jsx("span",{className:"min-w-0 flex-1 truncate",children:k.label}),k.count!==void 0?jsx("span",{className:"ml-3 tabular-nums opacity-70",children:k.count}):null]},k.value))]})]})]})}}function jn(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(jn):true:e!=null&&e!==""}function id(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let a=e;return {...typeof a.from=="number"||typeof a.from=="string"?{from:a.from}:{},...typeof a.to=="number"||typeof a.to=="string"?{to:a.to}:{}}}function qi(e,a){if(e)return a==="number"?Number(e):e}var rd=D.lazy(async()=>({default:(await import('./data-table-virtual-table-panel-UK5AMT4Q.js')).DataTableVirtualTablePanel}));function Ji(e){let a=typeof e.virtualization=="object"?e.virtualization:void 0;return e.virtualization===true||a?.enabled===true?jsx(D.Suspense,{fallback:jsx(e$1,{...e,rowsToRender:e.rowsToRender.slice(0,Math.max(1,Math.floor(a?.fallbackRowCount??20)))}),children:jsx(rd,{...e})}):jsx(e$1,{...e})}var ld="data-table-pro:saved-views:";var Zi=["sorting","columnVisibility","columnFilters","grouping","columnOrder","columnPinning","rowPinning","columnSizing","density","viewMode","showHiddenRows","globalFilter"],Xi=0;function Wa(e){let a=qn(e);if(!e||!a)return [];let t;try{t=a.getItem(Yn(e.key));}catch(d){return e.onError?.({error:d,operation:"read"}),[]}if(!t)return [];let o;try{o=(e.deserialize??JSON.parse)(t);}catch(d){return e.onError?.({error:d,operation:"deserialize"}),[]}if(!Ye(o)||!("version"in o)||!("views"in o))return [];let r=e.version??1,l=o.views;if(o.version!==r){if(!e.migrate)return [];try{l=e.migrate({version:o.version,views:o.views},r);}catch(d){return e.onError?.({error:d,operation:"migrate"}),[]}}return Array.isArray(l)?l.map(d=>dd(d,e.slices)).filter(d=>!!d):[]}function er(e,a,t){let o=a.trim();if(!e||!o)return;let r=new Date().toISOString(),l={id:Td(),name:o,createdAt:r,updatedAt:r,state:sd(t,e.slices)},d=[...Wa(e),l];return Wn(e,d,"create")?Qn(l):void 0}function ar(e,a,t){let o=t.trim();if(!e||!o)return;let r,l=Wa(e).map(d=>d.id!==a?d:(r={...d,name:o,updatedAt:new Date().toISOString()},r));if(r)return Wn(e,l,"rename")?Qn(r):void 0}function tr(e,a){if(!e)return false;let t=Wa(e),o=t.filter(r=>r.id!==a);return o.length!==t.length&&Wn(e,o,"delete")}function nr(e){let a=qn(e);if(!e||!a)return false;try{a.removeItem(Yn(e.key));}catch(t){return e.onError?.({error:t,operation:"remove"}),false}return e.onChange?.([],"clear"),true}function Wn(e,a,t){let o=qn(e);if(!o)return false;let r;try{let d={version:e.version??1,views:a};r=(e.serialize??JSON.stringify)(d);}catch(d){return e.onError?.({error:d,operation:"serialize"}),false}try{o.setItem(Yn(e.key),r);}catch(d){return e.onError?.({error:d,operation:"write"}),false}let l=a.map(Qn);return e.onChange?.(l,t),true}function sd(e,a){let t=new Set(a??Zi),o={};for(let r of Object.keys(e))t.has(r)&&Object.assign(o,{[r]:cd(r,e[r])});return o}function dd(e,a){if(!(!Ye(e)||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name.trim()||typeof e.createdAt!="string"||typeof e.updatedAt!="string"))return {id:e.id,name:e.name.trim(),createdAt:e.createdAt,updatedAt:e.updatedAt,state:or(e.state,a)}}function or(e,a){if(!Ye(e))return {};let t=new Set(a??Zi),o={},r=ud(e.sorting);t.has("sorting")&&r&&(o.sorting=r);let l=pd(e.pagination);t.has("pagination")&&l&&(o.pagination=l);let d=Kn(e.rowSelection);t.has("rowSelection")&&d&&(o.rowSelection=d);let p=Kn(e.columnVisibility);t.has("columnVisibility")&&p&&(o.columnVisibility=p);let u=gd(e.columnFilters);t.has("columnFilters")&&u&&(o.columnFilters=u);let y=lt(e.grouping);t.has("grouping")&&y&&(o.grouping=y);let V=e.expanded===true?true:Kn(e.expanded);t.has("expanded")&&V!==void 0&&(o.expanded=V);let S=lt(e.columnOrder);t.has("columnOrder")&&S&&(o.columnOrder=S);let z=md(e.columnPinning);t.has("columnPinning")&&z&&(o.columnPinning=z);let M=bd(e.rowPinning);t.has("rowPinning")&&M&&(o.rowPinning=M);let $=fd(e.columnSizing);return t.has("columnSizing")&&$&&(o.columnSizing=$),t.has("density")&&(e.density==="compact"||e.density==="comfortable"||e.density==="spacious")&&(o.density=e.density),t.has("viewMode")&&(e.viewMode==="table"||e.viewMode==="card")&&(o.viewMode=e.viewMode),t.has("showHiddenRows")&&typeof e.showHiddenRows=="boolean"&&(o.showHiddenRows=e.showHiddenRows),t.has("globalFilter")&&typeof e.globalFilter=="string"&&(o.globalFilter=e.globalFilter),o}function Qn(e){return {...e,state:or(e.state,Object.keys(e.state))}}function cd(e,a){return Array.isArray(a)?a.map(t=>Ye(t)?{...t}:t):Ye(a)?e==="columnPinning"||e==="rowPinning"?{...e==="columnPinning"?{left:Array.isArray(a.left)?[...a.left]:void 0,right:Array.isArray(a.right)?[...a.right]:void 0}:{top:Array.isArray(a.top)?[...a.top]:void 0,bottom:Array.isArray(a.bottom)?[...a.bottom]:void 0}}:{...a}:a}function ud(e){if(Array.isArray(e))return e.filter(a=>Ye(a)&&typeof a.id=="string").map(a=>({id:a.id,desc:!!a.desc}))}function pd(e){if(!(!Ye(e)||!Number.isInteger(e.pageIndex)||e.pageIndex<0||!Number.isInteger(e.pageSize)||e.pageSize<1))return {pageIndex:e.pageIndex,pageSize:e.pageSize}}function gd(e){if(Array.isArray(e))return e.filter(a=>Ye(a)&&typeof a.id=="string"&&Object.prototype.hasOwnProperty.call(a,"value")).map(a=>({id:a.id,value:a.value}))}function md(e){if(Ye(e))return {left:lt(e.left)??[],right:lt(e.right)??[]}}function bd(e){if(Ye(e))return {top:lt(e.top)??[],bottom:lt(e.bottom)??[]}}function Kn(e){if(Ye(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="boolean"))}function fd(e){if(Ye(e))return Object.fromEntries(Object.entries(e).filter(a=>typeof a[1]=="number"&&Number.isFinite(a[1])&&a[1]>=0))}function lt(e){if(Array.isArray(e))return e.filter(a=>typeof a=="string")}function qn(e){if(e){if(e.storage)return e.storage;if(!(typeof window>"u"))try{return window.localStorage}catch(a){e.onError?.({error:a,operation:"read"});return}}}function Td(){return typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():(Xi+=1,`view-${Date.now().toString(36)}-${Xi.toString(36)}`)}function Yn(e){return `${ld}${e}`}function Ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ir({columns:e,currentColumnFilters:a,currentColumnPinning:t,effectiveColumnVisibility:o,enableColumnFilters:r,handleColumnFiltersChange:l$2,handleColumnPinningChange:d,labels:p$1,table:u,toolbarActions:y,visibleData:V,csvExport:S}){let z=D.useMemo(()=>k(e).map(({column:s$1,index:C$1})=>{let m=s(s$1,C$1),v=s$1.header,N=u$1(s$1),w=typeof v=="string"?v:N?C(N):C(m),G=t.left?.includes(m)===true?"left":t.right?.includes(m)===true?"right":false;return {id:m,label:w,visible:o[m]!==false,canHide:s$1.enableHiding!==false,pinned:G}}),[e,t,o]),M=D.useMemo(()=>r===false?[]:k(e).flatMap(({column:s$1,index:C$1})=>{let m=s$1.meta?.filter;if(!m)return [];let v=s(s$1,C$1),N=s$1.header,w=u$1(s$1),G=m.label??(typeof N=="string"?N:w?C(w):C(v)),W=a.find(f=>f.id===v),_=m.faceting?.options,U=m.type==="numberRange"?u.getColumn(v)?.getFacetedMinMaxValues():void 0,R=m.type==="faceted"&&_?typeof _=="function"?_({rows:V}):_:m.type==="faceted"?Array.from(u.getColumn(v)?.getFacetedUniqueValues()??[]).map(([f,x])=>({label:m.faceting?.getOptionLabel?.(f)??String(f),value:String(f),count:x})):typeof m.options=="function"?m.options({rows:V}):m.options??[];return [{id:v,label:G,type:m.type,value:W?.value,placeholder:m.placeholder,options:l(R),searchable:m.faceting?.searchable,searchPlaceholder:m.faceting?.searchPlaceholder,trueLabel:m.trueLabel,falseLabel:m.falseLabel,min:m.min??U?.[0],max:m.max??U?.[1],step:m.step}]}),[e,a,r,u,V]),$=D.useCallback((s,C)=>{l$2(m=>{let v=m.filter(N=>N.id!==s);return n(C)&&v.push({id:s,value:C}),v});},[l$2]),J=D.useCallback(()=>{l$2([]);},[l$2]),F=D.useCallback((s,C)=>{d(m=>{let v=(m.left??[]).filter(w=>w!==s),N=(m.right??[]).filter(w=>w!==s);return C==="left"&&v.push(s),C==="right"&&N.push(s),{left:v,right:N}});},[d]),g=D.useCallback(()=>{if(S)return p({csvExport:S,table:u,labels:p$1})},[S,p$1,u]),T=D.useMemo(()=>S?[...y??[],{key:"__csv_export__",label:p$1.exportCsv,icon:l$1,placement:"trailing",onClick:g}]:y??[],[S,g,p$1.exportCsv,y]);return {columnVisibilityOptions:z,effectiveToolbarActions:T,handleClearColumnFilters:J,handleToolbarColumnFilterChange:$,handleToolbarColumnPinningChange:F,toolbarColumnFilters:M}}function lr({columns:e,data:a,getRowId:t}){let o=D.useRef({columns:e,data:a,getRowId:t}),r=D.useRef(new Set);D.useEffect(()=>{if(!Dd())return;let l=o.current;l.data!==a&&rr(l.data,a)&&!r.current.has("data")&&Xt(r.current,"data","The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused."),l.columns!==e&&rr(l.columns,e)&&!r.current.has("columns")&&Xt(r.current,"columns","The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused."),l.getRowId!==t&&!r.current.has("getRowId")&&Xt(r.current,"getRowId","getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.");let d=new Set;for(let p=0;pObject.is(t,a[o]))}function Xt(e,a,t){e.add(a),console.warn(`[data-table-pro] ${t}`);}function Dd(){return globalThis.process?.env?.NODE_ENV!=="production"}var Cd=D.lazy(()=>import('./data-table-auto-page-size-EICVZJQ5.js'));function Du(e){return yd(e)}function yd(e,a={}){let t$1=a.CardPanel??Ci,o=a.TablePanel??Ji,r$1=e.classNames??{},{rootClassName:l,Button:d,Checkbox:p$1,Input:u,ScrollArea:y,ScrollBar:V,Skeleton:S,Table:z,TableBody:M,TableCell:$,TableFooter:J="tfoot",TableHead:F,TableHeader:g$1,TableRow:T,Tooltip:s$1,TooltipContent:C,TooltipProvider:m=D.Fragment,TooltipTrigger:v}=e,N=ji(e),w=Qi(e),{DataTableFooter:G}=Ki(e),W=Yi(e),_=$i(e,w),U=D.lazy(async()=>{let{createDataTableStateOverlay:f}=await import('./data-table-state-overlay-AQ7VU6EM.js');return {default:f(e)}}),R={minSize:80,size:180,maxSize:720};return function({columns:x,data:k$1,getRowId:A,children:Q,title:P,description:q,toolbarQueryValue:j,onToolbarQueryValueChange:E,toolbarQueryPlaceholder:Z,toolbarQueryDebounceMs:re,manualFiltering:Re=false,enableToolbarQueryFiltering:Se=true,globalFilterFn:ke,columnFilters:Ee,onColumnFiltersChange:Ce,enableColumnFilters:Ae,customToolbar:Ge,compactToolbar:X,rowsPerPageOptions:ve=[10,20,50,100],totalRowCount:L,hasNextPage:ye,sorting:We,onSortingChange:Xe,manualSorting:Ze=false,grouping:ia,onGroupingChange:ge,manualGrouping:ra=false,enableGrouping:Qe=false,groupedColumnMode:ba="reorder",aggregationFns:$e,pageIndex:ea,pageSize:fa,autoPageSize:aa=false,onPageIndexChange:Ta,onPageSizeChange:fe,pageCount:la,manualPagination:Ie=false,rowSelection:Da,onRowSelectionChange:Pe,enableRowSelection:Fe=false,enableMultiRowSelection:Pa=true,enableSubRowSelection:xa=true,getRowCanSelect:sa,rowSelectionSelectAllScope:ka="page",expanded:wa,onExpandedChange:me,getSubRows:Ne,manualExpanding:da=false,paginateExpandedRows:Ea,filterFromLeafRows:Ue,maxLeafRowFilterDepth:Ca,detailPanel:ca,getRowCanExpand:ze,renderExpandedRow:ua,columnOrder:ya,onColumnOrderChange:Fa,enableColumnReordering:qe=false,columnGroupHeaderHeight:Va,columnPinning:je,onColumnPinningChange:pa,enableColumnPinning:Ha=false,rowPinning:Ke,onRowPinningChange:Ma,enableRowPinning:Aa=false,keepPinnedRows:i=true,toolbarActions:H=[],selectionActions:ne=[],rowActions:b=[],csvExport:I,clipboard:K,enableCellSelection:de=false,cellSelection:le,defaultCellSelection:oe,onCellSelectionChange:Ba,gridCommands:ta,density:Ia,onDensityChange:Zt,enableDensityToggle:en=false,columnPrefsKey:B,persistence:Ve,savedViews:ce,toolbarDataOperations:ga,initialState:te,state:be,onStateChange:he,apiRef:cr,labels:Xn,summaryRows:ur=[],cardRenderer:an,cardSizing:pr,cardGridClassName:gr,cardClassName:mr,viewMode:Zn,onViewModeChange:br,enableViewToggle:fr=false,enablePrint:eo=false,enableFullscreen:Ct=false,emptyState:Tr,stateOverlay:Qa,isLoading:ao=false,loadingRowCount:Dr,getRowLoadingState:wr,hiddenRows:to,showHiddenRows:no,onShowHiddenRowsChange:Cr,infiniteScroll:yt,editableRows:za,columnVisibility:oo,onColumnVisibilityChange:yr,columnSizing:io,onColumnSizingChange:hr,enableColumnResizing:ro=false,columnResizeMode:Rr="onEnd",layoutMode:ht="fill",stickyHeader:Sr=true,scrollbarVisibility:lo,showFooter:vr=true,showToolbar:so=true,dir:tn="ltr",flexGrow:qa=true,toolbarVisibility:co,className:Pr,tableClassName:xr,tableContainerClassName:uo,stripedRows:po=false,getRowClassName:go,onRowClick:nn,onActionError:st,dragAndDrop:Ya,fileUpload:ha,virtualization:on,accessibility:mo,interactiveGrid:Rt}){let Ga=D.useRef(null),bo=D.useRef(null),fo=D.useRef(null),kr=D.useRef(null),rn=D.useRef(null),Er=D.useRef(null),[To,ln]=D.useState(0),Fr=D.useId(),Vr=D.useId();lr({columns:x,data:k$1,getRowId:A}),D.useMemo(()=>t(x),[x]);let Me=D.useMemo(()=>Si(Xn),[Xn]),sn=ga===true?{columnChooser:true,savedViews:true,resetLayout:true}:ga===false?{}:ga??{},dn=mo?.mode==="grid"||Rt===true||typeof Rt=="object",[La,St]=xe({defaultValue:oe??null,onChange:Ba,value:le}),Mr=j??be?.globalFilter,Ar=We??be?.sorting,Ir=ia??be?.grouping,vt=ea??be?.pagination?.pageIndex,Ja=fa??be?.pagination?.pageSize,zr=Da??be?.rowSelection,Lr=oo??be?.columnVisibility,Nr=Ee??be?.columnFilters,Or=wa??be?.expanded,_r=ya??be?.columnOrder,Hr=je??be?.columnPinning,Br=Ke??be?.rowPinning,Gr=io??be?.columnSizing,$r=Ia??be?.density,Ur=Zn??be?.viewMode,jr=no??be?.showHiddenRows,Do=so&&(co?.title??true),wo=Do&&P?Fr:void 0,Co=Do&&q?Vr:void 0;Rd(be,{columnFilters:Ee!==void 0,columnOrder:ya!==void 0,columnPinning:je!==void 0,rowPinning:Ke!==void 0,columnSizing:io!==void 0,columnVisibility:oo!==void 0,density:Ia!==void 0,expanded:wa!==void 0,grouping:ia!==void 0,globalFilter:j!==void 0,pagination:ea!==void 0||fa!==void 0,rowSelection:Da!==void 0,showHiddenRows:no!==void 0,sorting:We!==void 0,viewMode:Zn!==void 0});let Kr=Be("globalFilter",E,he),Wr=Be("sorting",Xe,he),Qr=Be("grouping",ge,he),qr=Be("rowSelection",Pe,he),Yr=Be("columnVisibility",yr,he),Jr=Be("columnFilters",Ce,he),Xr=Be("expanded",me,he),Zr=Be("columnOrder",Fa,he),el=Be("columnPinning",pa,he),al=Be("rowPinning",Ma,he),tl=Be("columnSizing",hr,he),nl=Be("density",Zt,he),ol=Be("viewMode",br,he),il=Be("showHiddenRows",Cr,he),Pt=D.useCallback(n=>{Ta?.(n),he?.(h=>({...h,pagination:{pageIndex:n,pageSize:Ja??h.pagination.pageSize}}));},[Ta,he,Ja]),cn=D.useCallback(n=>{fe?.(n),he?.(h=>({...h,pagination:{pageIndex:vt??h.pagination.pageIndex,pageSize:n}}));},[fe,he,vt]),Le=D.useCallback((n,h)=>{hd(h,n,st);},[st]),yo=D.useMemo(()=>b.map(n=>({...n,onClick:h=>{Le({actionKey:n.key,row:h,source:"rowAction"},()=>n.onClick(h));}})),[b,Le]),ho=D.useMemo(()=>nn?n=>{Le({row:n.row,source:"rowClick"},()=>nn(n));}:void 0,[nn,Le]),rl=D.useCallback((n,h)=>{st?.({error:n,row:h,source:"edit"});},[st]),{containerWidth:ll,currentColumnFilters:xt,currentColumnOrder:un,currentColumnPinning:kt,currentRowPinning:pn,currentColumnSizing:Xa,currentColumnVisibility:Ro,currentDensity:dt,currentExpanded:Et,currentGrouping:gn,currentPagination:na,currentRowSelection:Ft,currentShowHiddenRows:mn,currentSorting:Vt,currentViewMode:Za,effectiveColumnVisibility:Mt,globalFilterValue:sl,handleDensityChange:bn,handleShowHiddenRowsChange:fn,handleViewModeChange:Tn,localSearchValue:$a,resolvedLoadingRowCount:dl,resolvedToolbarQueryPlaceholder:cl,selectedRowIds:ul,selectedRows:pl,setCurrentColumnFilters:So,setCurrentColumnOrder:gl,setCurrentColumnPinning:At,setCurrentRowPinning:ml,setCurrentColumnVisibility:bl,setCurrentExpanded:vo,setCurrentGrouping:fl,setCurrentRowSelection:It,setCurrentSorting:Tl,setLocalColumnSizing:Dl,setLocalPagination:Dn,setLocalSearchValue:wn,shouldRenderInitialLoading:Cn,tableData:wl,tableGetRowId:Cl,visibleData:yl}=_i({columnFilters:Nr,columnOrder:_r,columnPinning:Hr,rowPinning:Br,columnSizing:Gr,columnPrefsKey:B,persistence:Ve,columnVisibility:Lr,columns:x,containerRef:Ga,data:k$1,density:$r,enableRowSelection:Fe,enableToolbarQueryFiltering:Se,expanded:Or,grouping:Ir,getSubRows:Ne,getRowId:A,hiddenRows:to,isLoading:ao,loadingRowCount:Dr,manualFiltering:Re,initialState:te,onColumnFiltersChange:Jr,onColumnOrderChange:Zr,onColumnPinningChange:el,onRowPinningChange:al,onColumnSizingChange:tl,onColumnVisibilityChange:Yr,onDensityChange:nl,onExpandedChange:Xr,onGroupingChange:Qr,onPageIndexChange:Pt,onRowSelectionChange:qr,onShowHiddenRowsChange:il,onSortingChange:Wr,onToolbarQueryValueChange:Kr,onViewModeChange:ol,pageIndex:vt,pageSize:Ja,resolvedLabels:Me,rowSelection:zr,rowsPerPageOptions:ve,selectionActions:ne,showHiddenRows:jr,sorting:Ar,toolbarQueryDebounceMs:re,toolbarQueryPlaceholder:Z,toolbarQueryValue:Mr,viewMode:Ur}),yn=!!(ua&&!ca&&!Ne),et=ca??(ua?{getRowCanExpand:Ne?void 0:ze,render:ua}:void 0),[hn,Po]=xe({defaultValue:()=>yn?te?.expanded??{}:{},onChange:yn?vo:et?.onExpandedChange,value:yn?Et:et?.expanded}),{cancelEditing:Rn,clearEditError:xo,draftValues:hl,editErrors:Sn,editingRowId:vn,isEditDirty:Pn,isSavingEdit:xn,saveEdit:kn,setDraftValues:Rl,setEditingRowId:Sl,startEditingRow:vl}=a$3({columns:x,editableRows:za,onError:rl}),Pl=D.useMemo(()=>({cancel:Rn,cancelOnEscape:za?.cancelOnEscape!==false,clearError:xo,commit:n=>{kn(n);},commitOnEnter:za?.commitOnEnter!==false,errors:Sn,isDirty:Pn,isPending:xn}),[Rn,xo,za?.cancelOnEscape,za?.commitOnEnter,Sn,Pn,xn,kn]),{viewportElement:En,viewportHeight:Fn}=a$4(fo,Za),ko=typeof aa=="object"?aa:void 0,xl=D.useCallback(n=>{n!==na.pageSize&&(na.pageIndex!==0&&Pt(0),cn(n),Ja===void 0&&Dn({pageIndex:0,pageSize:n}));},[na.pageIndex,na.pageSize,Pt,cn,Ja,Dn]),kl=aa===true||ko!==void 0,zt=D.useCallback(()=>typeof window>"u"||typeof window.print!="function"?false:(window.print(),true),[]),Lt=D.useCallback(async()=>{let n=Ga.current;return !n||typeof document>"u"?false:document.fullscreenElement?typeof document.exitFullscreen!="function"?false:(await document.exitFullscreen(),true):typeof n.requestFullscreen!="function"?false:(await n.requestFullscreen(),true)},[]),[Eo,El]=D.useState(false);D.useEffect(()=>{if(!Ct||typeof document>"u")return;let n=()=>{El(document.fullscreenElement===Ga.current);};return n(),document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[Ct]);let Fl=D.useCallback(()=>{ha?.disabled||bo.current?.click();},[ha?.disabled]),Vl=D.useCallback(n=>{Le({source:"fileUpload"},()=>ha?.onFilesSelected(n));},[ha,Le]),Ml=D.useMemo(()=>{if(ht!=="fill")return false;let n=k(x).filter(({column:h,index:se})=>Mt[s(h,se)]!==false);return n.length>0&&n.every(({column:h,index:se})=>{let ut=s(h,se);return g(h)||Object.prototype.hasOwnProperty.call(Xa,ut)})},[x,Xa,Mt,ht]),Al=vi({Button:d,Checkbox:p$1,DataTableRowActions:w,Tooltip:s$1,TooltipContent:C,TooltipTrigger:v,cancelEditing:Rn,columns:x,editableRows:za,editErrors:Sn,editingRowId:vn,enableRowSelection:Fe,enableRowPinning:Aa,hasTreeExpansion:!!Ne,isSavingEdit:xn,isEditDirty:Pn,includeFillSpacer:Ml,labels:Me,lastSelectedRowIdRef:Er,detailPanel:et,detailExpanded:hn,onDetailExpandedChange:Po,rowSelectionSelectAllScope:ka,rowActions:yo,saveEdit:kn,startEditingRow:vl,tableRef:rn}),Il=D.useMemo(()=>i$1(x),[x]),{effectivePageCount:zl,footerTotalRowCount:Ll,handleFooterPageIndexChange:Nl,handleFooterPageSizeChange:Ol,isPageCountKnown:_l,renderedRows:Fo,topPinnedRows:Hl,bottomPinnedRows:Bl,reorderColumn:Vo,rowsToRender:Gl,sentinelRef:Mo,table:ae,virtualPaddingBottom:$l,virtualPaddingTop:Ul,visibleLeafColumns:Vn}=Vi({autoResetPageIndex:false,columnGroupPaths:Il,columnResizeMode:Rr,dir:tn,currentColumnFilters:xt,currentColumnOrder:un,currentColumnPinning:kt,currentRowPinning:pn,currentColumnSizing:Xa,currentExpanded:Et,currentGrouping:gn,currentPagination:na,currentRowSelection:Ft,currentSorting:Vt,currentViewMode:Za,defaultColumn:R,effectiveColumnVisibility:Mt,enableColumnResizing:ro,enableRowPinning:Aa,enableRowSelection:Fe,enableMultiRowSelection:Pa,enableSubRowSelection:xa,getRowCanSelect:sa,getRowCanExpand:ze,getSubRows:Ne,aggregationFns:$e,groupedColumnMode:ba,globalFilterFn:ke,globalFilterValue:sl,hasNextPage:ye,handleColumnFiltersChange:So,handleColumnOrderChange:gl,handleColumnPinningChange:At,handleRowPinningChange:ml,handleColumnVisibilityChange:bl,handleExpandedChange:vo,handleGroupingChange:fl,infiniteScroll:yt,keepPinnedRows:i,manualFiltering:Re,manualGrouping:ra,manualExpanding:da,manualPagination:Ie,manualSorting:Ze,onActionError:st,onPageIndexChange:Pt,onPageSizeChange:cn,pageCount:la,pageIndex:vt,pageSize:Ja,paginateExpandedRows:Ea,filterFromLeafRows:Ue,maxLeafRowFilterDepth:Ca,setCurrentRowSelection:It,setCurrentSorting:Tl,setLocalColumnSizing:Dl,setLocalPagination:Dn,shouldRenderInitialLoading:Cn,tableColumns:Al,tableData:wl,tableGetRowId:Cl,tableRef:rn,totalRowCount:L,virtualization:on}),Ao=Bi({columns:x,columnSizing:Xa,editableRows:!!za,enableRowSelection:Fe,hasRowActions:b.length>0,hasRowExpansion:!!(Ne||et),layoutMode:ht,uiClassNames:r$1,visibleLeafColumns:Vn}),{explicitlySizedColumnIds:Nt,fillMinWidth:jl,getColumnLayout:Kl}=Ao,Wl=D.useMemo(()=>new Set(k(x).flatMap(({column:n,index:h})=>Object.prototype.hasOwnProperty.call(n,"cell")&&typeof n.cell=="function"?[s(n,h)]:[])),[x]),Ql=Vn.length,ql=D.useMemo(()=>({Checkbox:p$1,Input:u,Skeleton:S,TableCell:$,TableRow:T}),[]),Yl=D.useMemo(()=>k(x).some(({column:n})=>n.meta?.cardTitle),[x]),Jl=D.useCallback((n,h)=>{Nt.has(n)||Object.prototype.hasOwnProperty.call(ae.store.state.columnSizing,n)||flushSync(()=>{ae.setColumnSizing(se=>({...se,[n]:h}));});},[Nt,ae]),Xl=D.useCallback(n=>{if(Nt.has(n)){ae.getColumn(n)?.resetSize();return}ae.setColumnSizing(h=>{if(!Object.prototype.hasOwnProperty.call(h,n))return h;let se={...h};return delete se[n],se});},[Nt,ae]),Mn=ae.getFilteredRowModel().rows.map(n=>n.original),An=Qa?.empty??Tr,Io=typeof An=="function"?An({rows:Mn,toolbarQueryValue:$a}):An,zo=D.useMemo(()=>Qa?{...Qa,onRetry:Qa.onRetry?()=>Le({source:"retry"},Qa.onRetry):void 0}:void 0,[Le,Qa]),Lo=zo?.error!=null?jsx(D.Suspense,{fallback:null,children:jsx(U,{labels:Me,overlay:zo,rows:Mn,toolbarQueryValue:$a})}):void 0,{columnVisibilityOptions:Zl,effectiveToolbarActions:No,handleClearColumnFilters:es,handleToolbarColumnFilterChange:as,handleToolbarColumnPinningChange:ts,toolbarColumnFilters:ns}=ir({columns:x,currentColumnFilters:xt,currentColumnPinning:kt,csvExport:I,effectiveColumnVisibility:Mt,enableColumnFilters:Ae,handleColumnFiltersChange:So,handleColumnPinningChange:At,labels:Me,table:ae,toolbarActions:H,visibleData:yl}),os=D.useMemo(()=>[...No,...eo?[{key:"__print__",label:Me.print,placement:"trailing",onClick:()=>{zt();}}]:[],...Ct?[{key:"__fullscreen__",label:Eo?Me.exitFullscreen:Me.enterFullscreen,placement:"trailing",onClick:()=>Lt()}]:[]].map(n=>({...n,onClick:h=>{Le({actionKey:n.key,source:"toolbarAction"},()=>n.onClick(h));}})),[No,Ct,eo,Eo,zt,Me.enterFullscreen,Me.exitFullscreen,Me.print,Le,Lt]),is=D.useMemo(()=>ne.map(n=>({...n,onClick:h=>{Le({actionKey:n.key,source:"selectionAction"},()=>n.onClick(h));}})),[Le,ne]),Oo=D.useMemo(()=>({sorting:Vt,pagination:na,rowSelection:Ft,columnVisibility:Ro,columnFilters:xt,expanded:Et,grouping:gn,columnOrder:un,columnPinning:kt,rowPinning:pn,columnSizing:Xa,density:dt,viewMode:Za,showHiddenRows:mn,globalFilter:$a}),[xt,un,kt,pn,Xa,Ro,dt,Et,gn,na,Ft,mn,Vt,Za,$a]),ct=D.useCallback(()=>vd(Oo),[Oo]),Na=D.useCallback(n=>{n.sorting!==void 0&&ae.setSorting(n.sorting),n.pagination!==void 0&&ae.setPagination(n.pagination),n.rowSelection!==void 0&&It(n.rowSelection),n.columnVisibility!==void 0&&ae.setColumnVisibility(n.columnVisibility),n.columnFilters!==void 0&&ae.setColumnFilters(n.columnFilters),n.expanded!==void 0&&ae.setExpanded(n.expanded),n.grouping!==void 0&&ae.setGrouping(n.grouping),n.columnOrder!==void 0&&ae.setColumnOrder(n.columnOrder),n.columnPinning!==void 0&&At(n.columnPinning),n.rowPinning!==void 0&&ae.setRowPinning(n.rowPinning),n.columnSizing!==void 0&&ae.setColumnSizing(n.columnSizing),n.density!==void 0&&bn(n.density),n.viewMode!==void 0&&Tn(n.viewMode),n.showHiddenRows!==void 0&&fn(n.showHiddenRows),n.globalFilter!==void 0&&wn(n.globalFilter);},[bn,fn,Tn,wn,At,It,ae]),at=D.useCallback(()=>zi(Ve??B),[B,Ve]),In=D.useCallback(n=>{n?.clearPersistence&&at(),Na({columnVisibility:te?.columnVisibility??{},columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{}});},[at,x,te,Na]),_o=D.useCallback(n=>{n?.clearPersistence&&at(),Na({sorting:te?.sorting??[],pagination:te?.pagination??{pageIndex:0,pageSize:ve[0]??20},rowSelection:te?.rowSelection??{},columnVisibility:te?.columnVisibility??{},columnFilters:te?.columnFilters??[],expanded:te?.expanded??{},grouping:te?.grouping??[],columnOrder:te?.columnOrder??[],columnPinning:te?.columnPinning??r(x),rowPinning:te?.rowPinning??{top:[],bottom:[]},columnSizing:te?.columnSizing??{},density:te?.density??"comfortable",viewMode:te?.viewMode??"table",showHiddenRows:te?.showHiddenRows??false,globalFilter:te?.globalFilter??""});},[at,x,te,Na,ve]),Ho=D.useCallback(()=>Wa(ce),[ce]),Ot=D.useCallback(n=>er(ce,n,ct()),[ct,ce]),zn=D.useCallback(n=>{let h=Wa(ce).find(se=>se.id===n);return h?(Na(h.state),ce?.onApply?.(h),true):false},[Na,ce]),_t=D.useCallback((n,h)=>ar(ce,n,h),[ce]),Ht=D.useCallback(n=>tr(ce,n),[ce]),Bo=D.useCallback(()=>nr(ce),[ce]),rs=D.useMemo(()=>Wa(ce),[ce,To]),ls=D.useCallback(n=>{let h=Ot(n);return h&&ln(se=>se+1),h},[Ot]),ss=D.useCallback((n,h)=>{let se=_t(n,h);return se&&ln(ut=>ut+1),se},[_t]),ds=D.useCallback(n=>{let h=Ht(n);return h&&ln(se=>se+1),h},[Ht]),Go=D.useCallback(n=>p({csvExport:n??(I||true),labels:Me,table:ae}),[I,Me,ae]),Ln=D.useCallback(async n=>{let{copyDataTableToClipboard:h}=await import('./data-table-clipboard-RNEFAPJB.js');return h({clipboard:n??(K?.copy===false?false:La?{...K?.copy===true?{}:K?.copy,scope:"cellSelection"}:K?.copy??true),cellSelection:La,table:ae})},[K?.copy,La,ae]),$o=D.useCallback((n,h="top")=>{try{let se=ae.getRow(n,!0);return se.getCanPin()?(se.pin(h),!0):!1}catch{return false}},[ae]),Uo=D.useCallback(n=>{try{let h=ae.getRow(n,!0);return h.getCanPin()?(h.pin(!1),!0):!1}catch{return false}},[ae]);return D.useImperativeHandle(cr,()=>({getTable:()=>rn.current,getState:ct,snapshot:ct,restore:Na,resetColumnLayout:In,resetState:_o,clearPersistedState:at,getSavedViews:Ho,createSavedView:Ot,applySavedView:zn,renameSavedView:_t,deleteSavedView:Ht,clearSavedViews:Bo,pinRow:$o,unpinRow:Uo,focus:()=>{Ga.current?.focus();},scrollToRow:n=>sr(Ga.current,"row",n),scrollToColumn:n=>sr(Ga.current,"column",n),exportCsv:Go,copyToClipboard:Ln,getCellSelection:()=>La,setCellSelection:St,clearCellSelection:()=>St(null),print:zt,toggleFullscreen:Lt}),[zn,at,Bo,Ln,La,Ot,Ht,Go,Ho,ct,_t,In,_o,Na,$o,zt,St,Uo,Lt]),jsx(m,{children:jsxs("div",{ref:Ga,"data-dtp-slot":"data-table-root","data-density":dt,"data-dtp-striped-rows":po||void 0,"aria-busy":ao||void 0,dir:tn,tabIndex:-1,className:a$2("@container/data-table data-table-container-query flex w-full min-w-0 flex-col",qa?"h-full min-h-0 flex-1":"grow",l),onDragEnter:Ya?.onDragEnter,onDragOver:Ya?.onDragOver,onDragLeave:Ya?.onDragLeave,onDrop:Ya?.onDrop,onKeyDown:n=>{if(dn&&ta&&(n.ctrlKey||n.metaKey)&&n.key.toLowerCase()==="z"&&!Jn(n.target)){let h=n.shiftKey?ta.redo:ta.undo;h&&(n.preventDefault(),Le({source:n.shiftKey?"redo":"undo"},()=>h({cellSelection:La,table:ae})));return}!K?.copy||!(n.ctrlKey||n.metaKey)||n.key.toLowerCase()!=="c"||Jn(n.target)||(n.preventDefault(),Le({source:"clipboardCopy"},async()=>{await Ln(K.copy===true?void 0:La&&typeof K.copy=="object"&&!K.copy.scope?{...K.copy,scope:"cellSelection"}:K.copy);}));},onPaste:n=>{let h=K?.paste;if(!h||h.enabled===false||Jn(n.target))return;let se=n.clipboardData.getData("text/plain");se&&((h.preventDefault??true)&&n.preventDefault(),Le({source:"clipboardPaste"},async()=>{let{parseDataTableClipboardText:ut}=await import('./data-table-clipboard-RNEFAPJB.js');return h.onPaste({table:ae,text:se,values:ut(se)})}));},children:[kl?jsx(D.Suspense,{fallback:null,children:jsx(Cd,{config:ko,currentPageSize:na.pageSize,enabled:true,onPageSizeChange:xl,viewportElement:En,viewportHeight:Fn})}):null,ha?jsx("input",{ref:bo,className:"hidden",type:"file",accept:ha.accept,multiple:ha.multiple??true,disabled:ha.disabled,onChange:n=>{let h=n.currentTarget.files;h?.length&&Vl(h),n.currentTarget.value="";}}):null,jsx("div",{"data-dtp-slot":"data-table-layout",className:a$2("flex w-full flex-col",qa?"min-h-0 flex-1":"grow"),children:jsxs("div",{"data-dtp-slot":"data-table-main",className:a$2("flex w-full flex-col gap-4",qa?"min-h-0 flex-1":"grow",Pr),children:[so?jsx(Ri,{allRows:Mn,columnFilters:ns,columnVisibilityOptions:Zl,compactToolbar:X,customToolbar:Ge,DataTableToolbar:W,density:dt,description:q,descriptionId:Co,effectiveToolbarActions:os,enableColumnPinning:Ha,enableGrouping:Qe,enableToolbarColumnChooser:sn.columnChooser===true,enableToolbarFilterChips:!!ga,enableToolbarResetLayout:sn.resetLayout===true,enableToolbarSavedViews:sn.savedViews===true&&!!ce,enableDensityToggle:en,enableViewToggle:fr&&!!an,hiddenRowsLabel:to?.label,labels:Me,onClearColumnFilters:es,onColumnFilterChange:as,onColumnPinningChange:ts,onDensityChange:bn,onShowHiddenRowsChange:fn,onToolbarQueryValueChange:wn,reorderColumn:Vo,onResetColumnLayout:In,onCreateSavedView:ls,onApplySavedView:zn,onRenameSavedView:ss,onDeleteSavedView:ds,onViewModeChange:Tn,openFileDialog:ha?Fl:void 0,selectedRowIds:ul,selectedRows:pl,selectionActions:is,savedViews:rs,showHiddenRows:mn,table:ae,title:P,titleId:wo,toolbarQueryPlaceholder:cl,toolbarQueryValue:$a,toolbarVisibility:co,viewMode:Za}):null,jsx("div",{"data-dtp-slot":"data-table-content",className:a$2(qa?"flex min-h-0 flex-1 flex-col":""),children:Za==="card"&&an?jsx(t$1,{cardClassName:mr,cardGridClassName:gr,cardSizing:pr,cardRenderer:an,containerWidth:ll,currentDetailExpanded:hn,currentRowSelection:Ft,DataTableCardView:_,DataTableEmptyState:N,dragAndDrop:Ya,editableRows:za,editingRowId:vn,emptyNode:Io,stateOverlayNode:Lo,enableRowSelection:Fe,flexGrow:qa,getRowClassName:go,hasCardTitle:Yl,infiniteScroll:yt,localSearchValue:$a,onRowClick:ho,renderedRows:Fo,detailPanel:et,resolvedLabels:Me,resolvedLoadingRowCount:dl,rowActions:yo,ScrollArea:y,scrollbarVisibility:lo,sentinelRef:Mo,setCurrentDetailExpanded:Po,setCurrentRowSelection:It,setEditingRowId:Sl,shouldRenderInitialLoading:Cn,tableContainerClassName:uo,uiClassNames:r$1,virtualization:on}):jsx(o,{ariaDescribedBy:Co,ariaLabelledBy:wo,bodyRowComponents:ql,columnLayouts:Ao.columnLayouts,currentDensity:dt,columnGroupHeaderHeight:Va,currentDetailExpanded:hn,currentSorting:Vt,dir:tn,DataTableEmptyState:N,dragAndDrop:Ya,draggedColumnIdRef:kr,draftValues:hl,editingRowId:vn,editingContext:Pl,emptyNode:Io,stateOverlayNode:Lo,enableColumnReordering:qe,enableColumnResizing:ro,explicitCustomCellColumnIds:Wl,fillMinWidth:jl,flexGrow:qa,getColumnLayout:Kl,getRowClassName:go,getRowLoadingState:wr,infiniteScroll:yt,layoutMode:ht,localSearchValue:$a,onRowClick:ho,primeColumnForResize:Jl,renderedRows:Fo,detailPanel:et,topPinnedRows:Hl,bottomPinnedRows:Bl,reorderColumn:Vo,resetColumnSize:Xl,resolvedLabels:Me,rowsToRender:Gl,ScrollArea:y,ScrollBar:V,scrollbarVisibility:lo,sentinelRef:Mo,setDraftValues:Rl,shouldRenderInitialLoading:Cn,stickyHeader:Sr,stripedRows:po,summaryRows:ur,table:ae,tableClassName:xr,tableContainerClassName:uo,Table:z,TableBody:M,TableCell:$,TableFooter:J,TableHead:F,TableHeader:g$1,TableRow:T,tableScrollContainerRef:fo,tableScrollElement:En,uiClassNames:r$1,viewportHeight:Fn,virtualization:on,gridMode:dn,gridPageSize:mo?.pageSize??(typeof Rt=="object"?Rt.pageSize:void 0),cellSelectionEnabled:dn&&(de||le!==void 0||oe!==void 0),cellSelection:La,onCellSelectionChange:St,gridRowOffset:Ie?na.pageIndex*na.pageSize:0,totalRowCount:L,virtualPaddingBottom:$l,virtualPaddingTop:Ul,visibleLeafColumnCount:Ql,visibleLeafColumns:Vn})}),jsx(yi,{currentPagination:na,DataTableFooter:G,effectivePageCount:zl,footerTotalRowCount:Ll,handleFooterPageIndexChange:Nl,handleFooterPageSizeChange:Ol,labels:Me,pageCountKnown:_l,rowsPerPageOptions:ve,showFooter:vr&&!yt?.enabled,children:Q})]})})]})})}}function hd(e,a,t){let o;try{o=e();}catch(r){t?.({...a,error:r});return}Promise.resolve(o).catch(r=>{t?.({...a,error:r});});}function Be(e,a,t){let o=D.useCallback(r=>{a?.(r),t?.(l=>({...l,[e]:r}));},[e,a,t]);return a||t?o:void 0}function Rd(e,a){let t=D.useRef(new Set);D.useEffect(()=>{if(!(!e||!Sd()))for(let o of Object.keys(a))e[o]===void 0||!a[o]||t.current.has(o)||(t.current.add(o),console.warn(`[data-table-pro] Both state.${o} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`));},[a,e]);}function Sd(){return globalThis.process?.env?.NODE_ENV!=="production"}function vd(e){return {sorting:e.sorting.map(a=>({...a})),pagination:{...e.pagination},rowSelection:{...e.rowSelection},columnVisibility:{...e.columnVisibility},columnFilters:e.columnFilters.map(a=>({...a})),expanded:typeof e.expanded=="boolean"?e.expanded:{...e.expanded},grouping:[...e.grouping??[]],columnOrder:[...e.columnOrder],columnPinning:{left:e.columnPinning.left?[...e.columnPinning.left]:void 0,right:e.columnPinning.right?[...e.columnPinning.right]:void 0},rowPinning:{top:[...e.rowPinning.top],bottom:[...e.rowPinning.bottom]},columnSizing:{...e.columnSizing},density:e.density,viewMode:e.viewMode,showHiddenRows:e.showHiddenRows,globalFilter:e.globalFilter}}function sr(e,a,t){if(!e)return false;let o=a==="row"?"data-row-id":"data-column-id",r=Array.from(e.querySelectorAll(`[${o}]`)).find(l=>l.getAttribute(o)===t);return r?(r.scrollIntoView?.({block:"nearest",inline:"nearest"}),true):false}function Jn(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement:false}export{Ci as a,yi as b,Ri as c,vi as d,xe as e,Vi as f,_i as g,Bi as h,Du as i,yd as j};//# sourceMappingURL=chunk-XZTPNWJD.js.map +//# sourceMappingURL=chunk-XZTPNWJD.js.map \ No newline at end of file diff --git a/dist/chunk-XZTPNWJD.js.map b/dist/chunk-XZTPNWJD.js.map new file mode 100644 index 0000000..d503a5b --- /dev/null +++ b/dist/chunk-XZTPNWJD.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-base-card-panel.tsx","../src/core/data-table/data-table-card-panel.tsx","../src/core/data-table/data-table-footer-section.tsx","../src/core/data-table/data-table-toolbar-section.tsx","../src/core/data-table/data-table-labels.ts","../src/core/data-table/use-data-table-columns.tsx","../src/core/data-table/use-controllable-state.ts","../src/core/data-table/use-data-table-infinite-scroll.ts","../src/core/data-table/use-data-table-pagination-clamp.ts","../src/core/data-table/use-data-table-search-index.ts","../src/core/data-table/tanstack-v9.ts","../src/core/data-table/use-data-table-instance.ts","../src/core/data-table/use-data-table-column-prefs.ts","../src/core/data-table/use-data-table-container-width.ts","../src/core/data-table/use-data-table-state.ts","../src/core/data-table/use-column-layout.ts","../src/core/data-table/create-data-table-card-view.tsx","../src/core/data-table/create-data-table-empty-state.tsx","../src/core/data-table/create-data-table-pagination.tsx","../src/core/data-table/create-data-table-row-actions.tsx","../src/core/data-table/create-data-table-toolbar.tsx","../src/core/data-table/data-table-table-panel-router.tsx","../src/core/data-table/data-table-saved-views.ts","../src/core/data-table/use-data-table-toolbar-features.ts","../src/core/data-table/use-data-table-performance-diagnostics.ts","../src/core/data-table/create-data-table.tsx"],"names":["DataTableBaseCardPanel","cardClassName","cardGridClassName","cardSizing","cardRenderer","currentRowSelection","currentDetailExpanded","DataTableCardView","DataTableEmptyState","dragAndDrop","editableRows","editingRowId","emptyNode","enableRowSelection","flexGrow","getRowClassName","hasCardTitle","infiniteScroll","localSearchValue","onRowClick","renderedRows","detailPanel","resolvedLabels","resolvedLoadingRowCount","rowActions","ScrollArea","scrollbarVisibility","sentinelRef","setCurrentDetailExpanded","setCurrentRowSelection","setEditingRowId","shouldRenderInitialLoading","stateOverlayNode","tableContainerClassName","uiClassNames","shouldRenderCards","cardScrollContainerRef","wi","renderCardView","rows","options","jsx","jsxs","cn","LazyDataTableVirtualCardPanel","Wt","DataTableCardPanel","props","config","DataTableFooterSection","children","currentPagination","DataTableFooter","effectivePageCount","footerTotalRowCount","handleFooterPageIndexChange","handleFooterPageSizeChange","labels","pageCountKnown","rowsPerPageOptions","showFooter","DataTableToolbarSection","allRows","columnFilters","columnVisibilityOptions","compactToolbar","customToolbar","DataTableToolbar","description","descriptionId","effectiveToolbarActions","enableColumnPinning","enableGrouping","enableToolbarColumnChooser","enableToolbarFilterChips","enableToolbarResetLayout","enableToolbarSavedViews","enableDensityToggle","enableViewToggle","hiddenRowsLabel","onClearColumnFilters","onColumnFilterChange","onColumnPinningChange","onDensityChange","onShowHiddenRowsChange","onToolbarQueryValueChange","reorderColumn","onResetColumnLayout","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","onViewModeChange","openFileDialog","selectedRowIds","selectedRows","selectionActions","savedViews","showHiddenRows","table","title","titleId","toolbarQueryPlaceholder","toolbarQueryValue","toolbarVisibility","density","viewMode","columnId","visible","DATA_TABLE_DEFAULT_LABELS","count","label","pageIndex","pageCount","rowId","columnLabel","name","resolveDataTableLabels","useDataTableColumns","Button","Checkbox","DataTableRowActions","Tooltip","TooltipContent","TooltipTrigger","cancelEditing","columns","editErrors","enableRowPinning","hasTreeExpansion","isSavingEdit","isEditDirty","includeFillSpacer","lastSelectedRowIdRef","detailExpanded","onDetailExpandedChange","rowSelectionSelectAllScope","saveEdit","startEditingRow","tableRef","selectRowRange","qt","targetRowId","selected","tableInstance","row","isDataTableLoadingRow","startIndex","endIndex","from","to","current","next","item","defs","expansionColumnSize","UTILITY_COLUMN_SIZE","canExpandTree","canExpandDetail","isTreeExpanded","isDetailExpanded","IconChevronDown","toggleDataTableExpandedState","selectsFilteredRows","selectableRows","allSelected","someSelected","checked","event","column","decorateFilterableColumn","position","useControllableState","defaultValue","onChange","value","uncontrolledValue","setUncontrolledValue","Oa","currentValue","currentValueRef","setValue","updater","nextValue","useDataTableInfiniteScroll","enabled","hasMore","isLoadingMore","onLoadMore","onError","_a","isRequestInFlightRef","onLoadMoreEvent","onErrorEvent","error","target","observer","entries","result","useDataTablePaginationClamp","maxPageIndex","onPageIndexChange","setLocalPageIndex","xi","nextPageIndex","useDataTableSearchIndex","Ei","valuesByRow","filterValue","query","normalizeDataTableSearchText","original","valuesByColumn","text","createDataTableFeatures","customAggregationFns","tableFeatures","columnFacetingFeature","columnFilteringFeature","globalFilteringFeature","rowAggregationFeature","columnGroupingFeature","columnOrderingFeature","columnPinningFeature","columnSizingFeature","columnResizingFeature","columnVisibilityFeature","rowExpandingFeature","rowPaginationFeature","rowPinningFeature","rowSelectionFeature","rowSortingFeature","createExpandedRowModel","createFacetedMinMaxValues","createFacetedRowModel","createFacetedUniqueValues","createFilteredRowModel","createGroupedRowModel","createPaginatedRowModel","createSortedRowModel","builtInAggregationFns","builtInFilterFns","builtInSortFns","useDataTableInstance","autoResetPageIndex","columnGroupPaths","columnResizeMode","dir","currentColumnFilters","currentColumnOrder","currentColumnPinning","currentRowPinning","currentColumnSizing","currentExpanded","currentGrouping","currentSorting","currentViewMode","defaultColumn","effectiveColumnVisibility","enableColumnResizing","enableMultiRowSelection","enableSubRowSelection","getRowCanSelect","getRowCanExpand","getSubRows","aggregationFns","groupedColumnMode","globalFilterFn","globalFilterValue","hasNextPage","handleColumnFiltersChange","handleColumnOrderChange","handleColumnPinningChange","handleRowPinningChange","handleColumnVisibilityChange","handleExpandedChange","handleGroupingChange","keepPinnedRows","manualFiltering","manualGrouping","manualExpanding","manualPagination","manualSorting","onActionError","onPageSizeChange","pageSize","paginateExpandedRows","filterFromLeafRows","maxLeafRowFilterDepth","setCurrentSorting","setLocalColumnSizing","setLocalPagination","tableColumns","tableData","tableGetRowId","totalRowCount","virtualization","cachedGlobalFilterFn","generatedColumnIds","De","getDataTableLeafColumns","index","getColumnId","effectiveColumnOrder","columnIds","dataColumnIds","isUtilityColumnId","dataColumnIdSet","orderedDataColumnIds","unorderedDataColumnIds","effectiveColumnPinning","columnIdSet","dataLeft","dataRight","handleTanStackColumnPinningChange","effectiveRowPinning","availableRowIds","visitRows","subRows","top","topIds","bottom","tanStackRowSelection","handleTanStackRowSelectionChange","tableState","handlePaginationChange","handleColumnSizingChange","features","useTable","visibleLeafColumns","sourceColumnId","targetColumnId","canReorderDataTableColumn","defaultOrder","nextOrder","moveColumnInOrder","topPinnedRows","bottomPinnedRows","virtualizationConfig","virtualRowsEnabled","fallbackRowCount","rowsToRender","rowIndex","usesManualRows","derivedTotalRowCount","effectiveTotalRowCount","isPageCountKnown","nextPageSize","STORAGE_PREFIX","DEFAULT_VERSION","ALL_SLICES","readDataTableColumnPrefs","input","resolvePersistenceConfig","storage","resolveStorage","storageKey","getStorageKey","parsed","targetVersion","candidate","isPersistencePayload","selectPersistenceSlices","validateDataTableColumnPrefs","clearDataTableColumnPrefs","usePersistDataTableColumnPrefs","key","persistence","prefs","version","debounceMs","selectedState","serialized","Ka","payload","operation","write","timeout","isRecord","slices","slice","visibility","validateBooleanRecord","sizing","validateSizingRecord","order","validateStringArray","left","right","rowPinning","validateRowPinning","isDataTableDensity","entry","BREAKPOINT_WIDTHS","DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS","first","second","useDataTableContainerWidth","containerRef","widthRef","rt","width","setWidth","element","updateWidth","inlineSize","nextWidth","quantizeDataTableContainerWidth","getResizeObserverInlineSize","bucket","breakpointWidth","contentBoxSize","size","getInlineSize","useDataTableState","columnOrder","columnPinning","columnSizing","columnPrefsKey","columnVisibility","data","enableToolbarQueryFiltering","expanded","grouping","getRowId","hiddenRows","initialState","isLoading","loadingRowCount","onColumnFiltersChange","onColumnOrderChange","onRowPinningChange","onColumnSizingChange","onColumnVisibilityChange","onExpandedChange","onGroupingChange","onRowSelectionChange","onSortingChange","rowSelection","sorting","toolbarQueryDebounceMs","persistenceConfig","ee","persistedColumnPrefs","localPagination","currentColumnVisibility","setCurrentColumnVisibility","setCurrentColumnFilters","setCurrentExpanded","setCurrentColumnOrder","setCurrentColumnPinning","getInitialColumnPinning","setCurrentRowPinning","setCurrentColumnSizing","setCurrentViewMode","setCurrentGrouping","currentShowHiddenRows","setCurrentShowHiddenRows","currentDensity","setCurrentDensity","resolvedToolbarQueryValue","resolvedToolbarQueryPlaceholder","resolvedToolbarQueryDebounceMs","setLocalSearchValue","containerWidth","hasOnSearchValueChange","lastReportedSearchValueRef","onToolbarQueryValueChangeEvent","deferredSearchValue","handleViewModeChange","nextViewMode","handleShowHiddenRowsChange","nextShowHiddenRows","handleDensityChange","nextDensity","resetPageIndexForFilterChange","lastFilterStateRef","previous","filtersChanged","globalFilterChanged","responsiveColumnVisibility","isHiddenAtContainerWidth","visibleData","isRowVisible","loadingRows","createDataTableLoadingRows","getDataTableLoadingRowId","shouldResolveSelectedRows","rowById","currentRows","EMPTY_COLUMN_LAYOUT","useColumnLayout","hasRowActions","hasRowExpansion","layoutMode","explicitlySizedColumnIds","Ra","ids","hasExplicitDataTableColumnSize","minimumColumnWidths","widths","configuredMinWidth","getConfiguredColumnMinWidth","pinnedColumns","leftOffset","getFixedSide","getColumnLayoutSize","rightOffset","fixedWidthColumnIds","columnLayouts","layouts","isSelectionColumn","isExpansionColumn","isActionsColumn","isUtilityColumn","isSpacerColumn","columnMinWidth","shouldFixWidth","baseStyle","fixedSide","pinnedStyle","cellStyle","getPinnedColumnClassName","fillMinWidth","total","layout","getColumnLayout","createDataTableCardView","ui","Card","CardContent","CardHeader","Skeleton","onEditingRowIdChange","getRowDraggable","onRowDragStart","onRowDragEnd","resolvedCardSizing","resolvedCardGridClassName","getCardGridClassName","cardGridClasses","cardItemClasses","stateClassName","getCardItemClassName","_","originalRow","isSelected","isEditing","hasCardActions","showCardGradient","showCardOverlayControls","handleCardActivate","getCardRendererClassName","isDataTableInteractiveTarget","updateRowSelection","canSelect","canMultiSelect","nextSelection","createDataTableEmptyState","Empty","EmptyContent","EmptyDescription","EmptyHeader","EmptyMedia","EmptyTitle","IconInbox","createDataTablePagination","Pagination","PaginationContent","PaginationEllipsis","PaginationFirst","PaginationItem","PaginationLast","PaginationLink","PaginationNext","PaginationPrevious","Select","SelectContent","SelectGroup","SelectItem","SelectTrigger","SelectValue","DataTablePagination","pages","getVisiblePages","canGoPrevious","canGoNext","lastPageIndex","option","IconDatabase","currentPageIndex","currentPage","page","orderedPages","items","createDataTableRowActions","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","onStartEditing","onCancelEditing","actions","action","canUseRowAction","stopRowClickPropagation","Wi","IconX","allowEdit","canEditRow","canPin","IconDots","IconEdit","Fragment","Icon","resolveRowActionLabel","LazyToolbarDataOperations","oa","createDataTableToolbar","ButtonGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","InputGroup","InputGroupAddon","InputGroupInput","toolbarActions","compactSearchInputRef","isCompactSearchVisible","setIsCompactSearchVisible","compactToolbarIconButtonClassName","primaryActions","trailingActions","showTitle","showSearch","showActions","showTrailingActions","showOptions","showViewToggle","showCustomToolbar","hasVisibleTitle","hasVisibleSearch","hasVisiblePrimaryActions","hasVisibleSelectionActions","hasVisibleOptions","hasToolbarOperationsMenu","activeColumnFilters","filter","hasColumnFilterValue","toolbarOperationsUi","renderToolbarDataOperations","placement","groupableColumns","groupedColumns","id","hasVisibleViewToggle","hasVisibleTrailingActions","hasVisibleCustomToolbar","hasVisibleCompactToolbar","selectedRowCountLabel","IconSearch","collapsesToIcon","button","context","disabled","IconAdjustmentsHorizontal","isGrouped","IconList","IconLayoutGrid","ToolbarColumnFilterControl","groupingIndex","moveGrouping","nextIndex","nextGrouping","groupingId","facetQuery","setFacetQuery","range","normalizeToolbarRangeValue","inputType","fromLabel","toLabel","parseRangeInputValue","isBoolean","isFaceted","booleanOptions","visibleOptions","selectedValue","selectedValues","selectedLabel","nextValues","LazyDataTableVirtualTablePanel","Jt","DataTableTablePanelRouter","DataTableTablePanel","DEFAULT_SLICES","fallbackId","readDataTableSavedViews","view","validateSavedView","createDataTableSavedView","state","normalizedName","now","createSavedViewId","selectSavedViewSlices","views","writeViews","cloneSavedView","renameDataTableSavedView","renamed","deleteDataTableSavedView","clearDataTableSavedViews","snapshots","snapshot","cloneStateSlice","validateState","validateSorting","pagination","validatePagination","filters","validateFilters","pinning","validatePinning","useDataTableToolbarFeatures","enableColumnFilters","csvExport","va","header","accessorKey","getAccessorKey","startCase","pinned","toolbarColumnFilters","configuredFacetOptions","facetedMinMax","rawOptions","normalizeColumnFilterOptions","handleToolbarColumnFilterChange","hasFilterValue","handleClearColumnFilters","handleToolbarColumnPinningChange","side","handleCsvExport","exportDataTableCsv","IconDownload","useDataTablePerformanceDiagnostics","wt","warned","isDevelopmentEnvironment","last","haveSameItems","warn","message","DataTableAutoPageSize","createDataTable","createDataTableWithPanels","rootClassName","Input","ScrollBar","Table","TableBody","TableCell","TableFooter","TableHead","TableHeader","TableRow","TooltipProvider","DataTableStateOverlay","createDataTableStateOverlay","autoPageSize","renderExpandedRow","enableColumnReordering","columnGroupHeaderHeight","clipboard","enableCellSelection","cellSelection","defaultCellSelection","onCellSelectionChange","gridCommands","toolbarDataOperations","unifiedState","onStateChange","apiRef","summaryRows","enablePrint","enableFullscreen","emptyState","stateOverlay","getRowLoadingState","stickyHeader","showToolbar","className","tableClassName","stripedRows","fileUpload","accessibility","interactiveGrid","fileInputRef","tableScrollContainerRef","draggedColumnIdRef","toolbarSavedViewsVersion","setToolbarSavedViewsVersion","generatedTitleId","generatedDescriptionId","validateDataTableColumnIds","toolbarOperations","gridMode","currentCellSelection","setCurrentCellSelection","resolvedSorting","resolvedGrouping","resolvedPageIndex","resolvedPageSize","resolvedRowSelection","resolvedColumnVisibility","resolvedColumnFilters","resolvedExpanded","resolvedColumnOrder","resolvedColumnPinning","resolvedRowPinning","resolvedColumnSizing","resolvedDensity","resolvedViewMode","resolvedShowHiddenRows","showTableHeading","useDataTableStateConflictWarnings","handleToolbarQueryValueChange","useDataTableStateSliceChange","handleSortingPropChange","handleGroupingPropChange","handleRowSelectionPropChange","handleColumnVisibilityPropChange","handleColumnFiltersPropChange","handleExpandedPropChange","handleColumnOrderPropChange","handleColumnPinningPropChange","handleRowPinningPropChange","handleColumnSizingPropChange","handleDensityPropChange","handleViewModePropChange","handleShowHiddenRowsPropChange","handlePageIndexPropChange","handlePageSizePropChange","runAction","runDataTableAction","guardedRowActions","guardedOnRowClick","handleEditError","usesLegacyDetailPanelState","resolvedDetailPanel","clearEditError","draftValues","setDraftValues","useRowEditing","rowEditingContext","tableScrollElement","viewportHeight","useDataTableScrollViewport","autoPageSizeConfig","handleAutoPageSizeChange","autoPageSizeEnabled","print","toggleFullscreen","isFullscreen","setIsFullscreen","update","handleSelectedFiles","files","visibleDataColumns","getDataTableColumnGroupPaths","virtualPaddingBottom","virtualPaddingTop","columnLayout","explicitCustomCellColumnIds","visibleLeafColumnCount","bodyRowComponents","primeColumnForResize","currentSize","flushSync","resetColumnSize","filteredData","configuredEmptyState","guardedStateOverlay","guardedToolbarActions","guardedSelectionActions","currentDataTableState","getCurrentState","cloneDataTableState","restoreState","nextState","clearPersistedState","resetColumnLayout","resetState","getSavedViews","createSavedView","applySavedView","renameSavedView","deleteSavedView","clearSavedViews","toolbarSavedViews","handleToolbarCreateSavedView","handleToolbarRenameSavedView","handleToolbarDeleteSavedView","deleted","exportCsvFromApi","copyToClipboard","copyDataTableToClipboard","pinRow","unpinRow","scrollDataTableElementIntoView","isDataTableEditableClipboardTarget","command","paste","parseDataTableClipboardText","onLegacyChange","handleChange","legacySlices","warnedSlicesRef","container","kind","attribute"],"mappings":"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","file":"chunk-XZTPNWJD.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\nimport type { DataTableTanStackRow as Row } from \"./tanstack-v9\";\n\nexport function DataTableBaseCardPanel({\n cardClassName,\n cardGridClassName,\n cardSizing,\n cardRenderer,\n currentRowSelection,\n currentDetailExpanded,\n DataTableCardView,\n DataTableEmptyState,\n dragAndDrop,\n editableRows,\n editingRowId,\n emptyNode,\n enableRowSelection,\n flexGrow,\n getRowClassName,\n hasCardTitle,\n infiniteScroll,\n localSearchValue,\n onRowClick,\n renderedRows,\n detailPanel,\n resolvedLabels,\n resolvedLoadingRowCount,\n rowActions = [],\n ScrollArea,\n scrollbarVisibility,\n sentinelRef,\n setCurrentDetailExpanded,\n setCurrentRowSelection,\n setEditingRowId,\n shouldRenderInitialLoading,\n stateOverlayNode,\n tableContainerClassName,\n uiClassNames,\n}: DataTableCardPanelProps) {\n const shouldRenderCards =\n shouldRenderInitialLoading || renderedRows.length > 0;\n const cardScrollContainerRef = React.useRef(null);\n\n const renderCardView = (\n rows: Array>,\n options?: {\n isLoading?: boolean;\n loadingRowCount?: number;\n },\n ) => (\n \n );\n\n return (\n \n \n \n {shouldRenderCards ? (\n shouldRenderInitialLoading ? (\n renderCardView([], {\n isLoading: true,\n loadingRowCount: resolvedLoadingRowCount,\n })\n ) : (\n renderCardView(renderedRows)\n )\n ) : (\n
\n {emptyNode ?? (\n \n )}\n
\n )}\n\n {infiniteScroll?.enabled && !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n
\n \n {stateOverlayNode}\n \n );\n}\n","import * as React from \"react\";\nimport { DataTableBaseCardPanel } from \"./data-table-base-card-panel\";\nimport type { DataTableCardPanelProps } from \"./data-table-card-panel-types\";\n\nconst LazyDataTableVirtualCardPanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-card-panel\");\n return { default: module.DataTableVirtualCardPanel };\n}) as unknown as typeof DataTableBaseCardPanel;\n\nexport function DataTableCardPanel(\n props: DataTableCardPanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization.card\n : undefined;\n\n if (config?.enabled !== true) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n\nexport type { DataTableCardPanelProps };\n","import * as React from \"react\";\nimport type { PaginationState } from \"@tanstack/react-table\";\nimport type { DataTableLabels } from \"../types\";\n\ntype DataTableFooterSectionProps = {\n children?: React.ReactNode;\n currentPagination: PaginationState;\n DataTableFooter: React.ElementType;\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (pageIndex: number) => void;\n handleFooterPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n pageCountKnown?: boolean;\n rowsPerPageOptions: Array;\n showFooter: boolean;\n};\n\nexport function DataTableFooterSection({\n children,\n currentPagination,\n DataTableFooter,\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n labels,\n pageCountKnown = true,\n rowsPerPageOptions,\n showFooter,\n}: DataTableFooterSectionProps) {\n if (!showFooter && !children) {\n return null;\n }\n\n return (\n
\n {showFooter ? (\n \n ) : null}\n {children}\n
\n );\n}\n","import * as React from \"react\";\nimport type {\n DataTableLabels,\n DataTableProps,\n DataTableSavedView,\n} from \"../types\";\nimport type { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\n\ntype DataTableToolbarSectionProps = {\n allRows: Array;\n columnFilters: Array;\n columnVisibilityOptions: Array;\n compactToolbar: React.ReactNode;\n customToolbar: React.ReactNode;\n DataTableToolbar: React.ElementType;\n description: string | undefined;\n descriptionId: string | undefined;\n effectiveToolbarActions: Array;\n enableColumnPinning: boolean;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n enableDensityToggle: boolean;\n enableViewToggle: boolean;\n hiddenRowsLabel: string | undefined;\n labels: DataTableLabels;\n onClearColumnFilters: () => void;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onColumnPinningChange: (columnId: string, side: \"left\" | \"right\" | false) => void;\n onDensityChange: (density: \"compact\" | \"comfortable\" | \"spacious\") => void;\n onShowHiddenRowsChange: (showHiddenRows: boolean) => void;\n onToolbarQueryValueChange: (value: string) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n onViewModeChange: (viewMode: \"table\" | \"card\") => void;\n openFileDialog: (() => void) | undefined;\n selectedRowIds: Array;\n selectedRows: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n savedViews: Array;\n showHiddenRows: boolean;\n table: TanStackTable;\n title: string | undefined;\n titleId: string | undefined;\n toolbarQueryPlaceholder: string;\n toolbarQueryValue: string;\n toolbarVisibility: DataTableProps[\"toolbarVisibility\"];\n density: \"compact\" | \"comfortable\" | \"spacious\";\n viewMode: \"table\" | \"card\";\n};\n\nexport function DataTableToolbarSection({\n allRows,\n columnFilters,\n columnVisibilityOptions,\n compactToolbar,\n customToolbar,\n DataTableToolbar,\n description,\n descriptionId,\n effectiveToolbarActions,\n enableColumnPinning,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n enableDensityToggle,\n enableViewToggle,\n hiddenRowsLabel,\n labels,\n onClearColumnFilters,\n onColumnFilterChange,\n onColumnPinningChange,\n onDensityChange,\n onShowHiddenRowsChange,\n onToolbarQueryValueChange,\n reorderColumn,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n onViewModeChange,\n openFileDialog,\n selectedRowIds,\n selectedRows,\n selectionActions,\n savedViews,\n showHiddenRows,\n table,\n title,\n titleId,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n toolbarVisibility,\n density,\n viewMode,\n}: DataTableToolbarSectionProps) {\n return (\n
\n {\n table.getColumn(columnId)?.toggleVisibility(visible);\n }}\n enableColumnPinning={enableColumnPinning}\n enableGrouping={enableGrouping}\n enableToolbarColumnChooser={enableToolbarColumnChooser}\n enableToolbarFilterChips={enableToolbarFilterChips}\n enableToolbarResetLayout={enableToolbarResetLayout}\n enableToolbarSavedViews={enableToolbarSavedViews}\n onColumnPinningChange={onColumnPinningChange}\n columnFilters={columnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n onResetColumnLayout={onResetColumnLayout}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n density={density}\n onDensityChange={onDensityChange}\n enableDensityToggle={enableDensityToggle}\n labels={labels}\n toolbarVisibility={toolbarVisibility}\n openFileDialog={openFileDialog}\n savedViews={savedViews}\n table={table}\n />\n
\n );\n}\n","import type { DataTableLabels } from \"../types\";\n\ntype ResolvedDataTableLabels = Required;\n\nexport const DATA_TABLE_DEFAULT_LABELS: ResolvedDataTableLabels = {\n searchPlaceholder: \"Search rows...\",\n searchTable: \"Search table\",\n clearSearch: \"Clear search\",\n noRowsTitle: \"No rows yet\",\n noRowsDescription: \"Create a record or refresh this view once data exists.\",\n noMatchingRowsTitle: \"No matching rows\",\n noMatchingRowsDescription: \"Try a different search term or clear filters.\",\n tableOptions: \"Show table options\",\n columns: \"Columns\",\n filters: \"Filters\",\n clearFilters: \"Clear filters\",\n filterFrom: \"From\",\n filterTo: \"To\",\n filterTrue: \"Yes\",\n filterFalse: \"No\",\n selectedRows: (count) =>\n `${count} record${count === 1 ? \"\" : \"s\"} selected`,\n showHiddenRows: (label) => `Show ${label}`,\n recordsPerPage: \"Records per page\",\n totalRecords: (count) => `Total records: ${count}`,\n pageStatus: (pageIndex, pageCount) => `Page ${pageIndex + 1} of ${pageCount}`,\n pageStatusUnknown: (pageIndex) => `Page ${pageIndex + 1}`,\n pagination: \"Pagination\",\n morePages: \"More pages\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n selectAllVisibleRows: \"Select all visible rows\",\n selectAllFilteredRows: \"Select all filtered rows\",\n selectRow: \"Select row\",\n selectCardRow: (rowId) => `Select row ${rowId}`,\n switchToTableView: \"Switch to table view\",\n switchToCardView: \"Switch to card view\",\n tableView: \"Table view\",\n cardView: \"Card view\",\n allFilterOptions: \"All\",\n actions: \"Actions\",\n rowActions: \"Row actions\",\n editRow: \"Edit row\",\n saveEdit: \"Save\",\n cancelEdit: \"Cancel editing\",\n expandRow: \"Expand row\",\n collapseRow: \"Collapse row\",\n expandRowDetails: \"Expand row details\",\n collapseRowDetails: \"Collapse row details\",\n exportCsv: \"Export CSV\",\n print: \"Print table\",\n enterFullscreen: \"Enter fullscreen\",\n exitFullscreen: \"Exit fullscreen\",\n errorTitle: \"Unable to load this table\",\n errorDescription: \"Try again or check your connection.\",\n retry: \"Retry\",\n density: \"Density\",\n compactDensity: \"Compact\",\n comfortableDensity: \"Comfortable\",\n spaciousDensity: \"Spacious\",\n pinLeft: \"Pin left\",\n pinRight: \"Pin right\",\n unpin: \"Unpin\",\n pinRowToTop: \"Pin row to top\",\n pinRowToBottom: \"Pin row to bottom\",\n unpinRow: \"Unpin row\",\n resizeColumn: (columnLabel) => `Resize ${columnLabel}`,\n grouping: \"Grouping\",\n groupBy: (columnLabel) => `Group by ${columnLabel}`,\n ungroup: (columnLabel) => `Ungroup ${columnLabel}`,\n removeGrouping: (columnLabel) => `Remove ${columnLabel} grouping`,\n moveGroupingEarlier: (columnLabel) => `Move ${columnLabel} grouping earlier`,\n moveGroupingLater: (columnLabel) => `Move ${columnLabel} grouping later`,\n facetSearch: (columnLabel) => `Search ${columnLabel} options`,\n searchColumns: \"Search columns\",\n showAllColumns: \"Show all columns\",\n hideAllColumns: \"Hide all columns\",\n moveColumnEarlier: (columnLabel) => `Move ${columnLabel} earlier`,\n moveColumnLater: (columnLabel) => `Move ${columnLabel} later`,\n resetColumnLayout: \"Reset column layout\",\n savedViews: \"Saved views\",\n createSavedView: \"Create saved view\",\n savedViewName: \"View name\",\n applySavedView: (name) => `Apply saved view ${name}`,\n renameSavedView: (name) => `Rename saved view ${name}`,\n deleteSavedView: (name) => `Delete saved view ${name}`,\n saveSavedView: \"Save view\",\n};\n\nexport function resolveDataTableLabels(\n labels?: Partial,\n): ResolvedDataTableLabels {\n return {\n ...DATA_TABLE_DEFAULT_LABELS,\n ...labels,\n } as ResolvedDataTableLabels;\n}\n","import * as React from \"react\";\nimport type {\n ExpandedState,\n OnChangeFn,\n RowPinningPosition,\n} from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n UTILITY_COLUMN_SIZE,\n decorateFilterableColumn,\n isDataTableLoadingRow,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport type {\n DataTableTanStackColumnDef as ColumnDef,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\n\ntype DataTableRowActionsComponentProps = {\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n labels: DataTableLabels;\n onCancelEditing: () => void;\n onStartEditing: () => void;\n row: TData;\n rowActions: Array>;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editingRowId,\n editErrors,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n isSavingEdit,\n isEditDirty,\n includeFillSpacer = false,\n labels,\n lastSelectedRowIdRef,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n}: {\n Button: DataTableUiKit[\"Button\"];\n Checkbox: DataTableUiKit[\"Checkbox\"];\n DataTableRowActions: React.ComponentType<\n DataTableRowActionsComponentProps\n >;\n Tooltip: DataTableUiKit[\"Tooltip\"];\n TooltipContent: DataTableUiKit[\"TooltipContent\"];\n TooltipTrigger: DataTableUiKit[\"TooltipTrigger\"];\n cancelEditing: () => void;\n columns: DataTableProps[\"columns\"];\n editableRows: DataTableProps[\"editableRows\"];\n editingRowId: string | null;\n editErrors: Record;\n enableRowSelection: boolean;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n hasTreeExpansion: boolean;\n isSavingEdit: boolean;\n isEditDirty: boolean;\n includeFillSpacer?: boolean;\n labels: DataTableLabels;\n lastSelectedRowIdRef: React.MutableRefObject;\n detailPanel: DataTableDetailPanel | undefined;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n rowSelectionSelectAllScope: NonNullable<\n DataTableProps[\"rowSelectionSelectAllScope\"]\n >;\n rowActions: Array>;\n saveEdit: (row: TData) => Promise;\n startEditingRow: (row: TData, rowId: string) => void;\n tableRef: React.RefObject | null>;\n}) {\n const selectRowRange = React.useCallback(\n (targetRowId: string, selected: boolean) => {\n const tableInstance = tableRef.current;\n if (!tableInstance || !lastSelectedRowIdRef.current) {\n return;\n }\n\n const rows = tableInstance\n .getRowModel()\n .rows.filter((row) => !isDataTableLoadingRow(row.original));\n const startIndex = rows.findIndex(\n (row) => row.id === lastSelectedRowIdRef.current,\n );\n const endIndex = rows.findIndex((row) => row.id === targetRowId);\n\n if (startIndex < 0 || endIndex < 0) {\n return;\n }\n\n const from = Math.min(startIndex, endIndex);\n const to = Math.max(startIndex, endIndex);\n tableInstance.setRowSelection((current) => {\n const next = { ...current };\n for (const row of rows\n .slice(from, to + 1)\n .filter(\n (item) => item.getCanSelect() && item.getCanMultiSelect(),\n )) {\n if (selected) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n },\n [lastSelectedRowIdRef, tableRef],\n );\n\n return React.useMemo>>(() => {\n const defs: Array> = [];\n\n if (hasTreeExpansion || detailPanel) {\n const expansionColumnSize =\n hasTreeExpansion && detailPanel ? 80 : UTILITY_COLUMN_SIZE;\n defs.push({\n id: \"__expand__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: expansionColumnSize,\n minSize: expansionColumnSize,\n maxSize: expansionColumnSize,\n header: () => {labels.expandRow},\n cell: ({ row, table }) => {\n const canExpandTree = hasTreeExpansion && row.getCanExpand();\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(row.original) ?? true),\n );\n if (!canExpandTree && !canExpandDetail) {\n return null;\n }\n\n const isTreeExpanded = row.getIsExpanded();\n const isDetailExpanded =\n detailExpanded === true || Boolean(detailExpanded[row.id]);\n return (\n
\n {canExpandTree ? (\n row.toggleExpanded()}\n >\n \n \n ) : null}\n {canExpandDetail ? (\n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n table.getCoreRowModel().flatRows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n ) : null}\n
\n );\n },\n });\n }\n\n if (enableRowSelection) {\n defs.push({\n id: \"__select__\",\n enableResizing: false,\n enableSorting: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: ({ table }) => {\n const selectsFilteredRows = rowSelectionSelectAllScope === \"filtered\";\n const selectableRows = (selectsFilteredRows\n ? table.getFilteredRowModel().flatRows\n : table.getRowModel().flatRows\n ).filter((row) => row.getCanSelect() && row.getCanMultiSelect());\n const allSelected =\n selectableRows.length > 0 &&\n selectableRows.every((row) => row.getIsSelected());\n const someSelected = selectableRows.some((row) => row.getIsSelected());\n const label = selectsFilteredRows\n ? (labels.selectAllFilteredRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllFilteredRows)\n : (labels.selectAllVisibleRows ??\n DATA_TABLE_DEFAULT_LABELS.selectAllVisibleRows);\n\n if (selectableRows.length === 0) {\n return {label};\n }\n\n return (\n
\n {\n table.setRowSelection((current) => {\n const next = { ...current };\n for (const row of selectableRows) {\n if (checked === true) {\n next[row.id] = true;\n } else {\n delete next[row.id];\n }\n }\n return next;\n });\n }}\n aria-label={label}\n />\n
\n );\n },\n cell: ({ row }) => (\n
\n ) => {\n if (\n !event.shiftKey ||\n !lastSelectedRowIdRef.current ||\n !row.getCanMultiSelect()\n ) {\n lastSelectedRowIdRef.current = row.id;\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n selectRowRange(row.id, !row.getIsSelected());\n lastSelectedRowIdRef.current = row.id;\n }}\n onCheckedChange={(checked: boolean | \"indeterminate\") => {\n lastSelectedRowIdRef.current = row.id;\n row.toggleSelected(checked === true);\n }}\n aria-label={\n labels.selectRow ?? DATA_TABLE_DEFAULT_LABELS.selectRow\n }\n />\n
\n ),\n });\n }\n\n defs.push(...columns.map((column) => decorateFilterableColumn(column)));\n\n if (includeFillSpacer) {\n defs.push({\n id: \"__spacer__\",\n cell: () => null,\n header: () => null,\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enablePinning: false,\n enableResizing: false,\n enableSorting: false,\n minSize: 0,\n size: 0,\n });\n }\n\n if (rowActions.length || editableRows || enableRowPinning) {\n defs.push({\n id: \"__actions__\",\n enableSorting: false,\n enableResizing: false,\n enableHiding: false,\n size: UTILITY_COLUMN_SIZE,\n minSize: UTILITY_COLUMN_SIZE,\n maxSize: UTILITY_COLUMN_SIZE,\n header: () => {labels.actions},\n cell: ({ row }) => {\n const rowId = row.id;\n const isEditing = editingRowId === rowId;\n\n if (isEditing) {\n return (\n
\n {editErrors._row ? (\n \n {editErrors._row}\n \n ) : null}\n {\n void saveEdit(row.original);\n }}\n >\n {labels.saveEdit}\n \n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n
\n );\n }\n\n return (\n
\n {\n startEditingRow(row.original, row.id);\n }}\n onCancelEditing={() => {}}\n labels={labels}\n rowPinning={\n enableRowPinning\n ? {\n canPin: row.getCanPin(),\n position: row.getIsPinned(),\n pin: (position) => row.pin(position),\n }\n : undefined\n }\n />\n
\n );\n },\n });\n }\n\n return defs;\n }, [\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n detailExpanded,\n detailPanel,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion,\n includeFillSpacer,\n isSavingEdit,\n isEditDirty,\n labels,\n lastSelectedRowIdRef,\n onDetailExpandedChange,\n rowSelectionSelectAllScope,\n rowActions,\n saveEdit,\n selectRowRange,\n startEditingRow,\n ]);\n}\n","import * as React from \"react\";\nimport type { Updater } from \"@tanstack/react-table\";\n\nexport function useControllableState({\n defaultValue,\n onChange,\n value,\n}: {\n defaultValue: T | (() => T);\n onChange?: (value: T) => void;\n value: T | undefined;\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const currentValue = value ?? uncontrolledValue;\n const currentValueRef = React.useRef(currentValue);\n\n React.useEffect(() => {\n currentValueRef.current = currentValue;\n }, [currentValue]);\n\n const setValue = React.useCallback(\n (updater: Updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? (updater as (current: T) => T)(currentValueRef.current)\n : updater;\n currentValueRef.current = nextValue;\n\n onChange?.(nextValue);\n\n if (value === undefined) {\n setUncontrolledValue(nextValue);\n }\n },\n [onChange, value],\n );\n\n return [currentValue, setValue] as const;\n}\n","import * as React from \"react\";\n\nexport function useDataTableInfiniteScroll({\n enabled,\n hasMore,\n isLoadingMore,\n onLoadMore,\n onError,\n}: {\n enabled: boolean;\n hasMore: boolean;\n isLoadingMore?: boolean;\n onLoadMore: () => void | Promise;\n onError?: (error: unknown) => void;\n}) {\n const sentinelRef = React.useRef(null);\n const isRequestInFlightRef = React.useRef(false);\n const onLoadMoreEvent = React.useEffectEvent(onLoadMore);\n const onErrorEvent = React.useEffectEvent((error: unknown) => {\n onError?.(error);\n });\n\n React.useEffect(() => {\n if (!enabled || !hasMore || isLoadingMore) {\n return;\n }\n\n const target = sentinelRef.current;\n if (!target) {\n return;\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting && !isRequestInFlightRef.current) {\n isRequestInFlightRef.current = true;\n\n let result: void | Promise;\n try {\n result = onLoadMoreEvent();\n } catch (error) {\n isRequestInFlightRef.current = false;\n onErrorEvent(error);\n return;\n }\n\n void Promise.resolve(result)\n .catch((error: unknown) => {\n onErrorEvent(error);\n })\n .finally(() => {\n isRequestInFlightRef.current = false;\n });\n }\n },\n {\n rootMargin: \"200px 0px 200px 0px\",\n },\n );\n\n observer.observe(target);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasMore, isLoadingMore]);\n\n return sentinelRef;\n}\n","import * as React from \"react\";\n\nexport function useDataTablePaginationClamp({\n enabled,\n maxPageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPageIndex,\n}: {\n enabled: boolean;\n maxPageIndex: number;\n onPageIndexChange?: (pageIndex: number) => void;\n pageIndex: number;\n setLocalPageIndex: (pageIndex: number) => void;\n}) {\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n if (pageIndex >= 0 && pageIndex <= maxPageIndex) {\n return;\n }\n\n const nextPageIndex = Math.min(Math.max(pageIndex, 0), maxPageIndex);\n setLocalPageIndex(nextPageIndex);\n onPageIndexChange?.(nextPageIndex);\n }, [enabled, maxPageIndex, onPageIndexChange, pageIndex, setLocalPageIndex]);\n}\n","import * as React from \"react\";\nimport { normalizeDataTableSearchText } from \"./data-table-utils\";\nimport type {\n DataTableTanStackFilterFn as FilterFn,\n DataTableTanStackRow as Row,\n} from \"./tanstack-v9\";\n\n/**\n * Caches each searchable cell against the application-owned row object and\n * stable column id. WeakMap entries disappear with immutable rows and never\n * retain removed data. Mutable rows are deliberately unsupported because a\n * cache cannot safely observe deep changes without defeating its purpose.\n */\nexport function useDataTableSearchIndex(\n) {\n // eslint-disable-next-line react-hooks/immutability -- This weak cache is deliberately populated by TanStack's filter pass, never read during React render.\n return React.useMemo>(() => {\n const valuesByRow = new WeakMap>();\n\n return (row: Row, columnId: string, filterValue: unknown) => {\n const query = normalizeDataTableSearchText(filterValue);\n if (!query) {\n return true;\n }\n\n const original = row.original;\n if (typeof original !== \"object\" || original === null) {\n return normalizeDataTableSearchText(row.getValue(columnId)).includes(\n query,\n );\n }\n\n let valuesByColumn = valuesByRow.get(original);\n if (!valuesByColumn) {\n valuesByColumn = new Map();\n valuesByRow.set(original, valuesByColumn);\n }\n\n let text = valuesByColumn.get(columnId);\n if (text === undefined) {\n const value = row.getValue(columnId);\n text = normalizeDataTableSearchText(value);\n valuesByColumn.set(columnId, text);\n }\n\n return text.includes(query);\n };\n }, []);\n}\n","import {\n aggregationFns as builtInAggregationFns,\n columnFacetingFeature,\n columnFilteringFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n createExpandedRowModel,\n createFacetedMinMaxValues,\n createFacetedRowModel,\n createFacetedUniqueValues,\n createFilteredRowModel,\n createGroupedRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n filterFns as builtInFilterFns,\n globalFilteringFeature,\n rowAggregationFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n sortFns as builtInSortFns,\n tableFeatures,\n} from \"@tanstack/react-table\";\nimport type {\n AggregationFnDef,\n Cell,\n CellContext,\n Column,\n ColumnDef,\n FilterFn,\n FilterFnOption,\n Header,\n HeaderContext,\n Row,\n RowData,\n Table,\n} from \"@tanstack/react-table\";\n\n/**\n * The v9 feature surface used by every data-table adapter.\n *\n * Keeping this registry in one module makes the new feature generic an\n * implementation detail instead of leaking it through every public type.\n * Function registries remain broad during the migration so existing named\n * column definitions keep working. They can be narrowed once the v9 surface\n * is fully audited.\n */\ntype DataTableAggregationRegistry = Record;\ntype BuiltInFilterFn =\n (typeof builtInFilterFns)[keyof typeof builtInFilterFns];\n\nexport function createDataTableFeatures(\n customAggregationFns: DataTableAggregationRegistry = {},\n) {\n return tableFeatures({\n columnFacetingFeature,\n columnFilteringFeature,\n globalFilteringFeature,\n rowAggregationFeature,\n columnGroupingFeature,\n columnOrderingFeature,\n columnPinningFeature,\n columnSizingFeature,\n columnResizingFeature,\n columnVisibilityFeature,\n rowExpandingFeature,\n rowPaginationFeature,\n rowPinningFeature,\n rowSelectionFeature,\n rowSortingFeature,\n expandedRowModel: createExpandedRowModel(),\n facetedMinMaxValues: createFacetedMinMaxValues(),\n facetedRowModel: createFacetedRowModel(),\n facetedUniqueValues: createFacetedUniqueValues(),\n filteredRowModel: createFilteredRowModel(),\n groupedRowModel: createGroupedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n sortedRowModel: createSortedRowModel(),\n aggregationFns: {\n ...(builtInAggregationFns as DataTableAggregationRegistry),\n ...customAggregationFns,\n },\n filterFns: builtInFilterFns as Record,\n sortFns: builtInSortFns,\n });\n}\n\nexport const dataTableFeatures = createDataTableFeatures();\n\nexport type DataTableFeatures = typeof dataTableFeatures;\nexport type DataTableRowData = Extract;\nexport type DataTableTanStackTable = Table<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackRow = Row<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackColumn = Column<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackCell = Cell<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackHeader = Header<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackColumnDef = ColumnDef<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackCellContext = CellContext<\n DataTableFeatures,\n DataTableRowData,\n TValue\n>;\nexport type DataTableTanStackHeaderContext =\n HeaderContext, TValue>;\nexport type DataTableTanStackFilterFn = FilterFn<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackFilterFnOption = FilterFnOption<\n DataTableFeatures,\n DataTableRowData\n>;\nexport type DataTableTanStackAggregationFn = AggregationFnDef<\n DataTableFeatures,\n DataTableRowData\n>;\n","import * as React from \"react\";\nimport { useTable } from \"@tanstack/react-table\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState as TanStackColumnPinningState,\n ColumnSizingState,\n ColumnVisibilityState as VisibilityState,\n ExpandedState,\n GroupingState,\n OnChangeFn,\n PaginationState,\n RowPinningState,\n RowSelectionState,\n SortingState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnPinningState,\n DataTableProps,\n} from \"../types\";\nimport {\n canReorderDataTableColumn,\n getColumnId,\n getDataTableLeafColumns,\n isDataTableLoadingRow,\n isUtilityColumnId,\n moveColumnInOrder,\n} from \"./data-table-utils\";\nimport type { DataTableColumnGroupPaths } from \"./data-table-utils\";\nimport { useDataTableInfiniteScroll } from \"./use-data-table-infinite-scroll\";\nimport { useDataTablePaginationClamp } from \"./use-data-table-pagination-clamp\";\nimport { useDataTableSearchIndex } from \"./use-data-table-search-index\";\nimport {\n createDataTableFeatures,\n type DataTableFeatures,\n type DataTableTanStackColumn as Column,\n type DataTableRowData,\n type DataTableTanStackColumnDef as ColumnDef,\n type DataTableTanStackFilterFnOption as FilterFnOption,\n type DataTableTanStackRow as Row,\n type DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\n\nexport type DataTableRowsToRender = Array<{\n row: Row;\n rowIndex: number;\n}>;\n\ntype DataTableInstanceResult = {\n effectivePageCount: number;\n footerTotalRowCount: number | undefined;\n handleFooterPageIndexChange: (nextPageIndex: number) => void;\n handleFooterPageSizeChange: (nextPageSize: number) => void;\n isPageCountKnown: boolean;\n renderedRows: Array>;\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n rowsToRender: DataTableRowsToRender;\n sentinelRef: React.RefObject;\n table: TanStackTable;\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumns: Array>;\n};\n\nexport function useDataTableInstance({\n autoResetPageIndex,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableMultiRowSelection,\n enableRowPinning,\n enableRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange,\n handleColumnOrderChange,\n handleColumnPinningChange,\n handleRowPinningChange,\n handleColumnVisibilityChange,\n handleExpandedChange,\n handleGroupingChange,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n totalRowCount,\n virtualization,\n}: {\n autoResetPageIndex: boolean;\n columnGroupPaths: DataTableColumnGroupPaths;\n columnResizeMode: DataTableProps[\"columnResizeMode\"];\n dir: NonNullable[\"dir\"]>;\n currentColumnFilters: ColumnFiltersState;\n currentColumnOrder: ColumnOrderState;\n currentColumnPinning: DataTableColumnPinningState;\n currentRowPinning: RowPinningState;\n currentColumnSizing: ColumnSizingState;\n currentExpanded: ExpandedState;\n currentGrouping: GroupingState;\n currentPagination: PaginationState;\n currentRowSelection: Record;\n currentSorting: SortingState;\n currentViewMode: \"table\" | \"card\";\n defaultColumn: Partial>;\n effectiveColumnVisibility: VisibilityState;\n enableColumnResizing: boolean;\n enableMultiRowSelection: NonNullable<\n DataTableProps[\"enableMultiRowSelection\"]\n >;\n enableRowPinning: DataTableProps[\"enableRowPinning\"];\n enableRowSelection: boolean;\n enableSubRowSelection: NonNullable<\n DataTableProps[\"enableSubRowSelection\"]\n >;\n getRowCanSelect: DataTableProps[\"getRowCanSelect\"];\n getRowCanExpand: DataTableProps[\"getRowCanExpand\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n aggregationFns: DataTableProps[\"aggregationFns\"];\n groupedColumnMode: DataTableProps[\"groupedColumnMode\"];\n globalFilterFn: FilterFnOption | undefined;\n globalFilterValue: string;\n hasNextPage?: DataTableProps[\"hasNextPage\"];\n handleColumnFiltersChange: OnChangeFn;\n handleColumnOrderChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n handleRowPinningChange: OnChangeFn;\n handleColumnVisibilityChange: OnChangeFn;\n handleExpandedChange: OnChangeFn;\n handleGroupingChange: OnChangeFn;\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n keepPinnedRows: boolean;\n manualFiltering: boolean;\n manualGrouping: boolean;\n manualExpanding: boolean;\n manualPagination: boolean;\n manualSorting: boolean;\n onActionError?: DataTableProps[\"onActionError\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onPageSizeChange: DataTableProps[\"onPageSizeChange\"];\n pageCount: DataTableProps[\"pageCount\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n paginateExpandedRows: DataTableProps[\"paginateExpandedRows\"];\n filterFromLeafRows: DataTableProps[\"filterFromLeafRows\"];\n maxLeafRowFilterDepth: DataTableProps[\"maxLeafRowFilterDepth\"];\n setCurrentRowSelection: OnChangeFn>;\n setCurrentSorting: OnChangeFn;\n setLocalColumnSizing: OnChangeFn;\n setLocalPagination: React.Dispatch>;\n shouldRenderInitialLoading: boolean;\n tableColumns: Array>;\n tableData: Array;\n tableGetRowId: DataTableProps[\"getRowId\"];\n tableRef: React.RefObject | null>;\n tableScrollElement: HTMLElement | null;\n /**\n * @deprecated Filtering now runs through TanStack Table. Retained so\n * advanced 4.x hook callers remain source-compatible.\n */\n toolbarFilteredData?: Array;\n totalRowCount: DataTableProps[\"totalRowCount\"];\n virtualization: DataTableProps[\"virtualization\"];\n viewportHeight: number;\n}): DataTableInstanceResult {\n const cachedGlobalFilterFn = useDataTableSearchIndex();\n const generatedColumnIds = React.useMemo(() => {\n return getDataTableLeafColumns(\n tableColumns as DataTableProps[\"columns\"],\n ).map(({ column, index }) => getColumnId(column, index));\n }, [tableColumns]);\n\n const effectiveColumnOrder = React.useMemo(() => {\n const columnIds = generatedColumnIds;\n const dataColumnIds = columnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const dataColumnIdSet = new Set(dataColumnIds);\n const orderedDataColumnIds = currentColumnOrder.filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const unorderedDataColumnIds = dataColumnIds.filter(\n (columnId) => !orderedDataColumnIds.includes(columnId),\n );\n\n return [\n ...columnIds.filter(\n (columnId) => columnId === \"__expand__\" || columnId === \"__select__\",\n ),\n ...orderedDataColumnIds,\n ...unorderedDataColumnIds,\n ...columnIds.filter((columnId) => columnId === \"__spacer__\"),\n ...columnIds.filter((columnId) => columnId === \"__actions__\"),\n ];\n }, [currentColumnOrder, generatedColumnIds]);\n\n const effectiveColumnPinning = React.useMemo(() => {\n const columnIdSet = new Set(generatedColumnIds);\n const dataColumnIdSet = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n const dataLeft = (currentColumnPinning.left ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n const dataRight = (currentColumnPinning.right ?? []).filter((columnId) =>\n dataColumnIdSet.has(columnId),\n );\n\n return {\n start: [\n ...[\"__expand__\", \"__select__\"].filter((columnId) =>\n columnIdSet.has(columnId),\n ),\n ...dataLeft,\n ],\n end: [\n ...dataRight,\n ...[\"__actions__\"].filter((columnId) => columnIdSet.has(columnId)),\n ],\n };\n }, [currentColumnPinning, generatedColumnIds]);\n\n const handleTanStackColumnPinningChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? updater(effectiveColumnPinning)\n : updater;\n const dataColumnIds = new Set(\n generatedColumnIds.filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n ),\n );\n handleColumnPinningChange({\n left: nextValue.start.filter((columnId) => dataColumnIds.has(columnId)),\n right: nextValue.end.filter((columnId) => dataColumnIds.has(columnId)),\n });\n },\n [\n effectiveColumnPinning,\n generatedColumnIds,\n handleColumnPinningChange,\n ],\n );\n\n const effectiveRowPinning = React.useMemo(() => {\n const availableRowIds = new Set();\n const visitRows = (rows: Array) => {\n rows.forEach((row, index) => {\n availableRowIds.add(tableGetRowId(row, index));\n if (!isDataTableLoadingRow(row)) {\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n }\n });\n };\n visitRows(tableData);\n const top = (currentRowPinning.top ?? []).filter((rowId) =>\n availableRowIds.has(rowId),\n );\n const topIds = new Set(top);\n const bottom = (currentRowPinning.bottom ?? []).filter(\n (rowId) => availableRowIds.has(rowId) && !topIds.has(rowId),\n );\n return { top, bottom };\n }, [\n currentRowPinning.bottom,\n currentRowPinning.top,\n getSubRows,\n tableData,\n tableGetRowId,\n ]);\n\n const tanStackRowSelection = React.useMemo(() => {\n return Object.fromEntries(\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [[rowId, true as const]] : [],\n ),\n );\n }, [currentRowSelection]);\n\n const handleTanStackRowSelectionChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\"\n ? updater(tanStackRowSelection)\n : updater;\n setCurrentRowSelection({ ...nextValue });\n },\n [setCurrentRowSelection, tanStackRowSelection],\n );\n\n const tableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: tanStackRowSelection,\n columnVisibility: effectiveColumnVisibility,\n columnFilters: currentColumnFilters,\n globalFilter: globalFilterValue,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: effectiveColumnOrder,\n columnPinning: effectiveColumnPinning,\n rowPinning: effectiveRowPinning,\n columnSizing: currentColumnSizing,\n }),\n [\n currentColumnFilters,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentSorting,\n effectiveColumnVisibility,\n effectiveColumnOrder,\n effectiveColumnPinning,\n effectiveRowPinning,\n globalFilterValue,\n tanStackRowSelection,\n ],\n );\n\n const handlePaginationChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n const nextValue =\n typeof updater === \"function\" ? updater(currentPagination) : updater;\n\n if (pageIndex === undefined || pageSize === undefined) {\n setLocalPagination((current) => ({\n pageIndex:\n pageIndex === undefined ? nextValue.pageIndex : current.pageIndex,\n pageSize:\n pageSize === undefined ? nextValue.pageSize : current.pageSize,\n }));\n }\n\n if (nextValue.pageIndex !== currentPagination.pageIndex) {\n onPageIndexChange?.(nextValue.pageIndex);\n }\n if (nextValue.pageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextValue.pageSize);\n }\n },\n [\n currentPagination,\n onPageIndexChange,\n onPageSizeChange,\n pageIndex,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const handleColumnSizingChange = React.useCallback<\n OnChangeFn\n >(\n (updater) => {\n setLocalColumnSizing(updater);\n },\n [setLocalColumnSizing],\n );\n\n const features = React.useMemo(\n () => createDataTableFeatures(aggregationFns),\n [aggregationFns],\n );\n\n const table = useTable>({\n features,\n data: tableData as Array>,\n columns: tableColumns,\n enableRowSelection: getRowCanSelect\n ? (row) => enableRowSelection && getRowCanSelect(row.original)\n : enableRowSelection,\n enableRowPinning:\n typeof enableRowPinning === \"function\"\n ? (row) => enableRowPinning(row.original)\n : enableRowPinning,\n keepPinnedRows,\n enableMultiRowSelection:\n typeof enableMultiRowSelection === \"function\"\n ? (row) => enableMultiRowSelection(row.original)\n : enableMultiRowSelection,\n enableSubRowSelection:\n typeof enableSubRowSelection === \"function\"\n ? (row) => enableSubRowSelection(row.original)\n : enableSubRowSelection,\n enableColumnResizing,\n columnResizeMode,\n columnResizeDirection: dir,\n getRowId: tableGetRowId,\n getSubRows: getSubRows\n ? (row, index) =>\n getSubRows(row, index) as\n | Array>\n | undefined\n : undefined,\n getRowCanExpand: getSubRows\n ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0\n : undefined,\n globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn,\n getColumnCanGlobalFilter: (column) =>\n (column.columnDef as ColumnDef).enableGlobalFilter !==\n false &&\n typeof column.accessorFn === \"function\",\n manualSorting,\n manualGrouping,\n manualFiltering,\n manualExpanding,\n manualPagination: manualPagination || Boolean(infiniteScroll?.enabled),\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n defaultColumn,\n autoResetPageIndex,\n state: tableState,\n onSortingChange: setCurrentSorting,\n onPaginationChange: handlePaginationChange,\n onRowSelectionChange: handleTanStackRowSelectionChange,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onColumnFiltersChange: handleColumnFiltersChange,\n onExpandedChange: handleExpandedChange,\n onGroupingChange: handleGroupingChange,\n onColumnOrderChange: handleColumnOrderChange,\n onColumnPinningChange: handleTanStackColumnPinningChange,\n onRowPinningChange: handleRowPinningChange,\n onColumnSizingChange: handleColumnSizingChange,\n groupedColumnMode,\n });\n React.useLayoutEffect(() => {\n tableRef.current = table;\n return () => {\n if (tableRef.current === table) {\n tableRef.current = null;\n }\n };\n }, [table, tableRef]);\n\n const visibleLeafColumns = table.getVisibleLeafColumns();\n const reorderColumn = React.useCallback(\n (sourceColumnId: string, targetColumnId: string) => {\n if (sourceColumnId === targetColumnId) {\n return;\n }\n\n if (\n !canReorderDataTableColumn(\n sourceColumnId,\n targetColumnId,\n columnGroupPaths,\n )\n ) {\n return;\n }\n\n const defaultOrder = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter(\n (columnId) =>\n !isUtilityColumnId(columnId) && columnId !== \"__spacer__\",\n );\n const nextOrder = moveColumnInOrder(\n currentColumnOrder.length ? currentColumnOrder : defaultOrder,\n sourceColumnId,\n targetColumnId,\n );\n handleColumnOrderChange(nextOrder);\n },\n [columnGroupPaths, currentColumnOrder, handleColumnOrderChange, table],\n );\n\n const topPinnedRows = table.getTopRows();\n const bottomPinnedRows = table.getBottomRows();\n // Card rendering has no top/bottom table regions. Keep its original row\n // model intact rather than silently dropping pinned records.\n const renderedRows =\n currentViewMode === \"table\"\n ? table.getCenterRows()\n : table.getRowModel().rows;\n const virtualizationConfig =\n typeof virtualization === \"object\" ? virtualization : undefined;\n const virtualRowsEnabled =\n virtualization === true || virtualizationConfig?.enabled === true;\n const fallbackRowCount = Math.max(\n 1,\n Math.floor(virtualizationConfig?.fallbackRowCount ?? 20),\n );\n const initialRowsToRender = virtualRowsEnabled\n ? renderedRows.slice(0, fallbackRowCount)\n : renderedRows;\n const rowsToRender = initialRowsToRender.map((row, rowIndex) => ({\n row,\n rowIndex,\n }));\n\n const usesManualRows = manualPagination || Boolean(infiniteScroll?.enabled);\n const derivedTotalRowCount = usesManualRows\n ? undefined\n : table.getFilteredRowModel().rows.length;\n const effectiveTotalRowCount = totalRowCount ?? derivedTotalRowCount;\n const isPageCountKnown =\n !usesManualRows || pageCount !== undefined || totalRowCount !== undefined;\n const footerTotalRowCount = effectiveTotalRowCount;\n const effectivePageCount = shouldRenderInitialLoading\n ? 1\n : (pageCount ??\n (effectiveTotalRowCount !== undefined\n ? Math.max(\n 1,\n Math.ceil(effectiveTotalRowCount / currentPagination.pageSize),\n )\n : usesManualRows\n ? currentPagination.pageIndex + (hasNextPage ? 2 : 1)\n : table.getPageCount()));\n const maxPageIndex = Math.max(0, effectivePageCount - 1);\n\n const setLocalPageIndex = React.useCallback(\n (nextPageIndex: number) => {\n if (pageIndex !== undefined) {\n return;\n }\n\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n },\n [pageIndex, setLocalPagination],\n );\n useDataTablePaginationClamp({\n enabled:\n !shouldRenderInitialLoading &&\n !infiniteScroll?.enabled &&\n isPageCountKnown,\n maxPageIndex,\n onPageIndexChange,\n pageIndex: currentPagination.pageIndex,\n setLocalPageIndex,\n });\n\n const handleFooterPageIndexChange = React.useCallback(\n (nextPageIndex: number) => {\n if (nextPageIndex === currentPagination.pageIndex) {\n return;\n }\n\n onPageIndexChange?.(nextPageIndex);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === nextPageIndex\n ? current\n : { ...current, pageIndex: nextPageIndex },\n );\n }\n },\n [\n currentPagination.pageIndex,\n onPageIndexChange,\n pageIndex,\n setLocalPagination,\n ],\n );\n const handleFooterPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (currentPagination.pageIndex !== 0) {\n onPageIndexChange?.(0);\n }\n if (nextPageSize !== currentPagination.pageSize) {\n onPageSizeChange?.(nextPageSize);\n }\n if (pageSize === undefined) {\n setLocalPagination({\n pageIndex: 0,\n pageSize: nextPageSize,\n });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n onPageIndexChange,\n onPageSizeChange,\n pageSize,\n setLocalPagination,\n ],\n );\n\n const sentinelRef = useDataTableInfiniteScroll({\n enabled: Boolean(infiniteScroll?.enabled),\n hasMore: Boolean(infiniteScroll?.hasMore),\n isLoadingMore: infiniteScroll?.isLoadingMore,\n onLoadMore: () => infiniteScroll?.onLoadMore(),\n onError: (error) => {\n onActionError?.({\n error,\n source: \"infiniteScroll\",\n });\n },\n });\n\n return {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom: 0,\n virtualPaddingTop: 0,\n visibleLeafColumns,\n };\n}\n","import * as React from \"react\";\nimport type {\n DataTableColumnPrefs,\n DataTableDensity,\n DataTablePersistenceConfig,\n DataTablePersistencePayload,\n DataTablePersistenceSlice,\n DataTablePersistenceStorage,\n} from \"../types\";\nimport type { RowPinningState } from \"@tanstack/react-table\";\n\nconst STORAGE_PREFIX = \"data-table-pro:column-prefs:\";\nconst DEFAULT_VERSION = 1;\nconst ALL_SLICES: Array = [\n \"visibility\",\n \"sizing\",\n \"order\",\n \"pinning\",\n \"rowPinning\",\n \"density\",\n];\n\nexport function readDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTableColumnPrefs {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return {};\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return {};\n }\n const storageKey = getStorageKey(config.key);\n\n let value: string | null;\n try {\n value = storage.getItem(storageKey);\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return {};\n }\n if (!value) {\n return {};\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(value);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return {};\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown;\n if (isPersistencePayload(parsed)) {\n if (parsed.version === targetVersion) {\n candidate = parsed.state;\n } else if (config.migrate) {\n try {\n candidate = config.migrate(\n {\n version: parsed.version,\n state: parsed.state,\n },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return {};\n }\n } else {\n return {};\n }\n } else {\n // Raw objects are the legacy columnPrefsKey format. They are validated and\n // upgraded to a versioned envelope on the next successful write.\n candidate = parsed;\n }\n\n return selectPersistenceSlices(\n validateDataTableColumnPrefs(candidate),\n config.slices,\n );\n}\n\nexport function clearDataTableColumnPrefs(\n input: string | DataTablePersistenceConfig | undefined,\n) {\n const config = resolvePersistenceConfig(input);\n if (!config) {\n return false;\n }\n\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n return true;\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n}\n\nexport function usePersistDataTableColumnPrefs({\n key,\n persistence,\n prefs,\n}: {\n key?: string;\n persistence?: DataTablePersistenceConfig;\n prefs: DataTableColumnPrefs;\n}) {\n const config = persistence ?? resolvePersistenceConfig(key);\n const storage = config ? resolveStorage(config) : undefined;\n const storageKey = config ? getStorageKey(config.key) : undefined;\n const version = config?.version ?? DEFAULT_VERSION;\n const debounceMs = Math.max(0, config?.debounceMs ?? 100);\n const selectedState = selectPersistenceSlices(prefs, config?.slices);\n const serialized = React.useMemo(() => {\n if (!config) {\n return { value: undefined };\n }\n\n try {\n const payload: DataTablePersistencePayload = {\n version,\n state: selectedState,\n };\n return {\n value: (config.serialize ?? JSON.stringify)(payload),\n };\n } catch (error) {\n return { error, value: undefined };\n }\n }, [config, selectedState, version]);\n const onErrorEvent = React.useEffectEvent(\n (\n error: unknown,\n operation: \"serialize\" | \"write\",\n ) => {\n config?.onError?.({ error, operation });\n },\n );\n\n React.useEffect(() => {\n if (serialized.error !== undefined) {\n onErrorEvent(serialized.error, \"serialize\");\n }\n }, [serialized.error]);\n\n React.useEffect(() => {\n if (!storage || !storageKey || serialized.value === undefined) {\n return;\n }\n\n const write = () => {\n try {\n if (storage.getItem(storageKey) === serialized.value) {\n return;\n }\n storage.setItem(storageKey, serialized.value);\n } catch (error) {\n onErrorEvent(error, \"write\");\n }\n };\n\n if (debounceMs === 0) {\n write();\n return;\n }\n\n const timeout = globalThis.setTimeout(write, debounceMs);\n return () => {\n globalThis.clearTimeout(timeout);\n };\n }, [debounceMs, serialized.value, storage, storageKey]);\n}\n\nfunction resolvePersistenceConfig(\n input: string | DataTablePersistenceConfig | undefined,\n): DataTablePersistenceConfig | undefined {\n if (!input) {\n return undefined;\n }\n\n return typeof input === \"string\" ? { key: input } : input;\n}\n\nfunction resolveStorage(\n config: DataTablePersistenceConfig,\n): DataTablePersistenceStorage | undefined {\n if (config.storage) {\n return config.storage;\n }\n\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isPersistencePayload(\n value: unknown,\n): value is { version: unknown; state: unknown } {\n return (\n isRecord(value) &&\n Object.prototype.hasOwnProperty.call(value, \"version\") &&\n Object.prototype.hasOwnProperty.call(value, \"state\")\n );\n}\n\nfunction selectPersistenceSlices(\n prefs: DataTableColumnPrefs,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? ALL_SLICES);\n const result: DataTableColumnPrefs = {};\n\n for (const slice of ALL_SLICES) {\n if (selected.has(slice) && prefs[slice] !== undefined) {\n Object.assign(result, { [slice]: prefs[slice] });\n }\n }\n\n return result;\n}\n\nfunction validateDataTableColumnPrefs(value: unknown): DataTableColumnPrefs {\n if (!isRecord(value)) {\n return {};\n }\n\n const prefs: DataTableColumnPrefs = {};\n const visibility = validateBooleanRecord(value.visibility);\n if (visibility) {\n prefs.visibility = visibility;\n }\n const sizing = validateSizingRecord(value.sizing);\n if (sizing) {\n prefs.sizing = sizing;\n }\n const order = validateStringArray(value.order);\n if (order) {\n prefs.order = order;\n }\n if (isRecord(value.pinning)) {\n const left = validateStringArray(value.pinning.left) ?? [];\n const right = validateStringArray(value.pinning.right) ?? [];\n prefs.pinning = { left, right };\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (rowPinning) {\n prefs.rowPinning = rowPinning;\n }\n if (isDataTableDensity(value.density)) {\n prefs.density = value.density;\n }\n\n return prefs;\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateRowPinning(value: unknown): RowPinningState | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction isDataTableDensity(value: unknown): value is DataTableDensity {\n return (\n value === \"compact\" ||\n value === \"comfortable\" ||\n value === \"spacious\"\n );\n}\n\nfunction isRecord(value: unknown): value is Record {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from \"../types\";\n\nconst BREAKPOINT_WIDTHS = Object.values(DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS)\n .slice()\n .sort((first, second) => first - second);\n\nexport function useDataTableContainerWidth(\n containerRef: React.RefObject,\n) {\n const widthRef = React.useRef(0);\n const [width, setWidth] = React.useState(0);\n\n React.useEffect(() => {\n const element = containerRef.current;\n if (!element) {\n return;\n }\n\n const updateWidth = (inlineSize = element.clientWidth) => {\n const nextWidth = quantizeDataTableContainerWidth(inlineSize);\n if (nextWidth === widthRef.current) {\n return;\n }\n\n widthRef.current = nextWidth;\n setWidth(nextWidth);\n };\n\n updateWidth();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n updateWidth(entry ? getResizeObserverInlineSize(entry) : undefined);\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n return width;\n}\n\nexport function quantizeDataTableContainerWidth(width: number) {\n if (width <= 0) {\n return 0;\n }\n\n let bucket = 1;\n for (const breakpointWidth of BREAKPOINT_WIDTHS) {\n if (width < breakpointWidth) {\n break;\n }\n bucket = breakpointWidth;\n }\n\n return bucket;\n}\n\nfunction getResizeObserverInlineSize(entry: ResizeObserverEntry) {\n const contentBoxSize: unknown = entry.contentBoxSize;\n const size: unknown = Array.isArray(contentBoxSize)\n ? contentBoxSize[0]\n : contentBoxSize;\n const inlineSize = getInlineSize(size);\n\n return inlineSize ?? entry.contentRect.width;\n}\n\nfunction getInlineSize(value: unknown) {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const inlineSize = (value as { inlineSize?: unknown }).inlineSize;\n return typeof inlineSize === \"number\" ? inlineSize : undefined;\n}\n","import * as React from \"react\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnSizingState,\n ColumnVisibilityState as VisibilityState,\n ExpandedState,\n GroupingState,\n PaginationState,\n RowPinningState,\n SortingState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnPinningState as ColumnPinningState,\n DataTableDensity,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport {\n createDataTableLoadingRows,\n getColumnId,\n getDataTableLeafColumns,\n getDataTableLoadingRowId,\n getInitialColumnPinning,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport {\n readDataTableColumnPrefs,\n usePersistDataTableColumnPrefs,\n} from \"./use-data-table-column-prefs\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableContainerWidth } from \"./use-data-table-container-width\";\nimport { isHiddenAtContainerWidth, isRowVisible } from \"../types\";\n\nexport function useDataTableState({\n columnFilters,\n columnOrder,\n columnPinning,\n rowPinning,\n columnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility,\n columns,\n data,\n density,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded,\n grouping,\n getSubRows,\n getRowId,\n hiddenRows,\n initialState,\n isLoading,\n loadingRowCount,\n manualFiltering,\n onColumnFiltersChange,\n onColumnOrderChange,\n onColumnPinningChange,\n onRowPinningChange,\n onColumnSizingChange,\n onColumnVisibilityChange,\n onDensityChange,\n onExpandedChange,\n onGroupingChange,\n onPageIndexChange,\n onRowSelectionChange,\n onShowHiddenRowsChange,\n onSortingChange,\n onToolbarQueryValueChange,\n onViewModeChange,\n pageIndex,\n pageSize,\n resolvedLabels,\n rowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows,\n sorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue,\n viewMode,\n containerRef,\n}: {\n columnFilters: DataTableProps[\"columnFilters\"];\n columnOrder: DataTableProps[\"columnOrder\"];\n columnPinning: DataTableProps[\"columnPinning\"];\n rowPinning: DataTableProps[\"rowPinning\"];\n columnSizing?: DataTableProps[\"columnSizing\"];\n columnPrefsKey: DataTableProps[\"columnPrefsKey\"];\n persistence?: DataTableProps[\"persistence\"];\n columnVisibility: DataTableProps[\"columnVisibility\"];\n columns: DataTableProps[\"columns\"];\n data: DataTableProps[\"data\"];\n density: DataTableProps[\"density\"];\n enableRowSelection: boolean;\n enableToolbarQueryFiltering: boolean;\n expanded: DataTableProps[\"expanded\"];\n grouping: DataTableProps[\"grouping\"];\n getSubRows: DataTableProps[\"getSubRows\"];\n getRowId: DataTableProps[\"getRowId\"];\n hiddenRows: DataTableProps[\"hiddenRows\"];\n initialState?: DataTableProps[\"initialState\"];\n isLoading: boolean;\n loadingRowCount: DataTableProps[\"loadingRowCount\"];\n manualFiltering: boolean;\n onColumnFiltersChange: DataTableProps[\"onColumnFiltersChange\"];\n onColumnOrderChange: DataTableProps[\"onColumnOrderChange\"];\n onColumnPinningChange: DataTableProps[\"onColumnPinningChange\"];\n onRowPinningChange: DataTableProps[\"onRowPinningChange\"];\n onColumnSizingChange?: DataTableProps[\"onColumnSizingChange\"];\n onColumnVisibilityChange: DataTableProps[\"onColumnVisibilityChange\"];\n onDensityChange: DataTableProps[\"onDensityChange\"];\n onExpandedChange: DataTableProps[\"onExpandedChange\"];\n onGroupingChange: DataTableProps[\"onGroupingChange\"];\n onPageIndexChange: DataTableProps[\"onPageIndexChange\"];\n onRowSelectionChange: DataTableProps[\"onRowSelectionChange\"];\n onShowHiddenRowsChange: DataTableProps[\"onShowHiddenRowsChange\"];\n onSortingChange: DataTableProps[\"onSortingChange\"];\n onToolbarQueryValueChange: DataTableProps[\"onToolbarQueryValueChange\"];\n onViewModeChange: DataTableProps[\"onViewModeChange\"];\n pageIndex: DataTableProps[\"pageIndex\"];\n pageSize: DataTableProps[\"pageSize\"];\n resolvedLabels: DataTableLabels;\n rowSelection: DataTableProps[\"rowSelection\"];\n rowsPerPageOptions: Array;\n selectionActions: DataTableProps[\"selectionActions\"];\n showHiddenRows: DataTableProps[\"showHiddenRows\"];\n sorting: DataTableProps[\"sorting\"];\n toolbarQueryDebounceMs: DataTableProps[\"toolbarQueryDebounceMs\"];\n toolbarQueryPlaceholder: DataTableProps[\"toolbarQueryPlaceholder\"];\n toolbarQueryValue: DataTableProps[\"toolbarQueryValue\"];\n viewMode: DataTableProps[\"viewMode\"];\n containerRef: React.RefObject;\n}) {\n const persistenceConfig = React.useMemo(\n () => persistence ?? (columnPrefsKey ? { key: columnPrefsKey } : undefined),\n [columnPrefsKey, persistence],\n );\n const persistedColumnPrefs = React.useMemo(\n () => readDataTableColumnPrefs(persistenceConfig),\n [persistenceConfig],\n );\n const [localPagination, setLocalPagination] =\n React.useState({\n pageIndex: initialState?.pagination?.pageIndex ?? 0,\n pageSize:\n initialState?.pagination?.pageSize ??\n rowsPerPageOptions[0] ??\n 20,\n });\n const [currentSorting, setCurrentSorting] =\n useControllableState({\n value: sorting,\n onChange: onSortingChange,\n defaultValue: () => initialState?.sorting ?? [],\n });\n const [currentRowSelection, setCurrentRowSelection] = useControllableState<\n Record\n >({\n value: rowSelection,\n onChange: onRowSelectionChange,\n defaultValue: () => initialState?.rowSelection ?? {},\n });\n const [currentColumnVisibility, setCurrentColumnVisibility] =\n useControllableState({\n value: columnVisibility,\n onChange: onColumnVisibilityChange,\n defaultValue: () =>\n initialState?.columnVisibility ??\n persistedColumnPrefs.visibility ??\n {},\n });\n const [currentColumnFilters, setCurrentColumnFilters] =\n useControllableState({\n value: columnFilters,\n onChange: onColumnFiltersChange,\n defaultValue: () => initialState?.columnFilters ?? [],\n });\n const [currentExpanded, setCurrentExpanded] =\n useControllableState({\n value: expanded,\n onChange: onExpandedChange,\n defaultValue: () => initialState?.expanded ?? {},\n });\n const [currentColumnOrder, setCurrentColumnOrder] =\n useControllableState({\n value: columnOrder,\n onChange: onColumnOrderChange,\n defaultValue: () =>\n initialState?.columnOrder ?? persistedColumnPrefs.order ?? [],\n });\n const [currentColumnPinning, setCurrentColumnPinning] =\n useControllableState({\n value: columnPinning,\n onChange: onColumnPinningChange,\n defaultValue: () =>\n initialState?.columnPinning ??\n persistedColumnPrefs.pinning ??\n getInitialColumnPinning(columns),\n });\n const [currentRowPinning, setCurrentRowPinning] =\n useControllableState({\n value: rowPinning,\n onChange: onRowPinningChange,\n defaultValue: () =>\n initialState?.rowPinning ?? persistedColumnPrefs.rowPinning ?? {\n top: [],\n bottom: [],\n },\n });\n const [currentColumnSizing, setCurrentColumnSizing] =\n useControllableState({\n value: columnSizing,\n onChange: onColumnSizingChange,\n defaultValue: () =>\n initialState?.columnSizing ?? persistedColumnPrefs.sizing ?? {},\n });\n const [currentViewMode, setCurrentViewMode] = useControllableState<\n \"table\" | \"card\"\n >({\n value: viewMode,\n onChange: onViewModeChange,\n defaultValue: () => initialState?.viewMode ?? \"table\",\n });\n const [currentGrouping, setCurrentGrouping] = useControllableState({\n value: grouping,\n onChange: onGroupingChange,\n defaultValue: () => initialState?.grouping ?? [],\n });\n const [currentShowHiddenRows, setCurrentShowHiddenRows] =\n useControllableState({\n value: showHiddenRows,\n onChange: onShowHiddenRowsChange,\n defaultValue: () => initialState?.showHiddenRows ?? false,\n });\n const [currentDensity, setCurrentDensity] =\n useControllableState({\n value: density,\n onChange: onDensityChange,\n defaultValue: () =>\n initialState?.density ??\n persistedColumnPrefs.density ??\n \"comfortable\",\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? initialState?.globalFilter ?? \"\";\n const resolvedToolbarQueryPlaceholder =\n toolbarQueryPlaceholder ?? resolvedLabels.searchPlaceholder;\n const resolvedToolbarQueryDebounceMs = toolbarQueryDebounceMs ?? 250;\n const [localSearchValue, setLocalSearchValue] = React.useState(\n resolvedToolbarQueryValue,\n );\n const containerWidth = useDataTableContainerWidth(containerRef);\n const hasOnSearchValueChange = Boolean(onToolbarQueryValueChange);\n const lastReportedSearchValueRef = React.useRef(resolvedToolbarQueryValue);\n const onToolbarQueryValueChangeEvent = React.useEffectEvent(\n (value: string) => {\n lastReportedSearchValueRef.current = value;\n onToolbarQueryValueChange?.(value);\n },\n );\n\n React.useEffect(() => {\n lastReportedSearchValueRef.current = resolvedToolbarQueryValue;\n // A controlled query change must replace any pending debounced draft.\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setLocalSearchValue(resolvedToolbarQueryValue);\n }, [resolvedToolbarQueryValue]);\n\n React.useEffect(() => {\n if (!hasOnSearchValueChange) {\n return;\n }\n\n if (localSearchValue === resolvedToolbarQueryValue) {\n return;\n }\n\n if (localSearchValue === lastReportedSearchValueRef.current) {\n return;\n }\n\n const timeout = window.setTimeout(() => {\n onToolbarQueryValueChangeEvent(localSearchValue);\n }, resolvedToolbarQueryDebounceMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [\n hasOnSearchValueChange,\n localSearchValue,\n resolvedToolbarQueryDebounceMs,\n resolvedToolbarQueryValue,\n ]);\n\n const currentPagination = React.useMemo(\n () => ({\n pageIndex: pageIndex ?? localPagination.pageIndex,\n pageSize: pageSize ?? localPagination.pageSize,\n }),\n [\n localPagination.pageIndex,\n localPagination.pageSize,\n pageIndex,\n pageSize,\n ],\n );\n const resolvedLoadingRowCount = Math.max(\n 1,\n loadingRowCount ?? Math.min(5, currentPagination.pageSize),\n );\n // Keep input/callback state eager. Only the client row-model input is\n // deferred, so server/manual callbacks never wait behind a large filter.\n const deferredSearchValue = React.useDeferredValue(localSearchValue);\n const globalFilterValue = enableToolbarQueryFiltering\n ? manualFiltering\n ? localSearchValue\n : deferredSearchValue\n : \"\";\n const handleViewModeChange = React.useCallback(\n (nextViewMode: \"table\" | \"card\") => {\n setCurrentViewMode(nextViewMode);\n },\n [setCurrentViewMode],\n );\n const handleShowHiddenRowsChange = React.useCallback(\n (nextShowHiddenRows: boolean) => {\n setCurrentShowHiddenRows(nextShowHiddenRows);\n },\n [setCurrentShowHiddenRows],\n );\n const handleDensityChange = React.useCallback(\n (nextDensity: DataTableDensity) => {\n setCurrentDensity(nextDensity);\n },\n [setCurrentDensity],\n );\n const resetPageIndexForFilterChange = React.useCallback(() => {\n onPageIndexChange?.(0);\n if (pageIndex === undefined) {\n setLocalPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 },\n );\n }\n }, [onPageIndexChange, pageIndex]);\n const lastFilterStateRef = React.useRef({\n columnFilters: currentColumnFilters,\n globalFilterValue,\n });\n\n React.useEffect(() => {\n const previous = lastFilterStateRef.current;\n const filtersChanged = previous.columnFilters !== currentColumnFilters;\n const globalFilterChanged =\n previous.globalFilterValue !== globalFilterValue;\n lastFilterStateRef.current = {\n columnFilters: currentColumnFilters,\n globalFilterValue,\n };\n\n if (manualFiltering) {\n return;\n }\n\n if (!filtersChanged && !globalFilterChanged) {\n return;\n }\n\n resetPageIndexForFilterChange();\n }, [\n currentColumnFilters,\n globalFilterValue,\n manualFiltering,\n resetPageIndexForFilterChange,\n ]);\n\n usePersistDataTableColumnPrefs({\n persistence: persistenceConfig,\n prefs: {\n visibility: columnVisibility ? undefined : currentColumnVisibility,\n sizing:\n columnSizing === undefined ? currentColumnSizing : undefined,\n order: columnOrder ? undefined : currentColumnOrder,\n pinning: columnPinning ? undefined : currentColumnPinning,\n rowPinning: rowPinning === undefined ? currentRowPinning : undefined,\n density: density ? undefined : currentDensity,\n },\n });\n const responsiveColumnVisibility = React.useMemo(() => {\n return getDataTableLeafColumns(columns).reduce(\n (visibility, { column, index }) => {\n const columnId = getColumnId(column, index);\n if (isHiddenAtContainerWidth(column.meta?.hideOn, containerWidth)) {\n visibility[columnId] = false;\n }\n return visibility;\n },\n {},\n );\n }, [columns, containerWidth]);\n const effectiveColumnVisibility = React.useMemo(() => {\n return {\n ...currentColumnVisibility,\n ...responsiveColumnVisibility,\n };\n }, [currentColumnVisibility, responsiveColumnVisibility]);\n const visibleData = React.useMemo(\n () =>\n data.filter((row) =>\n isRowVisible(row, hiddenRows, currentShowHiddenRows),\n ),\n [currentShowHiddenRows, data, hiddenRows],\n );\n const shouldRenderInitialLoading = isLoading && visibleData.length === 0;\n const loadingRows = React.useMemo(\n () => createDataTableLoadingRows(resolvedLoadingRowCount),\n [resolvedLoadingRowCount],\n );\n const tableData = shouldRenderInitialLoading\n ? loadingRows\n : visibleData;\n const tableGetRowId = React.useCallback(\n (row: TData, index: number) => {\n if (isDataTableLoadingRow(row)) {\n return getDataTableLoadingRowId(index);\n }\n\n return getRowId(row, index);\n },\n [getRowId],\n );\n const shouldResolveSelectedRows =\n enableRowSelection ||\n (selectionActions?.length ?? 0) > 0 ||\n Object.values(currentRowSelection).some(Boolean);\n const rowById = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return new Map();\n }\n\n const rows = new Map();\n const visitRows = (currentRows: Array) => {\n currentRows.forEach((row, index) => {\n rows.set(getRowId(row, index), row);\n const subRows = getSubRows?.(row, index);\n if (subRows?.length) {\n visitRows(subRows);\n }\n });\n };\n visitRows(visibleData);\n return rows;\n }, [getRowId, getSubRows, shouldResolveSelectedRows, visibleData]);\n const selectedRows = React.useMemo(() => {\n if (!shouldResolveSelectedRows) {\n return [];\n }\n\n return Object.entries(currentRowSelection)\n .filter(([, selected]) => selected)\n .map(([rowId]) => rowById.get(rowId))\n .filter((row): row is TData => Boolean(row));\n }, [currentRowSelection, rowById, shouldResolveSelectedRows]);\n const selectedRowIds = React.useMemo(\n () =>\n Object.entries(currentRowSelection).flatMap(([rowId, selected]) =>\n selected ? [rowId] : [],\n ),\n [currentRowSelection],\n );\n\n return {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing: setCurrentColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n /**\n * @deprecated Read the filtered TanStack row model from the table\n * instance. This alias remains for advanced 4.x callers.\n */\n toolbarFilteredData: visibleData,\n visibleData,\n };\n}\n","import * as React from \"react\";\nimport type { ColumnSizingState } from \"@tanstack/react-table\";\nimport type { DataTableColumnDef } from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport {\n UTILITY_COLUMN_SIZE,\n getColumnId,\n getConfiguredColumnMinWidth,\n getDataTableLeafColumns,\n getFixedSide,\n getPinnedColumnClassName,\n hasExplicitDataTableColumnSize,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport type { DataTableTanStackColumn as Column } from \"./tanstack-v9\";\n\ntype ColumnLayoutMode = \"fill\" | \"fit\";\n\nexport type DataTableColumnLayout = {\n cellStyle: React.CSSProperties | undefined;\n colStyle: React.CSSProperties | undefined;\n fixedSide: \"left\" | \"right\" | false | undefined;\n headerStyle: React.CSSProperties | undefined;\n isActionsColumn: boolean;\n isExpansionColumn: boolean;\n isSelectionColumn: boolean;\n isSpacerColumn: boolean;\n isUtilityColumn: boolean;\n pinnedClassName: string | undefined;\n utilityClassName: string | undefined;\n};\n\nconst EMPTY_COLUMN_LAYOUT: DataTableColumnLayout = {\n cellStyle: undefined,\n colStyle: undefined,\n fixedSide: undefined,\n headerStyle: undefined,\n isActionsColumn: false,\n isExpansionColumn: false,\n isSelectionColumn: false,\n isSpacerColumn: false,\n isUtilityColumn: false,\n pinnedClassName: undefined,\n utilityClassName: undefined,\n};\n\nexport function useColumnLayout({\n columns,\n columnSizing,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n}: {\n columns: Array>;\n columnSizing: ColumnSizingState;\n editableRows: boolean;\n enableRowSelection: boolean;\n hasRowActions: boolean;\n hasRowExpansion: boolean;\n layoutMode: ColumnLayoutMode;\n uiClassNames: DataTableUiClassNames;\n visibleLeafColumns: Array>;\n}) {\n const explicitlySizedColumnIds = React.useMemo(() => {\n const ids = new Set();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n if (hasExplicitDataTableColumnSize(column)) {\n ids.add(getColumnId(column, index));\n }\n }\n\n if (enableRowSelection) {\n ids.add(\"__select__\");\n }\n\n if (hasRowExpansion) {\n ids.add(\"__expand__\");\n }\n\n if (hasRowActions || editableRows) {\n ids.add(\"__actions__\");\n }\n\n return ids;\n }, [\n columns,\n editableRows,\n enableRowSelection,\n hasRowActions,\n hasRowExpansion,\n ]);\n\n const minimumColumnWidths = React.useMemo(() => {\n const widths = new Map();\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const configuredMinWidth = getConfiguredColumnMinWidth(column);\n\n if (configuredMinWidth !== undefined) {\n widths.set(getColumnId(column, index), configuredMinWidth);\n }\n }\n\n return widths;\n }, [columns]);\n\n const pinnedColumns = React.useMemo(() => {\n const left = new Map();\n const right = new Map();\n\n let leftOffset = 0;\n for (const column of visibleLeafColumns) {\n if (getFixedSide(column) === \"left\") {\n left.set(column.id, leftOffset);\n leftOffset += getColumnLayoutSize(column);\n }\n }\n\n let rightOffset = 0;\n for (const column of [...visibleLeafColumns].reverse()) {\n if (getFixedSide(column) === \"right\") {\n right.set(column.id, rightOffset);\n rightOffset += getColumnLayoutSize(column);\n }\n }\n\n return { left, right };\n }, [visibleLeafColumns]);\n\n const fixedWidthColumnIds = React.useMemo(() => {\n return new Set([\n ...explicitlySizedColumnIds,\n ...Object.keys(columnSizing),\n ]);\n }, [columnSizing, explicitlySizedColumnIds]);\n\n const columnLayouts = React.useMemo(() => {\n const layouts = new Map();\n\n for (const column of visibleLeafColumns) {\n const isSelectionColumn = column.id === \"__select__\";\n const isExpansionColumn = column.id === \"__expand__\";\n const isActionsColumn = column.id === \"__actions__\";\n const isUtilityColumn =\n isSelectionColumn || isExpansionColumn || isActionsColumn;\n const isSpacerColumn = column.id === \"__spacer__\";\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n const columnMinWidth = configuredMinWidth;\n const shouldFixWidth =\n !isSpacerColumn &&\n (layoutMode === \"fit\" ||\n isUtilityColumn ||\n fixedWidthColumnIds.has(column.id));\n const baseStyle =\n shouldFixWidth || columnMinWidth !== undefined\n ? {\n width: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n minWidth: isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : shouldFixWidth\n ? column.getSize()\n : columnMinWidth,\n maxWidth: shouldFixWidth\n ? isUtilityColumn\n ? UTILITY_COLUMN_SIZE\n : column.getSize()\n : undefined,\n }\n : undefined;\n const fixedSide = getFixedSide(column);\n const pinnedStyle = fixedSide\n ? {\n left:\n fixedSide === \"left\" ? pinnedColumns.left.get(column.id) : undefined,\n right:\n fixedSide === \"right\"\n ? pinnedColumns.right.get(column.id)\n : undefined,\n }\n : undefined;\n const cellStyle =\n baseStyle || pinnedStyle ? { ...baseStyle, ...pinnedStyle } : undefined;\n\n layouts.set(column.id, {\n cellStyle,\n colStyle: baseStyle,\n fixedSide,\n headerStyle: cellStyle,\n isActionsColumn,\n isExpansionColumn,\n isSelectionColumn,\n isSpacerColumn,\n isUtilityColumn,\n pinnedClassName: fixedSide\n ? getPinnedColumnClassName(fixedSide, uiClassNames, {\n isUtilityColumn,\n })\n : undefined,\n utilityClassName: isUtilityColumn\n ? \"w-[50px] max-w-[50px] min-w-[50px] px-0\"\n : undefined,\n });\n }\n\n return layouts;\n }, [\n fixedWidthColumnIds,\n layoutMode,\n minimumColumnWidths,\n pinnedColumns,\n uiClassNames,\n visibleLeafColumns,\n ]);\n\n const fillMinWidth = React.useMemo(() => {\n return visibleLeafColumns.reduce((total, column) => {\n const layout = columnLayouts.get(column.id);\n const configuredMinWidth = minimumColumnWidths.get(column.id);\n\n if (layout?.isUtilityColumn) {\n return total + UTILITY_COLUMN_SIZE;\n }\n\n if (fixedWidthColumnIds.has(column.id)) {\n return total + column.getSize();\n }\n\n return (\n total +\n (configuredMinWidth ?? 0)\n );\n }, 0);\n }, [\n columnLayouts,\n fixedWidthColumnIds,\n minimumColumnWidths,\n visibleLeafColumns,\n ]);\n\n const getColumnLayout = React.useCallback(\n (columnId: string) => columnLayouts.get(columnId) ?? EMPTY_COLUMN_LAYOUT,\n [columnLayouts],\n );\n\n return {\n columnLayouts,\n explicitlySizedColumnIds,\n fillMinWidth,\n getColumnLayout,\n };\n}\n\nfunction getColumnLayoutSize(column: Column) {\n return isUtilityColumnId(column.id) ? UTILITY_COLUMN_SIZE : column.getSize();\n}\n","import * as React from \"react\";\nimport type { ExpandedState, OnChangeFn } from \"@tanstack/react-table\";\nimport { IconChevronDown } from \"../icons\";\nimport type {\n DataTableCardRendererProps,\n DataTableCardSizing,\n DataTableEditableRowsConfig,\n DataTableDetailPanel,\n DataTableLabels,\n DataTableProps,\n DataTableRowAction,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\nimport {\n isDataTableInteractiveTarget,\n toggleDataTableExpandedState,\n} from \"./data-table-utils\";\nimport type { DataTableTanStackRow as Row } from \"./tanstack-v9\";\n\ntype DataTableCardViewProps = {\n rows: Array>;\n cardRenderer: (props: DataTableCardRendererProps) => React.ReactNode;\n cardSizing?: DataTableCardSizing;\n cardGridClassName?: string;\n cardClassName?: string;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n detailPanel?: DataTableDetailPanel;\n detailExpanded: ExpandedState;\n onDetailExpandedChange: OnChangeFn;\n hasCardTitle: boolean;\n rowSelection: Record;\n onRowSelectionChange: (rowSelection: Record) => void;\n enableRowSelection: boolean;\n editingRowId: string | null;\n onEditingRowIdChange: (rowId: string | null) => void;\n getRowClassName?: DataTableProps[\"getRowClassName\"];\n onRowClick?: (context: { row: TData; rowId: string }) => void | Promise;\n getRowDraggable?: (row: TData) => boolean;\n onRowDragStart?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n onRowDragEnd?: (context: {\n row: TData;\n rowId: string;\n event: React.DragEvent;\n }) => void;\n isLoading?: boolean;\n loadingRowCount?: number;\n labels: DataTableLabels;\n};\n\ntype DataTableRowActionsComponent = (props: {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n}) => React.ReactElement | null;\n\nexport function createDataTableCardView(\n ui: DataTableUiKit,\n DataTableRowActions: DataTableRowActionsComponent,\n) {\n const uiClassNames = ui.classNames ?? {};\n const { Button, Card, CardContent, CardHeader, Checkbox, Skeleton } = ui;\n\n return function DataTableCardView({\n rows,\n cardRenderer,\n cardSizing = \"fixed\",\n cardGridClassName,\n cardClassName,\n rowActions,\n editableRows,\n detailPanel,\n detailExpanded,\n onDetailExpandedChange,\n hasCardTitle,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection,\n editingRowId,\n onEditingRowIdChange,\n getRowClassName,\n onRowClick,\n getRowDraggable,\n onRowDragStart,\n onRowDragEnd,\n isLoading = false,\n loadingRowCount = 5,\n labels,\n }: DataTableCardViewProps) {\n const resolvedCardSizing = cardSizing ?? \"fixed\";\n const resolvedCardGridClassName =\n cardGridClassName\n ? cn(\"grid\", cardGridClassName)\n : getCardGridClassName(resolvedCardSizing);\n const cardGridClasses = cn(\n \"min-h-0 w-full gap-4 p-1\",\n uiClassNames.cardGrid,\n resolvedCardGridClassName,\n );\n const cardItemClasses = (stateClassName?: string) =>\n cn(\n \"relative min-w-0 max-w-full gap-0 overflow-hidden bg-transparent p-0\",\n getCardItemClassName(resolvedCardSizing),\n uiClassNames.cardItem,\n cardClassName,\n stateClassName,\n );\n\n if (isLoading) {\n return (\n \n {Array.from({ length: Math.max(1, loadingRowCount) }, (_, index) => (\n \n {hasCardTitle ? (\n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n ))}\n \n );\n }\n\n return (\n \n {rows.map((row) => {\n const rowId = row.id;\n const originalRow = row.original;\n const isSelected = Boolean(rowSelection[rowId]);\n const isEditing = editingRowId === rowId;\n const hasCardActions = rowActions.length > 0 || Boolean(editableRows);\n const canExpandDetail = Boolean(\n detailPanel && (detailPanel.getRowCanExpand?.(originalRow) ?? true),\n );\n const showCardGradient =\n enableRowSelection || hasCardActions || hasCardTitle;\n const showCardOverlayControls =\n enableRowSelection ||\n hasCardActions ||\n row.getCanExpand() ||\n canExpandDetail;\n const handleCardActivate = () => {\n if (!onRowClick) {\n return;\n }\n\n void onRowClick({ row: originalRow, rowId });\n };\n\n return (\n ) => {\n onRowDragStart?.({ row: originalRow, rowId, event });\n }}\n onDragEnd={(event: React.DragEvent) => {\n onRowDragEnd?.({ row: originalRow, rowId, event });\n }}\n >\n {showCardGradient ? (\n \n ) : null}\n *]:min-w-0\",\n getCardRendererClassName(resolvedCardSizing),\n onRowClick && \"cursor-pointer focus-visible:outline-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n handleCardActivate();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isDataTableInteractiveTarget(\n event.target,\n event.currentTarget,\n )\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleCardActivate();\n }\n }}\n >\n {cardRenderer({\n row: originalRow,\n rowId,\n depth: row.depth,\n canExpandSubRows: row.getCanExpand(),\n isSubRowsExpanded: row.getIsExpanded(),\n toggleSubRowsExpanded: () => row.toggleExpanded(),\n isSelected,\n onSelectedChange: (nextValue) => {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n nextValue,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n },\n actions: rowActions,\n isEditing,\n startEditing: () => {\n onEditingRowIdChange(rowId);\n },\n cancelEditing: () => {\n onEditingRowIdChange(null);\n },\n })}\n \n {isEditing ||\n !detailPanel ||\n !(detailExpanded === true || Boolean(detailExpanded[row.id]))\n ? null\n : (\n \n {detailPanel.render({\n row: originalRow,\n rowId,\n tableRow: row,\n })}\n \n )}\n {showCardOverlayControls ? (\n \n {enableRowSelection ? (\n \n {\n onRowSelectionChange(\n updateRowSelection(\n rowSelection,\n rowId,\n checked === true,\n row.getCanSelect(),\n row.getCanMultiSelect(),\n ),\n );\n }}\n />\n \n ) : null}\n {row.getCanExpand() ? (\n
\n row.toggleExpanded()}\n >\n \n \n
\n ) : null}\n {canExpandDetail ? (\n \n {\n onDetailExpandedChange((current) =>\n toggleDataTableExpandedState(\n current,\n row.id,\n rows.map((item) => item.id),\n ),\n );\n }}\n >\n \n \n \n ) : null}\n
\n {hasCardActions ? (\n \n {\n onEditingRowIdChange(rowId);\n }}\n onCancelEditing={() => {\n onEditingRowIdChange(null);\n }}\n labels={labels}\n />\n
\n ) : null}\n
\n ) : null}\n \n );\n })}\n \n );\n };\n}\n\nfunction getCardGridClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"flex flex-wrap items-start justify-start\";\n case \"fluid\":\n return \"grid grid-cols-[repeat(auto-fit,minmax(min(18rem,100%),1fr))]\";\n case \"fixed\":\n default:\n return \"grid grid-cols-[repeat(auto-fill,minmax(min(18rem,100%),18rem))] justify-start\";\n }\n}\n\nfunction getCardItemClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full\";\n case \"fixed\":\n default:\n return undefined;\n }\n}\n\nfunction getCardRendererClassName(cardSizing: DataTableCardSizing) {\n switch (cardSizing) {\n case \"content\":\n return \"w-fit\";\n case \"fluid\":\n return \"w-full flex-1 [&>*]:w-full\";\n case \"fixed\":\n default:\n return \"flex-1\";\n }\n}\n\nfunction updateRowSelection(\n rowSelection: Record,\n rowId: string,\n isSelected: boolean,\n canSelect: boolean,\n canMultiSelect: boolean,\n) {\n if (!canSelect) {\n return rowSelection;\n }\n\n if (isSelected) {\n return canMultiSelect\n ? {\n ...rowSelection,\n [rowId]: true,\n }\n : { [rowId]: true };\n }\n\n if (!rowSelection[rowId]) {\n return rowSelection;\n }\n\n const nextSelection = { ...rowSelection };\n delete nextSelection[rowId];\n return nextSelection;\n}\n","import { IconInbox } from \"../icons\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\nexport function createDataTableEmptyState(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n } = ui;\n\n return function DataTableEmptyState({\n title = \"No rows found\",\n description = \"Adjust your filters or create a new record to populate this table.\",\n }: {\n title?: string;\n description?: string;\n }) {\n return (\n \n \n \n \n \n {title}\n {description}\n \n \n \n );\n };\n}\n","import * as React from \"react\";\nimport { IconDatabase } from \"../icons\";\nimport type { DataTableLabels } from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageCount: number;\n pageCountKnown: boolean;\n pageSize: number;\n totalRowCount?: number;\n rowsPerPageOptions: Array;\n onPageIndexChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n labels: DataTableLabels;\n};\n\nexport function createDataTablePagination(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n function DataTablePagination({\n pageIndex,\n pageCount,\n pageCountKnown,\n pageSize,\n totalRowCount,\n rowsPerPageOptions,\n onPageIndexChange,\n onPageSizeChange,\n labels,\n }: DataTablePaginationProps) {\n const pages = pageCountKnown\n ? getVisiblePages(pageIndex, Math.max(1, pageCount))\n : [];\n const canGoPrevious = pageIndex > 0;\n const canGoNext = pageIndex + 1 < pageCount;\n const lastPageIndex = Math.max(0, pageCount - 1);\n\n return (\n
\n \n \n {labels.recordsPerPage}\n \n {\n onPageSizeChange(Number(value));\n }}\n >\n \n \n \n \n \n {rowsPerPageOptions.map((option) => (\n \n {option}\n \n ))}\n \n \n \n
\n\n {totalRowCount !== undefined ? (\n
\n \n \n {totalRowCount}\n \n {labels.totalRecords(totalRowCount)}\n \n
\n \n ) : null}\n\n
\n \n {pageCountKnown\n ? labels.pageStatus(pageIndex, Math.max(1, pageCount))\n : (\n labels.pageStatusUnknown ??\n DATA_TABLE_DEFAULT_LABELS.pageStatusUnknown\n )(pageIndex)}\n
\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(0);\n }\n }}\n text={labels.firstPage}\n />\n \n {labels.firstPage}\n \n \n \n \n \n ) => {\n event.preventDefault();\n if (canGoPrevious) {\n onPageIndexChange(pageIndex - 1);\n }\n }}\n text={labels.previousPage}\n />\n \n {labels.previousPage}\n \n \n {pages.map((item, index) => (\n \n {item === \"ellipsis\" ? (\n \n ) : (\n ) => {\n event.preventDefault();\n onPageIndexChange(item - 1);\n }}\n >\n {item}\n \n )}\n \n ))}\n \n \n \n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(pageIndex + 1);\n }\n }}\n text={labels.nextPage}\n />\n \n {labels.nextPage}\n \n \n {pageCountKnown ? (\n \n \n \n ,\n ) => {\n event.preventDefault();\n if (canGoNext) {\n onPageIndexChange(lastPageIndex);\n }\n }}\n />\n \n {labels.lastPage}\n \n \n ) : null}\n \n \n \n \n );\n }\n\n function DataTableFooter(props: DataTablePaginationProps) {\n return (\n \n \n \n );\n }\n\n return {\n DataTableFooter,\n DataTablePagination,\n };\n}\n\nfunction getVisiblePages(currentPageIndex: number, pageCount: number) {\n const currentPage = currentPageIndex + 1;\n const pages = new Set([1, pageCount]);\n\n for (\n let page = Math.max(1, currentPage - 2);\n page <= Math.min(pageCount, currentPage + 2);\n page += 1\n ) {\n pages.add(page);\n }\n\n const orderedPages = Array.from(pages).sort((left, right) => left - right);\n const items: Array = [];\n\n for (let index = 0; index < orderedPages.length; index += 1) {\n const page = orderedPages[index];\n const previous = orderedPages[index - 1];\n\n if (previous && page - previous > 1) {\n items.push(\"ellipsis\");\n }\n\n items.push(page);\n }\n\n return items;\n}\n","import * as React from \"react\";\nimport { IconDots, IconEdit, IconX } from \"../icons\";\nimport type {\n DataTableEditableRowsConfig,\n DataTableLabels,\n DataTableRowAction,\n} from \"../types\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { canEditRow, canUseRowAction, resolveRowActionLabel } from \"../types\";\n\ntype DataTableRowActionsProps = {\n row: TData;\n rowActions: Array>;\n editableRows?: DataTableEditableRowsConfig;\n isEditing: boolean;\n onStartEditing: () => void;\n onCancelEditing: () => void;\n labels: DataTableLabels;\n rowPinning?: {\n canPin: boolean;\n position: RowPinningPosition;\n pin: (position: RowPinningPosition) => void;\n };\n};\n\nexport function createDataTableRowActions(ui: DataTableUiKit) {\n const {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableRowActions({\n row,\n rowActions,\n editableRows,\n isEditing,\n onStartEditing,\n onCancelEditing,\n labels,\n rowPinning,\n }: DataTableRowActionsProps) {\n const actions = rowActions.filter((action) => canUseRowAction(action, row));\n const stopRowClickPropagation = React.useCallback(\n (event: React.SyntheticEvent) => {\n event.stopPropagation();\n },\n [],\n );\n\n if (isEditing) {\n return (\n \n \n \n \n {labels.cancelEdit}\n \n \n {labels.cancelEdit}\n \n );\n }\n\n const allowEdit = canEditRow(editableRows, row);\n const canPin = rowPinning?.canPin ?? false;\n if (!actions.length && !allowEdit && !canPin) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {labels.rowActions}\n \n \n \n {labels.rowActions}\n \n \n {allowEdit ? (\n \n ) => {\n event.stopPropagation();\n onStartEditing();\n }}\n >\n \n {labels.editRow}\n \n \n ) : null}\n {allowEdit && (actions.length || canPin) ? : null}\n {canPin ? (\n \n {rowPinning?.position ? (\n ) => {\n event.stopPropagation();\n rowPinning.pin(false);\n }}\n >\n {labels.unpinRow}\n \n ) : (\n <>\n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"top\");\n }}\n >\n {labels.pinRowToTop}\n \n ) => {\n event.stopPropagation();\n rowPinning?.pin(\"bottom\");\n }}\n >\n {labels.pinRowToBottom}\n \n \n )}\n \n ) : null}\n {canPin && actions.length ? : null}\n {actions.length ? (\n \n {actions.map((action) => {\n const Icon = action.icon;\n return (\n ) => {\n event.stopPropagation();\n void action.onClick(row);\n }}\n >\n {Icon ? : null}\n {resolveRowActionLabel(action.label, row)}\n \n );\n })}\n \n ) : null}\n \n \n );\n };\n}\n","import * as React from \"react\";\nimport type { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\nimport {\n IconAdjustmentsHorizontal,\n IconLayoutGrid,\n IconList,\n IconSearch,\n IconX,\n} from \"../icons\";\nimport type {\n DataTableColumnFilterType,\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableDensity,\n DataTableLabels,\n DataTableSavedView,\n DataTableSelectionAction,\n DataTableToolbarAction,\n DataTableToolbarVisibility,\n DataTableViewMode,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { DATA_TABLE_DEFAULT_LABELS } from \"./data-table-labels\";\n\nconst LazyToolbarDataOperations = React.lazy(\n () => import(\"./data-table-toolbar-operations\"),\n);\n\nexport type DataTableToolbarColumnFilter = {\n id: string;\n label: string;\n type: DataTableColumnFilterType;\n value: unknown;\n placeholder?: string;\n options: Array<{ label: string; value: string; count?: number; disabled?: boolean }>;\n searchable?: boolean;\n searchPlaceholder?: string;\n trueLabel?: string;\n falseLabel?: string;\n min?: number | string;\n max?: number | string;\n step?: number;\n};\n\ntype DataTableToolbarProps = {\n title?: string;\n titleId?: string;\n description?: string;\n descriptionId?: string;\n toolbarQueryValue: string;\n toolbarQueryPlaceholder: string;\n onToolbarQueryValueChange: (value: string) => void;\n customToolbar?: React.ReactNode;\n compactToolbar?: React.ReactNode;\n viewMode: DataTableViewMode;\n onViewModeChange?: (viewMode: DataTableViewMode) => void;\n enableViewToggle: boolean;\n toolbarActions: Array>;\n selectionActions: Array>;\n selectedRows: Array;\n selectedRowIds: Array;\n showHiddenRows: boolean;\n hiddenRowsLabel?: string;\n onShowHiddenRowsChange?: (showHiddenRows: boolean) => void;\n allRows: Array;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n enableColumnPinning: boolean;\n onColumnPinningChange: (columnId: string, side: DataTableColumnFixed | false) => void;\n columnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n density: DataTableDensity;\n onDensityChange: (density: DataTableDensity) => void;\n enableDensityToggle: boolean;\n labels: Required;\n toolbarVisibility?: DataTableToolbarVisibility;\n openFileDialog?: () => void;\n enableGrouping: boolean;\n enableToolbarColumnChooser: boolean;\n enableToolbarFilterChips: boolean;\n enableToolbarResetLayout: boolean;\n enableToolbarSavedViews: boolean;\n savedViews: Array;\n onResetColumnLayout: () => void;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (id: string, name: string) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: TanStackTable;\n};\n\nexport function createDataTableToolbar(ui: DataTableUiKit) {\n const uiClassNames = ui.classNames ?? {};\n const {\n Button,\n ButtonGroup,\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n } = ui;\n\n return function DataTableToolbar({\n title,\n titleId,\n description,\n descriptionId,\n toolbarQueryValue,\n toolbarQueryPlaceholder,\n onToolbarQueryValueChange,\n customToolbar,\n compactToolbar,\n viewMode,\n onViewModeChange,\n enableViewToggle,\n toolbarActions,\n selectionActions,\n selectedRows,\n selectedRowIds,\n showHiddenRows,\n hiddenRowsLabel,\n onShowHiddenRowsChange,\n allRows,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n enableColumnPinning,\n onColumnPinningChange,\n columnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n density,\n onDensityChange,\n enableDensityToggle,\n labels,\n toolbarVisibility,\n openFileDialog,\n enableGrouping,\n enableToolbarColumnChooser,\n enableToolbarFilterChips,\n enableToolbarResetLayout,\n enableToolbarSavedViews,\n savedViews,\n onResetColumnLayout,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n reorderColumn,\n table,\n }: DataTableToolbarProps) {\n const compactSearchInputRef = React.useRef(null);\n const [isCompactSearchVisible, setIsCompactSearchVisible] =\n React.useState(false);\n const compactToolbarIconButtonClassName =\n uiClassNames.toolbarCompactIconButton ?? \"\";\n const primaryActions = toolbarActions.filter(\n (action) => (action.placement ?? \"primary\") === \"primary\",\n );\n const trailingActions = toolbarActions.filter(\n (action) => action.placement === \"trailing\",\n );\n const showTitle = toolbarVisibility?.title ?? true;\n const showSearch = toolbarVisibility?.search ?? true;\n const showActions = toolbarVisibility?.actions ?? true;\n const showTrailingActions = toolbarVisibility?.trailingActions ?? true;\n const showOptions = toolbarVisibility?.options ?? true;\n const showViewToggle = toolbarVisibility?.viewToggle ?? true;\n const showCustomToolbar = toolbarVisibility?.customToolbar ?? true;\n const hasVisibleTitle = showTitle && Boolean(title || description);\n const hasVisibleSearch = showSearch;\n const hasVisiblePrimaryActions = showActions && primaryActions.length > 0;\n const hasVisibleSelectionActions =\n selectedRowIds.length > 0 && selectionActions.length > 0;\n const hasVisibleOptions =\n showOptions &&\n (columnVisibilityOptions.some((column) => column.canHide) ||\n Boolean(onShowHiddenRowsChange && hiddenRowsLabel) ||\n enableColumnPinning ||\n enableDensityToggle ||\n enableGrouping ||\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews);\n const hasToolbarOperationsMenu =\n enableToolbarColumnChooser ||\n enableToolbarResetLayout ||\n enableToolbarSavedViews;\n const activeColumnFilters = columnFilters.filter((filter) =>\n hasColumnFilterValue(filter.value),\n );\n const toolbarOperationsUi = {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n };\n const renderToolbarDataOperations = (placement: \"menu\" | \"chips\") => (\n \n }\n onResetColumnLayout={onResetColumnLayout}\n savedViews={savedViews}\n onCreateSavedView={onCreateSavedView}\n onApplySavedView={onApplySavedView}\n onRenameSavedView={onRenameSavedView}\n onDeleteSavedView={onDeleteSavedView}\n toolbarQueryValue={toolbarQueryValue}\n onToolbarQueryValueChange={onToolbarQueryValueChange}\n activeColumnFilters={activeColumnFilters}\n onColumnFilterChange={onColumnFilterChange}\n onClearColumnFilters={onClearColumnFilters}\n />\n \n );\n const groupableColumns = table\n .getAllLeafColumns()\n .filter(\n (column) =>\n !column.id.startsWith(\"__\") &&\n column.getCanGroup(),\n );\n const groupedColumns = table.store.state.grouping.flatMap((id) => {\n const column = table.getColumn(id);\n return column ? [column] : [];\n });\n const hasVisibleViewToggle =\n showViewToggle && enableViewToggle && Boolean(onViewModeChange);\n const hasVisibleTrailingActions =\n showTrailingActions && trailingActions.length > 0;\n const hasVisibleCustomToolbar = showCustomToolbar && Boolean(customToolbar);\n const hasVisibleCompactToolbar =\n showCustomToolbar && Boolean(compactToolbar ?? customToolbar);\n const selectedRowCountLabel = labels.selectedRows(selectedRowIds.length);\n\n React.useEffect(() => {\n if (!isCompactSearchVisible) {\n return;\n }\n\n compactSearchInputRef.current?.focus();\n }, [isCompactSearchVisible]);\n\n if (\n !hasVisibleTitle &&\n !hasVisibleSearch &&\n !hasVisiblePrimaryActions &&\n !hasVisibleSelectionActions &&\n !hasVisibleOptions &&\n !hasVisibleViewToggle &&\n !hasVisibleTrailingActions &&\n !hasVisibleCustomToolbar &&\n !hasVisibleCompactToolbar\n ) {\n return null;\n }\n\n return (\n
\n {showTitle && (title || description) ? (\n
\n {title ? (\n \n {title}\n \n ) : null}\n {description ? (\n \n {description}\n

\n ) : null}\n
\n ) : null}\n\n
\n \n {showSearch ? (\n <>\n
\n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n
\n \n \n {\n setIsCompactSearchVisible((current) => !current);\n }}\n >\n \n {labels.searchTable}\n \n \n {labels.searchTable}\n \n \n ) : null}\n\n {showActions ? (\n
\n {primaryActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n >\n {action.icon ? : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })}\n
\n ) : null}\n\n {hasVisibleCompactToolbar ? (\n \n {compactToolbar ?? customToolbar}\n
\n ) : null}\n\n
\n\n \n {selectedRowIds.length ? (\n \n {selectedRowCountLabel}\n
\n ) : null}\n {selectedRowIds.length\n ? selectionActions.map((action) => {\n const Icon = action.icon;\n const context = {\n rows: selectedRows,\n rowIds: selectedRowIds,\n };\n const disabled =\n typeof action.disabled === \"function\"\n ? action.disabled(selectedRows, context)\n : action.disabled;\n\n return (\n \n \n {\n void action.onClick(context);\n }}\n aria-label={action.label}\n >\n {Icon ? : null}\n {action.label}\n \n \n {action.label}\n \n );\n })\n : null}\n\n {hasVisibleOptions ? (\n \n \n \n \n {labels.tableOptions}\n \n \n \n {labels.tableOptions}\n \n {onShowHiddenRowsChange && hiddenRowsLabel ? (\n {\n onShowHiddenRowsChange(checked === true);\n }}\n >\n {labels.showHiddenRows(hiddenRowsLabel)}\n \n ) : null}\n \n {enableDensityToggle ? (\n <>\n \n {labels.density}\n \n {(\n [\n [\"compact\", labels.compactDensity],\n [\"comfortable\", labels.comfortableDensity],\n [\"spacious\", labels.spaciousDensity],\n ] as const\n ).map(([nextDensity, label]) => (\n {\n onDensityChange(nextDensity);\n }}\n >\n {label}\n \n ))}\n \n \n ) : null}\n {hasToolbarOperationsMenu\n ? renderToolbarDataOperations(\"menu\")\n : null}\n {!enableToolbarColumnChooser &&\n columnVisibilityOptions.some((column) => column.canHide) ? (\n <>\n \n {labels.columns}\n \n {columnVisibilityOptions\n .filter((column) => column.canHide)\n .map((column) => (\n {\n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n );\n }}\n >\n {column.label}\n \n ))}\n \n \n ) : null}\n {enableColumnPinning && !enableToolbarColumnChooser ? (\n <>\n \n \n {labels.pinLeft} / {labels.pinRight}\n \n \n {columnVisibilityOptions.map((column) => (\n {\n event.preventDefault();\n }}\n >\n \n {column.label}\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n L\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n R\n \n {\n event.stopPropagation();\n onColumnPinningChange(column.id, false);\n }}\n >\n -\n \n \n ))}\n \n \n ) : null}\n {enableGrouping && groupableColumns.length ? (\n <>\n \n {labels.grouping}\n \n {groupableColumns.map((column) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const isGrouped = column.getIsGrouped();\n return (\n {\n column.toggleGrouping();\n }}\n >\n {isGrouped\n ? labels.ungroup(columnLabel)\n : labels.groupBy(columnLabel)}\n \n );\n })}\n \n \n ) : null}\n \n \n ) : null}\n\n {showViewToggle && enableViewToggle && onViewModeChange ? (\n \n \n \n {\n onViewModeChange(\"table\");\n }}\n >\n \n \n {labels.switchToTableView ??\n DATA_TABLE_DEFAULT_LABELS.switchToTableView}\n \n \n \n \n {labels.tableView ??\n DATA_TABLE_DEFAULT_LABELS.tableView}\n \n \n \n \n {\n onViewModeChange(\"card\");\n }}\n >\n \n \n {labels.switchToCardView ??\n DATA_TABLE_DEFAULT_LABELS.switchToCardView}\n \n \n \n \n {labels.cardView ??\n DATA_TABLE_DEFAULT_LABELS.cardView}\n \n \n \n ) : null}\n\n {showTrailingActions\n ? trailingActions.map((action) => {\n const collapsesToIcon =\n !action.iconOnly && Boolean(action.icon);\n const button = (\n {\n void action.onClick({\n rows: allRows,\n openFileDialog,\n });\n }}\n disabled={action.disabled}\n aria-label={action.label}\n title={action.iconOnly ? undefined : action.label}\n className={`size-7 shrink-0 ${action.iconOnly ? \"\" : `${collapsesToIcon ? \"px-0 @min-[768px]/data-table:px-2.5\" : \"\"} @min-[768px]/data-table:h-8 @min-[768px]/data-table:w-fit`} ${action.iconOnly || collapsesToIcon ? compactToolbarIconButtonClassName : \"\"} ${uiClassNames.toolbarInputButton ?? \"\"}`}\n >\n {action.icon ? (\n \n ) : null}\n {action.iconOnly ? (\n {action.label}\n ) : collapsesToIcon ? (\n \n {action.label}\n \n ) : (\n {action.label}\n )}\n \n );\n\n return action.iconOnly ? (\n \n {button}\n {action.label}\n \n ) : (\n button\n );\n })\n : null}\n
\n \n\n {showSearch && isCompactSearchVisible ? (\n \n \n ) => {\n onToolbarQueryValueChange(event.target.value);\n }}\n placeholder={toolbarQueryPlaceholder}\n />\n \n \n \n {toolbarQueryValue ? (\n \n {\n onToolbarQueryValueChange(\"\");\n }}\n aria-label={labels.clearSearch}\n title={labels.clearSearch}\n >\n \n \n \n ) : null}\n \n \n ) : null}\n\n {columnFilters.length ? (\n \n {columnFilters.map((filter) => (\n \n ))}\n {columnFilters.some((filter) =>\n hasColumnFilterValue(filter.value),\n ) ? (\n \n {labels.clearFilters}\n \n ) : null}\n \n ) : null}\n\n {enableToolbarFilterChips\n ? renderToolbarDataOperations(\"chips\")\n : null}\n\n {enableGrouping && groupedColumns.length ? (\n \n {labels.grouping}:\n {groupedColumns.map((column, groupingIndex) => {\n const columnLabel =\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id;\n const moveGrouping = (nextIndex: number) => {\n const nextGrouping = [...table.store.state.grouping];\n const [groupingId] = nextGrouping.splice(groupingIndex, 1);\n if (groupingId === undefined) return;\n nextGrouping.splice(nextIndex, 0, groupingId);\n table.setGrouping(nextGrouping);\n };\n return (\n \n moveGrouping(groupingIndex - 1)}\n aria-label={labels.moveGroupingEarlier(columnLabel)}\n >\n \n \n column.toggleGrouping()}\n aria-label={labels.removeGrouping(columnLabel)}\n >\n {columnLabel} ×\n \n moveGrouping(groupingIndex + 1)}\n aria-label={labels.moveGroupingLater(columnLabel)}\n >\n \n \n \n );\n })}\n \n ) : null}\n\n \n\n {showCustomToolbar && customToolbar ? (\n \n {customToolbar}\n \n ) : null}\n \n );\n };\n\n function ToolbarColumnFilterControl({\n filter,\n labels,\n onColumnFilterChange,\n }: {\n filter: DataTableToolbarColumnFilter;\n labels: Required;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n }) {\n const [facetQuery, setFacetQuery] = React.useState(\"\");\n if (filter.type === \"text\") {\n return (\n \n ) => {\n onColumnFilterChange(filter.id, event.target.value);\n }}\n placeholder={filter.placeholder ?? filter.label}\n aria-label={`${labels.filters}: ${filter.label}`}\n />\n \n \n \n \n );\n }\n\n if (filter.type === \"numberRange\" || filter.type === \"dateRange\") {\n const range = normalizeToolbarRangeValue(filter.value);\n const inputType = filter.type === \"numberRange\" ? \"number\" : \"date\";\n const fromLabel =\n labels.filterFrom ?? DATA_TABLE_DEFAULT_LABELS.filterFrom;\n const toLabel = labels.filterTo ?? DATA_TABLE_DEFAULT_LABELS.filterTo;\n\n return (\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n from: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${fromLabel}`}\n />\n {fromLabel}\n \n \n ) => {\n onColumnFilterChange(filter.id, {\n ...range,\n to: parseRangeInputValue(event.target.value, inputType),\n });\n }}\n aria-label={`${filter.label}: ${toLabel}`}\n />\n {toLabel}\n \n \n );\n }\n\n const isBoolean = filter.type === \"boolean\";\n const isFaceted = filter.type === \"faceted\";\n const booleanOptions = [\n {\n label:\n filter.trueLabel ??\n labels.filterTrue ??\n DATA_TABLE_DEFAULT_LABELS.filterTrue,\n value: \"true\",\n },\n {\n label:\n filter.falseLabel ??\n labels.filterFalse ??\n DATA_TABLE_DEFAULT_LABELS.filterFalse,\n value: \"false\",\n },\n ];\n const options: DataTableToolbarColumnFilter[\"options\"] = isBoolean\n ? booleanOptions\n : filter.options;\n const visibleOptions =\n isFaceted && facetQuery\n ? options.filter((option) =>\n option.label.toLocaleLowerCase().includes(facetQuery.toLocaleLowerCase()),\n )\n : options;\n const selectedValue =\n typeof filter.value === \"string\" || typeof filter.value === \"boolean\"\n ? String(filter.value)\n : \"\";\n const selectedValues = Array.isArray(filter.value)\n ? filter.value.map(String)\n : selectedValue\n ? [selectedValue]\n : [];\n const selectedLabel =\n selectedValues.length === 0\n ? filter.label\n : `${filter.label}: ${\n selectedValues.length === 1\n ? (options.find(\n (option) => option.value === String(selectedValues[0]),\n )?.label ?? selectedValues[0])\n : selectedValues.length\n }`;\n\n return (\n \n \n \n \n \n {filter.label}\n {isFaceted && filter.searchable !== false ? (\n
\n \n ) => {\n setFacetQuery(event.target.value);\n }}\n placeholder={filter.searchPlaceholder ?? labels.facetSearch(filter.label)}\n aria-label={labels.facetSearch(filter.label)}\n />\n \n \n \n \n
\n ) : null}\n \n {filter.type === \"select\" || isBoolean || isFaceted ? (\n {\n onColumnFilterChange(filter.id, \"\");\n }}\n >\n {labels.allFilterOptions ??\n DATA_TABLE_DEFAULT_LABELS.allFilterOptions}\n \n ) : null}\n {visibleOptions.map((option) => (\n {\n if (filter.type === \"select\" || isBoolean) {\n onColumnFilterChange(\n filter.id,\n checked === true ? option.value : \"\",\n );\n return;\n }\n\n const nextValues = new Set(selectedValues);\n if (checked === true) {\n nextValues.add(option.value);\n } else {\n nextValues.delete(option.value);\n }\n onColumnFilterChange(filter.id, Array.from(nextValues));\n }}\n >\n {option.label}\n {option.count !== undefined ? (\n {option.count}\n ) : null}\n \n ))}\n \n
\n
\n );\n }\n}\n\nfunction hasColumnFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasColumnFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeToolbarRangeValue(value: unknown): {\n from?: number | string;\n to?: number | string;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"number\" || typeof range.from === \"string\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"number\" || typeof range.to === \"string\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction parseRangeInputValue(value: string, inputType: \"number\" | \"date\") {\n if (!value) {\n return undefined;\n }\n\n return inputType === \"number\" ? Number(value) : value;\n}\n","import * as React from \"react\";\nimport { DataTableTablePanel } from \"./data-table-table-panel\";\nimport type { DataTableTablePanelProps } from \"./data-table-table-panel\";\n\nconst LazyDataTableVirtualTablePanel = React.lazy(async () => {\n const module = await import(\"./data-table-virtual-table-panel\");\n return { default: module.DataTableVirtualTablePanel };\n}) as unknown as typeof DataTableTablePanel;\n\nexport function DataTableTablePanelRouter(\n props: DataTableTablePanelProps,\n) {\n const config =\n typeof props.virtualization === \"object\"\n ? props.virtualization\n : undefined;\n const enabled =\n props.virtualization === true || config?.enabled === true;\n\n if (!enabled) {\n return ;\n }\n\n return (\n \n }\n >\n \n \n );\n}\n","import type {\n DataTableSavedView,\n DataTableSavedViewSlice,\n DataTableSavedViewsChangeOperation,\n DataTableSavedViewsConfig,\n DataTableSavedViewsPayload,\n DataTableState,\n} from \"../types\";\n\nconst STORAGE_PREFIX = \"data-table-pro:saved-views:\";\nconst DEFAULT_VERSION = 1;\nconst DEFAULT_SLICES: Array = [\n \"sorting\",\n \"columnVisibility\",\n \"columnFilters\",\n \"grouping\",\n \"columnOrder\",\n \"columnPinning\",\n \"rowPinning\",\n \"columnSizing\",\n \"density\",\n \"viewMode\",\n \"showHiddenRows\",\n \"globalFilter\",\n];\nlet fallbackId = 0;\n\nexport function readDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n): Array {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return [];\n }\n\n let serialized: string | null;\n try {\n serialized = storage.getItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return [];\n }\n if (!serialized) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = (config.deserialize ?? JSON.parse)(serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"deserialize\" });\n return [];\n }\n\n if (!isRecord(parsed) || !(\"version\" in parsed) || !(\"views\" in parsed)) {\n return [];\n }\n\n const targetVersion = config.version ?? DEFAULT_VERSION;\n let candidate: unknown = parsed.views;\n if (parsed.version !== targetVersion) {\n if (!config.migrate) {\n return [];\n }\n try {\n candidate = config.migrate(\n { version: parsed.version, views: parsed.views },\n targetVersion,\n );\n } catch (error) {\n config.onError?.({ error, operation: \"migrate\" });\n return [];\n }\n }\n\n if (!Array.isArray(candidate)) {\n return [];\n }\n\n return candidate\n .map((view) => validateSavedView(view, config.slices))\n .filter((view): view is DataTableSavedView => Boolean(view));\n}\n\nexport function createDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n name: string,\n state: DataTableState,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n const now = new Date().toISOString();\n const view: DataTableSavedView = {\n id: createSavedViewId(),\n name: normalizedName,\n createdAt: now,\n updatedAt: now,\n state: selectSavedViewSlices(state, config.slices),\n };\n const views = [...readDataTableSavedViews(config), view];\n return writeViews(config, views, \"create\") ? cloneSavedView(view) : undefined;\n}\n\nexport function renameDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n name: string,\n) {\n const normalizedName = name.trim();\n if (!config || !normalizedName) {\n return undefined;\n }\n\n let renamed: DataTableSavedView | undefined;\n const views = readDataTableSavedViews(config).map((view) => {\n if (view.id !== id) {\n return view;\n }\n renamed = {\n ...view,\n name: normalizedName,\n updatedAt: new Date().toISOString(),\n };\n return renamed;\n });\n if (!renamed) {\n return undefined;\n }\n\n return writeViews(config, views, \"rename\")\n ? cloneSavedView(renamed)\n : undefined;\n}\n\nexport function deleteDataTableSavedView(\n config: DataTableSavedViewsConfig | undefined,\n id: string,\n) {\n if (!config) {\n return false;\n }\n\n const current = readDataTableSavedViews(config);\n const views = current.filter((view) => view.id !== id);\n return views.length !== current.length && writeViews(config, views, \"delete\");\n}\n\nexport function clearDataTableSavedViews(\n config: DataTableSavedViewsConfig | undefined,\n) {\n const storage = resolveStorage(config);\n if (!config || !storage) {\n return false;\n }\n\n try {\n storage.removeItem(getStorageKey(config.key));\n } catch (error) {\n config.onError?.({ error, operation: \"remove\" });\n return false;\n }\n config.onChange?.([], \"clear\");\n return true;\n}\n\nfunction writeViews(\n config: DataTableSavedViewsConfig,\n views: Array,\n operation: DataTableSavedViewsChangeOperation,\n) {\n const storage = resolveStorage(config);\n if (!storage) {\n return false;\n }\n\n let serialized: string;\n try {\n const payload: DataTableSavedViewsPayload = {\n version: config.version ?? DEFAULT_VERSION,\n views,\n };\n serialized = (config.serialize ?? JSON.stringify)(payload);\n } catch (error) {\n config.onError?.({ error, operation: \"serialize\" });\n return false;\n }\n\n try {\n storage.setItem(getStorageKey(config.key), serialized);\n } catch (error) {\n config.onError?.({ error, operation: \"write\" });\n return false;\n }\n const snapshots = views.map(cloneSavedView);\n config.onChange?.(snapshots, operation);\n return true;\n}\n\nfunction selectSavedViewSlices(\n state: DataTableState,\n slices: Array | undefined,\n) {\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const snapshot: Partial = {};\n for (const slice of Object.keys(state) as Array) {\n if (selected.has(slice)) {\n Object.assign(snapshot, {\n [slice]: cloneStateSlice(slice, state[slice]),\n });\n }\n }\n return snapshot;\n}\n\nfunction validateSavedView(\n value: unknown,\n slices: Array | undefined,\n): DataTableSavedView | undefined {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n !value.id ||\n typeof value.name !== \"string\" ||\n !value.name.trim() ||\n typeof value.createdAt !== \"string\" ||\n typeof value.updatedAt !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: value.id,\n name: value.name.trim(),\n createdAt: value.createdAt,\n updatedAt: value.updatedAt,\n state: validateState(value.state, slices),\n };\n}\n\nfunction validateState(\n value: unknown,\n slices: Array | undefined,\n) {\n if (!isRecord(value)) {\n return {};\n }\n\n const selected = new Set(slices ?? DEFAULT_SLICES);\n const state: Partial = {};\n const sorting = validateSorting(value.sorting);\n if (selected.has(\"sorting\") && sorting) state.sorting = sorting;\n const pagination = validatePagination(value.pagination);\n if (selected.has(\"pagination\") && pagination) state.pagination = pagination;\n const rowSelection = validateBooleanRecord(value.rowSelection);\n if (selected.has(\"rowSelection\") && rowSelection) {\n state.rowSelection = rowSelection;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (selected.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n const filters = validateFilters(value.columnFilters);\n if (selected.has(\"columnFilters\") && filters) state.columnFilters = filters;\n const grouping = validateStringArray(value.grouping);\n if (selected.has(\"grouping\") && grouping) state.grouping = grouping;\n const expanded =\n value.expanded === true\n ? true\n : validateBooleanRecord(value.expanded);\n if (selected.has(\"expanded\") && expanded !== undefined) {\n state.expanded = expanded;\n }\n const order = validateStringArray(value.columnOrder);\n if (selected.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validatePinning(value.columnPinning);\n if (selected.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const rowPinning = validateRowPinning(value.rowPinning);\n if (selected.has(\"rowPinning\") && rowPinning) {\n state.rowPinning = rowPinning;\n }\n const sizing = validateSizingRecord(value.columnSizing);\n if (selected.has(\"columnSizing\") && sizing) state.columnSizing = sizing;\n if (\n selected.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n if (\n selected.has(\"viewMode\") &&\n (value.viewMode === \"table\" || value.viewMode === \"card\")\n ) {\n state.viewMode = value.viewMode;\n }\n if (selected.has(\"showHiddenRows\") && typeof value.showHiddenRows === \"boolean\") {\n state.showHiddenRows = value.showHiddenRows;\n }\n if (selected.has(\"globalFilter\") && typeof value.globalFilter === \"string\") {\n state.globalFilter = value.globalFilter;\n }\n return state;\n}\n\nfunction cloneSavedView(view: DataTableSavedView): DataTableSavedView {\n return {\n ...view,\n state: validateState(view.state, Object.keys(view.state) as Array),\n };\n}\n\nfunction cloneStateSlice(\n slice: DataTableSavedViewSlice,\n value: unknown,\n) {\n if (Array.isArray(value)) {\n return (value as Array).map((item) =>\n isRecord(item) ? { ...item } : item,\n );\n }\n if (isRecord(value)) {\n if (slice === \"columnPinning\" || slice === \"rowPinning\") {\n return {\n ...(slice === \"columnPinning\"\n ? {\n left: Array.isArray(value.left)\n ? [...(value.left as Array)]\n : undefined,\n right: Array.isArray(value.right)\n ? [...(value.right as Array)]\n : undefined,\n }\n : {\n top: Array.isArray(value.top)\n ? [...(value.top as Array)]\n : undefined,\n bottom: Array.isArray(value.bottom)\n ? [...(value.bottom as Array)]\n : undefined,\n }),\n };\n }\n return { ...value };\n }\n return value;\n}\n\nfunction validateSorting(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; desc?: boolean } =>\n isRecord(item) && typeof item.id === \"string\",\n )\n .map((item) => ({ id: item.id, desc: Boolean(item.desc) }));\n}\n\nfunction validatePagination(value: unknown) {\n if (\n !isRecord(value) ||\n !Number.isInteger(value.pageIndex) ||\n (value.pageIndex as number) < 0 ||\n !Number.isInteger(value.pageSize) ||\n (value.pageSize as number) < 1\n ) {\n return undefined;\n }\n return {\n pageIndex: value.pageIndex as number,\n pageSize: value.pageSize as number,\n };\n}\n\nfunction validateFilters(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validatePinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction validateRowPinning(value: unknown) {\n if (!isRecord(value)) return undefined;\n return {\n top: validateStringArray(value.top) ?? [],\n bottom: validateStringArray(value.bottom) ?? [],\n };\n}\n\nfunction validateBooleanRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateSizingRecord(value: unknown) {\n if (!isRecord(value)) return undefined;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, number] =>\n typeof entry[1] === \"number\" &&\n Number.isFinite(entry[1]) &&\n entry[1] >= 0,\n ),\n );\n}\n\nfunction validateStringArray(value: unknown) {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction resolveStorage(config: DataTableSavedViewsConfig | undefined) {\n if (!config) {\n return undefined;\n }\n if (config.storage) {\n return config.storage;\n }\n if (typeof window === \"undefined\") {\n return undefined;\n }\n try {\n return window.localStorage;\n } catch (error) {\n config.onError?.({ error, operation: \"read\" });\n return undefined;\n }\n}\n\nfunction createSavedViewId() {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n fallbackId += 1;\n return `view-${Date.now().toString(36)}-${fallbackId.toString(36)}`;\n}\n\nfunction getStorageKey(key: string) {\n return `${STORAGE_PREFIX}${key}`;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import * as React from \"react\";\nimport { IconDownload } from \"../icons\";\nimport type {\n ColumnFiltersState,\n ColumnVisibilityState as VisibilityState,\n OnChangeFn,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnFixed,\n DataTableColumnPinningState as ColumnPinningState,\n DataTableLabels,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\nimport {\n exportDataTableCsv,\n getAccessorKey,\n getColumnId,\n getDataTableLeafColumns,\n hasFilterValue,\n normalizeColumnFilterOptions,\n startCase,\n} from \"./data-table-utils\";\n\nexport function useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange,\n handleColumnPinningChange,\n labels,\n table,\n toolbarActions,\n visibleData,\n csvExport,\n}: {\n columns: DataTableProps[\"columns\"];\n currentColumnFilters: ColumnFiltersState;\n currentColumnPinning: ColumnPinningState;\n effectiveColumnVisibility: VisibilityState;\n enableColumnFilters: boolean | undefined;\n handleColumnFiltersChange: OnChangeFn;\n handleColumnPinningChange: OnChangeFn;\n labels: DataTableLabels;\n table: TanStackTable;\n toolbarActions: DataTableProps[\"toolbarActions\"];\n visibleData: Array;\n csvExport: DataTableProps[\"csvExport\"];\n}) {\n const columnVisibilityOptions = React.useMemo(() => {\n return getDataTableLeafColumns(columns).map(({ column, index }) => {\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id);\n\n const pinned: false | DataTableColumnFixed =\n currentColumnPinning.left?.includes(id) === true\n ? \"left\"\n : currentColumnPinning.right?.includes(id) === true\n ? \"right\"\n : false;\n\n return {\n id,\n label,\n visible: effectiveColumnVisibility[id] !== false,\n canHide: column.enableHiding !== false,\n pinned,\n };\n });\n }, [columns, currentColumnPinning, effectiveColumnVisibility]);\n\n const toolbarColumnFilters = React.useMemo(() => {\n if (enableColumnFilters === false) {\n return [];\n }\n\n return getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n const filter = column.meta?.filter;\n if (!filter) {\n return [];\n }\n\n const id = getColumnId(column, index);\n const header = column.header;\n const accessorKey = getAccessorKey(column);\n const label =\n filter.label ??\n (typeof header === \"string\"\n ? header\n : accessorKey\n ? startCase(accessorKey)\n : startCase(id));\n const state = currentColumnFilters.find((item) => item.id === id);\n const configuredFacetOptions = filter.faceting?.options;\n const facetedMinMax =\n filter.type === \"numberRange\"\n ? table.getColumn(id)?.getFacetedMinMaxValues()\n : undefined;\n const rawOptions =\n filter.type === \"faceted\" && configuredFacetOptions\n ? typeof configuredFacetOptions === \"function\"\n ? configuredFacetOptions({ rows: visibleData })\n : configuredFacetOptions\n : filter.type === \"faceted\"\n ? Array.from(table.getColumn(id)?.getFacetedUniqueValues() ?? []).map(\n ([value, count]) => ({\n label:\n filter.faceting?.getOptionLabel?.(value as never) ??\n String(value),\n value: String(value),\n count,\n }),\n )\n : typeof filter.options === \"function\"\n ? filter.options({ rows: visibleData })\n : (filter.options ?? []);\n\n return [\n {\n id,\n label,\n type: filter.type,\n value: state?.value,\n placeholder: filter.placeholder,\n options: normalizeColumnFilterOptions(rawOptions),\n searchable: filter.faceting?.searchable,\n searchPlaceholder: filter.faceting?.searchPlaceholder,\n trueLabel: filter.trueLabel,\n falseLabel: filter.falseLabel,\n min: filter.min ?? facetedMinMax?.[0],\n max: filter.max ?? facetedMinMax?.[1],\n step: filter.step,\n },\n ];\n });\n }, [\n columns,\n currentColumnFilters,\n enableColumnFilters,\n table,\n visibleData,\n ]);\n\n const handleToolbarColumnFilterChange = React.useCallback(\n (columnId: string, value: unknown) => {\n handleColumnFiltersChange((current) => {\n const next = current.filter((filter) => filter.id !== columnId);\n if (hasFilterValue(value)) {\n next.push({ id: columnId, value });\n }\n return next;\n });\n },\n [handleColumnFiltersChange],\n );\n\n const handleClearColumnFilters = React.useCallback(() => {\n handleColumnFiltersChange([]);\n }, [handleColumnFiltersChange]);\n\n const handleToolbarColumnPinningChange = React.useCallback(\n (columnId: string, side: DataTableColumnFixed | false) => {\n handleColumnPinningChange((current) => {\n const left = (current.left ?? []).filter((id) => id !== columnId);\n const right = (current.right ?? []).filter((id) => id !== columnId);\n\n if (side === \"left\") {\n left.push(columnId);\n }\n if (side === \"right\") {\n right.push(columnId);\n }\n\n return { left, right };\n });\n },\n [handleColumnPinningChange],\n );\n\n const handleCsvExport = React.useCallback(() => {\n if (!csvExport) {\n return;\n }\n\n return exportDataTableCsv({\n csvExport,\n table,\n labels,\n });\n }, [csvExport, labels, table]);\n\n const effectiveToolbarActions = React.useMemo(() => {\n if (!csvExport) {\n return toolbarActions ?? [];\n }\n\n return [\n ...(toolbarActions ?? []),\n {\n key: \"__csv_export__\",\n label: labels.exportCsv,\n icon: IconDownload,\n placement: \"trailing\" as const,\n onClick: handleCsvExport,\n },\n ];\n }, [csvExport, handleCsvExport, labels.exportCsv, toolbarActions]);\n\n return {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n };\n}\n","import * as React from \"react\";\nimport type { DataTableProps } from \"../types\";\n\n/** Development-only guardrails for identities used by row models and caches. */\nexport function useDataTablePerformanceDiagnostics({\n columns,\n data,\n getRowId,\n}: Pick, \"columns\" | \"data\" | \"getRowId\">) {\n const previous = React.useRef({ columns, data, getRowId });\n const warned = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!isDevelopmentEnvironment()) {\n return;\n }\n\n const last = previous.current;\n if (\n last.data !== data &&\n haveSameItems(last.data, data) &&\n !warned.current.has(\"data\")\n ) {\n warn(\n warned.current,\n \"data\",\n \"The data array identity changed. Keep rows immutable and memoize unchanged data so filtering, row models, and virtual measurements can be reused.\",\n );\n }\n if (\n last.columns !== columns &&\n haveSameItems(last.columns, columns) &&\n !warned.current.has(\"columns\")\n ) {\n warn(\n warned.current,\n \"columns\",\n \"The columns array identity changed. Memoize stable column definitions so the search index and table column model can be reused.\",\n );\n }\n if (last.getRowId !== getRowId && !warned.current.has(\"getRowId\")) {\n warn(\n warned.current,\n \"getRowId\",\n \"getRowId identity changed. Memoize it and return an immutable, unique id to preserve row state and virtual scroll anchoring.\",\n );\n }\n\n const ids = new Set();\n for (let index = 0; index < data.length; index += 1) {\n const id = getRowId(data[index]!, index);\n if (ids.has(id) && !warned.current.has(\"duplicate-row-id\")) {\n warn(\n warned.current,\n \"duplicate-row-id\",\n `Duplicate row id \"${id}\" detected. Row ids must be unique and immutable.`,\n );\n break;\n }\n ids.add(id);\n }\n previous.current = { columns, data, getRowId };\n }, [columns, data, getRowId]);\n}\n\nfunction haveSameItems(previous: Array, next: Array) {\n return (\n previous.length === next.length &&\n previous.every((item, index) => Object.is(item, next[index]))\n );\n}\n\nfunction warn(warned: Set, key: string, message: string) {\n warned.add(key);\n console.warn(`[data-table-pro] ${message}`);\n}\n\nfunction isDevelopmentEnvironment() {\n return (\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV !== \"production\"\n );\n}\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport type { DataTableTanStackTable as TanStackTable } from \"./tanstack-v9\";\nimport type {\n DataTableActionErrorContext,\n DataTableApi,\n DataTableCellSelection,\n DataTableLabels,\n DataTableProps,\n DataTableState,\n DataTableStateOverlay as DataTableStateOverlayConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { createDataTableCardView } from \"./create-data-table-card-view\";\nimport { createDataTableEmptyState } from \"./create-data-table-empty-state\";\nimport { createDataTablePagination } from \"./create-data-table-pagination\";\nimport { createDataTableRowActions } from \"./create-data-table-row-actions\";\nimport { createDataTableToolbar } from \"./create-data-table-toolbar\";\nimport { DataTableCardPanel as DefaultDataTableCardPanel } from \"./data-table-card-panel\";\nimport { DataTableFooterSection } from \"./data-table-footer-section\";\nimport { DataTableTablePanelRouter as DefaultDataTableTablePanel } from \"./data-table-table-panel-router\";\nimport { DataTableToolbarSection } from \"./data-table-toolbar-section\";\nimport {\n clearDataTableSavedViews,\n createDataTableSavedView,\n deleteDataTableSavedView,\n readDataTableSavedViews,\n renameDataTableSavedView,\n} from \"./data-table-saved-views\";\nimport { resolveDataTableLabels } from \"./data-table-labels\";\nimport { useDataTableColumns } from \"./use-data-table-columns\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useDataTableInstance } from \"./use-data-table-instance\";\nimport { useDataTableScrollViewport } from \"./use-data-table-scroll-viewport\";\nimport {\n exportDataTableCsv,\n getColumnId,\n getDataTableColumnGroupPaths,\n getDataTableLeafColumns,\n getInitialColumnPinning,\n hasExplicitDataTableColumnSize,\n validateDataTableColumnIds,\n} from \"./data-table-utils\";\nimport { useDataTableState } from \"./use-data-table-state\";\nimport { clearDataTableColumnPrefs } from \"./use-data-table-column-prefs\";\nimport { useDataTableToolbarFeatures } from \"./use-data-table-toolbar-features\";\nimport { useColumnLayout } from \"./use-column-layout\";\nimport { useRowEditing } from \"./use-row-editing\";\nimport { useDataTablePerformanceDiagnostics } from \"./use-data-table-performance-diagnostics\";\n\nconst DataTableAutoPageSize = React.lazy(\n () => import(\"./data-table-auto-page-size\"),\n);\n\ntype CreateDataTableOptions = {\n CardPanel?: typeof DefaultDataTableCardPanel;\n TablePanel?: typeof DefaultDataTableTablePanel;\n};\n\nexport function createDataTable(ui: DataTableUiKit) {\n return createDataTableWithPanels(ui);\n}\n\nexport function createDataTableWithPanels(\n ui: DataTableUiKit,\n options: CreateDataTableOptions = {},\n) {\n const DataTableCardPanel =\n options.CardPanel ?? DefaultDataTableCardPanel;\n const DataTableTablePanel =\n options.TablePanel ?? DefaultDataTableTablePanel;\n const uiClassNames = ui.classNames ?? {};\n const {\n rootClassName,\n Button,\n Checkbox,\n Input,\n ScrollArea,\n ScrollBar,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n Tooltip,\n TooltipContent,\n TooltipProvider = React.Fragment,\n TooltipTrigger,\n } = ui;\n const DataTableEmptyState = createDataTableEmptyState(ui);\n const DataTableRowActions = createDataTableRowActions(ui);\n const { DataTableFooter } = createDataTablePagination(ui);\n const DataTableToolbar = createDataTableToolbar(ui);\n const DataTableCardView = createDataTableCardView(ui, DataTableRowActions);\n const DataTableStateOverlay = React.lazy(async () => {\n const { createDataTableStateOverlay } = await import(\n \"./data-table-state-overlay\"\n );\n return { default: createDataTableStateOverlay(ui) };\n }) as unknown as (props: {\n labels: DataTableLabels;\n overlay: DataTableStateOverlayConfig;\n rows: Array;\n toolbarQueryValue: string;\n }) => React.ReactElement | null;\n const defaultColumn = {\n minSize: 80,\n size: 180,\n maxSize: 720,\n };\n\n return function DataTable({\n columns,\n data,\n getRowId,\n children,\n title,\n description,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n toolbarQueryPlaceholder,\n toolbarQueryDebounceMs,\n manualFiltering = false,\n enableToolbarQueryFiltering = true,\n globalFilterFn,\n columnFilters,\n onColumnFiltersChange,\n enableColumnFilters,\n customToolbar,\n compactToolbar,\n rowsPerPageOptions = [10, 20, 50, 100],\n totalRowCount,\n hasNextPage,\n sorting,\n onSortingChange,\n manualSorting = false,\n grouping,\n onGroupingChange,\n manualGrouping = false,\n enableGrouping = false,\n groupedColumnMode = \"reorder\",\n aggregationFns,\n pageIndex,\n pageSize,\n autoPageSize = false,\n onPageIndexChange,\n onPageSizeChange,\n pageCount,\n manualPagination = false,\n rowSelection,\n onRowSelectionChange,\n enableRowSelection = false,\n enableMultiRowSelection = true,\n enableSubRowSelection = true,\n getRowCanSelect,\n rowSelectionSelectAllScope = \"page\",\n expanded,\n onExpandedChange,\n getSubRows,\n manualExpanding = false,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n detailPanel,\n getRowCanExpand,\n renderExpandedRow,\n columnOrder,\n onColumnOrderChange,\n enableColumnReordering = false,\n columnGroupHeaderHeight,\n columnPinning,\n onColumnPinningChange,\n enableColumnPinning = false,\n rowPinning,\n onRowPinningChange,\n enableRowPinning = false,\n keepPinnedRows = true,\n toolbarActions = [],\n selectionActions = [],\n rowActions = [],\n csvExport,\n clipboard,\n enableCellSelection = false,\n cellSelection,\n defaultCellSelection,\n onCellSelectionChange,\n gridCommands,\n density,\n onDensityChange,\n enableDensityToggle = false,\n columnPrefsKey,\n persistence,\n savedViews,\n toolbarDataOperations,\n initialState,\n state: unifiedState,\n onStateChange,\n apiRef,\n labels,\n summaryRows = [],\n cardRenderer,\n cardSizing,\n cardGridClassName,\n cardClassName,\n viewMode,\n onViewModeChange,\n enableViewToggle = false,\n enablePrint = false,\n enableFullscreen = false,\n emptyState,\n stateOverlay,\n isLoading = false,\n loadingRowCount,\n getRowLoadingState,\n hiddenRows,\n showHiddenRows,\n onShowHiddenRowsChange,\n infiniteScroll,\n editableRows,\n columnVisibility,\n onColumnVisibilityChange,\n columnSizing,\n onColumnSizingChange,\n enableColumnResizing = false,\n columnResizeMode = \"onEnd\",\n layoutMode = \"fill\",\n stickyHeader = true,\n scrollbarVisibility,\n showFooter = true,\n showToolbar = true,\n dir = \"ltr\",\n flexGrow = true,\n toolbarVisibility,\n className,\n tableClassName,\n tableContainerClassName,\n stripedRows = false,\n getRowClassName,\n onRowClick,\n onActionError,\n dragAndDrop,\n fileUpload,\n virtualization,\n accessibility,\n interactiveGrid,\n }: DataTableProps) {\n const containerRef = React.useRef(null);\n const fileInputRef = React.useRef(null);\n const tableScrollContainerRef = React.useRef(null);\n const draggedColumnIdRef = React.useRef(null);\n const tableRef = React.useRef | null>(null);\n const lastSelectedRowIdRef = React.useRef(null);\n const [toolbarSavedViewsVersion, setToolbarSavedViewsVersion] =\n React.useState(0);\n const generatedTitleId = React.useId();\n const generatedDescriptionId = React.useId();\n useDataTablePerformanceDiagnostics({ columns, data, getRowId });\n React.useMemo(() => validateDataTableColumnIds(columns), [columns]);\n const resolvedLabels = React.useMemo(\n () => resolveDataTableLabels(labels),\n [labels],\n );\n const toolbarOperations =\n toolbarDataOperations === true\n ? { columnChooser: true, savedViews: true, resetLayout: true }\n : toolbarDataOperations === false\n ? {}\n : (toolbarDataOperations ?? {});\n const gridMode =\n accessibility?.mode === \"grid\" ||\n interactiveGrid === true ||\n typeof interactiveGrid === \"object\";\n const [currentCellSelection, setCurrentCellSelection] =\n useControllableState({\n defaultValue: defaultCellSelection ?? null,\n onChange: onCellSelectionChange,\n value: cellSelection,\n });\n const resolvedToolbarQueryValue =\n toolbarQueryValue ?? unifiedState?.globalFilter;\n const resolvedSorting = sorting ?? unifiedState?.sorting;\n const resolvedGrouping = grouping ?? unifiedState?.grouping;\n const resolvedPageIndex =\n pageIndex ?? unifiedState?.pagination?.pageIndex;\n const resolvedPageSize = pageSize ?? unifiedState?.pagination?.pageSize;\n const resolvedRowSelection =\n rowSelection ?? unifiedState?.rowSelection;\n const resolvedColumnVisibility =\n columnVisibility ?? unifiedState?.columnVisibility;\n const resolvedColumnFilters =\n columnFilters ?? unifiedState?.columnFilters;\n const resolvedExpanded = expanded ?? unifiedState?.expanded;\n const resolvedColumnOrder =\n columnOrder ?? unifiedState?.columnOrder;\n const resolvedColumnPinning =\n columnPinning ?? unifiedState?.columnPinning;\n const resolvedRowPinning = rowPinning ?? unifiedState?.rowPinning;\n const resolvedColumnSizing =\n columnSizing ?? unifiedState?.columnSizing;\n const resolvedDensity = density ?? unifiedState?.density;\n const resolvedViewMode = viewMode ?? unifiedState?.viewMode;\n const resolvedShowHiddenRows =\n showHiddenRows ?? unifiedState?.showHiddenRows;\n const showTableHeading =\n showToolbar && (toolbarVisibility?.title ?? true);\n const titleId = showTableHeading && title ? generatedTitleId : undefined;\n const descriptionId =\n showTableHeading && description ? generatedDescriptionId : undefined;\n useDataTableStateConflictWarnings(unifiedState, {\n columnFilters: columnFilters !== undefined,\n columnOrder: columnOrder !== undefined,\n columnPinning: columnPinning !== undefined,\n rowPinning: rowPinning !== undefined,\n columnSizing: columnSizing !== undefined,\n columnVisibility: columnVisibility !== undefined,\n density: density !== undefined,\n expanded: expanded !== undefined,\n grouping: grouping !== undefined,\n globalFilter: toolbarQueryValue !== undefined,\n pagination: pageIndex !== undefined || pageSize !== undefined,\n rowSelection: rowSelection !== undefined,\n showHiddenRows: showHiddenRows !== undefined,\n sorting: sorting !== undefined,\n viewMode: viewMode !== undefined,\n });\n const handleToolbarQueryValueChange = useDataTableStateSliceChange(\n \"globalFilter\",\n onToolbarQueryValueChange,\n onStateChange,\n );\n const handleSortingPropChange = useDataTableStateSliceChange(\n \"sorting\",\n onSortingChange,\n onStateChange,\n );\n const handleGroupingPropChange = useDataTableStateSliceChange(\n \"grouping\",\n onGroupingChange,\n onStateChange,\n );\n const handleRowSelectionPropChange = useDataTableStateSliceChange(\n \"rowSelection\",\n onRowSelectionChange,\n onStateChange,\n );\n const handleColumnVisibilityPropChange = useDataTableStateSliceChange(\n \"columnVisibility\",\n onColumnVisibilityChange,\n onStateChange,\n );\n const handleColumnFiltersPropChange = useDataTableStateSliceChange(\n \"columnFilters\",\n onColumnFiltersChange,\n onStateChange,\n );\n const handleExpandedPropChange = useDataTableStateSliceChange(\n \"expanded\",\n onExpandedChange,\n onStateChange,\n );\n const handleColumnOrderPropChange = useDataTableStateSliceChange(\n \"columnOrder\",\n onColumnOrderChange,\n onStateChange,\n );\n const handleColumnPinningPropChange = useDataTableStateSliceChange(\n \"columnPinning\",\n onColumnPinningChange,\n onStateChange,\n );\n const handleRowPinningPropChange = useDataTableStateSliceChange(\n \"rowPinning\",\n onRowPinningChange,\n onStateChange,\n );\n const handleColumnSizingPropChange = useDataTableStateSliceChange(\n \"columnSizing\",\n onColumnSizingChange,\n onStateChange,\n );\n const handleDensityPropChange = useDataTableStateSliceChange(\n \"density\",\n onDensityChange,\n onStateChange,\n );\n const handleViewModePropChange = useDataTableStateSliceChange(\n \"viewMode\",\n onViewModeChange,\n onStateChange,\n );\n const handleShowHiddenRowsPropChange = useDataTableStateSliceChange(\n \"showHiddenRows\",\n onShowHiddenRowsChange,\n onStateChange,\n );\n const handlePageIndexPropChange = React.useCallback(\n (nextPageIndex: number) => {\n onPageIndexChange?.(nextPageIndex);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex: nextPageIndex,\n pageSize:\n resolvedPageSize ?? current.pagination.pageSize,\n },\n }));\n },\n [onPageIndexChange, onStateChange, resolvedPageSize],\n );\n const handlePageSizePropChange = React.useCallback(\n (nextPageSize: number) => {\n onPageSizeChange?.(nextPageSize);\n onStateChange?.((current) => ({\n ...current,\n pagination: {\n pageIndex:\n resolvedPageIndex ?? current.pagination.pageIndex,\n pageSize: nextPageSize,\n },\n }));\n },\n [onPageSizeChange, onStateChange, resolvedPageIndex],\n );\n const runAction = React.useCallback(\n (\n context: Omit, \"error\">,\n action: () => void | Promise,\n ) => {\n runDataTableAction(action, context, onActionError);\n },\n [onActionError],\n );\n const guardedRowActions = React.useMemo(\n () =>\n rowActions.map((action) => ({\n ...action,\n onClick: (row: TData) => {\n runAction(\n {\n actionKey: action.key,\n row,\n source: \"rowAction\",\n },\n () => action.onClick(row),\n );\n },\n })),\n [rowActions, runAction],\n );\n const guardedOnRowClick = React.useMemo<\n DataTableProps[\"onRowClick\"]\n >(\n () =>\n onRowClick\n ? (context) => {\n runAction(\n {\n row: context.row,\n source: \"rowClick\",\n },\n () => onRowClick(context),\n );\n }\n : undefined,\n [onRowClick, runAction],\n );\n const handleEditError = React.useCallback(\n (error: unknown, row: TData) => {\n onActionError?.({\n error,\n row,\n source: \"edit\",\n });\n },\n [onActionError],\n );\n const {\n containerWidth,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n effectiveColumnVisibility,\n globalFilterValue,\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n localSearchValue,\n resolvedLoadingRowCount,\n resolvedToolbarQueryPlaceholder,\n selectedRowIds,\n selectedRows,\n setCurrentColumnFilters,\n setCurrentColumnOrder,\n setCurrentColumnPinning,\n setCurrentRowPinning,\n setCurrentColumnVisibility,\n setCurrentExpanded,\n setCurrentGrouping,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n setLocalSearchValue,\n shouldRenderInitialLoading,\n tableData,\n tableGetRowId,\n visibleData,\n } = useDataTableState({\n columnFilters: resolvedColumnFilters,\n columnOrder: resolvedColumnOrder,\n columnPinning: resolvedColumnPinning,\n rowPinning: resolvedRowPinning,\n columnSizing: resolvedColumnSizing,\n columnPrefsKey,\n persistence,\n columnVisibility: resolvedColumnVisibility,\n columns,\n containerRef,\n data,\n density: resolvedDensity,\n enableRowSelection,\n enableToolbarQueryFiltering,\n expanded: resolvedExpanded,\n grouping: resolvedGrouping,\n getSubRows,\n getRowId,\n hiddenRows,\n isLoading,\n loadingRowCount,\n manualFiltering,\n initialState,\n onColumnFiltersChange: handleColumnFiltersPropChange,\n onColumnOrderChange: handleColumnOrderPropChange,\n onColumnPinningChange: handleColumnPinningPropChange,\n onRowPinningChange: handleRowPinningPropChange,\n onColumnSizingChange: handleColumnSizingPropChange,\n onColumnVisibilityChange: handleColumnVisibilityPropChange,\n onDensityChange: handleDensityPropChange,\n onExpandedChange: handleExpandedPropChange,\n onGroupingChange: handleGroupingPropChange,\n onPageIndexChange: handlePageIndexPropChange,\n onRowSelectionChange: handleRowSelectionPropChange,\n onShowHiddenRowsChange: handleShowHiddenRowsPropChange,\n onSortingChange: handleSortingPropChange,\n onToolbarQueryValueChange: handleToolbarQueryValueChange,\n onViewModeChange: handleViewModePropChange,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n resolvedLabels,\n rowSelection: resolvedRowSelection,\n rowsPerPageOptions,\n selectionActions,\n showHiddenRows: resolvedShowHiddenRows,\n sorting: resolvedSorting,\n toolbarQueryDebounceMs,\n toolbarQueryPlaceholder,\n toolbarQueryValue: resolvedToolbarQueryValue,\n viewMode: resolvedViewMode,\n });\n const usesLegacyDetailPanelState = Boolean(\n renderExpandedRow && !detailPanel && !getSubRows,\n );\n const resolvedDetailPanel =\n detailPanel ??\n (renderExpandedRow\n ? {\n getRowCanExpand: getSubRows ? undefined : getRowCanExpand,\n render: renderExpandedRow,\n }\n : undefined);\n const [currentDetailExpanded, setCurrentDetailExpanded] =\n useControllableState({\n defaultValue: () =>\n usesLegacyDetailPanelState ? (initialState?.expanded ?? {}) : {},\n onChange: usesLegacyDetailPanelState\n ? setCurrentExpanded\n : resolvedDetailPanel?.onExpandedChange,\n value: usesLegacyDetailPanelState\n ? currentExpanded\n : resolvedDetailPanel?.expanded,\n });\n const {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n } = useRowEditing({\n columns,\n editableRows,\n onError: handleEditError,\n });\n const rowEditingContext = React.useMemo(\n () => ({\n cancel: cancelEditing,\n cancelOnEscape: editableRows?.cancelOnEscape !== false,\n clearError: clearEditError,\n commit: (row: TData) => {\n void saveEdit(row);\n },\n commitOnEnter: editableRows?.commitOnEnter !== false,\n errors: editErrors,\n isDirty: isEditDirty,\n isPending: isSavingEdit,\n }),\n [\n cancelEditing,\n clearEditError,\n editableRows?.cancelOnEscape,\n editableRows?.commitOnEnter,\n editErrors,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n ],\n );\n const { viewportElement: tableScrollElement, viewportHeight } =\n useDataTableScrollViewport(tableScrollContainerRef, currentViewMode);\n const autoPageSizeConfig =\n typeof autoPageSize === \"object\" ? autoPageSize : undefined;\n const handleAutoPageSizeChange = React.useCallback(\n (nextPageSize: number) => {\n if (nextPageSize === currentPagination.pageSize) {\n return;\n }\n if (currentPagination.pageIndex !== 0) {\n handlePageIndexPropChange(0);\n }\n handlePageSizePropChange(nextPageSize);\n if (resolvedPageSize === undefined) {\n setLocalPagination({ pageIndex: 0, pageSize: nextPageSize });\n }\n },\n [\n currentPagination.pageIndex,\n currentPagination.pageSize,\n handlePageIndexPropChange,\n handlePageSizePropChange,\n resolvedPageSize,\n setLocalPagination,\n ],\n );\n const autoPageSizeEnabled =\n autoPageSize === true || autoPageSizeConfig !== undefined;\n const print = React.useCallback(() => {\n if (typeof window === \"undefined\" || typeof window.print !== \"function\") {\n return false;\n }\n window.print();\n return true;\n }, []);\n const toggleFullscreen = React.useCallback(async () => {\n const element = containerRef.current;\n if (!element || typeof document === \"undefined\") {\n return false;\n }\n if (document.fullscreenElement) {\n if (typeof document.exitFullscreen !== \"function\") return false;\n await document.exitFullscreen();\n return true;\n }\n if (typeof element.requestFullscreen !== \"function\") return false;\n await element.requestFullscreen();\n return true;\n }, []);\n const [isFullscreen, setIsFullscreen] = React.useState(false);\n React.useEffect(() => {\n if (!enableFullscreen || typeof document === \"undefined\") return;\n const update = () => {\n setIsFullscreen(document.fullscreenElement === containerRef.current);\n };\n update();\n document.addEventListener(\"fullscreenchange\", update);\n return () => document.removeEventListener(\"fullscreenchange\", update);\n }, [enableFullscreen]);\n const openFileDialog = React.useCallback(() => {\n if (fileUpload?.disabled) {\n return;\n }\n\n fileInputRef.current?.click();\n }, [fileUpload?.disabled]);\n const handleSelectedFiles = React.useCallback(\n (files: FileList | Array) => {\n runAction(\n {\n source: \"fileUpload\",\n },\n () => fileUpload?.onFilesSelected(files),\n );\n },\n [fileUpload, runAction],\n );\n\n const includeFillSpacer = React.useMemo(() => {\n if (layoutMode !== \"fill\") {\n return false;\n }\n\n const visibleDataColumns = getDataTableLeafColumns(columns).filter(\n ({ column, index }) =>\n effectiveColumnVisibility[getColumnId(column, index)] !== false,\n );\n\n return (\n visibleDataColumns.length > 0 &&\n visibleDataColumns.every(({ column, index }) => {\n const columnId = getColumnId(column, index);\n return (\n hasExplicitDataTableColumnSize(column) ||\n Object.prototype.hasOwnProperty.call(\n currentColumnSizing,\n columnId,\n )\n );\n })\n );\n }, [\n columns,\n currentColumnSizing,\n effectiveColumnVisibility,\n layoutMode,\n ]);\n const tableColumns = useDataTableColumns({\n Button,\n Checkbox,\n DataTableRowActions,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cancelEditing,\n columns,\n editableRows,\n editErrors,\n editingRowId,\n enableRowSelection,\n enableRowPinning,\n hasTreeExpansion: Boolean(getSubRows),\n isSavingEdit,\n isEditDirty,\n includeFillSpacer,\n labels: resolvedLabels,\n lastSelectedRowIdRef,\n detailPanel: resolvedDetailPanel,\n detailExpanded: currentDetailExpanded,\n onDetailExpandedChange: setCurrentDetailExpanded,\n rowSelectionSelectAllScope,\n rowActions: guardedRowActions,\n saveEdit,\n startEditingRow,\n tableRef,\n });\n const columnGroupPaths = React.useMemo(\n () => getDataTableColumnGroupPaths(columns),\n [columns],\n );\n\n const {\n effectivePageCount,\n footerTotalRowCount,\n handleFooterPageIndexChange,\n handleFooterPageSizeChange,\n isPageCountKnown,\n renderedRows,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n rowsToRender,\n sentinelRef,\n table,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumns,\n } = useDataTableInstance({\n autoResetPageIndex: false,\n columnGroupPaths,\n columnResizeMode,\n dir,\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentSorting,\n currentViewMode,\n defaultColumn,\n effectiveColumnVisibility,\n enableColumnResizing,\n enableRowPinning,\n enableRowSelection,\n enableMultiRowSelection,\n enableSubRowSelection,\n getRowCanSelect,\n getRowCanExpand,\n getSubRows,\n aggregationFns,\n groupedColumnMode,\n globalFilterFn,\n globalFilterValue,\n hasNextPage,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnOrderChange: setCurrentColumnOrder,\n handleColumnPinningChange: setCurrentColumnPinning,\n handleRowPinningChange: setCurrentRowPinning,\n handleColumnVisibilityChange: setCurrentColumnVisibility,\n handleExpandedChange: setCurrentExpanded,\n handleGroupingChange: setCurrentGrouping,\n infiniteScroll,\n keepPinnedRows,\n manualFiltering,\n manualGrouping,\n manualExpanding,\n manualPagination,\n manualSorting,\n onActionError,\n onPageIndexChange: handlePageIndexPropChange,\n onPageSizeChange: handlePageSizePropChange,\n pageCount,\n pageIndex: resolvedPageIndex,\n pageSize: resolvedPageSize,\n paginateExpandedRows,\n filterFromLeafRows,\n maxLeafRowFilterDepth,\n setCurrentRowSelection,\n setCurrentSorting,\n setLocalColumnSizing,\n setLocalPagination,\n shouldRenderInitialLoading,\n tableColumns,\n tableData,\n tableGetRowId,\n tableRef,\n tableScrollElement,\n totalRowCount,\n virtualization,\n viewportHeight,\n });\n const columnLayout = useColumnLayout({\n columns,\n columnSizing: currentColumnSizing,\n editableRows: Boolean(editableRows),\n enableRowSelection,\n hasRowActions: rowActions.length > 0,\n hasRowExpansion: Boolean(getSubRows || resolvedDetailPanel),\n layoutMode,\n uiClassNames,\n visibleLeafColumns,\n });\n const { explicitlySizedColumnIds, fillMinWidth, getColumnLayout } =\n columnLayout;\n const explicitCustomCellColumnIds = React.useMemo(() => {\n return new Set(\n getDataTableLeafColumns(columns).flatMap(({ column, index }) => {\n return Object.prototype.hasOwnProperty.call(column, \"cell\") &&\n typeof column.cell === \"function\"\n ? [getColumnId(column, index)]\n : [];\n }),\n );\n }, [columns]);\n const visibleLeafColumnCount = visibleLeafColumns.length;\n const bodyRowComponents = React.useMemo(\n () => ({\n Checkbox,\n Input,\n Skeleton,\n TableCell,\n TableRow,\n }),\n [],\n );\n const hasCardTitle = React.useMemo(\n () =>\n getDataTableLeafColumns(columns).some(\n ({ column }) => column.meta?.cardTitle,\n ),\n [columns],\n );\n const primeColumnForResize = React.useCallback(\n (columnId: string, currentSize: number) => {\n if (\n explicitlySizedColumnIds.has(columnId) ||\n Object.prototype.hasOwnProperty.call(\n table.store.state.columnSizing,\n columnId,\n )\n ) {\n return;\n }\n\n flushSync(() => {\n table.setColumnSizing((current) => ({\n ...current,\n [columnId]: currentSize,\n }));\n });\n },\n [explicitlySizedColumnIds, table],\n );\n const resetColumnSize = React.useCallback(\n (columnId: string) => {\n if (explicitlySizedColumnIds.has(columnId)) {\n table.getColumn(columnId)?.resetSize();\n return;\n }\n\n table.setColumnSizing((current) => {\n if (!Object.prototype.hasOwnProperty.call(current, columnId)) {\n return current;\n }\n\n const next = { ...current };\n delete next[columnId];\n return next;\n });\n },\n [explicitlySizedColumnIds, table],\n );\n\n const filteredData = table\n .getFilteredRowModel()\n .rows.map((row) => row.original);\n const configuredEmptyState = stateOverlay?.empty ?? emptyState;\n const emptyNode =\n typeof configuredEmptyState === \"function\"\n ? configuredEmptyState({\n rows: filteredData,\n toolbarQueryValue: localSearchValue,\n })\n : configuredEmptyState;\n const guardedStateOverlay = React.useMemo(\n () =>\n stateOverlay\n ? {\n ...stateOverlay,\n onRetry: stateOverlay.onRetry\n ? () =>\n runAction(\n { source: \"retry\" },\n stateOverlay.onRetry!,\n )\n : undefined,\n }\n : undefined,\n [runAction, stateOverlay],\n );\n const stateOverlayNode = guardedStateOverlay?.error != null ? (\n \n \n \n ) : undefined;\n const {\n columnVisibilityOptions,\n effectiveToolbarActions,\n handleClearColumnFilters,\n handleToolbarColumnFilterChange,\n handleToolbarColumnPinningChange,\n toolbarColumnFilters,\n } = useDataTableToolbarFeatures({\n columns,\n currentColumnFilters,\n currentColumnPinning,\n csvExport,\n effectiveColumnVisibility,\n enableColumnFilters,\n handleColumnFiltersChange: setCurrentColumnFilters,\n handleColumnPinningChange: setCurrentColumnPinning,\n labels: resolvedLabels,\n table,\n toolbarActions,\n visibleData,\n });\n const guardedToolbarActions = React.useMemo(\n () =>\n [\n ...effectiveToolbarActions,\n ...(enablePrint\n ? [\n {\n key: \"__print__\",\n label: resolvedLabels.print,\n placement: \"trailing\" as const,\n onClick: () => {\n print();\n },\n },\n ]\n : []),\n ...(enableFullscreen\n ? [\n {\n key: \"__fullscreen__\",\n label: isFullscreen\n ? resolvedLabels.exitFullscreen\n : resolvedLabels.enterFullscreen,\n placement: \"trailing\" as const,\n onClick: () => toggleFullscreen(),\n },\n ]\n : []),\n ].map((action) => ({\n ...action,\n onClick: (context: {\n rows: Array;\n openFileDialog?: () => void;\n }) => {\n runAction(\n {\n actionKey: action.key,\n source: \"toolbarAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [\n effectiveToolbarActions,\n enableFullscreen,\n enablePrint,\n isFullscreen,\n print,\n resolvedLabels.enterFullscreen,\n resolvedLabels.exitFullscreen,\n resolvedLabels.print,\n runAction,\n toggleFullscreen,\n ],\n );\n const guardedSelectionActions = React.useMemo(\n () =>\n selectionActions.map((action) => ({\n ...action,\n onClick: (context: Parameters[0]) => {\n runAction(\n {\n actionKey: action.key,\n source: \"selectionAction\",\n },\n () => action.onClick(context),\n );\n },\n })),\n [runAction, selectionActions],\n );\n const currentDataTableState = React.useMemo(\n () => ({\n sorting: currentSorting,\n pagination: currentPagination,\n rowSelection: currentRowSelection,\n columnVisibility: currentColumnVisibility,\n columnFilters: currentColumnFilters,\n expanded: currentExpanded,\n grouping: currentGrouping,\n columnOrder: currentColumnOrder,\n columnPinning: currentColumnPinning,\n rowPinning: currentRowPinning,\n columnSizing: currentColumnSizing,\n density: currentDensity,\n viewMode: currentViewMode,\n showHiddenRows: currentShowHiddenRows,\n globalFilter: localSearchValue,\n }),\n [\n currentColumnFilters,\n currentColumnOrder,\n currentColumnPinning,\n currentRowPinning,\n currentColumnSizing,\n currentColumnVisibility,\n currentDensity,\n currentExpanded,\n currentGrouping,\n currentPagination,\n currentRowSelection,\n currentShowHiddenRows,\n currentSorting,\n currentViewMode,\n localSearchValue,\n ],\n );\n const getCurrentState = React.useCallback(\n () => cloneDataTableState(currentDataTableState),\n [currentDataTableState],\n );\n const restoreState = React.useCallback(\n (nextState: Partial) => {\n if (nextState.sorting !== undefined) {\n table.setSorting(nextState.sorting);\n }\n if (nextState.pagination !== undefined) {\n table.setPagination(nextState.pagination);\n }\n if (nextState.rowSelection !== undefined) {\n setCurrentRowSelection(nextState.rowSelection);\n }\n if (nextState.columnVisibility !== undefined) {\n table.setColumnVisibility(nextState.columnVisibility);\n }\n if (nextState.columnFilters !== undefined) {\n table.setColumnFilters(nextState.columnFilters);\n }\n if (nextState.expanded !== undefined) {\n table.setExpanded(nextState.expanded);\n }\n if (nextState.grouping !== undefined) {\n table.setGrouping(nextState.grouping);\n }\n if (nextState.columnOrder !== undefined) {\n table.setColumnOrder(nextState.columnOrder);\n }\n if (nextState.columnPinning !== undefined) {\n setCurrentColumnPinning(nextState.columnPinning);\n }\n if (nextState.rowPinning !== undefined) {\n table.setRowPinning(nextState.rowPinning);\n }\n if (nextState.columnSizing !== undefined) {\n table.setColumnSizing(nextState.columnSizing);\n }\n if (nextState.density !== undefined) {\n handleDensityChange(nextState.density);\n }\n if (nextState.viewMode !== undefined) {\n handleViewModeChange(nextState.viewMode);\n }\n if (nextState.showHiddenRows !== undefined) {\n handleShowHiddenRowsChange(nextState.showHiddenRows);\n }\n if (nextState.globalFilter !== undefined) {\n setLocalSearchValue(nextState.globalFilter);\n }\n },\n [\n handleDensityChange,\n handleShowHiddenRowsChange,\n handleViewModeChange,\n setLocalSearchValue,\n setCurrentColumnPinning,\n setCurrentRowSelection,\n table,\n ],\n );\n const clearPersistedState = React.useCallback(\n () => clearDataTableColumnPrefs(persistence ?? columnPrefsKey),\n [columnPrefsKey, persistence],\n );\n const resetColumnLayout = React.useCallback<\n DataTableApi[\"resetColumnLayout\"]\n >(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n columnVisibility: initialState?.columnVisibility ?? {},\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n ],\n );\n const resetState = React.useCallback[\"resetState\"]>(\n (options) => {\n if (options?.clearPersistence) {\n clearPersistedState();\n }\n restoreState({\n sorting: initialState?.sorting ?? [],\n pagination: initialState?.pagination ?? {\n pageIndex: 0,\n pageSize: rowsPerPageOptions[0] ?? 20,\n },\n rowSelection: initialState?.rowSelection ?? {},\n columnVisibility: initialState?.columnVisibility ?? {},\n columnFilters: initialState?.columnFilters ?? [],\n expanded: initialState?.expanded ?? {},\n grouping: initialState?.grouping ?? [],\n columnOrder: initialState?.columnOrder ?? [],\n columnPinning:\n initialState?.columnPinning ?? getInitialColumnPinning(columns),\n rowPinning: initialState?.rowPinning ?? { top: [], bottom: [] },\n columnSizing: initialState?.columnSizing ?? {},\n density: initialState?.density ?? \"comfortable\",\n viewMode: initialState?.viewMode ?? \"table\",\n showHiddenRows: initialState?.showHiddenRows ?? false,\n globalFilter: initialState?.globalFilter ?? \"\",\n });\n },\n [\n clearPersistedState,\n columns,\n initialState,\n restoreState,\n rowsPerPageOptions,\n ],\n );\n const getSavedViews = React.useCallback(\n () => readDataTableSavedViews(savedViews),\n [savedViews],\n );\n const createSavedView = React.useCallback<\n DataTableApi[\"createSavedView\"]\n >(\n (name) =>\n createDataTableSavedView(savedViews, name, getCurrentState()),\n [getCurrentState, savedViews],\n );\n const applySavedView = React.useCallback<\n DataTableApi[\"applySavedView\"]\n >(\n (id) => {\n const view = readDataTableSavedViews(savedViews).find(\n (candidate) => candidate.id === id,\n );\n if (!view) {\n return false;\n }\n restoreState(view.state);\n savedViews?.onApply?.(view);\n return true;\n },\n [restoreState, savedViews],\n );\n const renameSavedView = React.useCallback<\n DataTableApi[\"renameSavedView\"]\n >(\n (id, name) => renameDataTableSavedView(savedViews, id, name),\n [savedViews],\n );\n const deleteSavedView = React.useCallback<\n DataTableApi[\"deleteSavedView\"]\n >(\n (id) => deleteDataTableSavedView(savedViews, id),\n [savedViews],\n );\n const clearSavedViews = React.useCallback(\n () => clearDataTableSavedViews(savedViews),\n [savedViews],\n );\n const toolbarSavedViews = React.useMemo(() => {\n void toolbarSavedViewsVersion;\n return readDataTableSavedViews(savedViews);\n }, [savedViews, toolbarSavedViewsVersion]);\n const handleToolbarCreateSavedView = React.useCallback(\n (name: string) => {\n const view = createSavedView(name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [createSavedView],\n );\n const handleToolbarRenameSavedView = React.useCallback(\n (id: string, name: string) => {\n const view = renameSavedView(id, name);\n if (view) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return view;\n },\n [renameSavedView],\n );\n const handleToolbarDeleteSavedView = React.useCallback(\n (id: string) => {\n const deleted = deleteSavedView(id);\n if (deleted) {\n setToolbarSavedViewsVersion((current) => current + 1);\n }\n return deleted;\n },\n [deleteSavedView],\n );\n const exportCsvFromApi = React.useCallback<\n DataTableApi[\"exportCsv\"]\n >(\n (options) =>\n exportDataTableCsv({\n csvExport: options ?? (csvExport || true),\n labels: resolvedLabels,\n table,\n }),\n [csvExport, resolvedLabels, table],\n );\n const copyToClipboard = React.useCallback<\n DataTableApi[\"copyToClipboard\"]\n >(\n async (options) => {\n const { copyDataTableToClipboard } = await import(\n \"./data-table-clipboard\"\n );\n return copyDataTableToClipboard({\n clipboard:\n options ??\n (clipboard?.copy === false\n ? false\n : currentCellSelection\n ? {\n ...(clipboard?.copy === true ? {} : clipboard?.copy),\n scope: \"cellSelection\",\n }\n : clipboard?.copy ?? true),\n cellSelection: currentCellSelection,\n table,\n });\n },\n [clipboard?.copy, currentCellSelection, table],\n );\n const pinRow = React.useCallback[\"pinRow\"]>(\n (rowId, position = \"top\") => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(position);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n const unpinRow = React.useCallback[\"unpinRow\"]>(\n (rowId) => {\n try {\n const row = table.getRow(rowId, true);\n if (!row.getCanPin()) {\n return false;\n }\n row.pin(false);\n return true;\n } catch {\n return false;\n }\n },\n [table],\n );\n React.useImperativeHandle(\n apiRef,\n () => ({\n getTable: () => tableRef.current,\n getState: getCurrentState,\n snapshot: getCurrentState,\n restore: restoreState,\n resetColumnLayout,\n resetState,\n clearPersistedState,\n getSavedViews,\n createSavedView,\n applySavedView,\n renameSavedView,\n deleteSavedView,\n clearSavedViews,\n pinRow,\n unpinRow,\n focus: () => {\n containerRef.current?.focus();\n },\n scrollToRow: (rowId) =>\n scrollDataTableElementIntoView(containerRef.current, \"row\", rowId),\n scrollToColumn: (columnId) =>\n scrollDataTableElementIntoView(\n containerRef.current,\n \"column\",\n columnId,\n ),\n exportCsv: exportCsvFromApi,\n copyToClipboard,\n getCellSelection: () => currentCellSelection,\n setCellSelection: setCurrentCellSelection,\n clearCellSelection: () => setCurrentCellSelection(null),\n print,\n toggleFullscreen,\n }),\n [\n applySavedView,\n clearPersistedState,\n clearSavedViews,\n copyToClipboard,\n currentCellSelection,\n createSavedView,\n deleteSavedView,\n exportCsvFromApi,\n getSavedViews,\n getCurrentState,\n renameSavedView,\n resetColumnLayout,\n resetState,\n restoreState,\n pinRow,\n print,\n setCurrentCellSelection,\n unpinRow,\n toggleFullscreen,\n ],\n );\n\n return (\n \n {\n if (\n gridMode &&\n gridCommands &&\n (event.ctrlKey || event.metaKey) &&\n event.key.toLowerCase() === \"z\" &&\n !isDataTableEditableClipboardTarget(event.target)\n ) {\n const command = event.shiftKey ? gridCommands.redo : gridCommands.undo;\n if (command) {\n event.preventDefault();\n runAction(\n { source: event.shiftKey ? \"redo\" : \"undo\" },\n () => command({ cellSelection: currentCellSelection, table }),\n );\n }\n return;\n }\n if (\n !clipboard?.copy ||\n !(event.ctrlKey || event.metaKey) ||\n event.key.toLowerCase() !== \"c\" ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n event.preventDefault();\n runAction(\n { source: \"clipboardCopy\" },\n async () => {\n await copyToClipboard(\n clipboard.copy === true\n ? undefined\n : currentCellSelection &&\n typeof clipboard.copy === \"object\" &&\n !clipboard.copy.scope\n ? { ...clipboard.copy, scope: \"cellSelection\" }\n : clipboard.copy,\n );\n },\n );\n }}\n onPaste={(event) => {\n const paste = clipboard?.paste;\n if (\n !paste ||\n paste.enabled === false ||\n isDataTableEditableClipboardTarget(event.target)\n ) {\n return;\n }\n const text = event.clipboardData.getData(\"text/plain\");\n if (!text) {\n return;\n }\n if (paste.preventDefault ?? true) {\n event.preventDefault();\n }\n runAction(\n { source: \"clipboardPaste\" },\n async () => {\n const { parseDataTableClipboardText } = await import(\n \"./data-table-clipboard\"\n );\n return paste.onPaste({\n table,\n text,\n values: parseDataTableClipboardText(text),\n });\n },\n );\n }}\n >\n {autoPageSizeEnabled ? (\n \n \n \n ) : null}\n {fileUpload ? (\n {\n const files = event.currentTarget.files;\n if (files?.length) {\n handleSelectedFiles(files);\n }\n event.currentTarget.value = \"\";\n }}\n />\n ) : null}\n \n \n {showToolbar ? (\n \n ) : null}\n\n \n {currentViewMode === \"card\" && cardRenderer ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n \n \n \n );\n };\n}\n\nfunction runDataTableAction(\n action: () => void | Promise,\n context: Omit, \"error\">,\n onActionError: DataTableProps[\"onActionError\"],\n) {\n let result: void | Promise;\n try {\n result = action();\n } catch (error) {\n onActionError?.({ ...context, error });\n return;\n }\n\n void Promise.resolve(result).catch((error: unknown) => {\n onActionError?.({ ...context, error });\n });\n}\n\nfunction useDataTableStateSliceChange(\n key: K,\n onLegacyChange:\n | ((value: Exclude) => void)\n | undefined,\n onStateChange: DataTableProps[\"onStateChange\"],\n) {\n const handleChange = React.useCallback(\n (value: Exclude) => {\n onLegacyChange?.(value);\n onStateChange?.((current) => ({\n ...current,\n [key]: value,\n }));\n },\n [key, onLegacyChange, onStateChange],\n );\n\n return onLegacyChange || onStateChange ? handleChange : undefined;\n}\n\nfunction useDataTableStateConflictWarnings(\n state: Partial | undefined,\n legacySlices: Record,\n) {\n const warnedSlicesRef = React.useRef(new Set());\n\n React.useEffect(() => {\n if (!state || !isDevelopmentEnvironment()) {\n return;\n }\n\n for (const key of Object.keys(legacySlices) as Array<\n keyof DataTableState\n >) {\n if (\n state[key] === undefined ||\n !legacySlices[key] ||\n warnedSlicesRef.current.has(key)\n ) {\n continue;\n }\n\n warnedSlicesRef.current.add(key);\n console.warn(\n `[data-table-pro] Both state.${key} and its legacy controlled prop were provided. The legacy prop takes precedence during the 4.x compatibility window.`,\n );\n }\n }, [legacySlices, state]);\n}\n\nfunction isDevelopmentEnvironment() {\n const nodeEnvironment = (\n globalThis as {\n process?: { env?: { NODE_ENV?: string } };\n }\n ).process?.env?.NODE_ENV;\n\n return nodeEnvironment !== \"production\";\n}\n\nfunction cloneDataTableState(state: DataTableState): DataTableState {\n return {\n sorting: state.sorting.map((item) => ({ ...item })),\n pagination: { ...state.pagination },\n rowSelection: { ...state.rowSelection },\n columnVisibility: { ...state.columnVisibility },\n columnFilters: state.columnFilters.map((item) => ({ ...item })),\n expanded:\n typeof state.expanded === \"boolean\"\n ? state.expanded\n : { ...state.expanded },\n grouping: [...(state.grouping ?? [])],\n columnOrder: [...state.columnOrder],\n columnPinning: {\n left: state.columnPinning.left\n ? [...state.columnPinning.left]\n : undefined,\n right: state.columnPinning.right\n ? [...state.columnPinning.right]\n : undefined,\n },\n rowPinning: {\n top: [...state.rowPinning.top],\n bottom: [...state.rowPinning.bottom],\n },\n columnSizing: { ...state.columnSizing },\n density: state.density,\n viewMode: state.viewMode,\n showHiddenRows: state.showHiddenRows,\n globalFilter: state.globalFilter,\n };\n}\n\nfunction scrollDataTableElementIntoView(\n container: HTMLDivElement | null,\n kind: \"row\" | \"column\",\n value: string,\n) {\n if (!container) {\n return false;\n }\n\n const attribute = kind === \"row\" ? \"data-row-id\" : \"data-column-id\";\n const element = Array.from(\n container.querySelectorAll(`[${attribute}]`),\n ).find((candidate) => candidate.getAttribute(attribute) === value);\n if (!element) {\n return false;\n }\n\n element.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" });\n return true;\n}\n\nfunction isDataTableEditableClipboardTarget(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n return (\n target.isContentEditable ||\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-YKVWP3UJ.js b/dist/chunk-YKVWP3UJ.js new file mode 100644 index 0000000..cf5645f --- /dev/null +++ b/dist/chunk-YKVWP3UJ.js @@ -0,0 +1,2 @@ +import {d,A,y,x,z,k}from'./chunk-YWMYYP3I.js';import {c,t,i}from'./chunk-CVR2ZXHQ.js';import {h,g,f}from'./chunk-7IWMFF7E.js';import {a}from'./chunk-XTVBESM5.js';import*as E from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {flexRender}from'@tanstack/react-table';function mt({columns:e,editableRows:a,onError:s}){let[o,n]=E.useState(null),[u,g]=E.useState({}),T=E.useRef(u),[h,t]=E.useState({}),[I,c]=E.useState({}),[A,x]=E.useState(false),B=E.useMemo(()=>!Ka(u,h),[u,h]);E.useEffect(()=>{T.current=u;},[u]);let S=E.useCallback(()=>{n(null),g({}),c({}),t({});},[]),V=E.useCallback((H,b)=>{let k=a?.getInitialValues?.(H)??Aa(H,e);t({...k}),g(k),c({}),n(b);},[e,a]),_=E.useCallback(async H=>{if(!a)return false;x(true);let b={...T.current},k;try{let G=await a.validateRow?.(H,b),r=Ga(G);if(Object.keys(r).length>0)return c(r),!1;c({});let z=a.onOptimisticUpdate?.(H,b);return k=typeof z=="function"?z:void 0,await a.onSaveRow(H,b),a.onSaveSuccess?.(H,b),E.startTransition(S),!0}catch(G){try{k?.();}catch{}return a.onSaveError?.(G,H,b),s?.(G,H),false}finally{x(false);}},[S,a,s]),W=E.useCallback(H=>{c(b=>{if(!b[H]&&!b._row)return b;let k={...b};return delete k[H],delete k._row,k});},[]);return {cancelEditing:S,clearEditError:W,draftValues:u,editErrors:I,editingRowId:o,isEditDirty:B,isSavingEdit:A,saveEdit:_,setDraftValues:g,setEditingRowId:n,startEditingRow:V}}function Aa(e,a){return k(a).reduce((s,{column:o})=>("accessorKey"in o&&typeof o.accessorKey=="string"&&(s[o.accessorKey]=e[o.accessorKey]),s),{})}function pa(e,a,s,o,n){let{Checkbox:u,Input:g}=o,T=e.column.columnDef,h=T.meta,t="accessorKey"in T&&typeof T.accessorKey=="string"?T.accessorKey:e.column.id,I=a[t],c=n?.errors[t]??n?.errors[e.column.id]??n?.errors._row,A=S=>{n?.onValueChange(t),s(V=>({...V,[t]:S}));},x=S=>{S.key==="Escape"&&n?.cancelOnEscape?(S.preventDefault(),n.cancel()):S.key==="Enter"&&!S.shiftKey&&n?.commitOnEnter&&(S.preventDefault(),n.commit());};if(h?.renderEditCell)return h.renderEditCell({cell:e,row:e.row.original,value:e.getValue(),draftValue:I,error:c,isDirty:n?.isDirty??false,isPending:n?.isPending??false,setDraftValue:A});let B=za(h?.type,I);return typeof I=="boolean"?jsxs("div",{className:"min-w-0",children:[jsx(u,{"aria-invalid":!!c||void 0,checked:I,disabled:n?.isPending,onCheckedChange:S=>{A(S===true);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]}):jsxs("div",{className:"min-w-0",children:[jsx(g,{"aria-invalid":!!c||void 0,disabled:n?.isPending,type:B,value:h?.formatEditValue?h.formatEditValue(I,e):Ma(I,B),onChange:S=>{let V=S.target.value,_=h?.parseEditValue?h.parseEditValue(V,e):Va(V,B,I);A(_);},onKeyDown:x}),c?jsx("span",{className:"mt-1 block text-xs text-destructive",role:"alert",children:c}):null]})}function Ga(e){return e?typeof e=="string"?{_row:e}:e:{}}function Ka(e,a){let s=new Set([...Object.keys(e),...Object.keys(a)]);return Array.from(s).every(o=>Object.is(e[o],a[o]))}function za(e,a){return e==="numeric"||typeof a=="number"?"number":e==="date"||a instanceof Date?"datetime-local":"text"}function Ma(e,a="text"){return e==null?"":e instanceof Date?a==="datetime-local"?e.toISOString().slice(0,16):e.toISOString():typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):""}function Va(e,a,s){return a==="number"?e===""?null:Number(e):a==="datetime-local"?e?s instanceof Date?new Date(e):e:null:e}var Ta=E.createContext(void 0);function Dt({children:e,measureRow:a}){return jsx(Ta.Provider,{value:a,children:e})}function Ca(){return E.useContext(Ta)}function ze(e,a$1,s){let o=e.column.columnDef,n=o.meta,u=e.getValue(),g=s?.hasCustomCell??false,T=g&&o.cell?flexRender(o.cell,e):void 0,h=va(T),t=Ua({context:e,useCustomOverflowDefaults:s?.useCustomOverflowDefaults??false,value:u});if(n?.type==="date"&&!g)return jsxs("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(ya(t),"flex w-full min-w-0 items-center justify-end gap-2"),children:[jsx(i,{className:a("shrink-0",a$1?.mutedText??"opacity-70")}),jsx("span",{className:"min-w-0 truncate",children:Ba(u)})]});let I=T!=null&&T!==""?T:u==null||u===""?jsx("span",{className:a$1?.mutedText??"opacity-70",children:"-"}):Fa(u);return jsx("div",{"data-dtp-slot":"data-table-cell-content","data-dtp-overflow":t,className:a(ya(t),"w-full min-w-0 max-w-full",h&&"[&>*]:max-w-full [&>*]:min-w-0"),children:I})}function Ua({context:e,useCustomOverflowDefaults:a,value:s}){let o=e.column.columnDef,n=typeof o.meta?.overflow=="function"?o.meta.overflow({row:e.row.original,value:s}):o.meta?.overflow;return n||(a?"clip":"truncate")}function ya(e){switch(e){case "clip":return "block overflow-hidden whitespace-nowrap";case "wrap":return "block overflow-hidden whitespace-normal break-words";case "visible":return "block overflow-visible whitespace-normal";default:return "block overflow-hidden text-ellipsis whitespace-nowrap"}}function va(e){return e==null?false:E.isValidElement(e)||Array.isArray(e)||typeof e=="object"}function Ba(e){return typeof e=="number"?new Date(e*1e3).toLocaleString():typeof e=="string"&&e?e:"-"}function Fa(e){if(e instanceof Date)return e.toLocaleString();if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return "-"}}function qa({columnLayouts:e,components:a$1,currentDensity:s,draftValues:o,editingContext:n,dragAndDrop:u,explicitCustomCellColumnIds:g$1,getRowClassName:T,groupToggleLabel:h$1,gridMode:t,gridRowAriaIndex:I,gridRowIndex:c,activeGridCell:A$1,cellSelectionEnabled:x,isGridCellSelected:B,onGridCellFocus:S,onGridCellKeyDown:V,onGridCellPointerDown:_,onGridCellPointerEnter:W,isDraggable:H,isDetailExpanded:b,isEditing:k,isExpanded:G,isInitialLoadingRow:r,isSelected:z,loadingState:M,onRowClick:j,pinnedPosition:d$1,originalRow:D,detailPanel:$,row:C,rowIndex:O,setDraftValues:ye,stripedRows:ce,uiClassNames:K,visibleCells:me,visibleLeafColumnCount:ae}){let{Checkbox:Oe,Input:X,Skeleton:le,TableCell:we,TableRow:Re}=a$1,J=Ca(),he=d$1?void 0:J,Ue=me.find(m=>!e.get(m.column.id)?.isUtilityColumn)?.column.id,Se=me.findIndex(m=>m.column.id==="__spacer__");return jsxs(E.Fragment,{children:[jsx(Re,{ref:he,"data-row-id":C.id,"data-index":he?O:void 0,"data-tree-depth":!r&&C.depth>0?C.depth:void 0,"data-dtp-slot":d$1?"data-table-pinned-row":"data-table-row","data-row-pinned":d$1,"data-row-grouped":C.getIsGrouped()||void 0,draggable:r?false:H,"data-loading":M?.isLoading||void 0,"data-row-index":r?void 0:O,"data-row-parity":ce&&!r?O%2===0?"odd":"even":void 0,"data-state":r?void 0:z?"selected":void 0,role:t?"row":void 0,"aria-rowindex":t?I:void 0,tabIndex:!t&&j&&!r?0:void 0,className:a(!r&&T?.(D,{row:D,rowId:C.id,rowIndex:O,isEditing:k,isExpanded:G,isLoading:!!M?.isLoading,isSelected:z,pinnedPosition:d$1??false}),K.row,d$1==="top"&&a("border-b-2",K.rowPinnedTop),d$1==="bottom"&&a("border-t-2",K.rowPinnedBottom),ce&&!r&&(O%2===0?K.rowOdd:K.rowEven),z&&!r&&K.rowSelected,j&&!r&&"cursor-pointer",r&&"pointer-events-none"),onClick:m=>{r||y(m.target,m.currentTarget)||t&&x||j?.({row:D,rowId:C.id});},onKeyDown:m=>{r||!j||m.key!=="Enter"&&m.key!==" "||y(m.target,m.currentTarget)||(m.preventDefault(),j({row:D,rowId:C.id}));},onDragStart:m=>{r||u?.onRowDragStart?.({row:D,rowId:C.id,event:m});},onDragEnd:m=>{r||u?.onRowDragEnd?.({row:D,rowId:C.id,event:m});},children:me.map((m,F)=>{let q=m.column.columnDef.meta,Q=m.getContext(),ve=m.getValue(),U=e.get(m.column.id),fe=U?.isSelectionColumn??false,Y=U?.isExpansionColumn??false,v=U?.isActionsColumn??false,P=U?.isSpacerColumn??false,Be=F+1-(Se>=0&&SeS({row:c,column:F}):void 0,onKeyDown:t&&!P?L=>{if(L.target!==L.currentTarget){L.key==="Escape"&&(L.preventDefault(),L.currentTarget.focus());return}V(L,c,F);}:void 0,onPointerDown:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||(L.currentTarget.focus(),_(L,c,F));}:void 0,onPointerEnter:t&&x&&!U?.isUtilityColumn&&!P?L=>{y(L.target,L.currentTarget)||W(L,c,F);}:void 0,className:a("border-b",A(s),K.cellBorder,te&&K.cellSelected,U?.utilityClassName,U?.isSpacerColumn&&"border-b-0 bg-transparent! p-0",U?.pinnedClassName,Fe,g(Q),q?.responsiveClassName,We),style:U?.cellStyle,children:jsx("div",{"data-row-click-ignore":fe||Y||v||P?"true":void 0,className:"min-w-0 max-w-full",style:C.depth>0&&m.column.id===Ue?{paddingInlineStart:`${C.depth}rem`}:void 0,children:P?null:M?.isLoading?q?.skeleton?.(Q)??M.skeleton??jsx(le,{className:a("h-4 rounded",q?.type==="numeric"?"ml-auto w-16":q?.type==="date"?"ml-auto w-28":"w-full")}):k&&m.column.id!=="__select__"&&m.column.id!=="__expand__"&&m.column.id!=="__actions__"?pa(Q,o,ye,{Checkbox:Oe,Input:X},n?{cancel:n.cancel,cancelOnEscape:n.cancelOnEscape,commit:()=>n.commit(D),commitOnEnter:n.commitOnEnter,errors:n.errors,isDirty:n.isDirty,isPending:n.isPending,onValueChange:n.clearError}:void 0):C.getIsGrouped()&&m.getIsPlaceholder()?null:C.getIsGrouped()&&m.getIsGrouped()?jsxs("button",{type:"button",className:"inline-flex min-w-0 items-center gap-1 text-left font-medium",onClick:()=>C.toggleExpanded(),"aria-expanded":C.getIsExpanded(),"aria-label":h$1,children:[jsx("span",{"aria-hidden":"true",children:ze(Q,K,{hasCustomCell:g$1.has(m.column.id),useCustomOverflowDefaults:g$1.has(m.column.id)})}),jsxs("span",{className:"shrink-0 opacity-70",children:["(",C.subRows.length,")"]})]}):C.getIsGrouped()&&m.getIsAggregated()?m.column.columnDef.aggregatedCell?flexRender(m.column.columnDef.aggregatedCell,Q):ze(Q,K,{hasCustomCell:false,useCustomOverflowDefaults:false}):ze(Q,K,{hasCustomCell:g$1.has(m.column.id)||fe||Y||v||P,useCustomOverflowDefaults:g$1.has(m.column.id)||fe||Y||v||P})})},m.id)})}),!r&&$&&b?jsx(Re,{"data-dtp-slot":"data-table-detail-panel-row","data-row-pinned":d$1,children:jsx(we,{colSpan:Math.max(1,ae),className:a("border-b",A(s),K.cellBorder),children:$.render({row:D,rowId:C.id,tableRow:C})})}):null]})}function $a(e,a){return e.row.id===a.row.id&&e.row.original===a.row.original&&e.rowIndex===a.rowIndex&&e.isSelected===a.isSelected&&e.isInitialLoadingRow===a.isInitialLoadingRow&&e.isEditing===a.isEditing&&(!e.isEditing||e.editingContext===a.editingContext)&&e.isExpanded===a.isExpanded&&e.isDraggable===a.isDraggable&&Xa(e.loadingState,a.loadingState)&&Ja(e.visibleCells,a.visibleCells)&&e.components===a.components&&Qa(e.columnLayouts,a.columnLayouts,a.visibleCells)&&e.currentDensity===a.currentDensity&&e.detailPanel===a.detailPanel&&e.isDetailExpanded===a.isDetailExpanded&&e.pinnedPosition===a.pinnedPosition&&e.onRowClick===a.onRowClick&&e.dragAndDrop===a.dragAndDrop&&e.getRowClassName===a.getRowClassName&&e.groupToggleLabel===a.groupToggleLabel&&e.gridMode===a.gridMode&&(!a.gridMode||e.gridRowAriaIndex===a.gridRowAriaIndex&&e.gridRowIndex===a.gridRowIndex&&e.activeGridCell.row===a.activeGridCell.row&&e.activeGridCell.column===a.activeGridCell.column&&e.cellSelectionEnabled===a.cellSelectionEnabled&&e.isGridCellSelected===a.isGridCellSelected&&e.onGridCellFocus===a.onGridCellFocus&&e.onGridCellKeyDown===a.onGridCellKeyDown&&e.onGridCellPointerDown===a.onGridCellPointerDown&&e.onGridCellPointerEnter===a.onGridCellPointerEnter)&&e.stripedRows===a.stripedRows&&e.uiClassNames===a.uiClassNames&&e.explicitCustomCellColumnIds===a.explicitCustomCellColumnIds&&(!e.isEditing||e.draftValues===a.draftValues)}function Xa(e,a){return e?.isLoading===a?.isLoading&&e?.skeleton===a?.skeleton}function Ja(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.column.id===s.column.id})}function Qa(e,a,s){return s.every(o=>{let n=e.get(o.column.id),u=a.get(o.column.id);return n?.fixedSide===u?.fixedSide&&n?.isActionsColumn===u?.isActionsColumn&&n?.isExpansionColumn===u?.isExpansionColumn&&n?.isSelectionColumn===u?.isSelectionColumn&&n?.isSpacerColumn===u?.isSpacerColumn&&n?.isUtilityColumn===u?.isUtilityColumn&&n?.pinnedClassName===u?.pinnedClassName&&n?.utilityClassName===u?.utilityClassName&&Ya(n?.cellStyle,u?.cellStyle)})}function Ya(e,a){return e?.width===a?.width&&e?.minWidth===a?.minWidth&&e?.maxWidth===a?.maxWidth&&e?.left===a?.left&&e?.right===a?.right}var Ra=E.memo(qa,$a);function Za({columnGroupHeaderHeight:e,currentDensity:a$1,currentSorting:s,dir:o,draggedColumnIdRef:n,enableColumnReordering:u,enableColumnResizing:g,gridColumnIndex:T,gridMode:h$1,header:t$1,headerGroupHeaders:I,layout:c$1,primeColumnForResize:A,reorderColumn:x$1,resizeColumnLabel:B,resetColumnSize:S,TableHead:V,uiClassNames:_}){let W=t$1.column.columnDef.meta,H=E.useId(),b=!t$1.isPlaceholder&&t$1.subHeaders.length>0,k=b?t$1.column.columnDef:void 0,G=t$1.column.getCanSort(),r=t$1.column.getIsSorted(),z$1=s.findIndex(d=>d.id===t$1.column.id),M=u&&!t$1.isPlaceholder&&!b&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn,j=h(W?.hideOn);return jsxs(V,{colSpan:t$1.colSpan,scope:t$1.isPlaceholder||c$1.isSpacerColumn?void 0:b?"colgroup":"col",role:h$1?c$1.isSpacerColumn?"presentation":"columnheader":void 0,"aria-colindex":h$1&&!c$1.isSpacerColumn?T:void 0,"aria-hidden":t$1.isPlaceholder||c$1.isSpacerColumn||void 0,"aria-description":b?k?.description:void 0,"aria-labelledby":!t$1.isPlaceholder&&!c$1.isUtilityColumn&&!c$1.isSpacerColumn?H:void 0,"data-column-id":t$1.column.id,"data-column-group-id":b?k?.id:void 0,"data-header-depth":t$1.depth,"data-dtp-slot":b?"data-table-column-group-header":"data-table-column-header",className:a("relative border-b",z(a$1),b&&_.columnGroupHeader,c$1.utilityClassName,c$1.isSpacerColumn&&"border-b-0 bg-transparent! p-0",c$1.pinnedClassName,j,f(t$1.getContext()),W?.headerClassName,b&&k?.headerClassName,W?.responsiveClassName),style:{...W?.headerStyle,...b?k?.headerStyle:void 0,...b&&(k?.headerHeight??e)!==void 0?{height:k?.headerHeight??e}:void 0,...c$1.headerStyle},title:b?k?.description:void 0,"aria-sort":r==="asc"?"ascending":r==="desc"?"descending":G?"none":void 0,draggable:M,tabIndex:M&&!G&&!(g&&t$1.column.getCanResize())?0:void 0,onDragStart:M?d=>{n.current=t$1.column.id,d.dataTransfer.effectAllowed="move";}:void 0,onDragOver:M?d=>{d.preventDefault(),d.dataTransfer.dropEffect="move";}:void 0,onDrop:M?d=>{d.preventDefault();let D=n.current;n.current=null,D&&x$1(D,t$1.column.id);}:void 0,onKeyDown:M?d=>{if(!d.altKey||d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault();let D=I.filter(O=>!x(O.column.id)&&O.column.id!=="__spacer__"),$=D.findIndex(O=>O.column.id===t$1.column.id),C=D[d.key==="ArrowLeft"!=(o==="rtl")?$-1:$+1];C&&x$1(t$1.column.id,C.column.id);}:void 0,children:[t$1.isPlaceholder?null:G?jsxs("button",{type:"button",className:a("flex w-full items-center gap-2 font-medium",f(t$1.getContext())),onClick:t$1.column.getToggleSortingHandler(),children:[jsx("span",{id:H,className:"truncate",children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),r?jsxs(Fragment,{children:[jsx(c,{className:a("size-4 shrink-0 transition-transform",r==="desc"?"rotate-0":"rotate-180")}),s.length>1&&z$1>=0?jsx("span",{className:"inline-flex size-4 shrink-0 items-center justify-center rounded-full text-[10px] leading-none",children:z$1+1}):null]}):jsx(t,{className:a("size-4 shrink-0",_.headerSortIcon??"opacity-70")})]}):c$1.isUtilityColumn||c$1.isSpacerColumn?flexRender(t$1.column.columnDef.header,t$1.getContext()):jsx("span",{id:H,children:flexRender(t$1.column.columnDef.header,t$1.getContext())}),g&&!t$1.isPlaceholder&&t$1.column.getCanResize()?jsx("div",{"aria-label":B,"aria-orientation":"vertical","aria-valuemax":tt(t$1),"aria-valuemin":at(t$1),"aria-valuenow":Math.round(t$1.getSize()),role:"separator",tabIndex:0,onDoubleClick:()=>{for(let d of ie(t$1))S(d.column.id);},onMouseDown:d=>{for(let D of ie(t$1))A(D.column.id,D.getSize());t$1.getResizeHandler()(d);},onTouchStart:d=>{for(let D of ie(t$1))A(D.column.id,D.getSize());t$1.getResizeHandler()(d);},onKeyDown:d=>{if(d.altKey)return;if(d.key==="Home"){d.preventDefault();for(let $ of ie(t$1))S($.column.id);return}if(d.key!=="ArrowLeft"&&d.key!=="ArrowRight")return;d.preventDefault(),d.stopPropagation();let D=d.key==="ArrowRight"!=(o==="rtl");nt(t$1,(D?1:-1)*(d.shiftKey?25:10));},className:a("absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2",_.resizeHandle??"after:bg-current after:opacity-20 hover:after:opacity-70",t$1.column.getIsResizing()&&(_.resizeHandleActive??"after:opacity-100"))}):null]},t$1.id)}function et(e,a){return e.header.id===a.header.id&&e.header.column.id===a.header.column.id&&e.header.column.columnDef===a.header.column.columnDef&&e.header.colSpan===a.header.colSpan&&e.header.isPlaceholder===a.header.isPlaceholder&<(e.header,a.header)&&e.currentDensity===a.currentDensity&&e.columnGroupHeaderHeight===a.columnGroupHeaderHeight&&e.dir===a.dir&&e.enableColumnReordering===a.enableColumnReordering&&e.enableColumnResizing===a.enableColumnResizing&&e.gridMode===a.gridMode&&e.gridColumnIndex===a.gridColumnIndex&&e.TableHead===a.TableHead&&e.uiClassNames===a.uiClassNames&&e.draggedColumnIdRef===a.draggedColumnIdRef&&e.primeColumnForResize===a.primeColumnForResize&&e.reorderColumn===a.reorderColumn&&e.resizeColumnLabel===a.resizeColumnLabel&&e.resetColumnSize===a.resetColumnSize&&e.selectionState===a.selectionState&&ot(e.currentSorting,a.currentSorting)&&rt(e.headerGroupHeaders,a.headerGroupHeaders)&&it(e.layout,a.layout)}function ie(e){return e.subHeaders.length?e.getLeafHeaders().filter(a=>!a.subHeaders.length):[e]}function at(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.minSize??20),0)}function tt(e){return ie(e).reduce((a,s)=>a+(s.column.columnDef.maxSize??Number.MAX_SAFE_INTEGER),0)}function nt(e,a){let s=ie(e),o=a/s.length;e.getContext().table.setColumnSizing(n=>{let u={...n};for(let g of s){let T=g.column,h=T.columnDef.minSize??20,t=T.columnDef.maxSize??Number.MAX_SAFE_INTEGER;u[T.id]=Math.min(t,Math.max(h,T.getSize()+o));}return u});}function lt(e,a){return e.subHeaders.length===a.subHeaders.length&&e.subHeaders.every((s,o)=>a.subHeaders[o]?.id===s.id)}function ot(e,a){return e.length===a.length&&e.every((s,o)=>{let n=a[o];return n?.id===s.id&&n.desc===s.desc})}function rt(e,a){return e.length===a.length&&e.every((s,o)=>a[o]?.id===s.id)}function it(e,a){return e.fixedSide===a.fixedSide&&e.isSpacerColumn===a.isSpacerColumn&&e.isUtilityColumn===a.isUtilityColumn&&e.pinnedClassName===a.pinnedClassName&&e.utilityClassName===a.utilityClassName&&e.headerStyle?.width===a.headerStyle?.width&&e.headerStyle?.minWidth===a.headerStyle?.minWidth&&e.headerStyle?.maxWidth===a.headerStyle?.maxWidth&&e.headerStyle?.left===a.headerStyle?.left&&e.headerStyle?.right===a.headerStyle?.right}var ha=E.memo(Za,et);function Bt({ariaDescribedBy:e,ariaLabelledBy:a$1,bodyRowComponents:s,cellSelection:o,cellSelectionEnabled:n,columnLayouts:u,columnGroupHeaderHeight:g,currentDensity:T,currentDetailExpanded:h,currentSorting:t=[],dir:I,DataTableEmptyState:c,dragAndDrop:A,draggedColumnIdRef:x$1,draftValues:B,editingRowId:S,editingContext:V,emptyNode:_,enableColumnReordering:W,enableColumnResizing:H,explicitCustomCellColumnIds:b,fillMinWidth:k,flexGrow:G,gridMode:r,gridPageSize:z,gridRowOffset:M,onGridActiveRowIndexChange:j,onCellSelectionChange:d$1,getColumnLayout:D,getRowClassName:$,getRowLoadingState:C,infiniteScroll:O,layoutMode:ye,localSearchValue:ce,onRowClick:K,primeColumnForResize:me,renderedRows:ae,detailPanel:Oe,topPinnedRows:X,bottomPinnedRows:le,reorderColumn:we,resetColumnSize:Re,resolvedLabels:J,rowsToRender:he,ScrollArea:Ue,ScrollBar:Se,scrollbarVisibility:m,sentinelRef:F,setDraftValues:q,shouldRenderInitialLoading:Q,stateOverlayNode:ve,stickyHeader:U,stripedRows:fe,summaryRows:Y,table:v,tableClassName:P,tableContainerClassName:Be,Table:Fe,TableBody:We,TableCell:te,TableFooter:L="tfoot",TableHead:Sa,TableHeader:ka,TableRow:be,tableScrollContainerRef:je,tableScrollElement:qe,totalRowCount:na,uiClassNames:oe,virtualPaddingBottom:la,virtualPaddingTop:oa,visibleLeafColumnCount:ke,visibleLeafColumns:ne}){let Ea=v.getIsAllPageRowsSelected()?true:v.getIsSomePageRowsSelected()?"indeterminate":false,ra=v.getFilteredRowModel().rows,Ha=E.useMemo(()=>Y.length?ra.map(l=>l.original):[],[ra,Y.length]),Ee=v.getHeaderGroups().length,He=X.length+ae.length+le.length,[De,ia]=E.useState({row:0,column:0}),sa=E.useRef(false),$e=E.useRef(false),ge=E.useMemo(()=>[...X,...ae,...le],[le,ae,X]),se=E.useMemo(()=>ne.flatMap((l,i)=>l.id==="__spacer__"?[]:[i]),[ne]),pe=E.useCallback((l,i)=>{let f=ge[l],p=ne[i];return f&&p&&!x(p.id)&&p.id!=="__spacer__"?{rowId:f.id,columnId:p.id}:void 0},[ge,ne]),de=E.useMemo(()=>{if(!o)return;let l=ge.findIndex(y=>y.id===o.anchor.rowId),i=ge.findIndex(y=>y.id===o.focus.rowId),f=ne.findIndex(y=>y.id===o.anchor.columnId),p=ne.findIndex(y=>y.id===o.focus.columnId);if(!(l<0||i<0||f<0||p<0))return {firstRow:Math.min(l,i),lastRow:Math.max(l,i),firstColumn:Math.min(f,p),lastColumn:Math.max(f,p)}},[o,ge,ne]),Pa=E.useCallback((l,i)=>!!(de&&l>=de.firstRow&&l<=de.lastRow&&i>=de.firstColumn&&i<=de.lastColumn),[de]),Na=E.useCallback(l=>{sa.current=true,ia(l);},[]),Pe=E.useCallback((l,i,f)=>{if(!n)return;let p=pe(l,i);if(!p)return;let y=f&&o?.anchor?o.anchor:p;d$1({anchor:y,focus:p});},[o,n,pe,d$1]),Ia=E.useCallback((l,i,f)=>{!n||l.button!==0||(l.preventDefault(),$e.current=true,Pe(i,f,l.shiftKey));},[n,Pe]),La=E.useCallback((l,i,f)=>{!n||!$e.current||l.buttons!==1||Pe(i,f,true);},[n,Pe]);E.useEffect(()=>{let l=()=>{$e.current=false;};return window.addEventListener("pointerup",l),()=>window.removeEventListener("pointerup",l)},[]),E.useEffect(()=>{if(!r)return;j?.(De.row);let l=requestAnimationFrame(()=>{let i=je.current?.querySelectorAll('[data-dtp-grid-cell="true"]'),f=Array.from(i??[]).find(p=>Number(p.dataset.gridRowIndex)===De.row&&Number(p.dataset.gridColumnIndex)===De.column);f&&sa.current&&f.focus();});return ()=>cancelAnimationFrame(l)},[De,r,j,je]);let xa=E.useCallback((l,i,f)=>{if(l.defaultPrevented||l.target!==l.currentTarget)return;let p=Math.max(1,z??(Math.floor((qe?.clientHeight||0)/Math.max(1,qe?.querySelector("tr")?.offsetHeight||48))||10)),y=Math.max(0,He-1),Z=Math.max(0,se.indexOf(f)),Ne=Math.max(0,se.length-1),ee=i,Te=Z;switch(l.key){case "ArrowUp":ee--;break;case "ArrowDown":ee++;break;case "ArrowLeft":Te--;break;case "ArrowRight":Te++;break;case "Home":(l.ctrlKey||l.metaKey)&&(ee=0),Te=0;break;case "End":(l.ctrlKey||l.metaKey)&&(ee=y),Te=Ne;break;case "PageUp":ee-=p;break;case "PageDown":ee+=p;break;default:return}l.preventDefault();let Je={row:Math.min(y,Math.max(0,ee)),column:se[Math.min(Ne,Math.max(0,Te))]??0};if(ia(Je),l.shiftKey&&n){let Qe=pe(Je.row,Je.column),da=o?.anchor??pe(i,f)??Qe;da&&Qe&&d$1({anchor:da,focus:Qe});}},[o,n,He,pe,z,se,d$1,qe]),Xe=(l,i,f)=>{let p=l.original,y=d(p),Z=y?{isLoading:true}:C?.(p,i),Ne=typeof Z=="boolean"?{isLoading:Z}:Z,ee=y?false:A?.getRowDraggable?.(p)??false;return jsx(Ra,{columnLayouts:u,components:s,currentDensity:T,draftValues:B,editingContext:V,dragAndDrop:A,explicitCustomCellColumnIds:b,getRowClassName:$,groupToggleLabel:l.getIsExpanded()?J.collapseRow:J.expandRow,isDraggable:ee,isDetailExpanded:h===true||!!h[l.id],isEditing:S===l.id,isExpanded:l.getIsExpanded(),isInitialLoadingRow:y,isSelected:l.getIsSelected(),loadingState:Ne,onRowClick:K,originalRow:p,pinnedPosition:f,detailPanel:Oe,row:l,rowIndex:i,setDraftValues:q,stripedRows:fe,uiClassNames:oe,visibleCells:l.getVisibleCells(),visibleLeafColumnCount:ke,gridMode:r,gridRowIndex:i,gridRowAriaIndex:Ee+M+i+1,activeGridCell:De,cellSelectionEnabled:n,isGridCellSelected:Pa,onGridCellFocus:Na,onGridCellKeyDown:xa,onGridCellPointerDown:Ia,onGridCellPointerEnter:La},`${f??"center"}-${l.id}`)};return jsxs("div",{"data-dtp-slot":"data-table-table-shell",className:a("relative box-border border-2 border-transparent transition-colors",G?"flex min-h-0 flex-1 flex-col":"h-full",A?.isDragging&&(oe.dragActive??"rounded-md border-dashed")),children:[jsx("div",{ref:je,className:a(G?"flex min-h-0 flex-1 flex-col":"h-full"),children:jsxs(Ue,{type:m,className:a("rounded-md border",G?"min-h-0 flex-1":"h-full",oe.tableContainer,oe.tableScrollArea,Be),children:[jsx("div",{className:"min-h-full",children:jsxs(Fe,{"aria-describedby":e,"aria-labelledby":a$1,role:r?"grid":void 0,"aria-colcount":r?se.length:void 0,"aria-rowcount":r?Ee+(na??He)+Y.length:void 0,className:a("w-full table-fixed border-separate border-spacing-0",P),style:{minWidth:ye==="fill"&&k||void 0,width:ye==="fit"?v.getTotalSize():"100%"},children:[jsx("colgroup",{children:v.getVisibleLeafColumns().map(l=>{let i=D(l.id);return jsx("col",{style:i.colStyle},l.id)})}),jsx(ka,{role:r?"rowgroup":void 0,className:a(U?oe.tableStickyHeader??"sticky top-0 z-30 backdrop-blur":void 0),children:v.getHeaderGroups().map(l=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?l.depth+1:void 0,children:l.headers.map(i=>jsx(ha,{columnGroupHeaderHeight:g,currentDensity:T,currentSorting:t,dir:I,draggedColumnIdRef:x$1,enableColumnReordering:W,enableColumnResizing:H,header:i,headerGroupHeaders:l.headers,layout:dt(i,D),primeColumnForResize:me,reorderColumn:we,resizeColumnLabel:J.resizeColumn(typeof i.column.columnDef.header=="string"?i.column.columnDef.header:i.column.id),resetColumnSize:Re,selectionState:i.column.id==="__select__"?Ea:void 0,TableHead:Sa,uiClassNames:oe,gridMode:r,gridColumnIndex:i.isPlaceholder||i.subHeaders.length||i.column.id==="__spacer__"?void 0:v.getVisibleLeafColumns().filter(f=>f.id!=="__spacer__").findIndex(f=>f.id===i.column.id)+1},i.id))},l.id))}),jsx(We,{role:r?"rowgroup":void 0,children:X.length||ae.length||le.length?jsxs(Fragment,{children:[X.map((l,i)=>Xe(l,i,"top")),oa>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:oa}})}):null,he.map(({row:l,rowIndex:i})=>Xe(l,i+X.length)),la>0?jsx(be,{"aria-hidden":"true",role:r?"presentation":void 0,children:jsx(te,{colSpan:Math.max(1,ke),className:"border-b-0 p-0",style:{height:la}})}):null,le.map((l,i)=>Xe(l,X.length+ae.length+i,"bottom"))]}):jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+1:void 0,children:jsx(te,{role:r?"gridcell":void 0,"aria-colindex":r?1:void 0,colSpan:Math.max(1,ke),className:"h-full grow",children:jsx("div",{className:"flex h-full min-h-full w-full grow items-center justify-center",children:_??jsx(c,{title:ce?J.noMatchingRowsTitle:J.noRowsTitle,description:ce?J.noMatchingRowsDescription:J.noRowsDescription})})})})}),Y.length?jsx(L,{role:r?"rowgroup":void 0,children:Y.map((l,i)=>jsx(be,{role:r?"row":void 0,"aria-rowindex":r?Ee+(na??He)+i+1:void 0,children:ne.map((f,p)=>{let y=D(f.id),Z=y.isSpacerColumn?null:l.cells[f.id]??(p===0?l.label:null);return jsx(te,{"data-column-id":f.id,role:r?y.isSpacerColumn?"presentation":"gridcell":void 0,"aria-colindex":r&&!y.isSpacerColumn?se.indexOf(p)+1:void 0,"aria-hidden":y.isSpacerColumn||void 0,className:a(y.isSpacerColumn?"border-b-0 bg-transparent! p-0":"border-b font-medium",!y.isSpacerColumn&&oe.cellBorder),style:y.cellStyle,children:typeof Z=="function"?Z({rows:Ha,columnId:f.id}):Z},`${l.key}-${f.id}`)})},l.key))}):null]})}),O?.enabled&&ae.length&&!Q?jsx("div",{className:"px-4 pb-4",children:jsx("div",{ref:F,className:"h-4 w-full"})}):null,jsx(Se,{orientation:"horizontal"})]})}),ve]})}function dt(e,a){let s=a(e.column.id);if(e.isPlaceholder||!e.subHeaders.length)return s;let o=e.getLeafHeaders().filter(g=>!g.subHeaders.length).map(g=>a(g.column.id)),n=o[0]?.fixedSide;if(!n||!o.every(g=>g.fixedSide===n))return s;let u=n==="left"?o[0]:o.at(-1);return {...s,fixedSide:n,headerStyle:u?.headerStyle?{left:u.headerStyle.left,right:u.headerStyle.right}:void 0,pinnedClassName:u?.pinnedClassName}}export{mt as a,Dt as b,Ra as c,ha as d,Bt as e};//# sourceMappingURL=chunk-YKVWP3UJ.js.map +//# sourceMappingURL=chunk-YKVWP3UJ.js.map \ No newline at end of file diff --git a/dist/chunk-YKVWP3UJ.js.map b/dist/chunk-YKVWP3UJ.js.map new file mode 100644 index 0000000..8ba306d --- /dev/null +++ b/dist/chunk-YKVWP3UJ.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/use-row-editing.tsx","../src/core/data-table/data-table-virtual-row-measurement.tsx","../src/core/data-table/data-table-cell-content.tsx","../src/core/data-table/data-table-body-row.tsx","../src/core/data-table/data-table-header-cell.tsx","../src/core/data-table/data-table-table-panel.tsx"],"names":["useRowEditing","columns","editableRows","onError","editingRowId","setEditingRowId","N","draftValues","setDraftValues","draftValuesRef","originalDraftValues","setOriginalDraftValues","editErrors","setEditErrors","isSavingEdit","setIsSavingEdit","isEditDirty","areDraftValuesEqual","cancelEditing","startEditingRow","row","rowId","initialValues","defaultDraftValues","saveEdit","draftSnapshot","rollback","validation","validationErrors","normalizeEditValidationErrors","optimisticResult","error","clearEditError","columnId","current","next","getDataTableLeafColumns","draft","column","renderEditableCell","context","components","editing","Checkbox","Input","meta","accessorKey","draftValue","setDraftValue","value","handleKeyDown","event","inputType","getEditableInputType","jsxs","jsx","checked","getEditableInputValue","rawValue","parsedValue","parseEditableInputValue","left","right","keys","key","type","previousValue","DataTableVirtualRowMeasurementContext","Ge","DataTableVirtualRowMeasurementProvider","children","measureRow","useDataTableVirtualRowMeasurement","renderDataTableCellContent","classNames","options","hasCustomCell","renderedCellContent","flexRender","hasComplexRenderedContent","isComplexRenderedCellContent","resolvedOverflow","resolveDataTableCellOverflow","cn","getCellOverflowClassName","IconClock","formatDateValue","content","formatCellValue","useCustomOverflowDefaults","overflow","wa","DataTableBodyRowInner","columnLayouts","currentDensity","editingContext","dragAndDrop","explicitCustomCellColumnIds","getRowClassName","groupToggleLabel","gridMode","gridRowAriaIndex","gridRowIndex","activeGridCell","cellSelectionEnabled","isGridCellSelected","onGridCellFocus","onGridCellKeyDown","onGridCellPointerDown","onGridCellPointerEnter","isDraggable","isDetailExpanded","isEditing","isExpanded","isInitialLoadingRow","isSelected","loadingState","onRowClick","pinnedPosition","originalRow","detailPanel","rowIndex","stripedRows","uiClassNames","visibleCells","visibleLeafColumnCount","Skeleton","TableCell","TableRow","virtualRowMeasurement","measureElement","firstDataColumnId","cell","spacerColumnIndex","Me","isDataTableInteractiveTarget","columnIndex","cellContext","layout","isSelectionColumn","isExpansionColumn","isActionsColumn","isSpacerColumn","gridColumnAriaIndex","hideClassName","hideOnClassName","cellClassName","isDataTableLoadingRow","isCellSelected","getDensityCellClassName","cellAlignClassName","areDataTableBodyRowsEqual","previous","sameLoadingState","sameVisibleCells","sameColumnLayouts","index","nextCell","cells","previousLayout","nextLayout","sameCellStyle","DataTableBodyRow","DataTableHeaderCellInner","columnGroupHeaderHeight","currentSorting","dir","draggedColumnIdRef","enableColumnReordering","enableColumnResizing","gridColumnIndex","header","headerGroupHeaders","primeColumnForResize","reorderColumn","resizeColumnLabel","resetColumnSize","TableHead","headerContentId","Ve","isColumnGroup","groupDefinition","canSort","sortingState","sortingIndex","sort","canReorderColumn","getDensityHeaderClassName","headerAlignClassName","sourceColumnId","headers","item","isUtilityColumnId","currentIndex","target","Fragment","IconChevronDown","IconSelector","getHeaderMaximumSize","getHeaderMinimumSize","leafHeader","getResizableLeafHeaders","grows","resizeHeaderBy","areDataTableHeaderCellsEqual","sameSubHeaders","sameSorting","sameHeaderGroupHeaders","sameHeaderLayout","total","delta","leafHeaders","deltaPerLeaf","minimum","maximum","nextSort","DataTableHeaderCell","DataTableTablePanel","ariaDescribedBy","ariaLabelledBy","bodyRowComponents","cellSelection","currentDetailExpanded","DataTableEmptyState","emptyNode","fillMinWidth","flexGrow","gridPageSize","gridRowOffset","onGridActiveRowIndexChange","onCellSelectionChange","getColumnLayout","getRowLoadingState","infiniteScroll","layoutMode","localSearchValue","renderedRows","topPinnedRows","bottomPinnedRows","resolvedLabels","rowsToRender","ScrollArea","ScrollBar","scrollbarVisibility","sentinelRef","shouldRenderInitialLoading","stateOverlayNode","stickyHeader","summaryRows","table","tableClassName","tableContainerClassName","Table","TableBody","TableFooter","TableHeader","tableScrollContainerRef","tableScrollElement","totalRowCount","virtualPaddingBottom","virtualPaddingTop","visibleLeafColumns","selectionState","filteredRows","summarySourceRows","headerRowCount","displayRowCount","activeCell","setActiveCell","shouldRestoreGridFocusRef","pointerSelectingRef","gridRows","navigableGridColumnIndices","getGridCoordinate","selectedBounds","anchorRow","focusRow","anchorColumn","focusColumn","handleGridCellFocus","selectGridCell","extend","focus","anchor","handleGridCellPointerDown","handleGridCellPointerEnter","stopSelecting","frame","moveGridFocus","pageRows","lastRow","currentColumnPosition","lastColumnPosition","nextRow","nextColumnPosition","renderBodyRow","resolvedLoadingState","headerGroup","getHeaderLayout","summaryRow","summaryIndex","columnLayout","leafLayouts","fixedSide","edgeLayout"],"mappings":"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","file":"chunk-YKVWP3UJ.js","sourcesContent":["import * as React from \"react\";\nimport type {\n DataTableColumnDef,\n DataTableColumnType,\n DataTableEditableRowsConfig,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport { getDataTableLeafColumns } from \"./data-table-utils\";\nimport type { DataTableTanStackCellContext as CellContext } from \"./tanstack-v9\";\n\nexport function useRowEditing({\n columns,\n editableRows,\n onError,\n}: {\n columns: Array>;\n editableRows: DataTableEditableRowsConfig | undefined;\n onError?: (error: unknown, row: TData) => void;\n}) {\n const [editingRowId, setEditingRowId] = React.useState(null);\n const [draftValues, setDraftValues] = React.useState<\n Record\n >({});\n const draftValuesRef = React.useRef(draftValues);\n const [originalDraftValues, setOriginalDraftValues] = React.useState<\n Record\n >({});\n const [editErrors, setEditErrors] = React.useState>(\n {},\n );\n const [isSavingEdit, setIsSavingEdit] = React.useState(false);\n const isEditDirty = React.useMemo(\n () => !areDraftValuesEqual(draftValues, originalDraftValues),\n [draftValues, originalDraftValues],\n );\n\n React.useEffect(() => {\n draftValuesRef.current = draftValues;\n }, [draftValues]);\n\n const cancelEditing = React.useCallback(() => {\n setEditingRowId(null);\n setDraftValues({});\n setEditErrors({});\n setOriginalDraftValues({});\n }, []);\n\n const startEditingRow = React.useCallback(\n (row: TData, rowId: string) => {\n const initialValues =\n editableRows?.getInitialValues?.(row) ??\n defaultDraftValues(row, columns);\n setOriginalDraftValues({ ...initialValues });\n setDraftValues(initialValues);\n setEditErrors({});\n setEditingRowId(rowId);\n },\n [columns, editableRows],\n );\n\n const saveEdit = React.useCallback(\n async (row: TData) => {\n if (!editableRows) {\n return false;\n }\n\n setIsSavingEdit(true);\n const draftSnapshot = { ...draftValuesRef.current };\n let rollback: (() => void) | undefined;\n try {\n const validation = await editableRows.validateRow?.(\n row,\n draftSnapshot,\n );\n const validationErrors = normalizeEditValidationErrors(validation);\n if (Object.keys(validationErrors).length > 0) {\n setEditErrors(validationErrors);\n return false;\n }\n\n setEditErrors({});\n const optimisticResult = editableRows.onOptimisticUpdate?.(\n row,\n draftSnapshot,\n );\n rollback =\n typeof optimisticResult === \"function\"\n ? optimisticResult\n : undefined;\n await editableRows.onSaveRow(row, draftSnapshot);\n editableRows.onSaveSuccess?.(row, draftSnapshot);\n React.startTransition(cancelEditing);\n return true;\n } catch (error) {\n try {\n rollback?.();\n } catch {\n // Preserve the original save error for the public error callbacks.\n }\n editableRows.onSaveError?.(error, row, draftSnapshot);\n onError?.(error, row);\n return false;\n } finally {\n setIsSavingEdit(false);\n }\n },\n [cancelEditing, editableRows, onError],\n );\n const clearEditError = React.useCallback((columnId: string) => {\n setEditErrors((current) => {\n if (!current[columnId] && !current._row) {\n return current;\n }\n const next = { ...current };\n delete next[columnId];\n delete next._row;\n return next;\n });\n }, []);\n\n return {\n cancelEditing,\n clearEditError,\n draftValues,\n editErrors,\n editingRowId,\n isEditDirty,\n isSavingEdit,\n saveEdit,\n setDraftValues,\n setEditingRowId,\n startEditingRow,\n };\n}\n\nfunction defaultDraftValues(\n row: TData,\n columns: Array>,\n) {\n return getDataTableLeafColumns(columns).reduce>(\n (draft, { column }) => {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n draft[column.accessorKey] = (row as Record)[\n column.accessorKey\n ];\n }\n return draft;\n },\n {},\n );\n}\n\nexport function renderEditableCell(\n context: CellContext,\n draftValues: Record,\n setDraftValues: React.Dispatch>>,\n components: Pick,\n editing?: {\n cancel: () => void;\n commit: () => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n onValueChange: (columnId: string) => void;\n },\n) {\n const { Checkbox, Input } = components;\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const accessorKey =\n \"accessorKey\" in column && typeof column.accessorKey === \"string\"\n ? column.accessorKey\n : context.column.id;\n const draftValue = draftValues[accessorKey];\n const error =\n editing?.errors[accessorKey] ??\n editing?.errors[context.column.id] ??\n editing?.errors._row;\n const setDraftValue = (value: unknown) => {\n editing?.onValueChange(accessorKey);\n setDraftValues((current) => ({\n ...current,\n [accessorKey]: value,\n }));\n };\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\" && editing?.cancelOnEscape) {\n event.preventDefault();\n editing.cancel();\n } else if (\n event.key === \"Enter\" &&\n !event.shiftKey &&\n editing?.commitOnEnter\n ) {\n event.preventDefault();\n editing.commit();\n }\n };\n\n if (meta?.renderEditCell) {\n return meta.renderEditCell({\n cell: context,\n row: context.row.original,\n value: context.getValue(),\n draftValue,\n error,\n isDirty: editing?.isDirty ?? false,\n isPending: editing?.isPending ?? false,\n setDraftValue,\n });\n }\n\n const inputType = getEditableInputType(meta?.type, draftValue);\n\n if (typeof draftValue === \"boolean\") {\n return (\n
\n {\n setDraftValue(checked === true);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
\n );\n }\n\n return (\n
\n ) => {\n const rawValue = event.target.value;\n const parsedValue = meta?.parseEditValue\n ? meta.parseEditValue(rawValue, context)\n : parseEditableInputValue(rawValue, inputType, draftValue);\n setDraftValue(parsedValue);\n }}\n onKeyDown={handleKeyDown}\n />\n {error ? (\n \n {error}\n \n ) : null}\n
\n );\n}\n\nfunction normalizeEditValidationErrors(\n value: void | string | Record,\n) {\n if (!value) {\n return {};\n }\n return typeof value === \"string\" ? { _row: value } : value;\n}\n\nfunction areDraftValuesEqual(\n left: Record,\n right: Record,\n) {\n const keys = new Set([...Object.keys(left), ...Object.keys(right)]);\n return Array.from(keys).every((key) => Object.is(left[key], right[key]));\n}\n\nfunction getEditableInputType(\n type: DataTableColumnType | undefined,\n value: unknown,\n) {\n if (type === \"numeric\" || typeof value === \"number\") {\n return \"number\";\n }\n\n if (type === \"date\" || value instanceof Date) {\n return \"datetime-local\";\n }\n\n return \"text\";\n}\n\nfunction getEditableInputValue(value: unknown, inputType = \"text\") {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return inputType === \"datetime-local\"\n ? value.toISOString().slice(0, 16)\n : value.toISOString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nfunction parseEditableInputValue(\n value: string,\n inputType: string,\n previousValue: unknown,\n) {\n if (inputType === \"number\") {\n return value === \"\" ? null : Number(value);\n }\n\n if (inputType === \"datetime-local\") {\n if (!value) {\n return null;\n }\n return previousValue instanceof Date ? new Date(value) : value;\n }\n\n return value;\n}\n","import * as React from \"react\";\n\nconst DataTableVirtualRowMeasurementContext = React.createContext<\n ((element: HTMLTableRowElement | null) => void) | undefined\n>(undefined);\n\nexport function DataTableVirtualRowMeasurementProvider({\n children,\n measureRow,\n}: {\n children: React.ReactNode;\n measureRow: ((element: HTMLTableRowElement | null) => void) | undefined;\n}) {\n return (\n \n {children}\n \n );\n}\n\nexport function useDataTableVirtualRowMeasurement():\n | ((element: HTMLTableRowElement | null) => void)\n | undefined {\n return React.useContext(DataTableVirtualRowMeasurementContext);\n}\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconClock } from \"../icons\";\nimport type {\n DataTableCellOverflow,\n DataTableColumnDef,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableTanStackCellContext as CellContext } from \"./tanstack-v9\";\n\nexport function renderDataTableCellContent(\n context: CellContext,\n classNames?: DataTableUiClassNames,\n options?: {\n hasCustomCell?: boolean;\n useCustomOverflowDefaults?: boolean;\n },\n) {\n const column = context.column.columnDef as DataTableColumnDef;\n const meta = column.meta;\n const value = context.getValue();\n const hasCustomCell = options?.hasCustomCell ?? false;\n const renderedCellContent = hasCustomCell && column.cell\n ? flexRender(column.cell, context)\n : undefined;\n const hasComplexRenderedContent = isComplexRenderedCellContent(\n renderedCellContent,\n );\n const resolvedOverflow = resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults: options?.useCustomOverflowDefaults ?? false,\n value,\n });\n\n if (meta?.type === \"date\" && !hasCustomCell) {\n return (\n \n \n {formatDateValue(value)}\n \n );\n }\n\n const content =\n renderedCellContent !== undefined &&\n renderedCellContent !== null &&\n renderedCellContent !== \"\"\n ? renderedCellContent\n : value == null || value === \"\"\n ? -\n : formatCellValue(value);\n\n return (\n *]:max-w-full [&>*]:min-w-0\",\n )}\n >\n {content}\n \n );\n}\n\nfunction resolveDataTableCellOverflow({\n context,\n useCustomOverflowDefaults,\n value,\n}: {\n context: CellContext;\n useCustomOverflowDefaults: boolean;\n value: unknown;\n}): DataTableCellOverflow {\n const column = context.column.columnDef as DataTableColumnDef;\n const resolvedOverflow =\n typeof column.meta?.overflow === \"function\"\n ? column.meta.overflow({\n row: context.row.original,\n value,\n })\n : column.meta?.overflow;\n\n if (resolvedOverflow) {\n return resolvedOverflow;\n }\n\n return useCustomOverflowDefaults ? \"clip\" : \"truncate\";\n}\n\nfunction getCellOverflowClassName(overflow: DataTableCellOverflow) {\n switch (overflow) {\n case \"clip\":\n return \"block overflow-hidden whitespace-nowrap\";\n case \"wrap\":\n return \"block overflow-hidden whitespace-normal break-words\";\n case \"visible\":\n return \"block overflow-visible whitespace-normal\";\n case \"truncate\":\n default:\n return \"block overflow-hidden text-ellipsis whitespace-nowrap\";\n }\n}\n\nfunction isComplexRenderedCellContent(content: React.ReactNode) {\n if (content == null) {\n return false;\n }\n\n return (\n React.isValidElement(content) ||\n Array.isArray(content) ||\n typeof content === \"object\"\n );\n}\n\nfunction formatDateValue(value: unknown) {\n if (typeof value === \"number\") {\n return new Date(value * 1000).toLocaleString();\n }\n\n if (typeof value === \"string\" && value) {\n return value;\n }\n\n return \"-\";\n}\n\nfunction formatCellValue(value: unknown) {\n if (value instanceof Date) {\n return value.toLocaleString();\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\"\n ) {\n return String(value);\n }\n\n try {\n return JSON.stringify(value);\n } catch {\n return \"-\";\n }\n}\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport type { RowPinningPosition } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableDensity,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport { renderDataTableCellContent } from \"./data-table-cell-content\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityCellClassName,\n isDataTableInteractiveTarget,\n isDataTableLoadingRow,\n} from \"./data-table-utils\";\nimport { renderEditableCell } from \"./use-row-editing\";\nimport { useDataTableVirtualRowMeasurement } from \"./data-table-virtual-row-measurement\";\nimport { cellAlignClassName, hideOnClassName } from \"../types\";\nimport type {\n DataTableTanStackCell as Cell,\n DataTableTanStackRow as Row,\n} from \"./tanstack-v9\";\n\nexport type DataTableRowEditingContext = {\n cancel: () => void;\n clearError: (columnId: string) => void;\n commit: (row: TData) => void;\n errors: Record;\n isDirty: boolean;\n isPending: boolean;\n cancelOnEscape: boolean;\n commitOnEnter: boolean;\n};\n\ntype DataTableBodyRowProps = {\n columnLayouts: ReadonlyMap;\n components: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n currentDensity: DataTableDensity;\n draftValues: Record;\n editingContext?: DataTableRowEditingContext;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n explicitCustomCellColumnIds: ReadonlySet;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n groupToggleLabel: string;\n gridMode: boolean;\n gridRowAriaIndex: number;\n gridRowIndex: number;\n activeGridCell: { row: number; column: number };\n cellSelectionEnabled: boolean;\n isGridCellSelected: (row: number, column: number) => boolean;\n onGridCellFocus: (cell: { row: number; column: number }) => void;\n onGridCellKeyDown: (\n event: React.KeyboardEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerDown: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n onGridCellPointerEnter: (\n event: React.PointerEvent,\n row: number,\n column: number,\n ) => void;\n isDraggable: boolean;\n isDetailExpanded: boolean;\n isEditing: boolean;\n isExpanded: boolean;\n isInitialLoadingRow: boolean;\n isSelected: boolean;\n loadingState: DataTableRowLoadingState | undefined;\n onRowClick: DataTableProps[\"onRowClick\"];\n pinnedPosition?: Exclude;\n originalRow: TData;\n detailPanel: DataTableProps[\"detailPanel\"];\n row: Row;\n rowIndex: number;\n setDraftValues: React.Dispatch>>;\n stripedRows: boolean;\n uiClassNames: DataTableUiClassNames;\n visibleCells: Array>;\n visibleLeafColumnCount: number;\n};\n\nfunction DataTableBodyRowInner({\n columnLayouts,\n components,\n currentDensity,\n draftValues,\n editingContext,\n dragAndDrop,\n explicitCustomCellColumnIds,\n getRowClassName,\n groupToggleLabel,\n gridMode,\n gridRowAriaIndex,\n gridRowIndex,\n activeGridCell,\n cellSelectionEnabled,\n isGridCellSelected,\n onGridCellFocus,\n onGridCellKeyDown,\n onGridCellPointerDown,\n onGridCellPointerEnter,\n isDraggable,\n isDetailExpanded,\n isEditing,\n isExpanded,\n isInitialLoadingRow,\n isSelected,\n loadingState,\n onRowClick,\n pinnedPosition,\n originalRow,\n detailPanel,\n row,\n rowIndex,\n setDraftValues,\n stripedRows,\n uiClassNames,\n visibleCells,\n visibleLeafColumnCount,\n}: DataTableBodyRowProps) {\n const { Checkbox, Input, Skeleton, TableCell, TableRow } = components;\n const virtualRowMeasurement = useDataTableVirtualRowMeasurement();\n const measureElement = pinnedPosition ? undefined : virtualRowMeasurement;\n const firstDataColumnId = visibleCells.find(\n (cell) => !columnLayouts.get(cell.column.id)?.isUtilityColumn,\n )?.column.id;\n const spacerColumnIndex = visibleCells.findIndex(\n (cell) => cell.column.id === \"__spacer__\",\n );\n\n return (\n \n 0 ? row.depth : undefined\n }\n data-dtp-slot={\n pinnedPosition ? \"data-table-pinned-row\" : \"data-table-row\"\n }\n data-row-pinned={pinnedPosition}\n data-row-grouped={row.getIsGrouped() || undefined}\n draggable={isInitialLoadingRow ? false : isDraggable}\n data-loading={loadingState?.isLoading || undefined}\n data-row-index={isInitialLoadingRow ? undefined : rowIndex}\n data-row-parity={\n stripedRows && !isInitialLoadingRow\n ? rowIndex % 2 === 0\n ? \"odd\"\n : \"even\"\n : undefined\n }\n data-state={\n isInitialLoadingRow ? undefined : isSelected ? \"selected\" : undefined\n }\n role={gridMode ? \"row\" : undefined}\n aria-rowindex={gridMode ? gridRowAriaIndex : undefined}\n tabIndex={\n !gridMode && onRowClick && !isInitialLoadingRow ? 0 : undefined\n }\n className={cn(\n !isInitialLoadingRow &&\n getRowClassName?.(originalRow, {\n row: originalRow,\n rowId: row.id,\n rowIndex,\n isEditing,\n isExpanded,\n isLoading: Boolean(loadingState?.isLoading),\n isSelected,\n pinnedPosition: pinnedPosition ?? false,\n }),\n uiClassNames.row,\n pinnedPosition === \"top\" &&\n cn(\"border-b-2\", uiClassNames.rowPinnedTop),\n pinnedPosition === \"bottom\" &&\n cn(\"border-t-2\", uiClassNames.rowPinnedBottom),\n stripedRows &&\n !isInitialLoadingRow &&\n (rowIndex % 2 === 0\n ? uiClassNames.rowOdd\n : uiClassNames.rowEven),\n isSelected && !isInitialLoadingRow && uiClassNames.rowSelected,\n onRowClick && !isInitialLoadingRow && \"cursor-pointer\",\n isInitialLoadingRow && \"pointer-events-none\",\n )}\n onClick={(event: React.MouseEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n if (gridMode && cellSelectionEnabled) return;\n\n void onRowClick?.({ row: originalRow, rowId: row.id });\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (\n isInitialLoadingRow ||\n !onRowClick ||\n (event.key !== \"Enter\" && event.key !== \" \")\n ) {\n return;\n }\n\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) {\n return;\n }\n\n event.preventDefault();\n void onRowClick({ row: originalRow, rowId: row.id });\n }}\n onDragStart={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragStart?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n onDragEnd={(event: React.DragEvent) => {\n if (isInitialLoadingRow) {\n return;\n }\n\n dragAndDrop?.onRowDragEnd?.({\n row: originalRow,\n rowId: row.id,\n event,\n });\n }}\n >\n {visibleCells.map((cell, columnIndex) => {\n const meta = (\n cell.column.columnDef as DataTableColumnDef\n ).meta;\n const cellContext = cell.getContext();\n const value = cell.getValue();\n const layout = columnLayouts.get(cell.column.id);\n const isSelectionColumn = layout?.isSelectionColumn ?? false;\n const isExpansionColumn = layout?.isExpansionColumn ?? false;\n const isActionsColumn = layout?.isActionsColumn ?? false;\n const isSpacerColumn = layout?.isSpacerColumn ?? false;\n const gridColumnAriaIndex =\n columnIndex +\n 1 -\n (spacerColumnIndex >= 0 && spacerColumnIndex < columnIndex ? 1 : 0);\n const hideClassName = hideOnClassName(meta?.hideOn);\n const cellClassName =\n isInitialLoadingRow || isDataTableLoadingRow(originalRow)\n ? undefined\n : typeof meta?.cellClassName === \"function\"\n ? meta.cellClassName({\n row: originalRow,\n value,\n })\n : meta?.cellClassName;\n const isCellSelected =\n gridMode && cellSelectionEnabled &&\n !isInitialLoadingRow &&\n !isSpacerColumn &&\n isGridCellSelected(gridRowIndex, columnIndex);\n\n return (\n onGridCellFocus({ row: gridRowIndex, column: columnIndex })\n : undefined\n }\n onKeyDown={\n gridMode && !isSpacerColumn\n ? (event: React.KeyboardEvent) => {\n if (event.target !== event.currentTarget) {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.currentTarget.focus();\n }\n return;\n }\n onGridCellKeyDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerDown={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n event.currentTarget.focus();\n onGridCellPointerDown(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n onPointerEnter={\n gridMode &&\n cellSelectionEnabled &&\n !layout?.isUtilityColumn &&\n !isSpacerColumn\n ? (event: React.PointerEvent) => {\n if (isDataTableInteractiveTarget(event.target, event.currentTarget)) return;\n onGridCellPointerEnter(event, gridRowIndex, columnIndex);\n }\n : undefined\n }\n className={cn(\n \"border-b\",\n getDensityCellClassName(currentDensity),\n uiClassNames.cellBorder,\n isCellSelected && uiClassNames.cellSelected,\n layout?.utilityClassName,\n layout?.isSpacerColumn && \"border-b-0 bg-transparent! p-0\",\n layout?.pinnedClassName,\n hideClassName,\n cellAlignClassName(cellContext),\n meta?.responsiveClassName,\n cellClassName,\n )}\n style={layout?.cellStyle}\n >\n 0 && cell.column.id === firstDataColumnId\n ? { paddingInlineStart: `${row.depth}rem` }\n : undefined\n }\n >\n {isSpacerColumn ? null : loadingState?.isLoading ? (\n (meta?.skeleton?.(cellContext) ??\n loadingState.skeleton ?? (\n \n ))\n ) : isEditing &&\n cell.column.id !== \"__select__\" &&\n cell.column.id !== \"__expand__\" &&\n cell.column.id !== \"__actions__\" ? (\n renderEditableCell(\n cellContext,\n draftValues,\n setDraftValues,\n {\n Checkbox,\n Input,\n },\n editingContext\n ? {\n cancel: editingContext.cancel,\n cancelOnEscape: editingContext.cancelOnEscape,\n commit: () => editingContext.commit(originalRow),\n commitOnEnter: editingContext.commitOnEnter,\n errors: editingContext.errors,\n isDirty: editingContext.isDirty,\n isPending: editingContext.isPending,\n onValueChange: editingContext.clearError,\n }\n : undefined,\n )\n ) : row.getIsGrouped() && cell.getIsPlaceholder() ? null : row.getIsGrouped() && cell.getIsGrouped() ? (\n row.toggleExpanded()}\n aria-expanded={row.getIsExpanded()}\n aria-label={groupToggleLabel}\n >\n \n {renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id),\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id),\n })}\n \n \n ({row.subRows.length})\n \n \n ) : row.getIsGrouped() && cell.getIsAggregated() ? (\n cell.column.columnDef.aggregatedCell\n ? flexRender(cell.column.columnDef.aggregatedCell, cellContext)\n : renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell: false,\n useCustomOverflowDefaults: false,\n })\n ) : (\n renderDataTableCellContent(cellContext, uiClassNames, {\n hasCustomCell:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n useCustomOverflowDefaults:\n explicitCustomCellColumnIds.has(cell.column.id) ||\n isSelectionColumn ||\n isExpansionColumn ||\n isActionsColumn ||\n isSpacerColumn,\n })\n )}\n \n \n );\n })}\n \n {!isInitialLoadingRow && detailPanel && isDetailExpanded ? (\n \n \n {detailPanel.render({\n row: originalRow,\n rowId: row.id,\n tableRow: row,\n })}\n \n \n ) : null}\n \n );\n}\n\nfunction areDataTableBodyRowsEqual(\n previous: DataTableBodyRowProps,\n next: DataTableBodyRowProps,\n) {\n return (\n previous.row.id === next.row.id &&\n previous.row.original === next.row.original &&\n previous.rowIndex === next.rowIndex &&\n previous.isSelected === next.isSelected &&\n previous.isInitialLoadingRow === next.isInitialLoadingRow &&\n previous.isEditing === next.isEditing &&\n (!previous.isEditing || previous.editingContext === next.editingContext) &&\n previous.isExpanded === next.isExpanded &&\n previous.isDraggable === next.isDraggable &&\n sameLoadingState(previous.loadingState, next.loadingState) &&\n sameVisibleCells(previous.visibleCells, next.visibleCells) &&\n previous.components === next.components &&\n sameColumnLayouts(\n previous.columnLayouts,\n next.columnLayouts,\n next.visibleCells,\n ) &&\n previous.currentDensity === next.currentDensity &&\n previous.detailPanel === next.detailPanel &&\n previous.isDetailExpanded === next.isDetailExpanded &&\n previous.pinnedPosition === next.pinnedPosition &&\n previous.onRowClick === next.onRowClick &&\n previous.dragAndDrop === next.dragAndDrop &&\n previous.getRowClassName === next.getRowClassName &&\n previous.groupToggleLabel === next.groupToggleLabel &&\n previous.gridMode === next.gridMode &&\n (!next.gridMode ||\n (previous.gridRowAriaIndex === next.gridRowAriaIndex &&\n previous.gridRowIndex === next.gridRowIndex &&\n previous.activeGridCell.row === next.activeGridCell.row &&\n previous.activeGridCell.column === next.activeGridCell.column &&\n previous.cellSelectionEnabled === next.cellSelectionEnabled &&\n previous.isGridCellSelected === next.isGridCellSelected &&\n previous.onGridCellFocus === next.onGridCellFocus &&\n previous.onGridCellKeyDown === next.onGridCellKeyDown &&\n previous.onGridCellPointerDown === next.onGridCellPointerDown &&\n previous.onGridCellPointerEnter === next.onGridCellPointerEnter)) &&\n previous.stripedRows === next.stripedRows &&\n previous.uiClassNames === next.uiClassNames &&\n previous.explicitCustomCellColumnIds === next.explicitCustomCellColumnIds &&\n (!previous.isEditing || previous.draftValues === next.draftValues)\n );\n}\n\nfunction sameLoadingState(\n previous: DataTableRowLoadingState | undefined,\n next: DataTableRowLoadingState | undefined,\n) {\n return (\n previous?.isLoading === next?.isLoading &&\n previous?.skeleton === next?.skeleton\n );\n}\n\nfunction sameVisibleCells(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((cell, index) => {\n const nextCell = next[index];\n return nextCell?.id === cell.id && nextCell.column.id === cell.column.id;\n })\n );\n}\n\nfunction sameColumnLayouts(\n previous: ReadonlyMap,\n next: ReadonlyMap,\n cells: Array>,\n) {\n return cells.every((cell) => {\n const previousLayout = previous.get(cell.column.id);\n const nextLayout = next.get(cell.column.id);\n\n return (\n previousLayout?.fixedSide === nextLayout?.fixedSide &&\n previousLayout?.isActionsColumn === nextLayout?.isActionsColumn &&\n previousLayout?.isExpansionColumn === nextLayout?.isExpansionColumn &&\n previousLayout?.isSelectionColumn === nextLayout?.isSelectionColumn &&\n previousLayout?.isSpacerColumn === nextLayout?.isSpacerColumn &&\n previousLayout?.isUtilityColumn === nextLayout?.isUtilityColumn &&\n previousLayout?.pinnedClassName === nextLayout?.pinnedClassName &&\n previousLayout?.utilityClassName === nextLayout?.utilityClassName &&\n sameCellStyle(previousLayout?.cellStyle, nextLayout?.cellStyle)\n );\n });\n}\n\nfunction sameCellStyle(\n previous: React.CSSProperties | undefined,\n next: React.CSSProperties | undefined,\n) {\n return (\n previous?.width === next?.width &&\n previous?.minWidth === next?.minWidth &&\n previous?.maxWidth === next?.maxWidth &&\n previous?.left === next?.left &&\n previous?.right === next?.right\n );\n}\n\nexport const DataTableBodyRow = React.memo(\n DataTableBodyRowInner,\n areDataTableBodyRowsEqual,\n) as typeof DataTableBodyRowInner;\n","import * as React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { IconChevronDown, IconSelector } from \"../icons\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnGroupDef,\n DataTableDensity,\n DataTableProps,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport {\n getDensityHeaderClassName,\n isUtilityColumnId,\n} from \"./data-table-utils\";\nimport { headerAlignClassName, hideOnClassName } from \"../types\";\nimport type { DataTableTanStackHeader as Header } from \"./tanstack-v9\";\n\ntype DataTableHeaderCellProps = {\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentSorting: SortingState;\n dir: NonNullable[\"dir\"]>;\n draggedColumnIdRef: React.MutableRefObject;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n gridColumnIndex?: number;\n gridMode: boolean;\n header: Header;\n headerGroupHeaders: Array>;\n layout: DataTableColumnLayout;\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resizeColumnLabel: string;\n resetColumnSize: (columnId: string) => void;\n // Rendered through flexRender inside the header def; carried as a prop so\n // the memo comparator re-renders the selection header when it changes.\n selectionState?: boolean | \"indeterminate\";\n TableHead: DataTableUiKit[\"TableHead\"];\n uiClassNames: DataTableUiClassNames;\n};\n\nfunction DataTableHeaderCellInner({\n columnGroupHeaderHeight,\n currentDensity,\n currentSorting,\n dir,\n draggedColumnIdRef,\n enableColumnReordering,\n enableColumnResizing,\n gridColumnIndex,\n gridMode,\n header,\n headerGroupHeaders,\n layout,\n primeColumnForResize,\n reorderColumn,\n resizeColumnLabel,\n resetColumnSize,\n TableHead,\n uiClassNames,\n}: DataTableHeaderCellProps) {\n const meta = (header.column.columnDef as DataTableColumnDef)\n .meta;\n const headerContentId = React.useId();\n const isColumnGroup =\n !header.isPlaceholder && header.subHeaders.length > 0;\n const groupDefinition = isColumnGroup\n ? (header.column.columnDef as DataTableColumnGroupDef)\n : undefined;\n const canSort = header.column.getCanSort();\n const sortingState = header.column.getIsSorted();\n const sortingIndex = currentSorting.findIndex(\n (sort) => sort.id === header.column.id,\n );\n const canReorderColumn =\n enableColumnReordering &&\n !header.isPlaceholder &&\n !isColumnGroup &&\n !layout.isUtilityColumn &&\n !layout.isSpacerColumn;\n const hideClassName = hideOnClassName(meta?.hideOn);\n\n return (\n ) => {\n draggedColumnIdRef.current = header.column.id;\n event.dataTransfer.effectAllowed = \"move\";\n }\n : undefined\n }\n onDragOver={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canReorderColumn\n ? (event: React.DragEvent) => {\n event.preventDefault();\n const sourceColumnId = draggedColumnIdRef.current;\n draggedColumnIdRef.current = null;\n if (sourceColumnId) {\n reorderColumn(sourceColumnId, header.column.id);\n }\n }\n : undefined\n }\n onKeyDown={\n canReorderColumn\n ? (event: React.KeyboardEvent) => {\n if (\n !event.altKey ||\n (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\")\n ) {\n return;\n }\n\n event.preventDefault();\n const headers = headerGroupHeaders.filter(\n (item) =>\n !isUtilityColumnId(item.column.id) &&\n item.column.id !== \"__spacer__\",\n );\n const currentIndex = headers.findIndex(\n (item) => item.column.id === header.column.id,\n );\n const target =\n headers[\n (event.key === \"ArrowLeft\") !== (dir === \"rtl\")\n ? currentIndex - 1\n : currentIndex + 1\n ];\n if (target) {\n reorderColumn(header.column.id, target.column.id);\n }\n }\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n {sortingState ? (\n <>\n \n {currentSorting.length > 1 && sortingIndex >= 0 ? (\n \n {sortingIndex + 1}\n \n ) : null}\n \n ) : (\n \n )}\n \n ) : (\n layout.isUtilityColumn || layout.isSpacerColumn ? (\n flexRender(header.column.columnDef.header, header.getContext())\n ) : (\n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n )\n )}\n\n {enableColumnResizing &&\n !header.isPlaceholder &&\n header.column.getCanResize() ? (\n {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n }}\n onMouseDown={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onTouchStart={(event) => {\n for (const leafHeader of getResizableLeafHeaders(header)) {\n primeColumnForResize(\n leafHeader.column.id,\n leafHeader.getSize(),\n );\n }\n header.getResizeHandler()(event);\n }}\n onKeyDown={(event) => {\n if (event.altKey) {\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n for (const leafHeader of getResizableLeafHeaders(header)) {\n resetColumnSize(leafHeader.column.id);\n }\n return;\n }\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n const grows =\n (event.key === \"ArrowRight\") !== (dir === \"rtl\");\n resizeHeaderBy(\n header,\n (grows ? 1 : -1) * (event.shiftKey ? 25 : 10),\n );\n }}\n className={cn(\n \"absolute inset-y-0 z-50 h-full w-3 cursor-col-resize touch-none select-none ltr:right-0 ltr:translate-x-1/2 rtl:left-0 rtl:-translate-x-1/2 after:absolute after:top-0 after:left-1/2 after:h-full after:w-px after:-translate-x-1/2\",\n uiClassNames.resizeHandle ??\n \"after:bg-current after:opacity-20 hover:after:opacity-70\",\n header.column.getIsResizing() &&\n (uiClassNames.resizeHandleActive ?? \"after:opacity-100\"),\n )}\n />\n ) : null}\n \n );\n}\n\nfunction areDataTableHeaderCellsEqual(\n previous: DataTableHeaderCellProps,\n next: DataTableHeaderCellProps,\n) {\n return (\n previous.header.id === next.header.id &&\n previous.header.column.id === next.header.column.id &&\n previous.header.column.columnDef === next.header.column.columnDef &&\n previous.header.colSpan === next.header.colSpan &&\n previous.header.isPlaceholder === next.header.isPlaceholder &&\n sameSubHeaders(previous.header, next.header) &&\n previous.currentDensity === next.currentDensity &&\n previous.columnGroupHeaderHeight === next.columnGroupHeaderHeight &&\n previous.dir === next.dir &&\n previous.enableColumnReordering === next.enableColumnReordering &&\n previous.enableColumnResizing === next.enableColumnResizing &&\n previous.gridMode === next.gridMode &&\n previous.gridColumnIndex === next.gridColumnIndex &&\n previous.TableHead === next.TableHead &&\n previous.uiClassNames === next.uiClassNames &&\n previous.draggedColumnIdRef === next.draggedColumnIdRef &&\n previous.primeColumnForResize === next.primeColumnForResize &&\n previous.reorderColumn === next.reorderColumn &&\n previous.resizeColumnLabel === next.resizeColumnLabel &&\n previous.resetColumnSize === next.resetColumnSize &&\n previous.selectionState === next.selectionState &&\n sameSorting(previous.currentSorting, next.currentSorting) &&\n sameHeaderGroupHeaders(\n previous.headerGroupHeaders,\n next.headerGroupHeaders,\n ) &&\n sameHeaderLayout(previous.layout, next.layout)\n );\n}\n\nfunction getResizableLeafHeaders(header: Header) {\n if (!header.subHeaders.length) {\n return [header];\n }\n\n return header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length);\n}\n\nfunction getHeaderMinimumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.minSize ?? 20),\n 0,\n );\n}\n\nfunction getHeaderMaximumSize(header: Header) {\n return getResizableLeafHeaders(header).reduce(\n (total, leafHeader) =>\n total + (leafHeader.column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER),\n 0,\n );\n}\n\nfunction resizeHeaderBy(\n header: Header,\n delta: number,\n) {\n const leafHeaders = getResizableLeafHeaders(header);\n const deltaPerLeaf = delta / leafHeaders.length;\n header.getContext().table.setColumnSizing((current) => {\n const next = { ...current };\n\n for (const leafHeader of leafHeaders) {\n const column = leafHeader.column;\n const minimum = column.columnDef.minSize ?? 20;\n const maximum =\n column.columnDef.maxSize ?? Number.MAX_SAFE_INTEGER;\n next[column.id] = Math.min(\n maximum,\n Math.max(minimum, column.getSize() + deltaPerLeaf),\n );\n }\n\n return next;\n });\n}\n\nfunction sameSubHeaders(\n previous: Header,\n next: Header,\n) {\n return (\n previous.subHeaders.length === next.subHeaders.length &&\n previous.subHeaders.every(\n (header, index) => next.subHeaders[index]?.id === header.id,\n )\n );\n}\n\nfunction sameSorting(previous: SortingState, next: SortingState) {\n return (\n previous.length === next.length &&\n previous.every((sort, index) => {\n const nextSort = next[index];\n return nextSort?.id === sort.id && nextSort.desc === sort.desc;\n })\n );\n}\n\nfunction sameHeaderGroupHeaders(\n previous: Array>,\n next: Array>,\n) {\n return (\n previous.length === next.length &&\n previous.every((header, index) => next[index]?.id === header.id)\n );\n}\n\nfunction sameHeaderLayout(\n previous: DataTableColumnLayout,\n next: DataTableColumnLayout,\n) {\n return (\n previous.fixedSide === next.fixedSide &&\n previous.isSpacerColumn === next.isSpacerColumn &&\n previous.isUtilityColumn === next.isUtilityColumn &&\n previous.pinnedClassName === next.pinnedClassName &&\n previous.utilityClassName === next.utilityClassName &&\n previous.headerStyle?.width === next.headerStyle?.width &&\n previous.headerStyle?.minWidth === next.headerStyle?.minWidth &&\n previous.headerStyle?.maxWidth === next.headerStyle?.maxWidth &&\n previous.headerStyle?.left === next.headerStyle?.left &&\n previous.headerStyle?.right === next.headerStyle?.right\n );\n}\n\nexport const DataTableHeaderCell = React.memo(\n DataTableHeaderCellInner,\n areDataTableHeaderCellsEqual,\n) as typeof DataTableHeaderCellInner;\n","import * as React from \"react\";\nimport type {\n ExpandedState,\n RowPinningPosition,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableCellSelection,\n DataTableProps,\n DataTableRowLoadingState,\n} from \"../types\";\nimport type { DataTableUiClassNames, DataTableUiKit } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DataTableBodyRow,\n type DataTableRowEditingContext,\n} from \"./data-table-body-row\";\nimport { DataTableHeaderCell } from \"./data-table-header-cell\";\nimport type { DataTableColumnLayout } from \"./use-column-layout\";\nimport { isDataTableLoadingRow, isUtilityColumnId } from \"./data-table-utils\";\nimport type { DataTableLabels } from \"../types\";\nimport type {\n DataTableTanStackColumn as Column,\n DataTableTanStackHeader as Header,\n DataTableTanStackRow as Row,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\n\nexport type DataTableTablePanelProps = {\n ariaDescribedBy: string | undefined;\n ariaLabelledBy: string | undefined;\n bodyRowComponents: Pick<\n DataTableUiKit,\n \"Checkbox\" | \"Input\" | \"Skeleton\" | \"TableCell\" | \"TableRow\"\n >;\n cellSelection: DataTableCellSelection | null;\n cellSelectionEnabled: boolean;\n columnLayouts: ReadonlyMap;\n columnGroupHeaderHeight: DataTableProps[\"columnGroupHeaderHeight\"];\n currentDensity: DataTableDensity;\n currentDetailExpanded: ExpandedState;\n currentSorting: DataTableProps[\"sorting\"];\n dir: NonNullable[\"dir\"]>;\n DataTableEmptyState: React.ElementType;\n dragAndDrop: DataTableProps[\"dragAndDrop\"];\n draggedColumnIdRef: React.RefObject;\n draftValues: Record;\n editingRowId: string | null;\n editingContext?: DataTableRowEditingContext;\n emptyNode: React.ReactNode;\n enableColumnReordering: boolean;\n enableColumnResizing: boolean;\n explicitCustomCellColumnIds: ReadonlySet;\n fillMinWidth: number;\n flexGrow: boolean;\n gridMode: boolean;\n gridPageSize?: number;\n gridRowOffset: number;\n onGridActiveRowIndexChange?: (rowIndex: number) => void;\n onCellSelectionChange: (selection: DataTableCellSelection | null) => void;\n getColumnLayout: (columnId: string) => DataTableColumnLayout;\n getRowClassName: DataTableProps[\"getRowClassName\"];\n getRowLoadingState: DataTableProps[\"getRowLoadingState\"];\n infiniteScroll: DataTableProps[\"infiniteScroll\"];\n layoutMode: \"fill\" | \"fit\";\n localSearchValue: string;\n onRowClick: DataTableProps[\"onRowClick\"];\n primeColumnForResize: (columnId: string, currentSize: number) => void;\n renderedRows: Array>;\n detailPanel: DataTableProps[\"detailPanel\"];\n topPinnedRows: Array>;\n bottomPinnedRows: Array>;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n resetColumnSize: (columnId: string) => void;\n resolvedLabels: DataTableLabels;\n rowsToRender: Array<{ row: Row; rowIndex: number }>;\n ScrollArea: DataTableUiKit[\"ScrollArea\"];\n ScrollBar: DataTableUiKit[\"ScrollBar\"];\n scrollbarVisibility: DataTableProps[\"scrollbarVisibility\"];\n sentinelRef: React.RefObject;\n setDraftValues: React.Dispatch>>;\n shouldRenderInitialLoading: boolean;\n stateOverlayNode?: React.ReactNode;\n stickyHeader: boolean;\n stripedRows: boolean;\n summaryRows: NonNullable[\"summaryRows\"]>;\n table: TanStackTable;\n tableClassName: string | undefined;\n tableContainerClassName: string | undefined;\n Table: DataTableUiKit[\"Table\"];\n TableBody: DataTableUiKit[\"TableBody\"];\n TableCell: DataTableUiKit[\"TableCell\"];\n TableFooter: DataTableUiKit[\"TableFooter\"];\n TableHead: DataTableUiKit[\"TableHead\"];\n TableHeader: DataTableUiKit[\"TableHeader\"];\n TableRow: DataTableUiKit[\"TableRow\"];\n tableScrollContainerRef: React.RefObject;\n tableScrollElement?: HTMLElement | null;\n totalRowCount?: number;\n uiClassNames: DataTableUiClassNames;\n viewportHeight?: number;\n virtualization?: DataTableProps[\"virtualization\"];\n virtualPaddingBottom: number;\n virtualPaddingTop: number;\n visibleLeafColumnCount: number;\n visibleLeafColumns: Array>;\n};\n\nexport function DataTableTablePanel({\n ariaDescribedBy,\n ariaLabelledBy,\n bodyRowComponents,\n cellSelection,\n cellSelectionEnabled,\n columnLayouts,\n columnGroupHeaderHeight,\n currentDensity,\n currentDetailExpanded,\n currentSorting = [],\n dir,\n DataTableEmptyState,\n dragAndDrop,\n draggedColumnIdRef,\n draftValues,\n editingRowId,\n editingContext,\n emptyNode,\n enableColumnReordering,\n enableColumnResizing,\n explicitCustomCellColumnIds,\n fillMinWidth,\n flexGrow,\n gridMode,\n gridPageSize,\n gridRowOffset,\n onGridActiveRowIndexChange,\n onCellSelectionChange,\n getColumnLayout,\n getRowClassName,\n getRowLoadingState,\n infiniteScroll,\n layoutMode,\n localSearchValue,\n onRowClick,\n primeColumnForResize,\n renderedRows,\n detailPanel,\n topPinnedRows,\n bottomPinnedRows,\n reorderColumn,\n resetColumnSize,\n resolvedLabels,\n rowsToRender,\n ScrollArea,\n ScrollBar,\n scrollbarVisibility,\n sentinelRef,\n setDraftValues,\n shouldRenderInitialLoading,\n stateOverlayNode,\n stickyHeader,\n stripedRows,\n summaryRows,\n table,\n tableClassName,\n tableContainerClassName,\n Table,\n TableBody,\n TableCell,\n TableFooter = \"tfoot\",\n TableHead,\n TableHeader,\n TableRow,\n tableScrollContainerRef,\n tableScrollElement,\n totalRowCount,\n uiClassNames,\n virtualPaddingBottom,\n virtualPaddingTop,\n visibleLeafColumnCount,\n visibleLeafColumns,\n}: DataTableTablePanelProps) {\n const selectionState: boolean | \"indeterminate\" =\n table.getIsAllPageRowsSelected()\n ? true\n : table.getIsSomePageRowsSelected()\n ? \"indeterminate\"\n : false;\n const filteredRows = table.getFilteredRowModel().rows;\n const summarySourceRows = React.useMemo(\n () =>\n summaryRows.length\n ? filteredRows.map((row) => row.original)\n : [],\n [filteredRows, summaryRows.length],\n );\n const headerRowCount = table.getHeaderGroups().length;\n const displayRowCount =\n topPinnedRows.length + renderedRows.length + bottomPinnedRows.length;\n const [activeCell, setActiveCell] = React.useState({ row: 0, column: 0 });\n const shouldRestoreGridFocusRef = React.useRef(false);\n const pointerSelectingRef = React.useRef(false);\n const gridRows = React.useMemo(\n () => [...topPinnedRows, ...renderedRows, ...bottomPinnedRows],\n [bottomPinnedRows, renderedRows, topPinnedRows],\n );\n const navigableGridColumnIndices = React.useMemo(\n () =>\n visibleLeafColumns.flatMap((column, index) =>\n column.id === \"__spacer__\" ? [] : [index],\n ),\n [visibleLeafColumns],\n );\n const getGridCoordinate = React.useCallback(\n (rowIndex: number, columnIndex: number) => {\n const row = gridRows[rowIndex];\n const column = visibleLeafColumns[columnIndex];\n return row &&\n column &&\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\"\n ? { rowId: row.id, columnId: column.id }\n : undefined;\n },\n [gridRows, visibleLeafColumns],\n );\n const selectedBounds = React.useMemo(() => {\n if (!cellSelection) return undefined;\n const anchorRow = gridRows.findIndex((row) => row.id === cellSelection.anchor.rowId);\n const focusRow = gridRows.findIndex((row) => row.id === cellSelection.focus.rowId);\n const anchorColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.anchor.columnId,\n );\n const focusColumn = visibleLeafColumns.findIndex(\n (column) => column.id === cellSelection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) return undefined;\n return {\n firstRow: Math.min(anchorRow, focusRow),\n lastRow: Math.max(anchorRow, focusRow),\n firstColumn: Math.min(anchorColumn, focusColumn),\n lastColumn: Math.max(anchorColumn, focusColumn),\n };\n }, [cellSelection, gridRows, visibleLeafColumns]);\n const isGridCellSelected = React.useCallback(\n (rowIndex: number, columnIndex: number) =>\n Boolean(\n selectedBounds &&\n rowIndex >= selectedBounds.firstRow &&\n rowIndex <= selectedBounds.lastRow &&\n columnIndex >= selectedBounds.firstColumn &&\n columnIndex <= selectedBounds.lastColumn,\n ),\n [selectedBounds],\n );\n const handleGridCellFocus = React.useCallback(\n (cell: { row: number; column: number }) => {\n shouldRestoreGridFocusRef.current = true;\n setActiveCell(cell);\n },\n [],\n );\n const selectGridCell = React.useCallback(\n (rowIndex: number, columnIndex: number, extend: boolean) => {\n if (!cellSelectionEnabled) return;\n const focus = getGridCoordinate(rowIndex, columnIndex);\n if (!focus) return;\n const anchor =\n extend && cellSelection?.anchor\n ? cellSelection.anchor\n : focus;\n onCellSelectionChange({ anchor, focus });\n },\n [cellSelection, cellSelectionEnabled, getGridCoordinate, onCellSelectionChange],\n );\n const handleGridCellPointerDown = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || event.button !== 0) return;\n // Keep native text/image dragging from taking ownership of the pointer\n // stream before the range reaches its destination cell.\n event.preventDefault();\n pointerSelectingRef.current = true;\n selectGridCell(rowIndex, columnIndex, event.shiftKey);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n const handleGridCellPointerEnter = React.useCallback(\n (event: React.PointerEvent, rowIndex: number, columnIndex: number) => {\n if (!cellSelectionEnabled || !pointerSelectingRef.current || event.buttons !== 1) return;\n selectGridCell(rowIndex, columnIndex, true);\n },\n [cellSelectionEnabled, selectGridCell],\n );\n React.useEffect(() => {\n const stopSelecting = () => { pointerSelectingRef.current = false; };\n window.addEventListener(\"pointerup\", stopSelecting);\n return () => window.removeEventListener(\"pointerup\", stopSelecting);\n }, []);\n\n // Keep focus on the roving cell after sorting, filtering, or a virtual row\n // range changes. A missing target is normal while a virtualizer is rendering.\n React.useEffect(() => {\n if (!gridMode) return;\n onGridActiveRowIndexChange?.(activeCell.row);\n const frame = requestAnimationFrame(() => {\n const cells = tableScrollContainerRef.current?.querySelectorAll(\n '[data-dtp-grid-cell=\"true\"]',\n );\n const target = Array.from(cells ?? []).find(\n (cell) =>\n Number(cell.dataset.gridRowIndex) === activeCell.row &&\n Number(cell.dataset.gridColumnIndex) === activeCell.column,\n );\n if (target && shouldRestoreGridFocusRef.current) {\n target.focus();\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [activeCell, gridMode, onGridActiveRowIndexChange, tableScrollContainerRef]);\n\n const moveGridFocus = React.useCallback(\n (event: React.KeyboardEvent, row: number, column: number) => {\n if (event.defaultPrevented || event.target !== event.currentTarget) return;\n const pageRows = Math.max(\n 1,\n gridPageSize ?? (\n Math.floor(\n (tableScrollElement?.clientHeight || 0) /\n Math.max(1, (tableScrollElement?.querySelector(\"tr\") as HTMLElement | null)?.offsetHeight || 48),\n ) || 10),\n );\n const lastRow = Math.max(0, displayRowCount - 1);\n const currentColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.indexOf(column),\n );\n const lastColumnPosition = Math.max(\n 0,\n navigableGridColumnIndices.length - 1,\n );\n let nextRow = row;\n let nextColumnPosition = currentColumnPosition;\n switch (event.key) {\n case \"ArrowUp\": nextRow--; break;\n case \"ArrowDown\": nextRow++; break;\n case \"ArrowLeft\": nextColumnPosition--; break;\n case \"ArrowRight\": nextColumnPosition++; break;\n case \"Home\":\n if (event.ctrlKey || event.metaKey) nextRow = 0;\n nextColumnPosition = 0;\n break;\n case \"End\":\n if (event.ctrlKey || event.metaKey) nextRow = lastRow;\n nextColumnPosition = lastColumnPosition;\n break;\n case \"PageUp\": nextRow -= pageRows; break;\n case \"PageDown\": nextRow += pageRows; break;\n default: return;\n }\n event.preventDefault();\n const nextCell = {\n row: Math.min(lastRow, Math.max(0, nextRow)),\n column:\n navigableGridColumnIndices[\n Math.min(\n lastColumnPosition,\n Math.max(0, nextColumnPosition),\n )\n ] ?? 0,\n };\n setActiveCell(nextCell);\n if (event.shiftKey && cellSelectionEnabled) {\n const focus = getGridCoordinate(nextCell.row, nextCell.column);\n const anchor =\n cellSelection?.anchor ?? getGridCoordinate(row, column) ?? focus;\n if (anchor && focus) onCellSelectionChange({ anchor, focus });\n }\n },\n [\n cellSelection,\n cellSelectionEnabled,\n displayRowCount,\n getGridCoordinate,\n gridPageSize,\n navigableGridColumnIndices,\n onCellSelectionChange,\n tableScrollElement,\n ],\n );\n const renderBodyRow = (\n row: Row,\n rowIndex: number,\n pinnedPosition?: Exclude,\n ) => {\n const originalRow = row.original;\n const isInitialLoadingRow = isDataTableLoadingRow(originalRow);\n const loadingState = isInitialLoadingRow\n ? { isLoading: true }\n : getRowLoadingState?.(originalRow, rowIndex);\n const resolvedLoadingState: DataTableRowLoadingState | undefined =\n typeof loadingState === \"boolean\"\n ? { isLoading: loadingState }\n : loadingState;\n const isDraggable = isInitialLoadingRow\n ? false\n : (dragAndDrop?.getRowDraggable?.(originalRow) ?? false);\n\n return (\n \n );\n };\n\n return (\n \n \n \n
\n \n \n {table.getVisibleLeafColumns().map((column) => {\n const layout = getColumnLayout(column.id);\n return ;\n })}\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n column.id !== \"__spacer__\",\n )\n .findIndex(\n (column) =>\n column.id === header.column.id,\n ) + 1\n }\n />\n ))}\n \n ))}\n \n \n {topPinnedRows.length || renderedRows.length || bottomPinnedRows.length ? (\n <>\n {topPinnedRows.map((row, index) =>\n renderBodyRow(row, index, \"top\"),\n )}\n {virtualPaddingTop > 0 ? (\n \n \n \n ) : null}\n {rowsToRender.map(({ row, rowIndex }) =>\n renderBodyRow(row, rowIndex + topPinnedRows.length),\n )}\n {virtualPaddingBottom > 0 ? (\n \n \n \n ) : null}\n {bottomPinnedRows.map((row, index) =>\n renderBodyRow(\n row,\n topPinnedRows.length + renderedRows.length + index,\n \"bottom\",\n ),\n )}\n \n ) : (\n \n \n
\n {emptyNode ?? (\n \n )}\n
\n \n
\n )}\n
\n {summaryRows.length ? (\n \n {summaryRows.map((summaryRow, summaryIndex) => (\n \n {visibleLeafColumns.map((column, index) => {\n const layout = getColumnLayout(column.id);\n const content = layout.isSpacerColumn\n ? null\n : (summaryRow.cells[column.id] ??\n (index === 0 ? summaryRow.label : null));\n return (\n \n {typeof content === \"function\"\n ? content({\n rows: summarySourceRows,\n columnId: column.id,\n })\n : content}\n \n );\n })}\n \n ))}\n \n ) : null}\n \n
\n\n {infiniteScroll?.enabled &&\n renderedRows.length &&\n !shouldRenderInitialLoading ? (\n
\n
\n
\n ) : null}\n \n \n
\n {stateOverlayNode}\n \n );\n}\n\nfunction getHeaderLayout(\n header: Header,\n getColumnLayout: (columnId: string) => DataTableColumnLayout,\n) {\n const columnLayout = getColumnLayout(header.column.id);\n if (header.isPlaceholder || !header.subHeaders.length) {\n return columnLayout;\n }\n\n const leafLayouts = header\n .getLeafHeaders()\n .filter((leafHeader) => !leafHeader.subHeaders.length)\n .map((leafHeader) => getColumnLayout(leafHeader.column.id));\n const fixedSide = leafLayouts[0]?.fixedSide;\n\n if (\n !fixedSide ||\n !leafLayouts.every((layout) => layout.fixedSide === fixedSide)\n ) {\n return columnLayout;\n }\n\n const edgeLayout =\n fixedSide === \"left\" ? leafLayouts[0] : leafLayouts.at(-1);\n\n return {\n ...columnLayout,\n fixedSide,\n headerStyle: edgeLayout?.headerStyle\n ? {\n left: edgeLayout.headerStyle.left,\n right: edgeLayout.headerStyle.right,\n }\n : undefined,\n pinnedClassName: edgeLayout?.pinnedClassName,\n };\n}\n"]} \ No newline at end of file diff --git a/dist/chunk-YWMYYP3I.js b/dist/chunk-YWMYYP3I.js new file mode 100644 index 0000000..faeab29 --- /dev/null +++ b/dist/chunk-YWMYYP3I.js @@ -0,0 +1,3 @@ +import {a}from'./chunk-XTVBESM5.js';var _=Symbol("data-table-loading-row"),z=50;function F(e,t,n){if(e===true)return Object.fromEntries(n.flatMap(a=>a===t?[]:[[a,true]]));let r={...e};return r[t]?delete r[t]:r[t]=true,r}function U(e){return Array.from({length:e},(t,n)=>({[_]:true,index:n}))}function j(e){return !!(e&&typeof e=="object"&&_ in e)}function G(e){return `__loading__${e}`}function V(e){if(typeof e.meta?.minWidth=="number")return e.meta.minWidth;if(Object.prototype.hasOwnProperty.call(e,"minSize")){let t=e.minSize;if(typeof t=="number")return t}}function M(e){return Object.prototype.hasOwnProperty.call(e,"size")&&typeof e.size=="number"}function S(e){if("columns"in e&&Array.isArray(e.columns))return {...e,columns:e.columns.map(n=>S(n))};let t=e.meta?.filter;return !t||e.filterFn?e:{...e,filterFn:(n,r,a)=>{if(!x(a))return true;let o=n.getValue(r),i=t.getOptionValue?.(o,n.original)??b(o);if(t.type==="multi"||t.type==="faceted")return Array.isArray(a)?a.map(String).includes(i):true;if(t.type==="select"||t.type==="boolean")return i===String(a);if(t.type==="numberRange"){let u=C(a),c=Number(i),p=u.from===""?void 0:Number(u.from),d=u.to===""?void 0:Number(u.to);return Number.isNaN(c)?false:(p===void 0||Number.isNaN(p)||c>=p)&&(d===void 0||Number.isNaN(d)||c<=d)}if(t.type==="dateRange"){let u=C(a),c=A(i);return c?(!u.from||c>=String(u.from))&&(!u.to||c<=String(u.to)):false}let l=i.toLowerCase(),f=String(a).toLowerCase();switch(t.operator??"contains"){case "equals":return l===f;case "startsWith":return l.startsWith(f);case "endsWith":return l.endsWith(f);default:return l.includes(f)}}}}function W(e){let t=new Map,n=(r,a)=>{r.forEach((o,i)=>{if("columns"in o&&o.columns?.length){let l=o;n(o.columns,[...a,{id:D(o),freeReordering:l.freeReordering===true}]);return}t.set(D(o),a);});};return n(e,[]),t}function B(e,t,n){let r=n.get(e)??[],a=n.get(t)??[],o=0;for(;oi.freeReordering)}function k(e){let t=[],n=r=>{r.forEach((a,o)=>{if("columns"in a&&a.columns?.length){n(a.columns);return}t.push({column:a,index:o});});};return n(e),t}function $(e){return e.map(t=>typeof t=="string"?{label:h(t),value:t}:t)}function b(e){if(e==null)return "";if(e instanceof Date)return e.toISOString();if(typeof e=="object")try{return JSON.stringify(e)}catch{return ""}return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"||typeof e=="symbol"?String(e):""}function x(e){return Array.isArray(e)?e.length>0:e&&typeof e=="object"?"from"in e||"to"in e?Object.values(e).some(x):true:e!=null&&e!==""}function C(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t=e;return {...typeof t.from=="string"||typeof t.from=="number"?{from:t.from}:{},...typeof t.to=="string"||typeof t.to=="number"?{to:t.to}:{}}}function A(e){if(e instanceof Date&&!Number.isNaN(e.getTime()))return e.toISOString().slice(0,10);let t=b(e);if(/^\d{4}-\d{2}-\d{2}/.test(t))return t.slice(0,10);let n=Date.parse(t);return Number.isNaN(n)?"":new Date(n).toISOString().slice(0,10)}function K(e){return b(e).trim().toLowerCase()}async function q({csvExport:e,table:t}){if(e===false)return;let n=e===true?{}:e,r=n.filename??"data-table.csv",a=n.scope??"filtered",o=n.columns?new Set(n.columns):void 0,i=t.getVisibleLeafColumns().filter(s=>!O(s.id)&&s.id!=="__spacer__"&&(!o||o.has(s.id))),l=R(t,a),f=[];(n.includeHeaders??true)&&f.push(i.map(s=>typeof s.columnDef.header=="string"?s.columnDef.header:h(s.id)));for(let s of l)f.push(i.map(m=>{let y=s.getValue(m.id);return n.getCellValue?n.getCellValue({row:s.original,rowId:s.id,columnId:m.id,value:y}):y}));let u=n.lineEnding??`\r +`,c=n.escapeFormulaValues??true,p=f.map(s=>s.map(m=>E(m,c)).join(",")).join(u);if(n.onExport){await n.onExport({csv:p,filename:r,rows:l.map(s=>s.original),scope:a});return}if(typeof window>"u")return;let d=new Blob([p],{type:"text/csv;charset=utf-8"}),g=window.URL.createObjectURL(d),T=window.document.createElement("a");T.href=g,T.download=r,T.click(),window.URL.revokeObjectURL(g);}function R(e,t){switch(t){case "page":return e.getRowModel().rows;case "selected":return e.getPrePaginatedRowModel().rows.filter(n=>n.getIsSelected());case "all":return e.getCoreRowModel().rows;default:return e.getPrePaginatedRowModel().rows}}function E(e,t){let n=b(e);return t&&typeof e=="string"&&/^[\t\r ]*[=+\-@]/.test(e)&&(n=`'${n}`),/[",\n\r]/.test(n)?`"${n.replace(/"/g,'""')}"`:n}function H(e){let t=[],n=[];for(let{column:r,index:a}of k(e)){let o=D(r);r.meta?.fixed==="left"&&t.push(o),r.meta?.fixed==="right"&&n.push(o);}return {left:t,right:n}}function D(e,t){if(e.id)return e.id;let n=N(e);if(n)return n.replace(/\./g,"_");if(typeof e.header=="string")return e.header;throw new Error("Data table columns using an accessor function or non-string header must define a unique id.")}var L=new Set(["__select__","__expand__","__actions__","__spacer__"]);function Q(e){let t=new Set,n=r=>{r.forEach((a,o)=>{let i=D(a);if(L.has(i))throw new Error(`Data table column id "${i}" is reserved for an internal column.`);if(t.has(i))throw new Error(`Duplicate data table column id "${i}".`);t.add(i),"columns"in a&&a.columns?.length&&n(a.columns);});};n(e);}function N(e){if("accessorKey"in e&&typeof e.accessorKey=="string")return e.accessorKey}function Z(e){let t=e.getIsPinned();return t==="start"?"left":t==="end"?"right":e.id==="__select__"||e.id==="__expand__"?"left":e.id==="__actions__"?"right":e.columnDef.meta?.fixed}function J(e,t,n){let r=n?.isUtilityColumn??false;return a("sticky backdrop-blur box-border",t.pinnedColumn,!r&&"border-dotted",r?t.pinnedUtilityColumn:void 0,e==="left"?"border-r-1":"border-l")}function O(e){return e==="__select__"||e==="__expand__"||e==="__actions__"}var P=["[data-row-click-ignore='true']","a[href]","button","input","select","summary","textarea","[contenteditable='true']","[role='button']","[role='link']"].join(",");function Y(e,t){if(!(e instanceof Element))return false;let n=e.closest(P);return !!(n&&n!==t&&t.contains(n))}function v(e){switch(e){case "compact":return "h-8 py-1";case "spacious":return "h-14 py-4";default:return}}function X(e){switch(e){case "compact":return "py-1.5";case "spacious":return "py-4";default:return}}function ee(e,t,n){let r=e.includes(t)?e.slice():[...e,t],a=r.indexOf(t),o=r.indexOf(n);if(a<0||o<0||a===o)return r;let[i]=r.splice(a,1);return r.splice(o,0,i),r}function h(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}export{X as A,ee as B,h as C,z as a,F as b,U as c,j as d,G as e,V as f,M as g,S as h,W as i,B as j,k,$ as l,b as m,x as n,K as o,q as p,R as q,H as r,D as s,Q as t,N as u,Z as v,J as w,O as x,Y as y,v as z};//# sourceMappingURL=chunk-YWMYYP3I.js.map +//# sourceMappingURL=chunk-YWMYYP3I.js.map \ No newline at end of file diff --git a/dist/chunk-YWMYYP3I.js.map b/dist/chunk-YWMYYP3I.js.map new file mode 100644 index 0000000..335f10b --- /dev/null +++ b/dist/chunk-YWMYYP3I.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-utils.ts"],"names":["DATA_TABLE_LOADING_ROW","UTILITY_COLUMN_SIZE","toggleDataTableExpandedState","current","rowId","loadedRowIds","loadedRowId","next","createDataTableLoadingRows","count","_","index","isDataTableLoadingRow","row","getDataTableLoadingRowId","getConfiguredColumnMinWidth","column","minSize","hasExplicitDataTableColumnSize","decorateFilterableColumn","childColumn","filter","columnId","filterValue","hasFilterValue","value","optionValue","normalizeFilterValue","range","normalizeRangeFilterValue","numericValue","from","to","dateValue","normalizeDateFilterValue","normalizedValue","normalizedQuery","getDataTableColumnGroupPaths","columns","paths","visit","currentColumns","parentPath","group","getColumnId","canReorderDataTableColumn","sourceColumnId","targetColumnId","groupPaths","sourcePath","targetPath","commonLength","getDataTableLeafColumns","leaves","normalizeColumnFilterOptions","options","option","startCase","normalized","timestamp","normalizeDataTableSearchText","exportDataTableCsv","csvExport","table","filename","scope","exportColumnIds","isUtilityColumnId","rows","getDataTableExportRows","csvRows","lineEnding","escapeFormulaValues","csv","escapeCsvCell","blob","url","anchor","text","getInitialColumnPinning","left","right","_index","accessorKey","getAccessorKey","RESERVED_DATA_TABLE_COLUMN_IDS","validateDataTableColumnIds","ids","id","getFixedSide","pinnedSide","getPinnedColumnClassName","side","uiClassNames","isUtilityColumn","cn","DATA_TABLE_INTERACTIVE_TARGET_SELECTOR","isDataTableInteractiveTarget","target","boundary","interactiveTarget","getDensityHeaderClassName","density","getDensityCellClassName","moveColumnInOrder","currentOrder","order","sourceIndex","targetIndex","source","character"],"mappings":"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","file":"chunk-YWMYYP3I.js","sourcesContent":["import type {\n ExpandedState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnDef,\n DataTableColumnFilterOption,\n DataTableColumnPinningState,\n DataTableCsvExportOptions,\n DataTableCsvExportScope,\n DataTableDensity,\n DataTableLabels,\n} from \"../types\";\nimport type { DataTableUiClassNames } from \"../ui-kit\";\nimport { cn } from \"../../lib/utils\";\nimport type {\n DataTableTanStackColumn as Column,\n DataTableTanStackColumnDef as ColumnDef,\n DataTableTanStackRow as Row,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\n\nconst DATA_TABLE_LOADING_ROW = Symbol(\"data-table-loading-row\");\n\nexport const UTILITY_COLUMN_SIZE = 50;\n\nexport function toggleDataTableExpandedState(\n current: ExpandedState,\n rowId: string,\n loadedRowIds: Array,\n): ExpandedState {\n if (current === true) {\n return Object.fromEntries(\n loadedRowIds.flatMap((loadedRowId) =>\n loadedRowId === rowId ? [] : [[loadedRowId, true]],\n ),\n );\n }\n\n const next = { ...current };\n if (next[rowId]) {\n delete next[rowId];\n } else {\n next[rowId] = true;\n }\n return next;\n}\n\ntype DataTableLoadingRow = {\n [DATA_TABLE_LOADING_ROW]: true;\n index: number;\n};\n\nexport function createDataTableLoadingRows(count: number) {\n return Array.from({ length: count }, (_, index) => {\n return {\n [DATA_TABLE_LOADING_ROW]: true,\n index,\n } as DataTableLoadingRow as TData;\n });\n}\n\nexport function isDataTableLoadingRow(\n row: unknown,\n): row is DataTableLoadingRow {\n return Boolean(\n row &&\n typeof row === \"object\" &&\n DATA_TABLE_LOADING_ROW in (row as Record),\n );\n}\n\nexport function getDataTableLoadingRowId(index: number) {\n return `__loading__${index}`;\n}\n\nexport function getConfiguredColumnMinWidth(\n column: DataTableColumnDef,\n) {\n if (typeof column.meta?.minWidth === \"number\") {\n return column.meta.minWidth;\n }\n\n if (Object.prototype.hasOwnProperty.call(column, \"minSize\")) {\n const minSize = (column as { minSize?: unknown }).minSize;\n\n if (typeof minSize === \"number\") {\n return minSize;\n }\n }\n\n return undefined;\n}\n\nexport function hasExplicitDataTableColumnSize(\n column: DataTableColumnDef,\n) {\n return (\n Object.prototype.hasOwnProperty.call(column, \"size\") &&\n typeof column.size === \"number\"\n );\n}\n\nexport function decorateFilterableColumn(\n column: DataTableColumnDef,\n): ColumnDef {\n if (\"columns\" in column && Array.isArray(column.columns)) {\n return {\n ...column,\n columns: column.columns.map((childColumn) =>\n decorateFilterableColumn(\n childColumn as DataTableColumnDef,\n ),\n ),\n };\n }\n\n const filter = column.meta?.filter;\n if (!filter || column.filterFn) {\n return column;\n }\n\n return {\n ...column,\n filterFn: (row, columnId, filterValue) => {\n if (!hasFilterValue(filterValue)) {\n return true;\n }\n\n const value = row.getValue(columnId);\n const optionValue =\n filter.getOptionValue?.(value, row.original) ??\n normalizeFilterValue(value);\n\n if (filter.type === \"multi\" || filter.type === \"faceted\") {\n return Array.isArray(filterValue)\n ? filterValue.map(String).includes(optionValue)\n : true;\n }\n\n if (filter.type === \"select\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"boolean\") {\n return optionValue === String(filterValue);\n }\n\n if (filter.type === \"numberRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const numericValue = Number(optionValue);\n const from = range.from === \"\" ? undefined : Number(range.from);\n const to = range.to === \"\" ? undefined : Number(range.to);\n\n if (Number.isNaN(numericValue)) {\n return false;\n }\n\n return (\n (from === undefined || Number.isNaN(from) || numericValue >= from) &&\n (to === undefined || Number.isNaN(to) || numericValue <= to)\n );\n }\n\n if (filter.type === \"dateRange\") {\n const range = normalizeRangeFilterValue(filterValue);\n const dateValue = normalizeDateFilterValue(optionValue);\n\n if (!dateValue) {\n return false;\n }\n\n return (\n (!range.from || dateValue >= String(range.from)) &&\n (!range.to || dateValue <= String(range.to))\n );\n }\n\n const normalizedValue = optionValue.toLowerCase();\n const normalizedQuery = String(filterValue).toLowerCase();\n\n switch (filter.operator ?? \"contains\") {\n case \"equals\":\n return normalizedValue === normalizedQuery;\n case \"startsWith\":\n return normalizedValue.startsWith(normalizedQuery);\n case \"endsWith\":\n return normalizedValue.endsWith(normalizedQuery);\n default:\n return normalizedValue.includes(normalizedQuery);\n }\n },\n };\n}\n\nexport type DataTableLeafColumn = {\n column: DataTableColumnDef;\n index: number;\n};\n\nexport type DataTableColumnGroupPathSegment = {\n id: string;\n freeReordering: boolean;\n};\n\nexport type DataTableColumnGroupPaths = ReadonlyMap<\n string,\n ReadonlyArray\n>;\n\n/**\n * Returns the nested shared-header path for every leaf. The path deliberately\n * uses stable column ids rather than header text so it also works with custom\n * header render functions.\n */\nexport function getDataTableColumnGroupPaths(\n columns: Array>,\n): DataTableColumnGroupPaths {\n const paths = new Map<\n string,\n ReadonlyArray\n >();\n\n const visit = (\n currentColumns: Array>,\n parentPath: ReadonlyArray,\n ) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n const group = column as DataTableColumnDef & {\n freeReordering?: boolean;\n };\n visit(column.columns, [\n ...parentPath,\n {\n id: getColumnId(column, index),\n freeReordering: group.freeReordering === true,\n },\n ]);\n return;\n }\n\n paths.set(getColumnId(column, index), parentPath);\n });\n };\n\n visit(columns, []);\n return paths;\n}\n\n/**\n * Locked groups preserve their shared heading by default. Reordering within a\n * common group path is always allowed; leaving or entering a group requires\n * each crossed group to explicitly opt into `freeReordering`.\n */\nexport function canReorderDataTableColumn(\n sourceColumnId: string,\n targetColumnId: string,\n groupPaths: DataTableColumnGroupPaths,\n) {\n const sourcePath = groupPaths.get(sourceColumnId) ?? [];\n const targetPath = groupPaths.get(targetColumnId) ?? [];\n let commonLength = 0;\n\n while (\n commonLength < sourcePath.length &&\n commonLength < targetPath.length &&\n sourcePath[commonLength]?.id === targetPath[commonLength]?.id\n ) {\n commonLength += 1;\n }\n\n return [\n ...sourcePath.slice(commonLength),\n ...targetPath.slice(commonLength),\n ].every((group) => group.freeReordering);\n}\n\nexport function getDataTableLeafColumns(\n columns: Array>,\n) {\n const leaves: Array> = [];\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n return;\n }\n\n leaves.push({ column, index });\n });\n };\n\n visit(columns);\n return leaves;\n}\n\nexport function normalizeColumnFilterOptions(\n options: Array,\n) {\n return options.map((option) =>\n typeof option === \"string\"\n ? { label: startCase(option), value: option }\n : option,\n );\n}\n\nexport function normalizeFilterValue(value: unknown) {\n if (value == null) {\n return \"\";\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === \"object\") {\n try {\n return JSON.stringify(value);\n } catch {\n return \"\";\n }\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n typeof value === \"bigint\" ||\n typeof value === \"symbol\"\n ) {\n return String(value);\n }\n\n return \"\";\n}\n\nexport function hasFilterValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (value && typeof value === \"object\") {\n if (\"from\" in value || \"to\" in value) {\n return Object.values(value).some(hasFilterValue);\n }\n\n return true;\n }\n\n return value !== undefined && value !== null && value !== \"\";\n}\n\nfunction normalizeRangeFilterValue(value: unknown): {\n from?: string | number;\n to?: string | number;\n} {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const range = value as { from?: unknown; to?: unknown };\n return {\n ...(typeof range.from === \"string\" || typeof range.from === \"number\"\n ? { from: range.from }\n : {}),\n ...(typeof range.to === \"string\" || typeof range.to === \"number\"\n ? { to: range.to }\n : {}),\n };\n}\n\nfunction normalizeDateFilterValue(value: unknown) {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value.toISOString().slice(0, 10);\n }\n\n const normalized = normalizeFilterValue(value);\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(normalized)) {\n return normalized.slice(0, 10);\n }\n\n const timestamp = Date.parse(normalized);\n return Number.isNaN(timestamp)\n ? \"\"\n : new Date(timestamp).toISOString().slice(0, 10);\n}\n\nexport function dataTableGlobalFilterFn(\n row: Row,\n columnId: string,\n filterValue: unknown,\n) {\n const normalizedQuery = normalizeFilterValue(filterValue)\n .trim()\n .toLowerCase();\n\n if (!normalizedQuery) {\n return true;\n }\n\n return normalizeFilterValue(row.getValue(columnId))\n .toLowerCase()\n .includes(normalizedQuery);\n}\n\nexport function normalizeDataTableSearchText(value: unknown) {\n return normalizeFilterValue(value).trim().toLowerCase();\n}\n\nexport async function exportDataTableCsv({\n csvExport,\n table,\n}: {\n csvExport: boolean | DataTableCsvExportOptions;\n table: TanStackTable;\n labels: DataTableLabels;\n}) {\n if (csvExport === false) {\n return;\n }\n\n const options: DataTableCsvExportOptions =\n csvExport === true ? {} : csvExport;\n const filename = options.filename ?? \"data-table.csv\";\n const scope = options.scope ?? \"filtered\";\n const exportColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const columns = table\n .getVisibleLeafColumns()\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!exportColumnIds || exportColumnIds.has(column.id)),\n );\n const rows = getDataTableExportRows(table, scope);\n const csvRows: Array> = [];\n\n if (options.includeHeaders ?? true) {\n csvRows.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n csvRows.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n row: row.original,\n rowId: row.id,\n columnId: column.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const escapeFormulaValues = options.escapeFormulaValues ?? true;\n const csv = csvRows\n .map((row) =>\n row\n .map((value) => escapeCsvCell(value, escapeFormulaValues))\n .join(\",\"),\n )\n .join(lineEnding);\n\n if (options.onExport) {\n await options.onExport({\n csv,\n filename,\n rows: rows.map((row) => row.original),\n scope,\n });\n return;\n }\n\n if (typeof window === \"undefined\") {\n return;\n }\n\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8\" });\n const url = window.URL.createObjectURL(blob);\n const anchor = window.document.createElement(\"a\");\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n window.URL.revokeObjectURL(url);\n}\n\nexport function getDataTableExportRows(\n table: TanStackTable,\n scope: DataTableCsvExportScope,\n) {\n switch (scope) {\n case \"page\":\n return table.getRowModel().rows;\n case \"selected\":\n return table\n .getPrePaginatedRowModel()\n .rows.filter((row) => row.getIsSelected());\n case \"all\":\n return table.getCoreRowModel().rows;\n default:\n return table.getPrePaginatedRowModel().rows;\n }\n}\n\nfunction escapeCsvCell(value: unknown, escapeFormulaValues: boolean) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (/[\",\\n\\r]/.test(text)) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n\nexport function getInitialColumnPinning(\n columns: Array>,\n): DataTableColumnPinningState {\n const left: Array = [];\n const right: Array = [];\n\n for (const { column, index } of getDataTableLeafColumns(columns)) {\n const columnId = getColumnId(column, index);\n if (column.meta?.fixed === \"left\") {\n left.push(columnId);\n }\n if (column.meta?.fixed === \"right\") {\n right.push(columnId);\n }\n }\n\n return { left, right };\n}\n\nexport function getColumnId(\n column: DataTableColumnDef,\n _index?: number,\n) {\n if (column.id) {\n return column.id;\n }\n\n const accessorKey = getAccessorKey(column);\n if (accessorKey) {\n return accessorKey.replace(/\\./g, \"_\");\n }\n\n if (typeof column.header === \"string\") {\n return column.header;\n }\n\n throw new Error(\n \"Data table columns using an accessor function or non-string header must define a unique id.\",\n );\n}\n\nconst RESERVED_DATA_TABLE_COLUMN_IDS = new Set([\n \"__select__\",\n \"__expand__\",\n \"__actions__\",\n \"__spacer__\",\n]);\n\nexport function validateDataTableColumnIds(\n columns: Array>,\n) {\n const ids = new Set();\n\n const visit = (currentColumns: Array>) => {\n currentColumns.forEach((column, index) => {\n const id = getColumnId(column, index);\n if (RESERVED_DATA_TABLE_COLUMN_IDS.has(id)) {\n throw new Error(\n `Data table column id \"${id}\" is reserved for an internal column.`,\n );\n }\n if (ids.has(id)) {\n throw new Error(`Duplicate data table column id \"${id}\".`);\n }\n ids.add(id);\n\n if (\"columns\" in column && column.columns?.length) {\n visit(column.columns);\n }\n });\n };\n\n visit(columns);\n}\n\nexport function getAccessorKey(\n column: DataTableColumnDef,\n) {\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function getFixedSide(column: Column) {\n const pinnedSide = column.getIsPinned();\n if (pinnedSide === \"start\") {\n return \"left\" as const;\n }\n if (pinnedSide === \"end\") {\n return \"right\" as const;\n }\n\n if (column.id === \"__select__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__expand__\") {\n return \"left\" as const;\n }\n\n if (column.id === \"__actions__\") {\n return \"right\" as const;\n }\n\n const meta = (column.columnDef as DataTableColumnDef).meta;\n return meta?.fixed;\n}\n\nexport function getPinnedColumnClassName(\n side: \"left\" | \"right\",\n uiClassNames: DataTableUiClassNames,\n options?: { isUtilityColumn?: boolean },\n) {\n const isUtilityColumn = options?.isUtilityColumn ?? false;\n return cn(\n \"sticky backdrop-blur box-border\",\n uiClassNames.pinnedColumn,\n !isUtilityColumn && \"border-dotted\",\n isUtilityColumn ? uiClassNames.pinnedUtilityColumn : undefined,\n side === \"left\" ? \"border-r-1\" : \"border-l\",\n );\n}\n\nexport function isUtilityColumnId(columnId: string) {\n return (\n columnId === \"__select__\" ||\n columnId === \"__expand__\" ||\n columnId === \"__actions__\"\n );\n}\n\nconst DATA_TABLE_INTERACTIVE_TARGET_SELECTOR = [\n \"[data-row-click-ignore='true']\",\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"summary\",\n \"textarea\",\n \"[contenteditable='true']\",\n \"[role='button']\",\n \"[role='link']\",\n].join(\",\");\n\nexport function isDataTableInteractiveTarget(\n target: EventTarget | null,\n boundary: Element,\n) {\n if (!(target instanceof Element)) {\n return false;\n }\n\n const interactiveTarget = target.closest(\n DATA_TABLE_INTERACTIVE_TARGET_SELECTOR,\n );\n return Boolean(\n interactiveTarget &&\n interactiveTarget !== boundary &&\n boundary.contains(interactiveTarget),\n );\n}\n\nexport function getDensityHeaderClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"h-8 py-1\";\n case \"spacious\":\n return \"h-14 py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function getDensityCellClassName(density: DataTableDensity) {\n switch (density) {\n case \"compact\":\n return \"py-1.5\";\n case \"spacious\":\n return \"py-4\";\n case \"comfortable\":\n default:\n return undefined;\n }\n}\n\nexport function moveColumnInOrder(\n currentOrder: Array,\n sourceColumnId: string,\n targetColumnId: string,\n) {\n const order = currentOrder.includes(sourceColumnId)\n ? currentOrder.slice()\n : [...currentOrder, sourceColumnId];\n const sourceIndex = order.indexOf(sourceColumnId);\n const targetIndex = order.indexOf(targetColumnId);\n\n if (sourceIndex < 0 || targetIndex < 0 || sourceIndex === targetIndex) {\n return order;\n }\n\n const [source] = order.splice(sourceIndex, 1);\n order.splice(targetIndex, 0, source);\n return order;\n}\n\nexport function startCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n"]} \ No newline at end of file diff --git a/dist/data-source.d.ts b/dist/data-source.d.ts index be11f1e..aededff 100644 --- a/dist/data-source.d.ts +++ b/dist/data-source.d.ts @@ -1,5 +1,5 @@ import { PaginationState, SortingState, ColumnFiltersState, GroupingState } from '@tanstack/react-table'; -import { DataTableProps } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; import 'react'; /** The supported server pagination strategies. */ diff --git a/dist/data-table-clipboard-7IVWTPU3.js b/dist/data-table-clipboard-7IVWTPU3.js deleted file mode 100644 index c7bb300..0000000 --- a/dist/data-table-clipboard-7IVWTPU3.js +++ /dev/null @@ -1,6 +0,0 @@ -import {x,q,C,m}from'./chunk-F2RBZWQV.js';import'./chunk-XTVBESM5.js';async function I({clipboard:i,cellSelection:c,table:t}){if(i===false)return;let e=i===true?{}:i,n=e.scope??"page",r=e.columns?new Set(e.columns):void 0,l=t.getVisibleLeafColumns(),s=l.filter(o=>!x(o.id)&&o.id!=="__spacer__"&&(!r||r.has(o.id))),a=n==="cellSelection"?y(t,l,c):void 0,m=a?.columns??s,C$1=n==="cellSelection"?a?.rows??[]:q(t,n),d=[];(e.includeHeaders??n!=="cellSelection")&&d.push(m.map(o=>typeof o.columnDef.header=="string"?o.columnDef.header:C(o.id)));for(let o of C$1)d.push(m.map(u=>{let b=o.getValue(u.id);return e.getCellValue?e.getCellValue({columnId:u.id,row:o.original,rowId:o.id,value:b}):b}));let T=e.delimiter??" ",f=d.map(o=>o.map(u=>D(u,T,e.escapeFormulaValues??true)).join(T)).join(` -`);return e.onCopy?await e.onCopy({rows:C$1.map(o=>o.original),scope:n,text:f}):typeof navigator<"u"&&typeof navigator.clipboard?.writeText=="function"&&await navigator.clipboard.writeText(f),f}function y(i,c,t){if(!t)return;let e=i.getRowModel().flatRows,n=e.findIndex(a=>a.id===t.anchor.rowId),r=e.findIndex(a=>a.id===t.focus.rowId),l=c.findIndex(a=>a.id===t.anchor.columnId),s=c.findIndex(a=>a.id===t.focus.columnId);if(!(n<0||r<0||l<0||s<0))return {rows:e.slice(Math.min(n,r),Math.max(n,r)+1),columns:c.slice(Math.min(l,s),Math.max(l,s)+1).filter(a=>!x(a.id)&&a.id!=="__spacer__")}}function S(i,c=" "){let t=[],e=[],n="",r=false;for(let l=0;l1||e[0]||t.length===0)&&t.push(e),t}function D(i,c,t){let e=m(i);return t&&typeof i=="string"&&/^[\t\r ]*[=+\-@]/.test(i)&&(e=`'${e}`),e.includes(c)||e.includes('"')||e.includes(` -`)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}export{I as copyDataTableToClipboard,S as parseDataTableClipboardText};//# sourceMappingURL=data-table-clipboard-7IVWTPU3.js.map -//# sourceMappingURL=data-table-clipboard-7IVWTPU3.js.map \ No newline at end of file diff --git a/dist/data-table-clipboard-7IVWTPU3.js.map b/dist/data-table-clipboard-7IVWTPU3.js.map deleted file mode 100644 index 33d2805..0000000 --- a/dist/data-table-clipboard-7IVWTPU3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-clipboard.ts"],"names":["copyDataTableToClipboard","clipboard","cellSelection","table","options","scope","requestedColumnIds","allVisibleColumns","visibleColumns","column","isUtilityColumnId","selectedRange","getDataTableCellSelectionRange","columns","rows","getDataTableExportRows","values","startCase","row","value","delimiter","text","escapeDelimitedCell","selection","anchorRow","focusRow","anchorColumn","focusColumn","parseDataTableClipboardText","quoted","index","character","nextCharacter","escapeFormulaValues","normalizeFilterValue"],"mappings":"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","file":"data-table-clipboard-7IVWTPU3.js","sourcesContent":["import type { Column, Table as TanStackTable } from \"@tanstack/react-table\";\nimport type {\n DataTableCellSelection,\n DataTableClipboardCopyOptions,\n} from \"../types\";\nimport {\n getDataTableExportRows,\n isUtilityColumnId,\n normalizeFilterValue,\n startCase,\n} from \"./data-table-utils\";\n\nexport async function copyDataTableToClipboard({\n clipboard,\n cellSelection,\n table,\n}: {\n clipboard: boolean | DataTableClipboardCopyOptions;\n cellSelection?: DataTableCellSelection | null;\n table: TanStackTable;\n}) {\n if (clipboard === false) return undefined;\n\n const options: DataTableClipboardCopyOptions =\n clipboard === true ? {} : clipboard;\n const scope = options.scope ?? \"page\";\n const requestedColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const visibleColumns = allVisibleColumns.filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!requestedColumnIds || requestedColumnIds.has(column.id)),\n );\n const selectedRange =\n scope === \"cellSelection\"\n ? getDataTableCellSelectionRange(table, allVisibleColumns, cellSelection)\n : undefined;\n const columns = selectedRange?.columns ?? visibleColumns;\n const rows =\n scope === \"cellSelection\"\n ? (selectedRange?.rows ?? [])\n : getDataTableExportRows(table, scope);\n const values: Array> = [];\n\n if (options.includeHeaders ?? scope !== \"cellSelection\") {\n values.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n values.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n columnId: column.id,\n row: row.original,\n rowId: row.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const delimiter = options.delimiter ?? \"\\t\";\n const text = values\n .map((row) =>\n row\n .map((value) =>\n escapeDelimitedCell(\n value,\n delimiter,\n options.escapeFormulaValues ?? true,\n ),\n )\n .join(delimiter),\n )\n .join(\"\\n\");\n\n if (options.onCopy) {\n await options.onCopy({\n rows: rows.map((row) => row.original),\n scope,\n text,\n });\n } else if (\n typeof navigator !== \"undefined\" &&\n typeof navigator.clipboard?.writeText === \"function\"\n ) {\n await navigator.clipboard.writeText(text);\n }\n\n return text;\n}\n\nfunction getDataTableCellSelectionRange(\n table: TanStackTable,\n columns: Array>,\n selection: DataTableCellSelection | null | undefined,\n) {\n if (!selection) return undefined;\n const rows = table.getRowModel().flatRows;\n const anchorRow = rows.findIndex((row) => row.id === selection.anchor.rowId);\n const focusRow = rows.findIndex((row) => row.id === selection.focus.rowId);\n const anchorColumn = columns.findIndex(\n (column) => column.id === selection.anchor.columnId,\n );\n const focusColumn = columns.findIndex(\n (column) => column.id === selection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) {\n return undefined;\n }\n return {\n rows: rows.slice(\n Math.min(anchorRow, focusRow),\n Math.max(anchorRow, focusRow) + 1,\n ),\n columns: columns\n .slice(\n Math.min(anchorColumn, focusColumn),\n Math.max(anchorColumn, focusColumn) + 1,\n )\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) && column.id !== \"__spacer__\",\n ),\n };\n}\n\nexport function parseDataTableClipboardText(\n text: string,\n delimiter: \"\\t\" | \",\" = \"\\t\",\n) {\n const rows: Array> = [];\n let row: Array = [];\n let value = \"\";\n let quoted = false;\n\n for (let index = 0; index < text.length; index += 1) {\n const character = text[index];\n const nextCharacter = text[index + 1];\n if (character === '\"') {\n if (quoted && nextCharacter === '\"') {\n value += '\"';\n index += 1;\n } else {\n quoted = !quoted;\n }\n continue;\n }\n if (!quoted && character === delimiter) {\n row.push(value);\n value = \"\";\n continue;\n }\n if (!quoted && (character === \"\\n\" || character === \"\\r\")) {\n if (character === \"\\r\" && nextCharacter === \"\\n\") index += 1;\n row.push(value);\n rows.push(row);\n row = [];\n value = \"\";\n continue;\n }\n value += character;\n }\n\n row.push(value);\n if (row.length > 1 || row[0] || rows.length === 0) rows.push(row);\n return rows;\n}\n\nfunction escapeDelimitedCell(\n value: unknown,\n delimiter: string,\n escapeFormulaValues: boolean,\n) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (\n text.includes(delimiter) ||\n text.includes('\"') ||\n text.includes(\"\\n\") ||\n text.includes(\"\\r\")\n ) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-clipboard-RNEFAPJB.js b/dist/data-table-clipboard-RNEFAPJB.js new file mode 100644 index 0000000..2caf6c2 --- /dev/null +++ b/dist/data-table-clipboard-RNEFAPJB.js @@ -0,0 +1,6 @@ +import {x,q,C,m}from'./chunk-YWMYYP3I.js';import'./chunk-XTVBESM5.js';async function S({clipboard:i,cellSelection:c,table:t}){if(i===false)return;let e=i===true?{}:i,n=e.scope??"page",r=e.columns?new Set(e.columns):void 0,l=t.getVisibleLeafColumns(),s=l.filter(o=>!x(o.id)&&o.id!=="__spacer__"&&(!r||r.has(o.id))),a=n==="cellSelection"?D(t,l,c):void 0,m=a?.columns??s,T=n==="cellSelection"?a?.rows??[]:q(t,n),d=[];(e.includeHeaders??n!=="cellSelection")&&d.push(m.map(o=>typeof o.columnDef.header=="string"?o.columnDef.header:C(o.id)));for(let o of T)d.push(m.map(u=>{let b=o.getValue(u.id);return e.getCellValue?e.getCellValue({columnId:u.id,row:o.original,rowId:o.id,value:b}):b}));let C$1=e.delimiter??" ",f=d.map(o=>o.map(u=>y(u,C$1,e.escapeFormulaValues??true)).join(C$1)).join(` +`);return e.onCopy?await e.onCopy({rows:T.map(o=>o.original),scope:n,text:f}):typeof navigator<"u"&&typeof navigator.clipboard?.writeText=="function"&&await navigator.clipboard.writeText(f),f}function D(i,c,t){if(!t)return;let e=i.getRowModel().flatRows,n=e.findIndex(a=>a.id===t.anchor.rowId),r=e.findIndex(a=>a.id===t.focus.rowId),l=c.findIndex(a=>a.id===t.anchor.columnId),s=c.findIndex(a=>a.id===t.focus.columnId);if(!(n<0||r<0||l<0||s<0))return {rows:e.slice(Math.min(n,r),Math.max(n,r)+1),columns:c.slice(Math.min(l,s),Math.max(l,s)+1).filter(a=>!x(a.id)&&a.id!=="__spacer__")}}function I(i,c=" "){let t=[],e=[],n="",r=false;for(let l=0;l1||e[0]||t.length===0)&&t.push(e),t}function y(i,c,t){let e=m(i);return t&&typeof i=="string"&&/^[\t\r ]*[=+\-@]/.test(i)&&(e=`'${e}`),e.includes(c)||e.includes('"')||e.includes(` +`)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}export{S as copyDataTableToClipboard,I as parseDataTableClipboardText};//# sourceMappingURL=data-table-clipboard-RNEFAPJB.js.map +//# sourceMappingURL=data-table-clipboard-RNEFAPJB.js.map \ No newline at end of file diff --git a/dist/data-table-clipboard-RNEFAPJB.js.map b/dist/data-table-clipboard-RNEFAPJB.js.map new file mode 100644 index 0000000..d71245d --- /dev/null +++ b/dist/data-table-clipboard-RNEFAPJB.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-clipboard.ts"],"names":["copyDataTableToClipboard","clipboard","cellSelection","table","options","scope","requestedColumnIds","allVisibleColumns","visibleColumns","column","isUtilityColumnId","selectedRange","getDataTableCellSelectionRange","columns","rows","getDataTableExportRows","values","startCase","row","value","delimiter","text","escapeDelimitedCell","selection","anchorRow","focusRow","anchorColumn","focusColumn","parseDataTableClipboardText","quoted","index","character","nextCharacter","escapeFormulaValues","normalizeFilterValue"],"mappings":"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","file":"data-table-clipboard-RNEFAPJB.js","sourcesContent":["import type {\n DataTableCellSelection,\n DataTableClipboardCopyOptions,\n} from \"../types\";\nimport {\n getDataTableExportRows,\n isUtilityColumnId,\n normalizeFilterValue,\n startCase,\n} from \"./data-table-utils\";\nimport type {\n DataTableTanStackColumn as Column,\n DataTableTanStackTable as TanStackTable,\n} from \"./tanstack-v9\";\n\nexport async function copyDataTableToClipboard({\n clipboard,\n cellSelection,\n table,\n}: {\n clipboard: boolean | DataTableClipboardCopyOptions;\n cellSelection?: DataTableCellSelection | null;\n table: TanStackTable;\n}) {\n if (clipboard === false) return undefined;\n\n const options: DataTableClipboardCopyOptions =\n clipboard === true ? {} : clipboard;\n const scope = options.scope ?? \"page\";\n const requestedColumnIds = options.columns\n ? new Set(options.columns)\n : undefined;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const visibleColumns = allVisibleColumns.filter(\n (column) =>\n !isUtilityColumnId(column.id) &&\n column.id !== \"__spacer__\" &&\n (!requestedColumnIds || requestedColumnIds.has(column.id)),\n );\n const selectedRange =\n scope === \"cellSelection\"\n ? getDataTableCellSelectionRange(table, allVisibleColumns, cellSelection)\n : undefined;\n const columns = selectedRange?.columns ?? visibleColumns;\n const rows =\n scope === \"cellSelection\"\n ? (selectedRange?.rows ?? [])\n : getDataTableExportRows(table, scope);\n const values: Array> = [];\n\n if (options.includeHeaders ?? scope !== \"cellSelection\") {\n values.push(\n columns.map((column) =>\n typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : startCase(column.id),\n ),\n );\n }\n\n for (const row of rows) {\n values.push(\n columns.map((column) => {\n const value = row.getValue(column.id);\n return options.getCellValue\n ? options.getCellValue({\n columnId: column.id,\n row: row.original,\n rowId: row.id,\n value,\n })\n : value;\n }),\n );\n }\n\n const delimiter = options.delimiter ?? \"\\t\";\n const text = values\n .map((row) =>\n row\n .map((value) =>\n escapeDelimitedCell(\n value,\n delimiter,\n options.escapeFormulaValues ?? true,\n ),\n )\n .join(delimiter),\n )\n .join(\"\\n\");\n\n if (options.onCopy) {\n await options.onCopy({\n rows: rows.map((row) => row.original),\n scope,\n text,\n });\n } else if (\n typeof navigator !== \"undefined\" &&\n typeof navigator.clipboard?.writeText === \"function\"\n ) {\n await navigator.clipboard.writeText(text);\n }\n\n return text;\n}\n\nfunction getDataTableCellSelectionRange(\n table: TanStackTable,\n columns: Array>,\n selection: DataTableCellSelection | null | undefined,\n) {\n if (!selection) return undefined;\n const rows = table.getRowModel().flatRows;\n const anchorRow = rows.findIndex((row) => row.id === selection.anchor.rowId);\n const focusRow = rows.findIndex((row) => row.id === selection.focus.rowId);\n const anchorColumn = columns.findIndex(\n (column) => column.id === selection.anchor.columnId,\n );\n const focusColumn = columns.findIndex(\n (column) => column.id === selection.focus.columnId,\n );\n if (anchorRow < 0 || focusRow < 0 || anchorColumn < 0 || focusColumn < 0) {\n return undefined;\n }\n return {\n rows: rows.slice(\n Math.min(anchorRow, focusRow),\n Math.max(anchorRow, focusRow) + 1,\n ),\n columns: columns\n .slice(\n Math.min(anchorColumn, focusColumn),\n Math.max(anchorColumn, focusColumn) + 1,\n )\n .filter(\n (column) =>\n !isUtilityColumnId(column.id) && column.id !== \"__spacer__\",\n ),\n };\n}\n\nexport function parseDataTableClipboardText(\n text: string,\n delimiter: \"\\t\" | \",\" = \"\\t\",\n) {\n const rows: Array> = [];\n let row: Array = [];\n let value = \"\";\n let quoted = false;\n\n for (let index = 0; index < text.length; index += 1) {\n const character = text[index];\n const nextCharacter = text[index + 1];\n if (character === '\"') {\n if (quoted && nextCharacter === '\"') {\n value += '\"';\n index += 1;\n } else {\n quoted = !quoted;\n }\n continue;\n }\n if (!quoted && character === delimiter) {\n row.push(value);\n value = \"\";\n continue;\n }\n if (!quoted && (character === \"\\n\" || character === \"\\r\")) {\n if (character === \"\\r\" && nextCharacter === \"\\n\") index += 1;\n row.push(value);\n rows.push(row);\n row = [];\n value = \"\";\n continue;\n }\n value += character;\n }\n\n row.push(value);\n if (row.length > 1 || row[0] || rows.length === 0) rows.push(row);\n return rows;\n}\n\nfunction escapeDelimitedCell(\n value: unknown,\n delimiter: string,\n escapeFormulaValues: boolean,\n) {\n let text = normalizeFilterValue(value);\n if (\n escapeFormulaValues &&\n typeof value === \"string\" &&\n /^[\\t\\r ]*[=+\\-@]/.test(value)\n ) {\n text = `'${text}`;\n }\n if (\n text.includes(delimiter) ||\n text.includes('\"') ||\n text.includes(\"\\n\") ||\n text.includes(\"\\r\")\n ) {\n return `\"${text.replace(/\"/g, '\"\"')}\"`;\n }\n return text;\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-toolbar-operations-IDEGCKBK.js b/dist/data-table-toolbar-operations-E6KRSUL6.js similarity index 97% rename from dist/data-table-toolbar-operations-IDEGCKBK.js rename to dist/data-table-toolbar-operations-E6KRSUL6.js index 7f28e3c..d7cd5aa 100644 --- a/dist/data-table-toolbar-operations-IDEGCKBK.js +++ b/dist/data-table-toolbar-operations-E6KRSUL6.js @@ -1,2 +1,2 @@ -import {s}from'./chunk-CVR2ZXHQ.js';import*as d from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function ne({placement:l,ui:u,labels:t,enableColumnChooser:h,enableFilterChips:O,enableResetLayout:y,enableSavedViews:M,enableColumnPinning:B,columnVisibilityOptions:H,onColumnVisibilityChange:U,onColumnPinningChange:c,reorderColumn:_,table:v,onResetColumnLayout:$,savedViews:z,onCreateSavedView:P,onApplySavedView:j,onRenameSavedView:K,onDeleteSavedView:W,toolbarQueryValue:D,onToolbarQueryValueChange:V,activeColumnFilters:T,onColumnFilterChange:q,onClearColumnFilters:Q}){let[k,J]=d.useState(""),[f,E]=d.useState(""),[X,L]=d.useState(null),[w,R]=d.useState(""),{Button:b,DropdownMenuCheckboxItem:Y,DropdownMenuGroup:x,DropdownMenuItem:r,DropdownMenuLabel:A,DropdownMenuSeparator:g,InputGroup:C,InputGroupAddon:Z,InputGroupInput:S}=u,m=v.getAllLeafColumns().map(e=>e.id).filter(e=>!e.startsWith("__")),ee=H.filter(e=>e.label.toLocaleLowerCase().includes(k.toLocaleLowerCase())),I=T.length+(D?1:0);if(l==="chips")return !O||!I?null:jsxs("div",{"data-dtp-slot":"data-table-active-filters","aria-label":`${t.filters}: ${I}`,className:"flex min-w-0 flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[t.filters," (",I,")"]}),D?jsxs(b,{type:"button",variant:"secondary",size:"sm","aria-label":t.clearSearch,onClick:()=>V(""),children:[D," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}):null,T.map(e=>jsxs(b,{type:"button",variant:"secondary",size:"sm","aria-label":`${t.clearFilters}: ${e.label}`,onClick:()=>q(e.id,""),children:[e.label,": ",te(e.value)," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]},e.id)),jsx(b,{type:"button",variant:"ghost",size:"sm",onClick:()=>{V(""),Q();},children:t.clearFilters})]});if(!h&&!y&&!M)return null;let G=e=>v.setColumnVisibility(a=>{let o={...a};for(let p of v.getAllLeafColumns())!p.id.startsWith("__")&&p.getCanHide()&&(o[p.id]=e);return o}),F=(e,a)=>{let o=m.indexOf(e),p=m[o+a];o>=0&&p&&_(e,p);};return jsxs(Fragment,{children:[h?jsxs(Fragment,{children:[jsx(g,{}),jsx(A,{children:t.columns}),jsx("div",{className:"px-2 pb-2",children:jsxs(C,{children:[jsx(S,{value:k,onChange:e=>J(e.target.value),placeholder:t.searchColumns,"aria-label":t.searchColumns}),jsx(Z,{align:"inline-start","aria-hidden":"true",children:jsx(s,{})})]})}),jsxs(x,{children:[jsx(r,{onSelect:e=>{e.preventDefault(),G(true);},children:t.showAllColumns}),jsx(r,{onSelect:e=>{e.preventDefault(),G(false);},children:t.hideAllColumns}),ee.map(e=>{let a=m.indexOf(e.id);return jsxs(d.Fragment,{children:[jsx(Y,{checked:e.visible,disabled:!e.canHide,onCheckedChange:o=>U?.(e.id,o===true),children:e.label}),jsx(r,{disabled:a<=0,onSelect:o=>{o.preventDefault(),F(e.id,-1);},children:t.moveColumnEarlier(e.label)}),jsx(r,{disabled:a<0||a===m.length-1,onSelect:o=>{o.preventDefault(),F(e.id,1);},children:t.moveColumnLater(e.label)}),B?jsxs(Fragment,{children:[jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,"left");},children:[t.pinLeft,": ",e.label]}),jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,"right");},children:[t.pinRight,": ",e.label]}),jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,false);},children:[t.unpin,": ",e.label]})]}):null]},e.id)})]})]}):null,y?jsxs(Fragment,{children:[jsx(g,{}),jsx(r,{onSelect:e=>{e.preventDefault(),$();},children:t.resetColumnLayout})]}):null,M?jsxs(Fragment,{children:[jsx(g,{}),jsx(A,{children:t.savedViews}),jsx("div",{className:"px-2 pb-2",children:jsx(C,{children:jsx(S,{value:f,onChange:e=>E(e.target.value),placeholder:t.savedViewName,"aria-label":t.savedViewName})})}),jsx(r,{disabled:!f.trim(),onSelect:e=>{e.preventDefault(),P(f.trim())&&E("");},children:t.createSavedView}),jsx(x,{children:z.map(e=>X===e.id?jsxs("div",{className:"flex gap-1 px-2 py-1",role:"group","aria-label":t.renameSavedView(e.name),children:[jsx(C,{children:jsx(S,{value:w,onChange:a=>R(a.target.value),"aria-label":t.savedViewName})}),jsx(r,{onSelect:a=>{a.preventDefault(),w.trim()&&K(e.id,w.trim())&&L(null);},children:t.saveSavedView})]},e.id):jsxs(d.Fragment,{children:[jsx(r,{onSelect:a=>{a.preventDefault(),j(e.id);},children:e.name}),jsx(r,{onSelect:a=>{a.preventDefault(),L(e.id),R(e.name);},children:t.renameSavedView(e.name)}),jsx(r,{onSelect:a=>{a.preventDefault(),W(e.id);},children:t.deleteSavedView(e.name)})]},e.id))})]}):null]})}function te(l){if(Array.isArray(l))return l.map(String).join(", ");if(l&&typeof l=="object"){let u=l;if("from"in u||"to"in u)return [u.from,u.to].filter(Boolean).map(String).join("\u2013")}return String(l)}export{ne as default};//# sourceMappingURL=data-table-toolbar-operations-IDEGCKBK.js.map -//# sourceMappingURL=data-table-toolbar-operations-IDEGCKBK.js.map \ No newline at end of file +import {s}from'./chunk-CVR2ZXHQ.js';import*as d from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function ne({placement:l,ui:u,labels:t,enableColumnChooser:h,enableFilterChips:O,enableResetLayout:y,enableSavedViews:M,enableColumnPinning:B,columnVisibilityOptions:H,onColumnVisibilityChange:U,onColumnPinningChange:c,reorderColumn:_,table:v,onResetColumnLayout:$,savedViews:z,onCreateSavedView:P,onApplySavedView:j,onRenameSavedView:K,onDeleteSavedView:W,toolbarQueryValue:D,onToolbarQueryValueChange:V,activeColumnFilters:T,onColumnFilterChange:q,onClearColumnFilters:Q}){let[k,J]=d.useState(""),[f,E]=d.useState(""),[X,L]=d.useState(null),[w,R]=d.useState(""),{Button:b,DropdownMenuCheckboxItem:Y,DropdownMenuGroup:x,DropdownMenuItem:r,DropdownMenuLabel:A,DropdownMenuSeparator:g,InputGroup:C,InputGroupAddon:Z,InputGroupInput:S}=u,m=v.getAllLeafColumns().map(e=>e.id).filter(e=>!e.startsWith("__")),ee=H.filter(e=>e.label.toLocaleLowerCase().includes(k.toLocaleLowerCase())),I=T.length+(D?1:0);if(l==="chips")return !O||!I?null:jsxs("div",{"data-dtp-slot":"data-table-active-filters","aria-label":`${t.filters}: ${I}`,className:"flex min-w-0 flex-wrap items-center gap-2",children:[jsxs("span",{className:"text-sm opacity-70",children:[t.filters," (",I,")"]}),D?jsxs(b,{type:"button",variant:"secondary",size:"sm","aria-label":t.clearSearch,onClick:()=>V(""),children:[D," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]}):null,T.map(e=>jsxs(b,{type:"button",variant:"secondary",size:"sm","aria-label":`${t.clearFilters}: ${e.label}`,onClick:()=>q(e.id,""),children:[e.label,": ",te(e.value)," ",jsx("span",{"aria-hidden":"true",children:"\xD7"})]},e.id)),jsx(b,{type:"button",variant:"ghost",size:"sm",onClick:()=>{V(""),Q();},children:t.clearFilters})]});if(!h&&!y&&!M)return null;let G=e=>v.setColumnVisibility(a=>{let o={...a};for(let p of v.getAllLeafColumns())!p.id.startsWith("__")&&p.getCanHide()&&(o[p.id]=e);return o}),F=(e,a)=>{let o=m.indexOf(e),p=m[o+a];o>=0&&p&&_(e,p);};return jsxs(Fragment,{children:[h?jsxs(Fragment,{children:[jsx(g,{}),jsx(A,{children:t.columns}),jsx("div",{className:"px-2 pb-2",children:jsxs(C,{children:[jsx(S,{value:k,onChange:e=>J(e.target.value),placeholder:t.searchColumns,"aria-label":t.searchColumns}),jsx(Z,{align:"inline-start","aria-hidden":"true",children:jsx(s,{})})]})}),jsxs(x,{children:[jsx(r,{onSelect:e=>{e.preventDefault(),G(true);},children:t.showAllColumns}),jsx(r,{onSelect:e=>{e.preventDefault(),G(false);},children:t.hideAllColumns}),ee.map(e=>{let a=m.indexOf(e.id);return jsxs(d.Fragment,{children:[jsx(Y,{checked:e.visible,disabled:!e.canHide,onCheckedChange:o=>U?.(e.id,o===true),children:e.label}),jsx(r,{disabled:a<=0,onSelect:o=>{o.preventDefault(),F(e.id,-1);},children:t.moveColumnEarlier(e.label)}),jsx(r,{disabled:a<0||a===m.length-1,onSelect:o=>{o.preventDefault(),F(e.id,1);},children:t.moveColumnLater(e.label)}),B?jsxs(Fragment,{children:[jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,"left");},children:[t.pinLeft,": ",e.label]}),jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,"right");},children:[t.pinRight,": ",e.label]}),jsxs(r,{onSelect:o=>{o.preventDefault(),c(e.id,false);},children:[t.unpin,": ",e.label]})]}):null]},e.id)})]})]}):null,y?jsxs(Fragment,{children:[jsx(g,{}),jsx(r,{onSelect:e=>{e.preventDefault(),$();},children:t.resetColumnLayout})]}):null,M?jsxs(Fragment,{children:[jsx(g,{}),jsx(A,{children:t.savedViews}),jsx("div",{className:"px-2 pb-2",children:jsx(C,{children:jsx(S,{value:f,onChange:e=>E(e.target.value),placeholder:t.savedViewName,"aria-label":t.savedViewName})})}),jsx(r,{disabled:!f.trim(),onSelect:e=>{e.preventDefault(),P(f.trim())&&E("");},children:t.createSavedView}),jsx(x,{children:z.map(e=>X===e.id?jsxs("div",{className:"flex gap-1 px-2 py-1",role:"group","aria-label":t.renameSavedView(e.name),children:[jsx(C,{children:jsx(S,{value:w,onChange:a=>R(a.target.value),"aria-label":t.savedViewName})}),jsx(r,{onSelect:a=>{a.preventDefault(),w.trim()&&K(e.id,w.trim())&&L(null);},children:t.saveSavedView})]},e.id):jsxs(d.Fragment,{children:[jsx(r,{onSelect:a=>{a.preventDefault(),j(e.id);},children:e.name}),jsx(r,{onSelect:a=>{a.preventDefault(),L(e.id),R(e.name);},children:t.renameSavedView(e.name)}),jsx(r,{onSelect:a=>{a.preventDefault(),W(e.id);},children:t.deleteSavedView(e.name)})]},e.id))})]}):null]})}function te(l){if(Array.isArray(l))return l.map(String).join(", ");if(l&&typeof l=="object"){let u=l;if("from"in u||"to"in u)return [u.from,u.to].filter(Boolean).map(String).join("\u2013")}return String(l)}export{ne as default};//# sourceMappingURL=data-table-toolbar-operations-E6KRSUL6.js.map +//# sourceMappingURL=data-table-toolbar-operations-E6KRSUL6.js.map \ No newline at end of file diff --git a/dist/data-table-toolbar-operations-E6KRSUL6.js.map b/dist/data-table-toolbar-operations-E6KRSUL6.js.map new file mode 100644 index 0000000..ca09985 --- /dev/null +++ b/dist/data-table-toolbar-operations-E6KRSUL6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/core/data-table/data-table-toolbar-operations.tsx"],"names":["ToolbarDataOperations","placement","ui","labels","enableColumnChooser","enableFilterChips","enableResetLayout","enableSavedViews","enableColumnPinning","columnVisibilityOptions","onColumnVisibilityChange","onColumnPinningChange","reorderColumn","table","onResetColumnLayout","savedViews","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","toolbarQueryValue","onToolbarQueryValueChange","activeColumnFilters","onColumnFilterChange","onClearColumnFilters","columnQuery","setColumnQuery","newSavedViewName","setNewSavedViewName","renamingSavedViewId","setRenamingSavedViewId","renamedSavedViewName","setRenamedSavedViewName","Button","DropdownMenuCheckboxItem","DropdownMenuGroup","DropdownMenuItem","DropdownMenuLabel","DropdownMenuSeparator","InputGroup","InputGroupAddon","InputGroupInput","orderedIds","column","id","columns","activeCount","jsxs","jsx","filter","formatValue","setVisibility","visible","current","next","move","direction","index","target","Fragment","event","IconSearch","checked","view","value","range"],"mappings":"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","file":"data-table-toolbar-operations-E6KRSUL6.js","sourcesContent":["import * as React from \"react\";\nimport { IconSearch } from \"../icons\";\nimport type {\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableLabels,\n DataTableSavedView,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\nimport type { DataTableTanStackTable as Table } from \"./tanstack-v9\";\n\ntype ToolbarUi = Pick<\n DataTableUiKit,\n | \"Button\"\n | \"DropdownMenuCheckboxItem\"\n | \"DropdownMenuGroup\"\n | \"DropdownMenuItem\"\n | \"DropdownMenuLabel\"\n | \"DropdownMenuSeparator\"\n | \"InputGroup\"\n | \"InputGroupAddon\"\n | \"InputGroupInput\"\n>;\n\ntype ActiveFilter = { id: string; label: string; value: unknown };\n\ntype ToolbarDataOperationsProps = {\n placement: \"menu\" | \"chips\";\n ui: ToolbarUi;\n labels: Required;\n enableColumnChooser: boolean;\n enableFilterChips: boolean;\n enableResetLayout: boolean;\n enableSavedViews: boolean;\n enableColumnPinning: boolean;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n onColumnPinningChange: (\n columnId: string,\n side: DataTableColumnFixed | false,\n ) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: Table;\n onResetColumnLayout: () => void;\n savedViews: Array;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n toolbarQueryValue: string;\n onToolbarQueryValueChange: (value: string) => void;\n activeColumnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n};\n\nexport default function ToolbarDataOperations({\n placement,\n ui,\n labels,\n enableColumnChooser,\n enableFilterChips,\n enableResetLayout,\n enableSavedViews,\n enableColumnPinning,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n onColumnPinningChange,\n reorderColumn,\n table,\n onResetColumnLayout,\n savedViews,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n activeColumnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n}: ToolbarDataOperationsProps) {\n const [columnQuery, setColumnQuery] = React.useState(\"\");\n const [newSavedViewName, setNewSavedViewName] = React.useState(\"\");\n const [renamingSavedViewId, setRenamingSavedViewId] = React.useState<\n string | null\n >(null);\n const [renamedSavedViewName, setRenamedSavedViewName] = React.useState(\"\");\n const {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n } = ui;\n const orderedIds = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((id) => !id.startsWith(\"__\"));\n const columns = columnVisibilityOptions.filter((column) =>\n column.label.toLocaleLowerCase().includes(columnQuery.toLocaleLowerCase()),\n );\n const activeCount = activeColumnFilters.length + (toolbarQueryValue ? 1 : 0);\n\n if (placement === \"chips\") {\n if (!enableFilterChips || !activeCount) {\n return null;\n }\n return (\n \n \n {labels.filters} ({activeCount})\n \n {toolbarQueryValue ? (\n onToolbarQueryValueChange(\"\")}\n >\n {toolbarQueryValue} ×\n \n ) : null}\n {activeColumnFilters.map((filter) => (\n onColumnFilterChange(filter.id, \"\")}\n >\n {filter.label}: {formatValue(filter.value)}{\" \"}\n ×\n \n ))}\n {\n onToolbarQueryValueChange(\"\");\n onClearColumnFilters();\n }}\n >\n {labels.clearFilters}\n \n \n );\n }\n\n if (!enableColumnChooser && !enableResetLayout && !enableSavedViews) {\n return null;\n }\n const setVisibility = (visible: boolean) =>\n table.setColumnVisibility((current) => {\n const next = { ...current };\n for (const column of table.getAllLeafColumns()) {\n if (!column.id.startsWith(\"__\") && column.getCanHide()) {\n next[column.id] = visible;\n }\n }\n return next;\n });\n const move = (id: string, direction: -1 | 1) => {\n const index = orderedIds.indexOf(id);\n const target = orderedIds[index + direction];\n if (index >= 0 && target) {\n reorderColumn(id, target);\n }\n };\n return (\n <>\n {enableColumnChooser ? (\n <>\n \n {labels.columns}\n
\n \n ) =>\n setColumnQuery(event.target.value)\n }\n placeholder={labels.searchColumns}\n aria-label={labels.searchColumns}\n />\n \n \n \n \n
\n \n {\n event.preventDefault();\n setVisibility(true);\n }}\n >\n {labels.showAllColumns}\n \n {\n event.preventDefault();\n setVisibility(false);\n }}\n >\n {labels.hideAllColumns}\n \n {columns.map((column) => {\n const index = orderedIds.indexOf(column.id);\n return (\n \n \n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n )\n }\n >\n {column.label}\n \n {\n event.preventDefault();\n move(column.id, -1);\n }}\n >\n {labels.moveColumnEarlier(column.label)}\n \n {\n event.preventDefault();\n move(column.id, 1);\n }}\n >\n {labels.moveColumnLater(column.label)}\n \n {enableColumnPinning ? (\n <>\n {\n event.preventDefault();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n {labels.pinLeft}: {column.label}\n \n {\n event.preventDefault();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n {labels.pinRight}: {column.label}\n \n {\n event.preventDefault();\n onColumnPinningChange(column.id, false);\n }}\n >\n {labels.unpin}: {column.label}\n \n \n ) : null}\n \n );\n })}\n \n \n ) : null}\n {enableResetLayout ? (\n <>\n \n {\n event.preventDefault();\n onResetColumnLayout();\n }}\n >\n {labels.resetColumnLayout}\n \n \n ) : null}\n {enableSavedViews ? (\n <>\n \n {labels.savedViews}\n
\n \n ) =>\n setNewSavedViewName(event.target.value)\n }\n placeholder={labels.savedViewName}\n aria-label={labels.savedViewName}\n />\n \n
\n {\n event.preventDefault();\n if (onCreateSavedView(newSavedViewName.trim())) {\n setNewSavedViewName(\"\");\n }\n }}\n >\n {labels.createSavedView}\n \n \n {savedViews.map((view) =>\n renamingSavedViewId === view.id ? (\n \n \n ,\n ) => setRenamedSavedViewName(event.target.value)}\n aria-label={labels.savedViewName}\n />\n \n {\n event.preventDefault();\n if (\n renamedSavedViewName.trim() &&\n onRenameSavedView(\n view.id,\n renamedSavedViewName.trim(),\n )\n ) {\n setRenamingSavedViewId(null);\n }\n }}\n >\n {labels.saveSavedView}\n \n \n ) : (\n \n {\n event.preventDefault();\n onApplySavedView(view.id);\n }}\n >\n {view.name}\n \n {\n event.preventDefault();\n setRenamingSavedViewId(view.id);\n setRenamedSavedViewName(view.name);\n }}\n >\n {labels.renameSavedView(view.name)}\n \n {\n event.preventDefault();\n onDeleteSavedView(view.id);\n }}\n >\n {labels.deleteSavedView(view.name)}\n \n \n ),\n )}\n \n \n ) : null}\n \n );\n}\n\nfunction formatValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.map(String).join(\", \");\n }\n if (value && typeof value === \"object\") {\n const range = value as { from?: unknown; to?: unknown };\n if (\"from\" in range || \"to\" in range) {\n return [range.from, range.to]\n .filter(Boolean)\n .map(String)\n .join(\"–\");\n }\n }\n return String(value);\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-toolbar-operations-IDEGCKBK.js.map b/dist/data-table-toolbar-operations-IDEGCKBK.js.map deleted file mode 100644 index c65d945..0000000 --- a/dist/data-table-toolbar-operations-IDEGCKBK.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/core/data-table/data-table-toolbar-operations.tsx"],"names":["ToolbarDataOperations","placement","ui","labels","enableColumnChooser","enableFilterChips","enableResetLayout","enableSavedViews","enableColumnPinning","columnVisibilityOptions","onColumnVisibilityChange","onColumnPinningChange","reorderColumn","table","onResetColumnLayout","savedViews","onCreateSavedView","onApplySavedView","onRenameSavedView","onDeleteSavedView","toolbarQueryValue","onToolbarQueryValueChange","activeColumnFilters","onColumnFilterChange","onClearColumnFilters","columnQuery","setColumnQuery","newSavedViewName","setNewSavedViewName","renamingSavedViewId","setRenamingSavedViewId","renamedSavedViewName","setRenamedSavedViewName","Button","DropdownMenuCheckboxItem","DropdownMenuGroup","DropdownMenuItem","DropdownMenuLabel","DropdownMenuSeparator","InputGroup","InputGroupAddon","InputGroupInput","orderedIds","column","id","columns","activeCount","jsxs","jsx","filter","formatValue","setVisibility","visible","current","next","move","direction","index","target","Fragment","event","IconSearch","checked","view","value","range"],"mappings":"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","file":"data-table-toolbar-operations-IDEGCKBK.js","sourcesContent":["import * as React from \"react\";\nimport type { Table } from \"@tanstack/react-table\";\nimport { IconSearch } from \"../icons\";\nimport type {\n DataTableColumnFixed,\n DataTableColumnVisibilityOption,\n DataTableLabels,\n DataTableSavedView,\n} from \"../types\";\nimport type { DataTableUiKit } from \"../ui-kit\";\n\ntype ToolbarUi = Pick<\n DataTableUiKit,\n | \"Button\"\n | \"DropdownMenuCheckboxItem\"\n | \"DropdownMenuGroup\"\n | \"DropdownMenuItem\"\n | \"DropdownMenuLabel\"\n | \"DropdownMenuSeparator\"\n | \"InputGroup\"\n | \"InputGroupAddon\"\n | \"InputGroupInput\"\n>;\n\ntype ActiveFilter = { id: string; label: string; value: unknown };\n\ntype ToolbarDataOperationsProps = {\n placement: \"menu\" | \"chips\";\n ui: ToolbarUi;\n labels: Required;\n enableColumnChooser: boolean;\n enableFilterChips: boolean;\n enableResetLayout: boolean;\n enableSavedViews: boolean;\n enableColumnPinning: boolean;\n columnVisibilityOptions: Array;\n onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;\n onColumnPinningChange: (\n columnId: string,\n side: DataTableColumnFixed | false,\n ) => void;\n reorderColumn: (sourceColumnId: string, targetColumnId: string) => void;\n table: Table;\n onResetColumnLayout: () => void;\n savedViews: Array;\n onCreateSavedView: (name: string) => DataTableSavedView | undefined;\n onApplySavedView: (id: string) => boolean;\n onRenameSavedView: (\n id: string,\n name: string,\n ) => DataTableSavedView | undefined;\n onDeleteSavedView: (id: string) => boolean;\n toolbarQueryValue: string;\n onToolbarQueryValueChange: (value: string) => void;\n activeColumnFilters: Array;\n onColumnFilterChange: (columnId: string, value: unknown) => void;\n onClearColumnFilters: () => void;\n};\n\nexport default function ToolbarDataOperations({\n placement,\n ui,\n labels,\n enableColumnChooser,\n enableFilterChips,\n enableResetLayout,\n enableSavedViews,\n enableColumnPinning,\n columnVisibilityOptions,\n onColumnVisibilityChange,\n onColumnPinningChange,\n reorderColumn,\n table,\n onResetColumnLayout,\n savedViews,\n onCreateSavedView,\n onApplySavedView,\n onRenameSavedView,\n onDeleteSavedView,\n toolbarQueryValue,\n onToolbarQueryValueChange,\n activeColumnFilters,\n onColumnFilterChange,\n onClearColumnFilters,\n}: ToolbarDataOperationsProps) {\n const [columnQuery, setColumnQuery] = React.useState(\"\");\n const [newSavedViewName, setNewSavedViewName] = React.useState(\"\");\n const [renamingSavedViewId, setRenamingSavedViewId] = React.useState<\n string | null\n >(null);\n const [renamedSavedViewName, setRenamedSavedViewName] = React.useState(\"\");\n const {\n Button,\n DropdownMenuCheckboxItem,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n } = ui;\n const orderedIds = table\n .getAllLeafColumns()\n .map((column) => column.id)\n .filter((id) => !id.startsWith(\"__\"));\n const columns = columnVisibilityOptions.filter((column) =>\n column.label.toLocaleLowerCase().includes(columnQuery.toLocaleLowerCase()),\n );\n const activeCount = activeColumnFilters.length + (toolbarQueryValue ? 1 : 0);\n\n if (placement === \"chips\") {\n if (!enableFilterChips || !activeCount) {\n return null;\n }\n return (\n \n \n {labels.filters} ({activeCount})\n \n {toolbarQueryValue ? (\n onToolbarQueryValueChange(\"\")}\n >\n {toolbarQueryValue} ×\n \n ) : null}\n {activeColumnFilters.map((filter) => (\n onColumnFilterChange(filter.id, \"\")}\n >\n {filter.label}: {formatValue(filter.value)}{\" \"}\n ×\n \n ))}\n {\n onToolbarQueryValueChange(\"\");\n onClearColumnFilters();\n }}\n >\n {labels.clearFilters}\n \n \n );\n }\n\n if (!enableColumnChooser && !enableResetLayout && !enableSavedViews) {\n return null;\n }\n const setVisibility = (visible: boolean) =>\n table.setColumnVisibility((current) => {\n const next = { ...current };\n for (const column of table.getAllLeafColumns()) {\n if (!column.id.startsWith(\"__\") && column.getCanHide()) {\n next[column.id] = visible;\n }\n }\n return next;\n });\n const move = (id: string, direction: -1 | 1) => {\n const index = orderedIds.indexOf(id);\n const target = orderedIds[index + direction];\n if (index >= 0 && target) {\n reorderColumn(id, target);\n }\n };\n return (\n <>\n {enableColumnChooser ? (\n <>\n \n {labels.columns}\n
\n \n ) =>\n setColumnQuery(event.target.value)\n }\n placeholder={labels.searchColumns}\n aria-label={labels.searchColumns}\n />\n \n \n \n \n
\n \n {\n event.preventDefault();\n setVisibility(true);\n }}\n >\n {labels.showAllColumns}\n \n {\n event.preventDefault();\n setVisibility(false);\n }}\n >\n {labels.hideAllColumns}\n \n {columns.map((column) => {\n const index = orderedIds.indexOf(column.id);\n return (\n \n \n onColumnVisibilityChange?.(\n column.id,\n checked === true,\n )\n }\n >\n {column.label}\n \n {\n event.preventDefault();\n move(column.id, -1);\n }}\n >\n {labels.moveColumnEarlier(column.label)}\n \n {\n event.preventDefault();\n move(column.id, 1);\n }}\n >\n {labels.moveColumnLater(column.label)}\n \n {enableColumnPinning ? (\n <>\n {\n event.preventDefault();\n onColumnPinningChange(column.id, \"left\");\n }}\n >\n {labels.pinLeft}: {column.label}\n \n {\n event.preventDefault();\n onColumnPinningChange(column.id, \"right\");\n }}\n >\n {labels.pinRight}: {column.label}\n \n {\n event.preventDefault();\n onColumnPinningChange(column.id, false);\n }}\n >\n {labels.unpin}: {column.label}\n \n \n ) : null}\n \n );\n })}\n \n \n ) : null}\n {enableResetLayout ? (\n <>\n \n {\n event.preventDefault();\n onResetColumnLayout();\n }}\n >\n {labels.resetColumnLayout}\n \n \n ) : null}\n {enableSavedViews ? (\n <>\n \n {labels.savedViews}\n
\n \n ) =>\n setNewSavedViewName(event.target.value)\n }\n placeholder={labels.savedViewName}\n aria-label={labels.savedViewName}\n />\n \n
\n {\n event.preventDefault();\n if (onCreateSavedView(newSavedViewName.trim())) {\n setNewSavedViewName(\"\");\n }\n }}\n >\n {labels.createSavedView}\n \n \n {savedViews.map((view) =>\n renamingSavedViewId === view.id ? (\n \n \n ,\n ) => setRenamedSavedViewName(event.target.value)}\n aria-label={labels.savedViewName}\n />\n \n {\n event.preventDefault();\n if (\n renamedSavedViewName.trim() &&\n onRenameSavedView(\n view.id,\n renamedSavedViewName.trim(),\n )\n ) {\n setRenamingSavedViewId(null);\n }\n }}\n >\n {labels.saveSavedView}\n \n \n ) : (\n \n {\n event.preventDefault();\n onApplySavedView(view.id);\n }}\n >\n {view.name}\n \n {\n event.preventDefault();\n setRenamingSavedViewId(view.id);\n setRenamedSavedViewName(view.name);\n }}\n >\n {labels.renameSavedView(view.name)}\n \n {\n event.preventDefault();\n onDeleteSavedView(view.id);\n }}\n >\n {labels.deleteSavedView(view.name)}\n \n \n ),\n )}\n \n \n ) : null}\n \n );\n}\n\nfunction formatValue(value: unknown) {\n if (Array.isArray(value)) {\n return value.map(String).join(\", \");\n }\n if (value && typeof value === \"object\") {\n const range = value as { from?: unknown; to?: unknown };\n if (\"from\" in range || \"to\" in range) {\n return [range.from, range.to]\n .filter(Boolean)\n .map(String)\n .join(\"–\");\n }\n }\n return String(value);\n}\n"]} \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-3PHPB23A.js b/dist/data-table-virtual-card-panel-3PHPB23A.js deleted file mode 100644 index 1405201..0000000 --- a/dist/data-table-virtual-card-panel-3PHPB23A.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualCardPanel}from'./chunk-B6JTUAWE.js';import'./chunk-EJHT5JBZ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-card-panel-3PHPB23A.js.map -//# sourceMappingURL=data-table-virtual-card-panel-3PHPB23A.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-Z3BPBPG4.js b/dist/data-table-virtual-card-panel-Z3BPBPG4.js new file mode 100644 index 0000000..005ab91 --- /dev/null +++ b/dist/data-table-virtual-card-panel-Z3BPBPG4.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualCardPanel}from'./chunk-LTEXTQ2M.js';import'./chunk-EJHT5JBZ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-card-panel-Z3BPBPG4.js.map +//# sourceMappingURL=data-table-virtual-card-panel-Z3BPBPG4.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-card-panel-3PHPB23A.js.map b/dist/data-table-virtual-card-panel-Z3BPBPG4.js.map similarity index 62% rename from dist/data-table-virtual-card-panel-3PHPB23A.js.map rename to dist/data-table-virtual-card-panel-Z3BPBPG4.js.map index 485290e..82afff0 100644 --- a/dist/data-table-virtual-card-panel-3PHPB23A.js.map +++ b/dist/data-table-virtual-card-panel-Z3BPBPG4.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-3PHPB23A.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-card-panel-Z3BPBPG4.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-UK5AMT4Q.js b/dist/data-table-virtual-table-panel-UK5AMT4Q.js new file mode 100644 index 0000000..e37752d --- /dev/null +++ b/dist/data-table-virtual-table-panel-UK5AMT4Q.js @@ -0,0 +1,2 @@ +export{a as DataTableVirtualTablePanel}from'./chunk-IZQDLLCH.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-table-panel-UK5AMT4Q.js.map +//# sourceMappingURL=data-table-virtual-table-panel-UK5AMT4Q.js.map \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-ZOYCXFM5.js.map b/dist/data-table-virtual-table-panel-UK5AMT4Q.js.map similarity index 62% rename from dist/data-table-virtual-table-panel-ZOYCXFM5.js.map rename to dist/data-table-virtual-table-panel-UK5AMT4Q.js.map index 4b66d53..64310ef 100644 --- a/dist/data-table-virtual-table-panel-ZOYCXFM5.js.map +++ b/dist/data-table-virtual-table-panel-UK5AMT4Q.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-ZOYCXFM5.js"} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"data-table-virtual-table-panel-UK5AMT4Q.js"} \ No newline at end of file diff --git a/dist/data-table-virtual-table-panel-ZOYCXFM5.js b/dist/data-table-virtual-table-panel-ZOYCXFM5.js deleted file mode 100644 index 1cd6bc5..0000000 --- a/dist/data-table-virtual-table-panel-ZOYCXFM5.js +++ /dev/null @@ -1,2 +0,0 @@ -export{a as DataTableVirtualTablePanel}from'./chunk-W7VNQT7O.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';//# sourceMappingURL=data-table-virtual-table-panel-ZOYCXFM5.js.map -//# sourceMappingURL=data-table-virtual-table-panel-ZOYCXFM5.js.map \ No newline at end of file diff --git a/dist/heroui-virtual.d.ts b/dist/heroui-virtual.d.ts index e9ddc29..5beff98 100644 --- a/dist/heroui-virtual.d.ts +++ b/dist/heroui-virtual.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/heroui-virtual.js b/dist/heroui-virtual.js index 3976e47..34b2f03 100644 --- a/dist/heroui-virtual.js +++ b/dist/heroui-virtual.js @@ -1,2 +1,2 @@ -import {a as a$2}from'./chunk-GIX7N3AJ.js';import {a as a$1}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import'./chunk-VSIOOKCO.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map +import {a as a$2}from'./chunk-GIX7N3AJ.js';import {a as a$1}from'./chunk-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import'./chunk-VSIOOKCO.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=heroui-virtual.js.map //# sourceMappingURL=heroui-virtual.js.map \ No newline at end of file diff --git a/dist/heroui.d.ts b/dist/heroui.d.ts index e9ddc29..5beff98 100644 --- a/dist/heroui.d.ts +++ b/dist/heroui.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/heroui.js b/dist/heroui.js index bba80b2..4effe21 100644 --- a/dist/heroui.js +++ b/dist/heroui.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-GIX7N3AJ.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map +import {a as a$1}from'./chunk-GIX7N3AJ.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=heroui.js.map //# sourceMappingURL=heroui.js.map \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index e9ddc29..5beff98 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/index.js b/dist/index.js index 2716bc8..af89e38 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-RS7MSX54.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map +import {a as a$1}from'./chunk-RS7MSX54.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/thegridcn-virtual.d.ts b/dist/thegridcn-virtual.d.ts index e9ddc29..5beff98 100644 --- a/dist/thegridcn-virtual.d.ts +++ b/dist/thegridcn-virtual.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/thegridcn-virtual.js b/dist/thegridcn-virtual.js index 16153cc..a53fa65 100644 --- a/dist/thegridcn-virtual.js +++ b/dist/thegridcn-virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import {a as a$2}from'./chunk-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map +import {a as a$1}from'./chunk-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import {a as a$2}from'./chunk-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';var a=a$1(a$2);export{a as DataTable};//# sourceMappingURL=thegridcn-virtual.js.map //# sourceMappingURL=thegridcn-virtual.js.map \ No newline at end of file diff --git a/dist/thegridcn.d.ts b/dist/thegridcn.d.ts index e9ddc29..5beff98 100644 --- a/dist/thegridcn.d.ts +++ b/dist/thegridcn.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/thegridcn.js b/dist/thegridcn.js index ad133ef..f2e0cfe 100644 --- a/dist/thegridcn.js +++ b/dist/thegridcn.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map +import {a as a$1}from'./chunk-2JHOYUSH.js';import'./chunk-VSIOOKCO.js';import {i}from'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';var a=i(a$1);export{a as DataTable};//# sourceMappingURL=thegridcn.js.map //# sourceMappingURL=thegridcn.js.map \ No newline at end of file diff --git a/dist/types-BGNR6Ymh.d.ts b/dist/types-BGNR6Ymh.d.ts new file mode 100644 index 0000000..b7536fd --- /dev/null +++ b/dist/types-BGNR6Ymh.d.ts @@ -0,0 +1,849 @@ +import * as _tanstack_react_table from '@tanstack/react-table'; +import { ColumnDef, Table, AggregationFnDef, filterFns, RowData, CellContext, FilterFnOption, Row, Cell, Header, Column, HeaderContext, ColumnFiltersState, SortingState, GroupingState, ExpandedState, ColumnOrderState, RowPinningState, ColumnVisibilityState, PaginationState, ColumnSizingState, Updater } from '@tanstack/react-table'; +import * as React from 'react'; + +type BuiltInFilterFn = (typeof filterFns)[keyof typeof filterFns]; +declare const dataTableFeatures: { + columnFacetingFeature: _tanstack_react_table.TableFeature; + columnFilteringFeature: _tanstack_react_table.TableFeature; + globalFilteringFeature: _tanstack_react_table.TableFeature; + rowAggregationFeature: _tanstack_react_table.TableFeature; + columnGroupingFeature: _tanstack_react_table.TableFeature; + columnOrderingFeature: _tanstack_react_table.TableFeature; + columnPinningFeature: _tanstack_react_table.TableFeature; + columnSizingFeature: _tanstack_react_table.TableFeature; + columnResizingFeature: _tanstack_react_table.TableFeature; + columnVisibilityFeature: _tanstack_react_table.TableFeature; + rowExpandingFeature: _tanstack_react_table.TableFeature; + rowPaginationFeature: _tanstack_react_table.TableFeature; + rowPinningFeature: _tanstack_react_table.TableFeature; + rowSelectionFeature: _tanstack_react_table.TableFeature; + rowSortingFeature: _tanstack_react_table.TableFeature; + expandedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + facetedMinMaxValues: (table: Table<_tanstack_react_table.TableFeatures, any>, columnId: string) => () => undefined | [number, number]; + facetedRowModel: (table: Table, columnId: string) => () => _tanstack_react_table.RowModel; + facetedUniqueValues: (table: Table<_tanstack_react_table.TableFeatures, any>, columnId: string) => () => Map; + filteredRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + groupedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + paginatedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + sortedRowModel: (table: Table) => () => _tanstack_react_table.RowModel; + aggregationFns: { + [x: string]: AggregationFnDef; + }; + filterFns: Record; + sortFns: { + alphanumeric: _tanstack_react_table.CreatedSortFn; + alphanumericCaseSensitive: _tanstack_react_table.CreatedSortFn; + basic: _tanstack_react_table.CreatedSortFn; + datetime: _tanstack_react_table.CreatedSortFn; + text: _tanstack_react_table.CreatedSortFn; + textCaseSensitive: _tanstack_react_table.CreatedSortFn; + }; +}; +type DataTableFeatures = typeof dataTableFeatures; +type DataTableRowData = Extract; +type DataTableTanStackTable = Table>; +type DataTableTanStackRow = Row>; +type DataTableTanStackColumn = Column, TValue>; +type DataTableTanStackCell = Cell, TValue>; +type DataTableTanStackHeader = Header, TValue>; +type DataTableTanStackColumnDef = ColumnDef, TValue>; +type DataTableTanStackCellContext = CellContext, TValue>; +type DataTableTanStackHeaderContext = HeaderContext, TValue>; +type DataTableTanStackFilterFnOption = FilterFnOption>; +type DataTableTanStackAggregationFn = AggregationFnDef>; + +type DataTableViewMode = "table" | "card"; +/** Accessibility behavior for the table view. Native table semantics remain the default. */ +type DataTableAccessibilityOptions = { + /** + * `grid` enables spreadsheet-like roving focus and keyboard navigation. + * `native` (the default) retains ordinary HTML table keyboard behavior. + */ + mode?: "native" | "grid"; + /** Number of rows moved by PageUp/PageDown when layout cannot be measured. */ + pageSize?: number; +}; +/** Shorthand configuration for the interactive ARIA grid mode. */ +type DataTableInteractiveGridOptions = Omit; +/** A stable grid coordinate used for cell and rectangular range selection. */ +type DataTableCellCoordinate = { + rowId: string; + columnId: string; +}; +/** The two corners of a cell selection. A single-cell selection has equal corners. */ +type DataTableCellSelection = { + anchor: DataTableCellCoordinate; + focus: DataTableCellCoordinate; +}; +type DataTableGridCommandContext = { + table: DataTableTanStackTable; + cellSelection: DataTableCellSelection | null; +}; +/** Commands are delegated to the application; the table never records app data. */ +type DataTableGridCommands = { + undo?: (context: DataTableGridCommandContext) => void | Promise; + redo?: (context: DataTableGridCommandContext) => void | Promise; +}; +type DataTableAlign = "start" | "center" | "end"; +type DataTableColumnType = "text" | "numeric" | "date"; +type DataTableColumnFixed = "left" | "right"; +/** Physical pinning state retained at the public API and persistence boundary. */ +type DataTableColumnPinningState = { + left?: Array; + right?: Array; +}; +/** A TanStack Table v9 context-based aggregation definition. */ +type DataTableAggregationFn = DataTableTanStackAggregationFn; +type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; +type DataTableDensity = "compact" | "comfortable" | "spacious"; +type DataTableCardSizing = "fixed" | "content" | "fluid"; +type DataTableCellOverflow = "truncate" | "clip" | "wrap" | "visible"; +type DataTableColumnFilterType = "text" | "select" | "multi" | "faceted" | "boolean" | "numberRange" | "dateRange"; +type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; +type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; +type DataTableClipboardCopyScope = DataTableCsvExportScope | "cellSelection"; +type DataTableClipboardCopyOptions = { + includeHeaders?: boolean; + columns?: Array; + scope?: DataTableClipboardCopyScope; + /** Defaults to tab-separated text. */ + delimiter?: "\t" | ","; + escapeFormulaValues?: boolean; + getCellValue?: (context: { + row: TData; + rowId: string; + columnId: string; + value: unknown; + }) => unknown; + /** Host-owned clipboard delivery for non-browser or permission-managed apps. */ + onCopy?: (context: { + text: string; + rows: Array; + scope: DataTableClipboardCopyScope; + }) => void | Promise; +}; +type DataTableClipboardPasteContext = { + text: string; + values: Array>; + table: DataTableTanStackTable; +}; +type DataTableClipboardConfig = { + copy?: boolean | DataTableClipboardCopyOptions; + paste?: { + enabled?: boolean; + preventDefault?: boolean; + onPaste: (context: DataTableClipboardPasteContext) => void | Promise; + }; +}; +type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "undo" | "redo" | "clipboardCopy" | "clipboardPaste" | "fileUpload" | "infiniteScroll" | "retry"; +declare const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record; +type DataTableRowLoadingState = { + isLoading: boolean; + skeleton?: React.ReactNode; +}; +type DataTableLoadingState = { + isLoading: boolean; + loadingRowCount?: number; +}; +type DataTableAutoPageSizeConfig = { + minRows?: number; + maxRows?: number; + estimateRowHeight?: number; +}; +type DataTableStateOverlayContext = { + rows: Array; + toolbarQueryValue: string; + error: unknown; + isRetrying: boolean; + retry: (() => void | Promise) | undefined; +}; +type DataTableStateOverlay = { + empty?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); + error?: unknown; + isRetrying?: boolean; + onRetry?: () => void | Promise; + renderError?: (context: DataTableStateOverlayContext) => React.ReactNode; +}; +type DataTableCellEditRenderProps = { + cell: DataTableTanStackCellContext; + row: TData; + value: TValue | undefined; + draftValue: unknown; + setDraftValue: (value: unknown) => void; + error?: string; + isDirty: boolean; + isPending: boolean; +}; +type DataTableColumnFilterOption = { + label: string; + value: string; + /** Number of matching records. Omit when the count is not known. */ + count?: number; + disabled?: boolean; +}; +type DataTableFacetedFilterOptions = { + /** + * Server-provided facet values. When supplied, these take precedence over + * locally calculated unique values and their counts. + */ + options?: Array | ((context: { + rows: Array; + }) => Array); + /** Render a readable label for values discovered from the local row model. */ + getOptionLabel?: (value: TValue | undefined) => string; + /** Enables an in-menu search input. Defaults to true. */ + searchable?: boolean; + searchPlaceholder?: string; +}; +type DataTableColumnFilterRangeValue = { + from?: TValue; + to?: TValue; +}; +type DataTableColumnFilterConfig = { + type: DataTableColumnFilterType; + label?: string; + placeholder?: string; + options?: Array | ((context: { + rows: Array; + }) => Array); + getOptionValue?: (value: TValue | undefined, row: TData) => string; + /** Settings for `type: "faceted"`, including server-provided facet data. */ + faceting?: DataTableFacetedFilterOptions; + operator?: DataTableColumnFilterOperator; + trueLabel?: string; + falseLabel?: string; + min?: number | string; + max?: number | string; + step?: number; +}; +type DataTableColumnMeta = { + type?: DataTableColumnType; + fixed?: DataTableColumnFixed; + cardTitle?: boolean; + hideOn?: DataTableContainerBreakpoint | Array; + minWidth?: number; + align?: DataTableAlign; + overflow?: DataTableCellOverflow | ((args: { + row: TData; + value: TValue | undefined; + }) => DataTableCellOverflow | undefined); + headerClassName?: string; + headerStyle?: React.CSSProperties; + cellClassName?: string | ((args: { + row: TData; + value: TValue | undefined; + }) => string | undefined); + responsiveClassName?: string; + skeleton?: (context: DataTableTanStackCellContext) => React.ReactNode; + filter?: DataTableColumnFilterConfig; + parseEditValue?: (value: unknown, context: DataTableTanStackCellContext) => unknown; + formatEditValue?: (value: unknown, context: DataTableTanStackCellContext) => string; + renderEditCell?: (props: DataTableCellEditRenderProps) => React.ReactNode; +}; +type DataTableColumnDef = DataTableTanStackColumnDef & { + meta?: DataTableColumnMeta; + columns?: Array>; +}; +type DataTableColumnGroupDef = DataTableColumnDef & { + id: string; + columns: Array>; + /** + * A concise explanation of the columns in this group. It is exposed as an + * accessible description and native tooltip on the shared header. + */ + description?: string; + /** + * Allows leaves to cross this group's boundary during column reordering. + * Groups are locked by default so a shared heading remains intact. + */ + freeReordering?: boolean; + /** Additional class name for this shared group header. */ + headerClassName?: string; + /** Additional inline styles for this shared group header. */ + headerStyle?: React.CSSProperties; + /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */ + headerHeight?: React.CSSProperties["height"]; +}; +type DataTableToolbarAction = { + key: string; + label: string; + icon?: React.ComponentType<{ + className?: string; + }>; + iconOnly?: boolean; + placement?: "primary" | "trailing"; + onClick: (context: { + rows: Array; + openFileDialog?: () => void; + }) => void | Promise; + variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; + disabled?: boolean; +}; +type DataTableSelectionActionContext = { + /** Selected row objects that are present in the currently loaded data. */ + rows: Array; + /** Every selected row id, including ids retained across server pages. */ + rowIds: Array; +}; +type DataTableSelectionAction = { + key: string; + label: string; + icon?: React.ComponentType<{ + className?: string; + }>; + iconOnly?: boolean; + onClick: (context: DataTableSelectionActionContext) => void | Promise; + variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; + disabled?: boolean | ((rows: Array, context: DataTableSelectionActionContext) => boolean); +}; +type DataTableRowAction = { + key: string; + label: string | ((row: TData) => string); + icon?: React.ComponentType<{ + className?: string; + }>; + onClick: (row: TData) => void | Promise; + variant?: "default" | "secondary" | "destructive"; + hidden?: (row: TData) => boolean; + disabled?: (row: TData) => boolean; +}; +type DataTableColumnVisibilityOption = { + id: string; + label: string; + visible: boolean; + canHide: boolean; + pinned?: false | DataTableColumnFixed; +}; +type DataTableToolbarVisibility = { + title?: boolean; + search?: boolean; + actions?: boolean; + trailingActions?: boolean; + options?: boolean; + viewToggle?: boolean; + customToolbar?: boolean; +}; +/** Optional toolbar controls for working with the current table layout and views. */ +type DataTableToolbarDataOperations = { + /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */ + columnChooser?: boolean; + /** Create, apply, rename, and delete saved views when `savedViews` is configured. */ + savedViews?: boolean; + /** Adds a reset-layout action using the table's initial layout. */ + resetLayout?: boolean; +}; +type DataTableCardRendererProps = { + row: TData; + rowId: string; + depth: number; + canExpandSubRows: boolean; + isSubRowsExpanded: boolean; + toggleSubRowsExpanded: () => void; + isSelected: boolean; + onSelectedChange: (nextValue: boolean) => void; + actions: Array>; + isEditing: boolean; + startEditing: () => void; + cancelEditing: () => void; +}; +type DataTableEditableRowsConfig = { + canEditRow?: (row: TData) => boolean; + getInitialValues?: (row: TData) => Record; + validateRow?: (row: TData, draftValues: Record) => void | string | Record | Promise>; + /** Apply an optimistic host update and optionally return a rollback callback. */ + onOptimisticUpdate?: (row: TData, draftValues: Record) => void | (() => void); + onSaveRow: (row: TData, draftValues: Record) => void | Promise; + onSaveSuccess?: (row: TData, draftValues: Record) => void; + onSaveError?: (error: unknown, row: TData, draftValues: Record) => void; + /** Defaults to true for inputs owned by the table. */ + commitOnEnter?: boolean; + /** Defaults to true for inputs owned by the table. */ + cancelOnEscape?: boolean; +}; +type DataTableInfiniteScroll = { + enabled: boolean; + hasMore: boolean; + isLoadingMore?: boolean; + onLoadMore: () => void | Promise; +}; +type DataTableHiddenRowsConfig = { + getIsHidden: (row: TData) => boolean; + label?: string; +}; +type DataTableEmptyStateContext = { + rows: Array; + toolbarQueryValue: string; +}; +type DataTableDragAndDropConfig = { + isDragging?: boolean; + onDragEnter?: React.DragEventHandler; + onDragOver?: React.DragEventHandler; + onDragLeave?: React.DragEventHandler; + onDrop?: React.DragEventHandler; + getRowDraggable?: (row: TData) => boolean; + onRowDragStart?: (context: { + row: TData; + rowId: string; + event: React.DragEvent; + }) => void; + onRowDragEnd?: (context: { + row: TData; + rowId: string; + event: React.DragEvent; + }) => void; +}; +type DataTableFileUploadConfig = { + accept?: string; + disabled?: boolean; + multiple?: boolean; + onFilesSelected: (files: FileList | Array) => void | Promise; +}; +type DataTableVirtualizationConfig = { + enabled?: boolean; + estimateRowHeight?: number; + fallbackRowCount?: number; + overscan?: number; + card?: DataTableCardVirtualizationConfig; +}; +type DataTableCardVirtualizationConfig = { + enabled?: boolean; + estimateCardHeight?: number; + fallbackCardCount?: number; + overscan?: number; + lanes?: number | "auto"; +}; +type DataTableExpandedRowProps = { + row: TData; + rowId: string; + tableRow: DataTableTanStackRow; +}; +/** A separately controlled application detail panel rendered beneath a row. */ +type DataTableDetailPanel = { + expanded?: ExpandedState; + onExpandedChange?: (expanded: ExpandedState) => void; + getRowCanExpand?: (row: TData) => boolean; + render: (props: DataTableExpandedRowProps) => React.ReactNode; +}; +type DataTableCsvExportOptions = { + filename?: string; + includeHeaders?: boolean; + columns?: Array; + scope?: DataTableCsvExportScope; + escapeFormulaValues?: boolean; + lineEnding?: "\n" | "\r\n"; + getCellValue?: (context: { + row: TData; + rowId: string; + columnId: string; + value: unknown; + }) => unknown; + onExport?: (context: { + csv: string; + filename: string; + rows: Array; + scope: DataTableCsvExportScope; + }) => void | Promise; +}; +type DataTableActionErrorContext = { + source: DataTableActionErrorSource; + error: unknown; + actionKey?: string; + row?: TData; +}; +type DataTableColumnPrefs = { + visibility?: ColumnVisibilityState; + sizing?: Record; + order?: ColumnOrderState; + pinning?: DataTableColumnPinningState; + rowPinning?: RowPinningState; + density?: DataTableDensity; +}; +type DataTablePersistenceSlice = keyof DataTableColumnPrefs; +type DataTablePersistenceStorage = Pick; +type DataTablePersistenceOperation = "read" | "write" | "remove" | "serialize" | "deserialize" | "migrate"; +type DataTablePersistencePayload = { + version: string | number; + state: DataTableColumnPrefs; +}; +type DataTablePersistenceConfig = { + key: string; + version?: string | number; + slices?: Array; + storage?: DataTablePersistenceStorage; + serialize?: (payload: DataTablePersistencePayload) => string; + deserialize?: (value: string) => unknown; + migrate?: (payload: { + version: unknown; + state: unknown; + }, targetVersion: string | number) => DataTableColumnPrefs | undefined; + debounceMs?: number; + onError?: (context: { + error: unknown; + operation: DataTablePersistenceOperation; + }) => void; +}; +type DataTableState = { + sorting: SortingState; + pagination: PaginationState; + rowSelection: Record; + columnVisibility: ColumnVisibilityState; + columnFilters: ColumnFiltersState; + expanded: ExpandedState; + columnOrder: ColumnOrderState; + columnPinning: DataTableColumnPinningState; + rowPinning: RowPinningState; + columnSizing: ColumnSizingState; + /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ + grouping?: GroupingState; + density: DataTableDensity; + viewMode: DataTableViewMode; + showHiddenRows: boolean; + globalFilter: string; +}; +type DataTableInitialState = Partial; +type DataTableSavedViewSlice = keyof DataTableState; +type DataTableSavedView = { + id: string; + name: string; + createdAt: string; + updatedAt: string; + state: Partial; +}; +type DataTableSavedViewsPayload = { + version: string | number; + views: Array; +}; +type DataTableSavedViewsChangeOperation = "create" | "rename" | "delete" | "clear"; +type DataTableSavedViewsConfig = { + key: string; + version?: string | number; + slices?: Array; + storage?: DataTablePersistenceStorage; + serialize?: (payload: DataTableSavedViewsPayload) => string; + deserialize?: (value: string) => unknown; + migrate?: (payload: { + version: unknown; + views: unknown; + }, targetVersion: string | number) => Array | undefined; + onChange?: (views: Array, operation: DataTableSavedViewsChangeOperation) => void; + onApply?: (view: DataTableSavedView) => void; + onError?: (context: { + error: unknown; + operation: DataTablePersistenceOperation; + }) => void; +}; +type DataTableResetOptions = { + clearPersistence?: boolean; +}; +type DataTableApi = { + getTable: () => DataTableTanStackTable | null; + getState: () => DataTableState; + snapshot: () => DataTableState; + restore: (state: Partial) => void; + resetColumnLayout: (options?: DataTableResetOptions) => void; + resetState: (options?: DataTableResetOptions) => void; + clearPersistedState: () => boolean; + getSavedViews: () => Array; + createSavedView: (name: string) => DataTableSavedView | undefined; + applySavedView: (id: string) => boolean; + renameSavedView: (id: string, name: string) => DataTableSavedView | undefined; + deleteSavedView: (id: string) => boolean; + clearSavedViews: () => boolean; + pinRow: (rowId: string, position?: "top" | "bottom") => boolean; + unpinRow: (rowId: string) => boolean; + focus: () => void; + scrollToRow: (rowId: string) => boolean; + scrollToColumn: (columnId: string) => boolean; + exportCsv: (options?: boolean | DataTableCsvExportOptions) => Promise; + copyToClipboard: (options?: boolean | DataTableClipboardCopyOptions) => Promise; + getCellSelection: () => DataTableCellSelection | null; + setCellSelection: (selection: DataTableCellSelection | null) => void; + clearCellSelection: () => void; + print: () => boolean; + toggleFullscreen: () => Promise; +}; +type DataTableLabels = { + searchPlaceholder: string; + searchTable: string; + clearSearch: string; + noRowsTitle: string; + noRowsDescription: string; + noMatchingRowsTitle: string; + noMatchingRowsDescription: string; + tableOptions: string; + columns: string; + filters: string; + clearFilters: string; + filterFrom?: string; + filterTo?: string; + filterTrue?: string; + filterFalse?: string; + selectedRows: (count: number) => string; + showHiddenRows: (label: string) => string; + recordsPerPage: string; + totalRecords: (count: number) => string; + pageStatus: (pageIndex: number, pageCount: number) => string; + pageStatusUnknown?: (pageIndex: number) => string; + pagination?: string; + morePages?: string; + firstPage: string; + previousPage: string; + nextPage: string; + lastPage: string; + selectAllVisibleRows?: string; + selectAllFilteredRows?: string; + selectRow?: string; + selectCardRow?: (rowId: string) => string; + switchToTableView?: string; + switchToCardView?: string; + tableView?: string; + cardView?: string; + allFilterOptions?: string; + actions: string; + rowActions: string; + editRow: string; + saveEdit: string; + cancelEdit: string; + expandRow: string; + collapseRow: string; + expandRowDetails?: string; + collapseRowDetails?: string; + exportCsv: string; + print?: string; + enterFullscreen?: string; + exitFullscreen?: string; + errorTitle?: string; + errorDescription?: string; + retry?: string; + density: string; + compactDensity: string; + comfortableDensity: string; + spaciousDensity: string; + pinLeft: string; + pinRight: string; + unpin: string; + pinRowToTop: string; + pinRowToBottom: string; + unpinRow: string; + resizeColumn: (columnLabel: string) => string; + grouping?: string; + groupBy?: (columnLabel: string) => string; + ungroup?: (columnLabel: string) => string; + removeGrouping?: (columnLabel: string) => string; + moveGroupingEarlier?: (columnLabel: string) => string; + moveGroupingLater?: (columnLabel: string) => string; + facetSearch?: (columnLabel: string) => string; + searchColumns?: string; + showAllColumns?: string; + hideAllColumns?: string; + moveColumnEarlier?: (columnLabel: string) => string; + moveColumnLater?: (columnLabel: string) => string; + resetColumnLayout?: string; + savedViews?: string; + createSavedView?: string; + savedViewName?: string; + applySavedView?: (name: string) => string; + renameSavedView?: (name: string) => string; + deleteSavedView?: (name: string) => string; + saveSavedView?: string; +}; +type DataTableSummaryRow = { + key: string; + label?: React.ReactNode; + cells: Record; + columnId: string; + }) => React.ReactNode)>; +}; +type DataTableRowClassNameContext = { + row: TData; + rowId: string; + rowIndex: number; + isEditing: boolean; + isExpanded: boolean; + isLoading: boolean; + isSelected: boolean; + pinnedPosition: false | "top" | "bottom"; +}; +type DataTableScrollbarVisibility = "auto" | "always" | "scroll" | "hover"; +type DataTableProps = { + columns: Array>; + data: Array; + getRowId: (row: TData, index: number) => string; + children?: React.ReactNode; + title?: string; + description?: string; + toolbarQueryValue?: string; + onToolbarQueryValueChange?: (value: string) => void; + toolbarQueryPlaceholder?: string; + toolbarQueryDebounceMs?: number; + manualFiltering?: boolean; + enableToolbarQueryFiltering?: boolean; + globalFilterFn?: DataTableTanStackFilterFnOption; + columnFilters?: ColumnFiltersState; + onColumnFiltersChange?: (filters: ColumnFiltersState) => void; + enableColumnFilters?: boolean; + customToolbar?: React.ReactNode; + compactToolbar?: React.ReactNode; + rowsPerPageOptions?: Array; + totalRowCount?: number; + hasNextPage?: boolean; + sorting?: SortingState; + onSortingChange?: (sorting: SortingState) => void; + manualSorting?: boolean; + grouping?: GroupingState; + onGroupingChange?: (grouping: GroupingState) => void; + /** Use rows already grouped by the server instead of TanStack's grouping model. */ + manualGrouping?: boolean; + /** Show group/ungroup controls in the table options menu and grouping bar. */ + enableGrouping?: boolean; + /** Controls whether grouped columns are reordered, removed, or left in place. */ + groupedColumnMode?: false | "reorder" | "remove"; + /** Named aggregation functions available to column `aggregationFn` definitions. */ + aggregationFns?: Record>; + pageIndex?: number; + pageSize?: number; + /** Sizes an opt-in page from the measurable table scroll viewport. */ + autoPageSize?: boolean | DataTableAutoPageSizeConfig; + onPageIndexChange?: (pageIndex: number) => void; + onPageSizeChange?: (pageSize: number) => void; + pageCount?: number; + manualPagination?: boolean; + rowSelection?: Record; + onRowSelectionChange?: (rowSelection: Record) => void; + enableRowSelection?: boolean; + /** Allows multiple selected rows globally or per row. Defaults to true. */ + enableMultiRowSelection?: boolean | ((row: TData) => boolean); + /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */ + enableSubRowSelection?: boolean | ((row: TData) => boolean); + /** Prevents individual rows from being selected. */ + getRowCanSelect?: (row: TData) => boolean; + /** Select-all affects the current page or all loaded filtered rows. */ + rowSelectionSelectAllScope?: "page" | "filtered"; + expanded?: ExpandedState; + onExpandedChange?: (expanded: ExpandedState) => void; + /** Resolve nested records for tree expansion. */ + getSubRows?: (row: TData, index: number) => Array | undefined; + /** Keep expansion state controlled by the host; useful for server-loaded children. */ + manualExpanding?: boolean; + /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */ + paginateExpandedRows?: boolean; + /** Include parents when a descendant matches a filter. */ + filterFromLeafRows?: boolean; + /** Limit descendant traversal while filtering. */ + maxLeafRowFilterDepth?: number; + /** New, independently controlled detail-panel contract. */ + detailPanel?: DataTableDetailPanel; + getRowCanExpand?: (row: TData) => boolean; + /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */ + renderExpandedRow?: (props: DataTableExpandedRowProps) => React.ReactNode; + columnOrder?: ColumnOrderState; + onColumnOrderChange?: (columnOrder: ColumnOrderState) => void; + enableColumnReordering?: boolean; + /** Default height for shared column-group header cells. */ + columnGroupHeaderHeight?: React.CSSProperties["height"]; + columnPinning?: DataTableColumnPinningState; + onColumnPinningChange?: (columnPinning: DataTableColumnPinningState) => void; + enableColumnPinning?: boolean; + rowPinning?: RowPinningState; + onRowPinningChange?: (rowPinning: RowPinningState) => void; + /** Enables row actions that pin a row to the top or bottom of the table. */ + enableRowPinning?: boolean | ((row: TData) => boolean); + /** Keep pinned rows visible when filtering or paginating them out. */ + keepPinnedRows?: boolean; + toolbarActions?: Array>; + selectionActions?: Array>; + rowActions?: Array>; + csvExport?: boolean | DataTableCsvExportOptions; + /** Opt-in TSV/CSV copy and application-owned paste handling. */ + clipboard?: DataTableClipboardConfig; + /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */ + enableCellSelection?: boolean; + /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */ + cellSelection?: DataTableCellSelection | null; + /** Initial cell/range selection when uncontrolled. */ + defaultCellSelection?: DataTableCellSelection | null; + onCellSelectionChange?: (selection: DataTableCellSelection | null) => void; + /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */ + gridCommands?: DataTableGridCommands; + density?: DataTableDensity; + onDensityChange?: (density: DataTableDensity) => void; + enableDensityToggle?: boolean; + columnPrefsKey?: string; + persistence?: DataTablePersistenceConfig; + savedViews?: DataTableSavedViewsConfig; + initialState?: DataTableInitialState; + state?: Partial; + onStateChange?: (updater: Updater) => void; + apiRef?: React.Ref>; + labels?: Partial; + summaryRows?: Array>; + cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode; + cardSizing?: DataTableCardSizing; + cardGridClassName?: string; + cardClassName?: string; + viewMode?: DataTableViewMode; + onViewModeChange?: (viewMode: DataTableViewMode) => void; + enableViewToggle?: boolean; + enablePrint?: boolean; + enableFullscreen?: boolean; + emptyState?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); + /** Explicit empty/error/retry rendering contract. */ + stateOverlay?: DataTableStateOverlay; + isLoading?: boolean; + loadingRowCount?: number; + getRowLoadingState?: (row: TData, index: number) => boolean | DataTableRowLoadingState; + hiddenRows?: DataTableHiddenRowsConfig; + showHiddenRows?: boolean; + onShowHiddenRowsChange?: (showHiddenRows: boolean) => void; + infiniteScroll?: DataTableInfiniteScroll; + editableRows?: DataTableEditableRowsConfig; + columnVisibility?: ColumnVisibilityState; + onColumnVisibilityChange?: (visibility: ColumnVisibilityState) => void; + columnSizing?: ColumnSizingState; + onColumnSizingChange?: (sizing: ColumnSizingState) => void; + enableColumnResizing?: boolean; + columnResizeMode?: "onChange" | "onEnd"; + layoutMode?: "fill" | "fit"; + stickyHeader?: boolean; + /** Controls when scrollbars are visible. Defaults to `"hover"`. */ + scrollbarVisibility?: DataTableScrollbarVisibility; + showFooter?: boolean; + showToolbar?: boolean; + dir?: "ltr" | "rtl"; + flexGrow?: boolean; + toolbarVisibility?: DataTableToolbarVisibility; + /** Opts into enhanced layout and saved-view toolbar controls. */ + toolbarDataOperations?: boolean | DataTableToolbarDataOperations; + className?: string; + tableClassName?: string; + tableContainerClassName?: string; + stripedRows?: boolean; + getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; + onRowClick?: (context: { + row: TData; + rowId: string; + }) => void | Promise; + onActionError?: (context: DataTableActionErrorContext) => void; + dragAndDrop?: DataTableDragAndDropConfig; + fileUpload?: DataTableFileUploadConfig; + virtualization?: boolean | DataTableVirtualizationConfig; + /** Opt in to ARIA grid semantics and roving keyboard navigation. */ + accessibility?: DataTableAccessibilityOptions; + /** Shorthand for `accessibility={{ mode: "grid" }}`. */ + interactiveGrid?: boolean | DataTableInteractiveGridOptions; +}; +declare function isRowVisible(row: TData, hiddenRows: DataTableHiddenRowsConfig | undefined, showHiddenRows: boolean): boolean; +declare function resolveRowActionLabel(label: DataTableRowAction["label"], row: TData): string; +declare function canUseRowAction(action: DataTableRowAction, row: TData): boolean; +declare function canEditRow(editableRows: DataTableEditableRowsConfig | undefined, row: TData): boolean; +declare function alignClassName(align: DataTableAlign | undefined): "text-center" | "text-right" | "text-left"; +declare function resolveColumnAlign(align: DataTableAlign | undefined, type: DataTableColumnType | undefined): DataTableAlign; +declare function headerAlignClassName(context: DataTableTanStackHeaderContext): "text-center" | "text-right" | "text-left"; +declare function cellAlignClassName(context: DataTableTanStackCellContext): "text-center" | "text-right" | "text-left"; +declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined): string | undefined; +declare function isHiddenAtContainerWidth(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; +declare function rowSelectionStateFromRows(rows: Array>): Extract[]; + +export { type DataTablePersistenceOperation as $, type DataTableColumnGroupDef as A, type DataTableColumnMeta as B, type DataTableColumnPinningState as C, type DataTableProps as D, type DataTableColumnPrefs as E, type DataTableColumnType as F, type DataTableColumnVisibilityOption as G, type DataTableContainerBreakpoint as H, type DataTableCsvExportOptions as I, type DataTableCsvExportScope as J, type DataTableDensity as K, type DataTableDetailPanel as L, type DataTableDragAndDropConfig as M, type DataTableEditableRowsConfig as N, type DataTableEmptyStateContext as O, type DataTableExpandedRowProps as P, type DataTableFacetedFilterOptions as Q, type DataTableFileUploadConfig as R, type DataTableGridCommandContext as S, type DataTableGridCommands as T, type DataTableHiddenRowsConfig as U, type DataTableInfiniteScroll as V, type DataTableInitialState as W, type DataTableInteractiveGridOptions as X, type DataTableLabels as Y, type DataTableLoadingState as Z, type DataTablePersistenceConfig as _, DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS as a, type DataTablePersistencePayload as a0, type DataTablePersistenceSlice as a1, type DataTablePersistenceStorage as a2, type DataTableResetOptions as a3, type DataTableRowAction as a4, type DataTableRowClassNameContext as a5, type DataTableRowLoadingState as a6, type DataTableSavedView as a7, type DataTableSavedViewSlice as a8, type DataTableSavedViewsChangeOperation as a9, type DataTableTanStackColumn as aA, type DataTableTanStackCell as aB, type DataTableTanStackTable as aC, type DataTableTanStackHeader as aD, type DataTableTanStackColumnDef as aE, type DataTableTanStackFilterFnOption as aF, type DataTableSavedViewsConfig as aa, type DataTableSavedViewsPayload as ab, type DataTableScrollbarVisibility as ac, type DataTableSelectionAction as ad, type DataTableSelectionActionContext as ae, type DataTableState as af, type DataTableStateOverlay as ag, type DataTableStateOverlayContext as ah, type DataTableSummaryRow as ai, type DataTableToolbarAction as aj, type DataTableToolbarDataOperations as ak, type DataTableToolbarVisibility as al, type DataTableViewMode as am, type DataTableVirtualizationConfig as an, alignClassName as ao, canEditRow as ap, canUseRowAction as aq, cellAlignClassName as ar, headerAlignClassName as as, hideOnClassName as at, isHiddenAtContainerWidth as au, isRowVisible as av, resolveColumnAlign as aw, resolveRowActionLabel as ax, rowSelectionStateFromRows as ay, type DataTableTanStackRow as az, type DataTableAccessibilityOptions as b, type DataTableActionErrorContext as c, type DataTableActionErrorSource as d, type DataTableAggregationFn as e, type DataTableAlign as f, type DataTableApi as g, type DataTableAutoPageSizeConfig as h, type DataTableCardRendererProps as i, type DataTableCardSizing as j, type DataTableCardVirtualizationConfig as k, type DataTableCellCoordinate as l, type DataTableCellEditRenderProps as m, type DataTableCellOverflow as n, type DataTableCellSelection as o, type DataTableClipboardConfig as p, type DataTableClipboardCopyOptions as q, type DataTableClipboardCopyScope as r, type DataTableClipboardPasteContext as s, type DataTableColumnDef as t, type DataTableColumnFilterConfig as u, type DataTableColumnFilterOperator as v, type DataTableColumnFilterOption as w, type DataTableColumnFilterRangeValue as x, type DataTableColumnFilterType as y, type DataTableColumnFixed as z }; diff --git a/dist/types.d.ts b/dist/types.d.ts index 03e087e..575713a 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -1,790 +1,3 @@ -import * as React from 'react'; -import { ColumnDef, CellContext, FilterFnOption, ColumnFiltersState, SortingState, GroupingState, AggregationFn, ExpandedState, Row, ColumnOrderState, ColumnPinningState, RowPinningState, Table, VisibilityState, PaginationState, ColumnSizingState, Updater, HeaderContext } from '@tanstack/react-table'; - -type DataTableViewMode = "table" | "card"; -/** Accessibility behavior for the table view. Native table semantics remain the default. */ -type DataTableAccessibilityOptions = { - /** - * `grid` enables spreadsheet-like roving focus and keyboard navigation. - * `native` (the default) retains ordinary HTML table keyboard behavior. - */ - mode?: "native" | "grid"; - /** Number of rows moved by PageUp/PageDown when layout cannot be measured. */ - pageSize?: number; -}; -/** Shorthand configuration for the interactive ARIA grid mode. */ -type DataTableInteractiveGridOptions = Omit; -/** A stable grid coordinate used for cell and rectangular range selection. */ -type DataTableCellCoordinate = { - rowId: string; - columnId: string; -}; -/** The two corners of a cell selection. A single-cell selection has equal corners. */ -type DataTableCellSelection = { - anchor: DataTableCellCoordinate; - focus: DataTableCellCoordinate; -}; -type DataTableGridCommandContext = { - table: Table; - cellSelection: DataTableCellSelection | null; -}; -/** Commands are delegated to the application; the table never records app data. */ -type DataTableGridCommands = { - undo?: (context: DataTableGridCommandContext) => void | Promise; - redo?: (context: DataTableGridCommandContext) => void | Promise; -}; -type DataTableAlign = "start" | "center" | "end"; -type DataTableColumnType = "text" | "numeric" | "date"; -type DataTableColumnFixed = "left" | "right"; -type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; -type DataTableDensity = "compact" | "comfortable" | "spacious"; -type DataTableCardSizing = "fixed" | "content" | "fluid"; -type DataTableCellOverflow = "truncate" | "clip" | "wrap" | "visible"; -type DataTableColumnFilterType = "text" | "select" | "multi" | "faceted" | "boolean" | "numberRange" | "dateRange"; -type DataTableColumnFilterOperator = "contains" | "equals" | "startsWith" | "endsWith"; -type DataTableCsvExportScope = "filtered" | "page" | "selected" | "all"; -type DataTableClipboardCopyScope = DataTableCsvExportScope | "cellSelection"; -type DataTableClipboardCopyOptions = { - includeHeaders?: boolean; - columns?: Array; - scope?: DataTableClipboardCopyScope; - /** Defaults to tab-separated text. */ - delimiter?: "\t" | ","; - escapeFormulaValues?: boolean; - getCellValue?: (context: { - row: TData; - rowId: string; - columnId: string; - value: unknown; - }) => unknown; - /** Host-owned clipboard delivery for non-browser or permission-managed apps. */ - onCopy?: (context: { - text: string; - rows: Array; - scope: DataTableClipboardCopyScope; - }) => void | Promise; -}; -type DataTableClipboardPasteContext = { - text: string; - values: Array>; - table: Table; -}; -type DataTableClipboardConfig = { - copy?: boolean | DataTableClipboardCopyOptions; - paste?: { - enabled?: boolean; - preventDefault?: boolean; - onPaste: (context: DataTableClipboardPasteContext) => void | Promise; - }; -}; -type DataTableActionErrorSource = "toolbarAction" | "selectionAction" | "rowAction" | "rowClick" | "edit" | "undo" | "redo" | "clipboardCopy" | "clipboardPaste" | "fileUpload" | "infiniteScroll" | "retry"; -declare const DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS: Record; -type DataTableRowLoadingState = { - isLoading: boolean; - skeleton?: React.ReactNode; -}; -type DataTableLoadingState = { - isLoading: boolean; - loadingRowCount?: number; -}; -type DataTableAutoPageSizeConfig = { - minRows?: number; - maxRows?: number; - estimateRowHeight?: number; -}; -type DataTableStateOverlayContext = { - rows: Array; - toolbarQueryValue: string; - error: unknown; - isRetrying: boolean; - retry: (() => void | Promise) | undefined; -}; -type DataTableStateOverlay = { - empty?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); - error?: unknown; - isRetrying?: boolean; - onRetry?: () => void | Promise; - renderError?: (context: DataTableStateOverlayContext) => React.ReactNode; -}; -type DataTableCellEditRenderProps = { - cell: CellContext; - row: TData; - value: TValue | undefined; - draftValue: unknown; - setDraftValue: (value: unknown) => void; - error?: string; - isDirty: boolean; - isPending: boolean; -}; -type DataTableColumnFilterOption = { - label: string; - value: string; - /** Number of matching records. Omit when the count is not known. */ - count?: number; - disabled?: boolean; -}; -type DataTableFacetedFilterOptions = { - /** - * Server-provided facet values. When supplied, these take precedence over - * locally calculated unique values and their counts. - */ - options?: Array | ((context: { - rows: Array; - }) => Array); - /** Render a readable label for values discovered from the local row model. */ - getOptionLabel?: (value: TValue | undefined) => string; - /** Enables an in-menu search input. Defaults to true. */ - searchable?: boolean; - searchPlaceholder?: string; -}; -type DataTableColumnFilterRangeValue = { - from?: TValue; - to?: TValue; -}; -type DataTableColumnFilterConfig = { - type: DataTableColumnFilterType; - label?: string; - placeholder?: string; - options?: Array | ((context: { - rows: Array; - }) => Array); - getOptionValue?: (value: TValue | undefined, row: TData) => string; - /** Settings for `type: "faceted"`, including server-provided facet data. */ - faceting?: DataTableFacetedFilterOptions; - operator?: DataTableColumnFilterOperator; - trueLabel?: string; - falseLabel?: string; - min?: number | string; - max?: number | string; - step?: number; -}; -type DataTableColumnMeta = { - type?: DataTableColumnType; - fixed?: DataTableColumnFixed; - cardTitle?: boolean; - hideOn?: DataTableContainerBreakpoint | Array; - minWidth?: number; - align?: DataTableAlign; - overflow?: DataTableCellOverflow | ((args: { - row: TData; - value: TValue | undefined; - }) => DataTableCellOverflow | undefined); - headerClassName?: string; - headerStyle?: React.CSSProperties; - cellClassName?: string | ((args: { - row: TData; - value: TValue | undefined; - }) => string | undefined); - responsiveClassName?: string; - skeleton?: (context: CellContext) => React.ReactNode; - filter?: DataTableColumnFilterConfig; - parseEditValue?: (value: unknown, context: CellContext) => unknown; - formatEditValue?: (value: unknown, context: CellContext) => string; - renderEditCell?: (props: DataTableCellEditRenderProps) => React.ReactNode; -}; -type DataTableColumnDef = ColumnDef & { - meta?: DataTableColumnMeta; - columns?: Array>; -}; -type DataTableColumnGroupDef = DataTableColumnDef & { - id: string; - columns: Array>; - /** - * A concise explanation of the columns in this group. It is exposed as an - * accessible description and native tooltip on the shared header. - */ - description?: string; - /** - * Allows leaves to cross this group's boundary during column reordering. - * Groups are locked by default so a shared heading remains intact. - */ - freeReordering?: boolean; - /** Additional class name for this shared group header. */ - headerClassName?: string; - /** Additional inline styles for this shared group header. */ - headerStyle?: React.CSSProperties; - /** Height for this shared group header, overriding `columnGroupHeaderHeight`. */ - headerHeight?: React.CSSProperties["height"]; -}; -type DataTableToolbarAction = { - key: string; - label: string; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - placement?: "primary" | "trailing"; - onClick: (context: { - rows: Array; - openFileDialog?: () => void; - }) => void | Promise; - variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; - disabled?: boolean; -}; -type DataTableSelectionActionContext = { - /** Selected row objects that are present in the currently loaded data. */ - rows: Array; - /** Every selected row id, including ids retained across server pages. */ - rowIds: Array; -}; -type DataTableSelectionAction = { - key: string; - label: string; - icon?: React.ComponentType<{ - className?: string; - }>; - iconOnly?: boolean; - onClick: (context: DataTableSelectionActionContext) => void | Promise; - variant?: "default" | "secondary" | "outline" | "ghost" | "destructive"; - disabled?: boolean | ((rows: Array, context: DataTableSelectionActionContext) => boolean); -}; -type DataTableRowAction = { - key: string; - label: string | ((row: TData) => string); - icon?: React.ComponentType<{ - className?: string; - }>; - onClick: (row: TData) => void | Promise; - variant?: "default" | "secondary" | "destructive"; - hidden?: (row: TData) => boolean; - disabled?: (row: TData) => boolean; -}; -type DataTableColumnVisibilityOption = { - id: string; - label: string; - visible: boolean; - canHide: boolean; - pinned?: false | DataTableColumnFixed; -}; -type DataTableToolbarVisibility = { - title?: boolean; - search?: boolean; - actions?: boolean; - trailingActions?: boolean; - options?: boolean; - viewToggle?: boolean; - customToolbar?: boolean; -}; -/** Optional toolbar controls for working with the current table layout and views. */ -type DataTableToolbarDataOperations = { - /** Search, bulk show/hide, pin, and keyboard-accessible column move controls. */ - columnChooser?: boolean; - /** Create, apply, rename, and delete saved views when `savedViews` is configured. */ - savedViews?: boolean; - /** Adds a reset-layout action using the table's initial layout. */ - resetLayout?: boolean; -}; -type DataTableCardRendererProps = { - row: TData; - rowId: string; - depth: number; - canExpandSubRows: boolean; - isSubRowsExpanded: boolean; - toggleSubRowsExpanded: () => void; - isSelected: boolean; - onSelectedChange: (nextValue: boolean) => void; - actions: Array>; - isEditing: boolean; - startEditing: () => void; - cancelEditing: () => void; -}; -type DataTableEditableRowsConfig = { - canEditRow?: (row: TData) => boolean; - getInitialValues?: (row: TData) => Record; - validateRow?: (row: TData, draftValues: Record) => void | string | Record | Promise>; - /** Apply an optimistic host update and optionally return a rollback callback. */ - onOptimisticUpdate?: (row: TData, draftValues: Record) => void | (() => void); - onSaveRow: (row: TData, draftValues: Record) => void | Promise; - onSaveSuccess?: (row: TData, draftValues: Record) => void; - onSaveError?: (error: unknown, row: TData, draftValues: Record) => void; - /** Defaults to true for inputs owned by the table. */ - commitOnEnter?: boolean; - /** Defaults to true for inputs owned by the table. */ - cancelOnEscape?: boolean; -}; -type DataTableInfiniteScroll = { - enabled: boolean; - hasMore: boolean; - isLoadingMore?: boolean; - onLoadMore: () => void | Promise; -}; -type DataTableHiddenRowsConfig = { - getIsHidden: (row: TData) => boolean; - label?: string; -}; -type DataTableEmptyStateContext = { - rows: Array; - toolbarQueryValue: string; -}; -type DataTableDragAndDropConfig = { - isDragging?: boolean; - onDragEnter?: React.DragEventHandler; - onDragOver?: React.DragEventHandler; - onDragLeave?: React.DragEventHandler; - onDrop?: React.DragEventHandler; - getRowDraggable?: (row: TData) => boolean; - onRowDragStart?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; - onRowDragEnd?: (context: { - row: TData; - rowId: string; - event: React.DragEvent; - }) => void; -}; -type DataTableFileUploadConfig = { - accept?: string; - disabled?: boolean; - multiple?: boolean; - onFilesSelected: (files: FileList | Array) => void | Promise; -}; -type DataTableVirtualizationConfig = { - enabled?: boolean; - estimateRowHeight?: number; - fallbackRowCount?: number; - overscan?: number; - card?: DataTableCardVirtualizationConfig; -}; -type DataTableCardVirtualizationConfig = { - enabled?: boolean; - estimateCardHeight?: number; - fallbackCardCount?: number; - overscan?: number; - lanes?: number | "auto"; -}; -type DataTableExpandedRowProps = { - row: TData; - rowId: string; - tableRow: Row; -}; -/** A separately controlled application detail panel rendered beneath a row. */ -type DataTableDetailPanel = { - expanded?: ExpandedState; - onExpandedChange?: (expanded: ExpandedState) => void; - getRowCanExpand?: (row: TData) => boolean; - render: (props: DataTableExpandedRowProps) => React.ReactNode; -}; -type DataTableCsvExportOptions = { - filename?: string; - includeHeaders?: boolean; - columns?: Array; - scope?: DataTableCsvExportScope; - escapeFormulaValues?: boolean; - lineEnding?: "\n" | "\r\n"; - getCellValue?: (context: { - row: TData; - rowId: string; - columnId: string; - value: unknown; - }) => unknown; - onExport?: (context: { - csv: string; - filename: string; - rows: Array; - scope: DataTableCsvExportScope; - }) => void | Promise; -}; -type DataTableActionErrorContext = { - source: DataTableActionErrorSource; - error: unknown; - actionKey?: string; - row?: TData; -}; -type DataTableColumnPrefs = { - visibility?: VisibilityState; - sizing?: Record; - order?: ColumnOrderState; - pinning?: ColumnPinningState; - rowPinning?: RowPinningState; - density?: DataTableDensity; -}; -type DataTablePersistenceSlice = keyof DataTableColumnPrefs; -type DataTablePersistenceStorage = Pick; -type DataTablePersistenceOperation = "read" | "write" | "remove" | "serialize" | "deserialize" | "migrate"; -type DataTablePersistencePayload = { - version: string | number; - state: DataTableColumnPrefs; -}; -type DataTablePersistenceConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTablePersistencePayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - state: unknown; - }, targetVersion: string | number) => DataTableColumnPrefs | undefined; - debounceMs?: number; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableState = { - sorting: SortingState; - pagination: PaginationState; - rowSelection: Record; - columnVisibility: VisibilityState; - columnFilters: ColumnFiltersState; - expanded: ExpandedState; - columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; - rowPinning: RowPinningState; - columnSizing: ColumnSizingState; - /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ - grouping?: GroupingState; - density: DataTableDensity; - viewMode: DataTableViewMode; - showHiddenRows: boolean; - globalFilter: string; -}; -type DataTableInitialState = Partial; -type DataTableSavedViewSlice = keyof DataTableState; -type DataTableSavedView = { - id: string; - name: string; - createdAt: string; - updatedAt: string; - state: Partial; -}; -type DataTableSavedViewsPayload = { - version: string | number; - views: Array; -}; -type DataTableSavedViewsChangeOperation = "create" | "rename" | "delete" | "clear"; -type DataTableSavedViewsConfig = { - key: string; - version?: string | number; - slices?: Array; - storage?: DataTablePersistenceStorage; - serialize?: (payload: DataTableSavedViewsPayload) => string; - deserialize?: (value: string) => unknown; - migrate?: (payload: { - version: unknown; - views: unknown; - }, targetVersion: string | number) => Array | undefined; - onChange?: (views: Array, operation: DataTableSavedViewsChangeOperation) => void; - onApply?: (view: DataTableSavedView) => void; - onError?: (context: { - error: unknown; - operation: DataTablePersistenceOperation; - }) => void; -}; -type DataTableResetOptions = { - clearPersistence?: boolean; -}; -type DataTableApi = { - getTable: () => Table | null; - getState: () => DataTableState; - snapshot: () => DataTableState; - restore: (state: Partial) => void; - resetColumnLayout: (options?: DataTableResetOptions) => void; - resetState: (options?: DataTableResetOptions) => void; - clearPersistedState: () => boolean; - getSavedViews: () => Array; - createSavedView: (name: string) => DataTableSavedView | undefined; - applySavedView: (id: string) => boolean; - renameSavedView: (id: string, name: string) => DataTableSavedView | undefined; - deleteSavedView: (id: string) => boolean; - clearSavedViews: () => boolean; - pinRow: (rowId: string, position?: "top" | "bottom") => boolean; - unpinRow: (rowId: string) => boolean; - focus: () => void; - scrollToRow: (rowId: string) => boolean; - scrollToColumn: (columnId: string) => boolean; - exportCsv: (options?: boolean | DataTableCsvExportOptions) => Promise; - copyToClipboard: (options?: boolean | DataTableClipboardCopyOptions) => Promise; - getCellSelection: () => DataTableCellSelection | null; - setCellSelection: (selection: DataTableCellSelection | null) => void; - clearCellSelection: () => void; - print: () => boolean; - toggleFullscreen: () => Promise; -}; -type DataTableLabels = { - searchPlaceholder: string; - searchTable: string; - clearSearch: string; - noRowsTitle: string; - noRowsDescription: string; - noMatchingRowsTitle: string; - noMatchingRowsDescription: string; - tableOptions: string; - columns: string; - filters: string; - clearFilters: string; - filterFrom?: string; - filterTo?: string; - filterTrue?: string; - filterFalse?: string; - selectedRows: (count: number) => string; - showHiddenRows: (label: string) => string; - recordsPerPage: string; - totalRecords: (count: number) => string; - pageStatus: (pageIndex: number, pageCount: number) => string; - pageStatusUnknown?: (pageIndex: number) => string; - pagination?: string; - morePages?: string; - firstPage: string; - previousPage: string; - nextPage: string; - lastPage: string; - selectAllVisibleRows?: string; - selectAllFilteredRows?: string; - selectRow?: string; - selectCardRow?: (rowId: string) => string; - switchToTableView?: string; - switchToCardView?: string; - tableView?: string; - cardView?: string; - allFilterOptions?: string; - actions: string; - rowActions: string; - editRow: string; - saveEdit: string; - cancelEdit: string; - expandRow: string; - collapseRow: string; - expandRowDetails?: string; - collapseRowDetails?: string; - exportCsv: string; - print?: string; - enterFullscreen?: string; - exitFullscreen?: string; - errorTitle?: string; - errorDescription?: string; - retry?: string; - density: string; - compactDensity: string; - comfortableDensity: string; - spaciousDensity: string; - pinLeft: string; - pinRight: string; - unpin: string; - pinRowToTop: string; - pinRowToBottom: string; - unpinRow: string; - resizeColumn: (columnLabel: string) => string; - grouping?: string; - groupBy?: (columnLabel: string) => string; - ungroup?: (columnLabel: string) => string; - removeGrouping?: (columnLabel: string) => string; - moveGroupingEarlier?: (columnLabel: string) => string; - moveGroupingLater?: (columnLabel: string) => string; - facetSearch?: (columnLabel: string) => string; - searchColumns?: string; - showAllColumns?: string; - hideAllColumns?: string; - moveColumnEarlier?: (columnLabel: string) => string; - moveColumnLater?: (columnLabel: string) => string; - resetColumnLayout?: string; - savedViews?: string; - createSavedView?: string; - savedViewName?: string; - applySavedView?: (name: string) => string; - renameSavedView?: (name: string) => string; - deleteSavedView?: (name: string) => string; - saveSavedView?: string; -}; -type DataTableSummaryRow = { - key: string; - label?: React.ReactNode; - cells: Record; - columnId: string; - }) => React.ReactNode)>; -}; -type DataTableRowClassNameContext = { - row: TData; - rowId: string; - rowIndex: number; - isEditing: boolean; - isExpanded: boolean; - isLoading: boolean; - isSelected: boolean; - pinnedPosition: false | "top" | "bottom"; -}; -type DataTableScrollbarVisibility = "auto" | "always" | "scroll" | "hover"; -type DataTableProps = { - columns: Array>; - data: Array; - getRowId: (row: TData, index: number) => string; - children?: React.ReactNode; - title?: string; - description?: string; - toolbarQueryValue?: string; - onToolbarQueryValueChange?: (value: string) => void; - toolbarQueryPlaceholder?: string; - toolbarQueryDebounceMs?: number; - manualFiltering?: boolean; - enableToolbarQueryFiltering?: boolean; - globalFilterFn?: FilterFnOption; - columnFilters?: ColumnFiltersState; - onColumnFiltersChange?: (filters: ColumnFiltersState) => void; - enableColumnFilters?: boolean; - customToolbar?: React.ReactNode; - compactToolbar?: React.ReactNode; - rowsPerPageOptions?: Array; - totalRowCount?: number; - hasNextPage?: boolean; - sorting?: SortingState; - onSortingChange?: (sorting: SortingState) => void; - manualSorting?: boolean; - grouping?: GroupingState; - onGroupingChange?: (grouping: GroupingState) => void; - /** Use rows already grouped by the server instead of TanStack's grouping model. */ - manualGrouping?: boolean; - /** Show group/ungroup controls in the table options menu and grouping bar. */ - enableGrouping?: boolean; - /** Controls whether grouped columns are reordered, removed, or left in place. */ - groupedColumnMode?: false | "reorder" | "remove"; - /** Named aggregation functions available to column `aggregationFn` definitions. */ - aggregationFns?: Record>; - pageIndex?: number; - pageSize?: number; - /** Sizes an opt-in page from the measurable table scroll viewport. */ - autoPageSize?: boolean | DataTableAutoPageSizeConfig; - onPageIndexChange?: (pageIndex: number) => void; - onPageSizeChange?: (pageSize: number) => void; - pageCount?: number; - manualPagination?: boolean; - rowSelection?: Record; - onRowSelectionChange?: (rowSelection: Record) => void; - enableRowSelection?: boolean; - /** Allows multiple selected rows globally or per row. Defaults to true. */ - enableMultiRowSelection?: boolean | ((row: TData) => boolean); - /** Cascades parent selection to sub-rows globally or per row. Defaults to true. */ - enableSubRowSelection?: boolean | ((row: TData) => boolean); - /** Prevents individual rows from being selected. */ - getRowCanSelect?: (row: TData) => boolean; - /** Select-all affects the current page or all loaded filtered rows. */ - rowSelectionSelectAllScope?: "page" | "filtered"; - expanded?: ExpandedState; - onExpandedChange?: (expanded: ExpandedState) => void; - /** Resolve nested records for tree expansion. */ - getSubRows?: (row: TData, index: number) => Array | undefined; - /** Keep expansion state controlled by the host; useful for server-loaded children. */ - manualExpanding?: boolean; - /** Keep child rows with their parent when paginating. Defaults to TanStack's behavior. */ - paginateExpandedRows?: boolean; - /** Include parents when a descendant matches a filter. */ - filterFromLeafRows?: boolean; - /** Limit descendant traversal while filtering. */ - maxLeafRowFilterDepth?: number; - /** New, independently controlled detail-panel contract. */ - detailPanel?: DataTableDetailPanel; - getRowCanExpand?: (row: TData) => boolean; - /** @deprecated Use `detailPanel={{ render }}`. Kept as a detail-panel bridge. */ - renderExpandedRow?: (props: DataTableExpandedRowProps) => React.ReactNode; - columnOrder?: ColumnOrderState; - onColumnOrderChange?: (columnOrder: ColumnOrderState) => void; - enableColumnReordering?: boolean; - /** Default height for shared column-group header cells. */ - columnGroupHeaderHeight?: React.CSSProperties["height"]; - columnPinning?: ColumnPinningState; - onColumnPinningChange?: (columnPinning: ColumnPinningState) => void; - enableColumnPinning?: boolean; - rowPinning?: RowPinningState; - onRowPinningChange?: (rowPinning: RowPinningState) => void; - /** Enables row actions that pin a row to the top or bottom of the table. */ - enableRowPinning?: boolean | ((row: TData) => boolean); - /** Keep pinned rows visible when filtering or paginating them out. */ - keepPinnedRows?: boolean; - toolbarActions?: Array>; - selectionActions?: Array>; - rowActions?: Array>; - csvExport?: boolean | DataTableCsvExportOptions; - /** Opt-in TSV/CSV copy and application-owned paste handling. */ - clipboard?: DataTableClipboardConfig; - /** Enables pointer and Shift+keyboard rectangular cell selection in grid mode. */ - enableCellSelection?: boolean; - /** Controlled cell/range selection. Supplying a value also enables it in grid mode. */ - cellSelection?: DataTableCellSelection | null; - /** Initial cell/range selection when uncontrolled. */ - defaultCellSelection?: DataTableCellSelection | null; - onCellSelectionChange?: (selection: DataTableCellSelection | null) => void; - /** Host-owned undo/redo commands invoked by Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. */ - gridCommands?: DataTableGridCommands; - density?: DataTableDensity; - onDensityChange?: (density: DataTableDensity) => void; - enableDensityToggle?: boolean; - columnPrefsKey?: string; - persistence?: DataTablePersistenceConfig; - savedViews?: DataTableSavedViewsConfig; - initialState?: DataTableInitialState; - state?: Partial; - onStateChange?: (updater: Updater) => void; - apiRef?: React.Ref>; - labels?: Partial; - summaryRows?: Array>; - cardRenderer?: (props: DataTableCardRendererProps) => React.ReactNode; - cardSizing?: DataTableCardSizing; - cardGridClassName?: string; - cardClassName?: string; - viewMode?: DataTableViewMode; - onViewModeChange?: (viewMode: DataTableViewMode) => void; - enableViewToggle?: boolean; - enablePrint?: boolean; - enableFullscreen?: boolean; - emptyState?: React.ReactNode | ((context: DataTableEmptyStateContext) => React.ReactNode); - /** Explicit empty/error/retry rendering contract. */ - stateOverlay?: DataTableStateOverlay; - isLoading?: boolean; - loadingRowCount?: number; - getRowLoadingState?: (row: TData, index: number) => boolean | DataTableRowLoadingState; - hiddenRows?: DataTableHiddenRowsConfig; - showHiddenRows?: boolean; - onShowHiddenRowsChange?: (showHiddenRows: boolean) => void; - infiniteScroll?: DataTableInfiniteScroll; - editableRows?: DataTableEditableRowsConfig; - columnVisibility?: VisibilityState; - onColumnVisibilityChange?: (visibility: VisibilityState) => void; - columnSizing?: ColumnSizingState; - onColumnSizingChange?: (sizing: ColumnSizingState) => void; - enableColumnResizing?: boolean; - columnResizeMode?: "onChange" | "onEnd"; - layoutMode?: "fill" | "fit"; - stickyHeader?: boolean; - /** Controls when scrollbars are visible. Defaults to `"hover"`. */ - scrollbarVisibility?: DataTableScrollbarVisibility; - showFooter?: boolean; - showToolbar?: boolean; - dir?: "ltr" | "rtl"; - flexGrow?: boolean; - toolbarVisibility?: DataTableToolbarVisibility; - /** Opts into enhanced layout and saved-view toolbar controls. */ - toolbarDataOperations?: boolean | DataTableToolbarDataOperations; - className?: string; - tableClassName?: string; - tableContainerClassName?: string; - stripedRows?: boolean; - getRowClassName?: (row: TData, context: DataTableRowClassNameContext) => string | undefined; - onRowClick?: (context: { - row: TData; - rowId: string; - }) => void | Promise; - onActionError?: (context: DataTableActionErrorContext) => void; - dragAndDrop?: DataTableDragAndDropConfig; - fileUpload?: DataTableFileUploadConfig; - virtualization?: boolean | DataTableVirtualizationConfig; - /** Opt in to ARIA grid semantics and roving keyboard navigation. */ - accessibility?: DataTableAccessibilityOptions; - /** Shorthand for `accessibility={{ mode: "grid" }}`. */ - interactiveGrid?: boolean | DataTableInteractiveGridOptions; -}; -declare function isRowVisible(row: TData, hiddenRows: DataTableHiddenRowsConfig | undefined, showHiddenRows: boolean): boolean; -declare function resolveRowActionLabel(label: DataTableRowAction["label"], row: TData): string; -declare function canUseRowAction(action: DataTableRowAction, row: TData): boolean; -declare function canEditRow(editableRows: DataTableEditableRowsConfig | undefined, row: TData): boolean; -declare function alignClassName(align: DataTableAlign | undefined): "text-center" | "text-right" | "text-left"; -declare function resolveColumnAlign(align: DataTableAlign | undefined, type: DataTableColumnType | undefined): DataTableAlign; -declare function headerAlignClassName(context: HeaderContext): "text-center" | "text-right" | "text-left"; -declare function cellAlignClassName(context: CellContext): "text-center" | "text-right" | "text-left"; -declare function hideOnClassName(hideOn: DataTableContainerBreakpoint | Array | undefined): string | undefined; -declare function isHiddenAtContainerWidth(hideOn: DataTableContainerBreakpoint | Array | undefined, containerWidth: number): boolean; -declare function rowSelectionStateFromRows(rows: Array>): TData[]; - -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, type DataTableAccessibilityOptions, type DataTableActionErrorContext, type DataTableActionErrorSource, type DataTableAlign, type DataTableApi, type DataTableAutoPageSizeConfig, type DataTableCardRendererProps, type DataTableCardSizing, type DataTableCardVirtualizationConfig, type DataTableCellCoordinate, type DataTableCellEditRenderProps, type DataTableCellOverflow, type DataTableCellSelection, type DataTableClipboardConfig, type DataTableClipboardCopyOptions, type DataTableClipboardCopyScope, type DataTableClipboardPasteContext, type DataTableColumnDef, type DataTableColumnFilterConfig, type DataTableColumnFilterOperator, type DataTableColumnFilterOption, type DataTableColumnFilterRangeValue, type DataTableColumnFilterType, type DataTableColumnFixed, type DataTableColumnGroupDef, type DataTableColumnMeta, type DataTableColumnPrefs, type DataTableColumnType, type DataTableColumnVisibilityOption, type DataTableContainerBreakpoint, type DataTableCsvExportOptions, type DataTableCsvExportScope, type DataTableDensity, type DataTableDetailPanel, type DataTableDragAndDropConfig, type DataTableEditableRowsConfig, type DataTableEmptyStateContext, type DataTableExpandedRowProps, type DataTableFacetedFilterOptions, type DataTableFileUploadConfig, type DataTableGridCommandContext, type DataTableGridCommands, type DataTableHiddenRowsConfig, type DataTableInfiniteScroll, type DataTableInitialState, type DataTableInteractiveGridOptions, type DataTableLabels, type DataTableLoadingState, type DataTablePersistenceConfig, type DataTablePersistenceOperation, type DataTablePersistencePayload, type DataTablePersistenceSlice, type DataTablePersistenceStorage, type DataTableProps, type DataTableResetOptions, type DataTableRowAction, type DataTableRowClassNameContext, type DataTableRowLoadingState, type DataTableSavedView, type DataTableSavedViewSlice, type DataTableSavedViewsChangeOperation, type DataTableSavedViewsConfig, type DataTableSavedViewsPayload, type DataTableScrollbarVisibility, type DataTableSelectionAction, type DataTableSelectionActionContext, type DataTableState, type DataTableStateOverlay, type DataTableStateOverlayContext, type DataTableSummaryRow, type DataTableToolbarAction, type DataTableToolbarDataOperations, type DataTableToolbarVisibility, type DataTableViewMode, type DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows }; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, D as DataTableProps, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; +import '@tanstack/react-table'; +import 'react'; diff --git a/dist/url-state.d.ts b/dist/url-state.d.ts index c2f52af..c951ef9 100644 --- a/dist/url-state.d.ts +++ b/dist/url-state.d.ts @@ -1,16 +1,17 @@ -import { ColumnFiltersState, VisibilityState, ColumnOrderState, ColumnPinningState, GroupingState, RowSelectionState, SortingState, Updater } from '@tanstack/react-table'; -import { DataTableDensity, DataTableViewMode, DataTableState } from './types.js'; +import { ColumnFiltersState, ColumnVisibilityState, ColumnOrderState, GroupingState, SortingState, Updater } from '@tanstack/react-table'; +import { K as DataTableDensity, C as DataTableColumnPinningState, am as DataTableViewMode, af as DataTableState } from './types-BGNR6Ymh.js'; import 'react'; type DataTableUrlStateSlice = "columnFilters" | "columnVisibility" | "density" | "columnOrder" | "columnPinning" | "grouping" | "rowSelection"; +type DataTableUrlRowSelectionState = Record; type DataTableUrlEnhancedState = { columnFilters: ColumnFiltersState; - columnVisibility: VisibilityState; + columnVisibility: ColumnVisibilityState; density: DataTableDensity; columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; + columnPinning: DataTableColumnPinningState; grouping: GroupingState; - rowSelection: RowSelectionState; + rowSelection: DataTableUrlRowSelectionState; }; type DataTableUrlStateMigrationPayload = { version: unknown; @@ -48,18 +49,18 @@ declare function useDataTableUrlState({ keyPrefix, defaultPageSize, defaultSort, setShowHiddenRows: (showHidden: boolean) => void; columnFilters: ColumnFiltersState; setColumnFilters: (updater: Updater) => void; - columnVisibility: VisibilityState; - setColumnVisibility: (updater: Updater) => void; + columnVisibility: ColumnVisibilityState; + setColumnVisibility: (updater: Updater) => void; density: DataTableDensity; setDensity: (updater: Updater) => void; columnOrder: ColumnOrderState; setColumnOrder: (updater: Updater) => void; - columnPinning: ColumnPinningState; - setColumnPinning: (updater: Updater) => void; + columnPinning: DataTableColumnPinningState; + setColumnPinning: (updater: Updater) => void; grouping: GroupingState; setGrouping: (updater: Updater) => void; - rowSelection: RowSelectionState; - setRowSelection: (updater: Updater) => void; + rowSelection: DataTableUrlRowSelectionState; + setRowSelection: (updater: Updater) => void; tableState: Partial; schemaVersion: string; clearEnhancedState: () => void; diff --git a/dist/url-state.js b/dist/url-state.js index 8982f38..f44ad74 100644 --- a/dist/url-state.js +++ b/dist/url-state.js @@ -1,2 +1,2 @@ -import*as s from'react';import {useQueryStates,parseAsString,parseAsJson,parseAsStringLiteral,parseAsBoolean,parseAsInteger}from'nuqs';var et=[],nt={},it=[],at={},ot=[],rt={};function ut({keyPrefix:t,defaultPageSize:o=20,defaultSort:l,defaultViewMode:u="table",version:S=1,enabled:h=[],defaults:d,migrate:p,onError:f}){let[e,a]=useQueryStates({query:parseAsString.withDefault(""),page:parseAsInteger.withDefault(1),pageSize:parseAsInteger.withDefault(o),sort:parseAsString.withDefault(l?k([{id:l.id,desc:!!l.desc}]):""),order:parseAsStringLiteral(["asc","desc"]).withDefault(l?.desc?"desc":"asc"),view:parseAsStringLiteral(["table","card"]).withDefault(u),showHidden:parseAsBoolean.withDefault(false),schema:parseAsString,filters:parseAsJson($),visibility:parseAsJson(P),density:parseAsStringLiteral(["compact","comfortable","spacious"]),columnOrder:parseAsJson(b),pinning:parseAsJson(I),grouping:parseAsJson(b),selection:parseAsJson(P)},{clearOnDefault:true,history:"replace",urlKeys:{query:`${t}q`,page:`${t}page`,pageSize:`${t}size`,sort:`${t}sort`,order:`${t}order`,view:`${t}view`,showHidden:`${t}showHidden`,schema:`${t}v`,filters:`${t}filters`,visibility:`${t}visibility`,density:`${t}density`,columnOrder:`${t}columns`,pinning:`${t}pinning`,grouping:`${t}grouping`,selection:`${t}selection`}}),i=s.useMemo(()=>new Set(h),[h]),g=s.useMemo(()=>{let n={};if(i.has("columnFilters")&&e.filters!==null&&(n.columnFilters=e.filters),i.has("columnVisibility")&&e.visibility!==null&&(n.columnVisibility=e.visibility),i.has("density")&&e.density!==null&&(n.density=e.density),i.has("columnOrder")&&e.columnOrder!==null&&(n.columnOrder=e.columnOrder),i.has("columnPinning")&&e.pinning!==null&&(n.columnPinning=e.pinning),i.has("grouping")&&e.grouping!==null&&(n.grouping=e.grouping),i.has("rowSelection")&&e.selection!==null&&(n.rowSelection=e.selection),Object.keys(n).length===0)return {state:n};if(e.schema===String(S))return {state:n};if(!p)return {state:{}};try{return {state:lt(p({version:e.schema,state:n},S),i)}}catch(r){return {error:r,state:{}}}},[i,p,e.columnOrder,e.density,e.filters,e.grouping,e.pinning,e.schema,e.selection,e.visibility,S]);s.useEffect(()=>{g.error!==void 0&&f?.({error:g.error,operation:"migrate"});},[g.error,f]);let w=s.useMemo(()=>e.sort?st(e.sort,e.order):[],[e.order,e.sort]),T=g.state.columnFilters??d?.columnFilters??et,O=g.state.columnVisibility??d?.columnVisibility??nt,C=g.state.density??d?.density??"comfortable",D=g.state.columnOrder??d?.columnOrder??it,R=g.state.columnPinning??d?.columnPinning??at,V=g.state.grouping??d?.grouping??ot,U=g.state.rowSelection??d?.rowSelection??rt,c=String(S),z=s.useCallback(n=>{let r=m(n,w);if(r.length===0){a({page:1,sort:"",order:"asc"});return}let X=r[0];a({page:1,sort:k(r),order:X.desc?"desc":"asc"});},[a,w]),H=s.useCallback(n=>{a({page:1,query:n});},[a]),x=s.useCallback(n=>{a({page:n+1});},[a]),G=s.useCallback(n=>{a({page:1,pageSize:n});},[a]),j=s.useCallback(n=>{a({view:n});},[a]),B=s.useCallback(n=>{a({showHidden:n});},[a]),N=s.useCallback(n=>{if(!i.has("columnFilters"))return;let r=m(n,T);a({page:1,schema:c,filters:r.length>0?r:null});},[T,i,c,a]),Y=s.useCallback(n=>{if(!i.has("columnVisibility"))return;let r=m(n,O);a({schema:c,visibility:A(r)?r:null});},[O,i,c,a]),q=s.useCallback(n=>{if(!i.has("density"))return;let r=m(n,C);a({schema:c,density:r===(d?.density??"comfortable")?null:r});},[d?.density,C,i,c,a]),_=s.useCallback(n=>{if(!i.has("columnOrder"))return;let r=m(n,D);a({schema:c,columnOrder:r.length>0?r:null});},[D,i,c,a]),L=s.useCallback(n=>{if(!i.has("columnPinning"))return;let r=m(n,R);a({schema:c,pinning:(r.left?.length??0)>0||(r.right?.length??0)>0?r:null});},[R,i,c,a]),Q=s.useCallback(n=>{if(!i.has("grouping"))return;let r=m(n,V);a({page:1,schema:c,grouping:r.length>0?r:null});},[i,V,c,a]),J=s.useCallback(n=>{if(!i.has("rowSelection"))return;let r=m(n,U);a({schema:c,selection:A(r)?r:null});},[i,U,c,a]),K=s.useCallback(()=>{a({schema:null,filters:null,visibility:null,density:null,columnOrder:null,pinning:null,grouping:null,selection:null});},[a]),W=s.useMemo(()=>({globalFilter:e.query,pagination:{pageIndex:Math.max(0,e.page-1),pageSize:e.pageSize},sorting:w,viewMode:e.view,showHiddenRows:e.showHidden,...i.has("columnFilters")?{columnFilters:T}:{},...i.has("columnVisibility")?{columnVisibility:O}:{},...i.has("density")?{density:C}:{},...i.has("columnOrder")?{columnOrder:D}:{},...i.has("columnPinning")?{columnPinning:R}:{},...i.has("rowSelection")?{rowSelection:U}:{}}),[T,D,R,O,C,i,U,w,e.page,e.pageSize,e.query,e.showHidden,e.view]);return {toolbarQueryValue:e.query,setToolbarQueryValue:H,pageIndex:Math.max(0,e.page-1),setPageIndex:x,pageSize:e.pageSize,setPageSize:G,sorting:w,setSorting:z,viewMode:e.view,setViewMode:j,showHiddenRows:e.showHidden,setShowHiddenRows:B,columnFilters:T,setColumnFilters:N,columnVisibility:O,setColumnVisibility:Y,density:C,setDensity:q,columnOrder:D,setColumnOrder:_,columnPinning:R,setColumnPinning:L,grouping:V,setGrouping:Q,rowSelection:U,setRowSelection:J,tableState:W,schemaVersion:c,clearEnhancedState:K}}function k(t){return JSON.stringify(t.map(o=>({id:o.id,desc:!!o.desc})))}function st(t,o){try{let l=JSON.parse(t);if(!Array.isArray(l))throw new Error("Expected sorting array");return l.map(u=>{if(!(!u||typeof u!="object"||typeof u.id!="string"))return {id:u.id,desc:!!u.desc}}).filter(u=>!!u)}catch{return [{id:t,desc:o==="desc"}]}}function lt(t,o){if(!t)return {};let l={},u=$(t.columnFilters);o.has("columnFilters")&&u&&(l.columnFilters=u);let S=P(t.columnVisibility);o.has("columnVisibility")&&S&&(l.columnVisibility=S),o.has("density")&&(t.density==="compact"||t.density==="comfortable"||t.density==="spacious")&&(l.density=t.density);let h=b(t.columnOrder);o.has("columnOrder")&&h&&(l.columnOrder=h);let d=I(t.columnPinning);o.has("columnPinning")&&d&&(l.columnPinning=d);let p=b(t.grouping);o.has("grouping")&&p&&(l.grouping=p);let f=P(t.rowSelection);return o.has("rowSelection")&&f&&(l.rowSelection=f),l}function $(t){return Array.isArray(t)?t.filter(o=>F(o)&&typeof o.id=="string"&&Object.prototype.hasOwnProperty.call(o,"value")).map(o=>({id:o.id,value:o.value})):null}function P(t){return F(t)?Object.fromEntries(Object.entries(t).filter(o=>typeof o[1]=="boolean")):null}function b(t){return Array.isArray(t)?t.filter(o=>typeof o=="string"):null}function I(t){return F(t)?{left:b(t.left)??[],right:b(t.right)??[]}:null}function m(t,o){return typeof t=="function"?t(o):t}function A(t){return Object.keys(t).length>0}function F(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export{ut as useDataTableUrlState};//# sourceMappingURL=url-state.js.map +import*as l from'react';import {useQueryStates,parseAsString,parseAsJson,parseAsStringLiteral,parseAsBoolean,parseAsInteger}from'nuqs';var et=[],nt={},it=[],at={},rt=[],ot={};function ut({keyPrefix:t,defaultPageSize:r=20,defaultSort:s,defaultViewMode:u="table",version:S=1,enabled:h=[],defaults:d,migrate:p,onError:f}){let[e,a]=useQueryStates({query:parseAsString.withDefault(""),page:parseAsInteger.withDefault(1),pageSize:parseAsInteger.withDefault(r),sort:parseAsString.withDefault(s?k([{id:s.id,desc:!!s.desc}]):""),order:parseAsStringLiteral(["asc","desc"]).withDefault(s?.desc?"desc":"asc"),view:parseAsStringLiteral(["table","card"]).withDefault(u),showHidden:parseAsBoolean.withDefault(false),schema:parseAsString,filters:parseAsJson($),visibility:parseAsJson(P),density:parseAsStringLiteral(["compact","comfortable","spacious"]),columnOrder:parseAsJson(y),pinning:parseAsJson(I),grouping:parseAsJson(y),selection:parseAsJson(P)},{clearOnDefault:true,history:"replace",urlKeys:{query:`${t}q`,page:`${t}page`,pageSize:`${t}size`,sort:`${t}sort`,order:`${t}order`,view:`${t}view`,showHidden:`${t}showHidden`,schema:`${t}v`,filters:`${t}filters`,visibility:`${t}visibility`,density:`${t}density`,columnOrder:`${t}columns`,pinning:`${t}pinning`,grouping:`${t}grouping`,selection:`${t}selection`}}),i=l.useMemo(()=>new Set(h),[h]),g=l.useMemo(()=>{let n={};if(i.has("columnFilters")&&e.filters!==null&&(n.columnFilters=e.filters),i.has("columnVisibility")&&e.visibility!==null&&(n.columnVisibility=e.visibility),i.has("density")&&e.density!==null&&(n.density=e.density),i.has("columnOrder")&&e.columnOrder!==null&&(n.columnOrder=e.columnOrder),i.has("columnPinning")&&e.pinning!==null&&(n.columnPinning=e.pinning),i.has("grouping")&&e.grouping!==null&&(n.grouping=e.grouping),i.has("rowSelection")&&e.selection!==null&&(n.rowSelection=e.selection),Object.keys(n).length===0)return {state:n};if(e.schema===String(S))return {state:n};if(!p)return {state:{}};try{return {state:st(p({version:e.schema,state:n},S),i)}}catch(o){return {error:o,state:{}}}},[i,p,e.columnOrder,e.density,e.filters,e.grouping,e.pinning,e.schema,e.selection,e.visibility,S]);l.useEffect(()=>{g.error!==void 0&&f?.({error:g.error,operation:"migrate"});},[g.error,f]);let w=l.useMemo(()=>e.sort?lt(e.sort,e.order):[],[e.order,e.sort]),T=g.state.columnFilters??d?.columnFilters??et,D=g.state.columnVisibility??d?.columnVisibility??nt,C=g.state.density??d?.density??"comfortable",O=g.state.columnOrder??d?.columnOrder??it,R=g.state.columnPinning??d?.columnPinning??at,V=g.state.grouping??d?.grouping??rt,U=g.state.rowSelection??d?.rowSelection??ot,c=String(S),z=l.useCallback(n=>{let o=m(n,w);if(o.length===0){a({page:1,sort:"",order:"asc"});return}let X=o[0];a({page:1,sort:k(o),order:X.desc?"desc":"asc"});},[a,w]),H=l.useCallback(n=>{a({page:1,query:n});},[a]),x=l.useCallback(n=>{a({page:n+1});},[a]),G=l.useCallback(n=>{a({page:1,pageSize:n});},[a]),j=l.useCallback(n=>{a({view:n});},[a]),B=l.useCallback(n=>{a({showHidden:n});},[a]),N=l.useCallback(n=>{if(!i.has("columnFilters"))return;let o=m(n,T);a({page:1,schema:c,filters:o.length>0?o:null});},[T,i,c,a]),Y=l.useCallback(n=>{if(!i.has("columnVisibility"))return;let o=m(n,D);a({schema:c,visibility:A(o)?o:null});},[D,i,c,a]),q=l.useCallback(n=>{if(!i.has("density"))return;let o=m(n,C);a({schema:c,density:o===(d?.density??"comfortable")?null:o});},[d?.density,C,i,c,a]),_=l.useCallback(n=>{if(!i.has("columnOrder"))return;let o=m(n,O);a({schema:c,columnOrder:o.length>0?o:null});},[O,i,c,a]),L=l.useCallback(n=>{if(!i.has("columnPinning"))return;let o=m(n,R);a({schema:c,pinning:(o.left?.length??0)>0||(o.right?.length??0)>0?o:null});},[R,i,c,a]),Q=l.useCallback(n=>{if(!i.has("grouping"))return;let o=m(n,V);a({page:1,schema:c,grouping:o.length>0?o:null});},[i,V,c,a]),J=l.useCallback(n=>{if(!i.has("rowSelection"))return;let o=m(n,U);a({schema:c,selection:A(o)?o:null});},[i,U,c,a]),K=l.useCallback(()=>{a({schema:null,filters:null,visibility:null,density:null,columnOrder:null,pinning:null,grouping:null,selection:null});},[a]),W=l.useMemo(()=>({globalFilter:e.query,pagination:{pageIndex:Math.max(0,e.page-1),pageSize:e.pageSize},sorting:w,viewMode:e.view,showHiddenRows:e.showHidden,...i.has("columnFilters")?{columnFilters:T}:{},...i.has("columnVisibility")?{columnVisibility:D}:{},...i.has("density")?{density:C}:{},...i.has("columnOrder")?{columnOrder:O}:{},...i.has("columnPinning")?{columnPinning:R}:{},...i.has("rowSelection")?{rowSelection:U}:{}}),[T,O,R,D,C,i,U,w,e.page,e.pageSize,e.query,e.showHidden,e.view]);return {toolbarQueryValue:e.query,setToolbarQueryValue:H,pageIndex:Math.max(0,e.page-1),setPageIndex:x,pageSize:e.pageSize,setPageSize:G,sorting:w,setSorting:z,viewMode:e.view,setViewMode:j,showHiddenRows:e.showHidden,setShowHiddenRows:B,columnFilters:T,setColumnFilters:N,columnVisibility:D,setColumnVisibility:Y,density:C,setDensity:q,columnOrder:O,setColumnOrder:_,columnPinning:R,setColumnPinning:L,grouping:V,setGrouping:Q,rowSelection:U,setRowSelection:J,tableState:W,schemaVersion:c,clearEnhancedState:K}}function k(t){return JSON.stringify(t.map(r=>({id:r.id,desc:!!r.desc})))}function lt(t,r){try{let s=JSON.parse(t);if(!Array.isArray(s))throw new Error("Expected sorting array");return s.map(u=>{if(!(!u||typeof u!="object"||typeof u.id!="string"))return {id:u.id,desc:!!u.desc}}).filter(u=>!!u)}catch{return [{id:t,desc:r==="desc"}]}}function st(t,r){if(!t)return {};let s={},u=$(t.columnFilters);r.has("columnFilters")&&u&&(s.columnFilters=u);let S=P(t.columnVisibility);r.has("columnVisibility")&&S&&(s.columnVisibility=S),r.has("density")&&(t.density==="compact"||t.density==="comfortable"||t.density==="spacious")&&(s.density=t.density);let h=y(t.columnOrder);r.has("columnOrder")&&h&&(s.columnOrder=h);let d=I(t.columnPinning);r.has("columnPinning")&&d&&(s.columnPinning=d);let p=y(t.grouping);r.has("grouping")&&p&&(s.grouping=p);let f=P(t.rowSelection);return r.has("rowSelection")&&f&&(s.rowSelection=f),s}function $(t){return Array.isArray(t)?t.filter(r=>F(r)&&typeof r.id=="string"&&Object.prototype.hasOwnProperty.call(r,"value")).map(r=>({id:r.id,value:r.value})):null}function P(t){return F(t)?Object.fromEntries(Object.entries(t).filter(r=>typeof r[1]=="boolean")):null}function y(t){return Array.isArray(t)?t.filter(r=>typeof r=="string"):null}function I(t){return F(t)?{left:y(t.left)??[],right:y(t.right)??[]}:null}function m(t,r){return typeof t=="function"?t(r):t}function A(t){return Object.keys(t).length>0}function F(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export{ut as useDataTableUrlState};//# sourceMappingURL=url-state.js.map //# sourceMappingURL=url-state.js.map \ No newline at end of file diff --git a/dist/url-state.js.map b/dist/url-state.js.map index ec135ef..043279f 100644 --- a/dist/url-state.js.map +++ b/dist/url-state.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/core/data-table/use-data-table-url-state.ts"],"names":["EMPTY_FILTERS","EMPTY_VISIBILITY","EMPTY_ORDER","EMPTY_PINNING","EMPTY_GROUPING","EMPTY_SELECTION","useDataTableUrlState","keyPrefix","defaultPageSize","defaultSort","defaultViewMode","version","enabled","defaults","migrate","onError","state","setState","useQueryStates","parseAsString","parseAsInteger","encodeSorting","parseAsStringLiteral","parseAsBoolean","parseAsJson","validateColumnFilters","validateBooleanRecord","validateStringArray","validateColumnPinning","enabledSet","enhancedResolution","raw","validateEnhancedState","error","sorting","decodeSorting","columnFilters","columnVisibility","density","columnOrder","columnPinning","grouping","rowSelection","schemaVersion","setSorting","updater","nextSorting","resolveUpdater","next","setQuery","query","setPageIndex","pageIndex","setPageSize","pageSize","setViewMode","view","setShowHidden","showHidden","setColumnFilters","setColumnVisibility","hasKeys","setDensity","setColumnOrder","setColumnPinning","setGrouping","setRowSelection","clearEnhancedState","tableState","sort","value","order","parsed","item","filters","visibility","pinning","selection","isRecord","entry","current"],"mappings":"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","file":"url-state.js","sourcesContent":["import * as React from \"react\";\nimport {\n parseAsBoolean,\n parseAsInteger,\n parseAsJson,\n parseAsString,\n parseAsStringLiteral,\n useQueryStates,\n} from \"nuqs\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n GroupingState,\n RowSelectionState,\n SortingState,\n Updater,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableDensity,\n DataTableState,\n DataTableViewMode,\n} from \"../types\";\n\nexport type DataTableUrlStateSlice =\n | \"columnFilters\"\n | \"columnVisibility\"\n | \"density\"\n | \"columnOrder\"\n | \"columnPinning\"\n | \"grouping\"\n | \"rowSelection\";\n\nexport type DataTableUrlEnhancedState = {\n columnFilters: ColumnFiltersState;\n columnVisibility: VisibilityState;\n density: DataTableDensity;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n grouping: GroupingState;\n rowSelection: RowSelectionState;\n};\n\nexport type DataTableUrlStateMigrationPayload = {\n version: unknown;\n state: Partial;\n};\n\nexport type UseDataTableUrlStateOptions = {\n keyPrefix: string;\n defaultPageSize?: number;\n defaultSort?: { id: string; desc?: boolean };\n defaultViewMode?: DataTableViewMode;\n version?: string | number;\n enabled?: Array;\n defaults?: Partial;\n migrate?: (\n payload: DataTableUrlStateMigrationPayload,\n targetVersion: string | number,\n ) => Partial | undefined;\n onError?: (context: { error: unknown; operation: \"migrate\" }) => void;\n};\n\nconst EMPTY_FILTERS: ColumnFiltersState = [];\nconst EMPTY_VISIBILITY: VisibilityState = {};\nconst EMPTY_ORDER: ColumnOrderState = [];\nconst EMPTY_PINNING: ColumnPinningState = {};\nconst EMPTY_GROUPING: GroupingState = [];\nconst EMPTY_SELECTION: RowSelectionState = {};\n\nexport function useDataTableUrlState({\n keyPrefix,\n defaultPageSize = 20,\n defaultSort,\n defaultViewMode = \"table\",\n version = 1,\n enabled = [],\n defaults,\n migrate,\n onError,\n}: UseDataTableUrlStateOptions) {\n const [state, setState] = useQueryStates(\n {\n query: parseAsString.withDefault(\"\"),\n page: parseAsInteger.withDefault(1),\n pageSize: parseAsInteger.withDefault(defaultPageSize),\n sort: parseAsString.withDefault(\n defaultSort\n ? encodeSorting([\n { id: defaultSort.id, desc: Boolean(defaultSort.desc) },\n ])\n : \"\",\n ),\n order: parseAsStringLiteral([\"asc\", \"desc\"] as const).withDefault(\n defaultSort?.desc ? \"desc\" : \"asc\",\n ),\n view: parseAsStringLiteral([\"table\", \"card\"] as const).withDefault(\n defaultViewMode,\n ),\n showHidden: parseAsBoolean.withDefault(false),\n schema: parseAsString,\n filters: parseAsJson(validateColumnFilters),\n visibility: parseAsJson(validateBooleanRecord),\n density: parseAsStringLiteral(\n [\"compact\", \"comfortable\", \"spacious\"] as const,\n ),\n columnOrder: parseAsJson(validateStringArray),\n pinning: parseAsJson(validateColumnPinning),\n grouping: parseAsJson(validateStringArray),\n selection: parseAsJson(validateBooleanRecord),\n },\n {\n clearOnDefault: true,\n history: \"replace\",\n urlKeys: {\n query: `${keyPrefix}q`,\n page: `${keyPrefix}page`,\n pageSize: `${keyPrefix}size`,\n sort: `${keyPrefix}sort`,\n order: `${keyPrefix}order`,\n view: `${keyPrefix}view`,\n showHidden: `${keyPrefix}showHidden`,\n schema: `${keyPrefix}v`,\n filters: `${keyPrefix}filters`,\n visibility: `${keyPrefix}visibility`,\n density: `${keyPrefix}density`,\n columnOrder: `${keyPrefix}columns`,\n pinning: `${keyPrefix}pinning`,\n grouping: `${keyPrefix}grouping`,\n selection: `${keyPrefix}selection`,\n },\n },\n );\n const enabledSet = React.useMemo(() => new Set(enabled), [enabled]);\n const enhancedResolution = React.useMemo<{\n state: Partial;\n error?: unknown;\n }>(() => {\n const raw: Partial = {};\n if (enabledSet.has(\"columnFilters\") && state.filters !== null) {\n raw.columnFilters = state.filters;\n }\n if (enabledSet.has(\"columnVisibility\") && state.visibility !== null) {\n raw.columnVisibility = state.visibility;\n }\n if (enabledSet.has(\"density\") && state.density !== null) {\n raw.density = state.density;\n }\n if (enabledSet.has(\"columnOrder\") && state.columnOrder !== null) {\n raw.columnOrder = state.columnOrder;\n }\n if (enabledSet.has(\"columnPinning\") && state.pinning !== null) {\n raw.columnPinning = state.pinning;\n }\n if (enabledSet.has(\"grouping\") && state.grouping !== null) {\n raw.grouping = state.grouping;\n }\n if (enabledSet.has(\"rowSelection\") && state.selection !== null) {\n raw.rowSelection = state.selection;\n }\n\n if (Object.keys(raw).length === 0) {\n return { state: raw };\n }\n if (state.schema === String(version)) {\n return { state: raw };\n }\n if (!migrate) {\n return { state: {} };\n }\n\n try {\n return {\n state: validateEnhancedState(\n migrate(\n {\n version: state.schema,\n state: raw,\n },\n version,\n ),\n enabledSet,\n ),\n };\n } catch (error) {\n return { error, state: {} };\n }\n }, [\n enabledSet,\n migrate,\n state.columnOrder,\n state.density,\n state.filters,\n state.grouping,\n state.pinning,\n state.schema,\n state.selection,\n state.visibility,\n version,\n ]);\n\n React.useEffect(() => {\n if (enhancedResolution.error !== undefined) {\n onError?.({\n error: enhancedResolution.error,\n operation: \"migrate\",\n });\n }\n }, [enhancedResolution.error, onError]);\n\n const sorting = React.useMemo(() => {\n if (!state.sort) {\n return [];\n }\n return decodeSorting(state.sort, state.order);\n }, [state.order, state.sort]);\n const columnFilters =\n enhancedResolution.state.columnFilters ??\n defaults?.columnFilters ??\n EMPTY_FILTERS;\n const columnVisibility =\n enhancedResolution.state.columnVisibility ??\n defaults?.columnVisibility ??\n EMPTY_VISIBILITY;\n const density =\n enhancedResolution.state.density ??\n defaults?.density ??\n \"comfortable\";\n const columnOrder =\n enhancedResolution.state.columnOrder ??\n defaults?.columnOrder ??\n EMPTY_ORDER;\n const columnPinning =\n enhancedResolution.state.columnPinning ??\n defaults?.columnPinning ??\n EMPTY_PINNING;\n const grouping =\n enhancedResolution.state.grouping ??\n defaults?.grouping ??\n EMPTY_GROUPING;\n const rowSelection =\n enhancedResolution.state.rowSelection ??\n defaults?.rowSelection ??\n EMPTY_SELECTION;\n const schemaVersion = String(version);\n\n const setSorting = React.useCallback(\n (updater: Updater) => {\n const nextSorting = resolveUpdater(updater, sorting);\n if (nextSorting.length === 0) {\n void setState({\n page: 1,\n sort: \"\",\n order: \"asc\",\n });\n return;\n }\n\n const next = nextSorting[0];\n void setState({\n page: 1,\n sort: encodeSorting(nextSorting),\n order: next.desc ? \"desc\" : \"asc\",\n });\n },\n [setState, sorting],\n );\n\n const setQuery = React.useCallback(\n (query: string) => {\n void setState({ page: 1, query });\n },\n [setState],\n );\n\n const setPageIndex = React.useCallback(\n (pageIndex: number) => {\n void setState({ page: pageIndex + 1 });\n },\n [setState],\n );\n\n const setPageSize = React.useCallback(\n (pageSize: number) => {\n void setState({ page: 1, pageSize });\n },\n [setState],\n );\n\n const setViewMode = React.useCallback(\n (view: DataTableViewMode) => {\n void setState({ view });\n },\n [setState],\n );\n\n const setShowHidden = React.useCallback(\n (showHidden: boolean) => {\n void setState({ showHidden });\n },\n [setState],\n );\n\n const setColumnFilters = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnFilters\")) return;\n const next = resolveUpdater(updater, columnFilters);\n void setState({\n page: 1,\n schema: schemaVersion,\n filters: next.length > 0 ? next : null,\n });\n },\n [columnFilters, enabledSet, schemaVersion, setState],\n );\n\n const setColumnVisibility = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnVisibility\")) return;\n const next = resolveUpdater(updater, columnVisibility);\n void setState({\n schema: schemaVersion,\n visibility: hasKeys(next) ? next : null,\n });\n },\n [columnVisibility, enabledSet, schemaVersion, setState],\n );\n\n const setDensity = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"density\")) return;\n const next = resolveUpdater(updater, density);\n void setState({\n schema: schemaVersion,\n density: next === (defaults?.density ?? \"comfortable\") ? null : next,\n });\n },\n [defaults?.density, density, enabledSet, schemaVersion, setState],\n );\n\n const setColumnOrder = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnOrder\")) return;\n const next = resolveUpdater(updater, columnOrder);\n void setState({\n schema: schemaVersion,\n columnOrder: next.length > 0 ? next : null,\n });\n },\n [columnOrder, enabledSet, schemaVersion, setState],\n );\n\n const setColumnPinning = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnPinning\")) return;\n const next = resolveUpdater(updater, columnPinning);\n void setState({\n schema: schemaVersion,\n pinning:\n (next.left?.length ?? 0) > 0 || (next.right?.length ?? 0) > 0\n ? next\n : null,\n });\n },\n [columnPinning, enabledSet, schemaVersion, setState],\n );\n\n const setGrouping = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"grouping\")) return;\n const next = resolveUpdater(updater, grouping);\n void setState({\n page: 1,\n schema: schemaVersion,\n grouping: next.length > 0 ? next : null,\n });\n },\n [enabledSet, grouping, schemaVersion, setState],\n );\n\n const setRowSelection = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"rowSelection\")) return;\n const next = resolveUpdater(updater, rowSelection);\n void setState({\n schema: schemaVersion,\n selection: hasKeys(next) ? next : null,\n });\n },\n [enabledSet, rowSelection, schemaVersion, setState],\n );\n\n const clearEnhancedState = React.useCallback(() => {\n void setState({\n schema: null,\n filters: null,\n visibility: null,\n density: null,\n columnOrder: null,\n pinning: null,\n grouping: null,\n selection: null,\n });\n }, [setState]);\n\n const tableState = React.useMemo>(\n () => ({\n globalFilter: state.query,\n pagination: {\n pageIndex: Math.max(0, state.page - 1),\n pageSize: state.pageSize,\n },\n sorting,\n viewMode: state.view,\n showHiddenRows: state.showHidden,\n ...(enabledSet.has(\"columnFilters\") ? { columnFilters } : {}),\n ...(enabledSet.has(\"columnVisibility\") ? { columnVisibility } : {}),\n ...(enabledSet.has(\"density\") ? { density } : {}),\n ...(enabledSet.has(\"columnOrder\") ? { columnOrder } : {}),\n ...(enabledSet.has(\"columnPinning\") ? { columnPinning } : {}),\n ...(enabledSet.has(\"rowSelection\") ? { rowSelection } : {}),\n }),\n [\n columnFilters,\n columnOrder,\n columnPinning,\n columnVisibility,\n density,\n enabledSet,\n rowSelection,\n sorting,\n state.page,\n state.pageSize,\n state.query,\n state.showHidden,\n state.view,\n ],\n );\n\n return {\n toolbarQueryValue: state.query,\n setToolbarQueryValue: setQuery,\n pageIndex: Math.max(0, state.page - 1),\n setPageIndex,\n pageSize: state.pageSize,\n setPageSize,\n sorting,\n setSorting,\n viewMode: state.view,\n setViewMode,\n showHiddenRows: state.showHidden,\n setShowHiddenRows: setShowHidden,\n columnFilters,\n setColumnFilters,\n columnVisibility,\n setColumnVisibility,\n density,\n setDensity,\n columnOrder,\n setColumnOrder,\n columnPinning,\n setColumnPinning,\n grouping,\n setGrouping,\n rowSelection,\n setRowSelection,\n tableState,\n schemaVersion,\n clearEnhancedState,\n };\n}\n\nfunction encodeSorting(sorting: SortingState) {\n return JSON.stringify(\n sorting.map((sort) => ({\n id: sort.id,\n desc: Boolean(sort.desc),\n })),\n );\n}\n\nfunction decodeSorting(value: string, order: \"asc\" | \"desc\"): SortingState {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!Array.isArray(parsed)) {\n throw new Error(\"Expected sorting array\");\n }\n\n return parsed\n .map((item) => {\n if (\n !item ||\n typeof item !== \"object\" ||\n typeof (item as { id?: unknown }).id !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: (item as { id: string }).id,\n desc: Boolean((item as { desc?: unknown }).desc),\n };\n })\n .filter((item): item is SortingState[number] => Boolean(item));\n } catch {\n return [{ id: value, desc: order === \"desc\" }];\n }\n}\n\nfunction validateEnhancedState(\n value: Partial | undefined,\n enabled: Set,\n): Partial {\n if (!value) return {};\n const state: Partial = {};\n const filters = validateColumnFilters(value.columnFilters);\n if (enabled.has(\"columnFilters\") && filters) {\n state.columnFilters = filters;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (enabled.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n if (\n enabled.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n const order = validateStringArray(value.columnOrder);\n if (enabled.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validateColumnPinning(value.columnPinning);\n if (enabled.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const grouping = validateStringArray(value.grouping);\n if (enabled.has(\"grouping\") && grouping) state.grouping = grouping;\n const selection = validateBooleanRecord(value.rowSelection);\n if (enabled.has(\"rowSelection\") && selection) {\n state.rowSelection = selection;\n }\n return state;\n}\n\nfunction validateColumnFilters(value: unknown): ColumnFiltersState | null {\n if (!Array.isArray(value)) return null;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validateBooleanRecord(value: unknown): VisibilityState | null {\n if (!isRecord(value)) return null;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateStringArray(value: unknown): Array | null {\n if (!Array.isArray(value)) return null;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateColumnPinning(value: unknown): ColumnPinningState | null {\n if (!isRecord(value)) return null;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction resolveUpdater(updater: Updater, current: T) {\n return typeof updater === \"function\"\n ? (updater as (value: T) => T)(current)\n : updater;\n}\n\nfunction hasKeys(value: object) {\n return Object.keys(value).length > 0;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../src/core/data-table/use-data-table-url-state.ts"],"names":["EMPTY_FILTERS","EMPTY_VISIBILITY","EMPTY_ORDER","EMPTY_PINNING","EMPTY_GROUPING","EMPTY_SELECTION","useDataTableUrlState","keyPrefix","defaultPageSize","defaultSort","defaultViewMode","version","enabled","defaults","migrate","onError","state","setState","useQueryStates","parseAsString","parseAsInteger","encodeSorting","parseAsStringLiteral","parseAsBoolean","parseAsJson","validateColumnFilters","validateBooleanRecord","validateStringArray","validateColumnPinning","enabledSet","enhancedResolution","raw","validateEnhancedState","error","sorting","decodeSorting","columnFilters","columnVisibility","density","columnOrder","columnPinning","grouping","rowSelection","schemaVersion","setSorting","updater","nextSorting","resolveUpdater","next","setQuery","query","setPageIndex","pageIndex","setPageSize","pageSize","setViewMode","view","setShowHidden","showHidden","setColumnFilters","setColumnVisibility","hasKeys","setDensity","setColumnOrder","setColumnPinning","setGrouping","setRowSelection","clearEnhancedState","tableState","sort","value","order","parsed","item","filters","visibility","pinning","selection","isRecord","entry","current"],"mappings":"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","file":"url-state.js","sourcesContent":["import * as React from \"react\";\nimport {\n parseAsBoolean,\n parseAsInteger,\n parseAsJson,\n parseAsString,\n parseAsStringLiteral,\n useQueryStates,\n} from \"nuqs\";\nimport type {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnVisibilityState as VisibilityState,\n GroupingState,\n SortingState,\n Updater,\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnPinningState as ColumnPinningState,\n DataTableDensity,\n DataTableState,\n DataTableViewMode,\n} from \"../types\";\n\nexport type DataTableUrlStateSlice =\n | \"columnFilters\"\n | \"columnVisibility\"\n | \"density\"\n | \"columnOrder\"\n | \"columnPinning\"\n | \"grouping\"\n | \"rowSelection\";\n\ntype DataTableUrlRowSelectionState = Record;\n\nexport type DataTableUrlEnhancedState = {\n columnFilters: ColumnFiltersState;\n columnVisibility: VisibilityState;\n density: DataTableDensity;\n columnOrder: ColumnOrderState;\n columnPinning: ColumnPinningState;\n grouping: GroupingState;\n rowSelection: DataTableUrlRowSelectionState;\n};\n\nexport type DataTableUrlStateMigrationPayload = {\n version: unknown;\n state: Partial;\n};\n\nexport type UseDataTableUrlStateOptions = {\n keyPrefix: string;\n defaultPageSize?: number;\n defaultSort?: { id: string; desc?: boolean };\n defaultViewMode?: DataTableViewMode;\n version?: string | number;\n enabled?: Array;\n defaults?: Partial;\n migrate?: (\n payload: DataTableUrlStateMigrationPayload,\n targetVersion: string | number,\n ) => Partial | undefined;\n onError?: (context: { error: unknown; operation: \"migrate\" }) => void;\n};\n\nconst EMPTY_FILTERS: ColumnFiltersState = [];\nconst EMPTY_VISIBILITY: VisibilityState = {};\nconst EMPTY_ORDER: ColumnOrderState = [];\nconst EMPTY_PINNING: ColumnPinningState = {};\nconst EMPTY_GROUPING: GroupingState = [];\nconst EMPTY_SELECTION: DataTableUrlRowSelectionState = {};\n\nexport function useDataTableUrlState({\n keyPrefix,\n defaultPageSize = 20,\n defaultSort,\n defaultViewMode = \"table\",\n version = 1,\n enabled = [],\n defaults,\n migrate,\n onError,\n}: UseDataTableUrlStateOptions) {\n const [state, setState] = useQueryStates(\n {\n query: parseAsString.withDefault(\"\"),\n page: parseAsInteger.withDefault(1),\n pageSize: parseAsInteger.withDefault(defaultPageSize),\n sort: parseAsString.withDefault(\n defaultSort\n ? encodeSorting([\n { id: defaultSort.id, desc: Boolean(defaultSort.desc) },\n ])\n : \"\",\n ),\n order: parseAsStringLiteral([\"asc\", \"desc\"] as const).withDefault(\n defaultSort?.desc ? \"desc\" : \"asc\",\n ),\n view: parseAsStringLiteral([\"table\", \"card\"] as const).withDefault(\n defaultViewMode,\n ),\n showHidden: parseAsBoolean.withDefault(false),\n schema: parseAsString,\n filters: parseAsJson(validateColumnFilters),\n visibility: parseAsJson(validateBooleanRecord),\n density: parseAsStringLiteral(\n [\"compact\", \"comfortable\", \"spacious\"] as const,\n ),\n columnOrder: parseAsJson(validateStringArray),\n pinning: parseAsJson(validateColumnPinning),\n grouping: parseAsJson(validateStringArray),\n selection: parseAsJson(validateBooleanRecord),\n },\n {\n clearOnDefault: true,\n history: \"replace\",\n urlKeys: {\n query: `${keyPrefix}q`,\n page: `${keyPrefix}page`,\n pageSize: `${keyPrefix}size`,\n sort: `${keyPrefix}sort`,\n order: `${keyPrefix}order`,\n view: `${keyPrefix}view`,\n showHidden: `${keyPrefix}showHidden`,\n schema: `${keyPrefix}v`,\n filters: `${keyPrefix}filters`,\n visibility: `${keyPrefix}visibility`,\n density: `${keyPrefix}density`,\n columnOrder: `${keyPrefix}columns`,\n pinning: `${keyPrefix}pinning`,\n grouping: `${keyPrefix}grouping`,\n selection: `${keyPrefix}selection`,\n },\n },\n );\n const enabledSet = React.useMemo(() => new Set(enabled), [enabled]);\n const enhancedResolution = React.useMemo<{\n state: Partial;\n error?: unknown;\n }>(() => {\n const raw: Partial = {};\n if (enabledSet.has(\"columnFilters\") && state.filters !== null) {\n raw.columnFilters = state.filters;\n }\n if (enabledSet.has(\"columnVisibility\") && state.visibility !== null) {\n raw.columnVisibility = state.visibility;\n }\n if (enabledSet.has(\"density\") && state.density !== null) {\n raw.density = state.density;\n }\n if (enabledSet.has(\"columnOrder\") && state.columnOrder !== null) {\n raw.columnOrder = state.columnOrder;\n }\n if (enabledSet.has(\"columnPinning\") && state.pinning !== null) {\n raw.columnPinning = state.pinning;\n }\n if (enabledSet.has(\"grouping\") && state.grouping !== null) {\n raw.grouping = state.grouping;\n }\n if (enabledSet.has(\"rowSelection\") && state.selection !== null) {\n raw.rowSelection = state.selection;\n }\n\n if (Object.keys(raw).length === 0) {\n return { state: raw };\n }\n if (state.schema === String(version)) {\n return { state: raw };\n }\n if (!migrate) {\n return { state: {} };\n }\n\n try {\n return {\n state: validateEnhancedState(\n migrate(\n {\n version: state.schema,\n state: raw,\n },\n version,\n ),\n enabledSet,\n ),\n };\n } catch (error) {\n return { error, state: {} };\n }\n }, [\n enabledSet,\n migrate,\n state.columnOrder,\n state.density,\n state.filters,\n state.grouping,\n state.pinning,\n state.schema,\n state.selection,\n state.visibility,\n version,\n ]);\n\n React.useEffect(() => {\n if (enhancedResolution.error !== undefined) {\n onError?.({\n error: enhancedResolution.error,\n operation: \"migrate\",\n });\n }\n }, [enhancedResolution.error, onError]);\n\n const sorting = React.useMemo(() => {\n if (!state.sort) {\n return [];\n }\n return decodeSorting(state.sort, state.order);\n }, [state.order, state.sort]);\n const columnFilters =\n enhancedResolution.state.columnFilters ??\n defaults?.columnFilters ??\n EMPTY_FILTERS;\n const columnVisibility =\n enhancedResolution.state.columnVisibility ??\n defaults?.columnVisibility ??\n EMPTY_VISIBILITY;\n const density =\n enhancedResolution.state.density ??\n defaults?.density ??\n \"comfortable\";\n const columnOrder =\n enhancedResolution.state.columnOrder ??\n defaults?.columnOrder ??\n EMPTY_ORDER;\n const columnPinning =\n enhancedResolution.state.columnPinning ??\n defaults?.columnPinning ??\n EMPTY_PINNING;\n const grouping =\n enhancedResolution.state.grouping ??\n defaults?.grouping ??\n EMPTY_GROUPING;\n const rowSelection =\n enhancedResolution.state.rowSelection ??\n defaults?.rowSelection ??\n EMPTY_SELECTION;\n const schemaVersion = String(version);\n\n const setSorting = React.useCallback(\n (updater: Updater) => {\n const nextSorting = resolveUpdater(updater, sorting);\n if (nextSorting.length === 0) {\n void setState({\n page: 1,\n sort: \"\",\n order: \"asc\",\n });\n return;\n }\n\n const next = nextSorting[0];\n void setState({\n page: 1,\n sort: encodeSorting(nextSorting),\n order: next.desc ? \"desc\" : \"asc\",\n });\n },\n [setState, sorting],\n );\n\n const setQuery = React.useCallback(\n (query: string) => {\n void setState({ page: 1, query });\n },\n [setState],\n );\n\n const setPageIndex = React.useCallback(\n (pageIndex: number) => {\n void setState({ page: pageIndex + 1 });\n },\n [setState],\n );\n\n const setPageSize = React.useCallback(\n (pageSize: number) => {\n void setState({ page: 1, pageSize });\n },\n [setState],\n );\n\n const setViewMode = React.useCallback(\n (view: DataTableViewMode) => {\n void setState({ view });\n },\n [setState],\n );\n\n const setShowHidden = React.useCallback(\n (showHidden: boolean) => {\n void setState({ showHidden });\n },\n [setState],\n );\n\n const setColumnFilters = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnFilters\")) return;\n const next = resolveUpdater(updater, columnFilters);\n void setState({\n page: 1,\n schema: schemaVersion,\n filters: next.length > 0 ? next : null,\n });\n },\n [columnFilters, enabledSet, schemaVersion, setState],\n );\n\n const setColumnVisibility = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnVisibility\")) return;\n const next = resolveUpdater(updater, columnVisibility);\n void setState({\n schema: schemaVersion,\n visibility: hasKeys(next) ? next : null,\n });\n },\n [columnVisibility, enabledSet, schemaVersion, setState],\n );\n\n const setDensity = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"density\")) return;\n const next = resolveUpdater(updater, density);\n void setState({\n schema: schemaVersion,\n density: next === (defaults?.density ?? \"comfortable\") ? null : next,\n });\n },\n [defaults?.density, density, enabledSet, schemaVersion, setState],\n );\n\n const setColumnOrder = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnOrder\")) return;\n const next = resolveUpdater(updater, columnOrder);\n void setState({\n schema: schemaVersion,\n columnOrder: next.length > 0 ? next : null,\n });\n },\n [columnOrder, enabledSet, schemaVersion, setState],\n );\n\n const setColumnPinning = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"columnPinning\")) return;\n const next = resolveUpdater(updater, columnPinning);\n void setState({\n schema: schemaVersion,\n pinning:\n (next.left?.length ?? 0) > 0 || (next.right?.length ?? 0) > 0\n ? next\n : null,\n });\n },\n [columnPinning, enabledSet, schemaVersion, setState],\n );\n\n const setGrouping = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"grouping\")) return;\n const next = resolveUpdater(updater, grouping);\n void setState({\n page: 1,\n schema: schemaVersion,\n grouping: next.length > 0 ? next : null,\n });\n },\n [enabledSet, grouping, schemaVersion, setState],\n );\n\n const setRowSelection = React.useCallback(\n (updater: Updater) => {\n if (!enabledSet.has(\"rowSelection\")) return;\n const next = resolveUpdater(updater, rowSelection);\n void setState({\n schema: schemaVersion,\n selection: hasKeys(next) ? next : null,\n });\n },\n [enabledSet, rowSelection, schemaVersion, setState],\n );\n\n const clearEnhancedState = React.useCallback(() => {\n void setState({\n schema: null,\n filters: null,\n visibility: null,\n density: null,\n columnOrder: null,\n pinning: null,\n grouping: null,\n selection: null,\n });\n }, [setState]);\n\n const tableState = React.useMemo>(\n () => ({\n globalFilter: state.query,\n pagination: {\n pageIndex: Math.max(0, state.page - 1),\n pageSize: state.pageSize,\n },\n sorting,\n viewMode: state.view,\n showHiddenRows: state.showHidden,\n ...(enabledSet.has(\"columnFilters\") ? { columnFilters } : {}),\n ...(enabledSet.has(\"columnVisibility\") ? { columnVisibility } : {}),\n ...(enabledSet.has(\"density\") ? { density } : {}),\n ...(enabledSet.has(\"columnOrder\") ? { columnOrder } : {}),\n ...(enabledSet.has(\"columnPinning\") ? { columnPinning } : {}),\n ...(enabledSet.has(\"rowSelection\") ? { rowSelection } : {}),\n }),\n [\n columnFilters,\n columnOrder,\n columnPinning,\n columnVisibility,\n density,\n enabledSet,\n rowSelection,\n sorting,\n state.page,\n state.pageSize,\n state.query,\n state.showHidden,\n state.view,\n ],\n );\n\n return {\n toolbarQueryValue: state.query,\n setToolbarQueryValue: setQuery,\n pageIndex: Math.max(0, state.page - 1),\n setPageIndex,\n pageSize: state.pageSize,\n setPageSize,\n sorting,\n setSorting,\n viewMode: state.view,\n setViewMode,\n showHiddenRows: state.showHidden,\n setShowHiddenRows: setShowHidden,\n columnFilters,\n setColumnFilters,\n columnVisibility,\n setColumnVisibility,\n density,\n setDensity,\n columnOrder,\n setColumnOrder,\n columnPinning,\n setColumnPinning,\n grouping,\n setGrouping,\n rowSelection,\n setRowSelection,\n tableState,\n schemaVersion,\n clearEnhancedState,\n };\n}\n\nfunction encodeSorting(sorting: SortingState) {\n return JSON.stringify(\n sorting.map((sort) => ({\n id: sort.id,\n desc: Boolean(sort.desc),\n })),\n );\n}\n\nfunction decodeSorting(value: string, order: \"asc\" | \"desc\"): SortingState {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!Array.isArray(parsed)) {\n throw new Error(\"Expected sorting array\");\n }\n\n return parsed\n .map((item) => {\n if (\n !item ||\n typeof item !== \"object\" ||\n typeof (item as { id?: unknown }).id !== \"string\"\n ) {\n return undefined;\n }\n\n return {\n id: (item as { id: string }).id,\n desc: Boolean((item as { desc?: unknown }).desc),\n };\n })\n .filter((item): item is SortingState[number] => Boolean(item));\n } catch {\n return [{ id: value, desc: order === \"desc\" }];\n }\n}\n\nfunction validateEnhancedState(\n value: Partial | undefined,\n enabled: Set,\n): Partial {\n if (!value) return {};\n const state: Partial = {};\n const filters = validateColumnFilters(value.columnFilters);\n if (enabled.has(\"columnFilters\") && filters) {\n state.columnFilters = filters;\n }\n const visibility = validateBooleanRecord(value.columnVisibility);\n if (enabled.has(\"columnVisibility\") && visibility) {\n state.columnVisibility = visibility;\n }\n if (\n enabled.has(\"density\") &&\n (value.density === \"compact\" ||\n value.density === \"comfortable\" ||\n value.density === \"spacious\")\n ) {\n state.density = value.density;\n }\n const order = validateStringArray(value.columnOrder);\n if (enabled.has(\"columnOrder\") && order) state.columnOrder = order;\n const pinning = validateColumnPinning(value.columnPinning);\n if (enabled.has(\"columnPinning\") && pinning) {\n state.columnPinning = pinning;\n }\n const grouping = validateStringArray(value.grouping);\n if (enabled.has(\"grouping\") && grouping) state.grouping = grouping;\n const selection = validateBooleanRecord(value.rowSelection);\n if (enabled.has(\"rowSelection\") && selection) {\n state.rowSelection = selection;\n }\n return state;\n}\n\nfunction validateColumnFilters(value: unknown): ColumnFiltersState | null {\n if (!Array.isArray(value)) return null;\n return value\n .filter(\n (item): item is { id: string; value: unknown } =>\n isRecord(item) &&\n typeof item.id === \"string\" &&\n Object.prototype.hasOwnProperty.call(item, \"value\"),\n )\n .map((item) => ({ id: item.id, value: item.value }));\n}\n\nfunction validateBooleanRecord(value: unknown): VisibilityState | null {\n if (!isRecord(value)) return null;\n return Object.fromEntries(\n Object.entries(value).filter(\n (entry): entry is [string, boolean] => typeof entry[1] === \"boolean\",\n ),\n );\n}\n\nfunction validateStringArray(value: unknown): Array | null {\n if (!Array.isArray(value)) return null;\n return value.filter((item): item is string => typeof item === \"string\");\n}\n\nfunction validateColumnPinning(value: unknown): ColumnPinningState | null {\n if (!isRecord(value)) return null;\n return {\n left: validateStringArray(value.left) ?? [],\n right: validateStringArray(value.right) ?? [],\n };\n}\n\nfunction resolveUpdater(updater: Updater, current: T) {\n return typeof updater === \"function\"\n ? (updater as (value: T) => T)(current)\n : updater;\n}\n\nfunction hasKeys(value: object) {\n return Object.keys(value).length > 0;\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]} \ No newline at end of file diff --git a/dist/virtual.d.ts b/dist/virtual.d.ts index e9ddc29..5beff98 100644 --- a/dist/virtual.d.ts +++ b/dist/virtual.d.ts @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DataTableProps } from './types.js'; -export { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, DataTableAccessibilityOptions, DataTableActionErrorContext, DataTableActionErrorSource, DataTableAlign, DataTableApi, DataTableAutoPageSizeConfig, DataTableCardRendererProps, DataTableCardSizing, DataTableCardVirtualizationConfig, DataTableCellCoordinate, DataTableCellEditRenderProps, DataTableCellOverflow, DataTableCellSelection, DataTableClipboardConfig, DataTableClipboardCopyOptions, DataTableClipboardCopyScope, DataTableClipboardPasteContext, DataTableColumnDef, DataTableColumnFilterConfig, DataTableColumnFilterOperator, DataTableColumnFilterOption, DataTableColumnFilterRangeValue, DataTableColumnFilterType, DataTableColumnFixed, DataTableColumnGroupDef, DataTableColumnMeta, DataTableColumnPrefs, DataTableColumnType, DataTableColumnVisibilityOption, DataTableContainerBreakpoint, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, DataTableDetailPanel, DataTableDragAndDropConfig, DataTableEditableRowsConfig, DataTableEmptyStateContext, DataTableExpandedRowProps, DataTableFacetedFilterOptions, DataTableFileUploadConfig, DataTableGridCommandContext, DataTableGridCommands, DataTableHiddenRowsConfig, DataTableInfiniteScroll, DataTableInitialState, DataTableInteractiveGridOptions, DataTableLabels, DataTableLoadingState, DataTablePersistenceConfig, DataTablePersistenceOperation, DataTablePersistencePayload, DataTablePersistenceSlice, DataTablePersistenceStorage, DataTableResetOptions, DataTableRowAction, DataTableRowClassNameContext, DataTableRowLoadingState, DataTableSavedView, DataTableSavedViewSlice, DataTableSavedViewsChangeOperation, DataTableSavedViewsConfig, DataTableSavedViewsPayload, DataTableScrollbarVisibility, DataTableSelectionAction, DataTableSelectionActionContext, DataTableState, DataTableStateOverlay, DataTableStateOverlayContext, DataTableSummaryRow, DataTableToolbarAction, DataTableToolbarDataOperations, DataTableToolbarVisibility, DataTableViewMode, DataTableVirtualizationConfig, alignClassName, canEditRow, canUseRowAction, cellAlignClassName, headerAlignClassName, hideOnClassName, isHiddenAtContainerWidth, isRowVisible, resolveColumnAlign, resolveRowActionLabel, rowSelectionStateFromRows } from './types.js'; +import { D as DataTableProps } from './types-BGNR6Ymh.js'; +export { a as DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS, b as DataTableAccessibilityOptions, c as DataTableActionErrorContext, d as DataTableActionErrorSource, e as DataTableAggregationFn, f as DataTableAlign, g as DataTableApi, h as DataTableAutoPageSizeConfig, i as DataTableCardRendererProps, j as DataTableCardSizing, k as DataTableCardVirtualizationConfig, l as DataTableCellCoordinate, m as DataTableCellEditRenderProps, n as DataTableCellOverflow, o as DataTableCellSelection, p as DataTableClipboardConfig, q as DataTableClipboardCopyOptions, r as DataTableClipboardCopyScope, s as DataTableClipboardPasteContext, t as DataTableColumnDef, u as DataTableColumnFilterConfig, v as DataTableColumnFilterOperator, w as DataTableColumnFilterOption, x as DataTableColumnFilterRangeValue, y as DataTableColumnFilterType, z as DataTableColumnFixed, A as DataTableColumnGroupDef, B as DataTableColumnMeta, C as DataTableColumnPinningState, E as DataTableColumnPrefs, F as DataTableColumnType, G as DataTableColumnVisibilityOption, H as DataTableContainerBreakpoint, I as DataTableCsvExportOptions, J as DataTableCsvExportScope, K as DataTableDensity, L as DataTableDetailPanel, M as DataTableDragAndDropConfig, N as DataTableEditableRowsConfig, O as DataTableEmptyStateContext, P as DataTableExpandedRowProps, Q as DataTableFacetedFilterOptions, R as DataTableFileUploadConfig, S as DataTableGridCommandContext, T as DataTableGridCommands, U as DataTableHiddenRowsConfig, V as DataTableInfiniteScroll, W as DataTableInitialState, X as DataTableInteractiveGridOptions, Y as DataTableLabels, Z as DataTableLoadingState, _ as DataTablePersistenceConfig, $ as DataTablePersistenceOperation, a0 as DataTablePersistencePayload, a1 as DataTablePersistenceSlice, a2 as DataTablePersistenceStorage, a3 as DataTableResetOptions, a4 as DataTableRowAction, a5 as DataTableRowClassNameContext, a6 as DataTableRowLoadingState, a7 as DataTableSavedView, a8 as DataTableSavedViewSlice, a9 as DataTableSavedViewsChangeOperation, aa as DataTableSavedViewsConfig, ab as DataTableSavedViewsPayload, ac as DataTableScrollbarVisibility, ad as DataTableSelectionAction, ae as DataTableSelectionActionContext, af as DataTableState, ag as DataTableStateOverlay, ah as DataTableStateOverlayContext, ai as DataTableSummaryRow, aj as DataTableToolbarAction, ak as DataTableToolbarDataOperations, al as DataTableToolbarVisibility, am as DataTableViewMode, an as DataTableVirtualizationConfig, ao as alignClassName, ap as canEditRow, aq as canUseRowAction, ar as cellAlignClassName, as as headerAlignClassName, at as hideOnClassName, au as isHiddenAtContainerWidth, av as isRowVisible, aw as resolveColumnAlign, ax as resolveRowActionLabel, ay as rowSelectionStateFromRows } from './types-BGNR6Ymh.js'; import '@tanstack/react-table'; declare const DataTable: ({ columns, data, getRowId, children, title, description, toolbarQueryValue, onToolbarQueryValueChange, toolbarQueryPlaceholder, toolbarQueryDebounceMs, manualFiltering, enableToolbarQueryFiltering, globalFilterFn, columnFilters, onColumnFiltersChange, enableColumnFilters, customToolbar, compactToolbar, rowsPerPageOptions, totalRowCount, hasNextPage, sorting, onSortingChange, manualSorting, grouping, onGroupingChange, manualGrouping, enableGrouping, groupedColumnMode, aggregationFns, pageIndex, pageSize, autoPageSize, onPageIndexChange, onPageSizeChange, pageCount, manualPagination, rowSelection, onRowSelectionChange, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, getRowCanSelect, rowSelectionSelectAllScope, expanded, onExpandedChange, getSubRows, manualExpanding, paginateExpandedRows, filterFromLeafRows, maxLeafRowFilterDepth, detailPanel, getRowCanExpand, renderExpandedRow, columnOrder, onColumnOrderChange, enableColumnReordering, columnGroupHeaderHeight, columnPinning, onColumnPinningChange, enableColumnPinning, rowPinning, onRowPinningChange, enableRowPinning, keepPinnedRows, toolbarActions, selectionActions, rowActions, csvExport, clipboard, enableCellSelection, cellSelection, defaultCellSelection, onCellSelectionChange, gridCommands, density, onDensityChange, enableDensityToggle, columnPrefsKey, persistence, savedViews, toolbarDataOperations, initialState, state: unifiedState, onStateChange, apiRef, labels, summaryRows, cardRenderer, cardSizing, cardGridClassName, cardClassName, viewMode, onViewModeChange, enableViewToggle, enablePrint, enableFullscreen, emptyState, stateOverlay, isLoading, loadingRowCount, getRowLoadingState, hiddenRows, showHiddenRows, onShowHiddenRowsChange, infiniteScroll, editableRows, columnVisibility, onColumnVisibilityChange, columnSizing, onColumnSizingChange, enableColumnResizing, columnResizeMode, layoutMode, stickyHeader, scrollbarVisibility, showFooter, showToolbar, dir, flexGrow, toolbarVisibility, className, tableClassName, tableContainerClassName, stripedRows, getRowClassName, onRowClick, onActionError, dragAndDrop, fileUpload, virtualization, accessibility, interactiveGrid, }: DataTableProps) => React.JSX.Element; diff --git a/dist/virtual.js b/dist/virtual.js index ea6ec82..403e821 100644 --- a/dist/virtual.js +++ b/dist/virtual.js @@ -1,2 +1,2 @@ -import {a as a$1}from'./chunk-RS7MSX54.js';import {a}from'./chunk-VGMTY7KM.js';import'./chunk-B6JTUAWE.js';import'./chunk-W7VNQT7O.js';import'./chunk-VSIOOKCO.js';import'./chunk-I3CW6DTA.js';import'./chunk-EJHT5JBZ.js';import'./chunk-PRDXFLFB.js';import'./chunk-F2RBZWQV.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-O6MUTKGE.js';import'./chunk-XTVBESM5.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map +import {a as a$1}from'./chunk-RS7MSX54.js';import {a}from'./chunk-UMW6DOXG.js';import'./chunk-LTEXTQ2M.js';import'./chunk-IZQDLLCH.js';import'./chunk-VSIOOKCO.js';import'./chunk-XZTPNWJD.js';import'./chunk-EJHT5JBZ.js';import'./chunk-YKVWP3UJ.js';import'./chunk-YWMYYP3I.js';import'./chunk-CVR2ZXHQ.js';import'./chunk-7IWMFF7E.js';import'./chunk-XTVBESM5.js';var o=a(a$1);export{o as DataTable};//# sourceMappingURL=virtual.js.map //# sourceMappingURL=virtual.js.map \ No newline at end of file diff --git a/docs/API.md b/docs/API.md index 11ea6d7..84e4042 100644 --- a/docs/API.md +++ b/docs/API.md @@ -2,6 +2,12 @@ This document describes the public API exported by `data-table-pro`. +Version 5's TanStack-facing types and instances use TanStack React Table v9. +The wrapper state API remains project-owned: `apiRef.current.getState()` and +physical `{ left, right }` column-pinning state are stable, while the table +returned by `apiRef.current.getTable()` follows v9. See the +[5.0 migration guide](./Migration.md) for the breaking-change map. + ## Package Entry Points Adapter entrypoints export the table component and public types. Dedicated @@ -548,12 +554,16 @@ meta: { | `manualGrouping` | `boolean` | `false` | Skips the local grouped row model for server-grouped data. | | `enableGrouping` | `boolean` | `false` | Adds accessible group/ungroup controls and a removable grouping bar. | | `groupedColumnMode` | `false \| "reorder" \| "remove"` | `"reorder"` | Placement of grouped columns. | -| `aggregationFns` | `Record>` | `undefined` | Named aggregation functions for column definitions. | +| `aggregationFns` | `Record>` | `undefined` | Named TanStack v9 context-based aggregation definitions for column definitions. | Use native TanStack `enableGrouping`, `aggregationFn`, and `aggregatedCell` on a `DataTableColumnDef`. Grouped cells toggle descendants, aggregated cells use `aggregatedCell` when present, and placeholder cells render empty. +`DataTableAggregationFn` uses the v9 definition shape. Its `aggregate` +callback receives a context containing `rows`, `getValue`, `column`, and the +owning table. V8's positional aggregation callback is not accepted. + ```tsx const columns = [ { diff --git a/docs/Migration.md b/docs/Migration.md index fd9eaeb..0768621 100644 --- a/docs/Migration.md +++ b/docs/Migration.md @@ -1,5 +1,147 @@ # Migration Guide +## 5.0.0 Breaking Changes: TanStack React Table v9 + +Version 5.0.0 upgrades from `@tanstack/react-table@8.21.3` to v9.1.2. It +targets v9 directly and does not use the deprecated `useLegacyTable` +compatibility hook. + +Install the major release from its Git tag: + +```bash +pnpm add github:Dastari/data-table-pro#v5.0.0 +``` + +### Compatibility boundary + +The component-level wrapper remains compatible where its contract is owned by +this project: + +- Controlled v8-style `Record` row selection is normalized to + v9's selected-only state at the integration boundary. +- Public and persisted column pinning remains `{ left, right }`. Only the + TanStack instance receives `{ start, end }`, so existing preferences, URLs, + saved views, labels, and physical sticky-column styling remain valid. +- `apiRef.current.getState()` remains the stable wrapper snapshot API. Code + that asks for the underlying v9 table through `apiRef.current.getTable()` + reads its current TanStack state from `table.store.state`. +- Existing package entrypoints, adapters, persisted preferences, saved views, + and URL-state formats are unchanged. + +The implementation itself now uses `useTable`, one explicit feature registry, +v9 row-model slots, and project-owned table/row/column/cell/header type aliases +that contain TanStack's new feature generic. + +### Required consumer changes + +Direct TanStack-facing code must adopt these v9 changes: + +| V8 form | V9 form used by the project | +| --- | --- | +| `sortingFn` | `sortFn` | +| callable custom `AggregationFn` | context-based `DataTableAggregationFn` definition | +| `table.getState()` | `table.store.state` (snapshot) | +| `getPrePaginationRowModel()` | `getPrePaginatedRowModel()` | +| internal pinning `left` / `right` state and methods | logical `start` / `end` state and method families | +| destructured/spread row, cell, column, or header methods | call methods through their owning instance | +| `getIsSome*Selected()` means some but not all | means at least one; combine with `!getIsAll*Selected()` for indeterminate state | +| raw `Table`, `Row`, `ColumnDef`, etc. | add v9's leading `TFeatures` generic or use project-owned `DataTable*` types | +| primitive row data | record or array row data | + +For column sorting, rename only the TanStack column-definition option: + +```tsx +const columns: Array> = [ + { + accessorKey: "name", + sortFn: "alphanumeric", + }, +]; +``` + +Register a custom aggregation as a definition with an `aggregate` method: + +```tsx + + rows.reduce((total, row) => total + Number(getValue(row)), 0) * 2, + }, + }} + columns={[ + { accessorKey: "team", enableGrouping: true }, + { accessorKey: "hours", aggregationFn: "doubledSum" }, + ]} + data={rows} + getRowId={(row) => row.id} +/> +``` + +The wrapper and underlying table now expose deliberately different pinning and +state boundaries: + +```tsx +const wrapperState = apiRef.current?.getState(); +// wrapperState.columnPinning is still { left, right } + +const table = apiRef.current?.getTable(); +const tanStackState = table?.store.state; +// tanStackState.columnPinning is { start, end } +``` + +Do not extract prototype methods from rows, cells, columns, or headers: + +```tsx +// Incorrect in v9: const { getValue } = row; +const value = row.getValue("name"); +const values = rows.map((currentRow) => currentRow.getValue("name")); +``` + +For an indeterminate selection checkbox, test both v9 predicates: + +```tsx +const indeterminate = + table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected(); +``` + +### Advanced direct-TanStack checklist + +Consumers that construct their own TanStack tables alongside this package, or +that rely heavily on the instance returned by `apiRef.current.getTable()`, +should also apply the remaining v9 architecture changes: + +- replace `useReactTable(options)` with `useTable({ ...options, features })`; +- register each used feature with `tableFeatures()`; the core row model is + automatic, while optional row models move from `get*RowModel` table options + to `create*RowModel()` feature slots; +- move `sortingFns`, `filterFns`, and `aggregationFns` registries into the + feature registry and rename `sortingFns` to `sortFns`; +- split table-level `enablePinning` into `enableColumnPinning` and + `enableRowPinning` where applicable; +- register `columnSizingFeature` and `columnResizingFeature` separately, and + rename `columnSizingInfo`, `setColumnSizingInfo`, and + `onColumnSizingInfoChange` to their `columnResizing` equivalents; and +- replace underscore-prefixed v8 internals with public v9 methods, including + `row.getAllCellsByColumnId()`, `table.getTopRows()`, + `table.getCenterRows()`, and `table.getBottomRows()`. + +The package's own integration has completed this checklist. These items apply +only to consumer code that directly constructs or operates on TanStack +instances. + +### Post-5.0 follow-up work + +These are optimizations and additional coverage, not release blockers or +unrecorded compatibility requirements: + +- replace the broad built-in filter/sort/aggregation registries with an + audited tree-shakeable registry while retaining documented string names; +- add focused consumer fixtures for v9-only `sortFn`, custom filters, and + custom aggregations; +- evaluate narrower `useTable` selectors and `Subscribe` boundaries after + measuring render behavior. + ## 4.5.0 additive layout release Version 4.5.0 removes no public prop, type, or package entrypoint. Existing @@ -132,7 +274,7 @@ one of these peer minimums must update that dependency before consuming the next release. Repository contributors now need a jsdom 30-supported Node.js release -(`^22.22.2`, `^24.15.0`, or `>=26`) and pnpm 11.17.0. CI uses Node.js +(`^22.22.2`, `^24.15.0`, or `>=26`) and pnpm 11.21.0. CI uses Node.js 22.22.2. TypeScript 7.0 removes `baseUrl` and does not expose the programmatic compiler API needed by typescript-eslint and tsup. The repository therefore follows the TypeScript team's side-by-side migration: @@ -291,24 +433,25 @@ Use `resetColumnLayout({ clearPersistence: true })` or `resetState({ clearPersistence: true })` to discard the old payload and restore initial/default values in one command. -## Planned 5.0 migration +## Deferred wrapper API cleanup after 5.0 -Version 4.0.0 intentionally removes no public API. The modernization roadmap -defines the following possible 5.0 changes so consumers can adopt their 4.x -replacements before anything is removed: +Version 5.0.0 uses its major boundary for the TanStack v9 migration above. It +does not remove the unrelated wrapper compatibility APIs previously proposed +for 5.0. Those candidates remain deferred until a later major and still +require a stable replacement and deprecation period: -| Current 4.x API | Planned 5.0 API | Compatibility path | +| Current compatibility API | Possible future API | Compatibility path | | --- | --- | --- | -| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Both names will work during a 4.x deprecation window before any removal. | -| Split `pageIndex`/`pageSize` props and callbacks | Unified pagination state and `onPaginationChange` | Unified state is additive in 4.x. | -| `renderExpandedRow` and `getRowCanExpand` for detail content | `detailPanel={{ render, getCanExpand }}` | The explicit detail-panel API will ship before tree expansion takes ownership of expanded-row semantics. | -| `columnPrefsKey` | Versioned `persistence` configuration | `columnPrefsKey` remains a 4.x compatibility shorthand. | -| `virtualization` on the base component | Dedicated virtual adapter entrypoints | Both entry styles coexist in 4.x; base imports load virtual panels on demand. | -| Broad `data-table-pro/advanced` imports | Stable `data-table-pro/adapter` contracts | The stable factory entrypoint is available; advanced remains supported through 4.x. | +| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Both names must work during a documented deprecation window before removal. | +| Split `pageIndex`/`pageSize` props and callbacks | Unified pagination state and `onPaginationChange` | Unified state remains additive until the split props are formally deprecated. | +| `renderExpandedRow` and `getRowCanExpand` for detail content | `detailPanel={{ render, getCanExpand }}` | The explicit detail-panel API must remain stable before tree expansion takes exclusive ownership. | +| `columnPrefsKey` | Versioned `persistence` configuration | `columnPrefsKey` remains a compatibility shorthand until a later deprecation. | +| `virtualization` on the base component | Dedicated virtual adapter entrypoints | Both entry styles continue to coexist; base imports load virtual panels on demand. | +| Broad `data-table-pro/advanced` imports | Stable `data-table-pro/adapter` contracts | A complete advanced-import mapping is required before removal. | -Any 5.0 removal is gated on: +Any future removal is gated on: -- at least one stable 4.x release containing every replacement +- at least one stable release containing every replacement - development warnings for conflicting old/new props - a codemod for renamed props and entrypoints - migration fixtures for every adapter, server pagination, URL state, diff --git a/docs/Roadmap.md b/docs/Roadmap.md index 2c7ffb6..ba3b666 100644 --- a/docs/Roadmap.md +++ b/docs/Roadmap.md @@ -16,15 +16,15 @@ Audit baseline: Current implementation baseline: -- package version: 4.5.0 +- package version: 5.0.0 - React/React DOM peers: 19.2.8 -- TanStack Table: 8.21.3 -- TanStack Virtual: 3.14.8 -- validation: 317 unit/integration tests, enforced coverage and declaration +- TanStack Table: 9.1.2 with explicit features and no legacy hook +- TanStack Virtual: 3.14.9 +- validation: 318 unit/integration tests, enforced coverage and declaration snapshots, SSR/hydration tests, a packed-consumer build, and six adapter/theme Playwright screenshot and axe cases - toolchain: TypeScript 7 CLI with the official TypeScript 6 compiler-API - compatibility package, ESLint 10, Vite 8, Vitest 4, and pnpm 11 + compatibility package, ESLint 10, Vite 8, Vitest 4, and pnpm 11.21 ## Goals @@ -34,7 +34,8 @@ Current implementation baseline: 3. Add the quality-of-life features users expect from a modern data grid without turning the default table into a large enterprise-grid bundle. 4. Make optional features independently importable and measurable. -5. Preserve 4.x compatibility while preparing one documented future 5.0 cleanup. +5. Preserve wrapper compatibility across the 5.0 TanStack migration and stage + unrelated cleanup only after documented deprecation periods. ## Non-goals @@ -64,7 +65,7 @@ Current implementation baseline: | I18N-01 | P1 | Several selection, view-toggle, filter, and card labels remain hard-coded rather than flowing through `DataTableLabels`. | Complete the label catalog and add an alternate-locale regression fixture. | | API-01 | P1 | State is controlled through many separate props and column sizing cannot be controlled. There is no unified initial state, state callback, or public table API ref. | Add `initialState`, `state`, `onStateChange`, controlled column sizing, and a typed API ref; delivered before the 4.0 release. | | API-02 | P1 | Detail panels use TanStack expansion state, but true hierarchical sub-rows are not supported. This makes the meaning of “expanded” ambiguous. | Separate `detailPanel` from tree expansion and add `getSubRows`/manual expanding. | -| API-03 | P1 | The `advanced` entrypoint exposes implementation hooks and panels as a supported surface, making internal refactors expensive. | Introduce a narrow stable adapter-authoring entrypoint and mark raw internals as unstable before 5.0. | +| API-03 | P1 | The `advanced` entrypoint exposes implementation hooks and panels as a supported surface, making internal refactors expensive. | Introduce a narrow stable adapter-authoring entrypoint and mark raw internals as unstable before any later cleanup major. | | QA-01 | P1 | All 164 interaction cases live in one 1,800-line test file and mostly use jsdom. There are no visual, real-layout, accessibility, SSR, or consumer-install tests. | Split tests by feature and add Playwright, screenshot, axe, SSR, and packed-package fixtures. | | QA-02 | P1 | CI builds committed `dist` but does not fail when the generated output is stale. There are no bundle, coverage, or public-type/API budgets. | Add clean-tree distribution checks, bundle limits, coverage thresholds, and API/type snapshots. | | QA-03 | P2 | API documentation is maintained manually and can drift from `DataTableProps` and labels. Dependency updates are also manual. | Generate prop/type reference sections, link examples to tests, and add scheduled dependency update/compatibility checks. | @@ -457,28 +458,30 @@ request deduplication, caching, retry, refresh, and invalidation. lazy child/group loading. - Keep direct `data` plus manual flags supported for simple consumers. -### Future Phase 5: 5.0 API cleanup +### Deferred wrapper API cleanup after 5.0 -Version 4.0.0 intentionally shipped without public API removals. A future 5.0 -may remove only APIs that receive a documented 4.x replacement and deprecation -period. It should not combine unrelated visual redesign work with the -migration. +Version 5.0.0 uses its major-version boundary for TanStack React Table v9 and +does not perform the unrelated wrapper cleanup proposed earlier in the 4.x +roadmap. Any future removal still requires a stable replacement and a +documented deprecation period. It should not be combined with unrelated visual +redesign work. -Planned breaking changes: +Deferred candidates: -| Current 4.x API | Planned 5.0 API | 4.x migration bridge | +| Current compatibility API | Possible future API | Required migration bridge | | --- | --- | --- | -| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Add aliases during 4.x; keep old names functional and deprecated before removal. | -| `pageIndex`, `pageSize`, `onPageIndexChange`, `onPageSizeChange` | `state.pagination`/`pagination` and `onPaginationChange` | Unified state is already additive; document precedence and add any missing aliases during 4.x. | -| `renderExpandedRow`, `getRowCanExpand` for detail UI | `detailPanel={{ render, getCanExpand }}` | Add `detailPanel` during 4.x; reserve expansion props for tree rows only after the bridge ships. | -| `columnPrefsKey` | `persistence={{ key, version, slices, ... }}` | Treat the old prop as persistence shorthand throughout 4.x. | -| `virtualization` on the base component | Virtual adapter entrypoints/components | Keep both paths throughout 4.x; provide an import codemod and runtime-equivalent examples. | -| Broad `data-table-pro/advanced` internals | Stable `data-table-pro/adapter` plus explicitly unstable internals | The stable adapter contracts exist; publish a complete advanced-import mapping before removal. | -| Resolved-value-only controlled callbacks | TanStack-compatible updater callbacks through unified state | Keep legacy callbacks throughout 4.x and provide adapters for common `setState` usage. | +| `toolbarQueryValue`, `onToolbarQueryValueChange`, `toolbarQueryDebounceMs` | `globalFilter`, `onGlobalFilterChange`, `globalFilterDebounceMs` | Ship aliases and keep the old names functional and deprecated before removal. | +| `pageIndex`, `pageSize`, `onPageIndexChange`, `onPageSizeChange` | `state.pagination`/`pagination` and `onPaginationChange` | Keep unified state additive, document precedence, and add any missing aliases. | +| `renderExpandedRow`, `getRowCanExpand` for detail UI | `detailPanel={{ render, getCanExpand }}` | Keep the explicit detail-panel replacement stable before tree expansion takes exclusive ownership. | +| `columnPrefsKey` | `persistence={{ key, version, slices, ... }}` | Continue treating the old prop as persistence shorthand through a deprecation window. | +| `virtualization` on the base component | Virtual adapter entrypoints/components | Keep both paths available before providing a codemod and runtime-equivalent examples. | +| Broad `data-table-pro/advanced` internals | Stable `data-table-pro/adapter` plus explicitly unstable internals | Publish a complete advanced-import mapping before removal. | +| Resolved-value-only controlled callbacks | TanStack-compatible updater callbacks through unified state | Provide adapters for common `setState` usage through a deprecation window. | Migration requirements: -- Publish a complete `4.x -> 5.0` guide before the first 5.0 prerelease. +- Publish a complete guide before the first prerelease that removes any of + these compatibility APIs. - Provide before/after examples and a codemod for renamed props/imports. - Test migration fixtures for all three adapters, URL state, manual server pagination, virtualization, detail panels, and persisted preferences. @@ -486,7 +489,7 @@ Migration requirements: - Version persisted and URL state so old payloads are migrated or safely discarded instead of partially applied. - Do not remove a deprecated API until its replacement has shipped in at least - one stable 4.x release. + one stable release. ## Deferred and optional capabilities @@ -522,7 +525,7 @@ Release order is deliberate: 3. Establish accessible focus/navigation before cell range selection. 4. Split optional runtime capabilities before adding column virtualization or XLSX. -5. Ship deprecation bridges before 5.0 removes anything. +5. Ship deprecation bridges before any later major removes compatibility APIs. ## Reference set diff --git a/package.json b/package.json index ca4dbf7..16ddc2c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "data-table-pro", - "version": "4.5.1", + "version": "5.0.0", "description": "Reusable React data table library with shadcn, HeroUI, and The Gridcn adapters.", "type": "module", "license": "MIT", @@ -124,7 +124,7 @@ } }, "dependencies": { - "@tanstack/react-table": "^8.21.3", + "@tanstack/react-table": "^9.1.2", "@tanstack/react-virtual": "^3.14.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 59cf3c5..72e5756 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ importers: specifier: ^3.2.2 version: 3.2.2(tailwind-merge@3.6.0)(tailwindcss@4.3.3) '@tanstack/react-table': - specifier: ^8.21.3 - version: 8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + specifier: ^9.1.2 + version: 9.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-virtual': specifier: ^3.14.9 version: 3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) @@ -1684,12 +1684,17 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@tanstack/react-table@8.21.3': - resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} - engines: {node: '>=12'} + '@tanstack/react-store@0.11.1': + resolution: {integrity: sha512-HaIGKI3YLmjBYIvy5DFDY23oNaYZIsTZfngey07Uh5iLVJgM3bIGCnZeOFOqzjFld9JHWcaHJnasD/bKoGKwJQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/react-table@9.1.2': + resolution: {integrity: sha512-YQPZFJ1nIi/bjjwsPZVouABgahDcl7Gdm33CdTStUJBn0DjEVJ2uhSTVmIoWt9MVKdQziXGAsXipSzy949Hygg==} + engines: {node: '>=20'} peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react: '>=18' '@tanstack/react-virtual@3.14.9': resolution: {integrity: sha512-qZyr0FZDP8rDC4WBhsryIZmAd9bveJvFGUJJtskWaew6/0dTRS6wZxnR6VQ5bY2KwL3LjerrHqQLk3a0GKcPXQ==} @@ -1697,9 +1702,12 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/table-core@8.21.3': - resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} - engines: {node: '>=12'} + '@tanstack/store@0.11.1': + resolution: {integrity: sha512-mzTOBhypOuDJAy/D8n2MfUZ1HFkXnmSETviRyhqEC8LUE7/IZQExOTxMANj3KjTofYTkFNpBY67qaVrT41YccA==} + + '@tanstack/table-core@9.1.2': + resolution: {integrity: sha512-ONpWQeass1sfg80CWF1NSwQ8r3GiqxA2lT/EdqIcrDEPZ0Z+0mM94eQoFYLPN0Kztzj8TQVb2+PrSZSItqA61g==} + engines: {node: '>=20'} '@tanstack/virtual-core@3.17.7': resolution: {integrity: sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==} @@ -3933,6 +3941,11 @@ packages: '@types/react': optional: true + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -5610,11 +5623,20 @@ snapshots: tailwindcss: 4.3.3 vite: 8.2.1(esbuild@0.28.1)(jiti@2.7.0) - '@tanstack/react-table@8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tanstack/react-store@0.11.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@tanstack/table-core': 8.21.3 + '@tanstack/store': 0.11.1 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) + use-sync-external-store: 1.6.0(react@19.2.8) + + '@tanstack/react-table@9.1.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/react-store': 0.11.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/table-core': 9.1.2 + react: 19.2.8 + transitivePeerDependencies: + - react-dom '@tanstack/react-virtual@3.14.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: @@ -5622,7 +5644,11 @@ snapshots: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - '@tanstack/table-core@8.21.3': {} + '@tanstack/store@0.11.1': {} + + '@tanstack/table-core@9.1.2': + dependencies: + '@tanstack/store': 0.11.1 '@tanstack/virtual-core@3.17.7': {} @@ -7834,6 +7860,10 @@ snapshots: optionalDependencies: '@types/react': 19.2.18 + use-sync-external-store@1.6.0(react@19.2.8): + dependencies: + react: 19.2.8 + util-deprecate@1.0.2: {} validate-npm-package-name@7.0.2: {} diff --git a/src/core/data-table/create-data-table-card-view.tsx b/src/core/data-table/create-data-table-card-view.tsx index a1d7901..631059b 100644 --- a/src/core/data-table/create-data-table-card-view.tsx +++ b/src/core/data-table/create-data-table-card-view.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import type { ExpandedState, OnChangeFn, Row } from "@tanstack/react-table"; +import type { ExpandedState, OnChangeFn } from "@tanstack/react-table"; import { IconChevronDown } from "../icons"; import type { DataTableCardRendererProps, @@ -17,6 +17,7 @@ import { isDataTableInteractiveTarget, toggleDataTableExpandedState, } from "./data-table-utils"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; type DataTableCardViewProps = { rows: Array>; diff --git a/src/core/data-table/create-data-table-toolbar.tsx b/src/core/data-table/create-data-table-toolbar.tsx index 8175cba..4bdea66 100644 --- a/src/core/data-table/create-data-table-toolbar.tsx +++ b/src/core/data-table/create-data-table-toolbar.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import type { Table as TanStackTable } from "@tanstack/react-table"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; import { IconAdjustmentsHorizontal, IconLayoutGrid, @@ -248,7 +248,7 @@ export function createDataTableToolbar(ui: DataTableUiKit) { !column.id.startsWith("__") && column.getCanGroup(), ); - const groupedColumns = table.getState().grouping.flatMap((id) => { + const groupedColumns = table.store.state.grouping.flatMap((id) => { const column = table.getColumn(id); return column ? [column] : []; }); @@ -847,7 +847,7 @@ export function createDataTableToolbar(ui: DataTableUiKit) { ? column.columnDef.header : column.id; const moveGrouping = (nextIndex: number) => { - const nextGrouping = [...table.getState().grouping]; + const nextGrouping = [...table.store.state.grouping]; const [groupingId] = nextGrouping.splice(groupingIndex, 1); if (groupingId === undefined) return; nextGrouping.splice(nextIndex, 0, groupingId); diff --git a/src/core/data-table/create-data-table.tsx b/src/core/data-table/create-data-table.tsx index cd48b5c..bf63aeb 100644 --- a/src/core/data-table/create-data-table.tsx +++ b/src/core/data-table/create-data-table.tsx @@ -1,8 +1,6 @@ import * as React from "react"; import { flushSync } from "react-dom"; -import type { - Table as TanStackTable, -} from "@tanstack/react-table"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; import type { DataTableActionErrorContext, DataTableApi, @@ -908,7 +906,7 @@ export function createDataTableWithPanels( if ( explicitlySizedColumnIds.has(columnId) || Object.prototype.hasOwnProperty.call( - table.getState().columnSizing, + table.store.state.columnSizing, columnId, ) ) { @@ -1123,7 +1121,7 @@ export function createDataTableWithPanels( table.setPagination(nextState.pagination); } if (nextState.rowSelection !== undefined) { - table.setRowSelection(nextState.rowSelection); + setCurrentRowSelection(nextState.rowSelection); } if (nextState.columnVisibility !== undefined) { table.setColumnVisibility(nextState.columnVisibility); @@ -1141,7 +1139,7 @@ export function createDataTableWithPanels( table.setColumnOrder(nextState.columnOrder); } if (nextState.columnPinning !== undefined) { - table.setColumnPinning(nextState.columnPinning); + setCurrentColumnPinning(nextState.columnPinning); } if (nextState.rowPinning !== undefined) { table.setRowPinning(nextState.rowPinning); @@ -1167,6 +1165,8 @@ export function createDataTableWithPanels( handleShowHiddenRowsChange, handleViewModeChange, setLocalSearchValue, + setCurrentColumnPinning, + setCurrentRowSelection, table, ], ); @@ -1881,8 +1881,8 @@ function cloneDataTableState(state: DataTableState): DataTableState { : undefined, }, rowPinning: { - top: state.rowPinning.top ? [...state.rowPinning.top] : undefined, - bottom: state.rowPinning.bottom ? [...state.rowPinning.bottom] : undefined, + top: [...state.rowPinning.top], + bottom: [...state.rowPinning.bottom], }, columnSizing: { ...state.columnSizing }, density: state.density, diff --git a/src/core/data-table/data-table-base-card-panel.tsx b/src/core/data-table/data-table-base-card-panel.tsx index 37f6af4..f0579e7 100644 --- a/src/core/data-table/data-table-base-card-panel.tsx +++ b/src/core/data-table/data-table-base-card-panel.tsx @@ -1,7 +1,7 @@ import * as React from "react"; -import type { Row } from "@tanstack/react-table"; import { cn } from "../../lib/utils"; import type { DataTableCardPanelProps } from "./data-table-card-panel-types"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; export function DataTableBaseCardPanel({ cardClassName, diff --git a/src/core/data-table/data-table-body-row.tsx b/src/core/data-table/data-table-body-row.tsx index e6d1db3..b8ba9fd 100644 --- a/src/core/data-table/data-table-body-row.tsx +++ b/src/core/data-table/data-table-body-row.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { flexRender, type Cell, type Row } from "@tanstack/react-table"; +import { flexRender } from "@tanstack/react-table"; import type { RowPinningPosition } from "@tanstack/react-table"; import type { DataTableColumnDef, @@ -19,6 +19,10 @@ import { import { renderEditableCell } from "./use-row-editing"; import { useDataTableVirtualRowMeasurement } from "./data-table-virtual-row-measurement"; import { cellAlignClassName, hideOnClassName } from "../types"; +import type { + DataTableTanStackCell as Cell, + DataTableTanStackRow as Row, +} from "./tanstack-v9"; export type DataTableRowEditingContext = { cancel: () => void; diff --git a/src/core/data-table/data-table-card-panel-types.ts b/src/core/data-table/data-table-card-panel-types.ts index 3851ad5..c8166fd 100644 --- a/src/core/data-table/data-table-card-panel-types.ts +++ b/src/core/data-table/data-table-card-panel-types.ts @@ -1,7 +1,8 @@ import type * as React from "react"; -import type { ExpandedState, OnChangeFn, Row } from "@tanstack/react-table"; +import type { ExpandedState, OnChangeFn } from "@tanstack/react-table"; import type { DataTableLabels, DataTableProps } from "../types"; import type { DataTableUiClassNames, DataTableUiKit } from "../ui-kit"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; export type DataTableCardPanelProps = { cardClassName: string | undefined; diff --git a/src/core/data-table/data-table-cell-content.tsx b/src/core/data-table/data-table-cell-content.tsx index 09e5382..910dd7e 100644 --- a/src/core/data-table/data-table-cell-content.tsx +++ b/src/core/data-table/data-table-cell-content.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import { flexRender, type CellContext } from "@tanstack/react-table"; +import { flexRender } from "@tanstack/react-table"; import { IconClock } from "../icons"; import type { DataTableCellOverflow, @@ -7,6 +7,7 @@ import type { } from "../types"; import type { DataTableUiClassNames } from "../ui-kit"; import { cn } from "../../lib/utils"; +import type { DataTableTanStackCellContext as CellContext } from "./tanstack-v9"; export function renderDataTableCellContent( context: CellContext, diff --git a/src/core/data-table/data-table-clipboard.ts b/src/core/data-table/data-table-clipboard.ts index bbe4811..4118a44 100644 --- a/src/core/data-table/data-table-clipboard.ts +++ b/src/core/data-table/data-table-clipboard.ts @@ -1,4 +1,3 @@ -import type { Column, Table as TanStackTable } from "@tanstack/react-table"; import type { DataTableCellSelection, DataTableClipboardCopyOptions, @@ -9,6 +8,10 @@ import { normalizeFilterValue, startCase, } from "./data-table-utils"; +import type { + DataTableTanStackColumn as Column, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; export async function copyDataTableToClipboard({ clipboard, diff --git a/src/core/data-table/data-table-grouping-faceting.test.tsx b/src/core/data-table/data-table-grouping-faceting.test.tsx index 1e6893f..b4c1d29 100644 --- a/src/core/data-table/data-table-grouping-faceting.test.tsx +++ b/src/core/data-table/data-table-grouping-faceting.test.tsx @@ -56,6 +56,43 @@ describe("DataTable grouping and faceting", () => { expect(apiRef.current?.getTable()?.getRowModel().rows).toHaveLength(3); }); + it("registers v9 context-based custom aggregation definitions", () => { + const apiRef = React.createRef>(); + + render( + + aggregateRows.reduce( + (total, row) => total + Number(getValue(row)), + 0, + ) * 2, + }, + }} + columns={[ + columns[0], + { + accessorKey: "score", + header: "Score", + aggregationFn: "doubledSum", + }, + ]} + data={rows} + getRowId={(row) => row.id} + initialState={{ grouping: ["team"] }} + />, + ); + + expect( + apiRef.current + ?.getTable() + ?.getRowModel() + .rows.map((row) => row.getValue("score")), + ).toEqual([10, 14]); + }); + it("uses local facet counts and lets server-provided options replace them", () => { const localRef = React.createRef>(); const { container, rerender } = render( diff --git a/src/core/data-table/data-table-header-cell.tsx b/src/core/data-table/data-table-header-cell.tsx index d8b0eb7..f86ad63 100644 --- a/src/core/data-table/data-table-header-cell.tsx +++ b/src/core/data-table/data-table-header-cell.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { flexRender } from "@tanstack/react-table"; import { IconChevronDown, IconSelector } from "../icons"; -import type { Header, SortingState } from "@tanstack/react-table"; +import type { SortingState } from "@tanstack/react-table"; import type { DataTableColumnDef, DataTableColumnGroupDef, @@ -16,6 +16,7 @@ import { isUtilityColumnId, } from "./data-table-utils"; import { headerAlignClassName, hideOnClassName } from "../types"; +import type { DataTableTanStackHeader as Header } from "./tanstack-v9"; type DataTableHeaderCellProps = { columnGroupHeaderHeight: DataTableProps["columnGroupHeaderHeight"]; diff --git a/src/core/data-table/data-table-phase-zero.test.tsx b/src/core/data-table/data-table-phase-zero.test.tsx index 8967a09..2ce2ac9 100644 --- a/src/core/data-table/data-table-phase-zero.test.tsx +++ b/src/core/data-table/data-table-phase-zero.test.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import type { FilterFn } from "@tanstack/react-table"; +import type { DataTableTanStackFilterFn as FilterFn } from "./tanstack-v9"; import { afterAll, afterEach, diff --git a/src/core/data-table/data-table-state-api.test.tsx b/src/core/data-table/data-table-state-api.test.tsx index 903b8ab..81a51af 100644 --- a/src/core/data-table/data-table-state-api.test.tsx +++ b/src/core/data-table/data-table-state-api.test.tsx @@ -673,7 +673,7 @@ describe("DataTable unified state API", () => { const snapshot = apiRef.current?.snapshot(); expect(snapshot?.sorting).toEqual([]); expect(snapshot?.sorting).not.toBe( - apiRef.current?.getTable()?.getState().sorting, + apiRef.current?.getTable()?.store.state.sorting, ); act(() => { diff --git a/src/core/data-table/data-table-table-panel.tsx b/src/core/data-table/data-table-table-panel.tsx index 77c5e14..c0ea715 100644 --- a/src/core/data-table/data-table-table-panel.tsx +++ b/src/core/data-table/data-table-table-panel.tsx @@ -1,11 +1,7 @@ import * as React from "react"; import type { - Column, ExpandedState, - Header, RowPinningPosition, - Row, - Table as TanStackTable, } from "@tanstack/react-table"; import type { DataTableDensity, @@ -23,6 +19,12 @@ import { DataTableHeaderCell } from "./data-table-header-cell"; import type { DataTableColumnLayout } from "./use-column-layout"; import { isDataTableLoadingRow, isUtilityColumnId } from "./data-table-utils"; import type { DataTableLabels } from "../types"; +import type { + DataTableTanStackColumn as Column, + DataTableTanStackHeader as Header, + DataTableTanStackRow as Row, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; export type DataTableTablePanelProps = { ariaDescribedBy: string | undefined; diff --git a/src/core/data-table/data-table-toolbar-operations.tsx b/src/core/data-table/data-table-toolbar-operations.tsx index c5d38a5..5cd8e3b 100644 --- a/src/core/data-table/data-table-toolbar-operations.tsx +++ b/src/core/data-table/data-table-toolbar-operations.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import type { Table } from "@tanstack/react-table"; import { IconSearch } from "../icons"; import type { DataTableColumnFixed, @@ -8,6 +7,7 @@ import type { DataTableSavedView, } from "../types"; import type { DataTableUiKit } from "../ui-kit"; +import type { DataTableTanStackTable as Table } from "./tanstack-v9"; type ToolbarUi = Pick< DataTableUiKit, diff --git a/src/core/data-table/data-table-toolbar-section.tsx b/src/core/data-table/data-table-toolbar-section.tsx index e4de588..37e409a 100644 --- a/src/core/data-table/data-table-toolbar-section.tsx +++ b/src/core/data-table/data-table-toolbar-section.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import type { Table as TanStackTable } from "@tanstack/react-table"; import type { DataTableLabels, DataTableProps, DataTableSavedView, } from "../types"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; type DataTableToolbarSectionProps = { allRows: Array; diff --git a/src/core/data-table/data-table-utils.ts b/src/core/data-table/data-table-utils.ts index c62ccaf..332ba6a 100644 --- a/src/core/data-table/data-table-utils.ts +++ b/src/core/data-table/data-table-utils.ts @@ -1,14 +1,10 @@ import type { - Column, - ColumnDef, - ColumnPinningState, ExpandedState, - Row, - Table as TanStackTable, } from "@tanstack/react-table"; import type { DataTableColumnDef, DataTableColumnFilterOption, + DataTableColumnPinningState, DataTableCsvExportOptions, DataTableCsvExportScope, DataTableDensity, @@ -16,6 +12,12 @@ import type { } from "../types"; import type { DataTableUiClassNames } from "../ui-kit"; import { cn } from "../../lib/utils"; +import type { + DataTableTanStackColumn as Column, + DataTableTanStackColumnDef as ColumnDef, + DataTableTanStackRow as Row, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; const DATA_TABLE_LOADING_ROW = Symbol("data-table-loading-row"); @@ -504,12 +506,12 @@ export function getDataTableExportRows( return table.getRowModel().rows; case "selected": return table - .getPrePaginationRowModel() + .getPrePaginatedRowModel() .rows.filter((row) => row.getIsSelected()); case "all": return table.getCoreRowModel().rows; default: - return table.getPrePaginationRowModel().rows; + return table.getPrePaginatedRowModel().rows; } } @@ -530,7 +532,7 @@ function escapeCsvCell(value: unknown, escapeFormulaValues: boolean) { export function getInitialColumnPinning( columns: Array>, -): ColumnPinningState { +): DataTableColumnPinningState { const left: Array = []; const right: Array = []; @@ -615,8 +617,11 @@ export function getAccessorKey( export function getFixedSide(column: Column) { const pinnedSide = column.getIsPinned(); - if (pinnedSide) { - return pinnedSide; + if (pinnedSide === "start") { + return "left" as const; + } + if (pinnedSide === "end") { + return "right" as const; } if (column.id === "__select__") { diff --git a/src/core/data-table/data-table-virtual-card-panel.tsx b/src/core/data-table/data-table-virtual-card-panel.tsx index b3b2cc2..5ddb07f 100644 --- a/src/core/data-table/data-table-virtual-card-panel.tsx +++ b/src/core/data-table/data-table-virtual-card-panel.tsx @@ -1,10 +1,10 @@ import * as React from "react"; -import type { Row } from "@tanstack/react-table"; import { useVirtualizer } from "@tanstack/react-virtual"; import { cn } from "../../lib/utils"; import { DATA_TABLE_CONTAINER_BREAKPOINT_WIDTHS } from "../types"; import type { DataTableCardPanelProps } from "./data-table-card-panel-types"; import { useDataTableScrollViewport } from "./use-data-table-scroll-viewport"; +import type { DataTableTanStackRow as Row } from "./tanstack-v9"; export function DataTableVirtualCardPanel({ cardClassName, diff --git a/src/core/data-table/tanstack-v9.ts b/src/core/data-table/tanstack-v9.ts new file mode 100644 index 0000000..b4393f0 --- /dev/null +++ b/src/core/data-table/tanstack-v9.ts @@ -0,0 +1,144 @@ +import { + aggregationFns as builtInAggregationFns, + columnFacetingFeature, + columnFilteringFeature, + columnGroupingFeature, + columnOrderingFeature, + columnPinningFeature, + columnResizingFeature, + columnSizingFeature, + columnVisibilityFeature, + createExpandedRowModel, + createFacetedMinMaxValues, + createFacetedRowModel, + createFacetedUniqueValues, + createFilteredRowModel, + createGroupedRowModel, + createPaginatedRowModel, + createSortedRowModel, + filterFns as builtInFilterFns, + globalFilteringFeature, + rowAggregationFeature, + rowExpandingFeature, + rowPaginationFeature, + rowPinningFeature, + rowSelectionFeature, + rowSortingFeature, + sortFns as builtInSortFns, + tableFeatures, +} from "@tanstack/react-table"; +import type { + AggregationFnDef, + Cell, + CellContext, + Column, + ColumnDef, + FilterFn, + FilterFnOption, + Header, + HeaderContext, + Row, + RowData, + Table, +} from "@tanstack/react-table"; + +/** + * The v9 feature surface used by every data-table adapter. + * + * Keeping this registry in one module makes the new feature generic an + * implementation detail instead of leaking it through every public type. + * Function registries remain broad during the migration so existing named + * column definitions keep working. They can be narrowed once the v9 surface + * is fully audited. + */ +type DataTableAggregationRegistry = Record; +type BuiltInFilterFn = + (typeof builtInFilterFns)[keyof typeof builtInFilterFns]; + +export function createDataTableFeatures( + customAggregationFns: DataTableAggregationRegistry = {}, +) { + return tableFeatures({ + columnFacetingFeature, + columnFilteringFeature, + globalFilteringFeature, + rowAggregationFeature, + columnGroupingFeature, + columnOrderingFeature, + columnPinningFeature, + columnSizingFeature, + columnResizingFeature, + columnVisibilityFeature, + rowExpandingFeature, + rowPaginationFeature, + rowPinningFeature, + rowSelectionFeature, + rowSortingFeature, + expandedRowModel: createExpandedRowModel(), + facetedMinMaxValues: createFacetedMinMaxValues(), + facetedRowModel: createFacetedRowModel(), + facetedUniqueValues: createFacetedUniqueValues(), + filteredRowModel: createFilteredRowModel(), + groupedRowModel: createGroupedRowModel(), + paginatedRowModel: createPaginatedRowModel(), + sortedRowModel: createSortedRowModel(), + aggregationFns: { + ...(builtInAggregationFns as DataTableAggregationRegistry), + ...customAggregationFns, + }, + filterFns: builtInFilterFns as Record, + sortFns: builtInSortFns, + }); +} + +export const dataTableFeatures = createDataTableFeatures(); + +export type DataTableFeatures = typeof dataTableFeatures; +export type DataTableRowData = Extract; +export type DataTableTanStackTable = Table< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackRow = Row< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackColumn = Column< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackCell = Cell< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackHeader = Header< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackColumnDef = ColumnDef< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackCellContext = CellContext< + DataTableFeatures, + DataTableRowData, + TValue +>; +export type DataTableTanStackHeaderContext = + HeaderContext, TValue>; +export type DataTableTanStackFilterFn = FilterFn< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackFilterFnOption = FilterFnOption< + DataTableFeatures, + DataTableRowData +>; +export type DataTableTanStackAggregationFn = AggregationFnDef< + DataTableFeatures, + DataTableRowData +>; diff --git a/src/core/data-table/use-column-layout.ts b/src/core/data-table/use-column-layout.ts index 4a4c723..e918ed4 100644 --- a/src/core/data-table/use-column-layout.ts +++ b/src/core/data-table/use-column-layout.ts @@ -1,5 +1,5 @@ import * as React from "react"; -import type { Column, ColumnSizingState } from "@tanstack/react-table"; +import type { ColumnSizingState } from "@tanstack/react-table"; import type { DataTableColumnDef } from "../types"; import type { DataTableUiClassNames } from "../ui-kit"; import { @@ -12,6 +12,7 @@ import { hasExplicitDataTableColumnSize, isUtilityColumnId, } from "./data-table-utils"; +import type { DataTableTanStackColumn as Column } from "./tanstack-v9"; type ColumnLayoutMode = "fill" | "fit"; diff --git a/src/core/data-table/use-data-table-columns.tsx b/src/core/data-table/use-data-table-columns.tsx index cb5acec..5ef3d25 100644 --- a/src/core/data-table/use-data-table-columns.tsx +++ b/src/core/data-table/use-data-table-columns.tsx @@ -1,10 +1,8 @@ import * as React from "react"; import type { - ColumnDef, ExpandedState, OnChangeFn, RowPinningPosition, - Table as TanStackTable, } from "@tanstack/react-table"; import { IconChevronDown } from "../icons"; import type { @@ -23,6 +21,10 @@ import { toggleDataTableExpandedState, } from "./data-table-utils"; import { DATA_TABLE_DEFAULT_LABELS } from "./data-table-labels"; +import type { + DataTableTanStackColumnDef as ColumnDef, + DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; type DataTableRowActionsComponentProps = { editableRows?: DataTableEditableRowsConfig; diff --git a/src/core/data-table/use-data-table-instance.ts b/src/core/data-table/use-data-table-instance.ts index b96d147..3b51e89 100644 --- a/src/core/data-table/use-data-table-instance.ts +++ b/src/core/data-table/use-data-table-instance.ts @@ -1,34 +1,23 @@ import * as React from "react"; -import { - getCoreRowModel, - getExpandedRowModel, - getFacetedMinMaxValues, - getFacetedRowModel, - getFacetedUniqueValues, - getFilteredRowModel, - getGroupedRowModel, - getPaginationRowModel, - getSortedRowModel, - useReactTable, -} from "@tanstack/react-table"; +import { useTable } from "@tanstack/react-table"; import type { - ColumnDef, ColumnFiltersState, ColumnOrderState, - ColumnPinningState, + ColumnPinningState as TanStackColumnPinningState, ColumnSizingState, + ColumnVisibilityState as VisibilityState, ExpandedState, GroupingState, - FilterFnOption, OnChangeFn, PaginationState, RowPinningState, - Row, + RowSelectionState, SortingState, - Table as TanStackTable, - VisibilityState, } from "@tanstack/react-table"; -import type { DataTableProps } from "../types"; +import type { + DataTableColumnPinningState, + DataTableProps, +} from "../types"; import { canReorderDataTableColumn, getColumnId, @@ -41,6 +30,39 @@ import type { DataTableColumnGroupPaths } from "./data-table-utils"; import { useDataTableInfiniteScroll } from "./use-data-table-infinite-scroll"; import { useDataTablePaginationClamp } from "./use-data-table-pagination-clamp"; import { useDataTableSearchIndex } from "./use-data-table-search-index"; +import { + createDataTableFeatures, + type DataTableFeatures, + type DataTableTanStackColumn as Column, + type DataTableRowData, + type DataTableTanStackColumnDef as ColumnDef, + type DataTableTanStackFilterFnOption as FilterFnOption, + type DataTableTanStackRow as Row, + type DataTableTanStackTable as TanStackTable, +} from "./tanstack-v9"; + +export type DataTableRowsToRender = Array<{ + row: Row; + rowIndex: number; +}>; + +type DataTableInstanceResult = { + effectivePageCount: number; + footerTotalRowCount: number | undefined; + handleFooterPageIndexChange: (nextPageIndex: number) => void; + handleFooterPageSizeChange: (nextPageSize: number) => void; + isPageCountKnown: boolean; + renderedRows: Array>; + topPinnedRows: Array>; + bottomPinnedRows: Array>; + reorderColumn: (sourceColumnId: string, targetColumnId: string) => void; + rowsToRender: DataTableRowsToRender; + sentinelRef: React.RefObject; + table: TanStackTable; + virtualPaddingBottom: number; + virtualPaddingTop: number; + visibleLeafColumns: Array>; +}; export function useDataTableInstance({ autoResetPageIndex, @@ -114,7 +136,7 @@ export function useDataTableInstance({ dir: NonNullable["dir"]>; currentColumnFilters: ColumnFiltersState; currentColumnOrder: ColumnOrderState; - currentColumnPinning: ColumnPinningState; + currentColumnPinning: DataTableColumnPinningState; currentRowPinning: RowPinningState; currentColumnSizing: ColumnSizingState; currentExpanded: ExpandedState; @@ -144,7 +166,7 @@ export function useDataTableInstance({ hasNextPage?: DataTableProps["hasNextPage"]; handleColumnFiltersChange: OnChangeFn; handleColumnOrderChange: OnChangeFn; - handleColumnPinningChange: OnChangeFn; + handleColumnPinningChange: OnChangeFn; handleRowPinningChange: OnChangeFn; handleColumnVisibilityChange: OnChangeFn; handleExpandedChange: OnChangeFn; @@ -183,7 +205,7 @@ export function useDataTableInstance({ totalRowCount: DataTableProps["totalRowCount"]; virtualization: DataTableProps["virtualization"]; viewportHeight: number; -}) { +}): DataTableInstanceResult { const cachedGlobalFilterFn = useDataTableSearchIndex(); const generatedColumnIds = React.useMemo(() => { return getDataTableLeafColumns( @@ -216,7 +238,7 @@ export function useDataTableInstance({ ]; }, [currentColumnOrder, generatedColumnIds]); - const effectiveColumnPinning = React.useMemo(() => { + const effectiveColumnPinning = React.useMemo(() => { const columnIdSet = new Set(generatedColumnIds); const dataColumnIdSet = new Set( generatedColumnIds.filter( @@ -232,19 +254,45 @@ export function useDataTableInstance({ ); return { - left: [ + start: [ ...["__expand__", "__select__"].filter((columnId) => columnIdSet.has(columnId), ), ...dataLeft, ], - right: [ + end: [ ...dataRight, ...["__actions__"].filter((columnId) => columnIdSet.has(columnId)), ], }; }, [currentColumnPinning, generatedColumnIds]); + const handleTanStackColumnPinningChange = React.useCallback< + OnChangeFn + >( + (updater) => { + const nextValue = + typeof updater === "function" + ? updater(effectiveColumnPinning) + : updater; + const dataColumnIds = new Set( + generatedColumnIds.filter( + (columnId) => + !isUtilityColumnId(columnId) && columnId !== "__spacer__", + ), + ); + handleColumnPinningChange({ + left: nextValue.start.filter((columnId) => dataColumnIds.has(columnId)), + right: nextValue.end.filter((columnId) => dataColumnIds.has(columnId)), + }); + }, + [ + effectiveColumnPinning, + generatedColumnIds, + handleColumnPinningChange, + ], + ); + const effectiveRowPinning = React.useMemo(() => { const availableRowIds = new Set(); const visitRows = (rows: Array) => { @@ -275,11 +323,32 @@ export function useDataTableInstance({ tableGetRowId, ]); + const tanStackRowSelection = React.useMemo(() => { + return Object.fromEntries( + Object.entries(currentRowSelection).flatMap(([rowId, selected]) => + selected ? [[rowId, true as const]] : [], + ), + ); + }, [currentRowSelection]); + + const handleTanStackRowSelectionChange = React.useCallback< + OnChangeFn + >( + (updater) => { + const nextValue = + typeof updater === "function" + ? updater(tanStackRowSelection) + : updater; + setCurrentRowSelection({ ...nextValue }); + }, + [setCurrentRowSelection, tanStackRowSelection], + ); + const tableState = React.useMemo( () => ({ sorting: currentSorting, pagination: currentPagination, - rowSelection: currentRowSelection, + rowSelection: tanStackRowSelection, columnVisibility: effectiveColumnVisibility, columnFilters: currentColumnFilters, globalFilter: globalFilterValue, @@ -296,13 +365,13 @@ export function useDataTableInstance({ currentExpanded, currentGrouping, currentPagination, - currentRowSelection, currentSorting, effectiveColumnVisibility, effectiveColumnOrder, effectiveColumnPinning, effectiveRowPinning, globalFilterValue, + tanStackRowSelection, ], ); @@ -348,51 +417,15 @@ export function useDataTableInstance({ [setLocalColumnSizing], ); - const facetingNeeds = React.useMemo( - () => { - let uniqueValues = false; - let minMaxValues = false; - for (const { column } of getDataTableLeafColumns( - tableColumns as DataTableProps["columns"], - )) { - uniqueValues ||= column.meta?.filter?.type === "faceted"; - minMaxValues ||= column.meta?.filter?.type === "numberRange"; - } - return { minMaxValues, uniqueValues }; - }, - [tableColumns], + const features = React.useMemo( + () => createDataTableFeatures(aggregationFns), + [aggregationFns], ); - // eslint-disable-next-line react-hooks/incompatible-library -- TanStack Table owns its instance functions. - const table = useReactTable({ - data: tableData, + const table = useTable>({ + features, + data: tableData as Array>, columns: tableColumns, - getCoreRowModel: getCoreRowModel(), - getFilteredRowModel: manualFiltering ? undefined : getFilteredRowModel(), - getFacetedRowModel: - (facetingNeeds.uniqueValues || facetingNeeds.minMaxValues) && - !manualFiltering - ? getFacetedRowModel() - : undefined, - getFacetedUniqueValues: - facetingNeeds.uniqueValues && !manualFiltering - ? getFacetedUniqueValues() - : undefined, - getFacetedMinMaxValues: - facetingNeeds.minMaxValues && !manualFiltering - ? getFacetedMinMaxValues() - : undefined, - getGroupedRowModel: - currentGrouping.length && !manualGrouping ? getGroupedRowModel() : undefined, - getSortedRowModel: manualSorting ? undefined : getSortedRowModel(), - getExpandedRowModel: - (getSubRows || currentGrouping.length) && !manualExpanding - ? getExpandedRowModel() - : undefined, - getPaginationRowModel: - manualPagination || infiniteScroll?.enabled - ? undefined - : getPaginationRowModel(), enableRowSelection: getRowCanSelect ? (row) => enableRowSelection && getRowCanSelect(row.original) : enableRowSelection, @@ -413,13 +446,19 @@ export function useDataTableInstance({ columnResizeMode, columnResizeDirection: dir, getRowId: tableGetRowId, - getSubRows, + getSubRows: getSubRows + ? (row, index) => + getSubRows(row, index) as + | Array> + | undefined + : undefined, getRowCanExpand: getSubRows ? (row) => getRowCanExpand?.(row.original) ?? row.subRows.length > 0 : undefined, globalFilterFn: globalFilterFn ?? cachedGlobalFilterFn, getColumnCanGlobalFilter: (column) => - column.columnDef.enableGlobalFilter !== false && + (column.columnDef as ColumnDef).enableGlobalFilter !== + false && typeof column.accessorFn === "function", manualSorting, manualGrouping, @@ -434,19 +473,25 @@ export function useDataTableInstance({ state: tableState, onSortingChange: setCurrentSorting, onPaginationChange: handlePaginationChange, - onRowSelectionChange: setCurrentRowSelection, + onRowSelectionChange: handleTanStackRowSelectionChange, onColumnVisibilityChange: handleColumnVisibilityChange, onColumnFiltersChange: handleColumnFiltersChange, onExpandedChange: handleExpandedChange, onGroupingChange: handleGroupingChange, onColumnOrderChange: handleColumnOrderChange, - onColumnPinningChange: handleColumnPinningChange, + onColumnPinningChange: handleTanStackColumnPinningChange, onRowPinningChange: handleRowPinningChange, onColumnSizingChange: handleColumnSizingChange, - aggregationFns, groupedColumnMode, }); - tableRef.current = table; + React.useLayoutEffect(() => { + tableRef.current = table; + return () => { + if (tableRef.current === table) { + tableRef.current = null; + } + }; + }, [table, tableRef]); const visibleLeafColumns = table.getVisibleLeafColumns(); const reorderColumn = React.useCallback( @@ -630,8 +675,3 @@ export function useDataTableInstance({ visibleLeafColumns, }; } - -export type DataTableRowsToRender = Array<{ - row: Row; - rowIndex: number; -}>; diff --git a/src/core/data-table/use-data-table-search-index.ts b/src/core/data-table/use-data-table-search-index.ts index 4827e64..446d67f 100644 --- a/src/core/data-table/use-data-table-search-index.ts +++ b/src/core/data-table/use-data-table-search-index.ts @@ -1,6 +1,9 @@ import * as React from "react"; -import type { FilterFn, Row } from "@tanstack/react-table"; import { normalizeDataTableSearchText } from "./data-table-utils"; +import type { + DataTableTanStackFilterFn as FilterFn, + DataTableTanStackRow as Row, +} from "./tanstack-v9"; /** * Caches each searchable cell against the application-owned row object and diff --git a/src/core/data-table/use-data-table-state.ts b/src/core/data-table/use-data-table-state.ts index 2838cf2..c66b020 100644 --- a/src/core/data-table/use-data-table-state.ts +++ b/src/core/data-table/use-data-table-state.ts @@ -2,16 +2,16 @@ import * as React from "react"; import type { ColumnFiltersState, ColumnOrderState, - ColumnPinningState, ColumnSizingState, + ColumnVisibilityState as VisibilityState, ExpandedState, GroupingState, PaginationState, RowPinningState, SortingState, - VisibilityState, } from "@tanstack/react-table"; import type { + DataTableColumnPinningState as ColumnPinningState, DataTableDensity, DataTableLabels, DataTableProps, diff --git a/src/core/data-table/use-data-table-toolbar-features.ts b/src/core/data-table/use-data-table-toolbar-features.ts index a77dc8b..0d974f3 100644 --- a/src/core/data-table/use-data-table-toolbar-features.ts +++ b/src/core/data-table/use-data-table-toolbar-features.ts @@ -2,16 +2,16 @@ import * as React from "react"; import { IconDownload } from "../icons"; import type { ColumnFiltersState, - ColumnPinningState, + ColumnVisibilityState as VisibilityState, OnChangeFn, - Table as TanStackTable, - VisibilityState, } from "@tanstack/react-table"; import type { DataTableColumnFixed, + DataTableColumnPinningState as ColumnPinningState, DataTableLabels, DataTableProps, } from "../types"; +import type { DataTableTanStackTable as TanStackTable } from "./tanstack-v9"; import { exportDataTableCsv, getAccessorKey, diff --git a/src/core/data-table/use-data-table-url-state.ts b/src/core/data-table/use-data-table-url-state.ts index a6cabcb..f257229 100644 --- a/src/core/data-table/use-data-table-url-state.ts +++ b/src/core/data-table/use-data-table-url-state.ts @@ -10,14 +10,13 @@ import { import type { ColumnFiltersState, ColumnOrderState, - ColumnPinningState, + ColumnVisibilityState as VisibilityState, GroupingState, - RowSelectionState, SortingState, Updater, - VisibilityState, } from "@tanstack/react-table"; import type { + DataTableColumnPinningState as ColumnPinningState, DataTableDensity, DataTableState, DataTableViewMode, @@ -32,6 +31,8 @@ export type DataTableUrlStateSlice = | "grouping" | "rowSelection"; +type DataTableUrlRowSelectionState = Record; + export type DataTableUrlEnhancedState = { columnFilters: ColumnFiltersState; columnVisibility: VisibilityState; @@ -39,7 +40,7 @@ export type DataTableUrlEnhancedState = { columnOrder: ColumnOrderState; columnPinning: ColumnPinningState; grouping: GroupingState; - rowSelection: RowSelectionState; + rowSelection: DataTableUrlRowSelectionState; }; export type DataTableUrlStateMigrationPayload = { @@ -67,7 +68,7 @@ const EMPTY_VISIBILITY: VisibilityState = {}; const EMPTY_ORDER: ColumnOrderState = []; const EMPTY_PINNING: ColumnPinningState = {}; const EMPTY_GROUPING: GroupingState = []; -const EMPTY_SELECTION: RowSelectionState = {}; +const EMPTY_SELECTION: DataTableUrlRowSelectionState = {}; export function useDataTableUrlState({ keyPrefix, @@ -108,7 +109,7 @@ export function useDataTableUrlState({ columnOrder: parseAsJson(validateStringArray), pinning: parseAsJson(validateColumnPinning), grouping: parseAsJson(validateStringArray), - selection: parseAsJson(validateBooleanRecord), + selection: parseAsJson(validateBooleanRecord), }, { clearOnDefault: true, @@ -380,7 +381,7 @@ export function useDataTableUrlState({ ); const setRowSelection = React.useCallback( - (updater: Updater) => { + (updater: Updater) => { if (!enabledSet.has("rowSelection")) return; const next = resolveUpdater(updater, rowSelection); void setState({ diff --git a/src/core/data-table/use-row-editing.tsx b/src/core/data-table/use-row-editing.tsx index be34b68..ee2276c 100644 --- a/src/core/data-table/use-row-editing.tsx +++ b/src/core/data-table/use-row-editing.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import type { CellContext } from "@tanstack/react-table"; import type { DataTableColumnDef, DataTableColumnType, @@ -7,6 +6,7 @@ import type { } from "../types"; import type { DataTableUiKit } from "../ui-kit"; import { getDataTableLeafColumns } from "./data-table-utils"; +import type { DataTableTanStackCellContext as CellContext } from "./tanstack-v9"; export function useRowEditing({ columns, diff --git a/src/core/types.ts b/src/core/types.ts index 8a03279..d97e384 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -1,24 +1,25 @@ import type * as React from "react"; import type { - AggregationFn, - CellContext, ColumnFiltersState, - ColumnDef, ColumnOrderState, - ColumnPinningState, ColumnSizingState, + ColumnVisibilityState as VisibilityState, ExpandedState, - FilterFnOption, GroupingState, - HeaderContext, PaginationState, - Row, RowPinningState, SortingState, - Table as TanStackTable, Updater, - VisibilityState, } from "@tanstack/react-table"; +import type { + DataTableTanStackAggregationFn, + DataTableTanStackCellContext as CellContext, + DataTableTanStackColumnDef as ColumnDef, + DataTableTanStackFilterFnOption as FilterFnOption, + DataTableTanStackHeaderContext as HeaderContext, + DataTableTanStackRow as Row, + DataTableTanStackTable as TanStackTable, +} from "./data-table/tanstack-v9"; export type DataTableViewMode = "table" | "card"; @@ -65,6 +66,14 @@ export type DataTableGridCommands = { export type DataTableAlign = "start" | "center" | "end"; export type DataTableColumnType = "text" | "numeric" | "date"; export type DataTableColumnFixed = "left" | "right"; +/** Physical pinning state retained at the public API and persistence boundary. */ +export type DataTableColumnPinningState = { + left?: Array; + right?: Array; +}; +/** A TanStack Table v9 context-based aggregation definition. */ +export type DataTableAggregationFn = + DataTableTanStackAggregationFn; export type DataTableContainerBreakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; export type DataTableDensity = "compact" | "comfortable" | "spacious"; export type DataTableCardSizing = "fixed" | "content" | "fluid"; @@ -539,7 +548,7 @@ export type DataTableColumnPrefs = { visibility?: VisibilityState; sizing?: Record; order?: ColumnOrderState; - pinning?: ColumnPinningState; + pinning?: DataTableColumnPinningState; rowPinning?: RowPinningState; density?: DataTableDensity; }; @@ -590,7 +599,7 @@ export type DataTableState = { columnFilters: ColumnFiltersState; expanded: ExpandedState; columnOrder: ColumnOrderState; - columnPinning: ColumnPinningState; + columnPinning: DataTableColumnPinningState; rowPinning: RowPinningState; columnSizing: ColumnSizingState; /** Present in snapshots produced by 4.4+; optional for 4.x object-literal compatibility. */ @@ -831,7 +840,7 @@ export type DataTableProps = { /** Controls whether grouped columns are reordered, removed, or left in place. */ groupedColumnMode?: false | "reorder" | "remove"; /** Named aggregation functions available to column `aggregationFn` definitions. */ - aggregationFns?: Record>; + aggregationFns?: Record>; pageIndex?: number; pageSize?: number; /** Sizes an opt-in page from the measurable table scroll viewport. */ @@ -875,8 +884,8 @@ export type DataTableProps = { enableColumnReordering?: boolean; /** Default height for shared column-group header cells. */ columnGroupHeaderHeight?: React.CSSProperties["height"]; - columnPinning?: ColumnPinningState; - onColumnPinningChange?: (columnPinning: ColumnPinningState) => void; + columnPinning?: DataTableColumnPinningState; + onColumnPinningChange?: (columnPinning: DataTableColumnPinningState) => void; enableColumnPinning?: boolean; rowPinning?: RowPinningState; onRowPinningChange?: (rowPinning: RowPinningState) => void; From 375b69fc9820675f2575f99245148e4657a3d9bd Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Wed, 12 Aug 2026 23:55:46 +0000 Subject: [PATCH 3/4] ci: retain Playwright failure artifacts --- .github/workflows/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c799ca3..fb58eae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,3 +64,11 @@ jobs: - name: Browser accessibility and layout tests run: pnpm test:browser + + - name: Upload Playwright failure artifacts + if: failure() + uses: actions/upload-artifact@v7 + with: + name: playwright-failure-${{ github.run_attempt }} + path: test-results + retention-days: 7 From a1caf7cddcf97643e4f310acfb9abecf34e3b68d Mon Sep 17 00:00:00 2001 From: Toby Martin Date: Thu, 13 Aug 2026 00:03:21 +0000 Subject: [PATCH 4/4] test: refresh Playwright 1.62 baselines --- CHANGELOG.md | 2 +- .../heroui-dark-table-chromium-linux.png | Bin 95140 -> 93828 bytes .../heroui-light-table-chromium-linux.png | Bin 99226 -> 97251 bytes .../shadcn-dark-table-chromium-linux.png | Bin 95276 -> 94246 bytes .../shadcn-light-table-chromium-linux.png | Bin 94142 -> 92822 bytes .../thegridcn-dark-table-chromium-linux.png | Bin 139966 -> 137694 bytes .../thegridcn-light-table-chromium-linux.png | Bin 148209 -> 146161 bytes 7 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9920a1e..d242d1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 5.0.0 - 2026-08-12 +## 5.0.0 - 2026-08-13 Version 5 upgrades the package's TanStack-facing API to TanStack React Table v9. Existing `DataTable` props, entrypoints, persisted state, saved views, and diff --git a/browser-tests/data-table.spec.ts-snapshots/heroui-dark-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/heroui-dark-table-chromium-linux.png index 00385b9b3244d106cc8cd8e7ebec04e8d7eca607..7ee8b0c01579c82ea677179965865bc2b89dee19 100644 GIT binary patch literal 93828 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

>so!z-6zm?X_4q6EgRZbFp=X>8d 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 diff --git a/browser-tests/data-table.spec.ts-snapshots/heroui-light-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/heroui-light-table-chromium-linux.png index 20d2ef44316a74295c75c6ce91e1aa690f2cd185..916e72bc45fd89b1585fefcc2d574abff7ab128b 100644 GIT binary patch literal 97251 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�jW`McjHGCtaC4i$linntzKyh}VyQ}x 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

lJmITB4+iFQlkK|S8`x|4jKkEF`=;pV6ToT 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 NUnpxSl`5Ep{6DlNhu{DJ literal 99226 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
    mtlBUS#Olg2MTB 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

    BJkZUm&7(|Ok}YgvRYY8)@@^}4zO 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 z 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 diff --git a/browser-tests/data-table.spec.ts-snapshots/shadcn-dark-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/shadcn-dark-table-chromium-linux.png index c3789da4b8324ef9ed632b86442b50e3af3b38b6..8337ec77b366a46e2a0f8a59e45d1c09815b7b08 100644 GIT binary patch literal 94246 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 z zdHxxpbkN=Za&)}KVAnhuj=q1tOKb;dj!F7n6uhW_{ay(jwJ!MfFkx2=etkUN z-QAsZhdH-esQ!rI^!M*y@hJSSR$nJEzA2v`M$kjBcE3e5VbSJ0q-N9p8SZvZ+48)2 z_!LPiUqYANJWq?0{O$rJMZeD_$m8g>8-+$o6sUI`9s;AeNmjhJXA{p%J3J0sn(nfX zjn-)C6q*^5M1DUwJa>gBBWii6mtRsiw@mQgo?U`BYV78@UkCnzBie!Aj!@2c2%ml& zq*2(wLG+@zR+GvRGK&PWnmTM~2h!F2wwW0j8NYptSiyzovIQ%8?T=?(oG&$4vg3{s zz1UVzkhnc zHGoTM-Q*t*Ab#H$NO6>mjoMhvEWfFGmNqN<_{hnD`FJ@gcv#zAyk)>1Tb!v6T{VYj z)@ml=14cKxX$cS9-PJp7D=EGAal?^fPQPTf0EV5I8s-9{yWEvLBgO-{B9vXg)I)yh3# zazI>^9r^N4SZ{rAxp)|qSKtgihb}c(LgLUO5pg$5((dGQmmQQGJmV%Q48cRp0vlLU zO|8*pwe_9tJil-G4Ry=UViCP)D_kzl4ac};-{f^Rl#EflAfD%$)4IT=^fM9o7PNSN zwhZ`{CHM0*>guG>ajWQop7O-NR`jVed-|a8R&SKL&^7k+7hSklD-+5E(mm+H*WcfE zIEP6)oWb#*!&zTIy}%gV}5 zZe}JWee(V>lFS(58eA`wr><`96iaGwE~}Q{rfTRBN7pId$;vjL{7pHoR*FqU$nd*j zhM*UIrruZJ+oEm9o%gkST(;IBCLVUqP-tK<5_-^(veJ%$03lyMWr}asc58?2R~ue%1Y6-*={|p#u@q=U6D8ui~KvVC@Xw zgr}In3bruu=Bp`+lC#|Xo>kFINK7a-3P6(jLMI=>`Zc2(J_D*ug`4KuBfEzLD`jZZ8y?%fH6i*oaDGtp6aFDFzTM% z>JhD~iBvzKwVjqhWxmPwBOsjZBs0MsqzpB)7#nNVL@xMQ0J-Y<)V9p$MU!-BqWCho z=NW2BM=wu8QZeC%G2&x~e>NlpK0;=@y)5fib0&7qz#n zWNf#NTyofFZwYT3k8xyz+@-jT{AOBkp^P-9fERMcl#K?JxBJl%NVz5Pn_3d5sc

    )APaP5w`nn07Lq3B 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ð3mwDlU9sVgLewI}qCt)o;@=2~v3S6@FXCS=;M*;M`a zZXRzd57}SsykeU44>?_iY@kG?!J`YO5SsEbnPQ0uWktpGbjQf=fsmT@lA|K#yCpVg zB?FWdR&x>gT}-6ngYwrUu%gx~WpGCw*Y{+Dk7V~b;IZw>mdfWuM{cW%uROFATJ&GU z|Eu*$OrE>CO1H2+i75`Ks#PZw{p$pzg^uDEM+*wAtee{ax?xT4{!97ZrVsPf4|As~CXB8J0KQrXHU*6atAT(}3EU2umX6SonKO~BSmYY$^ zzQ$XLyZKk`h)eSc8you!Q&drB#XrskIoxX~u9i6Rrgs#QW>K;`;04j%>z^QjC1X(5 zI<182&GogzD$N;`pihgJc&p7y{26IB)!$X7;lHYs5zl3oe_NN%!1l3H{9~Z>zvfr^ zzg3?94{ob{Tl>vAIyxRa1cOcv4n#?!K-Y5;^Z^m*H<`3hSU*HlR7TZ>?D4l6zK~?% zmVHDd4xYgkXufbg)rUD$pvg;ssUgv002WyPUN?c36l*&dy8 zxwjbl(%?$pW$t>dZ-Ok6F^n)QG3%mCkgrtVSElv#b>GJ$$_(%*#+&T=8C!m!(Rlc^ z*(|9<>meF!xBw*+?aHhaz32CHjg1G3f{jQw3?Nf?K34urM`)>+S%XNdlAGP{P@9S3X>6p6gC+q#Kh5y z!T6t-2K{|$rDgMXH*I7IV-XNdHYihl}$7A>)Z>P~c0;cJ1dwB6W7l_H zmDS|s<3j3gYX9?jYi{%c+q z(M;b8fp8Q_fI4;_W-jo-F071FJWf%6B0VS&VQ5Plnw#~T?SNiTR9M*XWG*`gM{{$tA3%6HwPK?@x; z2aoqZ>}CG;eo&uor6wuFJPr^iM3LgBlDVyA>b1a&xopLJ{?XXCE}-gSB9@Yah)o_l zMju|ROu94nt~t8qlEZYo?Zd^#bI)`vONyTocz`dMw4`Lf=_>EtI!j{-B=v0h!0AMq zfKs8-zByH6GA9w44%!!LxVxx`DXLlIl94o$>6Fw#(SwE9C^QaTLLZ+5kiH66wL6rL zt*?>_PHse&M^57XfP}B4rAD>@!(tIv|mordX?&^TVXa<@hZnG3%Sf#3 zEOrC>wZKZkqVShD#C4*jBF>%TP%Up_t*WADtf@zt`aqc%9Kd{`xK&WsrD!QKCa#{& zaB*RBe;+n%f|2AfawajnBdZalHlxwj)Hd_y?EU;}1ZCbQ@|-dy;>gL=@%w53ht45o zREqS#&V$@YUA@ifU)~en?7Lq8nz`@Ox6QuXr76h>p`xvvP$^Mx{SsMLK3jQZa7&D2 zq!vAD^_tV+bv}K?<5_LzmVH+)9oKo!?7XaO$zKjjKsQd9z3xXm$(%AuT2VQF0&S4g zeiX4UugkUz`X^08JDU&MSErNdlx`)XhN!=`jtWBv2SOtt3cjA2VSD`P8Tkj4XQDxm z^HZ((B)9)|ch@Vpe$;#Wpk-${LD?EnF`&|Y^V#T#6zm=hdeF6lSfL-0)*H-0{HN&> zlfrWHeW4xHyR$=Kyz;!F^EG_sTQ0(!iErmO62y4F9$$xd8!=j#Pcs^u*`*d zWKv}!ibrj@8eAz-D9-tOlD|7nR3$28cuC;wF#d{AT*_jIXR*H!4G19dkxkc{UewjI zIZYL^3%Z&!dAnUZz*9|Oh*ROoF@735u>Q+ydj_jDOB=FbY)C28hm?lC=I+cH%xXH6 zz0guU(U)jiVT2%`MHTPtPTQZ5s5UaS&~A?4#i6VB2AzBi&G~&+&r<-fTO;K*y`}t; z*K%VCn@LB*<7psmD^h`Tk=Ft*=dOd?(oN4LVQzX~gOGRWy0OmU==d1azlmmFgylFTYvKHcO%2090Q@ ztr~{WX$i#zrMGheW{WTA&Q!}2q!JKx zkzSwZu+}Un<(y63JF{1oKX5w|sc)#~={#tc5`Epf>b29rWi3lAEclAgxwhO=*Q#BK zAOXTGD|?eJ$p}4=xkcjRC|DP|*}NrV;@oI34l}d=>2dIc5OYub>0X3}CT^dP;j`_X zqH#m2t^O@EiUNr?e9Jvd0rqEmE~H>Img0;rsR&RW7Sd@B{xs;-k3IJiAMklXN-|eS z{Z|{As%v#$ibiLycMCE*8mSOA%}G(T0S?*SIAb>t@C^VK3E;=#w$%r9kG|0Xn0i6y z0(AoNHB+hT;IZ#2i!0hGg$t1;mY-KahMHn79tIvRYQ+kP$=M7+M#T}m0+6ptt@5&-yH-bFqb@RPY_tj$ z-}Pe$O)*SAAMeCdFfVRF()B4ugn}~QHWHs)JQulVnXc0VF>K*&=N1hp$0el36s!g= zPuF)1UXV^2UixkXjaCm?Kgm^2MZmpBjF6!x?PXp~zo@0lIJ6ui{SW2$0GVdbin}{g zX4=1dYj{!Df0}C%6TZ}lvC}e|jFpp-@cOwbBBO~$LFwPP(sJ++2-6w3-;B{xr|Gh4 zD=KO`q4z`cM1JO*+Z_;SlS#!dqo6>VvxcFZ*qtacXrq$z^mFlSRmh>bIQnRX zi9C4SnD)j;G0??T#;jAGZosEwBZZ|w>OVy2WX|WjE>WRThihnu>|4hS8VuxPEsKez z__hKrW_p5=em-I*Eo5?KcTrLirjN*UrxFu!I`BNjbs#fT;w?p-rh-EgJ9NWb^IJVz zM>!=Sp-?6IU?0AmpOJYYi31a4aH^>^+8?v^=#ooDULe=&4Nm5rSWNrI5H&r*F=*(? zm^m6aT7svcX1-t_LGE=gx&h%lOJk&F;c)#qC_@&D|c~a zYncLphx+cqqFJnK`7uP}CM+H#7R9yr2Zu23DLK_fysw=Ra? zYLd{_S@?ay+NGbDM`!u+7<2y8U78HiRSw|!b(W?(3Bg|oYkP4$fWjM0ODxk5B4eJH zaZZ2hioA(yp)gb#J5ibsT?)Dbqp<~e?z5;K6H+a3p!@lu=1PKt@2}WW7J2W4zopU0 zX%c?$@QW_sV&WrrYa~U3f!U9JnJMLjE=}V6q)*xO?#Un+t zgherEJ25h?ZbBxAkxxNj=Jl3J(W7xeTt6)#QNLixsyrFzXv{N5zlAwQPMvxV)60sj z7W6QPOM-lX8hgPEU4c)IKxV2*ty!y=u~tx-{EQnU56G$+gBkD$bv5PM3LvEz`PoFv zerjt13kwBmypSk#LTb#21IK8Tq)GzUc7Fp)7FBs7@;NKUQ4&h_UH8fGrT+(hU>tarHa+cJ)3$UR?g$UeBzdaA}$+%O!0e?BY z`aU)Xx>QAQO||NBImVcl)?xoC1C|>Z!}=l?OPqEo+i_w+pplur$t{Adq*alLkI4i$ z%ez=9A)%V8WRN(Z_KVO6Ez*UBnkiGey={b%vS(e6cuS68T{16pqEh;xDrPUcnqsda zMVVp@$kI5}Y1*T+5J-NQfn*YUOIcN+wEv|aD*CUctpeS)cG_39^qN3lBdv;RrFm~c z`B(oKm@W;HfNMbtXL5CQ>V~-#s|4V@lSLYRP8pRHaYUmUlZqBHB6P1BDP!R&1R?x3 z<~_yL(X5VUS;zw{<%BI8rkfnW_uU%R>`0SaU-<;u#r zC&||AFdQ;Ae0V`k*ZHf!$1xr7Xw9NKDiI&@zj^`4T?#&`Y7>u#WMD=0cJYLYxnD03 z^rts79~LlZ4b+zop&(ROb$4CrGA;u|6=u4L=1PfZ5m2$9VzmA8yTGT>oih-z=v88c zrUfZ673X@{+-q^GDapw^fU=*OnmQ*Z2XKHqM?*(Hn9PLn>&paeuJByk*oQf7{`8+i z;pHbLza@TXqIq-sYwa@e)z+-bJTHE^GSr~qj<$(y&njDB0Z(!c5Ox-a(z9vREYCw% zfg_@PEpcC^FCZ6Wd!g`s6sb?Yr|0RVU{Lutuf+Nr_{mF5-uk3`5)tVmI#qg_qa-sT5tIJ%Ctqr3^a($70aCX$o zVPXBqH(N12wxF}8&TB><-At%z3@<>87 zoRJz;jKvL=925iVs<91xK^e9u}B ze#m>&0Y0wEC2~lY6>*+s-P=(HSEEdcwDCV9VyhE}2gbJNNOy?f%O+$a$5#rO(}P>X z{6RC^*^Wmj62}pvT%l&ShbI=D7jp8RJ#1(pxtSF}Nm6gZX?G8{eJpX%JL51X!U=8VC|v>%*- z1HTC$>U~k^v9ipj-K{}?r7x6W-c8$yI(Df-PMST}kB&O4l|=S5@1l8BPye`y>cn}Z zsDr3xYM^lM*uje$7ma4I3VA=Gy8cRnz4R3vJk;-P>|n6 z#3sFHL-a>GY!psGOWYKG#25C)?#Djbby-CO&&qUMXndhW)$NRul3#bv8`NO@{Tv58 z4@En}h;&P(P7oV6xJ62sOdEbansi@F`TnIOA3D<@Yd)1$RZFskRUrQ+8A?G_bFi7S zi;SO$hJ`+|W-MHiDo_eRf?)&+-vzu;gWoc?wlK)%;!)d8xS6Y;Tcd_|ED6w_;?9K^ z;7h$THj>)9$fWU62pCcZ%_zv1!Q#WaDlu#MZ$~Ep=}ToLoku57HZLuy!7{p^Zy@ji~AU;@BvQWMwGelvg{gWpWO(!=uFtpV$Z>U2x*hn(Gq?(gjw--r$B5VLnRK}^m zyJ9|G=IkW&h?*h-%08}}b3Xi=NYW>-bdMMqM>)z#$U~ugW^R+QbkLN^Ss`93BHVdK z$HK(6*?cq1GbR?npm~97bvv|Lzz68)^y=ZWUv-v>4djz2PvM`9lmtAN&q9Hzpj2}7 zC@im+7ypqdTw}T~)+DEblSjm)bV6!$%X65@4BVBnIHzN=+N>r+HVK`4>c*NBh+jhGHGIrPY6Ku{dqA@S@|W?0B#``9K((IbA5 zG*RMjld*j9z+wG1^V51luwgpAPZ5+0($Zp{YjwOKF6B8ktCG zRr#{TqAIR$p31w?u(MZ|Z1UM*9e#wzir2W&~-RmJddonUIp66fv zzsv!XBqb#!DXFo=3iU6H`mcb!a7gXyR7(qI+T62I8fwsqq=Ai6^3jJ%Z+=ZrPbryX zNVF@P>TtAQo*dDPh}T<$^g97hvU`YwkNyZ28H%L$C@}YjFH`p{v}}RM40biOn^Dq>XHp^2%z-JbNLGZjI^MY ze*6jnDz|d2@(gtQ24L#AaTK0CqwMF@`C+gm85F9D^qBa$XqeFSiU5{tr)THA0{OFW zF?F}-z#3wEH9l!68B=xk?Iqa?C}FdF1+q1_OGaW)O8A*R>so8!u(8P z%hu<7Jl70O6}(2Jdp_S&^neN@<9BeAZgD5pQRCM}n(t)jk>iJkLSU;bZcx~t)WDdM z=tk-hA$@N&vs7%pd+)%qXxP&8^RSP}>#M1-TfFI8|8TZNi~*8>1D>wDvMf zvjy;JV26oYts(5a@bkkXc(%QmotgOpa7PcsKJUES0NlexSIEo_4T(EE0CF=ngN}y2 zzTY?7=3W!P8yzbZB1{mV$G}OB(N0K9Cy$#bM*P7f!P56Bt&%w8wTlzF8w9cqEHI9adWyV$K3Zp~15{-)Iaz3o zsK-`pp7S^9{QWJZ8%N|3)QY`Ejt(kXc4kH9&Tvn)*PKvZR$cXp!NVm3HJ3qGqE2pR zS^T;wHI<9j)~cqmfj?F}aN3z8BteFoW*YY+CbP%eI>lNTDLEAHuh1j%!3_xT2y=xK zJOzx2U~@|0!G11U!Q-+D8Y6qg}C>`#XMY+B*)qw>E&ZTaME+qVNWJ2 z14Sfc_zHZA9P55XY?cosuLu}@a7nSyGSB;5fKukNcv;-7K}?acP0R;vX((Q=@QU*8 z1nRA#6I{byL^}1>?pw#L|UV7r-O)o;mEEx=PGP=4u2~G0N zMD>u%N=Yer^?w1meCb_4anXm1te-AR8sT^0T!Q z8t4{rCu}Rscy~MuiHq%R{2tTVBZop)Xh^elAZNI$m(op-pI z%5cVlYMPnG`g@`R-!S9h$~%sYJ!X7|doCy{%5pMP(bKD}1<^_>(#B3RGB8M8mno)j zAUU+3zPVQAlGIf7PA_Pw2dU2?Udgkq&iQ5_J@qgP9P{}sDVkQh#0{pVE2 z=9z$6Xkx0#IiHJ#yQhby~;p1dzhmEBFw4|Rzh@Gu4Fi;v_ zYljv*U}8oQ>}8RRS6B$j%X4xEd}_&rTm_}@v)Dp4674 zpR+t7ofrLLQd>+c%Sc5#B^}HVR@uTiIN2P|Qr7!efS-m!(?z9CQ8_6qp$IAl*Nn-p zs^r~Bt1T{I9EhTtBC|l_Lj8tWOwCc$5DpopRv8@gn6AesKNZ!vZBR>3A3POt;&_8=>zG0muDpoy`|$d7K)=ca8nGN_JKx+=Jj41d$6qdnhMc-RE0CUXA~oum z#gIaj>tm{B8YQ;1N;(b{uA_|G>{&+CM2#E%*6sIOnz7SmcLX(1 zY*}LQTtU%0K|^GrNe7=4QJQulrJSQGEjSujINvtuQeUvCgMCs3f@WBioH;oX4Wwb1qH#p4-E@@f1l86a6icCD>#GE z_da}jGHRQJ-zi;RIAj1k!gExPzrSxUO&G%~MK?(|f;fX^QcN4!M4~BW6E2XX&T~QF zfDuBzZz_G1Sb1%e63Qqkk?e7Z5cX*DC%=%DXUU9{vbpZ~CU@fASJ85H^u)(wU`9u| zU_xek%~-YX9e{NHK^BeGx+ma>Sw462-?6$oYuYI(iJepT_K6$Ep@j^Zn+=6HWUGfh z_ALafm@Yy-n@Slv*m#-5uiY1`NYrP4S1{9H3Y}$|Em}9 z2NqTZVBzLX-zPxOfBu&LWp&z@eQ?~I)lfH@p6>T3(h2rz^4?#-a>gv(qp#+#| z#hVJ!IoIev@#p%EAb_oqQGaTg;pR|#D>)?z$DYgn+xS@He?UrqxVX7}ZD=4>Mzi6x z>Dm)pQDOMMVz6{ifRxF_-CaJHFIz^kcB}S50d}7v?f-$TTFv}3N&r`G0;XzPON&fz zW|={fVZY&3KFWkFOA2sXNM#I6a4g%uG}8Wpt~DF}9y6GWn;YPsHn^(5e4Xl-=~@FI3kmV+cuF zVxE(BbJ|BS8zpoTz!8QT`890cL?ec=O+!zwg{$|B9Z1U48Ta zU*zlm2Na6n{z>~*KiHG$9+|NdKmKm#eO1T=la{AzSsg=S2G zZ$1$i&_}~)AQVE3e=dryNW_1?6_K5t9TXHKKy-L`Xklk}c67w->+PPXaHB&<-JF9KaW%r>94e6H*x6xripzeb4#e%{NfUaR8L(JNPc7|7b~u zaD$VegWf7-54n3nOyRJYwY0P}HaDXO&xq`7Z3+H;o4D5TTOB}1N^mNQfz$albQVg` z@r`F7N`^mE|KBfr2rit? z5LQ;^uMY@-i0?!)_nb~T2yLK;6^mK~{!u~wd9JwpM2*33lDvF)>nyzyh*|3lLjTS> zjv)l+7xMzY;PB5cWQ?8K2@S=JJ{;~x7`C z64n*_`}+ek8|~YNp}zB$9b~)T0ELSzDYnj6(Ad~mQ&ZE-Y##{v8ZAv*H~mB)@B)PS zB&_%!A;f7$=-+bfm9rs8D^AoVZrt_W1Q9oy9!dRwnR; zjFfbz`!}#T0*(S3e!pKLA|hs-Mn*?luckglxSEr#SP>Eu8sRA)GqL8JELCZ{pRUwZ zR#xWa<@wIfuvRIR{g5)>16c!nWm?)TsNjs6j!Sq9(pEO~PBFUEpBAMIfcW#UFfOAD z;zb!)0t2a`*O^p>Sb5v$4zV48Dc0c>{x5ip4z zL(w?FAH5N7M@vgfAz+Yu81C-6e}7-m3RI??K>nEfbax&X8@s;|e1fhMpDaaw+Jkb; z^Kv~e&-bt!flgVu-rV2c|ECA1?{YXpe5kRvAtNmvWGZwIsjsf5H`Qt1=3vc^bL+RV zRWkMZUbVw`IQCC0nW3TK`Vo{CoF700X?YB}{1f)^Gzt2FY!FkX_H_qo7ypM=&qp@k z5tP@>z7dDV-v{U_gg)1^m6{DL9DaB0n~q^0P6_h!^LN3*qaM=qr*CG!VYhdqNt9be zY#T^#H=)o4sv+7cZqL4dDzcsdOep^kZGRb6W%%|D!qQ!$bc3KGBHf)zNhn={bax{S z(%mIe(jA)yX*NiAclV~5lmBzy?|VPiGoRf{u4~769mg-dPC|7(9(fe~hU+i?<`(0J8Rvc>$by|ZxkW2Riino?IQjd;} z9oRX41^r?92X0QNYmgXOxC^doiHui+*eODOFa&O^*WALwA72XqV?$q12^qE}yq0}X zKxnEyp$BLo_^6xk@`iu;%13#tBLG9_dOa3o4uBKt^8CDQ1wB&`{Nkh1JOJLY5`5ny z^Z>`VdUt(RqD47fm7V`5^Vf!CY`j~U3)jxgC z9W})8iY~G4=p^v+CO87;BVumNf&v2R<#lN7uDGRQ0|`uiM9(jcOPz@?^<5OTv@qQ{ zwEXLf1lMPZXX^Bm%dyK<#ljE?A3((5)JWZ@Y3gwbk7JQ~)^_OQxUxb!8sXPzhn25Z z`!D7nfgf^Ty*&5x^2icSJZg9#5(a_rlyGYZ$~;`L|5if9>cIil$$E?D?Xt9gCvF6D zgBJEtX9a@l&++kb@TL-_EZF?+Otn$zxV8D{D>Dp6XloN@(W2S;Y(&0i)#KTk=-5i! z6~gy+Xq4O(EB?`HWGim>U`8<>b&-z{jn}31I5GuRQOx ze5dt!vREC#UC=+h8*MQCS@sR;oMdEJm_G(FR|N|`QZoW`(=oi(#j^4tZ4$ZBH5hbD zv?@Y$Xg4pNT(B%vUrTQ5`|NT1`$pl?8_AR0qtDC-czwnl>acx5N@{*Xe}`tRu_VA7 zh)uzdN-o=-!DliIT*uQ%E9_HwB<1&FgK7FesG7E$t*|uD8y35OgCL*!W0L3GZh;>e zp$P%<7fe(ugI|=CDh>OduSrFb`;M)u6YLv~Fd}=4){zmabws17=XG?5Ud7E-P+j0v{CDzEdP1-|{#8K-19B2t3)|0pF1)8j~7DYhBNPIuR-04m=QBK+WCuznl?8 zBum|TZeoVoCIq#>tppaj*uG^Kp9gD`#REf;waD_4WNnC(2nifEad5yg5<5qIg#9*s z5CVFNTa*P0jGtQeUHm7Il`Pg9-C>J9>Hc#geK0bc-F?A6_s_DIbs%SPY0qS2223}OftN^ojECb6b z{2Vx9+vI+NFHB6@v4@)xzGGML?$>pjzRP?@t%|cHz#UwvMtLlL=1n1%85GX{%33_?EApN z2V`P8&wpb9cyRmjBTl}@F?`zioNU&m|NSARO=p|w z-SF6NM%iMrrPabuMb6G@Y-_MR)W0ROc$(+56emlyF?upiB(cqfaWQ(D^3kLVHQ8wQ z<01ub3Qji3T;RM{?Z3tjer8Lv`TG(TasE4kyjlhqD>5n9(%1zi#tka~%yp8U$7FU# zHbNkMJjRgK&d1cnXh=Lqmk@4oK;xX^V#o;RS-n`dj(nwE+7&F^54+|;2TH1?)P-X80S;+ z$HPofxVNdokxM+bGyGC~3I4>3P1Qpn3Wc2`E~Q`)?TmRPBlvh{zb5rn$1jXQcmP3G z)IsCRmy2H7$YQOA)2C3q1kwuV@0k^*ql2%k1gA_o+tf|#r)l`_XZ^938tn5y#;~EM zzQS~sF^)qVkx;2K%N2(Q4|*lD_VP`9+{^k(eV z6vgp!Uww?aBWpo#qj#a)uLIVxhz8+HyUL10f9TpOrccf`;$CuD3kM4g8Mn=|8>?)> zv3m0bP)ZEa8@l_#j_h-8**Q5op!UbhBDqRv%}Ju!BMz(jet%OUmQX!MNBn7M4S()G zehz#KGU}R$%ECZjgo7dK1QhIz-4l znyotzMr~eUpb5`LLNjH@2;H!%)dh8Cuq`lq0RZHkgN~X3c*fZ*-(8e>2e4(FkaKTz z*p45)#e9V`COq{4@$Cqd;@H`0Zf-8*qi%++3PZ2rV1~dgcxXzBY>DMvX{E{ zzea1S*x{FXNPZd5m>A!__1zx>GU%1P;0gL0Y-@e%pi_UnK9^>-77rdS{umC1aLv{c zv8Zc$b9jkVGHz1gZR|q&5b@KCDcw{r_TQZG4Q!Z$7*mIM*F2P|9Y4kbvo=r`th-g{ z#8Yh!{rrfbBDkToH8tvwIc+0aPyJY#E~{wMxe4#J8y)w)GNNFaSy~2A;DIv7Qf1r} zD$p6Md(2bxvAZ9Wfn8wb6pioMd9LMrJsz*yN($C}ebh7cdK+qw8xV)peopxK>({RY zCQW2j!rr8Nu%QW6bbVvl_b=bGT5KYIFN)wa-%*M^_1r|rwk}xh>*vqUWS)fZY;UR? z^_*+?pXJ%EbfK3QZEbGK7v2j|Q^Uz)&ubg!=H`x6MWv*mlTwh8-F09vw|yV3cAq%K z)|+|pZtetugA9aDAoK0&l@*ljH^aVS&#JHYF<*7d}Ne zvS=k@r5vtjw&+`kCWb<=dHWBv>{iP}K}M^K&F+0nNr<;-Wa2imPy1ZdkuQ9Z)8dgA zjIUR9f37Yv=>=GxgW&xQSwV!muR4`XpY{f`b|WHNN3FTK)-+E3*R^5NrvgvSS__}A zv`vApI_+ew1*@}ibCGbw?2!fFE;|M8;o#oF){;Twk6+F+*0f_^HOpT|#{`#7hyNx) ze<(!|r6 z+MjPL9@5s+bUZwQ4T=0c!-#Q0Qj$p;Mk5dPi>H|@{74Mtsb!p6+()n>ozL0p?xe>? zjx{|1Au$0odtoT2PDqczia=y!_|6?l{p+VAasr{mitt_d&JcoK(6;$xx}Ie-T98>9_IbX zHO}hrUDTV0ECkod3oteFiU``VHY%b)Mu4eQVbo$>9s&TF$zEGnCNS{;i7}RP3)ufg zVC>7b=!^p=Tbn0as2jVt*7s^>^2FgEfHJ8 zS9&uN^`n{ahOt3Wsf5QA^Fmap?`}``k=Og-ZU})~b0%-K4V!0~I1k{vAR6CC+&AFm zHth9KQu$g;d0wY<7-dun<)}t`1y(9TmD*$KAKcUSx;DpeZPERbh9%u-+r9zh*nENv znE-PW=34K4FyVWLTRMb?hu2;2@GEuXR!A#qc?qD@QMPEqOm!w{Q%BOoTep4UWdVJ* zL=iW2 zV0nzk#F#`SAs=B=($Hx1yuE~jO;m()%E|rFG|P^Jvx~>Z#&({!Mfv@nX{d;H!TPA8a3IHfiPEH~PF4bCLWfi^k zEHhp~pj64t%}tcZl@BhOsUwCk&9myg0x&;FbL_f#-491}W4d z0Eh@8(T^|^=bZu7ujj*QJZuKtn9_PmFOZ_Qe#AODJCCt10E^lE5i2-xL;~?)hTxJ= zsSU#wq22&-i?vUdz)c}J{x77`F#KQZ9D#Qbel{9T<`c;QUYrmcxcTrFJ)4kP{F zUZ}!ZN;BvMpwtonp#Mfp1@!};uHnDDh9(|QaK6vu)zuZQAqO8H-xUn($^dfg_C8rU zIX-e}iG+W;R8%<;u-SL9FE_cI&=4CN4W)1hPW{Qr@uOn5a&d9di}??VYGP*R6VWw%BW}EuTznXdUouY|b9YIIMjv?5wDoD}@A2w{f7{QZNLW^9LO!zfZSEieO44XRe)@ z+l1hX_U6(52Q02uuQF<=uUE^!gjan38W1?GfWVw6nzjw5{}9HBC)ztnm28R&(Y3F3 z<}LFxiJd0usu*kJ`{>SaHo@Ohs$Qz9?aJ?nk;jWCiVro!;09n2@cv<<4a$J|`YFu} z;K@7S6gP&Zp=G}rv;*Us?}&fE(>J2Bu!tWen3Edn(3DjNaS9K6FI~XPaX)>)*=*p0 z`weP}oEijKOGBuzr*Vqdf7~ydiPoGna4re`@VG}e)!1h;#Vi`T_?v{icVZ$wl#`T{ z^unzmHVP5+f<0`H*Jd2De&Qy z7zl0qb>=corIG7<_QoNG3?+B9Z=_hxm6m&45umUJbh`OV&Pr2MgTwOiOz2UpJ0cd} z{x8IC(?f-$y~Bu& zSzVRBYIh#jSwtNk`yuy`_L&nJ8HBP7){Wpie!)HM47GD?nl>_iU&FJYeC}n}D~0Df zH^}_gHgNBg(ALg~Nc}V{NA2G)eZi5gbspy0_M0}1=r_o#LU75PmMWtV?5X`_$cNQ5 zaVZno$($asJw(no zOWda=+AAL_F4pvQvKV}#Jp%0k%IXcm##WZVGnkd2p2akX9UhmfqM_X)XbYh5GgZcs zJA6-1_C7;I$9r(#zg(U3Ix;pi1e;6iNjGVf@WX+%HwMer&zFp-mB}I*E59#{TU<;# zHDAiot?+W0{9XHJ3p$g5vIyg>~;oOYNIIJ&!_yL+`JwMTm!+lx!;Pr3Xy; zobQ%-e7mXhU9<6EQEZNuEqK|B5RyQ(ifsbz=AoI=vp)ffzIjYqcDIpI!}!eEN0{0T z$?vug&bGv_ba~b1vUzl1^R{*v`&ime+5+WYFPX%)butn2a9&vQ4mH6J7!uR2Zu2uu z>e21$&9BE&C3?Jy_;(3z&Wq|2TeV#7=H|TEJ?M-aJuW8qu*ndS3@DNv;i;M zg;INaN^e>w7N*PjvIhF`krv0pl=b1IkR<2J(yMsYCKf@3NYxSvO|#iHCj4r-?IcK~13 zVmZgDCfGHMF!=^C&8_)i6SlXv2O{4uMn^{hoAm^V0ZRD>kouBQLzpYX&|3SK0W<0i zFT30~1T2_S_c|`DJ!gz3XNE8wGcKlNdX<+B>A#(9$WO$tCr^n{-x6 z(s-^R_T}xFj{9aj`OQc@VriLE)?0&J1Bp9#&E&f5fs3jki;lTiC1%riOy1MV?!hoO8iL`s-uO$|Jd0hy zyh+}^SM_e$bh0utlRIBHD$5XDXlHS$d6X(c_Pp6$*x9opOg=yly4Z2rh%W4kp2j+n zpFPa^>m71;`|Mxd#WE@RN%!o>A9e@)Y4`hOY%KyZy59J_r!-=PKj+iR-jYDm=i}2G zC>zgdJQg+=&s+-J7YLJGQAnX2WP?L9wpNGz!CBctZp#EO2wS`F)eg%tU3P2U<@so5 zx$HgO-^_%O_h_L0tqveyotlSndf!D>R$88fY9|+6^z6sSHEX~Yg1U|LXX+a0ERJ|w zR%>!3uM#kOEx!$#$^!~i<*l5&eBiUw(Oj8^hKBOTC*}_Yo6H5s!s<-{ZRVLS59`8L z5GDo+Y|0MNjy!$pY6#$RrT}Z`xHnl_%b66KszVd~#5^OK51|WhVXbR`2+^#FuVp&- zgKWc5Eo9b)hIA^#?^>9J)h&Qin21k2q)XRF?X^(xtuerkHqS2NVcVJ^JQ)_>`cA3D*fTP0i z$?I;qhkg(I@jgD9gZrz$#`d}%h70&*`(|jq8C@^0rkAD71X>KF((%VrZo?W7RFgG7 z%X)M*H5MCFHd!x(@;ENGehR~A)viJBrN5~A=nNZz!xJxK0{jjQN0Z}Re7fh|&e1@KUUw+YiHI{Y($N281 z-Er86+&L0pOThv2{H15Ah|$bCuB(YS54@0#jH@fuZ9W?eIq8T?%U(~Tg+^n0=uN5m zs(f@`anH=Z49?8W(H8m7dPAZf+0*Rez$$a4_TerXB#^6%upBQ z!M;ns3_Q%(Q7$6vaqT_$5(MeYeBV|tz#Bdd`*o6ka8=rIk7ap|W!-^fM!}=0I_2(aX3jl7vLm?U4kd3n z)6(4CgDYdzr{c^v@Dp>edAzD}R}x zgWGV`x&>*7ocncWw*S1!?NX@ExMP z!4&*19~c;n!NM>fR*s1J2(%8j0Ou6JMYW}eJpgnXhgc<;r$oI%RoC++Yg!bRU)ZbP zlurr8Yf|9hz>!$wAAfRr8Ayl&=m)@sQZKlzbObz29v~DFxA0Pv3O2_2dF=_@jqJGv z^fZ;O+1-m4_{tnmUkmoYE17&wj^B!A=}oHLlFZbOw~^@w4!V`}!G8t@pmW}pE9>oL zm3E(YUf~2l*Jz+wBiFK>1gk?-4-KQ9j^l0kY>7Mao(mCWmmCf;(1bt(tn|{wGp!-5 z=JZXZl9N|28`O2l`DbiAgy=N)u0+falVwJFvo)dVmiBf)V8N#R{l!xHk@&0zG{aoL z*<(tRw8QIq_F*qke3~(Vd%`n*==_FaDZVZzf-?{wLFF7|Z83VzT^bt`er0DTV;=0A z{rABci4ebCb^PV}0iWxk7HM~C=hh}^MaQkyPU%`ni6i9G@DP@E)wI$;hvi4{g4>3& zN(}4_e%BAo7d2t?_ucZIW?tfUr(!qEI__2F?bV-nNu6>Z+&UR~ZWS`j3#OxQzi4kY zWnCZcv&im69=$I3F{!vU(`aBE0)c6%sxFOC!K!ZUFtA0#kNTmD-U;-vvo)rdm&jFw z>OB%Nd5>zhIeDpC{5h753!Zp%Oyn*t7%qg78TVV)rGd(ii&v8s3Mp1@cVjjUcPe#3 zl$7w}>KTU=fs=M6Yu|(tDI+t=T4WpFKb{{b`t=SwPPXZqDL8j(L>C%Pi(PR;)sBne zy%Jj=L-%8wj`j%<7dJ;fW^t0IUFl%(_Uqo-&z^lJrBpS5oiu@>VcF1~Avty3FV(oD)j43cS@bxQTg$|$ z3iHm(%j-Z~pPXKI28uSmhIW^{ywuDU_6URXwMZd5W-4+2k!W|U69z7`XlXh-2Z!Q< zf)DA=?Y>C!=iQVTOs`+NfFSD?Pia!oF!U9&iU=U}DD%2t1Y!+T?3H1$AZ%ixQL`GZ zvcX>xp;Q{2^7bdIf4wk3PId0d1wcSBvaQwBh{W^f`2hT&C zVlw>Ad@LFs@OHe%x=*&QVs%Q}chKN=&Vby;bRB#NnG)h(JCLto!P^pp6(2haeC48C z9jdy8ag3CTASh^kN@BBR;6kx~8TQrV@T9ySwYVhr8oWwOrEshP-YU-54`NFXbAB z9k+%xPZPaU&ZTzdHXHdk+b%ShMtv(bnO5O@wIRDnzSdWlbAi1*w1>%>6$687wep8& z^V-=r8q-weRW-lLf4Dlc+zEMqJSW9#VVW5xm}h5=i`}~$Nt)h%DYJRfU=;7AyTmd- zIr{6Uq*J~z)|b~gpjK5=h8%|V`#@_!oi|R_Y10?GXU^JN56=4}W|^GzFg!yYBMnAT z1GAx5<$bp_;Cdh%UMjQ6`FJ@H@i104&Yr&GgzB_${a|O>&U{PH16w=57H3|7Y{b2q0P*D}T|K?VIVK~9&$hkIi#_Q@T#A$W% z)L^cfm~BwY-==u>qvg33zK!PD<)t%)-PQv)WG$IN$6)Se0s|CS!tFN)Sz68%2*gv5j}UP9vsB)qRfe~- zrk&4t&P2KRK5G|Xr}x6rKHf}48gvoaKPYFqRmyb9J=SVvWD-wf!eK(YaAIIgI3D(b z;AlV=5ft{>odsa8x-@R8_;lPm*mDCV2{?wGGt3$M!wgFsZc2LHoW2~+{}o}J66b%A zlwECL&hVt)>n35>%tY`Ip7K1gc%*)*MX0HTUKueqKN39R>H$k?jqf2^I*&k2sVh6q z>)Cn}YRT}^4wmk`X%l+1_AeWvGxxnws$9&tYssGTXh`?ybqU`d#mU1~xAC{Z3qsjk zFGR>;k%0VIo+A#f&};|+s znTcj3sfRBiYTBm5SHe17YWX3{1F1)^RUDxazlCbVJp^-!ycqMr$n2Dm``OfooA0e6 zex=^qy=z0;JKO7m`xfR0o)dDse6#h50t;P>?H#b^?8J_v4y1CMLwoMx?IB0~`BYV| z0fAOuwpI7|GI`tQa0z$&a7A7h<|n*6adPH`ozSkU7dU&{Boz8^C)HN|T*9^no1|G7|9OQ7isQ^3{yhUS}r{k4S;-E@0 z{;jW|vxoPhCNo$q<^vnD88=}Q@UdO{zvmYkj{o*KQv4QYnwJ%?6V}@kT&ic}Zg6#n ztl)~!cA4sIi^*v1IsI-q{Z^)`)cS`ulvcDkotMva^Af3)WwmRZ=+p3TWu#eI^dWSu200QE5NgzBJO-b5-Nlrbhtu?_ zT(JDB;oBYh&WZ2!7DxMCFPmeF=5W2^^{$peyBjz++i{(Bmt32Ni`KO0!q303T9!)3v1VS9sAs~74pnqu2JFVe& zM`L;Zm&OBGjI`LTvs>it(1=JKPGv6YIYnAx8%YTX{c2Z6svOjr0ifiB2?`3nkPwLk z3}MrU<+!J5FI038jk#Fs3Se&QySt5g?eJ1kJv3%BtN)D!gp+asGV}t2>elBFE9u#2 zHm>B;ya|jxPt@ow6RzEFpugK?_Bz2(TX`bYG)ijg>xpP40Qi5BY@DGESXuvK>!uTA zS*@>MpJ0gZakFbk>J3s*nPAbd^8hOByK7V)J(}y=tWMb)f`)L@e zN!&1cKiHylX(fn(k8>r*knxE0w*fORhqK1sg?}MzTa~UpCjV$^@6l+9S-jcFC)!(|1rl(9>$} ze%kAeNtzDMYA9XIX8D&8mgD6|gTZ8S`__-RxnL)v_;H*)AL&M$HI;+>WUx($8CZ zZ+he>FA4ZyG8Df|{?r(hYT9%<)^K*2(Rwv=Adg)abUy{OA%X0$<5t3O=X7HkXRy9zrx_3%Ijwp0-7D3l$(js4%&pH$x*~=s)@8vVo+ehE59B>TUJ765Dw>MPjXk|D z5)U%1BXlZ=3SZW!PY!9BN92!LwWi5F4#GS=iC9rJNIpy-RX!fu81)+tz_D^ z*#0AXRRo5rI0L}Ak8|H=rbZnUL^tIU*r{8$TyHXDdWd#|PMA7BzfMpkP)zwN5W-As zL`S>Dld!`F%1&{^HQAUQ^u*eLP+C`%8^!*91;?AnhV|nays?9>snaR%@|DNNodDdsek?Q_Fn{UHUb^Y9Y zb`?=fw$ybs+!|u+JMr^pRkj7Qu2_2>;YZPLgM3R}xcAA8qfK0FP8`ejUUkde#tu7G zL1#KU9urU&%L#)Lib$^ zm2qjhWLu+wZ5;k|VK}kg2od*w2a6vMW9v)B7xHest?}VQ*OaMJKAVqSdpMPY=h3|R z+w#*DC%SLmc>UObPatS%?ZZ&Zl6J9b3OjR4ZiDSNH&va#?=L4>$R}={l058o2kk?Q z>l1Gy&s$*1V;5Y+3)&kH^L}UiP(8U)kv7-DblF$rzk8CWan@Y>OEcxI%hZVKSZj~l zBOcQP9YuxwE54LgEXj-@Zq#wo`33NPhN zkUdxKp`O=9{e|8nBXQ{w9jh_-ud>_SA=S!AoGqz=WX9vFR;yrzuyAP)A>RhdZP|s2 zpYy6Za}}-GB}->HmObcpuo79B+q}2o)p15mF&ZS%cao=DseG9(Oc(JDeIYEAoxB+W z;1T|^zD0)~p*F{ABVkriZ)>&V{8Bh@cavJbn~ZKGu==b07BpbUM}2m-c!7h8#@E^u z_?QG~e0O?0r0IHBd7h1!t$&Bj zAiBvjq+Q{vFjK3lI_O9vzsUGYwXu$j&x0UGjy*u+hw;?Rf`C0Qu{qHA(nl~Uzn?|K zy>-N)UEOlM-|U;N^V_PQ(^4P2Ka_g!Ci;- zYY`w4!o~7%an^J!uiX&W5}07LT0Ca1s$Q)vS=KFl)zG*BTV~5~2gZKEJ5;O#XKuX8 z;xjE%r`-quCO$%RS;SVz7c(!6oRA{kgypfK+Ph$tkYflm`m>Q~luciRiTpZCY1Xcr z3!^YgIqTbGQK*hUn>G<>;I%KnQtfOw@+!EV@nn^VLTDI0AA0bcm=w52UjjBIT0^A; zC7Ee=IpF0e9<=cVVLIL2-P8h|JQP-i620S58Ba7fJElOy80I$^g_L{#=D=m3A~{`c z&rHRbL7=BGj>5vXC5{P%Y+}Qd0S?l|tSPH0dt&hR{R=zOG-LP@2$HG@3nzAo-+>5J zJ)=AG;15{Ho!<#WOnf^{o@iGr8iB2`q4cV2K&(1xt5R=PA8pqjZC66fVwcxbI@yES z++DB*_i5c`O>GtKLQHP$7DorYE68fZ02!Bm$X|=^!{R6dyi)Dk++Y7ESVr1 zj|(vV*pe|OpW2@Y_i%Vf(NsYduhhYYmCxA(vApWFN@6MoAd4;LCMZyC0aqMBI7jBS z+t!s=Xf;-DgSaZ^A7v>A{ehqT2I`9QP++R(*0L z{XgZe0h11R_5T-%bKv9xFr7qq=1Id>Em1U$>tp!GzurBat-$L6uKY;^@NtdJWOW*F z)otD$9v<&?nxwmlUvq0Q`XdM2(*1{EkK?fN%L6|o-@0)cb~L@}|8j9Lkg=m?qgnGW ziTnIV0g%V~{|Tr6fA2k!46jO ztakn2-Q0wnWKa%5@}Yxe<64bt-NhAj*Xqtz!!uND>kB3y@XIX#Ry$uV6*=4*WJ(Xj zics|<<$}QE5vBjKi*@|xdmg@Jb3joh&wyh0X9jLG%y3-9@K(8QLBappOts&u<@O6~ zCq0NX9dm)mp2oks=Ktg8 z%X=VSCkvSs>((N*1lytCc5PAXmHO5Seb2!83(}ZQ{aK)8Fdy3w@e`Mk?b5+ zKxPf57Q`A^U_YWtWdE?m6%{cOT5@u70vjKOtIQQDy$LAW4$&t_il$=M*MIst)EXE& zTmIX(^2}fGejgrc5{qCCzlXqbtX&1s$Lf0lm%6(;zV=Dm-ic0r%<9c7;s?kWyV?tg zFoPPm2oCps0`XWI}zZIAV)2!S!m`-Ipe2(W7uia z=|pXHW@ewN-Z*EN*s>d5OTcQ(e(`p~A) za9Y|<5>wcwuYr^49A4SC;0p8uxK16axc-uOLfqGFibZqZ@F%5_)BcB4AQu159dxSg z83W_-2Pn4^0kh73Y)K%LSFvcq9d_smj5aIe165?a4%@kjIy7~dzk2rf_ko9da%!rR z^~tyODOYKrYTKbPDTzq!3+r?6D+Aqw=_x5@9t^y^B$Hd~eX*bEsi~&M}LK^L2vu08CKuPJA$!8w$1jXr2E zj|bvtG#25uKU(v8t_qj(*Vn~HFzdu8K~h~IJ6+jLUFDj)hWX;7I1wGb7B0{XB1zWe zG!}zy%Ezl7fLpOj{%@)R{f+*3kkSC`1HR2buLR_X$S5elL^cmhaRi&Z?w9)y_qTl| zw$9FvPrm5Z$A>4DfRxM1|7HC_?HtvE2Y^|b1|`O-Kjq#4gtS*$T0wzJj(N#>$+NGo z?`c9#WYYZl|?R{x!Vk3tsR`=T)Bj|1{?YWB!4Z~DG%JZBm6 zcuEcXH#KGQfr8i>Q|`|>cSB*p@4H!Q)i@pHFG{782G$)fjP1s0CoLW(BHlw7Hzm=` z_U`CT_E&>ALMizmMq>&+Tc}Ez%MF^&**U3v&vnLIyidO({N znCLh`MnYv}<<}C83outa0R2V~8W=;cw?CY~U|V@X#q@;6B-Vx6tzMq$>NCm;0yRLp zN9lD%&A@=t;nIO@cYLGZeS_Zw#4p&{`$J0^F)^zkf&`fQ3Xo9Uo;t;Qd7dl-Wvvgq zTo%lRB$=L<>Q<}ZH%mI%<@a|%i4hld8EFt+7cOK5yyl7QA^5suq`-fI*u@^D&e3xA z)Y}p6qXJ7u{lP)oEjvigy|f) zD8b>&zgmCOSC&ZC@oMo|qD^>6ABF8iMIVMgK2wBK6hYu$y7U7s%O)GU_rteMNABkx z!P0%NxZ)z*1f>ENqjwJi&}0KLY+U8lZ7n{3uCC16TyqvweueCg@;7mkCuO{2pXa+f zHaA<|t7N-P_D>-%B_`Z|vSQRxa#u1ioI*Ev-2cdoDsjfE?DH%a@Q1~TrRz&v_#nKL zKwA-&%?f)_z;5`Kj z5n7foa)Q)5qw>}BcO!19eq@YKgg8ULLW)vtPla+V>_DVGw*QUo>_1z!c(8yV03n$fn;YG=7?ql!I+UPwdh-G$!y{=*h?J?ea^p$Hc#;> zsrF*(PCY_x+&scqv3-;0?rwXjIJal^mfiD`EweHv!1 zi|>C-J=3p#)?<1-z^!_i=A+d4C|z2jmVG%Y&BLPKAFlyyr9Q+g#OA-#ri{&_g@Jt3)caim0Hvm)K5o$~quJeTVM*ub4$m%Om%*AV z1KfAYNwLq#ragwXUvwADew_ zN6%2nXs_zZ`QNnvShDndeSMd=xRyNZXU@T?4&*UI$!tNG2#Eup_ZL$uNa7_ZI22F5 z=Jc^hN+E1l8J81a3K8!3OcQ;s+kfqm$S6hO>tHS=g<|-%@7M!Cu3&Y5vWngDJ4E03 z-R*)0Eet$(FEdf2-x_jI*Ih6B;fNBHmY3tAAW~pWv3@F{Qi*;|Nc`vREmysXuYK8Y#{jygRkCqu;Q)NXsE+Nei!@w*@G_9qqJIonWnL zcWro!Ad5Hre8BLzK|@tceJwk4kqSf1#l#wkIePpt2aBHA!k+W>LkY7&usC;OG)$%zEQ*BsSq1k}I6YFtkgD+&iQrVc+7B;D>n#RX&y)K?vd2{?3x z-d63a%c4LZ2k%Upr{az@r|uzVi2B1gYblpH)2{vUq&rM66W&n2Xw9~#TzQXeN2_)D z>pBge9`kf#T1#SrJwE56hFs&H9i3;Th-gtcXvNFDd?ZXbFicNn8i_C5%` zaj0a&H^`8;X;UUI*3DAt7Rw4dTu##SOSlMKsH(6f*{h#n9}`gAl@}L_H&aN+Us4d_ zzyJMO-$hnbwxI4=)E<@pe1Tfo*9j6#jd%^_n0~QjUO`m7@6UfJ@|Nbs|83}><=nap z?BAa*xWY^-E@M)CJAtfkGcwem>T59rEXOyCrFPrysnOAJY*D0aZ@+L8g#P6r8Wvw8 z^VsfZu}lBhs$WYVAe3&uueEw5bBSd#&K1o)J96TZIREPO`mUW*-=3;-jIgndzF?8; zQBPtQAz4AX4Wt}2J&JRtVgV$g8%!XUabL}( zS~K)Vx|j9%_uIrR2ANN>?HGqyQosIPL$Bdf=DCPN)DY{K-1OCC-F*4^r^~jEix`j8 z-y9Ye5z(}pRyM`ApLd?4pT3h$c5o2#EJtv{Hvfs^zIfkJMzNQE5NByN6|f-HJ1jbH zoWAnza%Z*~=XpG|#rGXEoTdY8J#z8L68ZbyO`!GTUDQDz6-;;)D)9ZGG5Ma&WdTav z!$&fR5Z57inE7*+b00N|F{w$~Z~=C7mcKGY+?m+pn}JHTAqAn?I`)jLm*EdvBKr+* zq?obAk8pJW8CF9nHf;Z4f5&EWs#H}tULVuwK%oLnP?@L!>v)nGh7ud%&c^_bkj396 zdBs|D@95Uu-pY|X`ntvUE4G#?7do)8{6vkG{Qg2zE;Bo?5XOp`Z!$YGfi3#4ejHKV z+o8yJb+24>Wa}wn!+vPf&w;9WtDglBwPzxmfal61{0j(=3 zDM9vI2_*IY1*gT->3R|v&$;WUp{-DETTz#&79F2SH@W_5;0sBKBAKen3%2o_0_x!( z=dYMqsyKGtZfwlnM-m1WM{&evPw^a&*Zw)*R?Dq@%ASYkE3haSsCs_~=_#s#>Ion~Z-qAtiIEH2kNa{7QLG6F9m99mXZk-Nx!wK>8qMatgqsMzlq!R32g&6-^G zXQF^fn^L=RktI2XE>3!9bFUyOM|{+zu(fXK)kO8TVD5nd6m?Oe9-9_dX z;t9$LJ5p8=0HCa{u5PIVhQ6K09nei7Yc-7uo_`XlfITr>^}*D!w?6~x%h*7k(AglH zuII%|e;ue)?fG|9DbAbOW_K7^cqFvlFiy`hAIWH%`};qwn&9poF0x(D0xM}RYQtVB z1Y}**F5MqGLoan$lQAFQkMn;-nwgn_IJvE~p`IR;UrVtJ3eVX`OF2Is{1y5BmP6w{ zzJwI%*JqZ0e@^51%q}EpFnE%EIj{&0z<9}a)X#1`gYW+iT|us?d}fA- z#r_H#i$Zl+iK6cZ8$G=djZ|t^bfgy;Zd6OPl4E1>Nl11#HeTZ4og8^T-bU~px&T#s zaE|&r!|Sxj9Dnic@0OpfaV^HDrs}GzRo=#TQ9C z4#*uu;|mRo+TAsK^a3sNkHA>G05rhIiXT7r8DM`Pe_)L|b_i@SG1Qi!g!+uI`&0eO zqQXOB(2(#ImB#O%OXY!MEqQZ)=TDQJrORd}HuQfG_m)9*ZEu(FNdmz_aDuzLOR(VX zZo%E%A-KDH2*KSQf(Ca9?(Ul4cXH1E+_$^B`^&Am{Zhq;T}5qR*IaAO`HV4sBZ?|l zEjFW4iwIe??>kw5V68@8ce{>(e~wHUX%38dm~HGQoK)cdU~ior5h;@>Lm7-$)E5wb z?W>lhq85k!fr{Z^P+5bDo05l2f#$1FEM=f@pm^-&0n>i7!oNsb|VLs;=m8Lz|oO5xG!sNbD z(ora1zsIkjQl?_96{3STFQJ^1kF^uOkYmhfMnOe3F(GS2%Z22ZE0cuj8A93UhL(mA z+RT6LLXtl1?Brzit8yKTCx{wCX3V#3IV{;c{%E6T9>?kNGYJ4fz#C|;xiZZUxFe2c zehFkGc&cR@PJlPG`|bs9NQn6dWcPpMKZ7%#fUTHFf2ThbVZ;Nt>u4z{3E|Lc5Td>y zZustxn0MbjgRE?FVqzT#d?O%4KLggp`uh6WE>`F2qr_r^O)v+Fw^2yI;lY9TMSM1g zpbkrQ`DE~AaYS7&?8zp;*XA8~kytG%%l>5w` zD-|s@We0bxiFG;kSkxHB?4*#;c$uvmzIIR(9W_4dmqnn|q!c_Wft#$#@a#L!R@9@ZSWOqsMpiy^qU8kZle*aoBW z?7w0u2wpF!>8PyGjM2+p2YD$cWq#JOV1W%w#4>BHrbOL>~h-;`SD;NzY4*7>&PS%h%i8mFSPO7LXXniJsmroHclc|HHn4+c; z4?Sl~A!9CW?yVpnOGs7!iR)%DrYb|$^c^g0^90ENMdR$^9Pjd!72} z*I*#rhoIGIhd+6KmMh6R-l?&%{MOB_t=v^=G|59C^avleU$1~6kB6P99d7jv2`j)g zjP=Ky^BK!e$ji^xG(@S^RvbThXPHK`xAb;f1a+lF@JnjKjZTQ5BPrR_JTP$Oih&Ho zgcU8^6qqq~nZjf=$ROI|JFmOb4k?-;k>?JEu`jNhmz>xd0Z(_8+vQG7Ow88S7Dz)% zXMRllY6l;zFVHO-nzVbwS;=G76hf4shE9)yWnO#*a-}SdLFmo}fvgr6w%D@EQr`yH zC>GCW&ofpW^;64Yh{$qBW+V5d14Nb@VL7-yek4#GShpqk;Xl2N*!`zVl;O?rTV_xU z$o2CA(+-?-0hAzS{RKj&C%8qnP-mekApzUd3@)B*E*Cof%`~`KGs0xyL+VQfNwdJ} z;`X9;8gaSA%mYgipx^~8j}}j~z){>=DO#3aw!VwP_PzL2RD69RC%|;lNk7kc;1AiT zy_fbELMs2BF}A9-xi7#fe){y|Y$_DMGb1A-=cc14SRH0fiMmgLj1~!&a6841E+=x) zv1;in+V^Lzt~Z?RD&dLO(!_Jzqxd2Al<496RfE{K5}sm~)gKubgbWhH*^6*(XrEe| zn;k!97QBi6iA_@hjg&ucY3)J)9clLx#T_^GZ?qm`Ji!$>)Z(MIGQb=ubxt$-woJob z@``L*hP!DQ(cE3$In0W0wu{$tO|6Aop;jEnZBz!XWXO28ah`Dbo!jRI>_2dhi!cw6 zR?9RN>{ZSB@n!*i!RPb6IK<*CIe+sMtzU;o*P1Lv*W2d1EqIbU!I3-N%huajs}O63 zgbr($f+3wtlGj3imRjh@keU_EpKOAFz92i^d`tn9S0d?v06XRAToqMkA6178bjNPS zEPRxRaR}dkV&Bk&b1(7XzJC+a|9vkV8P^;~NJ6QTVNWjBA)k7(%g?4vSzi8RAbb-x z*?X`j1qVYtprE2|`H3U%jbmKJw`d+<6eSsnz zW6=d-(pZ;TO-PV`E5vF2FA3+Ae-qqWY5xr`o6U|+xYK{vo`~~0o5y7i5nHqWRw-T_ ztWHsP4AvBdYbi^eF(QK|+*;@}`LVzMWAmIN!`FwuWX7B=eGwO0zyQaPgK6TOd=A3Gr5WuO_H4Yv~HTnWE|cMnG=HdEbi0% zF<@M?zO&ffZLl{_favr#?*%c-<&-`mf{0b~k}l4fcpEA`lmQvgy`91P8b-vvM6Csc z-c&@fTOBvu7V<}{TxHhr%KDVZ1^SI58@@Pzx=2r6eB=~hVFqLkf8jX9WSKOUfw{R4 z0*Y!|J)tNNIgEenqb$YEZduw6=#|6AN5;7O&WRG{KmhwbyTd$$?3jH&Vcy>o7uuOA z-Dt@bY_(e*iXFa0wd|~4g;Wx0R8`f?;NUyH);IH&|1)3*n$}cRO_;L0k9`4l2E70~ zG0}Y?VFV1&UsgSf`w>l&Q&PZ;nSQo~W2R}1Xal@NFH`#00I+pl>8#ijp7-Ku=Aq<@ zcA(Cc{!25M$@Sylo4mBYe7pn7r(8ikntY25G~os_^95wSgupdz^%W>kUm~6S2AEL_ z;UX|-X>uysv6z%NM-FyU^4D1cO(D$-8GGo60R_rRHnK2ih>ivz-*_}la^p5<^{&^N z$E<)G?7_7Bdv;Kxtr5yI8}TU60y5od_yuUR{bk+T z_Uk61KUuFz_kg^qY5V;}q64Tyc|bh$@_GbVl&pjV#~I!{;_a6Xf}<0F^Q2D)A5gp9 zrU(-<_@bhsdXLXrs!*g-sJ>USYaj@L%V&o_R0ilP8qZrd_;HAq6ch zaGnLxkrJJ!i{uxp;S1p&2oVA?FcYj&KG!p)!>nd(K zems&MvHgX{!E>&h`PPD}=3)OxWJ6}$QfarfV`Y~Qy+3`fY1wT@nz?qC(%QP2($%zC z5|Sbmvl1Q$P2-WJ-47qtTf9$^etj^lnU5wJ`StuXy(^@uO-jABU!)oL$HDl_;hD|p z7?&84QUHcWo9R_}IRUin;79`8^n8_qnPrwtTta%^cf|G5^u+8nokTobbabRl?GFiY z+0L0o!p&vva!5y~h&Va@a+qCl7nhqPbKXH;uj{ZPooRli6Jyy5h`osw0rW`P2u_b862ZV+IW6l>Drda+oq++cl<4C+3?_yG$QkE#USZ zZW^F4hgn2K9W;c!F@nh%y)0y4s`-}YMs8ahxs>qs+C!>N=lVvPF{)=;cPceq-%Udt zQW4V?g6hm(ABS9V{UU>BhLkgXusB+&c;naCuck)Q*T1Y$Htd5II@T*i8+N~2 zEu0i~l+g_({5I@M(O5k2qqVUWYXidWo8Nu7@zUOAqVOF|YQv$Q8$_&Un2 zXg5!Kxsj1z>L!tsYo9XkbNiFm$@F+Fld^tF2aT%NSCaQr4s*KWk6e&Z6>k=&?q18r zdQRbSc$1@EF3Cx2`@M#{HuM*BGEO0#($xtC zzp2E$FAwJsxuwOvwJ-kVQG7{N=KbBDqz0^rnt+-Dt)nk9>#3D%_2l5TfxHuvs%sVf zp_HmrEm8B~hyMm4Qwk!Qi-$DnW-Qm@C`d-c9M;BjwhAk{ugEJlB8=!wWE%dV8Oa>z z_}H?4)(;Ver^S_!MDT$eQIc55UD^6`kx0Q5YJo|Kcz^)aH;4^6#yr&$s=BxSpG)W} z7@_?HZ64Zt3+EDcjL=L&)X+Oittus{NIz$(Ogbbdu6j(ItbSMd>%&1@SXTT)e&bn{ zLNr&GGzvj`T0bMX;jMMYqjUd#>c|IC@(xfr2Buz$A-~t0jE#*21-k*!EFmlF>G^5( z*#n$2Ly2Jnmk2yj@$g>m&|-uF4{xX7;NUbhH3{7xMr^#n4hQ1Z%k1oh_wWsRf`tik?&eQhi~Ot$>jTxMn)Oe}}N22uG(q=vV{R zq*eFBvX^&?jg18sfIIL^0ZZz&*rN4v^UUqSyyqQoG5Y~oa=#*!%dlcB>QlKndifQ}O{n%oK|%u_Ir5EC~!k%3C5 zgASAsfK*N-j1CDIl~b&)U0Qhv|Af4worr~2cVa`|`(3q;HL)jPEV_-cI0Vc8Q@$XW%AOCM+I`iiFn0%2xe=nw*82 zKNclTXJf5GE_oWJa$x(6u=@4>w`rM#6{5I@2Bl(G<+fgeOrA9|_2ksoLGL!LJKO3( zP4xX$7y8#wHV~9j5gMQ@7Vl_9iR>%R*${!HLW#L}A$M1kxGx8hfMF?B1#1k<;OK|S zJ-z5BbN?Yay)kvK)6L68N$>jY-o`YC@RL}+9{j=_+QsKskFFx(rmEs({om8JCaZke z)Q$8c>%ym}Q_3*Wi6whKSS^GVDayCVf79(g#o*R$BlvJ0^M;RMJ8mM{F7S}WpZ9lr zogtRzT0C=(ZXiZo4)IEMrJGf=q&ON<9JIwZY`N0g;V8FN0D{LXOZL*c_1Oj!@AD6**_56u%N$cL8T#>r}tV=dPZ!yfkF8Ti!_3}c;Mar z^xrx)p%+J0Bdq}5k(U`ajM+R*qudAbo0Z`0{D{~b6p?mXPo3f0my|z@2n~Ao7?4Tf z*}7lin*9(0yazR7yd|ZjFB*U73y9zJ82GgiKMR~739yQx(WzIHFfg0}=a*jq$#80N z@~)KS3sDUb5meCpuxQd+`St4$u;N^;g6$`{?i0W^F5RMU%!tR6@#mxF^IcCXR{jC! zqIAE3-+Zi#yFL3sHT8Es-ZxVeks>xV8Ky;i{A99u zZzH6dP1Dy#7nAu|=7UqFQ+2!^>a6;{Vfy)tPT$k8EnFQ3yAQR_H^`nh8t^_((|P5_ zIPD3j3YOyfBaf&$i4Ayg0;ToJ{aq8TF(6abd23RVNOOolxcjfL*g9H*!1o# zIWI%$T_WKwgw3(+A73q%ex}oce5d?!u1lpANR6KS@`e4`!Hcxch3naQW%}&ZQ+Bh& z{*0#q2c z^7HS~HaLp8sVnSBUdu?(NQS|YE?i)#EfORv=~dDsOrq~{RhQ?v4G!)MWtCf$j)X^t zNz*#71f%_X7JW+NtkV@$wqtRy4#ANkc`rZd>j-+yy+^M&5e zn~h-Oa=ZY^H)GDaMf*bG258_AG(ee;!r^>|c$$w@E>IbqI8w)lV# zZ#LQHsG_zOb)&CHu|UAG3DjL&TwGl4jtNTLZ{k050K3_Snu+3PHJ|6ahsQ@k9oSgI z)dbLZf$&H3)9|}c>HaB!HCQ(p3T}wLm$L)mQ2;A-qD1_FqqHD<4mQh`0|y~-98$?3 zdWc|NbxLDn&(dB`ZQ4W6AIsx4i-6|#{H)Q}j?Asl=$)bC9OGB1ittab^~Vo9nDV7W zf}+lTqu8#~h+{hjl_0SDTlasxZ%AVB_*yhSUlzy4)-aLK;Tra1kNyfylD99vT}QMrDyh=4%R9d__aJgFelg@bXvR;}t(~2HO6Zg(abChh{_i)zyNGqeN zP7s-C*(<1&%ivc`f4&clxOg8%Ul!iMkyF-A!_}rVlo0~e`d#65&KD*uclw^bJNGxV z?UtEcl_^&cZmzat_TS4hBB1ZrOrqQ0e__|(qSgaPv*)Vl4v5)lEz%29Q!)q{K zc+(RP_kk{edn*y!j{;R-q#)aSVQlQw7YfhT8k#AF?|y!aK&TbuwRDvcr#{!CS|Yt( zdrEHsnJ=gZVS>tlLgZNl`ivqawM9TfWp_DQ0v!%7{?(XWZl?oOe)b{TtZs2^CoJX8 zg+fUF$sVR$AtY)vZF!zaAH$N)xUbWRD1|vDpV+%~?_GW@^Rp+Di$Yv;%_bY0N(olz z{4Jdp6jvMM>GAXHg&Ilw&-@lBO~dtg_RBkOGB=QuGTy(5tF`r18H~izeO9PdDVtQ# zyI>H9K(Q&F7M$xuxLE(B^OhKXV4uogjVxL0yFyM*u@+bC;X5_$+DxuJxl1qqx1GIsw)_WyyF!AL+tAAej^=F zczQX;7Y**DFfe9TR$ky_pV|3YM+=CTPN2{ro7)Xpz!5m5r}hn*=Bo^T>XI@nbB=+% z2;k6edTJ{uAfuz-0Pg(k%#1cBJF+M(q^CR{K&*mjBC-mcy5a^#iSt+%PbCcmIb!Ke zSs8+7YKF95CP6Q3jW!!XDLV3@mra>U$z^N-;D~Bf8-_X%8LlrbEWE(QzyXx-&X%cd z2#y);vCk~$+6jwC8U`XE7ylKh?aC|pgzVMcREiuQ8xL{cY`MSOBu%^)6Q^XeOs$y| zqITS(Fd?3h346cKR3aUZFibxgt;lzM&B7Id(S;KHWj|VI^9@p8T&G3T7up$bdpHnQ zC@yQ6`dy^Bc+78j*)F451379qC9F)}{GOan|Gt<6gFwWpBRS(9(VshqLJFy_8@&5} z`rftqm}L@gC{b+bCDdnNGGw#uMY7Zsc-*vibm$gh5xB?DztKB*lALjmWfAGzVpm4_ zxMC>cQ|E9yR}HbvDA;fPm~+f64RQJAH2tSb0d#tO2ItTX+|?T6qrM3QW3uW~*L5{t zJBJZ6VJ1B7Pg%8(W|C9vcTqnUlZQ>dNpu7YAbV3^5Pyg|u>3~)P5pHj!j%qF_9^dP zQ0kW{OQKErxpBRmGLPpKx(dXVT)5?^S&er*Wl_f>xyM2yx5~1a(CWv3bS7Gh+7}J$ zJl>Q7dtPEI@47ljNrN(x4Rm}AP*>V$;)6)o)bIQ?GA2?nMBgc(AR;Bo;c#@*(oj)=$SWygOnIllL;DUCr}_K+AtGBsvim6e znOj`STE z#v+RwYDuWT3Nb#i8Gbk8kAe7x7t;ECazBFZ9%FH?>&s}@&c8)Zoo1&zW4U$Sm* z6-3%2kOQ3^VGj>}UG3()WnNtZ3tL>VyfP>Gbi!d_em094Qf|<*wf*Q<&lbd*kx8coP%0%E#RT?npth&iG75M zJthz;OY%?m84o`ldb}8j#GFe1U6%?aTWWVJr@@3b-yH019QxSPIf|bz;)EAO*o_f*nDcX>@|IPx=i3Huu$~p@bRret$)r1=z#=oXu zaBLPIS~n{CR@HNqd?JsMbb0rl?9 z@M7E@N~RAcsL#!P6DBH;YB;venowzj^ovLd^V13HMTy)30KN~Yz!~v^Ed@ZFLeIc5 zAQ*DJxC}P-WZy9h+JZs6It8{+8N{-X;1vLNaxultO@%U6Cp-x8+2~uB&&?*0iBc=q ziKG=)R}0p}g;61=EDljgw-q)VaxN|zM*6H0MWt+|V6AfNtZuL5N%>ysqX1aUN*q&q-&?~zsD2;aNKLnp zV4hs3myO3AelICIKodP?V^KU&sGyi>zz3W10QcLl@jnc>Po+jM?lFY@1 zorDkL6fG1k!Er2)&GnRWKzhrh|M4-w)TpOI_rfgvmEE${xi-$EI7u*dPG{1Qn?`ga42zGLtf~)oY91}S0a){ zTOAEvIH<&;nv9W;wj&@aQlo;fJQ9+U{tuKu=DOpXmVqEV*lmfJWPcqfbl*MelyFx! zw@wv0tw!66tpPnc`?5SNc%akA&;;TT^P7H`&w(Kg3~S!nyG{&RmlCCuK+IBC!BF|z zt#H2VN(wDaNtF;eC@&tm#Yt+m0y%NstHy75oo;Xmzm{?5`>Q3?LcdAfWNCocBf{Z^ z1G9je@}A@bV-IKETF+@5!}eSH2wGP>HGk2;;o*SkJ1j@Ix;jQLlLD#K$=_1_Ih~da z4y%3!ufH1-jz)xq0VFyKf4^Sgt}TdPQu+#Ib#Yfo7fnZa)?#8NClcii!3{AkKv;G& zs;Cx>n4sG!v*{ou#CV;EK;76H;i4yvC~rRU&RW}d`hf^|GPdfN#lha*7cEi}PN3p> zoh)&>@~ACpKrd#rVRGWgczE1nxCe>4x!q=PIza!ov*g}q4%X714{ImNFHO;0Woa#Hy z?2=sj%}uht8*scSYiMt1Yg?-xgnP#QFo z&yMO*!Xts#AUrZKT7cgadXsj|u}chDn&O3@o|FE?sHQpl!PkJp`10m3YiseCb*2vu zsUh8iddA8~eVC@%--=_AsOXSUw(oz7S`fo?Te~WMr90dQ%@1=X2QJzX-x2@2r&D;7T`_B}bH&&#` zKZUAfB&yb@eHUkEUwl9qM2kUuqcxR`u8&nRkc{a;=5Lz2v>F{Y%go#yilsvMIL8;T zWM6XZ_R<`thyn&#)a>70c>0I}D3}1cj&=Dj#a-(K>i&QGC41y@rpaa2EYHAC8R=>V zx1Qsj6$vLzb#&(N6Wc>my$05r=3$U+*INAZj)MmmRDuOFpV6DvY5cng{oj%Ifs8cE z!VymS4E;D;@9N0XXtiTw>S*O2T+f2AHCa?k=0&9gFt`j?kERUq&h?mC>#Ebfyypy1 z<i3qwpYYDY zTB4S_ru0rs@tO=+!c3QP1W*QxshNlaAtLP>sYNrSUDGqudU#KpBXfT3$}TQbE^h4` zdTv${GU1d}#%%VLW^|K5FAD)PdDwy8YIvkNvD-NB%`XFs*;2xW_sK(n*|@lK<2B!E zYHDmcknAc4Fgy7DJ!_o>)7Xn}U?fG?AwHx#AiEX<>TOiVTx ziafxs%+897(d%&Yiy`h+0l*o9JVRVcikLOhZc6PO%j+12ozAy4xKLT{2b4ZO&%)v8 zXrNOS2!CKJo83=)aZpkL=z-LPgnFR94K%U>wu-Zi4@hBOUS6($A=`7;&cpMyE}>U~ z=>GkKk3tHV5J+Q;b_)7~;`31@P+{zt7#(Z`VFF(3msU&}aBtWTOK+=(+CBDuN4KbO z6UDr)OT@}VvOpng^cLl@uXK|&a7u;3Cha%=sFr^5W3l9fE-d=_K+}3H&Bn)vDkUHi5=c2}#KXQi~}#wPTc^lm;?~(Ko%kvjRF!X)NJ2D*~&f8 zX5Tc4ro7jT9okMVLm%t_(02gRMcmP8vfq9wxc7i@5NLZd&3l!N0_y|fdHiA5pz;mi z(g-}o4Vh9wAFrLzeWmfAbVSFtpyl9rHd7Z=6O*EUBF?{sqTJh$!S_qVITkSrHhDJz z?dMxaVQLF=UhiFIW&KJQIZw09TyfgrEXDfWFU$rSag-)9xe03WN^J!cHMaM@#2)rU zr&?Jx1A$J9)e8Qw;k!A<8imRUxQBusA$1_H$ zFsY=A)Hh11r~C7=QL__fq#jW}+Np;^6-g45RJUk8e6|c8m_F_Lo>2RZ>6iA5#~@qp z70Y!_&yZpm)q4&L|8Rw*-%1*C-}(atekK>}|5bywt17wo=k=B)RSBI`As429GpCN+J;}K|OEburw^M zN1-X8oQgsYyVw4<_nz)&QOmAU2H9mnVLLpTrJv#*((a5BA*QJ4B}g?RlIaa|1`H1m zgJ^Ovo;w8(&*SqWX#Cs=r|;@1r`tjLESW?T8Wj~JHfi0^{SGlvJZ~~0A_6owKkbR~ z`C;nD0!Qy7Kw3nFg?)56(bCh)VWtTnIR(>BqM8^3p7DD{{&yda&^0%dskPyHnkWOb?24=G4$B&3=Pe&$v{!HB# zYTcmQHU|SywY%rZL4Z*G{b<9Ps4egXl*1F*n#gK6E?YO|v5BTbr)H11ht33uIU!03oAcPEld9YhiEjH&W~@w zJa;AV#riNFqX!=N*{h!~YG~>EW->G#qaO&LKEZ3xKSeL0$lwk{Dz~Aw6a;bIKiz6| zdJ)3VyZdC9OSqP52}6~uQ>O{ok@7XUaQ+THDx~%KGi3H#-E-wDwu$=3=G#pNsW6Lh zwx-YRe6p@<-4Xo=%y_QKyvj%Hn={EDc$nd>-Ihs)h@R3hFBmRWH)y;se7k7`u=#eQIH^1G6C7C{lL9jTJ4Qcs)$ojvqT;nLzRi_c9~FY*4w6; zYy17~0V*5y?;Xr*0gCSbv-yIZ(sOBvD$)~8=3jLmM!)Mxx}&DL`i}Q*rotOiowr}~ zr9}?3UjY1y7rqyGcm*Ti^SWJ-*pZYHG+S6(KY@A;Q2T;#P7+{VqEdFZxcXENkpKNe z0?76|!>Nd|ACm*!2r3Ha5Ms`QuX1ZJDhWua2&LNW!$IGpH?Z0~;#;1B9R+>Dan(;e ze@xIP(B^gT+^;F{3A#5ZRZk|x+Qk+834{z!1G3)wOsNFEl!(xvrU1cVc6yo{l%0Xi z+GF@DPK^H9Cy)XO<|OQZohX_y&*b%LMX<50(Hf$t^OF<)re#=Ie6+e1H;Ya#DojpA zUFWWCWY#VLWuiUt)r3>8P=IPW(HQOM%RFnI8zhznQG8g6xl7pIj6@;rG&YU}`{6ow zNv>ILy~^BDzH$-E+qBs^vnwHrKGa>Y9Gui$$-DFfQZe_Z))D2vJghfI`d-qRz9A$6 z5*TC%d9}Swy_MaW7IdWE}Rm9FnE@AqC zdQMX%MaG!KMICA(d08#tM5M06Q(l!X2cv`XhHbjdJNb0=?&1pC=I06SmYCy-drdjZ zhbU8RD>q*S!EhraqCvIv5BO;5gGX-1?~U}DJ|p6gHG9gcLpMicj@V((DzZbypZb{B zkA+Ubn^;{xKO7avV@0kQb51Du_(^3+!2hbL4zGtfY4y4ljQ0u=&%B-ask3NIlSatl zD%3WnpDVrUUDz<3?sbnE&9!qWdpyaGC2rDP#dH6$nIx_ z4s4*wVT*hHl#y<4K#lgYB$M*qj|Fc_9*A|Pp^7i>VKDb)IjXbUE)cx{+ zc4USZ{TtMCUa!We(Ucb!e)%xU;PeUc1Qf)vrMKyJ`ibJXK`^C`fqjgTW}Dg**gQ`t`tW||bpJxQwo z#Aih6wx5^$cbTfF90q6%)jME?KMe@7P29EpXrs1yzrtQpgIqIo%|hDD5&nrrQX(og z==OKS_OufF9%mHt-93zHTRpjnFm~EOq!1Z0lM83<#CQh^fz>$I3V)#gW=%LFoiO}o z@#yl{|3tGl1Xs=cXH(O^rSiF-K7GmjB#){}fGQ`YT<-8zP&>0-+Hw11kfN*oj`EW4kp%UhC&|KBF6KL#%cHn9?;q%zd z#Tgup1;Z|P^~a_=iT2`JZ}fY;;Oe`^(z5gJ=QiVJ$@ZO`j*14ehH2F2%LH92pT0PJ zw4+D)F`BC)N@lk#tx2=$k1GowBLt%q^@7h*A|$Q5qyB308weMg^?K&@!CJ{+^mL=y z3;j#MyO!Gi{p#NrB#%7PEgpk!S1aZ(9Wj{HJAd zzov}MfF1-OPc#%1VnBj2+gtR5 zp0rlOCW&0uu+6YA{U8l|)-BAK_AOH5dJ%0|e3_B$^R5`T_sp2?nQvsRN+hDAls`{4 zi#2M=3_Ar@O<*RYeR5s)zsr%-YWJZG^?66@)ZUu!fmAV`vNVjr@8;}TEs;x{V@4XN z2ceBy5?=4Xqc&UriqGgR{9wqcPvP@i_QvWn7_0}`DB_K?qg04q8X<7(7}8CTYWEpk zW>Cs5*qb_xSfpG0xisd>#(jd@+{MoV^7_LfJmt?Z?bh?mhsHqLHk<}X)O2#)8mKaC z-NAX*&$7+7_l(1x2Fw57lic&Y#VQie>SE1gZ3oTw{-1(aG!9OWUBp?-Fo;IIk-G8% zVkw(a?G4OCEL)pZWDPluQoXl!zVt($EZ(mO?36wi(04pAHR%y+1x|gi+S%PjaV!D> zvRR-PfhG|F`i&4isB{N#Sof*`5}-H8du;xU?$(AP5xdXt-YB)eX}Sl+=mAZ_O%HgG z?IymyzFwet@6p-hP)jW1Ci{KGeP0|c4ULqHjI)c2th97s!|40enA(S{DOo@|*Hlu1 zn4cc1ueRSFB$Z6!&=JgUFDp9+(hIREiI!EuLb(5+l6mbNwI(~PP>%jL5*zNB@2gN#q{A{O@Y$4r1Nr63;Kvm2}E>78ejbQtLf|lzb>I#5p_AO0TSUry-p6Y z@w3WdGOlDFT1h!P=76JF{DsjeAqKv)b~jI#uu8L`)Edi@z=Jz~Ah7@fnV zW3WM>^(;0PXZ#0oh%G6P+$YZ#-Ggs#@id~N+4U=DJL4F_pA~Ew8hO=F)l)jgqk~PEbPj_2a8=AupAE zdU|>>^nueG;QR|rYJ_|+c4Sh|V6(<%Hu+u88VlVGoIgGTK{`acq_~*w9(XexXG_&P z9*=DvA07x$J+CH2B_$+uKU&)LhM~#J%QN714FR(Kl~EZ8-whjIzBCMrX$Zs;hy)%W z_FHv{o^c77E_Vc0PJuiIwE8$W$rOM=3GjhZQB(V~BC;Tt=OOHVGQ|==l$VPM`4*59 z1`!xTme9cN@Y+yA@$MEzSb)F77YUw~t2jbm*uKj?R1Ao>X^8J9%oE?=dq=_teXL6g zAS0pd5`JxGD4--nmE&f9AZG`Dq6sy=!xqRjgs&c7F! zHs@@-g=+iLzC@qBl)~8Nrh~1;31znS)|c_c-&1;`SAav?ce%R9d3l=7orySRHs$T9 z>GBvmIy?H_szCRgM`@^P6y3msIJNbUv-4)v=*yhj*z03T=4-e?`P#=C3DkIEv#u3#qwOD&A6=`eGVsb3X;)LDO+k0 zIKQtN$;cteh&$C8ZyMeDw4c)zxtvB1M6GHUI~fJ+|87 zLQjIcxLCn!y#lfzd!7?ZORYZ7PuY)0CNaUSN2#PSx1Q^P9|+t7vKbcnp3bAeG%Dq( z6AJ&+INa2_325!5IUF9jx!p;(S@HUo2DT&0;SNO5?*})BztU+pqq2#PS89VrtBh$84mW7j)O2vCHCZYnD^;ds zXk?tUH6F(OuX=k?lYVDha9w%>H5)6MBXFhI7PByt;L`kZw{=G>icTjB9V8Lyc3I#>n z-CQ8&VDy|h(5ODF39{=OL4{u*aZQBkQ`CmoHH zSs2+9jY!BWkT0h$B=UNj1Qk?Zxb#JAO9UvkdYU^2exLEjTOITn>Ls^9n*WzZmco9hh zu-NZJ`dZ?Ldi#p651tIXrkac6s0_-r@RTx=vuFpT2bG26>zm^?EIc#&mO%>PT4W$0<- zVpl7+xCYrH!P@z`WhBA?5%?*qJce)FY#&?D7lnvfpi5S9(ry0Qokr+6DW;`Wx1Pmx zsUE}I%;1sfqvTp$9(5qkjh>nBWpY6Z=u4P*FIyhXY$PnQSw+zxr-?mP;4_#&*?qJG zUDG-21xLgpvV7*iF##d)e+q@nXymJg*<0(9ZCsylf}ldwk0 zUW#7oabKypSWoZpnS;iKepD|mN1xVQwpl8^4q1feCe$UV;;b*KIp&t7AROW?_rO~? zE{&46**td636D7CBL*c5jphoHINf<~At2uQ{FyyDIRPLVi-Yd{G){~Eq=7}!fl>v8 zphiWht|`{H{(%_3K5nxmCGOyr;e8F?Z|u>ZcRO)j>F1k4Ku#}}iC~*h+uo2i|GD_a z@4ph?Ef>B?GKhLOkhf zj!gAs>rtyX;+qzy+D7~`BPZDum9H_oN41sBmjACbbi9Cv&&8q?wz{wW)o0Gi^L6bi7xP^ez&6wVx^P5DcL}!ha_nQNW<3D=a7a?k)Rus}I zH_Vbq$Y+#*@m~zQZ$QyC>PzlEhc>hL#$cXbi>IqE-+2M`0}EEj@@4`bnw3wTHA4ufag}V{tq6T>~B2w z&cBt{O=K^$?ElLzt+BY04KC03ZZ_sA-#^Iy%2jl+IW$(cq;W`29~ibi{xS#t>%RPR zOk4MlXRh4uP1bbA&FlVMdr+7%5u8W@rnU2&*0ZVcR^FejGqt5CTxWZ#odpfWMEtoH zWttYY{<2!V50j-Z_lO#Gi zI?&R3u_)v+hyi^x;1doQFFe?3aam@B-;lZ)aGnJ0lZa9oxZOXTi%POXt(YglW1qYe zrEGE74AYM-*}LqBt!eC+n~!@IMyj2diwvkmE}$cm>{v}>l9Q8}7c4C;!O{@iqFpCW z$tfy=F%A;e<@Xy;dExv+N8)jXtJ$P?9USRrGp;`2@P)P*HmEwn zTl!yQ(u;MjfST=GX25;ga7)OlWBL2|9xTYpnba$K>m8x*+I2ArNX1R{R@vP#85;7ciJT zkE(ux9j~A@E?qJlAE0Lhb%=r1uvI@|QvfZE;q?N3w1E+OAQyqG(enbR#9r?X27%S5 zUB2h03gW|;8UBn+*&L|0E3B-n1b(>Y<~v|zD*Sow^z>DbEJxZ$(VsoG@MG*V5Ul0-^68S|#m6Xl@Crgb} zmyV`aNMzjP+O-S|ABss~8pM9Dggy0O|0$~hl1fKYmA(h+xch#;K3MA6TB3R*O_mbNt>@Dxm z?jimEQ1_Nmad!K*X9R*KSb!IIw*+^0cXyZI4grEg2<{#xH77ot=vd zt28ipS1sBg!NQ&#J2M#_!)Q_AHmq|c@75`3;Qh~Iq zuS-2}Boks5bAC$d5BVNVi(F@pEf;1g{>qka(^Kq|q3<)|vGK`!Lp|FWGqUNhNecsK zXQ9GgsLqnC*^_G)P=V^lPdVS&DA7I0M{7!Ngq#OCu@o3_EwsuJ+8Z9EaNETQ& zw|&L*H{dnZpv?=-_jxlY$0D6iSW!orA_#3dve1K)q6`9!7ZemcYJCKoK43R{=6Ez$D^)%%U&*CV z&|B%XG&D6!2GwyM?6gC5abt@jl4nQYEl$%jjeXgNUaO027 z%R$bgjY*c!Pv)c|;5$c|FyKjoBH%W6wO2J5Fc@=)?paiP9cO%XAT0S;@<{9{?=vOz z!~lAHgt0n;nb_)+JV~~2)7zBlNrtWuSi+@!`e7=Xh}ZC+Ri~7h=-Ma^%%x?MjS@&a`yC9)EvcL5 zfBKu$AwF{Govfslm9yOGh`No=>wfP1eY$>aJ$utTR1(ron|{D&J=H`xdPo#gvu#G# znAm408uBt8r(=VMN}&xXA&R2z?hXxMIY)GJgb(JOk&kyb6Q2b9DJkWyjd_#BlZgBZ zQkjRy&fO;AlK3;sp$sho#LN33G?P0{DQg!WSVHB+SG!=)8?th_d2-Zq#;sh9#g^Nh z(k1y6pRaY3*S1pZ0hyUyN$r@*amnk)M$8^hYC@QYscTCtLUIXBS`UrKc$o!!-(Orr zktZnenVFIAw*g$h{qDjdU3W+)=>+R43Wsyjfd|{-XD(ph-YL z;3?e`N^%SW9-F{hKO%(G3S0rmEk8KZ5uOe+9UUF5dYi-c?#^H&xnxE%U@XQe_xt?$ zGw4>ox^n5Q?U?rjXaQTFd(aT)NQn3dR9r&-z+c;7hzXh}U^2ms>uDMfkC^uWw51o% z&471BIyl62sl~k=*pRc_0O-I!yNcf0?8T46r>ywR?nf@*KmeyQ6tPToO45&5V1^2i z6RFFOSM^Zg`9uIhAYq(Tp;4-Afrv>lb|-0KPe+&VqcEN$6yDERv55J06;{Kr@I5gZ zo~*|U32jSlJ0*c%V-@!~)%{fNlGH(IWs-!xl;Z{TDr$ujugI?s8WBeWPy_xGFfGke z`i_x|hNyv;;c6B3)?=nNxl!U_?w2-uuHr5f%9*@bV3|B|81mlarkNj_B6@by!AwX+ z-l@B@fc>t7!QH{k#@UvsbJazed7jPMmOAqx0(A+TBs9#GV9H3rWRXWE+++I3qIRDsB($sRwK;3m1Pmt?XMR7r*AK-QqbhtZYdhx~V zDt&iGZ4s+Nzu(C;CDpi3hXE99-p*~ef2{9z-EH}KWA@m(zhGa=y1q;i!QPX!^TB3z zdbe@Ig`9u$PF9z()N1*0Xm^!}L2_>SqYU1C%GCv)Yiq+NK5FN^Z}q5@BNB8C29#iScNW*JB1-PQMuyyB=9Idm{|=aIx|V!=K2im}Et8;B=7Y|}1fB`p7ueFKj8SI~`l9tHsi zF%gSE?4c)0@jFRmI`pJ)9t9(uTFgQ-uzzu=7*Wib(31tf8%FlEO2sO&DGAZ5!^$CfSf}~w=SM;-zq9VVvRUkt>C82lQfIzx2k|lIf4c3H}m8W8S zchSwwT++MkK~LjsZ$WXm(R{~#kcGMi<$j$`+r%&5d_QLhzCGVASFe0AmIVg~2SOh{ zci2BUe@u&f8^3G~oQ|4tYIBL0+J|D<=Eg@d4a&4_y;S|p0s_*F<23bemZd`6*lZSH zEymh9*!lb_Fc=FQ8gUKP{6v4s53k}Ld=$REe`a}=;=%cL1ad;GPRfjqNkh}Acvc@g zSv0xHHKC${RyF)Xoe)t)JkSFj3iCu1X16ctFOdN897AmUk(yEcgGFm;$-&XoRMf!k zJn~*a|6gtqNP{Yg+L9J{!f9|4$XW&cfylNUP0n`FG_<9VaGE*#$?uriiaL2yJ71s{ zq2it_WIDgP;jAxBW_JOXJtpK=ptr&9=H)IXUkPTXOlb7%Jj6P}KTRS~_ZRla&`W~7 zlfW+d$qBB>uj4q-kB={ox)GqDt8Z>aHdH6KuVk2}L!c&BDB@2)R0tS1v~{4PW{w0R zc|E2%`dK#_kGX`;Bl21t<9cw19^F0ACCpd|w22<^_+33TdC-`JekZvJ?JbqN7|Le5 zaS&hs)HfMAZPaZ&gF>kG&ON%f>3Dftt}~S>h#?Z12Zg^s(nVxw^&a0o(e1Bx4sqzg zZ0=$AS10qXnU!y5w6R|foeqEPlY-EQsayR)P@tAMUu`k@%gHJ+1qPGcRwm; zN!~e~_rj!sjY!l|04c@Bb#K@CgpwS{Pza>WvgNh5J|Owr_|JX_8r%T1A)@ddON(AhUwdUo6p&I>M?zh(HL}3L?NJc@-)%V}s=_c53REw*eS}*@r%5xdD#? zFJ7>ih^`$BJ8$~c_TS`n3rgfl)2rp8=Z_S1?ObwQ{N>p6mn3O;!ky@TTm*+yvpd90XZ;eU}N-sa;U{!$IQ&Z zXv1UnKyqsTd6m>2Bw(8&a8VHRTN#6C5oS_Of(^YMLA<)huCIhdS<}#JILY*satv-@ z;Rn@3h^+m}c055Nw7BUVeqs3ScA@Cc`%lp4zpLCNN0uDFaY`U(E;0?5NM!Up7ag|c zb2Qc4){!D@(?)5vh1r-bQ0loV=exN=YUZL-qZ-rS#F{?v|M`$;zkP$6T1Rm>y0|n6 z*>p^)#WTL$c!t9AAUJR@1|@(1^_;G)ttY`_eI-?B9oKq zbN^~RncJPwSPVwHS~Aa1UxhrD!_!;$)mkfP9X;yl8*MxU=jI7V+rzEC&}p1=&+HG#ib!|DDu)TH3fixXs8|8HIdDU%6X$-t8E}3HS$#zqkx(7rA(-hfB8Xz7*3HSkautu z^G@gr4a>~mek2l>-ao+W|8lc4^D$kV8g2bN%=Q&K%9Ho>-*U1$PEt6RGBy0PyEwd~ zm61W{5@WAgqhbAjd2V6Ak`en>7WSF%@`VlYLkW15mQwk;olNPji4EvBAWaL6q?m0J&%FO*~d$TRO3SS zg7K5fWE;agyhV1iL02aR?HXpc#TRYc-$ncYY_vDP5O3;y60fO*F5qyUsURlx8&~CD zyQZyK(M;|r+C4)xYJ9WY<&(Jzby7&+r9}`h@;dVz1C*%{Tr>_RNZq2E^UEV zY4?;_nS3HRh-~E|kvVwqk<+oSkwc*TGW^(W`>CZ6rn*JT87Q*OD&Akd8;(X~H!?IN zcc_8OaNok}#cF%J+uv*jruXW@`Fbv~BVS=X9i2r`TEl`Z%=ug7#B|nur{|3H&nG~l!_5-DSXf`4&?E^=62U<|M@!!cr(4EntNIv(16vnOO?tSY-ENj&r^0W90+ zVp1ahZIF8MDoxNmCTW6wOGre~?~5ODjs~d|19hJqyzA9ELKw1w=u6f@XCA|3;yClq z2$CvX9tD!|lCPn{#(vZq0qypmj zUo;m`O1&=;OG$Ftq{c(fh|7h=3=`ahD|Cp~)zP)GtJ^y}H*zs|j4w(^=*lCf!$bh} z8`|Cq2A`b-BXGA|+8kGijJZX|F=Tds-OY3dT&PtEuO;#F)O^wk$s!z_WOn@?eXfe6}XVcV{kSY{`Bf zl3_#8ARe_Epcow*Fv)Wem(%U`h{I#{=p~J${{LUArAmViZ#px4P3D}2PZn(l_N&Fp zDr}`$FtLg(@Lj8hKSOG(*frjbUkBp+m8__)7+1G&x`1Jz-jKw|dRg0phbCGjVXdY% z4VGy1`7n^5 zDxxNa79zr`${&0&+6i-z1cxqOSSToZ#Bj3aIEab<;^gEZtLElyFD(?!k(4pPo>%PD z2xok+5S5Xk3?jd^lWOs0VZ){=L)b+9()|$XWqPTI&kV8=6jT-ClcBk#y2U{NdjyW{ z9-G~YQ1bajj*>DdTlBd|mad1w)v;tQmEX$6xaD;|Hs`+4k(ZpC>9+fK*Vq-yp1{YTMhE={a^*F83XOX>rdoeIp!)K}ep|k1Jj5`h! ze5;VFw;z&jfXDwg6&L%XwqbzwI31i^ z8N8&5o}S!4gj_8g`wgLb8bbZ-8sq3CfWFXNfm`pl;!Py4~!7l6A>Y zDyMkKqQ6x-y}m|MW3XH`E!v?kWujr_0ky{k6$H?@D2M1 z*xMg!>r=Hr0NiZHf5^NS4KQ*VW-@i3KdS4nhH%W%VTw-|u(UgEJDsy5TQYiKE^^qA zSKmjQCRlgymAyPmOUKw+Ex={tnh&>I2${EYM0~kZhi1k0OGRVK#xQ**np-f(q6Iol z_AiNSIOwOUSSK`o$SWrpfCgkVG=L?3l0XCgx8y_rhu=Hi{b`&fmb6Tp zx?vy~^9IeQsY5PjRQ%6#90}OyKU`GD$HzaBlb4S|AeTsE8}I6FFfAMr4qBFY(sHxl z22B1gK$fvY!G?K4Q$Oj~WpFUB1QF$b^f@mp+ToOe!S4J5Eo;K0sLdPKH_2VKat`&wDGOfP z%vMG;&5yJ&@ccl}uLTV5ScqvSq&_(K=SZ~x;U1zS1CU=__gLp4P1=Oa@K0}D)@aZA z3?{UC1Fl0u@=FU*hjC|(K6jdZZUfdskw$3QTA6g?+x%#&I>W(GWCsh7=}zPI;>;Wl zhBB3sk`fd9sUJ<+l^07cb9Q+dIPw;Q!+s4)zo561;MRLA0W4>XI@~{3I#_twz}1E>!=Pt%n#;xNDNMHQZR~3#l3Li5 zMc-}uDptN5|1v`OPn~y>rv%}}KcU{rtzeD)q)8z&wE&vUam)D|ft@*EmDuS4Tm+Lz z^yFwkzn=8xu1CEG_L8_tAZjO1pWVxjv164gJbSr4+jYrb*y83wNtFDIu#%%YXWoDR z^C(Lke21*7+OG&gr~Po_@3%8Xk);~dK?|JP^qAf*KsWb^9vT_~s(q7|@@0`Fex#F5z5O$4?8oB|p zkW-emU{h&rV{;Tor38y@0+^J6(Hx%i52E-pN_A934j-5CWpNXamPufWX!;%2I?BzC z$2e6y9Ez%@#G?kXgwJFq?G7-gy4+TloV4q7xF?Ia2HL8qQ=hofUZbvB9={nf9;XoS ziTn)8lH|RAEwm%(rFjauzwdQqO*0XK`vWyM&Sxu6J?scYjlfY79CVDpdJ#%oU66eT z>v&p1`31psqD_HVWYkycD5Z#v4l{aR5Uz9Gq5tZg)+g)lmyJ7|3?u8`#qk?5GBV0r z&Lj;Di5o@IjK*}wVflwZ{B-c@?!#;qSzG4QIQU&9kiqlwgTAEn_xE!hH3*UJagc+y zAPTTU0VBOD$O%B3k28B|$a|3Jqk$23l-v;?3b7o(7}neZ;NcC}Bcq3PBg3IF_m{=2 z=FaaSp#OM$^8@8GVmuKo6(650<3Tg=#+b*ot-PJE@<&U1FFQpA4eu`-DGU~(Ue!6)3Re%RV#LLMvHAn?9!EJJp1bsn{NC2}JoQ0*?90QkoY&Ew zz>EJ+1n({LA^|wcrZ&p_?J_u8^=2WtGCbwCrU~)+VhER(CLRtB4nc~Gq;Ywe==svU z3BmwAg@K7F&)BbU`F7Mr7-;S=c1w_kH_0>Hru6NU>XJbq4~dh z&tgxN=^!MJJ!NBotN?7g@1Tiq!3Omjassq8JRXl4pCsVqeLkz1bo3EmBCii-*SEG_ z8Du&3KU^;(p&Wx43h#d=aJ`b+Kp~(y(+7mD;PoFI=XUT^Z{eSq#t8`tSDAkyBfs;y zbAlC?%jEUCIWf4oyodiJI?Qsh%De|sRT|LP#0etoma|FlZ81DBxbe302xuLFZ_@(C z>j(;ZcezLyC29cdx&!(pQ@obhhW~#d7Q}{CsX0|+<*ID*ZaI7JFx5ey2S#%3on#YA zoH}*lhzc~cWsW-iaVeGGdes`gh9KqSIem3@)3(ks3hT;q@~E!2ha3R$&2bqc^PSDG zc^$|8Yc{0}y(vaEsr^ZOuY?4RpN_6h>$eX|!~K*1gdDxD)ol#j<25r1JvEQ91p5`~>7rNP{k-nkivp+Y%Fh6uFM`j+Q~ z3H!@VXxj&L(~L@I|7#K^bzN6apSb<=s7R8Jk{PFmR({C5q*@$SkL+|lSlj*Ug^L}i zvJS~hc{$(Ht+$(zPm@=36Gb${!9Z&0O4{ygw?%T!+a=kw?KAh`7H#8O)PK`@hAqH4r zh)X0{*%-(wbo;)XR}zGda4H6a-v-U=Iw5~ji(zPtvT~m7t@rK(EP&K~c7FbT3pZua z=KB0R6=Y=hCX0d7K}b-Luxy{N6YMMBxQ~K!F}j~G*!S<>fuRJ9*nnIx&ViIm zL&SSPV44Kk0vk`>lkYEw>XCKvx!sV*iYnl?CQ)-aT$5JBJo?1jCro0lOOJolil z>JC(&Ayf;9x0pgw0GHB(JrD|6{Hd`!Q3ezp2D6_>i{blDgEdfvLWmk1w#oEDa4g5P zK*v0a`rCYo@a{gwLfW>kx@l3FWSFCKXVk6lq{;0?(*#3lrN62rP9wZZN#-CKi}T5q z{wf)v*~AQ7>M>EgU38Sdz=DwOAj?J2WEhV7R4 zYe}{7eKY>+Z93gRIuLeak z9`#(=HonMr?SSz3?(W(kZ>8|s{>yy?>hwh6Epl4sf<{7CYF!P6&reZpJFoDl9?Tu0 z#gw55?9NMe8a4s#OiY@1isBG%CW5jlqjO%%jror2zsrjSUamScA}^wd#lae^f(6FX z?{Pr0JOeHZU(!{8(|&5QCt$aGmX8al3II9pD(c@Ay&6DyS~V%iy^F{Wz($=N9fZNR zPkkA^Vz>}JBBI&p442=J4^i6_`hCqgta-@wh66*>>Tsd}9s8 z+LtI!%P|mo(O;9Hvt3C}*3xK_(bCi|%Ym~VncOoMh-wE~^{BQ&fVLnr^lW#$rq1CT z@j6Rrl(Ufi1AO0C!Z;T)qVR8S1+ExG-0uYtE&fB|)ovl}P|S*}W3N}w@t2DS!r65F z7LDtL@_z+tiM(`+(E8HeqkIt5Dxsa;yPT1|e)Zquq`@usC_&V@f;-wKPk7n@KeF z)N&{UD`EFm^H2o6+`a9|4(wHQZQNs%zgR_;V((><=q_ZM3>$LVJ(_Ka?YHKCTy8pA zPN#tN^!{tQ=DK4@$z@L5wy;7PF6-uX`aP_xeH6}W6((dmtspDX`LaaFiOqH@IU@3E z-aPDZpMi4-vcj@_{u(cV=lKN?uCWW#M5cMJpBXU=# zymR&s%Gjca=%QlTDNIKF9O&(h(x`IT=rumbVy8+5WfX(bWpu?~uOIcGrKzH>nTn%U zqf?|%JU}z4Vi{gmevAAk$g5Lc{c7r|WO=_iN~bZ0DocFlkU&)%&C4FgTGWTA9^dpm zE1OY?yMNmAT**9>#}m$YNldhy5M&EweG(E*9{XhCVKJav}OfBF#Dp(V%Q>$7Fv zCD1AwiSBe|w>^5#jUm%+R}-em2)TnKE{2gL?N%T8i9ZSsxgz()+P1aWU8(&N8K*PG zpNDPkgWYDjJI9`X_sYF0^@6$UmbtljRl9yVs|*c;>)LHvV~uyxYXzE}UG?xU{gI74 zQ>8+CGUr|HF>RG6ar?O|v6*X0^Rkc5FgJC)rkZjL)T(x&teDLw`8Eqr@3_o!86^qn z3C`E&{WA*_j?{tG6|__wqS#x9^{z6)32z6`(FoU4vdFh;u�vQ-+{$L1NSf9*r1YG=OsHl;N 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 literal 95276 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 m=lpvdV6?hcJZ<1~<_ap-0^-*?XZ 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

    qob9;#q&AF`sdrl|7-Te|C5IO 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

    I5(+K`r;LmM%DKbaQZKWQ54(@s1 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


    &l8njH~1_ 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 diff --git a/browser-tests/data-table.spec.ts-snapshots/thegridcn-dark-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/thegridcn-dark-table-chromium-linux.png index 69f486bba9d2a8e13c656c4d3e899093794f4acd..d2f3bab715cb89cdabe683a18706f0dfb74b23e6 100644 GIT binary patch literal 137694 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
    vdVQ$I0a$LH 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﯅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

    n_tTv7xuW~yFJ8UQv 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ℜ}q{=RaTA)RH`J<edaqaY|3qk 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%0Aw={w}WO% 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≺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�t1X9nBlVm=9orRM&IC(O=r^V?ch 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 diff --git a/browser-tests/data-table.spec.ts-snapshots/thegridcn-light-table-chromium-linux.png b/browser-tests/data-table.spec.ts-snapshots/thegridcn-light-table-chromium-linux.png index 654e9a84e58bbf3021938606ac41018f2ce8abda..38035e8da64940fa6ade1ebd32a774f321eb600a 100644 GIT binary patch literal 146161 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