@amazon-devices/react-navigation__native 8.0.9000000000 → 8.0.9000000002

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.
Files changed (67) hide show
  1. package/SystemModules/amzn__react-navigation__native-8.private.modules.txt +38 -33
  2. package/kepler-compatibility.json +4 -2
  3. package/lib/module/index.js +0 -19
  4. package/oss-attribution/attribution.txt +50 -0
  5. package/oss-attribution/licenseInfos.json +18 -0
  6. package/package.json +1 -1
  7. package/src/index.tsx +1 -17
  8. package/SystemBundles/0fc5c971c5cf41a0dab235bcc6d58e5c06d9aaff650fa9815b525f8b9bb70a03.bundle +0 -9116
  9. package/SystemBundles/0fc5c971c5cf41a0dab235bcc6d58e5c06d9aaff650fa9815b525f8b9bb70a03.map +0 -3543
  10. package/lib/module/Link.js +0 -62
  11. package/lib/module/LinkingContext.js +0 -11
  12. package/lib/module/LocaleDirContext.js +0 -6
  13. package/lib/module/NavigationContainer.js +0 -128
  14. package/lib/module/ServerContainer.js +0 -55
  15. package/lib/module/ServerContext.js +0 -5
  16. package/lib/module/UnhandledLinkingContext.js +0 -14
  17. package/lib/module/__stubs__/createStackNavigator.js +0 -18
  18. package/lib/module/__stubs__/window.js +0 -75
  19. package/lib/module/createMemoryHistory.js +0 -216
  20. package/lib/module/createStaticNavigation.js +0 -54
  21. package/lib/module/extractPathFromURL.js +0 -19
  22. package/lib/module/theming/DarkTheme.js +0 -16
  23. package/lib/module/theming/DefaultTheme.js +0 -16
  24. package/lib/module/theming/fonts.js +0 -61
  25. package/lib/module/types.js +0 -4
  26. package/lib/module/useBackButton.js +0 -7
  27. package/lib/module/useBackButton.native.js +0 -21
  28. package/lib/module/useDocumentTitle.js +0 -26
  29. package/lib/module/useDocumentTitle.native.js +0 -6
  30. package/lib/module/useLinkBuilder.js +0 -85
  31. package/lib/module/useLinkProps.js +0 -93
  32. package/lib/module/useLinkTo.js +0 -26
  33. package/lib/module/useLinking.js +0 -320
  34. package/lib/module/useLinking.native.js +0 -148
  35. package/lib/module/useLocale.js +0 -18
  36. package/lib/module/useRoutePath.js +0 -30
  37. package/lib/module/useScrollToTop.js +0 -91
  38. package/lib/module/useThenable.js +0 -36
  39. package/src/Link.tsx +0 -69
  40. package/src/LinkingContext.tsx +0 -16
  41. package/src/LocaleDirContext.tsx +0 -7
  42. package/src/NavigationContainer.tsx +0 -211
  43. package/src/ServerContainer.tsx +0 -57
  44. package/src/ServerContext.tsx +0 -12
  45. package/src/UnhandledLinkingContext.tsx +0 -18
  46. package/src/__stubs__/createStackNavigator.tsx +0 -46
  47. package/src/__stubs__/window.tsx +0 -77
  48. package/src/createMemoryHistory.tsx +0 -229
  49. package/src/createStaticNavigation.tsx +0 -109
  50. package/src/extractPathFromURL.tsx +0 -29
  51. package/src/theming/DarkTheme.tsx +0 -15
  52. package/src/theming/DefaultTheme.tsx +0 -15
  53. package/src/theming/fonts.tsx +0 -63
  54. package/src/types.tsx +0 -191
  55. package/src/useBackButton.native.tsx +0 -33
  56. package/src/useBackButton.tsx +0 -11
  57. package/src/useDocumentTitle.native.tsx +0 -3
  58. package/src/useDocumentTitle.tsx +0 -41
  59. package/src/useLinkBuilder.tsx +0 -127
  60. package/src/useLinkProps.tsx +0 -156
  61. package/src/useLinkTo.tsx +0 -31
  62. package/src/useLinking.native.tsx +0 -217
  63. package/src/useLinking.tsx +0 -442
  64. package/src/useLocale.tsx +0 -18
  65. package/src/useRoutePath.tsx +0 -34
  66. package/src/useScrollToTop.tsx +0 -120
  67. package/src/useThenable.tsx +0 -42
@@ -1,16 +0,0 @@
1
- "use strict";
2
-
3
- import { fonts } from "./fonts.js";
4
- export const DarkTheme = {
5
- dark: true,
6
- colors: {
7
- primary: 'rgb(10, 132, 255)',
8
- background: 'rgb(1, 1, 1)',
9
- card: 'rgb(18, 18, 18)',
10
- text: 'rgb(229, 229, 231)',
11
- border: 'rgb(39, 39, 41)',
12
- notification: 'rgb(255, 69, 58)'
13
- },
14
- fonts
15
- };
16
- //# sourceMappingURL=DarkTheme.js.map
@@ -1,16 +0,0 @@
1
- "use strict";
2
-
3
- import { fonts } from "./fonts.js";
4
- export const DefaultTheme = {
5
- dark: false,
6
- colors: {
7
- primary: 'rgb(0, 122, 255)',
8
- background: 'rgb(242, 242, 242)',
9
- card: 'rgb(255, 255, 255)',
10
- text: 'rgb(28, 28, 30)',
11
- border: 'rgb(216, 216, 216)',
12
- notification: 'rgb(255, 59, 48)'
13
- },
14
- fonts
15
- };
16
- //# sourceMappingURL=DefaultTheme.js.map
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- import { Platform } from 'react-native';
4
- const WEB_FONT_STACK = 'system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"';
5
- export const fonts = Platform.select({
6
- web: {
7
- regular: {
8
- fontFamily: WEB_FONT_STACK,
9
- fontWeight: '400'
10
- },
11
- medium: {
12
- fontFamily: WEB_FONT_STACK,
13
- fontWeight: '500'
14
- },
15
- bold: {
16
- fontFamily: WEB_FONT_STACK,
17
- fontWeight: '600'
18
- },
19
- heavy: {
20
- fontFamily: WEB_FONT_STACK,
21
- fontWeight: '700'
22
- }
23
- },
24
- ios: {
25
- regular: {
26
- fontFamily: 'System',
27
- fontWeight: '400'
28
- },
29
- medium: {
30
- fontFamily: 'System',
31
- fontWeight: '500'
32
- },
33
- bold: {
34
- fontFamily: 'System',
35
- fontWeight: '600'
36
- },
37
- heavy: {
38
- fontFamily: 'System',
39
- fontWeight: '700'
40
- }
41
- },
42
- default: {
43
- regular: {
44
- fontFamily: 'sans-serif',
45
- fontWeight: 'normal'
46
- },
47
- medium: {
48
- fontFamily: 'sans-serif-medium',
49
- fontWeight: 'normal'
50
- },
51
- bold: {
52
- fontFamily: 'sans-serif',
53
- fontWeight: '600'
54
- },
55
- heavy: {
56
- fontFamily: 'sans-serif',
57
- fontWeight: '700'
58
- }
59
- }
60
- });
61
- //# sourceMappingURL=fonts.js.map
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- export {};
4
- //# sourceMappingURL=types.js.map
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- export function useBackButton(_) {
4
- // No-op
5
- // BackHandler is not available on web
6
- }
7
- //# sourceMappingURL=useBackButton.js.map
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- import * as React from 'react';
4
- import { BackHandler } from 'react-native';
5
- export function useBackButton(ref) {
6
- React.useEffect(() => {
7
- const subscription = BackHandler.addEventListener('hardwareBackPress', () => {
8
- const navigation = ref.current;
9
- if (navigation == null) {
10
- return false;
11
- }
12
- if (navigation.canGoBack()) {
13
- navigation.goBack();
14
- return true;
15
- }
16
- return false;
17
- });
18
- return () => subscription.remove();
19
- }, [ref]);
20
- }
21
- //# sourceMappingURL=useBackButton.native.js.map
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- import * as React from 'react';
4
- /**
5
- * Set the document title for the active screen
6
- */
7
- export function useDocumentTitle(ref, {
8
- enabled = true,
9
- formatter = (options, route) => options?.title ?? route?.name
10
- } = {}) {
11
- React.useEffect(() => {
12
- if (!enabled) {
13
- return;
14
- }
15
- const navigation = ref.current;
16
- if (navigation) {
17
- const title = formatter(navigation.getCurrentOptions(), navigation.getCurrentRoute());
18
- document.title = title;
19
- }
20
- return navigation?.addListener('options', e => {
21
- const title = formatter(e.data.options, navigation?.getCurrentRoute());
22
- document.title = title;
23
- });
24
- });
25
- }
26
- //# sourceMappingURL=useDocumentTitle.js.map
@@ -1,6 +0,0 @@
1
- "use strict";
2
-
3
- export function useDocumentTitle() {
4
- // Noop for native platforms
5
- }
6
- //# sourceMappingURL=useDocumentTitle.native.js.map
@@ -1,85 +0,0 @@
1
- "use strict";
2
-
3
- import { CommonActions, findFocusedRoute, getActionFromState, getPathFromState, getStateFromPath, NavigationHelpersContext, NavigationRouteContext, useStateForPath } from '@amazon-devices/react-navigation__core';
4
- import * as React from 'react';
5
- import { LinkingContext } from "./LinkingContext.js";
6
- /**
7
- * Helpers to build href or action based on the linking options.
8
- *
9
- * @returns `buildHref` to build an `href` for screen and `buildAction` to build an action from an `href`.
10
- */
11
- export function useLinkBuilder() {
12
- const navigation = React.useContext(NavigationHelpersContext);
13
- const route = React.useContext(NavigationRouteContext);
14
- const {
15
- options
16
- } = React.useContext(LinkingContext);
17
- const focusedRouteState = useStateForPath();
18
- const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
19
- const getStateFromPathHelper = options?.getStateFromPath ?? getStateFromPath;
20
- const getActionFromStateHelper = options?.getActionFromState ?? getActionFromState;
21
- const buildHref = React.useCallback((name, params) => {
22
- if (options?.enabled === false) {
23
- return undefined;
24
- }
25
-
26
- // Check that we're inside:
27
- // - navigator's context
28
- // - route context of the navigator (could be a screen, tab, etc.)
29
- // - route matches the state for path (from the screen's context)
30
- // This ensures that we're inside a screen
31
- const isScreen = navigation && route?.key && focusedRouteState ? route.key === findFocusedRoute(focusedRouteState)?.key && navigation.getState().routes.some(r => r.key === route.key) : false;
32
- const stateForRoute = {
33
- routes: [{
34
- name,
35
- params
36
- }]
37
- };
38
- const constructState = state => {
39
- if (state) {
40
- const route = state.routes[0];
41
-
42
- // If we're inside a screen and at the innermost route
43
- // We need to replace the state with the provided one
44
- // This assumes that we're navigating to a sibling route
45
- if (isScreen && !route.state) {
46
- return stateForRoute;
47
- }
48
-
49
- // Otherwise, dive into the nested state of the route
50
- return {
51
- routes: [{
52
- ...route,
53
- state: constructState(route.state)
54
- }]
55
- };
56
- }
57
-
58
- // Once there is no more nested state, we're at the innermost route
59
- // We can add a state based on provided parameters
60
- // This assumes that we're navigating to a child of this route
61
- // In this case, the helper is used in a navigator for its routes
62
- return stateForRoute;
63
- };
64
- const state = constructState(focusedRouteState);
65
- const path = getPathFromStateHelper(state, options?.config);
66
- return path;
67
- }, [options?.enabled, options?.config, route?.key, navigation, focusedRouteState, getPathFromStateHelper]);
68
- const buildAction = React.useCallback(href => {
69
- if (!href.startsWith('/')) {
70
- throw new Error(`The href must start with '/' (${href}).`);
71
- }
72
- const state = getStateFromPathHelper(href, options?.config);
73
- if (state) {
74
- const action = getActionFromStateHelper(state, options?.config);
75
- return action ?? CommonActions.reset(state);
76
- } else {
77
- throw new Error('Failed to parse the href to a navigation state.');
78
- }
79
- }, [options?.config, getStateFromPathHelper, getActionFromStateHelper]);
80
- return {
81
- buildHref,
82
- buildAction
83
- };
84
- }
85
- //# sourceMappingURL=useLinkBuilder.js.map
@@ -1,93 +0,0 @@
1
- "use strict";
2
-
3
- import { getPathFromState, NavigationContainerRefContext, NavigationHelpersContext } from '@amazon-devices/react-navigation__core';
4
- import * as React from 'react';
5
- import { Platform } from 'react-native';
6
- import { LinkingContext } from "./LinkingContext.js";
7
- const getStateFromParams = params => {
8
- if (params?.state) {
9
- return params.state;
10
- }
11
- if (params?.screen) {
12
- return {
13
- routes: [{
14
- name: params.screen,
15
- params: params.params,
16
- // @ts-expect-error this is fine 🔥
17
- state: params.screen ? getStateFromParams(params.params) : undefined
18
- }]
19
- };
20
- }
21
- return undefined;
22
- };
23
-
24
- /**
25
- * Hook to get props for an anchor tag so it can work with in page navigation.
26
- *
27
- * @param props.screen Name of the screen to navigate to (e.g. `'Feeds'`).
28
- * @param props.params Params to pass to the screen to navigate to (e.g. `{ sort: 'hot' }`).
29
- * @param props.href Optional absolute path to use for the href (e.g. `/feeds/hot`).
30
- * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.
31
- */
32
- export function useLinkProps({
33
- screen,
34
- params,
35
- href,
36
- action
37
- }) {
38
- const root = React.useContext(NavigationContainerRefContext);
39
- const navigation = React.useContext(NavigationHelpersContext);
40
- const {
41
- options
42
- } = React.useContext(LinkingContext);
43
- const onPress = e => {
44
- let shouldHandle = false;
45
- if (Platform.OS !== 'web' || !e) {
46
- e?.preventDefault?.();
47
- shouldHandle = true;
48
- } else {
49
- // ignore clicks with modifier keys
50
- const hasModifierKey = 'metaKey' in e && e.metaKey || 'altKey' in e && e.altKey || 'ctrlKey' in e && e.ctrlKey || 'shiftKey' in e && e.shiftKey;
51
-
52
- // only handle left clicks
53
- const isLeftClick = 'button' in e ? e.button == null || e.button === 0 : true;
54
-
55
- // let browser handle "target=_blank" etc.
56
- const isSelfTarget = e.currentTarget && 'target' in e.currentTarget ? [undefined, null, '', 'self'].includes(e.currentTarget.target) : true;
57
- if (!hasModifierKey && isLeftClick && isSelfTarget) {
58
- e.preventDefault?.();
59
- shouldHandle = true;
60
- }
61
- }
62
- if (shouldHandle) {
63
- if (action) {
64
- if (navigation) {
65
- navigation.dispatch(action);
66
- } else if (root) {
67
- root.dispatch(action);
68
- } else {
69
- throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
70
- }
71
- } else {
72
- // @ts-expect-error This is already type-checked by the prop types
73
- navigation?.navigate(screen, params);
74
- }
75
- }
76
- };
77
- const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
78
- return {
79
- href: href ?? (Platform.OS === 'web' && screen != null ? getPathFromStateHelper({
80
- routes: [{
81
- // @ts-expect-error this is fine 🔥
82
- name: screen,
83
- // @ts-expect-error this is fine 🔥
84
- params: params,
85
- // @ts-expect-error this is fine 🔥
86
- state: getStateFromParams(params)
87
- }]
88
- }, options?.config) : undefined),
89
- role: 'link',
90
- onPress
91
- };
92
- }
93
- //# sourceMappingURL=useLinkProps.js.map
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- import { NavigationContainerRefContext } from '@amazon-devices/react-navigation__core';
4
- import * as React from 'react';
5
- import { useLinkBuilder } from "./useLinkBuilder.js";
6
-
7
- /**
8
- * Helper to navigate to a screen using a href based on the linking options.
9
- *
10
- * @returns function that receives the href to navigate to.
11
- */
12
- export function useLinkTo() {
13
- const navigation = React.useContext(NavigationContainerRefContext);
14
- const {
15
- buildAction
16
- } = useLinkBuilder();
17
- const linkTo = React.useCallback(href => {
18
- if (navigation === undefined) {
19
- throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
20
- }
21
- const action = buildAction(href);
22
- navigation.dispatch(action);
23
- }, [buildAction, navigation]);
24
- return linkTo;
25
- }
26
- //# sourceMappingURL=useLinkTo.js.map