@buoy-gg/route-events 7.0.31 → 7.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/RouteTracker.js +2 -0
- package/lib/commonjs/components/NavigationStack.js +4 -10
- package/lib/commonjs/components/RouteEventsModalWithTabs.js +17 -14
- package/lib/commonjs/components/RoutesSitemap.js +8 -8
- package/lib/commonjs/sync/routeEventsSyncAdapter.js +19 -1
- package/lib/commonjs/useNavigationStack.js +27 -0
- package/lib/module/RouteTracker.js +2 -0
- package/lib/module/components/NavigationStack.js +5 -11
- package/lib/module/components/RouteEventsModalWithTabs.js +19 -16
- package/lib/module/components/RoutesSitemap.js +9 -9
- package/lib/module/sync/routeEventsSyncAdapter.js +19 -1
- package/lib/module/useNavigationStack.js +27 -0
- package/lib/typescript/RouteTracker.d.ts.map +1 -1
- package/lib/typescript/components/NavigationStack.d.ts.map +1 -1
- package/lib/typescript/components/RouteEventsModalWithTabs.d.ts.map +1 -1
- package/lib/typescript/components/RoutesSitemap.d.ts.map +1 -1
- package/lib/typescript/stores/navigationStackStore.d.ts +2 -0
- package/lib/typescript/stores/navigationStackStore.d.ts.map +1 -1
- package/lib/typescript/sync/routeEventsSyncAdapter.d.ts +5 -0
- package/lib/typescript/sync/routeEventsSyncAdapter.d.ts.map +1 -1
- package/lib/typescript/useNavigationStack.d.ts +7 -0
- package/lib/typescript/useNavigationStack.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -71,6 +71,7 @@ function NavigationStackCapture() {
|
|
|
71
71
|
const {
|
|
72
72
|
stack,
|
|
73
73
|
navigateToIndex,
|
|
74
|
+
navigateToRoute,
|
|
74
75
|
popToIndex,
|
|
75
76
|
goBack,
|
|
76
77
|
popToTop
|
|
@@ -84,6 +85,7 @@ function NavigationStackCapture() {
|
|
|
84
85
|
(0, _react.useEffect)(() => {
|
|
85
86
|
_navigationStackStore.navigationStackStore.setActions({
|
|
86
87
|
navigateToIndex,
|
|
88
|
+
navigateToRoute,
|
|
87
89
|
popToIndex,
|
|
88
90
|
goBack,
|
|
89
91
|
popToTop
|
|
@@ -140,17 +140,11 @@ function NavigationStack({
|
|
|
140
140
|
if (stack.length === 0) {
|
|
141
141
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
142
142
|
style: [styles.container, style],
|
|
143
|
-
children: /*#__PURE__*/(0, _jsxRuntime.
|
|
144
|
-
style: styles.emptyContainer,
|
|
143
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolEmptyState, {
|
|
145
144
|
testID: "buoy-routes-stack-empty",
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
children: "No navigation stack"
|
|
150
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
151
|
-
style: styles.emptySubtext,
|
|
152
|
-
children: "Navigate to a route to see the stack"
|
|
153
|
-
})]
|
|
145
|
+
otto: "walking",
|
|
146
|
+
title: "No navigation stack",
|
|
147
|
+
message: "Navigate to a route to see the stack"
|
|
154
148
|
})
|
|
155
149
|
});
|
|
156
150
|
}
|
|
@@ -473,21 +473,23 @@ function RouteEventsModalWithTabs({
|
|
|
473
473
|
placeholder: "Search pathname or params...",
|
|
474
474
|
testID: "buoy-routes-search"
|
|
475
475
|
})
|
|
476
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
477
|
-
style: styles.emptyState,
|
|
476
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolEmptyState, {
|
|
478
477
|
testID: "buoy-routes-empty",
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
478
|
+
...(0, _sharedUi.resolveListEmptyState)({
|
|
479
|
+
subject: "route events",
|
|
480
|
+
search: searchQuery,
|
|
481
|
+
total: events.length,
|
|
482
|
+
capturing: isListening,
|
|
483
|
+
waiting: {
|
|
484
|
+
otto: "walking",
|
|
485
|
+
title: "No route events yet",
|
|
486
|
+
message: "Navigation events will appear here"
|
|
487
|
+
},
|
|
488
|
+
paused: {
|
|
489
|
+
title: "Event listener is paused",
|
|
490
|
+
message: "Press play to start monitoring"
|
|
491
|
+
}
|
|
492
|
+
})
|
|
491
493
|
})]
|
|
492
494
|
});
|
|
493
495
|
}
|
|
@@ -645,6 +647,7 @@ function RouteEventsModalWithTabs({
|
|
|
645
647
|
style: styles.inlineRoot,
|
|
646
648
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
647
649
|
style: styles.inlineHeader,
|
|
650
|
+
..._sharedUi.windowDragProps,
|
|
648
651
|
children: headerContent
|
|
649
652
|
}), renderContent(), footerNode]
|
|
650
653
|
}), upgradeModal]
|
|
@@ -408,14 +408,14 @@ function RoutesSitemap({
|
|
|
408
408
|
id: "groups"
|
|
409
409
|
})]
|
|
410
410
|
})]
|
|
411
|
-
}), displayGroups.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
411
|
+
}), displayGroups.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolEmptyState, {
|
|
412
|
+
testID: "buoy-routes-sitemap-empty"
|
|
413
|
+
// map = "route inspector; where am I in the navigator" — the one
|
|
414
|
+
// OTTO_USES sentence written for this screen.
|
|
415
|
+
,
|
|
416
|
+
otto: "map",
|
|
417
|
+
title: "No routes found",
|
|
418
|
+
message: "Nothing in the router matches. Clear the search to see the whole tree."
|
|
419
419
|
}) : displayGroups.map(group => /*#__PURE__*/(0, _jsxRuntime.jsx)(RouteGroupView, {
|
|
420
420
|
group: group,
|
|
421
421
|
isExpanded: searchQuery.length > 0 || expandedGroups.has(group.title),
|
|
@@ -173,7 +173,25 @@ const routeEventsSyncAdapter = exports.routeEventsSyncAdapter = {
|
|
|
173
173
|
}
|
|
174
174
|
const router = (0, _sharedUi.getSafeRouter)();
|
|
175
175
|
if (!router) {
|
|
176
|
-
|
|
176
|
+
// Bare React Navigation: no paths, but the tracker captured the
|
|
177
|
+
// container ref, so navigate by SCREEN NAME — "/Settings" and
|
|
178
|
+
// "Settings" both resolve, and nested navigators are walked via the
|
|
179
|
+
// root state. This is half the market; "throw off expo-router" made
|
|
180
|
+
// navigate a dead verb for every RN CLI app.
|
|
181
|
+
const actions = _navigationStackStore.navigationStackStore.getActions();
|
|
182
|
+
const name = path.replace(/^\//, "");
|
|
183
|
+
if (!actions?.navigateToRoute || !name) {
|
|
184
|
+
throw new Error("expo-router is not available here and no navigation container was captured — is <RouteTracker /> mounted inside your NavigationContainer?");
|
|
185
|
+
}
|
|
186
|
+
const ok = actions.navigateToRoute(name, p?.params);
|
|
187
|
+
if (!ok) {
|
|
188
|
+
throw new Error(`Could not navigate to "${name}" — no navigation container is live.`);
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
navigated: path,
|
|
192
|
+
replaced: false,
|
|
193
|
+
via: "react-navigation"
|
|
194
|
+
};
|
|
177
195
|
}
|
|
178
196
|
// Push by default so navigate-then-back flows keep working. Callers that
|
|
179
197
|
// mean "leave this screen" (sitemap Go, agents resetting to home) pass
|
|
@@ -282,6 +282,32 @@ function useNavigationStack() {
|
|
|
282
282
|
console.error("Failed to navigate:", err);
|
|
283
283
|
}
|
|
284
284
|
}, [stack, containerRef]);
|
|
285
|
+
const navigateToRoute = (0, _react.useCallback)((name, params) => {
|
|
286
|
+
if (!containerRef) return false;
|
|
287
|
+
try {
|
|
288
|
+
// Deep path first, so screens inside nested navigators resolve even
|
|
289
|
+
// when their navigator isn't mounted yet.
|
|
290
|
+
const rootState = containerRef.getRootState?.();
|
|
291
|
+
if (!params && rootState) {
|
|
292
|
+
const path = findScreenPath(rootState, name);
|
|
293
|
+
if (path) {
|
|
294
|
+
const action = buildNestedNavigateAction(path);
|
|
295
|
+
if (action) {
|
|
296
|
+
containerRef.dispatch(action);
|
|
297
|
+
return true;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
containerRef.dispatch(CommonActions.navigate({
|
|
302
|
+
name,
|
|
303
|
+
params
|
|
304
|
+
}));
|
|
305
|
+
return true;
|
|
306
|
+
} catch (err) {
|
|
307
|
+
console.error("Failed to navigate:", err);
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
}, [containerRef]);
|
|
285
311
|
const popToIndex = (0, _react.useCallback)(index => {
|
|
286
312
|
if (index >= stack.length || index < 0) return;
|
|
287
313
|
const currentIndex = stack.length - 1;
|
|
@@ -336,6 +362,7 @@ function useNavigationStack() {
|
|
|
336
362
|
error,
|
|
337
363
|
refresh,
|
|
338
364
|
navigateToIndex,
|
|
365
|
+
navigateToRoute,
|
|
339
366
|
popToIndex,
|
|
340
367
|
goBack,
|
|
341
368
|
popToTop
|
|
@@ -67,6 +67,7 @@ function NavigationStackCapture() {
|
|
|
67
67
|
const {
|
|
68
68
|
stack,
|
|
69
69
|
navigateToIndex,
|
|
70
|
+
navigateToRoute,
|
|
70
71
|
popToIndex,
|
|
71
72
|
goBack,
|
|
72
73
|
popToTop
|
|
@@ -80,6 +81,7 @@ function NavigationStackCapture() {
|
|
|
80
81
|
useEffect(() => {
|
|
81
82
|
navigationStackStore.setActions({
|
|
82
83
|
navigateToIndex,
|
|
84
|
+
navigateToRoute,
|
|
83
85
|
popToIndex,
|
|
84
86
|
goBack,
|
|
85
87
|
popToTop
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import { useState, useMemo, useEffect } from "react";
|
|
11
11
|
import { View, Text, ScrollView, TouchableOpacity, StyleSheet, Alert } from "react-native";
|
|
12
|
-
import { ChevronDown, ChevronRight, InlineCopyButton, ProUpgradeModal, buoyColors, night, useSafeAreaInsets } from "@buoy-gg/shared-ui";
|
|
12
|
+
import { ChevronDown, ChevronRight, InlineCopyButton, ProUpgradeModal, buoyColors, night, useSafeAreaInsets, ToolEmptyState } from "@buoy-gg/shared-ui";
|
|
13
13
|
import { useIsPro } from "@buoy-gg/license";
|
|
14
14
|
import { DataViewer } from "@buoy-gg/shared-ui/dataViewer";
|
|
15
15
|
import { useNavigationStack } from "../useNavigationStack";
|
|
@@ -136,17 +136,11 @@ export function NavigationStack({
|
|
|
136
136
|
if (stack.length === 0) {
|
|
137
137
|
return /*#__PURE__*/_jsx(View, {
|
|
138
138
|
style: [styles.container, style],
|
|
139
|
-
children: /*#__PURE__*/
|
|
140
|
-
style: styles.emptyContainer,
|
|
139
|
+
children: /*#__PURE__*/_jsx(ToolEmptyState, {
|
|
141
140
|
testID: "buoy-routes-stack-empty",
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
children: "No navigation stack"
|
|
146
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
147
|
-
style: styles.emptySubtext,
|
|
148
|
-
children: "Navigate to a route to see the stack"
|
|
149
|
-
})]
|
|
141
|
+
otto: "walking",
|
|
142
|
+
title: "No navigation stack",
|
|
143
|
+
message: "Navigate to a route to see the stack"
|
|
150
144
|
})
|
|
151
145
|
});
|
|
152
146
|
}
|
|
@@ -8,8 +8,8 @@ import { getCommonActions, useSafeNavigationContainerRef } from "../utils/safeRe
|
|
|
8
8
|
// (useSafeNavigationContainerRef then yields undefined, so the dispatch
|
|
9
9
|
// paths below never execute).
|
|
10
10
|
const CommonActions = getCommonActions();
|
|
11
|
-
import { useSafeRouter, isExpoRouterAvailable } from "@buoy-gg/shared-ui";
|
|
12
|
-
import { JsModal, ModalHeader, TabSelector, formatRelativeTime, devToolsStorageKeys,
|
|
11
|
+
import { useSafeRouter, isExpoRouterAvailable, windowDragProps, ToolEmptyState, resolveListEmptyState } from "@buoy-gg/shared-ui";
|
|
12
|
+
import { JsModal, ModalHeader, TabSelector, formatRelativeTime, devToolsStorageKeys, Trash2, Filter, SearchBar, persistentStorage, ToolbarCopyButton, Lock, ProUpgradeModal, PowerToggleButton, buoyColors, night, TickProvider, useLimit } from "@buoy-gg/shared-ui";
|
|
13
13
|
import { useIsPro } from "@buoy-gg/license";
|
|
14
14
|
|
|
15
15
|
// Free tier limit for route events
|
|
@@ -470,21 +470,23 @@ export function RouteEventsModalWithTabs({
|
|
|
470
470
|
placeholder: "Search pathname or params...",
|
|
471
471
|
testID: "buoy-routes-search"
|
|
472
472
|
})
|
|
473
|
-
}), /*#__PURE__*/
|
|
474
|
-
style: styles.emptyState,
|
|
473
|
+
}), /*#__PURE__*/_jsx(ToolEmptyState, {
|
|
475
474
|
testID: "buoy-routes-empty",
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
475
|
+
...resolveListEmptyState({
|
|
476
|
+
subject: "route events",
|
|
477
|
+
search: searchQuery,
|
|
478
|
+
total: events.length,
|
|
479
|
+
capturing: isListening,
|
|
480
|
+
waiting: {
|
|
481
|
+
otto: "walking",
|
|
482
|
+
title: "No route events yet",
|
|
483
|
+
message: "Navigation events will appear here"
|
|
484
|
+
},
|
|
485
|
+
paused: {
|
|
486
|
+
title: "Event listener is paused",
|
|
487
|
+
message: "Press play to start monitoring"
|
|
488
|
+
}
|
|
489
|
+
})
|
|
488
490
|
})]
|
|
489
491
|
});
|
|
490
492
|
}
|
|
@@ -642,6 +644,7 @@ export function RouteEventsModalWithTabs({
|
|
|
642
644
|
style: styles.inlineRoot,
|
|
643
645
|
children: [/*#__PURE__*/_jsx(View, {
|
|
644
646
|
style: styles.inlineHeader,
|
|
647
|
+
...windowDragProps,
|
|
645
648
|
children: headerContent
|
|
646
649
|
}), renderContent(), footerNode]
|
|
647
650
|
}), upgradeModal]
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { useState, useCallback, useMemo, useEffect } from "react";
|
|
15
|
-
import { night } from "@buoy-gg/shared-ui";
|
|
15
|
+
import { night, ToolEmptyState } from "@buoy-gg/shared-ui";
|
|
16
16
|
import { View, Text, TextInput, TouchableOpacity, ScrollView, StyleSheet, Alert, Platform } from "react-native";
|
|
17
17
|
import { useSafeRouter } from "@buoy-gg/shared-ui";
|
|
18
18
|
import { Search, ChevronDown, ChevronRight, Home, InlineCopyButton, CopyButton, RefreshCw, formatRelativeTime, ProUpgradeModal } from "@buoy-gg/shared-ui";
|
|
@@ -406,14 +406,14 @@ export function RoutesSitemap({
|
|
|
406
406
|
id: "groups"
|
|
407
407
|
})]
|
|
408
408
|
})]
|
|
409
|
-
}), displayGroups.length === 0 ? /*#__PURE__*/_jsx(
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
409
|
+
}), displayGroups.length === 0 ? /*#__PURE__*/_jsx(ToolEmptyState, {
|
|
410
|
+
testID: "buoy-routes-sitemap-empty"
|
|
411
|
+
// map = "route inspector; where am I in the navigator" — the one
|
|
412
|
+
// OTTO_USES sentence written for this screen.
|
|
413
|
+
,
|
|
414
|
+
otto: "map",
|
|
415
|
+
title: "No routes found",
|
|
416
|
+
message: "Nothing in the router matches. Clear the search to see the whole tree."
|
|
417
417
|
}) : displayGroups.map(group => /*#__PURE__*/_jsx(RouteGroupView, {
|
|
418
418
|
group: group,
|
|
419
419
|
isExpanded: searchQuery.length > 0 || expandedGroups.has(group.title),
|
|
@@ -171,7 +171,25 @@ export const routeEventsSyncAdapter = {
|
|
|
171
171
|
}
|
|
172
172
|
const router = getSafeRouter();
|
|
173
173
|
if (!router) {
|
|
174
|
-
|
|
174
|
+
// Bare React Navigation: no paths, but the tracker captured the
|
|
175
|
+
// container ref, so navigate by SCREEN NAME — "/Settings" and
|
|
176
|
+
// "Settings" both resolve, and nested navigators are walked via the
|
|
177
|
+
// root state. This is half the market; "throw off expo-router" made
|
|
178
|
+
// navigate a dead verb for every RN CLI app.
|
|
179
|
+
const actions = navigationStackStore.getActions();
|
|
180
|
+
const name = path.replace(/^\//, "");
|
|
181
|
+
if (!actions?.navigateToRoute || !name) {
|
|
182
|
+
throw new Error("expo-router is not available here and no navigation container was captured — is <RouteTracker /> mounted inside your NavigationContainer?");
|
|
183
|
+
}
|
|
184
|
+
const ok = actions.navigateToRoute(name, p?.params);
|
|
185
|
+
if (!ok) {
|
|
186
|
+
throw new Error(`Could not navigate to "${name}" — no navigation container is live.`);
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
navigated: path,
|
|
190
|
+
replaced: false,
|
|
191
|
+
via: "react-navigation"
|
|
192
|
+
};
|
|
175
193
|
}
|
|
176
194
|
// Push by default so navigate-then-back flows keep working. Callers that
|
|
177
195
|
// mean "leave this screen" (sitemap Go, agents resetting to home) pass
|
|
@@ -279,6 +279,32 @@ export function useNavigationStack() {
|
|
|
279
279
|
console.error("Failed to navigate:", err);
|
|
280
280
|
}
|
|
281
281
|
}, [stack, containerRef]);
|
|
282
|
+
const navigateToRoute = useCallback((name, params) => {
|
|
283
|
+
if (!containerRef) return false;
|
|
284
|
+
try {
|
|
285
|
+
// Deep path first, so screens inside nested navigators resolve even
|
|
286
|
+
// when their navigator isn't mounted yet.
|
|
287
|
+
const rootState = containerRef.getRootState?.();
|
|
288
|
+
if (!params && rootState) {
|
|
289
|
+
const path = findScreenPath(rootState, name);
|
|
290
|
+
if (path) {
|
|
291
|
+
const action = buildNestedNavigateAction(path);
|
|
292
|
+
if (action) {
|
|
293
|
+
containerRef.dispatch(action);
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
containerRef.dispatch(CommonActions.navigate({
|
|
299
|
+
name,
|
|
300
|
+
params
|
|
301
|
+
}));
|
|
302
|
+
return true;
|
|
303
|
+
} catch (err) {
|
|
304
|
+
console.error("Failed to navigate:", err);
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
}, [containerRef]);
|
|
282
308
|
const popToIndex = useCallback(index => {
|
|
283
309
|
if (index >= stack.length || index < 0) return;
|
|
284
310
|
const currentIndex = stack.length - 1;
|
|
@@ -333,6 +359,7 @@ export function useNavigationStack() {
|
|
|
333
359
|
error,
|
|
334
360
|
refresh,
|
|
335
361
|
navigateToIndex,
|
|
362
|
+
navigateToRoute,
|
|
336
363
|
popToIndex,
|
|
337
364
|
goBack,
|
|
338
365
|
popToTop
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteTracker.d.ts","sourceRoot":"","sources":["../../src/RouteTracker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;
|
|
1
|
+
{"version":3,"file":"RouteTracker.d.ts","sourceRoot":"","sources":["../../src/RouteTracker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAiDH,wBAAgB,YAAY,gCAQ3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationStack.d.ts","sourceRoot":"","sources":["../../../src/components/NavigationStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"NavigationStack.d.ts","sourceRoot":"","sources":["../../../src/components/NavigationStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAO/B,uEAAuE;AACvE,MAAM,MAAM,yBAAyB,GACjC,iBAAiB,GACjB,YAAY,GACZ,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,GAAG,CAAC;IAEZ;;;;OAIG;IACH,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KACzB,IAAI,CAAC;IAEV;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAMD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,aAAa,EACb,QAAQ,EACR,iBAAiB,GAClB,EAAE,oBAAoB,+BA2dtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteEventsModalWithTabs.d.ts","sourceRoot":"","sources":["../../../src/components/RouteEventsModalWithTabs.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RouteEventsModalWithTabs.d.ts","sourceRoot":"","sources":["../../../src/components/RouteEventsModalWithTabs.tsx"],"names":[],"mappings":"AAyDA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;YAChC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAC/B,CAAC;QACF,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC3B;;;;WAIG;QACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;QAC7C;;;;;WAKG;QACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5C,2EAA2E;QAC3E,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,KACzB,IAAI,CAAC;KACX,CAAC;CACH;AA8CD,wBAAgB,wBAAwB,CAAC,EACvC,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,2BAAmC,EACnC,MAAc,EACd,MAAM,GACP,EAAE,6BAA6B,sCA8tB/B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,GAAE,IAAI,CAAC,6BAA6B,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAM,+BAKlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoutesSitemap.d.ts","sourceRoot":"","sources":["../../../src/components/RoutesSitemap.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"RoutesSitemap.d.ts","sourceRoot":"","sources":["../../../src/components/RoutesSitemap.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgCH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAM5D,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,GAAG,CAAC;IAEZ;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC;IAE7B,oDAAoD;IACpD,cAAc,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IAExC,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CAC9C;AAsCD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,eAAe,GAChB,EAAE,kBAAkB,+BAibpB"}
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
import type { StackDisplayItem } from "../useNavigationStack";
|
|
15
15
|
export interface NavigationStackActions {
|
|
16
16
|
navigateToIndex: (index: number) => void;
|
|
17
|
+
/** Name-based navigation for bare React Navigation. Optional: older trackers don't capture it. */
|
|
18
|
+
navigateToRoute?: (name: string, params?: object) => boolean;
|
|
17
19
|
popToIndex: (index: number) => void;
|
|
18
20
|
goBack: () => void;
|
|
19
21
|
popToTop: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigationStackStore.d.ts","sourceRoot":"","sources":["../../../src/stores/navigationStackStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,cAAM,oBAAoB;IACxB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,SAAS,CAAyB;IAE1C,QAAQ,IAAI,gBAAgB,EAAE;IAI9B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAKzC,UAAU,IAAI,sBAAsB,GAAG,IAAI;IAI3C,UAAU,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAIxD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;CAM5C;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"navigationStackStore.d.ts","sourceRoot":"","sources":["../../../src/stores/navigationStackStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,kGAAkG;IAClG,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,cAAM,oBAAoB;IACxB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,SAAS,CAAyB;IAE1C,QAAQ,IAAI,gBAAgB,EAAE;IAI9B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAKzC,UAAU,IAAI,sBAAsB,GAAG,IAAI;IAI3C,UAAU,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI;IAIxD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;CAM5C;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|
|
@@ -84,6 +84,11 @@ export declare const routeEventsSyncAdapter: {
|
|
|
84
84
|
navigate: (params?: unknown) => {
|
|
85
85
|
navigated: string;
|
|
86
86
|
replaced: boolean;
|
|
87
|
+
via: string;
|
|
88
|
+
} | {
|
|
89
|
+
navigated: string;
|
|
90
|
+
replaced: boolean;
|
|
91
|
+
via?: undefined;
|
|
87
92
|
};
|
|
88
93
|
stackNavigateToIndex: (params?: unknown) => {
|
|
89
94
|
navigatedToIndex: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeEventsSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/routeEventsSyncAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAY,CAAC;AA4BrD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,mEAAmE;IACnE,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,8EAA8E;IAC9E,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAWD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB;;uBAEhB,sBAAsB;0BAKjB,MAAM,IAAI;;;QAkC9B;;;;;;;;WAQG;;;;;;;;;;;;;;;;;QAgCH;;;WAGG;4BACiB,OAAO
|
|
1
|
+
{"version":3,"file":"routeEventsSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/routeEventsSyncAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAY,CAAC;AA4BrD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,mEAAmE;IACnE,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,8EAA8E;IAC9E,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAWD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB;;uBAEhB,sBAAsB;0BAKjB,MAAM,IAAI;;;QAkC9B;;;;;;;;WAQG;;;;;;;;;;;;;;;;;QAgCH;;;WAGG;4BACiB,OAAO;;;;;;;;;wCAsCK,OAAO;;;mCAUZ,OAAO;;;;;;;;;;CAuBrC,CAAC"}
|
|
@@ -27,6 +27,13 @@ export interface UseNavigationStackResult {
|
|
|
27
27
|
error: Error | null;
|
|
28
28
|
refresh: () => void;
|
|
29
29
|
navigateToIndex: (index: number) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Navigate to a screen by NAME on bare React Navigation — the fallback
|
|
32
|
+
* that makes the `navigate` sync action work off expo-router. Resolves
|
|
33
|
+
* nested navigators via the root state when it can; returns false when no
|
|
34
|
+
* container ref was captured.
|
|
35
|
+
*/
|
|
36
|
+
navigateToRoute: (name: string, params?: object) => boolean;
|
|
30
37
|
popToIndex: (index: number) => void;
|
|
31
38
|
goBack: () => void;
|
|
32
39
|
popToTop: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationStack.d.ts","sourceRoot":"","sources":["../../src/useNavigationStack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4BH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IAEvC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAGlB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAGpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAuKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,
|
|
1
|
+
{"version":3,"file":"useNavigationStack.d.ts","sourceRoot":"","sources":["../../src/useNavigationStack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4BH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IAEvC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAGlB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAGpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;;;OAKG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAuKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,CAiM7D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-gg/route-events",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.33",
|
|
4
4
|
"description": "Navigation devtool for React Native — live stack, full sitemap, jump to any screen. Expo Router & React Navigation. Part of Buoy devtools.",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@buoy-gg/
|
|
30
|
-
"@buoy-gg/
|
|
29
|
+
"@buoy-gg/floating-tools-core": "^7.0.33",
|
|
30
|
+
"@buoy-gg/shared-ui": "^7.0.33"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@buoy-gg/license": "7.0.
|
|
33
|
+
"@buoy-gg/license": "7.0.33",
|
|
34
34
|
"@react-native-async-storage/async-storage": "^2.0.0 || ^3.1.0",
|
|
35
35
|
"@react-navigation/native": "*",
|
|
36
36
|
"expo-router": "*",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/react-native": "^0.73.0",
|
|
53
53
|
"expo-router": "~5.0.7",
|
|
54
54
|
"typescript": "~5.8.3",
|
|
55
|
-
"@buoy-gg/license": "^7.0.
|
|
55
|
+
"@buoy-gg/license": "^7.0.33"
|
|
56
56
|
},
|
|
57
57
|
"react-native-builder-bob": {
|
|
58
58
|
"source": "src",
|