@amazon-devices/react-navigation__stack 8.0.9000000001 → 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 (76) hide show
  1. package/kepler-compatibility.json +2 -1
  2. package/lib/module/index.js +0 -34
  3. package/lib/module/views/Stack/CardStack.js.map +1 -1
  4. package/lib/typescript/src/views/Stack/CardStack.d.ts.map +1 -1
  5. package/package.json +1 -1
  6. package/src/index.tsx +0 -56
  7. package/lib/module/TransitionConfigs/CardStyleInterpolators.js +0 -394
  8. package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +0 -262
  9. package/lib/module/TransitionConfigs/TransitionPresets.js +0 -156
  10. package/lib/module/TransitionConfigs/TransitionSpecs.js +0 -124
  11. package/lib/module/navigators/createStackNavigator.js +0 -71
  12. package/lib/module/types.js +0 -4
  13. package/lib/module/utils/CardAnimationContext.js +0 -5
  14. package/lib/module/utils/GestureHandlerRefContext.js +0 -5
  15. package/lib/module/utils/ModalPresentationContext.js +0 -5
  16. package/lib/module/utils/conditional.js +0 -28
  17. package/lib/module/utils/findLastIndex.js +0 -11
  18. package/lib/module/utils/gestureActivationCriteria.js +0 -60
  19. package/lib/module/utils/getDistanceForDirection.js +0 -15
  20. package/lib/module/utils/getInvertedMultiplier.js +0 -15
  21. package/lib/module/utils/getModalRoutesKeys.js +0 -12
  22. package/lib/module/utils/getShadowStyle.js +0 -24
  23. package/lib/module/utils/throttle.js +0 -14
  24. package/lib/module/utils/useCardAnimation.js +0 -12
  25. package/lib/module/utils/useGestureHandlerRef.js +0 -12
  26. package/lib/module/utils/useKeyboardManager.js +0 -90
  27. package/lib/module/views/GestureHandler.android.js +0 -4
  28. package/lib/module/views/GestureHandler.ios.js +0 -4
  29. package/lib/module/views/GestureHandler.js +0 -21
  30. package/lib/module/views/GestureHandler.kepler.js +0 -4
  31. package/lib/module/views/GestureHandlerNative.js +0 -18
  32. package/lib/module/views/Header/Header.js +0 -56
  33. package/lib/module/views/Header/HeaderContainer.js +0 -128
  34. package/lib/module/views/Header/HeaderSegment.js +0 -142
  35. package/lib/module/views/Screens.js +0 -42
  36. package/lib/module/views/Stack/Card.js +0 -433
  37. package/lib/module/views/Stack/CardA11yWrapper.js +0 -43
  38. package/lib/module/views/Stack/CardContainer.js +0 -276
  39. package/lib/module/views/Stack/CardContent.js +0 -74
  40. package/lib/module/views/Stack/CardStack.js +0 -498
  41. package/lib/module/views/Stack/StackView.js +0 -339
  42. package/src/TransitionConfigs/CardStyleInterpolators.tsx +0 -460
  43. package/src/TransitionConfigs/HeaderStyleInterpolators.tsx +0 -286
  44. package/src/TransitionConfigs/TransitionPresets.tsx +0 -182
  45. package/src/TransitionConfigs/TransitionSpecs.tsx +0 -124
  46. package/src/navigators/createStackNavigator.tsx +0 -120
  47. package/src/types.tsx +0 -639
  48. package/src/utils/CardAnimationContext.tsx +0 -7
  49. package/src/utils/GestureHandlerRefContext.tsx +0 -5
  50. package/src/utils/ModalPresentationContext.tsx +0 -3
  51. package/src/utils/conditional.tsx +0 -33
  52. package/src/utils/findLastIndex.tsx +0 -9
  53. package/src/utils/gestureActivationCriteria.tsx +0 -70
  54. package/src/utils/getDistanceForDirection.tsx +0 -19
  55. package/src/utils/getInvertedMultiplier.tsx +0 -17
  56. package/src/utils/getModalRoutesKeys.ts +0 -21
  57. package/src/utils/getShadowStyle.tsx +0 -37
  58. package/src/utils/throttle.tsx +0 -16
  59. package/src/utils/useCardAnimation.tsx +0 -15
  60. package/src/utils/useGestureHandlerRef.tsx +0 -15
  61. package/src/utils/useKeyboardManager.tsx +0 -103
  62. package/src/views/GestureHandler.android.tsx +0 -1
  63. package/src/views/GestureHandler.ios.tsx +0 -1
  64. package/src/views/GestureHandler.kepler.tsx +0 -1
  65. package/src/views/GestureHandler.tsx +0 -23
  66. package/src/views/GestureHandlerNative.tsx +0 -23
  67. package/src/views/Header/Header.tsx +0 -73
  68. package/src/views/Header/HeaderContainer.tsx +0 -191
  69. package/src/views/Header/HeaderSegment.tsx +0 -203
  70. package/src/views/Screens.tsx +0 -45
  71. package/src/views/Stack/Card.tsx +0 -646
  72. package/src/views/Stack/CardA11yWrapper.tsx +0 -67
  73. package/src/views/Stack/CardContainer.tsx +0 -339
  74. package/src/views/Stack/CardContent.tsx +0 -92
  75. package/src/views/Stack/CardStack.tsx +0 -849
  76. package/src/views/Stack/StackView.tsx +0 -485
@@ -1,276 +0,0 @@
1
- "use strict";
2
-
3
- import { getHeaderTitle, HeaderBackContext, HeaderHeightContext, HeaderShownContext } from '@amazon-devices/react-navigation__elements';
4
- import { useLinkBuilder, useLocale, useTheme } from '@amazon-devices/react-navigation__native';
5
- import * as React from 'react';
6
- import { Platform, StyleSheet, View } from 'react-native';
7
- import { ModalPresentationContext } from "../../utils/ModalPresentationContext.js";
8
- import { useKeyboardManager } from "../../utils/useKeyboardManager.js";
9
- import { Card } from "./Card.js";
10
- import { CardA11yWrapper } from "./CardA11yWrapper.js";
11
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- const EPSILON = 0.1;
13
- function CardContainerInner({
14
- interpolationIndex,
15
- index,
16
- active,
17
- opening,
18
- closing,
19
- gesture,
20
- focused,
21
- modal,
22
- getPreviousScene,
23
- getFocusedRoute,
24
- hasAbsoluteFloatHeader,
25
- headerHeight,
26
- onHeaderHeightChange,
27
- isParentHeaderShown,
28
- isNextScreenTransparent,
29
- detachCurrentScreen,
30
- layout,
31
- onCloseRoute,
32
- onOpenRoute,
33
- onGestureCancel,
34
- onGestureEnd,
35
- onGestureStart,
36
- onTransitionEnd,
37
- onTransitionStart,
38
- preloaded,
39
- renderHeader,
40
- safeAreaInsetBottom,
41
- safeAreaInsetLeft,
42
- safeAreaInsetRight,
43
- safeAreaInsetTop,
44
- scene
45
- }) {
46
- const wrapperRef = React.useRef(null);
47
- const {
48
- direction
49
- } = useLocale();
50
- const parentHeaderHeight = React.useContext(HeaderHeightContext);
51
- const {
52
- onPageChangeStart,
53
- onPageChangeCancel,
54
- onPageChangeConfirm
55
- } = useKeyboardManager(React.useCallback(() => {
56
- const {
57
- options,
58
- navigation
59
- } = scene.descriptor;
60
- return navigation.isFocused() && options.keyboardHandlingEnabled !== false && Platform.OS !== 'kepler';
61
- }, [scene.descriptor]));
62
- const handleOpen = () => {
63
- const {
64
- route
65
- } = scene.descriptor;
66
- onTransitionEnd({
67
- route
68
- }, false);
69
- onOpenRoute({
70
- route
71
- });
72
- };
73
- const handleClose = () => {
74
- const {
75
- route
76
- } = scene.descriptor;
77
- onTransitionEnd({
78
- route
79
- }, true);
80
- onCloseRoute({
81
- route
82
- });
83
- };
84
- const handleGestureBegin = () => {
85
- const {
86
- route
87
- } = scene.descriptor;
88
- onPageChangeStart();
89
- onGestureStart({
90
- route
91
- });
92
- };
93
- const handleGestureCanceled = () => {
94
- const {
95
- route
96
- } = scene.descriptor;
97
- onPageChangeCancel();
98
- onGestureCancel({
99
- route
100
- });
101
- };
102
- const handleGestureEnd = () => {
103
- const {
104
- route
105
- } = scene.descriptor;
106
- onGestureEnd({
107
- route
108
- });
109
- };
110
- const handleTransition = ({
111
- closing,
112
- gesture
113
- }) => {
114
- wrapperRef.current?.setInert(closing);
115
- const {
116
- route
117
- } = scene.descriptor;
118
- if (!gesture) {
119
- onPageChangeConfirm?.(true);
120
- } else if (active && closing) {
121
- onPageChangeConfirm?.(false);
122
- } else {
123
- onPageChangeCancel?.();
124
- }
125
- onTransitionStart?.({
126
- route
127
- }, closing);
128
- };
129
- const insets = {
130
- top: safeAreaInsetTop,
131
- right: safeAreaInsetRight,
132
- bottom: safeAreaInsetBottom,
133
- left: safeAreaInsetLeft
134
- };
135
- const {
136
- colors
137
- } = useTheme();
138
- React.useEffect(() => {
139
- const listener = scene.progress.next?.addListener?.(({
140
- value
141
- }) => {
142
- wrapperRef.current?.setInert(value > EPSILON);
143
- });
144
- return () => {
145
- if (listener) {
146
- scene.progress.next?.removeListener?.(listener);
147
- }
148
- };
149
- }, [scene.progress.next]);
150
- const {
151
- presentation,
152
- animation,
153
- cardOverlay,
154
- cardOverlayEnabled,
155
- cardShadowEnabled,
156
- cardStyle,
157
- cardStyleInterpolator,
158
- gestureDirection,
159
- gestureEnabled,
160
- gestureResponseDistance,
161
- gestureVelocityImpact,
162
- headerMode,
163
- headerShown,
164
- transitionSpec
165
- } = scene.descriptor.options;
166
- const {
167
- buildHref
168
- } = useLinkBuilder();
169
- const previousScene = getPreviousScene({
170
- route: scene.descriptor.route
171
- });
172
- let backTitle;
173
- let href;
174
- if (previousScene) {
175
- const {
176
- options,
177
- route
178
- } = previousScene.descriptor;
179
- backTitle = getHeaderTitle(options, route.name);
180
- href = buildHref(route.name, route.params);
181
- }
182
- const canGoBack = previousScene != null;
183
- const headerBack = React.useMemo(() => {
184
- if (canGoBack) {
185
- return {
186
- href,
187
- title: backTitle
188
- };
189
- }
190
- return undefined;
191
- }, [canGoBack, backTitle, href]);
192
- const animated = animation !== 'none';
193
- return /*#__PURE__*/_jsx(CardA11yWrapper, {
194
- ref: wrapperRef,
195
- focused: focused,
196
- active: active,
197
- animated: animated,
198
- isNextScreenTransparent: isNextScreenTransparent,
199
- detachCurrentScreen: detachCurrentScreen,
200
- children: /*#__PURE__*/_jsx(Card, {
201
- animated: animated,
202
- interpolationIndex: interpolationIndex,
203
- gestureDirection: gestureDirection,
204
- layout: layout,
205
- insets: insets,
206
- direction: direction,
207
- gesture: gesture,
208
- current: scene.progress.current,
209
- next: scene.progress.next,
210
- opening: opening,
211
- closing: closing,
212
- onOpen: handleOpen,
213
- onClose: handleClose,
214
- overlay: cardOverlay,
215
- overlayEnabled: cardOverlayEnabled,
216
- shadowEnabled: cardShadowEnabled,
217
- onTransition: handleTransition,
218
- onGestureBegin: handleGestureBegin,
219
- onGestureCanceled: handleGestureCanceled,
220
- onGestureEnd: handleGestureEnd,
221
- gestureEnabled: index === 0 ? false : gestureEnabled,
222
- gestureResponseDistance: gestureResponseDistance,
223
- gestureVelocityImpact: gestureVelocityImpact,
224
- transitionSpec: transitionSpec,
225
- styleInterpolator: cardStyleInterpolator,
226
- pageOverflowEnabled: headerMode !== 'float' && presentation !== 'modal',
227
- preloaded: preloaded,
228
- containerStyle: hasAbsoluteFloatHeader && headerMode !== 'screen' ? {
229
- marginTop: headerHeight
230
- } : null,
231
- contentStyle: [{
232
- backgroundColor: presentation === 'transparentModal' ? 'transparent' : colors.background
233
- }, cardStyle],
234
- children: /*#__PURE__*/_jsx(View, {
235
- style: styles.container,
236
- children: /*#__PURE__*/_jsxs(ModalPresentationContext.Provider, {
237
- value: modal,
238
- children: [headerMode !== 'float' ? renderHeader({
239
- mode: 'screen',
240
- layout,
241
- scenes: [previousScene, scene],
242
- getPreviousScene,
243
- getFocusedRoute,
244
- onContentHeightChange: onHeaderHeightChange,
245
- style: styles.header
246
- }) : null, /*#__PURE__*/_jsx(View, {
247
- style: styles.scene,
248
- children: /*#__PURE__*/_jsx(HeaderBackContext.Provider, {
249
- value: headerBack,
250
- children: /*#__PURE__*/_jsx(HeaderShownContext.Provider, {
251
- value: isParentHeaderShown || headerShown !== false,
252
- children: /*#__PURE__*/_jsx(HeaderHeightContext.Provider, {
253
- value: headerShown !== false ? headerHeight : parentHeaderHeight ?? 0,
254
- children: scene.descriptor.render()
255
- })
256
- })
257
- })
258
- })]
259
- })
260
- })
261
- })
262
- });
263
- }
264
- export const CardContainer = /*#__PURE__*/React.memo(CardContainerInner);
265
- const styles = StyleSheet.create({
266
- container: {
267
- flex: 1
268
- },
269
- header: {
270
- zIndex: 1
271
- },
272
- scene: {
273
- flex: 1
274
- }
275
- });
276
- //# sourceMappingURL=CardContainer.js.map
@@ -1,74 +0,0 @@
1
- "use strict";
2
-
3
- import * as React from 'react';
4
- import { StyleSheet, View } from 'react-native';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- // This component will render a page which overflows the screen
7
- // if the container fills the body by comparing the size
8
- // This lets the document.body handle scrolling of the content
9
- // It's necessary for mobile browsers to be able to hide address bar on scroll
10
- export function CardContent({
11
- enabled,
12
- layout,
13
- style,
14
- ...rest
15
- }) {
16
- const [fill, setFill] = React.useState(false);
17
- React.useEffect(() => {
18
- if (typeof document === 'undefined' || !document.body) {
19
- // Only run when DOM is available
20
- return;
21
- }
22
- const width = document.body.clientWidth;
23
- const height = document.body.clientHeight;
24
-
25
- // Workaround for mobile Chrome, necessary when a navigation happens
26
- // when the address bar has already collapsed, which resulted in an
27
- // empty space at the bottom of the page (matching the height of the
28
- // address bar). To fix this, it's necessary to update the height of
29
- // the DOM with the current height of the window.
30
- // See https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
31
- const isFullHeight = height === layout.height;
32
- const id = '__react-navigation-stack-mobile-chrome-viewport-fix';
33
- let unsubscribe;
34
- if (isFullHeight && navigator.maxTouchPoints > 0) {
35
- const style = document.getElementById(id) ?? document.createElement('style');
36
- style.id = id;
37
- const updateStyle = () => {
38
- const vh = window.innerHeight * 0.01;
39
- style.textContent = [`:root { --vh: ${vh}px; }`, `body { height: calc(var(--vh, 1vh) * 100); }`].join('\n');
40
- };
41
- updateStyle();
42
- if (!document.head.contains(style)) {
43
- document.head.appendChild(style);
44
- }
45
- window.addEventListener('resize', updateStyle);
46
- unsubscribe = () => {
47
- window.removeEventListener('resize', updateStyle);
48
- };
49
- } else {
50
- // Remove the workaround if the stack does not occupy the whole
51
- // height of the page
52
- document.getElementById(id)?.remove();
53
- }
54
-
55
- // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
56
- setFill(width === layout.width && height === layout.height);
57
- return unsubscribe;
58
- }, [layout.height, layout.width]);
59
- return /*#__PURE__*/_jsx(View, {
60
- ...rest,
61
- pointerEvents: "box-none",
62
- style: [enabled && fill ? styles.page : styles.card, style]
63
- });
64
- }
65
- const styles = StyleSheet.create({
66
- page: {
67
- minHeight: '100%'
68
- },
69
- card: {
70
- flex: 1,
71
- overflow: 'hidden'
72
- }
73
- });
74
- //# sourceMappingURL=CardContent.js.map