From d21ed98da3470b9986c9a028ed70fdf0d6189ab4 Mon Sep 17 00:00:00 2001 From: Damian Pieczynski Date: Fri, 27 Jun 2025 14:15:04 +0200 Subject: [PATCH 1/4] fix(virtual-core): scroll to index doesn't scroll to bottom correctly (#1029) --- .changeset/chilled-falcons-battle.md | 5 ++ .github/workflows/pr.yml | 2 + .gitignore | 5 ++ knip.json | 2 +- package.json | 6 +- packages/react-virtual/e2e/app/index.html | 10 +++ packages/react-virtual/e2e/app/main.tsx | 76 +++++++++++++++++ .../react-virtual/e2e/app/test/scroll.spec.ts | 33 ++++++++ packages/react-virtual/e2e/app/tsconfig.json | 14 ++++ packages/react-virtual/e2e/app/vite.config.ts | 7 ++ packages/react-virtual/package.json | 3 +- packages/react-virtual/playwright.config.ts | 17 ++++ packages/react-virtual/tsconfig.json | 7 +- packages/virtual-core/src/index.ts | 78 +++++++++--------- packages/virtual-core/src/utils.ts | 2 +- pnpm-lock.yaml | 82 ++++++++++++++----- 16 files changed, 283 insertions(+), 66 deletions(-) create mode 100644 .changeset/chilled-falcons-battle.md create mode 100644 packages/react-virtual/e2e/app/index.html create mode 100644 packages/react-virtual/e2e/app/main.tsx create mode 100644 packages/react-virtual/e2e/app/test/scroll.spec.ts create mode 100644 packages/react-virtual/e2e/app/tsconfig.json create mode 100644 packages/react-virtual/e2e/app/vite.config.ts create mode 100644 packages/react-virtual/playwright.config.ts diff --git a/.changeset/chilled-falcons-battle.md b/.changeset/chilled-falcons-battle.md new file mode 100644 index 000000000..1a6f228bb --- /dev/null +++ b/.changeset/chilled-falcons-battle.md @@ -0,0 +1,5 @@ +--- +'@tanstack/virtual-core': patch +--- + +fix(virtual-core): scroll to index doesn't scroll to bottom correctly diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index d8e41189f..9b72a44ba 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -28,6 +28,8 @@ jobs: uses: nrwl/nx-set-shas@v4.3.0 with: main-branch-name: main + - name: Install Playwright browsers + run: pnpm exec playwright install chromium - name: Run Checks run: pnpm run test:pr preview: diff --git a/.gitignore b/.gitignore index cc376bd6c..2a91fb574 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,8 @@ stats.html vite.config.js.timestamp-* vite.config.ts.timestamp-* + +# Playwright test artifacts +test-results/ +playwright-report/ +*.log diff --git a/knip.json b/knip.json index 639c5df88..f3a69e7a2 100644 --- a/knip.json +++ b/knip.json @@ -1,4 +1,4 @@ { "$schema": "https://unpkg.com/knip@5/schema.json", - "ignoreWorkspaces": ["examples/**"] + "ignoreWorkspaces": ["examples/**", "packages/react-virtual/e2e/**"] } diff --git a/package.json b/package.json index ee01fe550..370508b6c 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "clean": "pnpm --filter \"./packages/**\" run clean", "preinstall": "node -e \"if(process.env.CI == 'true') {console.log('Skipping preinstall...'); process.exit(1)}\" || npx -y only-allow pnpm", "test": "pnpm run test:ci", - "test:pr": "nx affected --targets=test:sherif,test:knip,test:eslint,test:lib,test:types,test:build,build", - "test:ci": "nx run-many --targets=test:sherif,test:knip,test:eslint,test:lib,test:types,test:build,build", + "test:pr": "nx affected --targets=test:sherif,test:knip,test:eslint,test:lib,test:e2e,test:types,test:build,build", + "test:ci": "nx run-many --targets=test:sherif,test:knip,test:eslint,test:lib,test:e2e,test:types,test:build,build", "test:eslint": "nx affected --target=test:eslint", "test:format": "pnpm run prettier --check", "test:sherif": "sherif", @@ -20,6 +20,7 @@ "test:lib:dev": "pnpm run test:lib && nx watch --all -- pnpm run test:lib", "test:build": "nx affected --target=test:build --exclude=examples/**", "test:types": "nx affected --target=test:types --exclude=examples/**", + "test:e2e": "nx affected --target=test:e2e --exclude=examples/**", "test:knip": "knip", "build": "nx affected --target=build --exclude=examples/**", "build:all": "nx run-many --target=build --exclude=examples/**", @@ -39,6 +40,7 @@ }, "devDependencies": { "@changesets/cli": "^2.29.4", + "@playwright/test": "^1.53.1", "@svitejs/changesets-changelog-github-compact": "^1.2.0", "@tanstack/config": "^0.18.2", "@testing-library/jest-dom": "^6.6.3", diff --git a/packages/react-virtual/e2e/app/index.html b/packages/react-virtual/e2e/app/index.html new file mode 100644 index 000000000..6d5c94aec --- /dev/null +++ b/packages/react-virtual/e2e/app/index.html @@ -0,0 +1,10 @@ + + + + + + +
+ + + diff --git a/packages/react-virtual/e2e/app/main.tsx b/packages/react-virtual/e2e/app/main.tsx new file mode 100644 index 000000000..e5273bca5 --- /dev/null +++ b/packages/react-virtual/e2e/app/main.tsx @@ -0,0 +1,76 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { useVirtualizer } from '../../src/index' + +function getRandomInt(min: number, max: number) { + return Math.floor(Math.random() * (max - min + 1)) + min +} + +const randomHeight = (() => { + const cache = new Map() + return (id: string) => { + const value = cache.get(id) + if (value !== undefined) { + return value + } + const v = getRandomInt(25, 100) + cache.set(id, v) + return v + } +})() + +const App = () => { + const parentRef = React.useRef(null) + const rowVirtualizer = useVirtualizer({ + count: 1002, + getScrollElement: () => parentRef.current, + estimateSize: () => 50, + debug: true, + }) + + return ( +
+ + +
+
+ {rowVirtualizer.getVirtualItems().map((v) => ( +
+
+ Row {v.index} +
+
+ ))} +
+
+
+ ) +} + +ReactDOM.createRoot(document.getElementById('root')!).render() diff --git a/packages/react-virtual/e2e/app/test/scroll.spec.ts b/packages/react-virtual/e2e/app/test/scroll.spec.ts new file mode 100644 index 000000000..65ba73b3a --- /dev/null +++ b/packages/react-virtual/e2e/app/test/scroll.spec.ts @@ -0,0 +1,33 @@ +import { expect, test } from '@playwright/test' + +const check = () => { + const item = document.querySelector('[data-testid="item-1000"]') + const container = document.querySelector('#scroll-container') + + if (!item || !container) throw new Error('Elements not found') + + const itemRect = item.getBoundingClientRect() + const containerRect = container.getBoundingClientRect() + const scrollTop = container.scrollTop + + const top = itemRect.top + scrollTop - containerRect.top + const botttom = top + itemRect.height + + const containerBottom = scrollTop + container.clientHeight + + return Math.abs(botttom - containerBottom) +} + +test('scrolls to index 1000', async ({ page }) => { + await page.goto('/') + await page.click('#scroll-to-1000') + + // Wait for scroll effect (including retries) + await page.waitForTimeout(1000) + + await expect(page.locator('[data-testid="item-1000"]')).toBeVisible() + + const delta = await page.evaluate(check) + console.log('bootom element detla', delta) + expect(delta).toBeLessThan(1.01) +}) diff --git a/packages/react-virtual/e2e/app/tsconfig.json b/packages/react-virtual/e2e/app/tsconfig.json new file mode 100644 index 000000000..ad08d6c2b --- /dev/null +++ b/packages/react-virtual/e2e/app/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "target": "ESNext", + "moduleResolution": "Bundler", + "module": "ESNext", + "resolveJsonModule": true, + "allowJs": true, + "skipLibCheck": true + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/react-virtual/e2e/app/vite.config.ts b/packages/react-virtual/e2e/app/vite.config.ts new file mode 100644 index 000000000..a498bf932 --- /dev/null +++ b/packages/react-virtual/e2e/app/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +export default defineConfig({ + root: __dirname, + plugins: [react()], +}) diff --git a/packages/react-virtual/package.json b/packages/react-virtual/package.json index fef3ac781..f311b1cac 100644 --- a/packages/react-virtual/package.json +++ b/packages/react-virtual/package.json @@ -29,7 +29,8 @@ "test:lib": "vitest", "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict", - "build": "vite build" + "build": "vite build", + "test:e2e": "playwright test" }, "type": "module", "types": "dist/esm/index.d.ts", diff --git a/packages/react-virtual/playwright.config.ts b/packages/react-virtual/playwright.config.ts new file mode 100644 index 000000000..6e9f9a5fb --- /dev/null +++ b/packages/react-virtual/playwright.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from '@playwright/test' + +const PORT = 5173 +const baseURL = `http://localhost:${PORT}` + +export default defineConfig({ + testDir: './e2e/app/test', + use: { + baseURL, + }, + webServer: { + command: `VITE_SERVER_PORT=${PORT} vite build --config e2e/app/vite.config.ts && VITE_SERVER_PORT=${PORT} vite preview --config e2e/app/vite.config.ts --port ${PORT}`, + url: baseURL, + reuseExistingServer: !process.env.CI, + stdout: 'pipe', + }, +}) diff --git a/packages/react-virtual/tsconfig.json b/packages/react-virtual/tsconfig.json index 3655b9d05..effe33b1b 100644 --- a/packages/react-virtual/tsconfig.json +++ b/packages/react-virtual/tsconfig.json @@ -3,5 +3,10 @@ "compilerOptions": { "jsx": "react" }, - "include": ["src", "eslint.config.js", "vite.config.ts"] + "include": [ + "src", + "eslint.config.js", + "vite.config.ts", + "playwright.config.ts" + ] } diff --git a/packages/virtual-core/src/index.ts b/packages/virtual-core/src/index.ts index fc6449839..b4794e06e 100644 --- a/packages/virtual-core/src/index.ts +++ b/packages/virtual-core/src/index.ts @@ -359,7 +359,6 @@ export class Virtualizer< scrollElement: TScrollElement | null = null targetWindow: (Window & typeof globalThis) | null = null isScrolling = false - private scrollToIndexTimeoutId: number | null = null measurementsCache: Array = [] private itemSizeCache = new Map() private pendingMeasuredCacheIndexes: Array = [] @@ -904,7 +903,7 @@ export class Virtualizer< toOffset -= size } - const maxOffset = this.getTotalSize() - size + const maxOffset = this.getTotalSize() + this.options.scrollMargin - size return Math.max(Math.min(maxOffset, toOffset), 0) } @@ -943,19 +942,10 @@ export class Virtualizer< private isDynamicMode = () => this.elementsCache.size > 0 - private cancelScrollToIndex = () => { - if (this.scrollToIndexTimeoutId !== null && this.targetWindow) { - this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId) - this.scrollToIndexTimeoutId = null - } - } - scrollToOffset = ( toOffset: number, { align = 'start', behavior }: ScrollToOffsetOptions = {}, ) => { - this.cancelScrollToIndex() - if (behavior === 'smooth' && this.isDynamicMode()) { console.warn( 'The `smooth` scroll behavior is not fully supported with dynamic size.', @@ -972,50 +962,62 @@ export class Virtualizer< index: number, { align: initialAlign = 'auto', behavior }: ScrollToIndexOptions = {}, ) => { - index = Math.max(0, Math.min(index, this.options.count - 1)) - - this.cancelScrollToIndex() - if (behavior === 'smooth' && this.isDynamicMode()) { console.warn( 'The `smooth` scroll behavior is not fully supported with dynamic size.', ) } - const offsetAndAlign = this.getOffsetForIndex(index, initialAlign) - if (!offsetAndAlign) return + index = Math.max(0, Math.min(index, this.options.count - 1)) - const [offset, align] = offsetAndAlign + let attempts = 0 + const maxAttempts = 10 - this._scrollToOffset(offset, { adjustments: undefined, behavior }) + const tryScroll = (currentAlign: ScrollAlignment) => { + if (!this.targetWindow) return - if (behavior !== 'smooth' && this.isDynamicMode() && this.targetWindow) { - this.scrollToIndexTimeoutId = this.targetWindow.setTimeout(() => { - this.scrollToIndexTimeoutId = null + const offsetInfo = this.getOffsetForIndex(index, currentAlign) + if (!offsetInfo) { + console.warn('Failed to get offset for index:', index) + return + } + const [offset, align] = offsetInfo + this._scrollToOffset(offset, { adjustments: undefined, behavior }) + + this.targetWindow.requestAnimationFrame(() => { + const currentOffset = this.getScrollOffset() + const afterInfo = this.getOffsetForIndex(index, align) + if (!afterInfo) { + console.warn('Failed to get offset for index:', index) + return + } - const elementInDOM = this.elementsCache.has( - this.options.getItemKey(index), - ) + if (!approxEqual(afterInfo[0], currentOffset)) { + scheduleRetry(align) + } + }) + } - if (elementInDOM) { - const result = this.getOffsetForIndex(index, align) - if (!result) return - const [latestOffset] = result + const scheduleRetry = (align: ScrollAlignment) => { + if (!this.targetWindow) return - const currentScrollOffset = this.getScrollOffset() - if (!approxEqual(latestOffset, currentScrollOffset)) { - this.scrollToIndex(index, { align, behavior }) - } - } else { - this.scrollToIndex(index, { align, behavior }) + attempts++ + if (attempts < maxAttempts) { + if (process.env.NODE_ENV !== 'production' && this.options.debug) { + console.info('Schedule retry', attempts, maxAttempts) } - }) + this.targetWindow.requestAnimationFrame(() => tryScroll(align)) + } else { + console.warn( + `Failed to scroll to index ${index} after ${maxAttempts} attempts.`, + ) + } } + + tryScroll(initialAlign) } scrollBy = (delta: number, { behavior }: ScrollToOffsetOptions = {}) => { - this.cancelScrollToIndex() - if (behavior === 'smooth' && this.isDynamicMode()) { console.warn( 'The `smooth` scroll behavior is not fully supported with dynamic size.', diff --git a/packages/virtual-core/src/utils.ts b/packages/virtual-core/src/utils.ts index 1bb4615c2..c11b3d38c 100644 --- a/packages/virtual-core/src/utils.ts +++ b/packages/virtual-core/src/utils.ts @@ -83,7 +83,7 @@ export function notUndefined(value: T | undefined, msg?: string): T { } } -export const approxEqual = (a: number, b: number) => Math.abs(a - b) <= 1 +export const approxEqual = (a: number, b: number) => Math.abs(a - b) < 1.01 export const debounce = ( targetWindow: Window & typeof globalThis, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1859b3f87..5a1caa0f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@changesets/cli': specifier: ^2.29.4 version: 2.29.4 + '@playwright/test': + specifier: ^1.53.1 + version: 1.53.1 '@svitejs/changesets-changelog-github-compact': specifier: ^1.2.0 version: 1.2.0(encoding@0.1.13) @@ -3181,6 +3184,11 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@playwright/test@1.53.1': + resolution: {integrity: sha512-Z4c23LHV0muZ8hfv4jw6HngPJkbbtZxTkxPNIg7cJcTc9C28N/p2q7g3JZS2SiKBBHJ3uM1dgDye66bB7LEk5w==} + engines: {node: '>=18'} + hasBin: true + '@publint/pack@0.1.2': resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} @@ -5218,6 +5226,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -6533,6 +6546,16 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + playwright-core@1.53.1: + resolution: {integrity: sha512-Z46Oq7tLAyT0lGoFx4DOuB1IA9D1TPj0QkYxpPVUnGDqHHvDpCftu1J2hM2PiWsNMoZh8+LQaarAWcDfPBc6zg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.53.1: + resolution: {integrity: sha512-LJ13YLr/ocweuwxyGf1XNFWIU4M2zUSo149Qbp+A4cpwDjsxRPj7k6H25LBrEHiEwxvRbD8HdwvQmRMSvquhYw==} + engines: {node: '>=18'} + hasBin: true + postcss-loader@8.1.1: resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} engines: {node: '>= 18.12.0'} @@ -7967,12 +7990,12 @@ snapshots: '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.19(@types/node@22.15.29)(less@4.2.0)(sass@1.71.1)(terser@5.29.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.18(postcss@8.4.35) - babel-loader: 9.1.3(@babel/core@7.26.10)(webpack@5.94.0) + babel-loader: 9.1.3(@babel/core@7.26.10)(webpack@5.94.0(esbuild@0.20.1)) babel-plugin-istanbul: 6.1.1 browserslist: 4.25.0 - copy-webpack-plugin: 11.0.0(webpack@5.94.0) + copy-webpack-plugin: 11.0.0(webpack@5.94.0(esbuild@0.20.1)) critters: 0.0.22 - css-loader: 6.10.0(webpack@5.94.0) + css-loader: 6.10.0(webpack@5.94.0(esbuild@0.20.1)) esbuild-wasm: 0.20.1 fast-glob: 3.3.2 http-proxy-middleware: 2.0.8(@types/express@4.17.22) @@ -7981,11 +8004,11 @@ snapshots: jsonc-parser: 3.2.1 karma-source-map-support: 1.4.0 less: 4.2.0 - less-loader: 11.1.0(less@4.2.0)(webpack@5.94.0) - license-webpack-plugin: 4.0.2(webpack@5.94.0) + less-loader: 11.1.0(less@4.2.0)(webpack@5.94.0(esbuild@0.20.1)) + license-webpack-plugin: 4.0.2(webpack@5.94.0(esbuild@0.20.1)) loader-utils: 3.2.1 magic-string: 0.30.8 - mini-css-extract-plugin: 2.8.1(webpack@5.94.0) + mini-css-extract-plugin: 2.8.1(webpack@5.94.0(esbuild@0.20.1)) mrmime: 2.0.0 open: 8.4.2 ora: 5.4.1 @@ -7993,13 +8016,13 @@ snapshots: picomatch: 4.0.1 piscina: 4.4.0 postcss: 8.4.35 - postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0) + postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0(esbuild@0.20.1)) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.71.1 - sass-loader: 14.1.1(sass@1.71.1)(webpack@5.94.0) + sass-loader: 14.1.1(sass@1.71.1)(webpack@5.94.0(esbuild@0.20.1)) semver: 7.6.0 - source-map-loader: 5.0.0(webpack@5.94.0) + source-map-loader: 5.0.0(webpack@5.94.0(esbuild@0.20.1)) source-map-support: 0.5.21 terser: 5.29.1 tree-kill: 1.2.2 @@ -8008,10 +8031,10 @@ snapshots: vite: 5.4.19(@types/node@22.15.29)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) watchpack: 2.4.0 webpack: 5.94.0(esbuild@0.20.1) - webpack-dev-middleware: 6.1.2(webpack@5.94.0) + webpack-dev-middleware: 6.1.2(webpack@5.94.0(esbuild@0.20.1)) webpack-dev-server: 4.15.1(webpack@5.94.0(esbuild@0.20.1)) webpack-merge: 5.10.0 - webpack-subresource-integrity: 5.1.0(webpack@5.94.0) + webpack-subresource-integrity: 5.1.0(webpack@5.94.0(esbuild@0.20.1)) optionalDependencies: esbuild: 0.20.1 ng-packagr: 17.3.0(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.2.2))(tslib@2.8.1)(typescript@5.2.2) @@ -9842,6 +9865,10 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@playwright/test@1.53.1': + dependencies: + playwright: 1.53.1 + '@publint/pack@0.1.2': {} '@react-hookz/web@25.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -11140,7 +11167,7 @@ snapshots: axobject-query@4.1.0: {} - babel-loader@9.1.3(@babel/core@7.26.10)(webpack@5.94.0): + babel-loader@9.1.3(@babel/core@7.26.10)(webpack@5.94.0(esbuild@0.20.1)): dependencies: '@babel/core': 7.26.10 find-cache-dir: 4.0.0 @@ -11497,7 +11524,7 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@11.0.0(webpack@5.94.0): + copy-webpack-plugin@11.0.0(webpack@5.94.0(esbuild@0.20.1)): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -11538,7 +11565,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@6.10.0(webpack@5.94.0): + css-loader@6.10.0(webpack@5.94.0(esbuild@0.20.1)): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 @@ -12219,6 +12246,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -12853,7 +12883,7 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.2 - less-loader@11.1.0(less@4.2.0)(webpack@5.94.0): + less-loader@11.1.0(less@4.2.0)(webpack@5.94.0(esbuild@0.20.1)): dependencies: klona: 2.0.6 less: 4.2.0 @@ -12892,7 +12922,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.94.0): + license-webpack-plugin@4.0.2(webpack@5.94.0(esbuild@0.20.1)): dependencies: webpack-sources: 3.3.0 optionalDependencies: @@ -13090,7 +13120,7 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.8.1(webpack@5.94.0): + mini-css-extract-plugin@2.8.1(webpack@5.94.0(esbuild@0.20.1)): dependencies: schema-utils: 4.3.2 tapable: 2.2.2 @@ -13663,7 +13693,15 @@ snapshots: mlly: 1.7.4 pathe: 2.0.3 - postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0): + playwright-core@1.53.1: {} + + playwright@1.53.1: + dependencies: + playwright-core: 1.53.1 + optionalDependencies: + fsevents: 2.3.2 + + postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0(esbuild@0.20.1)): dependencies: cosmiconfig: 9.0.0(typescript@5.2.2) jiti: 1.21.7 @@ -14013,7 +14051,7 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@14.1.1(sass@1.71.1)(webpack@5.94.0): + sass-loader@14.1.1(sass@1.71.1)(webpack@5.94.0(esbuild@0.20.1)): dependencies: neo-async: 2.6.2 optionalDependencies: @@ -14284,7 +14322,7 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.94.0): + source-map-loader@5.0.0(webpack@5.94.0(esbuild@0.20.1)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 @@ -14923,7 +14961,7 @@ snapshots: schema-utils: 4.3.2 webpack: 5.94.0(esbuild@0.20.1) - webpack-dev-middleware@6.1.2(webpack@5.94.0): + webpack-dev-middleware@6.1.2(webpack@5.94.0(esbuild@0.20.1)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -14981,7 +15019,7 @@ snapshots: webpack-sources@3.3.0: {} - webpack-subresource-integrity@5.1.0(webpack@5.94.0): + webpack-subresource-integrity@5.1.0(webpack@5.94.0(esbuild@0.20.1)): dependencies: typed-assert: 1.0.9 webpack: 5.94.0(esbuild@0.20.1) From 30bcf558bf2daaeb8972204e825d8f064b279ce3 Mon Sep 17 00:00:00 2001 From: Damian Pieczynski Date: Fri, 27 Jun 2025 14:33:31 +0200 Subject: [PATCH 2/4] chore(react-virtual): fix vite e2e build (#1030) --- .changeset/large-zebras-fail.md | 5 +++++ packages/react-virtual/e2e/app/main.tsx | 2 +- packages/react-virtual/e2e/app/vite.config.ts | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .changeset/large-zebras-fail.md diff --git a/.changeset/large-zebras-fail.md b/.changeset/large-zebras-fail.md new file mode 100644 index 000000000..553ca57cd --- /dev/null +++ b/.changeset/large-zebras-fail.md @@ -0,0 +1,5 @@ +--- +'@tanstack/react-virtual': patch +--- + +chore(react-virtual): fix vite e2e build diff --git a/packages/react-virtual/e2e/app/main.tsx b/packages/react-virtual/e2e/app/main.tsx index e5273bca5..e99be4b33 100644 --- a/packages/react-virtual/e2e/app/main.tsx +++ b/packages/react-virtual/e2e/app/main.tsx @@ -1,6 +1,6 @@ import React from 'react' import ReactDOM from 'react-dom/client' -import { useVirtualizer } from '../../src/index' +import { useVirtualizer } from '@tanstack/react-virtual' function getRandomInt(min: number, max: number) { return Math.floor(Math.random() * (max - min + 1)) + min diff --git a/packages/react-virtual/e2e/app/vite.config.ts b/packages/react-virtual/e2e/app/vite.config.ts index a498bf932..f1479d13e 100644 --- a/packages/react-virtual/e2e/app/vite.config.ts +++ b/packages/react-virtual/e2e/app/vite.config.ts @@ -1,7 +1,17 @@ +import path from 'node:path' import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ root: __dirname, plugins: [react()], + resolve: { + alias: { + '@tanstack/react-virtual': path.resolve(__dirname, '../../src/index'), + '@tanstack/virtual-core': path.resolve( + __dirname, + '../../../virtual-core/src/index', + ), + }, + }, }) From be84c043be7dacc6c984b1d585d665c3c9e68df9 Mon Sep 17 00:00:00 2001 From: Damian Pieczynski Date: Fri, 27 Jun 2025 14:41:40 +0200 Subject: [PATCH 3/4] chore: update release workflow (#1031) --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 35a381e00..16532632a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,6 +28,8 @@ jobs: fetch-depth: 0 - name: Setup Tools uses: tanstack/config/.github/setup@main + - name: Install Playwright browsers + run: pnpm exec playwright install chromium - name: Run Tests run: pnpm run test:ci - name: Run Changesets (version or publish) From b461e78b154aa5704c108ab94f2f587b53bd3d48 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 14:43:49 +0200 Subject: [PATCH 4/4] ci: Version Packages (#1032) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/chilled-falcons-battle.md | 5 - .changeset/large-zebras-fail.md | 5 - examples/angular/dynamic/package.json | 2 +- examples/angular/fixed/package.json | 2 +- examples/angular/infinite-scroll/package.json | 2 +- examples/angular/padding/package.json | 2 +- examples/angular/smooth-scroll/package.json | 2 +- examples/angular/sticky/package.json | 2 +- examples/angular/table/package.json | 2 +- examples/angular/variable/package.json | 2 +- examples/angular/window/package.json | 2 +- examples/lit/dynamic/package.json | 4 +- examples/lit/fixed/package.json | 4 +- examples/react/dynamic/package.json | 2 +- examples/react/fixed/package.json | 2 +- examples/react/infinite-scroll/package.json | 2 +- examples/react/padding/package.json | 2 +- examples/react/scroll-padding/package.json | 2 +- examples/react/smooth-scroll/package.json | 2 +- examples/react/sticky/package.json | 2 +- examples/react/table/package.json | 2 +- examples/react/variable/package.json | 2 +- examples/react/window/package.json | 2 +- examples/svelte/dynamic/package.json | 2 +- examples/svelte/fixed/package.json | 2 +- examples/svelte/infinite-scroll/package.json | 2 +- examples/svelte/smooth-scroll/package.json | 2 +- examples/svelte/sticky/package.json | 2 +- examples/svelte/table/package.json | 2 +- examples/vue/dynamic/package.json | 2 +- examples/vue/fixed/package.json | 2 +- examples/vue/infinite-scroll/package.json | 2 +- examples/vue/padding/package.json | 2 +- examples/vue/scroll-padding/package.json | 2 +- examples/vue/smooth-scroll/package.json | 2 +- examples/vue/sticky/package.json | 2 +- examples/vue/table/package.json | 2 +- examples/vue/variable/package.json | 2 +- packages/angular-virtual/CHANGELOG.md | 7 + packages/angular-virtual/package.json | 2 +- packages/lit-virtual/CHANGELOG.md | 7 + packages/lit-virtual/package.json | 2 +- packages/react-virtual/CHANGELOG.md | 9 ++ packages/react-virtual/package.json | 2 +- packages/solid-virtual/CHANGELOG.md | 7 + packages/solid-virtual/package.json | 2 +- packages/svelte-virtual/CHANGELOG.md | 7 + packages/svelte-virtual/package.json | 2 +- packages/virtual-core/CHANGELOG.md | 6 + packages/virtual-core/package.json | 2 +- packages/vue-virtual/CHANGELOG.md | 7 + packages/vue-virtual/package.json | 2 +- pnpm-lock.yaml | 120 +++++++++--------- 53 files changed, 155 insertions(+), 115 deletions(-) delete mode 100644 .changeset/chilled-falcons-battle.md delete mode 100644 .changeset/large-zebras-fail.md diff --git a/.changeset/chilled-falcons-battle.md b/.changeset/chilled-falcons-battle.md deleted file mode 100644 index 1a6f228bb..000000000 --- a/.changeset/chilled-falcons-battle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/virtual-core': patch ---- - -fix(virtual-core): scroll to index doesn't scroll to bottom correctly diff --git a/.changeset/large-zebras-fail.md b/.changeset/large-zebras-fail.md deleted file mode 100644 index 553ca57cd..000000000 --- a/.changeset/large-zebras-fail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/react-virtual': patch ---- - -chore(react-virtual): fix vite e2e build diff --git a/examples/angular/dynamic/package.json b/examples/angular/dynamic/package.json index 998300cd6..df5dcfed4 100644 --- a/examples/angular/dynamic/package.json +++ b/examples/angular/dynamic/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", "@faker-js/faker": "^8.4.1", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/fixed/package.json b/examples/angular/fixed/package.json index 28a3f8d5e..36ff8ee9c 100644 --- a/examples/angular/fixed/package.json +++ b/examples/angular/fixed/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^17.3.12", "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/infinite-scroll/package.json b/examples/angular/infinite-scroll/package.json index 3369df4e0..5440c2dff 100644 --- a/examples/angular/infinite-scroll/package.json +++ b/examples/angular/infinite-scroll/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", "@tanstack/angular-query-experimental": "5.80.7", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/padding/package.json b/examples/angular/padding/package.json index 5b440d8b1..c36a82d46 100644 --- a/examples/angular/padding/package.json +++ b/examples/angular/padding/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^17.3.12", "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/smooth-scroll/package.json b/examples/angular/smooth-scroll/package.json index b47b123ed..fc9eb3b34 100644 --- a/examples/angular/smooth-scroll/package.json +++ b/examples/angular/smooth-scroll/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^17.3.12", "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/sticky/package.json b/examples/angular/sticky/package.json index 9ce425680..d63f060d0 100644 --- a/examples/angular/sticky/package.json +++ b/examples/angular/sticky/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", "@faker-js/faker": "^8.4.1", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/table/package.json b/examples/angular/table/package.json index 9529c176c..bae19a419 100644 --- a/examples/angular/table/package.json +++ b/examples/angular/table/package.json @@ -19,7 +19,7 @@ "@angular/router": "^17.3.12", "@faker-js/faker": "^8.4.1", "@tanstack/angular-table": "8.21.3", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/variable/package.json b/examples/angular/variable/package.json index 6a5527e4e..5a904d618 100644 --- a/examples/angular/variable/package.json +++ b/examples/angular/variable/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^17.3.12", "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/angular/window/package.json b/examples/angular/window/package.json index 119bf4dc3..3925d15df 100644 --- a/examples/angular/window/package.json +++ b/examples/angular/window/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^17.3.12", "@angular/platform-browser-dynamic": "^17.3.12", "@angular/router": "^17.3.12", - "@tanstack/angular-virtual": "^3.13.11", + "@tanstack/angular-virtual": "^3.13.12", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.1" diff --git a/examples/lit/dynamic/package.json b/examples/lit/dynamic/package.json index 587bab405..268e1f4b5 100644 --- a/examples/lit/dynamic/package.json +++ b/examples/lit/dynamic/package.json @@ -9,8 +9,8 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/lit-virtual": "^3.13.11", - "@tanstack/virtual-core": "^3.13.11", + "@tanstack/lit-virtual": "^3.13.12", + "@tanstack/virtual-core": "^3.13.12", "lit": "^3.3.0" }, "devDependencies": { diff --git a/examples/lit/fixed/package.json b/examples/lit/fixed/package.json index 32c252c76..21655cab2 100644 --- a/examples/lit/fixed/package.json +++ b/examples/lit/fixed/package.json @@ -9,8 +9,8 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/lit-virtual": "^3.13.11", - "@tanstack/virtual-core": "^3.13.11", + "@tanstack/lit-virtual": "^3.13.12", + "@tanstack/virtual-core": "^3.13.12", "lit": "^3.3.0" }, "devDependencies": { diff --git a/examples/react/dynamic/package.json b/examples/react/dynamic/package.json index 003814c39..83ac0a396 100644 --- a/examples/react/dynamic/package.json +++ b/examples/react/dynamic/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/fixed/package.json b/examples/react/fixed/package.json index abd21541c..9b2f02aa7 100644 --- a/examples/react/fixed/package.json +++ b/examples/react/fixed/package.json @@ -8,7 +8,7 @@ "serve": "vite preview" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/infinite-scroll/package.json b/examples/react/infinite-scroll/package.json index 7e7d2ef23..d52035f64 100644 --- a/examples/react/infinite-scroll/package.json +++ b/examples/react/infinite-scroll/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@tanstack/react-query": "^5.80.7", - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/padding/package.json b/examples/react/padding/package.json index 96c8e628d..ac6851cee 100644 --- a/examples/react/padding/package.json +++ b/examples/react/padding/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/scroll-padding/package.json b/examples/react/scroll-padding/package.json index 6a9148f6a..fa36ebfc0 100644 --- a/examples/react/scroll-padding/package.json +++ b/examples/react/scroll-padding/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@react-hookz/web": "^25.1.1", - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/smooth-scroll/package.json b/examples/react/smooth-scroll/package.json index c6e50e9de..446fc813c 100644 --- a/examples/react/smooth-scroll/package.json +++ b/examples/react/smooth-scroll/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/sticky/package.json b/examples/react/sticky/package.json index 1cf073027..50706ad7c 100644 --- a/examples/react/sticky/package.json +++ b/examples/react/sticky/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/examples/react/table/package.json b/examples/react/table/package.json index 1f040c9fc..51f48079f 100644 --- a/examples/react/table/package.json +++ b/examples/react/table/package.json @@ -11,7 +11,7 @@ "dependencies": { "@faker-js/faker": "^8.4.1", "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/variable/package.json b/examples/react/variable/package.json index 2acd9d508..f758c579c 100644 --- a/examples/react/variable/package.json +++ b/examples/react/variable/package.json @@ -9,7 +9,7 @@ "start": "vite" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/react/window/package.json b/examples/react/window/package.json index df21c1892..eb74bac54 100644 --- a/examples/react/window/package.json +++ b/examples/react/window/package.json @@ -8,7 +8,7 @@ "serve": "vite preview" }, "dependencies": { - "@tanstack/react-virtual": "^3.13.11", + "@tanstack/react-virtual": "^3.13.12", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/examples/svelte/dynamic/package.json b/examples/svelte/dynamic/package.json index e4b32325e..2c38cd71e 100644 --- a/examples/svelte/dynamic/package.json +++ b/examples/svelte/dynamic/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/svelte-virtual": "^3.13.11" + "@tanstack/svelte-virtual": "^3.13.12" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/fixed/package.json b/examples/svelte/fixed/package.json index 24c1be7c6..a893fe447 100644 --- a/examples/svelte/fixed/package.json +++ b/examples/svelte/fixed/package.json @@ -9,7 +9,7 @@ "check": "svelte-check --tsconfig ./tsconfig.json" }, "dependencies": { - "@tanstack/svelte-virtual": "^3.13.11" + "@tanstack/svelte-virtual": "^3.13.12" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/infinite-scroll/package.json b/examples/svelte/infinite-scroll/package.json index 59ae7851a..fb2607d19 100644 --- a/examples/svelte/infinite-scroll/package.json +++ b/examples/svelte/infinite-scroll/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@tanstack/svelte-query": "^5.80.7", - "@tanstack/svelte-virtual": "^3.13.11" + "@tanstack/svelte-virtual": "^3.13.12" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/smooth-scroll/package.json b/examples/svelte/smooth-scroll/package.json index 515e00644..50d20d2b5 100644 --- a/examples/svelte/smooth-scroll/package.json +++ b/examples/svelte/smooth-scroll/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/svelte-virtual": "^3.13.11" + "@tanstack/svelte-virtual": "^3.13.12" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/svelte/sticky/package.json b/examples/svelte/sticky/package.json index 1fa3be225..032404252 100644 --- a/examples/svelte/sticky/package.json +++ b/examples/svelte/sticky/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/svelte-virtual": "^3.13.11", + "@tanstack/svelte-virtual": "^3.13.12", "lodash": "^4.17.21" }, "devDependencies": { diff --git a/examples/svelte/table/package.json b/examples/svelte/table/package.json index 21dcb8103..692c850bb 100644 --- a/examples/svelte/table/package.json +++ b/examples/svelte/table/package.json @@ -11,7 +11,7 @@ "dependencies": { "@faker-js/faker": "^8.4.1", "@tanstack/svelte-table": "^8.21.3", - "@tanstack/svelte-virtual": "^3.13.11" + "@tanstack/svelte-virtual": "^3.13.12" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/vue/dynamic/package.json b/examples/vue/dynamic/package.json index fee4f48d5..cd017bdf9 100644 --- a/examples/vue/dynamic/package.json +++ b/examples/vue/dynamic/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/fixed/package.json b/examples/vue/fixed/package.json index 20c61d47d..b11ee85b2 100644 --- a/examples/vue/fixed/package.json +++ b/examples/vue/fixed/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/infinite-scroll/package.json b/examples/vue/infinite-scroll/package.json index 5a8082f97..e32d32a42 100644 --- a/examples/vue/infinite-scroll/package.json +++ b/examples/vue/infinite-scroll/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@tanstack/vue-query": "^5.80.7", - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/padding/package.json b/examples/vue/padding/package.json index be46b4f75..f8183738c 100644 --- a/examples/vue/padding/package.json +++ b/examples/vue/padding/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/scroll-padding/package.json b/examples/vue/scroll-padding/package.json index 9fa9e9949..c195c4983 100644 --- a/examples/vue/scroll-padding/package.json +++ b/examples/vue/scroll-padding/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "@vueuse/core": "^12.8.2", "vue": "^3.5.16" }, diff --git a/examples/vue/smooth-scroll/package.json b/examples/vue/smooth-scroll/package.json index 006ca1c48..be226253a 100644 --- a/examples/vue/smooth-scroll/package.json +++ b/examples/vue/smooth-scroll/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/sticky/package.json b/examples/vue/sticky/package.json index 821ab6991..73b849d5b 100644 --- a/examples/vue/sticky/package.json +++ b/examples/vue/sticky/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "@faker-js/faker": "^8.4.1", - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "lodash": "^4.17.21", "vue": "^3.5.16" }, diff --git a/examples/vue/table/package.json b/examples/vue/table/package.json index fa82e7a24..5248ffe20 100644 --- a/examples/vue/table/package.json +++ b/examples/vue/table/package.json @@ -10,7 +10,7 @@ "dependencies": { "@faker-js/faker": "^8.4.1", "@tanstack/vue-table": "^8.21.3", - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "vue": "^3.5.16" }, "devDependencies": { diff --git a/examples/vue/variable/package.json b/examples/vue/variable/package.json index 81f7faf5e..9a1ee2b68 100644 --- a/examples/vue/variable/package.json +++ b/examples/vue/variable/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-virtual": "^3.13.11", + "@tanstack/vue-virtual": "^3.13.12", "vue": "^3.5.16" }, "devDependencies": { diff --git a/packages/angular-virtual/CHANGELOG.md b/packages/angular-virtual/CHANGELOG.md index f1bf7d7da..349888a98 100644 --- a/packages/angular-virtual/CHANGELOG.md +++ b/packages/angular-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/angular-virtual +## 3.13.12 + +### Patch Changes + +- Updated dependencies [[`d21ed98`](https://github.com/TanStack/virtual/commit/d21ed98da3470b9986c9a028ed70fdf0d6189ab4)]: + - @tanstack/virtual-core@3.13.12 + ## 3.13.11 ### Patch Changes diff --git a/packages/angular-virtual/package.json b/packages/angular-virtual/package.json index 3a1ceaba4..6574fdff3 100644 --- a/packages/angular-virtual/package.json +++ b/packages/angular-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/angular-virtual", - "version": "3.13.11", + "version": "3.13.12", "description": "Headless UI for virtualizing scrollable elements in Angular", "author": "Garrett Darnell", "license": "MIT", diff --git a/packages/lit-virtual/CHANGELOG.md b/packages/lit-virtual/CHANGELOG.md index 2f76a109c..be7e68988 100644 --- a/packages/lit-virtual/CHANGELOG.md +++ b/packages/lit-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/lit-virtual +## 3.13.12 + +### Patch Changes + +- Updated dependencies [[`d21ed98`](https://github.com/TanStack/virtual/commit/d21ed98da3470b9986c9a028ed70fdf0d6189ab4)]: + - @tanstack/virtual-core@3.13.12 + ## 3.13.11 ### Patch Changes diff --git a/packages/lit-virtual/package.json b/packages/lit-virtual/package.json index 4abf17894..aeb07a9c7 100644 --- a/packages/lit-virtual/package.json +++ b/packages/lit-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/lit-virtual", - "version": "3.13.11", + "version": "3.13.12", "description": "Headless UI for virtualizing scrollable elements in Lit", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/react-virtual/CHANGELOG.md b/packages/react-virtual/CHANGELOG.md index 61357397b..d70879c81 100644 --- a/packages/react-virtual/CHANGELOG.md +++ b/packages/react-virtual/CHANGELOG.md @@ -1,5 +1,14 @@ # @tanstack/react-virtual +## 3.13.12 + +### Patch Changes + +- chore(react-virtual): fix vite e2e build ([#1030](https://github.com/TanStack/virtual/pull/1030)) + +- Updated dependencies [[`d21ed98`](https://github.com/TanStack/virtual/commit/d21ed98da3470b9986c9a028ed70fdf0d6189ab4)]: + - @tanstack/virtual-core@3.13.12 + ## 3.13.11 ### Patch Changes diff --git a/packages/react-virtual/package.json b/packages/react-virtual/package.json index f311b1cac..4182103a8 100644 --- a/packages/react-virtual/package.json +++ b/packages/react-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-virtual", - "version": "3.13.11", + "version": "3.13.12", "description": "Headless UI for virtualizing scrollable elements in React", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/solid-virtual/CHANGELOG.md b/packages/solid-virtual/CHANGELOG.md index 056ec4085..9ac36931e 100644 --- a/packages/solid-virtual/CHANGELOG.md +++ b/packages/solid-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/solid-virtual +## 3.13.12 + +### Patch Changes + +- Updated dependencies [[`d21ed98`](https://github.com/TanStack/virtual/commit/d21ed98da3470b9986c9a028ed70fdf0d6189ab4)]: + - @tanstack/virtual-core@3.13.12 + ## 3.13.11 ### Patch Changes diff --git a/packages/solid-virtual/package.json b/packages/solid-virtual/package.json index c73e14bd2..ecdc1f9cf 100644 --- a/packages/solid-virtual/package.json +++ b/packages/solid-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-virtual", - "version": "3.13.11", + "version": "3.13.12", "description": "Headless UI for virtualizing scrollable elements in Solid", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/svelte-virtual/CHANGELOG.md b/packages/svelte-virtual/CHANGELOG.md index 9f4bb7aa2..871e04d86 100644 --- a/packages/svelte-virtual/CHANGELOG.md +++ b/packages/svelte-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/svelte-virtual +## 3.13.12 + +### Patch Changes + +- Updated dependencies [[`d21ed98`](https://github.com/TanStack/virtual/commit/d21ed98da3470b9986c9a028ed70fdf0d6189ab4)]: + - @tanstack/virtual-core@3.13.12 + ## 3.13.11 ### Patch Changes diff --git a/packages/svelte-virtual/package.json b/packages/svelte-virtual/package.json index e24b77f13..a04091f73 100644 --- a/packages/svelte-virtual/package.json +++ b/packages/svelte-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-virtual", - "version": "3.13.11", + "version": "3.13.12", "description": "Headless UI for virtualizing scrollable elements in Svelte", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/virtual-core/CHANGELOG.md b/packages/virtual-core/CHANGELOG.md index af985eaea..f86daed0b 100644 --- a/packages/virtual-core/CHANGELOG.md +++ b/packages/virtual-core/CHANGELOG.md @@ -1,5 +1,11 @@ # @tanstack/virtual-core +## 3.13.12 + +### Patch Changes + +- fix(virtual-core): scroll to index doesn't scroll to bottom correctly ([#1029](https://github.com/TanStack/virtual/pull/1029)) + ## 3.13.11 ### Patch Changes diff --git a/packages/virtual-core/package.json b/packages/virtual-core/package.json index 99250ffec..6e32738e2 100644 --- a/packages/virtual-core/package.json +++ b/packages/virtual-core/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/virtual-core", - "version": "3.13.11", + "version": "3.13.12", "description": "Headless UI for virtualizing scrollable elements in TS/JS + Frameworks", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/vue-virtual/CHANGELOG.md b/packages/vue-virtual/CHANGELOG.md index 19b986133..6eeec1fa7 100644 --- a/packages/vue-virtual/CHANGELOG.md +++ b/packages/vue-virtual/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/vue-virtual +## 3.13.12 + +### Patch Changes + +- Updated dependencies [[`d21ed98`](https://github.com/TanStack/virtual/commit/d21ed98da3470b9986c9a028ed70fdf0d6189ab4)]: + - @tanstack/virtual-core@3.13.12 + ## 3.13.11 ### Patch Changes diff --git a/packages/vue-virtual/package.json b/packages/vue-virtual/package.json index 4a6ca31a9..c7cc7ec0a 100644 --- a/packages/vue-virtual/package.json +++ b/packages/vue-virtual/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/vue-virtual", - "version": "3.13.11", + "version": "3.13.12", "description": "Headless UI for virtualizing scrollable elements in Vue", "author": "Tanner Linsley", "license": "MIT", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a1caa0f1..bd8e18643 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,7 +93,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -145,7 +145,7 @@ importers: specifier: ^17.3.12 version: 17.3.12(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -200,7 +200,7 @@ importers: specifier: 5.80.7 version: 5.80.7(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)) '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -252,7 +252,7 @@ importers: specifier: ^17.3.12 version: 17.3.12(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -304,7 +304,7 @@ importers: specifier: ^17.3.12 version: 17.3.12(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -359,7 +359,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -417,7 +417,7 @@ importers: specifier: 8.21.3 version: 8.21.3(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)) '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -469,7 +469,7 @@ importers: specifier: ^17.3.12 version: 17.3.12(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -521,7 +521,7 @@ importers: specifier: ^17.3.12 version: 17.3.12(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@17.3.12(@angular/animations@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@tanstack/angular-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/angular-virtual rxjs: specifier: ^7.8.2 @@ -552,10 +552,10 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/lit-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/lit-virtual '@tanstack/virtual-core': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/virtual-core lit: specifier: ^3.3.0 @@ -577,10 +577,10 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/lit-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/lit-virtual '@tanstack/virtual-core': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/virtual-core lit: specifier: ^3.3.0 @@ -602,7 +602,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -633,7 +633,7 @@ importers: examples/react/fixed: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -667,7 +667,7 @@ importers: specifier: ^5.80.7 version: 5.80.7(react@18.3.1) '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -692,7 +692,7 @@ importers: examples/react/padding: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -720,7 +720,7 @@ importers: specifier: ^25.1.1 version: 25.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -745,7 +745,7 @@ importers: examples/react/smooth-scroll: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -773,7 +773,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual lodash: specifier: ^4.17.21 @@ -810,7 +810,7 @@ importers: specifier: ^8.21.3 version: 8.21.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -835,7 +835,7 @@ importers: examples/react/variable: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -860,7 +860,7 @@ importers: examples/react/window: dependencies: '@tanstack/react-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/react-virtual react: specifier: ^18.3.1 @@ -894,7 +894,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/svelte-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -922,7 +922,7 @@ importers: examples/svelte/fixed: dependencies: '@tanstack/svelte-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -953,7 +953,7 @@ importers: specifier: ^5.80.7 version: 5.80.7(svelte@4.2.20) '@tanstack/svelte-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -984,7 +984,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/svelte-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -1015,7 +1015,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/svelte-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/svelte-virtual lodash: specifier: ^4.17.21 @@ -1052,7 +1052,7 @@ importers: specifier: ^8.21.3 version: 8.21.3(svelte@4.2.20) '@tanstack/svelte-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/svelte-virtual devDependencies: '@sveltejs/vite-plugin-svelte': @@ -1083,7 +1083,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1108,7 +1108,7 @@ importers: examples/vue/fixed: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1136,7 +1136,7 @@ importers: specifier: ^5.80.7 version: 5.80.7(vue@3.5.16(typescript@5.2.2)) '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1161,7 +1161,7 @@ importers: examples/vue/padding: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1186,7 +1186,7 @@ importers: examples/vue/scroll-padding: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual '@vueuse/core': specifier: ^12.8.2 @@ -1214,7 +1214,7 @@ importers: examples/vue/smooth-scroll: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1242,7 +1242,7 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual lodash: specifier: ^4.17.21 @@ -1279,7 +1279,7 @@ importers: specifier: ^8.21.3 version: 8.21.3(vue@3.5.16(typescript@5.2.2)) '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -1304,7 +1304,7 @@ importers: examples/vue/variable: dependencies: '@tanstack/vue-virtual': - specifier: ^3.13.11 + specifier: ^3.13.12 version: link:../../../packages/vue-virtual vue: specifier: ^3.5.16 @@ -7990,12 +7990,12 @@ snapshots: '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.19(@types/node@22.15.29)(less@4.2.0)(sass@1.71.1)(terser@5.29.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.18(postcss@8.4.35) - babel-loader: 9.1.3(@babel/core@7.26.10)(webpack@5.94.0(esbuild@0.20.1)) + babel-loader: 9.1.3(@babel/core@7.26.10)(webpack@5.94.0) babel-plugin-istanbul: 6.1.1 browserslist: 4.25.0 - copy-webpack-plugin: 11.0.0(webpack@5.94.0(esbuild@0.20.1)) + copy-webpack-plugin: 11.0.0(webpack@5.94.0) critters: 0.0.22 - css-loader: 6.10.0(webpack@5.94.0(esbuild@0.20.1)) + css-loader: 6.10.0(webpack@5.94.0) esbuild-wasm: 0.20.1 fast-glob: 3.3.2 http-proxy-middleware: 2.0.8(@types/express@4.17.22) @@ -8004,11 +8004,11 @@ snapshots: jsonc-parser: 3.2.1 karma-source-map-support: 1.4.0 less: 4.2.0 - less-loader: 11.1.0(less@4.2.0)(webpack@5.94.0(esbuild@0.20.1)) - license-webpack-plugin: 4.0.2(webpack@5.94.0(esbuild@0.20.1)) + less-loader: 11.1.0(less@4.2.0)(webpack@5.94.0) + license-webpack-plugin: 4.0.2(webpack@5.94.0) loader-utils: 3.2.1 magic-string: 0.30.8 - mini-css-extract-plugin: 2.8.1(webpack@5.94.0(esbuild@0.20.1)) + mini-css-extract-plugin: 2.8.1(webpack@5.94.0) mrmime: 2.0.0 open: 8.4.2 ora: 5.4.1 @@ -8016,13 +8016,13 @@ snapshots: picomatch: 4.0.1 piscina: 4.4.0 postcss: 8.4.35 - postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0(esbuild@0.20.1)) + postcss-loader: 8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.71.1 - sass-loader: 14.1.1(sass@1.71.1)(webpack@5.94.0(esbuild@0.20.1)) + sass-loader: 14.1.1(sass@1.71.1)(webpack@5.94.0) semver: 7.6.0 - source-map-loader: 5.0.0(webpack@5.94.0(esbuild@0.20.1)) + source-map-loader: 5.0.0(webpack@5.94.0) source-map-support: 0.5.21 terser: 5.29.1 tree-kill: 1.2.2 @@ -8031,10 +8031,10 @@ snapshots: vite: 5.4.19(@types/node@22.15.29)(less@4.2.0)(sass@1.71.1)(terser@5.29.1) watchpack: 2.4.0 webpack: 5.94.0(esbuild@0.20.1) - webpack-dev-middleware: 6.1.2(webpack@5.94.0(esbuild@0.20.1)) + webpack-dev-middleware: 6.1.2(webpack@5.94.0) webpack-dev-server: 4.15.1(webpack@5.94.0(esbuild@0.20.1)) webpack-merge: 5.10.0 - webpack-subresource-integrity: 5.1.0(webpack@5.94.0(esbuild@0.20.1)) + webpack-subresource-integrity: 5.1.0(webpack@5.94.0) optionalDependencies: esbuild: 0.20.1 ng-packagr: 17.3.0(@angular/compiler-cli@17.3.12(@angular/compiler@17.3.12(@angular/core@17.3.12(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.2.2))(tslib@2.8.1)(typescript@5.2.2) @@ -11167,7 +11167,7 @@ snapshots: axobject-query@4.1.0: {} - babel-loader@9.1.3(@babel/core@7.26.10)(webpack@5.94.0(esbuild@0.20.1)): + babel-loader@9.1.3(@babel/core@7.26.10)(webpack@5.94.0): dependencies: '@babel/core': 7.26.10 find-cache-dir: 4.0.0 @@ -11524,7 +11524,7 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@11.0.0(webpack@5.94.0(esbuild@0.20.1)): + copy-webpack-plugin@11.0.0(webpack@5.94.0): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -11565,7 +11565,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@6.10.0(webpack@5.94.0(esbuild@0.20.1)): + css-loader@6.10.0(webpack@5.94.0): dependencies: icss-utils: 5.1.0(postcss@8.5.4) postcss: 8.5.4 @@ -12883,7 +12883,7 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.2 - less-loader@11.1.0(less@4.2.0)(webpack@5.94.0(esbuild@0.20.1)): + less-loader@11.1.0(less@4.2.0)(webpack@5.94.0): dependencies: klona: 2.0.6 less: 4.2.0 @@ -12922,7 +12922,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.94.0(esbuild@0.20.1)): + license-webpack-plugin@4.0.2(webpack@5.94.0): dependencies: webpack-sources: 3.3.0 optionalDependencies: @@ -13120,7 +13120,7 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.8.1(webpack@5.94.0(esbuild@0.20.1)): + mini-css-extract-plugin@2.8.1(webpack@5.94.0): dependencies: schema-utils: 4.3.2 tapable: 2.2.2 @@ -13701,7 +13701,7 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0(esbuild@0.20.1)): + postcss-loader@8.1.1(postcss@8.4.35)(typescript@5.2.2)(webpack@5.94.0): dependencies: cosmiconfig: 9.0.0(typescript@5.2.2) jiti: 1.21.7 @@ -14051,7 +14051,7 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@14.1.1(sass@1.71.1)(webpack@5.94.0(esbuild@0.20.1)): + sass-loader@14.1.1(sass@1.71.1)(webpack@5.94.0): dependencies: neo-async: 2.6.2 optionalDependencies: @@ -14322,7 +14322,7 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.94.0(esbuild@0.20.1)): + source-map-loader@5.0.0(webpack@5.94.0): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 @@ -14961,7 +14961,7 @@ snapshots: schema-utils: 4.3.2 webpack: 5.94.0(esbuild@0.20.1) - webpack-dev-middleware@6.1.2(webpack@5.94.0(esbuild@0.20.1)): + webpack-dev-middleware@6.1.2(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -15019,7 +15019,7 @@ snapshots: webpack-sources@3.3.0: {} - webpack-subresource-integrity@5.1.0(webpack@5.94.0(esbuild@0.20.1)): + webpack-subresource-integrity@5.1.0(webpack@5.94.0): dependencies: typed-assert: 1.0.9 webpack: 5.94.0(esbuild@0.20.1)