one 1.24.1 → 1.24.3
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/devtools/dev.mjs +133 -0
- package/dist/cjs/router/useViteRoutes.cjs +8 -0
- package/dist/cjs/router/useViteRoutes.native.js +16 -0
- package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +9 -0
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +9 -0
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.cjs +18 -0
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.native.js +18 -0
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +3 -3
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +4 -4
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +32 -2
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +38 -2
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/dist/esm/router/useViteRoutes.mjs +8 -0
- package/dist/esm/router/useViteRoutes.mjs.map +1 -1
- package/dist/esm/router/useViteRoutes.native.js +16 -0
- package/dist/esm/router/useViteRoutes.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +9 -0
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +9 -0
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.mjs +18 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.native.js +18 -0
- package/dist/esm/vite/plugins/routeModuleHmrPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +3 -3
- package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +4 -4
- package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +32 -2
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +38 -2
- package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/package.json +9 -9
- package/src/router/useViteRoutes.tsx +21 -0
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +10 -0
- package/src/vite/plugins/routeModuleHmrPlugin.ts +22 -0
- package/src/vite/plugins/virtualEntryPlugin.test.ts +51 -2
- package/src/vite/plugins/virtualEntryPlugin.ts +27 -16
- package/types/layouts/Drawer.d.ts +50 -50
- package/types/layouts/Stack.d.ts +42 -42
- package/types/layouts/Tabs.d.ts +42 -42
- package/types/router/useViteRoutes.d.ts.map +1 -1
- package/types/ui/TabContext.d.ts +6 -6
- package/types/ui/TabContext.d.ts.map +1 -1
- package/types/ui/Tabs.shared.d.ts +12 -12
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
- package/types/vite/plugins/routeModuleHmrPlugin.d.ts.map +1 -1
- package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
|
@@ -283,6 +283,27 @@ export function globbedRoutesToRouteContext(
|
|
|
283
283
|
})
|
|
284
284
|
.catch((err) => {
|
|
285
285
|
console.error(`Error loading route`, id, err, new Error().stack)
|
|
286
|
+
// rendering an empty component keeps one bad route from taking down the
|
|
287
|
+
// app, but it also makes the failure invisible: nothing inside the route
|
|
288
|
+
// mounts and the only trace is the line above. in dev, hand it to the
|
|
289
|
+
// dev server so it reaches the terminal and the vite overlay. the global
|
|
290
|
+
// is installed by devtools/dev.mjs, so this is inert on native and in
|
|
291
|
+
// any build without it.
|
|
292
|
+
if (process.env.NODE_ENV === 'development') {
|
|
293
|
+
;(
|
|
294
|
+
globalThis as typeof globalThis & {
|
|
295
|
+
__oneReportRouteLoadError?: (detail: {
|
|
296
|
+
id: string
|
|
297
|
+
message: string
|
|
298
|
+
stack?: string
|
|
299
|
+
}) => void
|
|
300
|
+
}
|
|
301
|
+
).__oneReportRouteLoadError?.({
|
|
302
|
+
id,
|
|
303
|
+
message: err instanceof Error ? err.message : String(err),
|
|
304
|
+
stack: err instanceof Error ? err.stack : undefined,
|
|
305
|
+
})
|
|
306
|
+
}
|
|
286
307
|
loadedRoutes[id] = {
|
|
287
308
|
default: () => null,
|
|
288
309
|
}
|
|
@@ -393,6 +393,16 @@ export function createFileSystemRouterPlugin(
|
|
|
393
393
|
// for 404 with notFoundRoutePath, render the +not-found page at that path
|
|
394
394
|
const renderPath = notFoundRoutePath || loaderProps?.path || '/'
|
|
395
395
|
|
|
396
|
+
// a prod build prerenders +not-found at its own route path, so ssr
|
|
397
|
+
// hooks reading loaderProps.path (usePathname) see that path. align
|
|
398
|
+
// dev's live 404 render with it, or the dev server renders
|
|
399
|
+
// pathname-driven ui with the failing url while the hydrating
|
|
400
|
+
// client routes to +not-found and the trees never match
|
|
401
|
+
if (notFoundRoutePath && loaderProps) {
|
|
402
|
+
loaderProps = { ...loaderProps, path: notFoundRoutePath }
|
|
403
|
+
setServerContext({ loaderProps })
|
|
404
|
+
}
|
|
405
|
+
|
|
396
406
|
let html = await render({
|
|
397
407
|
mode: isSpaShell
|
|
398
408
|
? 'spa-shell'
|
|
@@ -5,6 +5,28 @@ import { isPathInsideDirectory } from '../../utils/routeFileWatch'
|
|
|
5
5
|
export function createRouteModuleHmrPlugin(routerRoot: string): Plugin {
|
|
6
6
|
return {
|
|
7
7
|
name: 'route-module-hmr-fix',
|
|
8
|
+
|
|
9
|
+
// the router swallows a failed route import and renders an empty component
|
|
10
|
+
// in its place (see useViteRoutes resolve). that is right for production and
|
|
11
|
+
// wrong for dev, where it meant a broken import anywhere in a route's module
|
|
12
|
+
// graph produced a blank app, no terminal output, and one console line — with
|
|
13
|
+
// every provider inside that route silently never mounting. the client paints
|
|
14
|
+
// its own overlay (devtools/dev.mjs) and reports here so the failure also
|
|
15
|
+
// reaches the terminal, where the person running the dev server is looking.
|
|
16
|
+
configureServer(server) {
|
|
17
|
+
server.hot.on(
|
|
18
|
+
'one:route-error',
|
|
19
|
+
(data: { id?: string; message?: string; stack?: string } | undefined) => {
|
|
20
|
+
const id = data?.id || 'unknown route'
|
|
21
|
+
const message = data?.message || 'unknown error'
|
|
22
|
+
server.config.logger.error(
|
|
23
|
+
`[one] route failed to load: ${id}\n ${message}\n the router rendered an empty component in its place, so nothing inside this route mounted.`,
|
|
24
|
+
{ timestamp: true }
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
},
|
|
29
|
+
|
|
8
30
|
hotUpdate({ server, modules, file }) {
|
|
9
31
|
const absoluteRouterRoot = path.resolve(server.config.root, routerRoot)
|
|
10
32
|
const fileRelativePath = path.relative(server.config.root, file)
|
|
@@ -18,11 +18,16 @@ vi.mock('@vxrn/compiler', () => ({
|
|
|
18
18
|
configuration: { enableNativewind: false },
|
|
19
19
|
}))
|
|
20
20
|
|
|
21
|
-
function loadEntry(
|
|
21
|
+
function loadEntry(
|
|
22
|
+
plugin: any,
|
|
23
|
+
envName: string,
|
|
24
|
+
command: 'serve' | 'build' = 'build',
|
|
25
|
+
envMode: 'dev' | 'build' = command === 'serve' ? 'dev' : 'build'
|
|
26
|
+
) {
|
|
22
27
|
// simulate configResolved so isDevMode is set
|
|
23
28
|
plugin.configResolved?.({ root: '', command })
|
|
24
29
|
const ctx = {
|
|
25
|
-
environment: { name: envName },
|
|
30
|
+
environment: { name: envName, mode: envMode },
|
|
26
31
|
}
|
|
27
32
|
return plugin.load.call(ctx, '\0virtual:one-entry')
|
|
28
33
|
}
|
|
@@ -234,4 +239,48 @@ export const registerPreloadedRoute = () => {}`
|
|
|
234
239
|
)
|
|
235
240
|
})
|
|
236
241
|
})
|
|
242
|
+
|
|
243
|
+
describe('react-refresh preamble', () => {
|
|
244
|
+
const base = {
|
|
245
|
+
root: 'app',
|
|
246
|
+
flags: {},
|
|
247
|
+
routeIndex: {
|
|
248
|
+
getPaths: () => [],
|
|
249
|
+
update: () => false,
|
|
250
|
+
},
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// /@one/dev.js also installs the preamble, but it is a deferred module
|
|
254
|
+
// script and the client entry is async, so on a large prerendered document
|
|
255
|
+
// the entry wins and every compiler-wrapped route module throws "React
|
|
256
|
+
// refresh preamble was not loaded". the entry has to install it itself so
|
|
257
|
+
// the result does not depend on which script arrives first.
|
|
258
|
+
it('dev client installs the preamble before route modules load', () => {
|
|
259
|
+
const code = loadEntry(createVirtualEntry(base), 'client', 'serve')
|
|
260
|
+
expect(code).toContain(`from '/@react-refresh'`)
|
|
261
|
+
expect(code).toContain('window.$RefreshReg$ = () => {}')
|
|
262
|
+
// must be guarded so it is a no-op when /@one/dev.js already won the race
|
|
263
|
+
expect(code).toContain(`!window.$RefreshReg$`)
|
|
264
|
+
// and it has to sit in the entry body, ahead of the lazily-globbed routes
|
|
265
|
+
expect(code.indexOf('__oneInjectRefresh(window)')).toBeLessThan(
|
|
266
|
+
code.indexOf('createApp(')
|
|
267
|
+
)
|
|
268
|
+
})
|
|
269
|
+
|
|
270
|
+
it('production build emits no reference to the dev-only refresh runtime', () => {
|
|
271
|
+
const code = loadEntry(createVirtualEntry(base), 'client', 'build')
|
|
272
|
+
// /@react-refresh only exists while serving, so a build that imported it
|
|
273
|
+
// would ship a broken specifier
|
|
274
|
+
expect(code).not.toContain('/@react-refresh')
|
|
275
|
+
expect(code).not.toContain('$RefreshReg$')
|
|
276
|
+
})
|
|
277
|
+
|
|
278
|
+
it('server and native entries never get the preamble', () => {
|
|
279
|
+
for (const envName of ['ssr', 'ios', 'android']) {
|
|
280
|
+
const code = loadEntry(createVirtualEntry(base), envName, 'serve')
|
|
281
|
+
expect(code).not.toContain('/@react-refresh')
|
|
282
|
+
expect(code).not.toContain('$RefreshReg$')
|
|
283
|
+
}
|
|
284
|
+
})
|
|
285
|
+
})
|
|
237
286
|
})
|
|
@@ -228,24 +228,35 @@ export function createVirtualEntry(options: {
|
|
|
228
228
|
? `linking: ${JSON.stringify(options.router.linking)},`
|
|
229
229
|
: ''
|
|
230
230
|
|
|
231
|
-
//
|
|
232
|
-
//
|
|
233
|
-
//
|
|
234
|
-
//
|
|
235
|
-
//
|
|
236
|
-
// the
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
//
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
231
|
+
// the react-refresh preamble has to be installed before the first
|
|
232
|
+
// compiler-wrapped module evaluates, or that module throws "React refresh
|
|
233
|
+
// preamble was not loaded" and client init aborts. /@one/dev.js installs
|
|
234
|
+
// it, but it cannot be relied on to win: it is a DEFERRED module script,
|
|
235
|
+
// so it waits for the document to finish parsing, while the client entry
|
|
236
|
+
// is async and runs the moment it arrives. that race is decided by
|
|
237
|
+
// document size. a SPA shell is a few hundred bytes and dev.js wins; a
|
|
238
|
+
// prerendered +ssg/ssr page is hundreds of KB and the entry regularly
|
|
239
|
+
// wins, throws on the first route module, and leaves the page unhydrated
|
|
240
|
+
// and unthemed on the very same server. bundled dev has no working
|
|
241
|
+
// /@one/dev.js at all, since it imports /@vite/client, which does not
|
|
242
|
+
// exist there.
|
|
243
|
+
// so install it from the entry, whose body is the one point guaranteed to
|
|
244
|
+
// run before the lazily-globbed route modules in every dev client. the
|
|
245
|
+
// !$RefreshReg$ guard makes this a no-op when dev.js already won, and
|
|
246
|
+
// dev.js keeps its own install because injectIntoGlobalHook wants to run
|
|
247
|
+
// before react evaluates. ('one' and /@react-refresh are node_modules /
|
|
248
|
+
// the runtime, so neither is refresh-wrapped, and on the client the setup
|
|
249
|
+
// file is imported lazily rather than statically.)
|
|
250
|
+
// this must stay gated to a dev CLIENT. `isBundled` is true for EVERY
|
|
251
|
+
// environment during build, so it cannot gate this on its own, and a prod
|
|
252
|
+
// build emitting an import of /@react-refresh would reference a module
|
|
253
|
+
// that only exists while serving.
|
|
254
|
+
const isDevClient =
|
|
255
|
+
this.environment.mode === 'dev' && this.environment.name === 'client'
|
|
256
|
+
const refreshPreambleImport = isDevClient
|
|
246
257
|
? `import { injectIntoGlobalHook as __oneInjectRefresh } from '/@react-refresh'`
|
|
247
258
|
: ''
|
|
248
|
-
const refreshPreambleSetup =
|
|
259
|
+
const refreshPreambleSetup = isDevClient
|
|
249
260
|
? `if (typeof window !== 'undefined' && !window.$RefreshReg$) {
|
|
250
261
|
__oneInjectRefresh(window)
|
|
251
262
|
window.$RefreshReg$ = () => {}
|
|
@@ -5,42 +5,42 @@ export declare const Drawer: React.ForwardRefExoticComponent<Omit<Omit<Omit<impo
|
|
|
5
5
|
children: React.ReactNode;
|
|
6
6
|
layout?: ((props: {
|
|
7
7
|
state: DrawerNavigationState<ParamListBase>;
|
|
8
|
-
navigation: import("@react-navigation/
|
|
9
|
-
descriptors: Record<string, import("@react-navigation/
|
|
8
|
+
navigation: import("@react-navigation/native").NavigationHelpers<ParamListBase, {}>;
|
|
9
|
+
descriptors: Record<string, import("@react-navigation/native").Descriptor<DrawerNavigationOptions, import("@react-navigation/native").NavigationProp<ParamListBase, string, string | undefined, DrawerNavigationState<ParamListBase>, DrawerNavigationOptions, DrawerNavigationEventMap>, import("@react-navigation/native").RouteProp<ParamListBase, string>>>;
|
|
10
10
|
children: React.ReactNode;
|
|
11
11
|
}) => React.ReactElement) | undefined;
|
|
12
12
|
screenListeners?: Partial<{
|
|
13
|
-
drawerItemPress: import("@react-navigation/
|
|
14
|
-
transitionStart: import("@react-navigation/
|
|
15
|
-
transitionEnd: import("@react-navigation/
|
|
16
|
-
gestureStart: import("@react-navigation/
|
|
17
|
-
gestureEnd: import("@react-navigation/
|
|
18
|
-
gestureCancel: import("@react-navigation/
|
|
19
|
-
focus: import("@react-navigation/
|
|
20
|
-
blur: import("@react-navigation/
|
|
21
|
-
state: import("@react-navigation/
|
|
22
|
-
beforeRemove: import("@react-navigation/
|
|
13
|
+
drawerItemPress: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "drawerItemPress", true>;
|
|
14
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
15
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
16
|
+
gestureStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureStart", unknown>;
|
|
17
|
+
gestureEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureEnd", unknown>;
|
|
18
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
19
|
+
focus: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "focus", unknown>;
|
|
20
|
+
blur: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "blur", unknown>;
|
|
21
|
+
state: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "state", unknown>;
|
|
22
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
23
23
|
}> | ((props: {
|
|
24
|
-
route: import("@react-navigation/
|
|
24
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
25
25
|
navigation: import("@react-navigation/drawer").DrawerNavigationProp<ParamListBase, string, string | undefined>;
|
|
26
26
|
}) => Partial<{
|
|
27
|
-
drawerItemPress: import("@react-navigation/
|
|
28
|
-
transitionStart: import("@react-navigation/
|
|
29
|
-
transitionEnd: import("@react-navigation/
|
|
30
|
-
gestureStart: import("@react-navigation/
|
|
31
|
-
gestureEnd: import("@react-navigation/
|
|
32
|
-
gestureCancel: import("@react-navigation/
|
|
33
|
-
focus: import("@react-navigation/
|
|
34
|
-
blur: import("@react-navigation/
|
|
35
|
-
state: import("@react-navigation/
|
|
36
|
-
beforeRemove: import("@react-navigation/
|
|
27
|
+
drawerItemPress: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "drawerItemPress", true>;
|
|
28
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
29
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
30
|
+
gestureStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureStart", unknown>;
|
|
31
|
+
gestureEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureEnd", unknown>;
|
|
32
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
33
|
+
focus: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "focus", unknown>;
|
|
34
|
+
blur: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "blur", unknown>;
|
|
35
|
+
state: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "state", unknown>;
|
|
36
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
37
37
|
}>) | undefined;
|
|
38
38
|
screenOptions?: DrawerNavigationOptions | ((props: {
|
|
39
|
-
route: import("@react-navigation/
|
|
39
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
40
40
|
navigation: import("@react-navigation/drawer").DrawerNavigationProp<ParamListBase, string, string | undefined>;
|
|
41
41
|
theme: ReactNavigation.Theme;
|
|
42
42
|
}) => DrawerNavigationOptions) | undefined;
|
|
43
|
-
screenLayout?: ((props: import("@react-navigation/
|
|
43
|
+
screenLayout?: ((props: import("@react-navigation/native").ScreenLayoutArgs<ParamListBase, string, DrawerNavigationOptions, import("@react-navigation/drawer").DrawerNavigationProp<ParamListBase, string, string | undefined>>) => React.ReactElement) | undefined;
|
|
44
44
|
UNSTABLE_router?: (<Action extends Readonly<{
|
|
45
45
|
type: string;
|
|
46
46
|
payload?: object;
|
|
@@ -56,42 +56,42 @@ export declare const Drawer: React.ForwardRefExoticComponent<Omit<Omit<Omit<impo
|
|
|
56
56
|
children: React.ReactNode;
|
|
57
57
|
layout?: ((props: {
|
|
58
58
|
state: DrawerNavigationState<ParamListBase>;
|
|
59
|
-
navigation: import("@react-navigation/
|
|
60
|
-
descriptors: Record<string, import("@react-navigation/
|
|
59
|
+
navigation: import("@react-navigation/native").NavigationHelpers<ParamListBase, {}>;
|
|
60
|
+
descriptors: Record<string, import("@react-navigation/native").Descriptor<DrawerNavigationOptions, import("@react-navigation/native").NavigationProp<ParamListBase, string, string | undefined, DrawerNavigationState<ParamListBase>, DrawerNavigationOptions, DrawerNavigationEventMap>, import("@react-navigation/native").RouteProp<ParamListBase, string>>>;
|
|
61
61
|
children: React.ReactNode;
|
|
62
62
|
}) => React.ReactElement) | undefined;
|
|
63
63
|
screenListeners?: Partial<{
|
|
64
|
-
drawerItemPress: import("@react-navigation/
|
|
65
|
-
transitionStart: import("@react-navigation/
|
|
66
|
-
transitionEnd: import("@react-navigation/
|
|
67
|
-
gestureStart: import("@react-navigation/
|
|
68
|
-
gestureEnd: import("@react-navigation/
|
|
69
|
-
gestureCancel: import("@react-navigation/
|
|
70
|
-
focus: import("@react-navigation/
|
|
71
|
-
blur: import("@react-navigation/
|
|
72
|
-
state: import("@react-navigation/
|
|
73
|
-
beforeRemove: import("@react-navigation/
|
|
64
|
+
drawerItemPress: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "drawerItemPress", true>;
|
|
65
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
66
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
67
|
+
gestureStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureStart", unknown>;
|
|
68
|
+
gestureEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureEnd", unknown>;
|
|
69
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
70
|
+
focus: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "focus", unknown>;
|
|
71
|
+
blur: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "blur", unknown>;
|
|
72
|
+
state: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "state", unknown>;
|
|
73
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
74
74
|
}> | ((props: {
|
|
75
|
-
route: import("@react-navigation/
|
|
75
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
76
76
|
navigation: import("@react-navigation/drawer").DrawerNavigationProp<ParamListBase, string, string | undefined>;
|
|
77
77
|
}) => Partial<{
|
|
78
|
-
drawerItemPress: import("@react-navigation/
|
|
79
|
-
transitionStart: import("@react-navigation/
|
|
80
|
-
transitionEnd: import("@react-navigation/
|
|
81
|
-
gestureStart: import("@react-navigation/
|
|
82
|
-
gestureEnd: import("@react-navigation/
|
|
83
|
-
gestureCancel: import("@react-navigation/
|
|
84
|
-
focus: import("@react-navigation/
|
|
85
|
-
blur: import("@react-navigation/
|
|
86
|
-
state: import("@react-navigation/
|
|
87
|
-
beforeRemove: import("@react-navigation/
|
|
78
|
+
drawerItemPress: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "drawerItemPress", true>;
|
|
79
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
80
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
81
|
+
gestureStart: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureStart", unknown>;
|
|
82
|
+
gestureEnd: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureEnd", unknown>;
|
|
83
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
84
|
+
focus: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "focus", unknown>;
|
|
85
|
+
blur: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "blur", unknown>;
|
|
86
|
+
state: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "state", unknown>;
|
|
87
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<DrawerNavigationEventMap & import("@react-navigation/native").EventMapCore<DrawerNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
88
88
|
}>) | undefined;
|
|
89
89
|
screenOptions?: DrawerNavigationOptions | ((props: {
|
|
90
|
-
route: import("@react-navigation/
|
|
90
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
91
91
|
navigation: import("@react-navigation/drawer").DrawerNavigationProp<ParamListBase, string, string | undefined>;
|
|
92
92
|
theme: ReactNavigation.Theme;
|
|
93
93
|
}) => DrawerNavigationOptions) | undefined;
|
|
94
|
-
screenLayout?: ((props: import("@react-navigation/
|
|
94
|
+
screenLayout?: ((props: import("@react-navigation/native").ScreenLayoutArgs<ParamListBase, string, DrawerNavigationOptions, import("@react-navigation/drawer").DrawerNavigationProp<ParamListBase, string, string | undefined>>) => React.ReactElement) | undefined;
|
|
95
95
|
UNSTABLE_router?: (<Action extends Readonly<{
|
|
96
96
|
type: string;
|
|
97
97
|
payload?: object;
|
package/types/layouts/Stack.d.ts
CHANGED
|
@@ -6,38 +6,38 @@ export declare const Stack: React.ForwardRefExoticComponent<Omit<Omit<Omit<impor
|
|
|
6
6
|
children: React.ReactNode;
|
|
7
7
|
layout?: ((props: {
|
|
8
8
|
state: StackNavigationState<ParamListBase>;
|
|
9
|
-
navigation: import("@react-navigation/
|
|
10
|
-
descriptors: Record<string, import("@react-navigation/
|
|
9
|
+
navigation: import("@react-navigation/native").NavigationHelpers<ParamListBase, {}>;
|
|
10
|
+
descriptors: Record<string, import("@react-navigation/native").Descriptor<NativeStackNavigationOptions, import("@react-navigation/native").NavigationProp<ParamListBase, string, string | undefined, StackNavigationState<ParamListBase>, NativeStackNavigationOptions, NativeStackNavigationEventMap>, import("@react-navigation/native").RouteProp<ParamListBase, string>>>;
|
|
11
11
|
children: React.ReactNode;
|
|
12
12
|
}) => React.ReactElement) | undefined;
|
|
13
13
|
screenListeners?: Partial<{
|
|
14
|
-
transitionStart: import("@react-navigation/
|
|
15
|
-
transitionEnd: import("@react-navigation/
|
|
16
|
-
gestureCancel: import("@react-navigation/
|
|
17
|
-
sheetDetentChange: import("@react-navigation/
|
|
18
|
-
focus: import("@react-navigation/
|
|
19
|
-
blur: import("@react-navigation/
|
|
20
|
-
state: import("@react-navigation/
|
|
21
|
-
beforeRemove: import("@react-navigation/
|
|
14
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
15
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
16
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
17
|
+
sheetDetentChange: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "sheetDetentChange", unknown>;
|
|
18
|
+
focus: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "focus", unknown>;
|
|
19
|
+
blur: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "blur", unknown>;
|
|
20
|
+
state: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "state", unknown>;
|
|
21
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
22
22
|
}> | ((props: {
|
|
23
|
-
route: import("@react-navigation/
|
|
23
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
24
24
|
navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<ParamListBase, string, string | undefined>;
|
|
25
25
|
}) => Partial<{
|
|
26
|
-
transitionStart: import("@react-navigation/
|
|
27
|
-
transitionEnd: import("@react-navigation/
|
|
28
|
-
gestureCancel: import("@react-navigation/
|
|
29
|
-
sheetDetentChange: import("@react-navigation/
|
|
30
|
-
focus: import("@react-navigation/
|
|
31
|
-
blur: import("@react-navigation/
|
|
32
|
-
state: import("@react-navigation/
|
|
33
|
-
beforeRemove: import("@react-navigation/
|
|
26
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
27
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
28
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
29
|
+
sheetDetentChange: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "sheetDetentChange", unknown>;
|
|
30
|
+
focus: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "focus", unknown>;
|
|
31
|
+
blur: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "blur", unknown>;
|
|
32
|
+
state: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "state", unknown>;
|
|
33
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
34
34
|
}>) | undefined;
|
|
35
35
|
screenOptions?: NativeStackNavigationOptions | ((props: {
|
|
36
|
-
route: import("@react-navigation/
|
|
36
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
37
37
|
navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<ParamListBase, string, string | undefined>;
|
|
38
38
|
theme: ReactNavigation.Theme;
|
|
39
39
|
}) => NativeStackNavigationOptions) | undefined;
|
|
40
|
-
screenLayout?: ((props: import("@react-navigation/
|
|
40
|
+
screenLayout?: ((props: import("@react-navigation/native").ScreenLayoutArgs<ParamListBase, string, NativeStackNavigationOptions, import("@react-navigation/native-stack").NativeStackNavigationProp<ParamListBase, string, string | undefined>>) => React.ReactElement) | undefined;
|
|
41
41
|
UNSTABLE_router?: (<Action extends Readonly<{
|
|
42
42
|
type: string;
|
|
43
43
|
payload?: object;
|
|
@@ -53,38 +53,38 @@ export declare const Stack: React.ForwardRefExoticComponent<Omit<Omit<Omit<impor
|
|
|
53
53
|
children: React.ReactNode;
|
|
54
54
|
layout?: ((props: {
|
|
55
55
|
state: StackNavigationState<ParamListBase>;
|
|
56
|
-
navigation: import("@react-navigation/
|
|
57
|
-
descriptors: Record<string, import("@react-navigation/
|
|
56
|
+
navigation: import("@react-navigation/native").NavigationHelpers<ParamListBase, {}>;
|
|
57
|
+
descriptors: Record<string, import("@react-navigation/native").Descriptor<NativeStackNavigationOptions, import("@react-navigation/native").NavigationProp<ParamListBase, string, string | undefined, StackNavigationState<ParamListBase>, NativeStackNavigationOptions, NativeStackNavigationEventMap>, import("@react-navigation/native").RouteProp<ParamListBase, string>>>;
|
|
58
58
|
children: React.ReactNode;
|
|
59
59
|
}) => React.ReactElement) | undefined;
|
|
60
60
|
screenListeners?: Partial<{
|
|
61
|
-
transitionStart: import("@react-navigation/
|
|
62
|
-
transitionEnd: import("@react-navigation/
|
|
63
|
-
gestureCancel: import("@react-navigation/
|
|
64
|
-
sheetDetentChange: import("@react-navigation/
|
|
65
|
-
focus: import("@react-navigation/
|
|
66
|
-
blur: import("@react-navigation/
|
|
67
|
-
state: import("@react-navigation/
|
|
68
|
-
beforeRemove: import("@react-navigation/
|
|
61
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
62
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
63
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
64
|
+
sheetDetentChange: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "sheetDetentChange", unknown>;
|
|
65
|
+
focus: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "focus", unknown>;
|
|
66
|
+
blur: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "blur", unknown>;
|
|
67
|
+
state: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "state", unknown>;
|
|
68
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
69
69
|
}> | ((props: {
|
|
70
|
-
route: import("@react-navigation/
|
|
70
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
71
71
|
navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<ParamListBase, string, string | undefined>;
|
|
72
72
|
}) => Partial<{
|
|
73
|
-
transitionStart: import("@react-navigation/
|
|
74
|
-
transitionEnd: import("@react-navigation/
|
|
75
|
-
gestureCancel: import("@react-navigation/
|
|
76
|
-
sheetDetentChange: import("@react-navigation/
|
|
77
|
-
focus: import("@react-navigation/
|
|
78
|
-
blur: import("@react-navigation/
|
|
79
|
-
state: import("@react-navigation/
|
|
80
|
-
beforeRemove: import("@react-navigation/
|
|
73
|
+
transitionStart: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionStart", unknown>;
|
|
74
|
+
transitionEnd: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "transitionEnd", unknown>;
|
|
75
|
+
gestureCancel: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "gestureCancel", unknown>;
|
|
76
|
+
sheetDetentChange: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "sheetDetentChange", unknown>;
|
|
77
|
+
focus: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "focus", unknown>;
|
|
78
|
+
blur: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "blur", unknown>;
|
|
79
|
+
state: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "state", unknown>;
|
|
80
|
+
beforeRemove: import("@react-navigation/native").EventListenerCallback<NativeStackNavigationEventMap & import("@react-navigation/native").EventMapCore<StackNavigationState<ParamListBase>>, "beforeRemove", true>;
|
|
81
81
|
}>) | undefined;
|
|
82
82
|
screenOptions?: NativeStackNavigationOptions | ((props: {
|
|
83
|
-
route: import("@react-navigation/
|
|
83
|
+
route: import("@react-navigation/native").RouteProp<ParamListBase, string>;
|
|
84
84
|
navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<ParamListBase, string, string | undefined>;
|
|
85
85
|
theme: ReactNavigation.Theme;
|
|
86
86
|
}) => NativeStackNavigationOptions) | undefined;
|
|
87
|
-
screenLayout?: ((props: import("@react-navigation/
|
|
87
|
+
screenLayout?: ((props: import("@react-navigation/native").ScreenLayoutArgs<ParamListBase, string, NativeStackNavigationOptions, import("@react-navigation/native-stack").NativeStackNavigationProp<ParamListBase, string, string | undefined>>) => React.ReactElement) | undefined;
|
|
88
88
|
UNSTABLE_router?: (<Action extends Readonly<{
|
|
89
89
|
type: string;
|
|
90
90
|
payload?: object;
|