@react-navigation/native 8.0.0-alpha.34 → 8.0.0-alpha.36

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.
@@ -8,32 +8,44 @@ import { useLinkProps } from "./useLinkProps.js";
8
8
  * Component to render link to another screen using a path.
9
9
  * Uses an anchor tag on the web.
10
10
  *
11
+ * @param props.in Name of the current or parent screen whose navigator contains the target screen.
11
12
  * @param props.screen Name of the screen to navigate to (e.g. `'Feeds'`).
12
13
  * @param props.params Params to pass to the screen to navigate to (e.g. `{ sort: 'hot' }`).
13
14
  * @param props.href Optional absolute path to use for the href (e.g. `/feeds/hot`).
14
- * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.
15
+ * @param props.action Optional action to override the in-page navigation. The `href` is still derived from `screen`, so this can be used to render a link while dispatching a different action (e.g. a `replace`).
15
16
  * @param props.children Child elements to render the content.
16
17
  */
17
18
  export function Link({
19
+ in: parent,
18
20
  screen,
19
21
  params,
20
22
  action,
21
23
  href,
22
24
  style,
25
+ target,
23
26
  ...rest
24
27
  }) {
25
- const {
26
- colors,
27
- fonts
28
- } = useTheme();
29
- // @ts-expect-error: This is already type-checked by the prop types
28
+ // @ts-expect-error: destructuring loses the relationship between target props
30
29
  const props = useLinkProps({
30
+ in: parent,
31
31
  screen,
32
32
  params,
33
33
  action,
34
34
  href
35
35
  });
36
+
37
+ // Keep usage of `useTheme` after `useLinkProps`
38
+ // This ensures proper error when used outside of navigation container
39
+ const {
40
+ colors,
41
+ fonts
42
+ } = useTheme();
36
43
  const onPress = e => {
44
+ if (rest.disabled) {
45
+ e.preventDefault();
46
+ e.stopPropagation();
47
+ return;
48
+ }
37
49
  if ('onPress' in rest) {
38
50
  rest.onPress?.(e);
39
51
  }
@@ -48,7 +60,15 @@ export function Link({
48
60
  ...rest,
49
61
  ...Platform.select({
50
62
  web: {
51
- onClick: onPress
63
+ 'aria-disabled': rest.disabled,
64
+ onAuxClick: rest.disabled ? e => {
65
+ e.preventDefault();
66
+ e.stopPropagation();
67
+ } : undefined,
68
+ onClick: onPress,
69
+ hrefAttrs: {
70
+ target
71
+ }
52
72
  },
53
73
  default: {
54
74
  onPress
@@ -1 +1 @@
1
- {"version":3,"names":["useTheme","React","Platform","Text","useLinkProps","Link","screen","params","action","href","style","rest","colors","fonts","props","onPress","e","defaultPrevented","createElement","select","web","onClick","default","color","primary","regular"],"sourceRoot":"../../src","sources":["Link.tsx"],"mappings":";;AAAA,SAA6BA,QAAQ,QAAQ,wBAAwB;AACrE,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAEEC,QAAQ,EACRC,IAAI,QAEC,cAAc;AAErB,SAAyBC,YAAY,QAAQ,mBAAgB;AAe7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAGlB;EACAC,MAAM;EACNC,MAAM;EACNC,MAAM;EACNC,IAAI;EACJC,KAAK;EACL,GAAGC;AACwB,CAAC,EAAE;EAC9B,MAAM;IAAEC,MAAM;IAAEC;EAAM,CAAC,GAAGb,QAAQ,CAAC,CAAC;EACpC;EACA,MAAMc,KAAK,GAAGV,YAAY,CAAY;IAAEE,MAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,CAAC;EAEvE,MAAMM,OAAO,GACXC,CAA0E,IACvE;IACH,IAAI,SAAS,IAAIL,IAAI,EAAE;MACrBA,IAAI,CAACI,OAAO,GAAGC,CAAC,CAAC;IACnB;;IAEA;IACA,IAAI,CAACA,CAAC,CAACC,gBAAgB,EAAE;MACvBH,KAAK,CAACC,OAAO,CAACC,CAAC,CAAC;IAClB;EACF,CAAC;EAED,oBAAOf,KAAK,CAACiB,aAAa,CAACf,IAAI,EAAE;IAC/B,GAAGW,KAAK;IACR,GAAGH,IAAI;IACP,GAAGT,QAAQ,CAACiB,MAAM,CAAC;MACjBC,GAAG,EAAE;QAAEC,OAAO,EAAEN;MAAQ,CAAQ;MAChCO,OAAO,EAAE;QAAEP;MAAQ;IACrB,CAAC,CAAC;IACFL,KAAK,EAAE,CAAC;MAAEa,KAAK,EAAEX,MAAM,CAACY;IAAQ,CAAC,EAAEX,KAAK,CAACY,OAAO,EAAEf,KAAK;EACzD,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["useTheme","React","Platform","Text","useLinkProps","Link","in","parent","screen","params","action","href","style","target","rest","props","colors","fonts","onPress","e","disabled","preventDefault","stopPropagation","defaultPrevented","createElement","select","web","onAuxClick","undefined","onClick","hrefAttrs","default","color","primary","regular"],"sourceRoot":"../../src","sources":["Link.tsx"],"mappings":";;AAAA,SAA6BA,QAAQ,QAAQ,wBAAwB;AACrE,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAEEC,QAAQ,EACRC,IAAI,QAEC,cAAc;AAErB,SAAyBC,YAAY,QAAQ,mBAAgB;AAa7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAMlB;EACAC,EAAE,EAAEC,MAAM;EACVC,MAAM;EACNC,MAAM;EACNC,MAAM;EACNC,IAAI;EACJC,KAAK;EACLC,MAAM;EACN,GAAGC;AACqD,CAAC,EAAE;EAC3D;EACA,MAAMC,KAAK,GAAGX,YAAY,CAAC;IAAEE,EAAE,EAAEC,MAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,CAAC;;EAExE;EACA;EACA,MAAM;IAAEK,MAAM;IAAEC;EAAM,CAAC,GAAGjB,QAAQ,CAAC,CAAC;EAEpC,MAAMkB,OAAO,GAAIC,CAAa,IAAK;IACjC,IAAIL,IAAI,CAACM,QAAQ,EAAE;MACjBD,CAAC,CAACE,cAAc,CAAC,CAAC;MAClBF,CAAC,CAACG,eAAe,CAAC,CAAC;MACnB;IACF;IAEA,IAAI,SAAS,IAAIR,IAAI,EAAE;MACrBA,IAAI,CAACI,OAAO,GAAGC,CAAC,CAAC;IACnB;;IAEA;IACA,IAAI,CAACA,CAAC,CAACI,gBAAgB,EAAE;MACvBR,KAAK,CAACG,OAAO,CAACC,CAAC,CAAC;IAClB;EACF,CAAC;EAED,oBAAOlB,KAAK,CAACuB,aAAa,CAACrB,IAAI,EAAE;IAC/B,GAAGY,KAAK;IACR,GAAGD,IAAI;IACP,GAAGZ,QAAQ,CAACuB,MAAM,CAAC;MACjBC,GAAG,EAAE;QACH,eAAe,EAAEZ,IAAI,CAACM,QAAQ;QAC9BO,UAAU,EAAEb,IAAI,CAACM,QAAQ,GACpBD,CAAkD,IAAK;UACtDA,CAAC,CAACE,cAAc,CAAC,CAAC;UAClBF,CAAC,CAACG,eAAe,CAAC,CAAC;QACrB,CAAC,GACDM,SAAS;QACbC,OAAO,EAAEX,OAAO;QAChBY,SAAS,EAAE;UAAEjB;QAAO;MACtB,CAAC;MACDkB,OAAO,EAAE;QAAEb;MAAQ;IACrB,CAAC,CAAC;IACFN,KAAK,EAAE,CAAC;MAAEoB,KAAK,EAAEhB,MAAM,CAACiB;IAAQ,CAAC,EAAEhB,KAAK,CAACiB,OAAO,EAAEtB,KAAK;EACzD,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -189,6 +189,7 @@ export function createMemoryHistory() {
189
189
  // But on Firefox, it seems to take much longer, around 50ms from our testing
190
190
  // We're using a hacky timeout since there doesn't seem to be way to know for sure
191
191
  const timer = setTimeout(() => {
192
+ window.removeEventListener('popstate', onPopState);
192
193
  const foundIndex = pending.findIndex(it => it.ref === done);
193
194
  if (foundIndex > -1) {
194
195
  pending[foundIndex]?.cb();
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","getPathWithoutHash","path","split","createMemoryHistory","index","items","pending","interrupt","forEach","it","cb","history","id","window","state","findIndex","item","get","backIndex","pathWithoutHash","i","push","slice","length","pushState","replace","pathWithHash","hash","includes","location","replaceState","go","n","nextIndex","lastItemIndex","targetId","Promise","resolve","reject","done","interrupted","clearTimeout","timer","Error","title","document","ref","setTimeout","foundIndex","splice","onPopState","last","pop","removeEventListener","addEventListener","listen","listener"],"sourceRoot":"../../src","sources":["createMemoryHistory.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nanoid","getPathWithoutHash","path","split","createMemoryHistory","index","items","pending","interrupt","forEach","it","cb","history","id","window","state","findIndex","item","get","backIndex","pathWithoutHash","i","push","slice","length","pushState","replace","pathWithHash","hash","includes","location","replaceState","go","n","nextIndex","lastItemIndex","targetId","Promise","resolve","reject","done","interrupted","clearTimeout","timer","Error","title","document","ref","setTimeout","removeEventListener","onPopState","foundIndex","splice","last","pop","addEventListener","listen","listener"],"sourceRoot":"../../src","sources":["createMemoryHistory.tsx"],"mappings":"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","ignoreList":[]}
@@ -29,4 +29,4 @@ export default codegenNativeComponent<NativeProps>(
29
29
  {
30
30
  interfaceOnly: true,
31
31
  }
32
- ) as HostComponent<NativeProps>;
32
+ );
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ import isEqual from 'fast-deep-equal';
4
+ import * as React from 'react';
5
+ export function useDeepStableValue(value) {
6
+ const valueRef = React.useRef(value);
7
+ if (!isEqual(valueRef.current, value)) {
8
+ valueRef.current = value;
9
+ }
10
+ return valueRef.current;
11
+ }
12
+ //# sourceMappingURL=useDeepStableValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isEqual","React","useDeepStableValue","value","valueRef","useRef","current"],"sourceRoot":"../../src","sources":["useDeepStableValue.tsx"],"mappings":";;AAAA,OAAOA,OAAO,MAAM,iBAAiB;AACrC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,OAAO,SAASC,kBAAkBA,CAAIC,KAAQ,EAAK;EACjD,MAAMC,QAAQ,GAAGH,KAAK,CAACI,MAAM,CAACF,KAAK,CAAC;EAEpC,IAAI,CAACH,OAAO,CAACI,QAAQ,CAACE,OAAO,EAAEH,KAAK,CAAC,EAAE;IACrCC,QAAQ,CAACE,OAAO,GAAGH,KAAK;EAC1B;EAEA,OAAOC,QAAQ,CAACE,OAAO;AACzB","ignoreList":[]}
@@ -1,34 +1,136 @@
1
1
  "use strict";
2
2
 
3
- import { getPathFromState, NavigationContainerRefContext, NavigationHelpersContext } from '@react-navigation/core';
3
+ import { CommonActions, getPathFromState, NavigationContainerRefContext, NavigationContext, NavigationFocusedRouteStateContext, NavigationHelpersContext } from '@react-navigation/core';
4
4
  import * as React from 'react';
5
5
  import { Platform } from 'react-native';
6
+ import useLatestCallback from 'use-latest-callback';
6
7
  import { LinkingContext } from "./LinkingContext.js";
8
+ import { useDeepStableValue } from "./useDeepStableValue.js";
9
+ const NESTED_KEYS = ['payload', 'params', 'state', 'routes'];
10
+ const NESTED_PARAMS_KEYS = ['params', 'state'];
11
+ const NAVIGATE_ACTION_TYPES = ['NAVIGATE', 'PUSH', 'REPLACE', 'POP_TO', 'JUMP_TO'];
12
+ /**
13
+ * Nested params are tracked as consumed after handling
14
+ * So navigating with same params again won't work
15
+ * This can happen if the action or params are memoized
16
+ * Or component hasn't re-renderd to re-create inline objects
17
+ * So we clone the action and params when necessary before dispatch
18
+ */
19
+
20
+ function clone(value, keys = NESTED_KEYS, clones) {
21
+ if (typeof value !== 'object' || value == null) {
22
+ return value;
23
+ }
24
+ const existing = clones?.get(value);
25
+ if (existing) {
26
+ return existing;
27
+ }
28
+ const isArray = Array.isArray(value);
29
+ if (keys === NESTED_PARAMS_KEYS && 'screen' in value && typeof value.screen !== 'string' && !('state' in value && typeof value.state === 'object' && value.state != null && 'routes' in value.state && Array.isArray(value.state.routes))) {
30
+ return value;
31
+ }
32
+ let copy = keys === NESTED_PARAMS_KEYS ? {
33
+ ...value
34
+ } : undefined;
35
+ clones ??= new WeakMap();
36
+ clones.set(value, copy ?? value);
37
+ for (const key of isArray ? value.keys() : keys) {
38
+ const nested = Reflect.get(value, key);
39
+ const cloned = clone(nested, key === 'params' ? NESTED_PARAMS_KEYS : NESTED_KEYS, clones);
40
+ if (cloned !== nested) {
41
+ copy ??= isArray ? [...value] : {
42
+ ...value
43
+ };
44
+ clones.set(value, copy);
45
+ Reflect.set(copy, key, cloned);
46
+ }
47
+ }
48
+ return copy ?? value;
49
+ }
50
+ const getTargetFromAction = (action, screens) => {
51
+ if (action === undefined || screens === undefined) {
52
+ return undefined;
53
+ }
54
+ const {
55
+ payload
56
+ } = action;
57
+ if (!NAVIGATE_ACTION_TYPES.includes(action.type) || payload === undefined || !('name' in payload) || typeof payload.name !== 'string' || !(payload.name in screens)) {
58
+ return undefined;
59
+ }
60
+ return {
61
+ screen: payload.name,
62
+ params: 'params' in payload && typeof payload.params === 'object' && payload.params != null ? payload.params : undefined
63
+ };
64
+ };
65
+ const getStateForParent = (parent, targetState, focusedRouteState) => {
66
+ if (parent === undefined) {
67
+ return targetState;
68
+ }
69
+ if (focusedRouteState === undefined) {
70
+ return undefined;
71
+ }
72
+ const route = focusedRouteState.routes[0];
73
+ const childState = getStateForParent(parent, targetState, route.state);
74
+ if (childState !== undefined) {
75
+ return {
76
+ routes: [{
77
+ ...route,
78
+ state: childState
79
+ }]
80
+ };
81
+ }
82
+ if (route.name === parent) {
83
+ return targetState;
84
+ }
85
+ return undefined;
86
+ };
87
+
7
88
  /**
8
89
  * Hook to get props for an anchor tag so it can work with in page navigation.
9
90
  *
91
+ * @param props.in Name of the current or parent screen whose navigator contains the target screen.
10
92
  * @param props.screen Name of the screen to navigate to (e.g. `'Feeds'`).
11
93
  * @param props.params Params to pass to the screen to navigate to (e.g. `{ sort: 'hot' }`).
12
94
  * @param props.href Optional absolute path to use for the href (e.g. `/feeds/hot`).
13
- * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.
95
+ * @param props.action Optional action to override the in-page navigation. The `href` is still derived from `screen`, so this can be used to render a link while dispatching a different action (e.g. a `replace`).
14
96
  */
15
97
  export function useLinkProps({
98
+ in: parent,
16
99
  screen,
17
100
  params,
18
- href,
19
- action
101
+ action,
102
+ ...rest
20
103
  }) {
21
104
  const root = React.use(NavigationContainerRefContext);
22
- const navigation = React.use(NavigationHelpersContext);
105
+ let navigation = React.use(NavigationContext);
106
+ if (parent != null) {
107
+ navigation = navigation?.getParent(parent);
108
+ } else if (action != null) {
109
+ const helpers = React.use(NavigationHelpersContext);
110
+
111
+ // Handle custom actions in the immediate parent
112
+ navigation = helpers ?? navigation ?? root;
113
+ } else {
114
+ // The ref dispatches in currently focused screen
115
+ // So prefer the top-most navigator if available
116
+ let parent = navigation?.getParent();
117
+ while (parent !== undefined) {
118
+ navigation = parent;
119
+ parent = navigation.getParent();
120
+ }
121
+ navigation = navigation ?? root;
122
+ }
123
+ if (navigation == null) {
124
+ if (parent != null) {
125
+ throw new Error(`Couldn't find a navigation object for '${parent}' in current or any parent screens. Is your component inside the correct screen?`);
126
+ }
127
+ throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
128
+ }
23
129
  const {
24
130
  options
25
131
  } = React.use(LinkingContext);
26
- const onPress = e => {
27
- let shouldHandle = false;
28
- if (Platform.OS !== 'web' || !e) {
29
- e?.preventDefault?.();
30
- shouldHandle = true;
31
- } else {
132
+ const onPress = useLatestCallback(e => {
133
+ if (Platform.OS === 'web' && e) {
32
134
  // ignore clicks with modifier keys
33
135
  const hasModifierKey = 'metaKey' in e && e.metaKey || 'altKey' in e && e.altKey || 'ctrlKey' in e && e.ctrlKey || 'shiftKey' in e && e.shiftKey;
34
136
 
@@ -36,55 +138,56 @@ export function useLinkProps({
36
138
  const isLeftClick = 'button' in e ? e.button == null || e.button === 0 : true;
37
139
 
38
140
  // let browser handle "target=_blank" etc.
39
- const isSelfTarget = e.currentTarget && 'target' in e.currentTarget ? [undefined, null, '', 'self'].includes(e.currentTarget.target) : true;
40
- if (!hasModifierKey && isLeftClick && isSelfTarget) {
41
- e.preventDefault?.();
42
- shouldHandle = true;
141
+ const isSelfTarget = e.currentTarget && 'target' in e.currentTarget ? [undefined, null, '', '_self'].includes(e.currentTarget.target) : true;
142
+
143
+ // let the browser handle the interaction
144
+ if (hasModifierKey || !isLeftClick || !isSelfTarget) {
145
+ return;
43
146
  }
44
147
  }
45
- if (shouldHandle) {
46
- if (action) {
47
- if (navigation) {
48
- navigation.dispatch(action);
49
- } else if (root) {
50
- root.dispatch(action);
51
- } else {
52
- throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
53
- }
54
- } else {
55
- // @ts-expect-error This is already type-checked by the prop types
56
- navigation?.navigate(screen, params);
148
+ e?.preventDefault();
149
+ let cloned;
150
+ if (action != null) {
151
+ cloned = clone(action);
152
+ } else {
153
+ if (screen == null) {
154
+ throw new Error("Couldn't find a screen to navigate to. Make sure to provide a screen name.");
57
155
  }
58
- }
59
- };
60
- const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
61
- if (Platform.OS === 'web') {
62
- if (screen == null && action != null && options?.config != null) {
63
- switch (action.type) {
64
- case 'NAVIGATE':
65
- case 'PUSH':
66
- case 'REPLACE':
67
- case 'POP_TO':
68
- case 'JUMP_TO':
69
- {
70
- if (action.payload != null && 'name' in action.payload && typeof action.payload.name === 'string' && action.payload.name in options.config.screens) {
71
- screen = action.payload.name;
72
- if ('params' in action.payload && typeof action.payload.params === 'object' && action.payload.params != null) {
73
- // @ts-expect-error this is fine 🔥
74
- params = action.payload.params;
75
- }
76
- }
77
- }
156
+ cloned = clone(CommonActions.navigate(screen,
157
+ // @ts-expect-error This is already type-checked by the prop types
158
+ params));
159
+ if (parent != null) {
160
+ cloned = {
161
+ ...cloned,
162
+ target: navigation.getState()?.key
163
+ };
78
164
  }
79
165
  }
80
- }
81
- return {
82
- href: href ?? (Platform.OS === 'web' && typeof screen === 'string' ? getPathFromStateHelper({
166
+ navigation.dispatch(cloned);
167
+ });
168
+ const target = useDeepStableValue(Platform.OS === 'web' ? typeof screen === 'string' ? {
169
+ screen,
170
+ params: typeof params === 'object' && params != null ? params : undefined
171
+ } : getTargetFromAction(action, options?.config?.screens) : undefined);
172
+ const state = Platform.OS === 'web' && rest.href == null && target != null ? React.use(NavigationFocusedRouteStateContext) : undefined;
173
+ const href = React.useMemo(() => {
174
+ if (Platform.OS !== 'web' || rest.href != null || target == null) {
175
+ return rest.href;
176
+ }
177
+ const stateForParent = getStateForParent(parent, {
83
178
  routes: [{
84
- name: screen,
85
- params: typeof params === 'object' && params != null ? params : undefined
179
+ name: target.screen,
180
+ params: target.params
86
181
  }]
87
- }, options?.config) : undefined),
182
+ }, state);
183
+ if (stateForParent) {
184
+ const getPath = options?.getPathFromState ?? getPathFromState;
185
+ return getPath(stateForParent, options?.config);
186
+ }
187
+ return undefined;
188
+ }, [rest.href, target, parent, state, options?.getPathFromState, options?.config]);
189
+ return {
190
+ href,
88
191
  role: 'link',
89
192
  onPress
90
193
  };
@@ -1 +1 @@
1
- {"version":3,"names":["getPathFromState","NavigationContainerRefContext","NavigationHelpersContext","React","Platform","LinkingContext","useLinkProps","screen","params","href","action","root","use","navigation","options","onPress","e","shouldHandle","OS","preventDefault","hasModifierKey","metaKey","altKey","ctrlKey","shiftKey","isLeftClick","button","isSelfTarget","currentTarget","undefined","includes","target","dispatch","Error","navigate","getPathFromStateHelper","config","type","payload","name","screens","routes","role"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CommonActions","getPathFromState","NavigationContainerRefContext","NavigationContext","NavigationFocusedRouteStateContext","NavigationHelpersContext","React","Platform","useLatestCallback","LinkingContext","useDeepStableValue","NESTED_KEYS","NESTED_PARAMS_KEYS","NAVIGATE_ACTION_TYPES","clone","value","keys","clones","existing","get","isArray","Array","screen","state","routes","copy","undefined","WeakMap","set","key","nested","Reflect","cloned","getTargetFromAction","action","screens","payload","includes","type","name","params","getStateForParent","parent","targetState","focusedRouteState","route","childState","useLinkProps","in","rest","root","use","navigation","getParent","helpers","Error","options","onPress","e","OS","hasModifierKey","metaKey","altKey","ctrlKey","shiftKey","isLeftClick","button","isSelfTarget","currentTarget","target","preventDefault","navigate","getState","dispatch","config","href","useMemo","stateForParent","getPath","role"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,22 +2,24 @@ import { type RootParamList } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
3
  import { type GestureResponderEvent, Text, type TextProps } from 'react-native';
4
4
  import { type LinkProps } from './useLinkProps.js';
5
- type Props<ParamList extends {} = RootParamList, RouteName extends keyof ParamList = keyof ParamList> = LinkProps<ParamList, RouteName> & Omit<TextProps, 'disabled'> & {
5
+ type PressEvent = React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent;
6
+ type LinkBaseProps = Omit<TextProps, 'disabled'> & {
6
7
  target?: string;
7
- onPress?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent) => void;
8
- disabled?: boolean | null;
8
+ onPress?: (e: PressEvent) => void;
9
+ disabled?: boolean | undefined;
9
10
  children: React.ReactNode;
10
11
  };
11
12
  /**
12
13
  * Component to render link to another screen using a path.
13
14
  * Uses an anchor tag on the web.
14
15
  *
16
+ * @param props.in Name of the current or parent screen whose navigator contains the target screen.
15
17
  * @param props.screen Name of the screen to navigate to (e.g. `'Feeds'`).
16
18
  * @param props.params Params to pass to the screen to navigate to (e.g. `{ sort: 'hot' }`).
17
19
  * @param props.href Optional absolute path to use for the href (e.g. `/feeds/hot`).
18
- * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.
20
+ * @param props.action Optional action to override the in-page navigation. The `href` is still derived from `screen`, so this can be used to render a link while dispatching a different action (e.g. a `replace`).
19
21
  * @param props.children Child elements to render the content.
20
22
  */
21
- export declare function Link<const ParamList extends {} = RootParamList, const RouteName extends keyof ParamList = keyof ParamList>({ screen, params, action, href, style, ...rest }: Props<ParamList, RouteName>): React.CElement<TextProps, Text>;
23
+ export declare function Link<ParamList extends {} = RootParamList, RouteName extends Extract<keyof ParamList, string> = Extract<keyof ParamList, string>>({ in: parent, screen, params, action, href, style, target, ...rest }: LinkProps<NoInfer<ParamList>, RouteName> & LinkBaseProps): React.CElement<TextProps, Text>;
22
24
  export {};
23
25
  //# sourceMappingURL=Link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,qBAAqB,EAE1B,IAAI,EACJ,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,mBAAgB,CAAC;AAE9D,KAAK,KAAK,CACR,SAAS,SAAS,EAAE,GAAG,aAAa,EACpC,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IACjD,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,GACjC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CACR,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,qBAAqB,KACvE,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEJ;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAClB,KAAK,CAAC,SAAS,SAAS,EAAE,GAAG,aAAa,EAC1C,KAAK,CAAC,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,EACzD,EACA,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,GAAG,IAAI,EACR,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,mCA2B7B"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,qBAAqB,EAE1B,IAAI,EACJ,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,mBAAgB,CAAC;AAE9D,KAAK,UAAU,GACX,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAC/C,qBAAqB,CAAC;AAE1B,KAAK,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAClB,SAAS,SAAS,EAAE,GAAG,aAAa,EACpC,SAAS,SAAS,OAAO,CAAC,MAAM,SAAS,EAAE,MAAM,CAAC,GAAG,OAAO,CAC1D,MAAM,SAAS,EACf,MAAM,CACP,EACD,EACA,EAAE,EAAE,MAAM,EACV,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,aAAa,mCA4C1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"createMemoryHistory.d.ts","sourceRoot":"","sources":["../../../src/createMemoryHistory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,KAAK,aAAa,GAAG;IAEnB,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,eAAe,CAAC;IAEvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,wBAAgB,mBAAmB;oBAmBlB,MAAM;eAcR,MAAM;wBAIG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;0BAmBd;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;6BAoBrC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;UAwC3D,MAAM;qBAgGK,MAAM,IAAI;EAqB9B"}
1
+ {"version":3,"file":"createMemoryHistory.d.ts","sourceRoot":"","sources":["../../../src/createMemoryHistory.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,KAAK,aAAa,GAAG;IAEnB,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,eAAe,CAAC;IAEvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,wBAAgB,mBAAmB;oBAmBlB,MAAM;eAcR,MAAM;wBAIG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;0BAmBd;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;6BAoBrC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;UAwC3D,MAAM;qBAkGK,MAAM,IAAI;EAqB9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReactNavigationCornerInsetViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/native/ReactNavigationCornerInsetViewNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,UAAU,GAAG,YAAY,EAAE,UAAU,CAAC,CAAC;IAC5E,IAAI,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5E,QAAQ,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;CACpD;AAED,UAAU,cAAc;IAGtB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC;CACvE;AAED,eAAO,MAAM,QAAQ,gBAEnB,CAAC;wBAOE,aAAa,CAAC,WAAW,CAAC;AAL/B,wBAKgC"}
1
+ {"version":3,"file":"ReactNavigationCornerInsetViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/native/ReactNavigationCornerInsetViewNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,UAAU,GAAG,YAAY,EAAE,UAAU,CAAC,CAAC;IAC5E,IAAI,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5E,QAAQ,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;CACpD;AAED,UAAU,cAAc;IAGtB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC;CACvE;AAED,eAAO,MAAM,QAAQ,gBAEnB,CAAC;;AAEH,wBAKE"}
@@ -0,0 +1,2 @@
1
+ export declare function useDeepStableValue<T>(value: T): T;
2
+ //# sourceMappingURL=useDeepStableValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeepStableValue.d.ts","sourceRoot":"","sources":["../../../src/useDeepStableValue.tsx"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQjD"}
@@ -1,32 +1,56 @@
1
- import { type NavigationAction, type RootParamList } from '@react-navigation/core';
1
+ import { type NavigationAction, type NavigatorScreenParams, type ParamListForNavigator, type RootParamList } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
3
  import { type GestureResponderEvent } from 'react-native';
4
- export type LinkProps<ParamList extends {} = RootParamList, RouteName extends keyof ParamList = keyof ParamList> = ({
4
+ type LinkScreenTargetProps<ParamList extends {}, RouteName extends Extract<keyof ParamList, string> = Extract<keyof ParamList, string>> = RouteName extends unknown ? undefined extends ParamList[RouteName] ? {
5
5
  href?: string | undefined;
6
6
  action?: NavigationAction | undefined;
7
- } & (RouteName extends unknown ? undefined extends ParamList[RouteName] ? {
7
+ in?: Extract<keyof ParamList, string> | undefined;
8
8
  screen: RouteName;
9
9
  params?: ParamList[RouteName] | undefined;
10
10
  } : {
11
+ href?: string | undefined;
12
+ action?: NavigationAction | undefined;
13
+ in?: Extract<keyof ParamList, string> | undefined;
14
+ screen: RouteName;
15
+ params: ParamList[RouteName];
16
+ } : never;
17
+ type LinkScreenTargetPropsWithIn<ParamList extends {}, RouteName extends Extract<keyof ParamList, string> = Extract<keyof ParamList, string>> = RouteName extends unknown ? undefined extends ParamList[RouteName] ? {
18
+ href?: string | undefined;
19
+ action?: NavigationAction | undefined;
20
+ in: Extract<keyof ParamList, string>;
21
+ screen: RouteName;
22
+ params?: ParamList[RouteName] | undefined;
23
+ } : {
24
+ href?: string | undefined;
25
+ action?: NavigationAction | undefined;
26
+ in: Extract<keyof ParamList, string>;
11
27
  screen: RouteName;
12
28
  params: ParamList[RouteName];
13
- } : never)) | {
29
+ } : never;
30
+ type LinkPropsWithInForParams<Params> = [Params] extends [never] ? never : [Params] extends [NavigatorScreenParams<infer Navigator>] ? ParamListForNavigator<Navigator> extends infer NestedParamList extends {} ? LinkScreenTargetPropsWithIn<NestedParamList> | LinkPropsWithIn<NestedParamList> : never : never;
31
+ type LinkPropsWithIn<ParamList extends {}> = string extends keyof ParamList ? never : {
32
+ [RouteName in keyof ParamList]: LinkPropsWithInForParams<Exclude<ParamList[RouteName], undefined>>;
33
+ }[keyof ParamList];
34
+ export type LinkProps<ParamList extends {} = RootParamList, RouteName extends Extract<keyof ParamList, string> = Extract<keyof ParamList, string>> = LinkScreenTargetProps<ParamList, RouteName> | LinkPropsWithIn<ParamList> | {
14
35
  href?: string | undefined;
15
36
  action: NavigationAction;
37
+ in?: undefined;
16
38
  screen?: undefined;
17
39
  params?: undefined;
18
40
  };
19
41
  /**
20
42
  * Hook to get props for an anchor tag so it can work with in page navigation.
21
43
  *
44
+ * @param props.in Name of the current or parent screen whose navigator contains the target screen.
22
45
  * @param props.screen Name of the screen to navigate to (e.g. `'Feeds'`).
23
46
  * @param props.params Params to pass to the screen to navigate to (e.g. `{ sort: 'hot' }`).
24
47
  * @param props.href Optional absolute path to use for the href (e.g. `/feeds/hot`).
25
- * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.
48
+ * @param props.action Optional action to override the in-page navigation. The `href` is still derived from `screen`, so this can be used to render a link while dispatching a different action (e.g. a `replace`).
26
49
  */
27
- export declare function useLinkProps<const ParamList extends {} = RootParamList, const RouteName extends keyof ParamList = keyof ParamList>({ screen, params, href, action }: LinkProps<ParamList, RouteName>): {
28
- href: string | undefined;
50
+ export declare function useLinkProps<ParamList extends {} = RootParamList, RouteName extends Extract<keyof ParamList, string> = Extract<keyof ParamList, string>>({ in: parent, screen, params, action, ...rest }: LinkProps<NoInfer<ParamList>, RouteName>): {
51
+ href: string | LinkScreenTargetProps<NoInfer<ParamList>, RouteName>["href"] | undefined;
29
52
  role: "link";
30
53
  onPress: (e?: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent) => void;
31
54
  };
55
+ export {};
32
56
  //# sourceMappingURL=useLinkProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkProps.d.ts","sourceRoot":"","sources":["../../../src/useLinkProps.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAGrB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAY,MAAM,cAAc,CAAC;AAIpE,MAAM,MAAM,SAAS,CACnB,SAAS,SAAS,EAAE,GAAG,aAAa,EACpC,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IAEjD,CAAC;IACC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACvC,GAAG,CAAC,SAAS,SAAS,OAAO,GAC1B,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACrD,KAAK,CAAC,CAAC,GACX;IACE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAEN;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,CAAC,SAAS,SAAS,EAAE,GAAG,aAAa,EAC1C,KAAK,CAAC,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,EACzD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;;;kBAM3D,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,qBAAqB;EAuG9E"}
1
+ {"version":3,"file":"useLinkProps.d.ts","sourceRoot":"","sources":["../../../src/useLinkProps.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/native",
3
3
  "description": "React Native integration for React Navigation",
4
- "version": "8.0.0-alpha.34",
4
+ "version": "8.0.0-alpha.36",
5
5
  "keywords": [
6
6
  "react-native",
7
7
  "react-navigation",
@@ -62,12 +62,12 @@
62
62
  "clean": "del lib"
63
63
  },
64
64
  "dependencies": {
65
- "@react-navigation/core": "^8.0.0-alpha.25",
65
+ "@react-navigation/core": "^8.0.0-alpha.27",
66
66
  "escape-string-regexp": "^5.0.0",
67
67
  "fast-deep-equal": "^3.1.3",
68
68
  "nanoid": "^5.1.11",
69
69
  "sf-symbols-typescript": "^2.2.0",
70
- "standard-navigation": "^0.0.7",
70
+ "standard-navigation": "^0.0.8",
71
71
  "use-latest-callback": "^0.3.4"
72
72
  },
73
73
  "devDependencies": {
@@ -76,9 +76,9 @@
76
76
  "@types/react": "~19.2.17",
77
77
  "@types/react-dom": "~19.2.3",
78
78
  "del-cli": "^7.0.0",
79
- "react": "19.2.0",
80
- "react-dom": "19.2.0",
81
- "react-native": "0.83.6",
79
+ "react": "19.2.3",
80
+ "react-dom": "19.2.3",
81
+ "react-native": "0.85.3",
82
82
  "react-native-builder-bob": "^0.43.0",
83
83
  "test-renderer": "1.2.0",
84
84
  "typescript": "^6.0.3"
@@ -127,5 +127,5 @@
127
127
  }
128
128
  }
129
129
  },
130
- "gitHead": "7e0376c860594b1c33543a6fab508165919f15a7"
130
+ "gitHead": "0a69dc7df922ebec7f6e60a6f4eac753545e3977"
131
131
  }