@niibase/bottom-sheet-manager 1.2.0 → 1.4.0

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 (64) hide show
  1. package/README.md +414 -69
  2. package/lib/commonjs/events.js +100 -15
  3. package/lib/commonjs/events.js.map +1 -1
  4. package/lib/commonjs/index.js +14 -0
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/manager.js +153 -35
  7. package/lib/commonjs/manager.js.map +1 -1
  8. package/lib/commonjs/provider.js +92 -54
  9. package/lib/commonjs/provider.js.map +1 -1
  10. package/lib/commonjs/router/index.js +80 -21
  11. package/lib/commonjs/router/index.js.map +1 -1
  12. package/lib/commonjs/router/router.js +137 -12
  13. package/lib/commonjs/router/router.js.map +1 -1
  14. package/lib/commonjs/router/view.js +93 -126
  15. package/lib/commonjs/router/view.js.map +1 -1
  16. package/lib/commonjs/sheet.js +122 -98
  17. package/lib/commonjs/sheet.js.map +1 -1
  18. package/lib/module/events.js +100 -15
  19. package/lib/module/events.js.map +1 -1
  20. package/lib/module/index.js +2 -2
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/manager.js +154 -35
  23. package/lib/module/manager.js.map +1 -1
  24. package/lib/module/provider.js +87 -50
  25. package/lib/module/provider.js.map +1 -1
  26. package/lib/module/router/index.js +66 -19
  27. package/lib/module/router/index.js.map +1 -1
  28. package/lib/module/router/router.js +135 -11
  29. package/lib/module/router/router.js.map +1 -1
  30. package/lib/module/router/view.js +92 -126
  31. package/lib/module/router/view.js.map +1 -1
  32. package/lib/module/sheet.js +124 -100
  33. package/lib/module/sheet.js.map +1 -1
  34. package/lib/typescript/events.d.ts +46 -12
  35. package/lib/typescript/events.d.ts.map +1 -1
  36. package/lib/typescript/index.d.ts +2 -2
  37. package/lib/typescript/index.d.ts.map +1 -1
  38. package/lib/typescript/manager.d.ts +73 -7
  39. package/lib/typescript/manager.d.ts.map +1 -1
  40. package/lib/typescript/provider.d.ts +22 -16
  41. package/lib/typescript/provider.d.ts.map +1 -1
  42. package/lib/typescript/router/index.d.ts +47 -17
  43. package/lib/typescript/router/index.d.ts.map +1 -1
  44. package/lib/typescript/router/router.d.ts +44 -5
  45. package/lib/typescript/router/router.d.ts.map +1 -1
  46. package/lib/typescript/router/types.d.ts +142 -32
  47. package/lib/typescript/router/types.d.ts.map +1 -1
  48. package/lib/typescript/router/view.d.ts +3 -3
  49. package/lib/typescript/router/view.d.ts.map +1 -1
  50. package/lib/typescript/sheet.d.ts +1 -1
  51. package/lib/typescript/sheet.d.ts.map +1 -1
  52. package/lib/typescript/types.d.ts +52 -21
  53. package/lib/typescript/types.d.ts.map +1 -1
  54. package/package.json +14 -15
  55. package/src/events.ts +118 -27
  56. package/src/index.ts +2 -1
  57. package/src/manager.ts +209 -42
  58. package/src/provider.tsx +144 -71
  59. package/src/router/index.tsx +77 -33
  60. package/src/router/router.ts +188 -15
  61. package/src/router/types.ts +172 -57
  62. package/src/router/view.tsx +111 -213
  63. package/src/sheet.tsx +192 -124
  64. package/src/types.ts +51 -24
@@ -1,5 +1,6 @@
1
- import { eventManager } from "./events";
2
1
  import { providerRegistryStack, sheetsRegistry } from "./provider";
2
+ import { eventManager } from "./events";
3
+
3
4
  // Array of all the ids of Sheets currently rendered in the app.
4
5
  const ids = [];
5
6
  const keys = [];
@@ -7,18 +8,28 @@ const refs = {};
7
8
  const DEFAULT_Z_INDEX = 999;
8
9
  const makeKey = (id, context) => `${id}:${context}`;
9
10
  export const PrivateManager = {
10
- // Return to the previous sheet when the current sheet is closed.
11
+ // Stack of sheet history for restoration when sheets are closed
11
12
  history: [],
12
13
  context(options) {
13
14
  if (!options) options = {};
14
15
  if (!options?.context) {
15
- // If no context is provided, use to current top most context
16
- // to render the sheet.
17
- for (const context of providerRegistryStack.slice().reverse()) {
18
- // We only automatically select nested sheet providers.
19
- if (context.startsWith("$$-auto") && !context.includes(options?.id)) {
20
- options.context = context;
21
- break;
16
+ // First try to find a context where this sheet is registered
17
+ if (options?.id) {
18
+ for (const context of providerRegistryStack.slice().reverse()) {
19
+ if (sheetsRegistry[context]?.[options.id]) {
20
+ options.context = context;
21
+ break;
22
+ }
23
+ }
24
+ }
25
+
26
+ // Fall back to the top-most auto-generated nested context
27
+ if (!options.context) {
28
+ for (const context of providerRegistryStack.slice().reverse()) {
29
+ if (context.startsWith("$$-auto") && !context.includes(options?.id)) {
30
+ options.context = context;
31
+ break;
32
+ }
22
33
  }
23
34
  }
24
35
  }
@@ -27,10 +38,11 @@ export const PrivateManager = {
27
38
  registerRef: (id, context, instance) => {
28
39
  const key = makeKey(id, context);
29
40
  refs[key] = instance;
30
- keys.push(key);
41
+ if (!keys.includes(key)) {
42
+ keys.push(key);
43
+ }
31
44
  },
32
45
  /**
33
- *
34
46
  * Get internal ref of a sheet by the given id.
35
47
  *
36
48
  * @param id Id of the sheet
@@ -38,8 +50,8 @@ export const PrivateManager = {
38
50
  */
39
51
  get: (id, context) => {
40
52
  if (!context) {
41
- for (let ctx of providerRegistryStack.slice().reverse()) {
42
- for (let _id in sheetsRegistry[ctx]) {
53
+ for (const ctx of providerRegistryStack.slice().reverse()) {
54
+ for (const _id in sheetsRegistry[ctx]) {
43
55
  if (_id === id) {
44
56
  context = ctx;
45
57
  break;
@@ -50,25 +62,61 @@ export const PrivateManager = {
50
62
  return refs[makeKey(id, context)];
51
63
  },
52
64
  add: (id, context) => {
53
- if (ids.indexOf(id) < 0) {
54
- ids[ids.length] = makeKey(id, context);
65
+ const key = makeKey(id, context);
66
+ if (!ids.includes(key)) {
67
+ ids.push(key);
55
68
  }
56
69
  },
57
70
  remove: (id, context) => {
58
- if (ids.indexOf(makeKey(id, context)) > -1) {
59
- ids.splice(ids.indexOf(makeKey(id, context)));
71
+ const key = makeKey(id, context);
72
+ const index = ids.indexOf(key);
73
+ if (index > -1) {
74
+ ids.splice(index, 1);
60
75
  }
61
76
  },
62
77
  zIndex: (id, context = "global") => {
63
78
  const index = keys.indexOf(makeKey(id, context));
64
79
  return index > -1 ? DEFAULT_Z_INDEX + index + 1 : DEFAULT_Z_INDEX;
65
80
  },
66
- stack: () => ids.map(id => {
81
+ stack: () => ids.map(id => ({
82
+ id: id.split(":")[0],
83
+ context: id.split(":")?.[1] || "global"
84
+ })),
85
+ /**
86
+ * Get the top-most sheet in the stack
87
+ */
88
+ topSheet: () => {
89
+ if (ids.length === 0) return null;
90
+ const topId = ids[ids.length - 1];
67
91
  return {
68
- id: id.split(":")[0],
69
- context: id.split(":")?.[1] || "global"
92
+ id: topId.split(":")[0],
93
+ context: topId.split(":")?.[1] || "global"
70
94
  };
71
- })
95
+ },
96
+ /**
97
+ * Check if a sheet is currently visible
98
+ */
99
+ isSheetVisible: (id, context) => {
100
+ if (context) {
101
+ return ids.includes(makeKey(id, context));
102
+ }
103
+ return ids.some(key => key.startsWith(`${id}:`));
104
+ },
105
+ /**
106
+ * Clear all history entries
107
+ */
108
+ clearHistory: () => {
109
+ PrivateManager.history = [];
110
+ },
111
+ /**
112
+ * Reset all internal state. Useful for testing or HMR.
113
+ */
114
+ reset: () => {
115
+ ids.length = 0;
116
+ keys.length = 0;
117
+ for (const key in refs) delete refs[key];
118
+ PrivateManager.history = [];
119
+ }
72
120
  };
73
121
  class _SheetManager {
74
122
  /**
@@ -83,30 +131,41 @@ class _SheetManager {
83
131
  ...options,
84
132
  id: id
85
133
  });
86
- const handler = (data, context = "global") => {
134
+ const behavior = options?.stackBehavior ?? "switch";
135
+ const handler = (data, context = "global", _reopened, _behavior) => {
87
136
  if (context !== "global" && currentContext && currentContext !== context) return;
88
137
  options?.onClose?.(data);
89
138
  sub?.unsubscribe();
90
139
  resolve(data);
91
140
  };
92
- var sub = eventManager.subscribe(`onclose_${id}`, handler);
93
- PrivateManager.stack().forEach(({
94
- id,
95
- context
96
- }) => {
97
- eventManager.publish(`hide_${id}`, undefined, context, true);
98
- });
141
+ const sub = eventManager.subscribe(`onclose_${id}`, handler);
142
+
143
+ // Handle existing sheets based on stack behavior.
144
+ // For "push" we do NOT hide existing sheets — they stay underneath.
145
+ if (behavior !== "push") {
146
+ const currentStack = PrivateManager.stack();
147
+ if (currentStack.length > 0) {
148
+ currentStack.forEach(({
149
+ id: sheetId,
150
+ context
151
+ }) => {
152
+ eventManager.publish(`hide_${sheetId}`, undefined, context, true, behavior);
153
+ });
154
+ }
155
+ }
99
156
 
100
157
  // Check if the sheet is registered with any `SheetProviders`.
101
158
  let isRegisteredWithSheetProvider = false;
102
- for (let ctx in sheetsRegistry) {
103
- for (let _id in sheetsRegistry[ctx]) {
159
+ for (const ctx in sheetsRegistry) {
160
+ for (const _id in sheetsRegistry[ctx]) {
104
161
  if (_id === id) {
105
162
  isRegisteredWithSheetProvider = true;
163
+ break;
106
164
  }
107
165
  }
166
+ if (isRegisteredWithSheetProvider) break;
108
167
  }
109
- eventManager.publish(isRegisteredWithSheetProvider ? `show_wrap_${id}` : `show_${id}`, options?.payload, currentContext || "global");
168
+ eventManager.publish(isRegisteredWithSheetProvider ? `show_wrap_${id}` : `show_${id}`, options?.payload, currentContext || "global", false, behavior);
110
169
  });
111
170
  }
112
171
 
@@ -114,10 +173,10 @@ class _SheetManager {
114
173
  * An async hide function. This is useful when you want to show one Sheet after closing another.
115
174
  *
116
175
  * @param id id of the Sheet to show
117
- * @param data
176
+ * @param options
118
177
  */
119
178
  async hide(id, options) {
120
- let currentContext = PrivateManager.context({
179
+ const currentContext = PrivateManager.context({
121
180
  ...options,
122
181
  id: id
123
182
  });
@@ -137,7 +196,7 @@ class _SheetManager {
137
196
  sub?.unsubscribe();
138
197
  resolve(data);
139
198
  };
140
- var sub = eventManager.subscribe(`onclose_${id}`, hideHandler);
199
+ const sub = eventManager.subscribe(`onclose_${id}`, hideHandler);
141
200
  eventManager.publish(isRegisteredWithSheetProvider ? `hide_wrap_${id}` : `hide_${id}`, options?.payload, !isRegisteredWithSheetProvider ? "global" : currentContext);
142
201
  });
143
202
  }
@@ -148,6 +207,8 @@ class _SheetManager {
148
207
  * @param id Hide all sheets for the specific id.
149
208
  */
150
209
  hideAll(id) {
210
+ // Clear history when hiding all sheets
211
+ PrivateManager.clearHistory();
151
212
  PrivateManager.stack().forEach(({
152
213
  id: _id,
153
214
  context
@@ -156,6 +217,64 @@ class _SheetManager {
156
217
  eventManager.publish(`hide_${_id}`, undefined, context);
157
218
  });
158
219
  }
220
+
221
+ /**
222
+ * Replace the current sheet with a new one using crossfade animation.
223
+ * This is a convenience method for show() with stackBehavior: 'replace'.
224
+ */
225
+ async replace(id, options) {
226
+ return this.show(id, {
227
+ ...options,
228
+ stackBehavior: "replace"
229
+ });
230
+ }
231
+
232
+ /**
233
+ * Push a new sheet on top of the current one, creating a stack.
234
+ * This is a convenience method for show() with stackBehavior: 'push'.
235
+ *
236
+ */
237
+ async push(id, options) {
238
+ return this.show(id, {
239
+ ...options,
240
+ stackBehavior: "push"
241
+ });
242
+ }
243
+
244
+ /**
245
+ * Pop the top sheet from the stack and restore the previous one.
246
+ * Only works when sheets were opened with stackBehavior: 'push'.
247
+ */
248
+ pop() {
249
+ const topSheet = PrivateManager.topSheet();
250
+ if (topSheet) {
251
+ eventManager.publish(`hide_${topSheet.id}`, undefined, topSheet.context);
252
+ }
253
+ }
254
+
255
+ /**
256
+ * Get the internal ref of a sheet instance.
257
+ *
258
+ * @param id Id of the sheet
259
+ * @param context Optional context of the SheetProvider
260
+ */
261
+ get(id, context) {
262
+ return PrivateManager.get(id, context)?.current ?? undefined;
263
+ }
264
+
265
+ /**
266
+ * Check if a specific sheet is currently visible.
267
+ */
268
+ isVisible(id, context) {
269
+ return PrivateManager.isSheetVisible(id, context);
270
+ }
271
+
272
+ /**
273
+ * Reset all internal state. Useful for testing environments.
274
+ */
275
+ reset() {
276
+ PrivateManager.reset();
277
+ }
159
278
  }
160
279
 
161
280
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["eventManager","providerRegistryStack","sheetsRegistry","ids","keys","refs","DEFAULT_Z_INDEX","makeKey","id","context","PrivateManager","history","options","slice","reverse","startsWith","includes","registerRef","instance","key","push","get","ctx","_id","add","indexOf","length","remove","splice","zIndex","index","stack","map","split","_SheetManager","show","Promise","resolve","currentContext","handler","data","onClose","sub","unsubscribe","subscribe","forEach","publish","undefined","isRegisteredWithSheetProvider","payload","hide","hideHandler","hideAll","SheetManager"],"sourceRoot":"../../src","sources":["manager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["providerRegistryStack","sheetsRegistry","eventManager","ids","keys","refs","DEFAULT_Z_INDEX","makeKey","id","context","PrivateManager","history","options","slice","reverse","startsWith","includes","registerRef","instance","key","push","get","ctx","_id","add","remove","index","indexOf","splice","zIndex","stack","map","split","topSheet","length","topId","isSheetVisible","some","clearHistory","reset","_SheetManager","show","Promise","resolve","currentContext","behavior","stackBehavior","handler","data","_reopened","_behavior","onClose","sub","unsubscribe","subscribe","currentStack","forEach","sheetId","publish","undefined","isRegisteredWithSheetProvider","payload","hide","hideHandler","hideAll","replace","pop","current","isVisible","SheetManager"],"sourceRoot":"../../src","sources":["manager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
+ import Animated, { interpolate, interpolateColor, runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue, withSpring, withTiming } from "react-native-reanimated";
1
2
  import { useSafeAreaInsets } from "react-native-safe-area-context";
2
3
  import { BottomSheetModalProvider } from "@gorhom/bottom-sheet";
3
4
  import { StatusBar } from "react-native";
4
5
  import React from "react";
5
- import Animated, { interpolate, interpolateColor, runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue, withSpring, withTiming } from "react-native-reanimated";
6
6
  import { eventManager } from "./events";
7
7
  export const providerRegistryStack = [];
8
8
 
@@ -19,7 +19,7 @@ export function registerSheet(id, Sheet, ...contexts) {
19
19
  for (let context of contexts) {
20
20
  const registry = !sheetsRegistry[context] ? sheetsRegistry[context] = {} : sheetsRegistry[context];
21
21
  registry[id] = Sheet;
22
- eventManager.publish(`${context}-on-register`);
22
+ eventManager.publishAsync(`${context}-on-register`);
23
23
  }
24
24
  }
25
25
 
@@ -28,23 +28,22 @@ export function registerSheet(id, Sheet, ...contexts) {
28
28
  * `global`. However if you want to render a Sheet within another sheet or if you want to render
29
29
  * Sheets in a modal. You can use a separate Provider with a custom context value.
30
30
  *
31
- * For example
31
+ * > **Note:** Context names must be unique across all `SheetProvider` instances.
32
+ *
33
+ * @example
32
34
  * ```ts
33
35
  * // Define your SheetProvider in the component/modal where
34
36
  * // you want to show some Sheets.
35
37
  * <SheetProvider context="local-context" />
36
38
  *
37
- * // Then register your sheet when for example the
38
- * // Modal component renders.
39
- *
40
- * registerSheet('local-sheet', LocalSheet,'local-context');
41
- *
39
+ * // Then register your sheet at module level (outside JSX):
40
+ * registerSheet('local-sheet', LocalSheet, 'local-context');
42
41
  * ```
43
42
  */
44
43
  export function SheetProvider({
45
- iosModalSheetTypeOfAnimation = false,
46
44
  context = "global",
47
- duration = 300,
45
+ statusBar,
46
+ scaleConfig,
48
47
  children
49
48
  }) {
50
49
  const {
@@ -53,52 +52,55 @@ export function SheetProvider({
53
52
  const [, forceUpdate] = React.useReducer(x => x + 1, 0);
54
53
  const sheetIds = Object.keys(sheetsRegistry[context] || sheetsRegistry["global"] || {});
55
54
 
56
- // Rerender when a new sheet is added.
57
- const onRegister = React.useCallback(forceUpdate, [forceUpdate]);
58
-
59
55
  // IOS modal sheet type of animation
60
56
  const isFullScreen = useSharedValue(-1);
61
57
  const colorStyle = useAnimatedStyle(() => ({
62
58
  flex: 1,
63
59
  backgroundColor: interpolateColor(isFullScreen.value, [0, 1], ["transparent", "#000"])
64
60
  }));
65
- const animatedStyle = useAnimatedStyle(() => ({
66
- flex: 1,
67
- overflow: "hidden",
68
- borderRadius: interpolate(isFullScreen.value, [0, 0.8, 1], [0, 20, 24], "clamp"),
69
- transform: [{
70
- scaleX: withTiming(interpolate(isFullScreen.value, [0, 0.98, 1], [1, 1, 0.92], "clamp"), {
71
- duration
72
- })
73
- }, {
74
- translateY: withSpring(interpolate(isFullScreen.value, [0, 0.99, 1], [0, top, top + 5], "clamp"), {
75
- duration,
76
- dampingRatio: 1.5
77
- })
78
- }]
79
- }), [duration]);
61
+ const animatedStyle = useAnimatedStyle(() => {
62
+ const radius = interpolate(isFullScreen.value, [0, 0.3], [0, scaleConfig?.borderRadius ?? 24], "clamp");
63
+ const scale = interpolate(isFullScreen.value, [0.5, 0.8], [1, scaleConfig?.scale ?? 0.92], "clamp");
64
+ const translateY = interpolate(isFullScreen.value, [0.5, 0.7], [0, top + (scaleConfig?.translateY ?? 5)], "clamp");
65
+ return {
66
+ flex: 1,
67
+ overflow: "hidden",
68
+ borderRadius: scaleConfig?.animation?.type === "spring" ? withSpring(radius, scaleConfig.animation.config) : withTiming(radius, scaleConfig?.animation?.config ?? {
69
+ duration: 200
70
+ }),
71
+ transform: [{
72
+ scaleX: scaleConfig?.animation?.type === "spring" ? withSpring(scale, scaleConfig.animation.config) : withTiming(scale, scaleConfig?.animation?.config ?? {
73
+ duration: 200
74
+ })
75
+ }, {
76
+ translateY: scaleConfig?.animation?.type === "spring" ? withSpring(translateY, scaleConfig.animation.config) : withTiming(translateY, scaleConfig?.animation?.config ?? {
77
+ duration: 200
78
+ })
79
+ }]
80
+ };
81
+ }, [top, scaleConfig]);
80
82
 
81
83
  // Since background color is white, we need to set status bar to light
82
84
  const setStatusBar = StatusBar.setBarStyle;
83
85
  useAnimatedReaction(() => isFullScreen.value, currentValue => {
84
86
  "worklet";
85
87
 
86
- if (currentValue > -1) {
87
- runOnJS(setStatusBar)(currentValue >= 0.5 ? "light-content" : "default");
88
+ if (currentValue >= 0) {
89
+ runOnJS(setStatusBar)(currentValue >= 0.5 ? "light-content" : statusBar ?? "default", true);
88
90
  }
89
91
  }, []);
90
92
  React.useEffect(() => {
91
93
  providerRegistryStack.indexOf(context) > -1 ? providerRegistryStack.indexOf(context) : providerRegistryStack.push(context) - 1;
92
- const unsub = eventManager.subscribe(`${context}-on-register`, onRegister);
94
+ const unsub = eventManager.subscribe(`${context}-on-register`, forceUpdate);
93
95
  return () => {
94
96
  providerRegistryStack.splice(providerRegistryStack.indexOf(context), 1);
95
97
  unsub?.unsubscribe();
96
98
  };
97
- }, [context, onRegister]);
98
- return /*#__PURE__*/React.createElement(SheetAnimationContext.Provider, {
99
+ }, [context, forceUpdate]);
100
+ return /*#__PURE__*/React.createElement(SheetSharedContext.Provider, {
99
101
  value: {
100
102
  isFullScreen,
101
- iosModalSheetTypeOfAnimation
103
+ topInset: top
102
104
  }
103
105
  }, /*#__PURE__*/React.createElement(Animated.View, {
104
106
  style: colorStyle
@@ -107,21 +109,28 @@ export function SheetProvider({
107
109
  }, children)), /*#__PURE__*/React.createElement(BottomSheetModalProvider, null, sheetIds.map(id => /*#__PURE__*/React.createElement(RenderSheet, {
108
110
  key: id,
109
111
  id: id,
110
- context: context,
111
- duration: duration
112
+ context: context
112
113
  }))));
113
114
  }
114
115
  const ProviderContext = /*#__PURE__*/React.createContext("global");
115
116
  const SheetIDContext = /*#__PURE__*/React.createContext(undefined);
116
- const SheetAnimationContext = /*#__PURE__*/React.createContext({
117
+ const SheetSharedContext = /*#__PURE__*/React.createContext({
117
118
  isFullScreen: {
118
119
  value: 0
119
120
  },
120
- iosModalSheetTypeOfAnimation: false
121
+ topInset: 0
121
122
  });
122
123
  export const SheetRefContext = /*#__PURE__*/React.createContext({});
123
124
  const SheetPayloadContext = /*#__PURE__*/React.createContext(undefined);
124
125
 
126
+ // Stack behavior context for managing sheet transitions
127
+
128
+ const StackBehaviorContext = /*#__PURE__*/React.createContext({
129
+ behavior: "switch",
130
+ isTransitioning: false,
131
+ previousSheetId: null
132
+ });
133
+
125
134
  /**
126
135
  * Get id of the current context.
127
136
  */
@@ -133,9 +142,14 @@ export const useSheetIDContext = () => React.useContext(SheetIDContext);
133
142
  /**
134
143
  * Get the current sheet animation context.
135
144
  */
136
- export const useSheetAnimationContext = () => React.useContext(SheetAnimationContext);
145
+ export const useSheetSharedContext = () => React.useContext(SheetSharedContext);
146
+ /**
147
+ * Get stack behavior context for the current sheet.
148
+ */
149
+ export const useStackBehaviorContext = () => React.useContext(StackBehaviorContext);
137
150
  /**
138
151
  * Get the current Sheet's internal ref.
152
+ * Note: `current` may be null before the sheet is fully mounted.
139
153
  */
140
154
  export const useSheetRef = () => React.useContext(SheetRefContext);
141
155
 
@@ -153,29 +167,44 @@ export function useOnSheet(id, type, listener) {
153
167
  React.useEffect(() => {
154
168
  const subscription = eventManager.subscribe(`${type}_${id}`, listener);
155
169
  return () => subscription.unsubscribe();
156
- }, [id, listener]);
170
+ }, [id, listener, type]);
157
171
  }
158
172
  const RenderSheet = ({
159
173
  id,
160
- context,
161
- duration
174
+ context
162
175
  }) => {
163
176
  const [payload, setPayload] = React.useState();
164
177
  const [visible, setVisible] = React.useState(false);
178
+ const [stackBehavior, setStackBehavior] = React.useState("switch");
179
+ const [isPending, startTransition] = React.useTransition();
180
+ const [previousSheetId, setPreviousSheetId] = React.useState(null);
165
181
  const ref = React.useRef(null);
166
182
  const Sheet = context.startsWith("$$-auto-") ? sheetsRegistry?.global?.[id] : sheetsRegistry[context] ? sheetsRegistry[context]?.[id] : undefined;
167
- const onShow = React.useCallback((data, ctx = "global", reopened) => {
183
+ const onShow = React.useCallback((data, ctx = "global", reopened, behavior) => {
168
184
  if (ctx !== context) return;
169
- if (!reopened) setPayload(data);
170
- setVisible(true);
185
+ if (behavior) {
186
+ setStackBehavior(behavior);
187
+ }
188
+ if (!reopened) {
189
+ setPayload(data);
190
+ }
191
+
192
+ // Smooth transition handling using React's useTransition
193
+ startTransition(() => {
194
+ setVisible(true);
195
+ });
171
196
  }, [context]);
172
- const onClose = React.useCallback((_data, ctx = "global", reopened) => {
197
+ const onClose = React.useCallback((_data, ctx = "global", reopened, nextSheetId) => {
173
198
  if (context !== ctx) return;
199
+ if (nextSheetId) {
200
+ setPreviousSheetId(nextSheetId);
201
+ }
174
202
  if (!reopened) {
175
203
  setPayload(undefined);
176
- setTimeout(() => setVisible(false), Math.max(duration ?? 300, 300));
204
+ setVisible(false);
177
205
  } else {
178
206
  setVisible(false);
207
+ setPreviousSheetId(null);
179
208
  }
180
209
  }, [context]);
181
210
  const onHide = React.useCallback((data, ctx = "global") => {
@@ -187,13 +216,19 @@ const RenderSheet = ({
187
216
  }
188
217
  }, [context, id, payload, visible]);
189
218
  React.useEffect(() => {
190
- let subs = [eventManager.subscribe(`show_wrap_${id}`, onShow), eventManager.subscribe(`onclose_${id}`, onClose), eventManager.subscribe(`hide_wrap_${id}`, onHide)];
219
+ const subs = [eventManager.subscribe(`show_wrap_${id}`, onShow), eventManager.subscribe(`onclose_${id}`, onClose), eventManager.subscribe(`hide_wrap_${id}`, onHide)];
191
220
  return () => {
192
221
  subs.forEach(s => s.unsubscribe());
193
222
  };
194
223
  }, [id, context, onShow, onHide, onClose]);
195
224
  if (!Sheet) return null;
196
- return visible ? /*#__PURE__*/React.createElement(ProviderContext.Provider, {
225
+ const stackContextValue = {
226
+ behavior: stackBehavior,
227
+ isTransitioning: isPending,
228
+ previousSheetId
229
+ };
230
+ if (!visible) return null;
231
+ return /*#__PURE__*/React.createElement(ProviderContext.Provider, {
197
232
  value: context
198
233
  }, /*#__PURE__*/React.createElement(SheetIDContext.Provider, {
199
234
  value: id
@@ -201,10 +236,12 @@ const RenderSheet = ({
201
236
  value: ref
202
237
  }, /*#__PURE__*/React.createElement(SheetPayloadContext.Provider, {
203
238
  value: payload
239
+ }, /*#__PURE__*/React.createElement(StackBehaviorContext.Provider, {
240
+ value: stackContextValue
204
241
  }, /*#__PURE__*/React.createElement(Sheet, {
205
242
  id: id,
206
243
  payload: payload,
207
244
  context: context
208
- }))))) : null;
245
+ }))))));
209
246
  };
210
247
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useSafeAreaInsets","BottomSheetModalProvider","StatusBar","React","Animated","interpolate","interpolateColor","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","eventManager","providerRegistryStack","sheetsRegistry","global","registerSheet","id","Sheet","contexts","length","context","registry","publish","SheetProvider","iosModalSheetTypeOfAnimation","duration","children","top","forceUpdate","useReducer","x","sheetIds","Object","keys","onRegister","useCallback","isFullScreen","colorStyle","flex","backgroundColor","value","animatedStyle","overflow","borderRadius","transform","scaleX","translateY","dampingRatio","setStatusBar","setBarStyle","currentValue","useEffect","indexOf","push","unsub","subscribe","splice","unsubscribe","createElement","SheetAnimationContext","Provider","View","style","map","RenderSheet","key","ProviderContext","createContext","SheetIDContext","undefined","SheetRefContext","SheetPayloadContext","useProviderContext","useContext","useSheetIDContext","useSheetAnimationContext","useSheetRef","useSheetPayload","useOnSheet","type","listener","subscription","payload","setPayload","useState","visible","setVisible","ref","useRef","startsWith","onShow","data","ctx","reopened","onClose","_data","setTimeout","Math","max","onHide","subs","forEach","s"],"sourceRoot":"../../src","sources":["provider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Animated","interpolate","interpolateColor","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","useSafeAreaInsets","BottomSheetModalProvider","StatusBar","React","eventManager","providerRegistryStack","sheetsRegistry","global","registerSheet","id","Sheet","contexts","length","context","registry","publishAsync","SheetProvider","statusBar","scaleConfig","children","top","forceUpdate","useReducer","x","sheetIds","Object","keys","isFullScreen","colorStyle","flex","backgroundColor","value","animatedStyle","radius","borderRadius","scale","translateY","overflow","animation","type","config","duration","transform","scaleX","setStatusBar","setBarStyle","currentValue","useEffect","indexOf","push","unsub","subscribe","splice","unsubscribe","createElement","SheetSharedContext","Provider","topInset","View","style","map","RenderSheet","key","ProviderContext","createContext","SheetIDContext","undefined","SheetRefContext","SheetPayloadContext","StackBehaviorContext","behavior","isTransitioning","previousSheetId","useProviderContext","useContext","useSheetIDContext","useSheetSharedContext","useStackBehaviorContext","useSheetRef","useSheetPayload","useOnSheet","listener","subscription","payload","setPayload","useState","visible","setVisible","stackBehavior","setStackBehavior","isPending","startTransition","useTransition","setPreviousSheetId","ref","useRef","startsWith","onShow","useCallback","data","ctx","reopened","onClose","_data","nextSheetId","onHide","publish","subs","forEach","s","stackContextValue"],"sourceRoot":"../../src","sources":["provider.tsx"],"mappings":"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","ignoreList":[]}