From 02dc93d2fbc827caff5d4e3cd27535b5d0405417 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:18:40 +0000 Subject: [PATCH 1/2] Build(deps): Bump react-window from 1.8.11 to 2.0.2 in /page Bumps [react-window](https://github.com/bvaughn/react-window) from 1.8.11 to 2.0.2. - [Release notes](https://github.com/bvaughn/react-window/releases) - [Changelog](https://github.com/bvaughn/react-window/blob/master/CHANGELOG.md) - [Commits](https://github.com/bvaughn/react-window/compare/1.8.11...2.0.2) --- updated-dependencies: - dependency-name: react-window dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- page/package-lock.json | 43 ++++++------------------------------------ page/package.json | 2 +- 2 files changed, 7 insertions(+), 38 deletions(-) diff --git a/page/package-lock.json b/page/package-lock.json index 6754d618..baf15d02 100644 --- a/page/package-lock.json +++ b/page/package-lock.json @@ -36,7 +36,7 @@ "react-helmet": "^6.1.0", "react-resizable-panels": "^3.0.5", "react-router-dom": "^7.8.2", - "react-window": "^1.8.11", + "react-window": "^2.0.2", "shell-quote": "^1.8.3", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.12", @@ -421,18 +421,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", - "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -5319,12 +5307,6 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5881,20 +5863,13 @@ } }, "node_modules/react-window": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.11.tgz", - "integrity": "sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-2.0.2.tgz", + "integrity": "sha512-KCDGR+5qB6hG/eDWCNZku5ERMV21vjMEDJeobqPXI0/foVDaqjf+Fsum4iJu0ftLUTxh9yvZ9t7T+SJ7woOLFw==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.0.0", - "memoize-one": ">=3.1.1 <6" - }, - "engines": { - "node": ">8.0.0" - }, "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/readable-stream": { @@ -5912,12 +5887,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", diff --git a/page/package.json b/page/package.json index 9e3e5019..a0fc3c4e 100644 --- a/page/package.json +++ b/page/package.json @@ -38,7 +38,7 @@ "react-helmet": "^6.1.0", "react-resizable-panels": "^3.0.5", "react-router-dom": "^7.8.2", - "react-window": "^1.8.11", + "react-window": "^2.0.2", "shell-quote": "^1.8.3", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.12", From 0f4d61e3f1a8777216914b59aeff12ece7cba828 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Fri, 5 Sep 2025 15:02:20 +0200 Subject: [PATCH 2/2] Support latest react-window version --- page/package-lock.json | 12 ++------ page/package.json | 1 - page/src/components/output.tsx | 56 ++++++++++++++++++++++------------ 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/page/package-lock.json b/page/package-lock.json index baf15d02..12955fbc 100644 --- a/page/package-lock.json +++ b/page/package-lock.json @@ -22,7 +22,6 @@ "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-tooltip": "^1.2.8", "@tailwindcss/vite": "^4.1.12", - "@types/react-window": "^1.8.8", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "flatbuffers": "^25.2.10", @@ -3622,6 +3621,7 @@ "version": "19.1.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.12.tgz", "integrity": "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==", + "devOptional": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -3647,15 +3647,6 @@ "@types/react": "*" } }, - "node_modules/@types/react-window": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.8.tgz", - "integrity": "sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==", - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/shell-quote": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/@types/shell-quote/-/shell-quote-1.7.5.tgz", @@ -4249,6 +4240,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, "license": "MIT" }, "node_modules/debug": { diff --git a/page/package.json b/page/package.json index a0fc3c4e..b0c98ca9 100644 --- a/page/package.json +++ b/page/package.json @@ -24,7 +24,6 @@ "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-tooltip": "^1.2.8", "@tailwindcss/vite": "^4.1.12", - "@types/react-window": "^1.8.8", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "flatbuffers": "^25.2.10", diff --git a/page/src/components/output.tsx b/page/src/components/output.tsx index 1e77f302..4d778162 100644 --- a/page/src/components/output.tsx +++ b/page/src/components/output.tsx @@ -1,5 +1,10 @@ import React from "react"; -import { FixedSizeList as List } from "react-window"; +import { + List, + ListImperativeAPI, + useListRef, + type RowComponentProps, +} from "react-window"; interface OutputProps {} @@ -156,9 +161,26 @@ class OutputGrouper { } } +function LogLineRow({ + index, + lines, + style, +}: RowComponentProps<{ + lines: LogLine[]; +}>) { + { + const line = lines[index]; + return ( + + {line.text} + + ); + } +} + export class Output extends React.Component { private outputRef: React.RefObject; - private listRef: React.RefObject; + private listRef: React.RefObject; private resizeObserver: ResizeObserver; constructor(props: OutputProps) { @@ -201,13 +223,14 @@ export class Output extends React.Component { componentDidUpdate(_: OutputProps, prevState: FullOutputState) { if ( - prevState.lines.length == this.state.lines.length || - !this.listRef.current + !this.listRef.current || + this.state.lines.length == 0 || + prevState.lines.length == this.state.lines.length ) { return; } - this.listRef.current.scrollToItem(this.state.lines.length - 1); + this.listRef.current.scrollToRow({ index: this.state.lines.length - 1 }); } clear() { @@ -261,21 +284,14 @@ export class Output extends React.Component { return (
- {({ index, style }) => { - const line = this.state.lines[index]; - return ( - - {line.text} - - ); - }} - + listRef={this.listRef} + overscanCount={30} + rowComponent={LogLineRow} + rowCount={this.state.lines.length} + rowProps={{ lines: this.state.lines }} + rowHeight={20} + style={{ height: this.state.height, width: this.state.width }} + />
); }