Skip to content

Commit c38c011

Browse files
committed
fix bugs
1 parent 4627a60 commit c38c011

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

packages/react-router-devtools/src/client/components/network-tracer/NetworkWaterfall.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ const NetworkWaterfall: React.FC<Props> = ({ requests, width }) => {
6464
const [now, setNow] = useState(Date.now())
6565
const [activeTypeFilter, setActiveTypeFilter] = useState<EventType | "all">("all")
6666
const [activeRouteFilters, setActiveRouteFilters] = useState<Set<string>>(new Set())
67-
const selectedRequest = selectedRequestIndex !== null ? requests[selectedRequestIndex] : null
6867

6968
// Get unique routes from all requests
7069
const uniqueRoutes = Array.from(new Set(requests.map((req) => req.routeId))).sort()
@@ -82,10 +81,21 @@ const NetworkWaterfall: React.FC<Props> = ({ requests, width }) => {
8281
filteredRequests = filteredRequests.filter((req) => activeRouteFilters.has(req.routeId))
8382
}
8483

84+
// Get the selected request from the filtered list
85+
const selectedRequest = selectedRequestIndex !== null ? filteredRequests[selectedRequestIndex] : null
86+
8587
// Check if there are any active requests
8688
const hasActiveRequests = filteredRequests.some(
8789
(req) => !req.endTime || (req.endTime && now - req.endTime < INACTIVE_THRESHOLD)
8890
)
91+
92+
// Reset selected index when filters change and current selection is out of bounds
93+
useEffect(() => {
94+
if (selectedRequestIndex !== null && selectedRequestIndex >= filteredRequests.length) {
95+
setSelectedRequest(null)
96+
}
97+
}, [selectedRequestIndex, filteredRequests.length])
98+
8999
useEffect(() => {
90100
if (!hasActiveRequests) {
91101
return

packages/react-router-devtools/src/vite/plugin.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,14 @@ export const reactRouterDevTools: (args?: ReactRouterViteConfig) => Plugin[] = (
187187
const appDir = cachedAppDir || "./app"
188188
const appDirName = appDir.replace("./", "")
189189

190+
// Load routes eagerly so they're available during transformation
191+
let routesLoaded = false
192+
const ensureRoutesLoaded = async () => {
193+
if (!routesLoaded) {
194+
routesLoaded = await loadRoutes()
195+
}
196+
}
197+
190198
const shouldInject = (mode: string | undefined, include: boolean) => mode === "development" || include
191199
const isTransformable = (id: string) => {
192200
const extensions = [".tsx", ".jsx", ".ts", ".js"]
@@ -269,7 +277,8 @@ export const reactRouterDevTools: (args?: ReactRouterViteConfig) => Plugin[] = (
269277
apply(config) {
270278
return shouldInject(config.mode, includeDevtools)
271279
},
272-
transform(code, id) {
280+
async transform(code, id) {
281+
await ensureRoutesLoaded()
273282
const routeId = isTransformable(id)
274283
if (!routeId) {
275284
return
@@ -283,7 +292,8 @@ export const reactRouterDevTools: (args?: ReactRouterViteConfig) => Plugin[] = (
283292
apply(config) {
284293
return shouldInject(config.mode, includeServer)
285294
},
286-
transform(code, id) {
295+
async transform(code, id) {
296+
await ensureRoutesLoaded()
287297
const routeId = isTransformable(id)
288298
if (!routeId) {
289299
return
@@ -297,7 +307,8 @@ export const reactRouterDevTools: (args?: ReactRouterViteConfig) => Plugin[] = (
297307
apply(config) {
298308
return shouldInject(config.mode, includeServer)
299309
},
300-
transform(code, id) {
310+
async transform(code, id) {
311+
await ensureRoutesLoaded()
301312
const routeId = isTransformable(id)
302313
if (!routeId) {
303314
return

0 commit comments

Comments
 (0)