react-native-bottom-sheet-stack 1.3.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -168,9 +168,9 @@ function MyComponent() {
168
168
 
169
169
  The portal API uses [react-native-teleport](https://github.com/nicklockwood/react-native-teleport) to render content in your component tree while displaying it in `BottomSheetHost`.
170
170
 
171
- ### Type-Safe Portal IDs
171
+ ### Type-Safe Portal IDs & Params
172
172
 
173
- You can get autocomplete and type checking for portal sheet IDs by augmenting the `BottomSheetPortalRegistry` interface.
173
+ You can get autocomplete and type checking for portal sheet IDs and their parameters by augmenting the `BottomSheetPortalRegistry` interface.
174
174
 
175
175
  **Step 1:** Create a type declaration file in your project (e.g., `src/types/bottom-sheet.d.ts`):
176
176
 
@@ -179,13 +179,17 @@ import 'react-native-bottom-sheet-stack';
179
179
 
180
180
  declare module 'react-native-bottom-sheet-stack' {
181
181
  interface BottomSheetPortalRegistry {
182
- 'settings-sheet': true;
183
- 'profile-sheet': true;
184
- 'confirm-dialog': true;
182
+ 'settings-sheet': true; // no params
183
+ 'profile-sheet': { userId: string }; // with required params
185
184
  }
186
185
  }
187
186
  ```
188
187
 
188
+ | Value | Meaning |
189
+ |-------|---------|
190
+ | `true` | Sheet has no params |
191
+ | `{ ... }` | Sheet has required params |
192
+
189
193
  **Step 2:** Make sure the file is included in your `tsconfig.json`:
190
194
 
191
195
  ```json
@@ -200,19 +204,35 @@ declare module 'react-native-bottom-sheet-stack' {
200
204
  }
201
205
  ```
202
206
 
203
- **Step 3:** Now TypeScript will autocomplete and validate the `id` prop:
207
+ **Step 3:** Now TypeScript will autocomplete and validate IDs and params:
208
+
209
+ ```tsx
210
+ // ✅ No params required (defined as `true`)
211
+ settingsControl.open();
212
+
213
+ // ✅ Params required (defined as object)
214
+ profileControl.open({ params: { userId: '123' } });
215
+
216
+ // ❌ Error - missing required params
217
+ profileControl.open(); // TypeScript error!
218
+ ```
219
+
220
+ **Step 4:** Access typed params inside your sheet:
204
221
 
205
222
  ```tsx
206
- // Valid - 'settings-sheet' is in registry
207
- <BottomSheetPortal id="settings-sheet">
208
- const control = useBottomSheetControl('settings-sheet');
223
+ const ProfileSheet = forwardRef((props, ref) => {
224
+ // Pass the sheet ID as generic to get typed params
225
+ const { params, close } = useBottomSheetState<'profile-sheet'>();
209
226
 
210
- // ❌ Error - 'unknown-sheet' is not in registry
211
- <BottomSheetPortal id="unknown-sheet">
212
- const control = useBottomSheetControl('unknown-sheet');
227
+ return (
228
+ <BottomSheetManaged ref={ref}>
229
+ <Text>User ID: {params.userId}</Text> {/* ✅ type-safe */}
230
+ </BottomSheetManaged>
231
+ );
232
+ });
213
233
  ```
214
234
 
215
- If you don't augment the registry, the `id` accepts any `string` for flexibility.
235
+ If you don't augment the registry, the `id` accepts any `string` and `params` is `unknown`.
216
236
 
217
237
  ## API Reference
218
238
 
@@ -256,40 +276,56 @@ const {
256
276
  } = useBottomSheetManager();
257
277
  ```
258
278
 
259
- #### `useBottomSheetState()`
279
+ #### `useBottomSheetState<T>()`
260
280
 
261
- Use inside a bottom sheet component:
281
+ Use inside a bottom sheet component. Pass a portal ID as generic for typed params:
262
282
 
263
283
  ```tsx
264
284
  const {
265
285
  bottomSheetState, // { id, status, groupId, ... }
286
+ params, // typed if generic provided, unknown otherwise
266
287
  close, // () => void
267
- } = useBottomSheetState();
288
+ } = useBottomSheetState<'my-sheet'>();
268
289
  ```
269
290
 
270
- #### `useBottomSheetControl(id: BottomSheetPortalId)`
291
+ #### `useBottomSheetControl<T>(id: T)`
271
292
 
272
- Control portal-based sheets:
293
+ Control portal-based sheets. Params are type-safe if registry is augmented:
273
294
 
274
295
  ```tsx
275
296
  const {
276
- open, // (options?) => void
277
- close, // () => void
278
- isOpen, // boolean
279
- status, // 'opening' | 'open' | 'closing' | 'hidden' | null
297
+ open, // (options?) => void - options include typed params
298
+ close, // () => void
299
+ updateParams, // (params) => void - update params while open
300
+ resetParams, // () => void - reset params to undefined
301
+ isOpen, // boolean
302
+ status, // 'opening' | 'open' | 'closing' | 'hidden' | null
280
303
  } = useBottomSheetControl('my-sheet');
304
+
305
+ // Open with params (required if defined in registry)
306
+ open({ params: { userId: '123' }, scaleBackground: true });
307
+
308
+ // Update params while sheet is open
309
+ updateParams({ userId: '456' });
310
+
311
+ // Reset params
312
+ resetParams();
281
313
  ```
282
314
 
283
315
  ### Types
284
316
 
285
317
  #### `BottomSheetPortalRegistry`
286
318
 
287
- Interface to augment for type-safe portal IDs. See [Type-Safe Portal IDs](#type-safe-portal-ids).
319
+ Interface to augment for type-safe portal IDs and params. See [Type-Safe Portal IDs & Params](#type-safe-portal-ids--params).
288
320
 
289
321
  #### `BottomSheetPortalId`
290
322
 
291
323
  Type for portal sheet IDs. If `BottomSheetPortalRegistry` is augmented, this is a union of registered keys. Otherwise, it's `string`.
292
324
 
325
+ #### `BottomSheetPortalParams<T>`
326
+
327
+ Type helper to extract params for a given portal sheet ID. Returns `undefined` if the sheet has no params (`true` in registry), or the param type if defined.
328
+
293
329
  ## Example
294
330
 
295
331
  See the [example app](./example) for a full demo including:
@@ -83,7 +83,8 @@ const useBottomSheetStore = exports.useBottomSheetStore = (0, _traditional.creat
83
83
  content: null,
84
84
  status: 'opening',
85
85
  usePortal: true,
86
- scaleBackground: options?.scaleBackground
86
+ scaleBackground: options?.scaleBackground,
87
+ params: options?.params
87
88
  }
88
89
  },
89
90
  stackOrder: [...state.stackOrder, id]
@@ -151,6 +152,21 @@ const useBottomSheetStore = exports.useBottomSheetStore = (0, _traditional.creat
151
152
  stackOrder: newStackOrder
152
153
  };
153
154
  }),
155
+ updateParams: (id, params) => set(state => {
156
+ const sheet = state.sheetsById[id];
157
+ if (!sheet) {
158
+ return state;
159
+ }
160
+ return {
161
+ sheetsById: {
162
+ ...state.sheetsById,
163
+ [id]: {
164
+ ...sheet,
165
+ params
166
+ }
167
+ }
168
+ };
169
+ }),
154
170
  clearAll: () => set(() => ({
155
171
  sheetsById: {},
156
172
  stackOrder: []
@@ -1 +1 @@
1
- {"version":3,"names":["_middleware","require","_traditional","useBottomSheetStore","exports","create","subscribeWithSelector","set","sheetsById","stackOrder","push","sheet","state","id","status","switch","newSheetsById","topId","length","replace","openPortal","groupId","options","content","usePortal","scaleBackground","markOpen","startClosing","index","indexOf","belowId","belowSheet","undefined","finishClosing","newStackOrder","filter","sheetId","topSheet","clearAll"],"sourceRoot":"../../src","sources":["bottomSheet.store.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_middleware","require","_traditional","useBottomSheetStore","exports","create","subscribeWithSelector","set","sheetsById","stackOrder","push","sheet","state","id","status","switch","newSheetsById","topId","length","replace","openPortal","groupId","options","content","usePortal","scaleBackground","params","markOpen","startClosing","index","indexOf","belowId","belowSheet","undefined","finishClosing","newStackOrder","filter","sheetId","topSheet","updateParams","clearAll"],"sourceRoot":"../../src","sources":["bottomSheet.store.ts"],"mappings":"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","ignoreList":[]}
@@ -11,13 +11,14 @@ var _BottomSheetManager = require("./BottomSheetManager.provider");
11
11
  var _refsMap = require("./refsMap");
12
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
13
  function useBottomSheetControl(id) {
14
- const $ = (0, _compilerRuntime.c)(14);
14
+ const $ = (0, _compilerRuntime.c)(22);
15
15
  const bottomSheetManagerContext = (0, _BottomSheetManager.useMaybeBottomSheetManagerContext)();
16
16
  const openPortal = (0, _bottomSheet.useBottomSheetStore)(_temp);
17
17
  const startClosing = (0, _bottomSheet.useBottomSheetStore)(_temp2);
18
+ const storeUpdateParams = (0, _bottomSheet.useBottomSheetStore)(_temp3);
18
19
  let t0;
19
20
  if ($[0] !== id) {
20
- t0 = state_1 => state_1.sheetsById[id];
21
+ t0 = state_2 => state_2.sheetsById[id];
21
22
  $[0] = id;
22
23
  $[1] = t0;
23
24
  } else {
@@ -52,25 +53,57 @@ function useBottomSheetControl(id) {
52
53
  t2 = $[8];
53
54
  }
54
55
  const close = t2;
56
+ let t3;
57
+ if ($[9] !== id || $[10] !== storeUpdateParams) {
58
+ t3 = params => {
59
+ storeUpdateParams(id, params);
60
+ };
61
+ $[9] = id;
62
+ $[10] = storeUpdateParams;
63
+ $[11] = t3;
64
+ } else {
65
+ t3 = $[11];
66
+ }
67
+ const updateParams = t3;
68
+ let t4;
69
+ if ($[12] !== id || $[13] !== storeUpdateParams) {
70
+ t4 = () => {
71
+ storeUpdateParams(id, undefined);
72
+ };
73
+ $[12] = id;
74
+ $[13] = storeUpdateParams;
75
+ $[14] = t4;
76
+ } else {
77
+ t4 = $[14];
78
+ }
79
+ const resetParams = t4;
55
80
  const status = sheetState?.status ?? null;
56
81
  const isOpen = status === "open" || status === "opening";
57
- let t3;
58
- if ($[9] !== close || $[10] !== isOpen || $[11] !== open || $[12] !== status) {
59
- t3 = {
60
- open,
82
+ const t5 = open;
83
+ let t6;
84
+ if ($[15] !== close || $[16] !== isOpen || $[17] !== resetParams || $[18] !== status || $[19] !== t5 || $[20] !== updateParams) {
85
+ t6 = {
86
+ open: t5,
61
87
  close,
88
+ updateParams,
89
+ resetParams,
62
90
  isOpen,
63
91
  status
64
92
  };
65
- $[9] = close;
66
- $[10] = isOpen;
67
- $[11] = open;
68
- $[12] = status;
69
- $[13] = t3;
93
+ $[15] = close;
94
+ $[16] = isOpen;
95
+ $[17] = resetParams;
96
+ $[18] = status;
97
+ $[19] = t5;
98
+ $[20] = updateParams;
99
+ $[21] = t6;
70
100
  } else {
71
- t3 = $[13];
101
+ t6 = $[21];
72
102
  }
73
- return t3;
103
+ return t6;
104
+ }
105
+ function _temp3(state_1) {
106
+ return state_1.updateParams;
74
107
  }
75
108
  function _temp2(state_0) {
76
109
  return state_0.startClosing;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_bottomSheet","_BottomSheetManager","_refsMap","e","__esModule","default","useBottomSheetControl","id","$","_compilerRuntime","c","bottomSheetManagerContext","useMaybeBottomSheetManagerContext","openPortal","useBottomSheetStore","_temp","startClosing","_temp2","t0","state_1","state","sheetsById","sheetState","t1","groupId","options","ref","React","createRef","sheetRefs","open","t2","close","status","isOpen","t3","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetControl.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,YAAA,GAAAD,OAAA;AAKA,IAAAE,mBAAA,GAAAF,OAAA;AAEA,IAAAG,QAAA,GAAAH,OAAA;AAAsC,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAS/B,SAAAG,sBAAAC,EAAA;EAAA,MAAAC,CAAA,OAAAC,gBAAA,CAAAC,CAAA;EAGL,MAAAC,yBAAA,GAAkC,IAAAC,qDAAiC,EAAC,CAAC;EAErE,MAAAC,UAAA,GAAmB,IAAAC,gCAAmB,EAACC,KAA2B,CAAC;EACnE,MAAAC,YAAA,GAAqB,IAAAF,gCAAmB,EAACG,MAA6B,CAAC;EAAC,IAAAC,EAAA;EAAA,IAAAV,CAAA,QAAAD,EAAA;IACjCW,EAAA,GAAAC,OAAA,IAAWC,OAAK,CAAAC,UAAW,CAACd,EAAE,CAAC;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAtE,MAAAc,UAAA,GAAmB,IAAAR,gCAAmB,EAACI,EAA+B,CAAC;EAAC,IAAAK,EAAA;EAAA,IAAAf,CAAA,QAAAG,yBAAA,EAAAa,OAAA,IAAAhB,CAAA,QAAAD,EAAA,IAAAC,CAAA,QAAAK,UAAA;IAE3DU,EAAA,GAAAE,OAAA;MACX,MAAAD,OAAA,GAAgBb,yBAAyB,EAAAa,OAAsB,IAA/C,SAA+C;MAG/D,MAAAE,GAAA,gBAAYC,cAAK,CAAAC,SAAU,CAAqB,CAAC;MACjDC,kBAAS,CAACtB,EAAE,IAAImB,GAAH;MAEbb,UAAU,CAACN,EAAE,EAAEiB,OAAO,EAAEC,OAAO,CAAC;IAAA,CACjC;IAAAjB,CAAA,MAAAG,yBAAA,EAAAa,OAAA;IAAAhB,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAK,UAAA;IAAAL,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EARD,MAAAsB,IAAA,GAAaP,EAQZ;EAAC,IAAAQ,EAAA;EAAA,IAAAvB,CAAA,QAAAD,EAAA,IAAAC,CAAA,QAAAQ,YAAA;IAEYe,EAAA,GAAAA,CAAA;MACZf,YAAY,CAACT,EAAE,CAAC;IAAA,CACjB;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAQ,YAAA;IAAAR,CAAA,MAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EAFD,MAAAwB,KAAA,GAAcD,EAEb;EAED,MAAAE,MAAA,GAAeX,UAAU,EAAAW,MAAgB,IAA1B,IAA0B;EACzC,MAAAC,MAAA,GAAeD,MAAM,KAAK,MAA8B,IAApBA,MAAM,KAAK,SAAS;EAAC,IAAAE,EAAA;EAAA,IAAA3B,CAAA,QAAAwB,KAAA,IAAAxB,CAAA,SAAA0B,MAAA,IAAA1B,CAAA,SAAAsB,IAAA,IAAAtB,CAAA,SAAAyB,MAAA;IAElDE,EAAA;MAAAL,IAAA;MAAAE,KAAA;MAAAE,MAAA;MAAAD;IAKP,CAAC;IAAAzB,CAAA,MAAAwB,KAAA;IAAAxB,CAAA,OAAA0B,MAAA;IAAA1B,CAAA,OAAAsB,IAAA;IAAAtB,CAAA,OAAAyB,MAAA;IAAAzB,CAAA,OAAA2B,EAAA;EAAA;IAAAA,EAAA,GAAA3B,CAAA;EAAA;EAAA,OALM2B,EAKN;AAAA;AA/BI,SAAAlB,OAAAmB,OAAA;EAAA,OAM+ChB,OAAK,CAAAJ,YAAa;AAAA;AANjE,SAAAD,MAAAK,KAAA;EAAA,OAK6CA,KAAK,CAAAP,UAAW;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_bottomSheet","_BottomSheetManager","_refsMap","e","__esModule","default","useBottomSheetControl","id","$","_compilerRuntime","c","bottomSheetManagerContext","useMaybeBottomSheetManagerContext","openPortal","useBottomSheetStore","_temp","startClosing","_temp2","storeUpdateParams","_temp3","t0","state_2","state","sheetsById","sheetState","t1","groupId","options","ref","React","createRef","sheetRefs","open","t2","close","t3","params","updateParams","t4","undefined","resetParams","status","isOpen","t5","t6","state_1","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetControl.ts"],"mappings":"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","ignoreList":[]}
@@ -7,8 +7,10 @@ exports.useBottomSheetState = useBottomSheetState;
7
7
  var _compilerRuntime = require("react/compiler-runtime");
8
8
  var _BottomSheet = require("./BottomSheet.context");
9
9
  var _bottomSheet = require("./bottomSheet.store");
10
+ // Marker type to detect when no generic is provided
11
+
10
12
  function useBottomSheetState() {
11
- const $ = (0, _compilerRuntime.c)(8);
13
+ const $ = (0, _compilerRuntime.c)(9);
12
14
  const context = (0, _BottomSheet.useMaybeBottomSheetContext)();
13
15
  let t0;
14
16
  if ($[0] !== context?.id) {
@@ -24,29 +26,32 @@ function useBottomSheetState() {
24
26
  throw new Error("useBottomSheetState must be used within a BottomSheetProvider");
25
27
  }
26
28
  let t1;
27
- if ($[2] !== bottomSheetState || $[3] !== startClosing) {
29
+ if ($[2] !== bottomSheetState.id || $[3] !== startClosing) {
28
30
  t1 = () => startClosing(bottomSheetState.id);
29
- $[2] = bottomSheetState;
31
+ $[2] = bottomSheetState.id;
30
32
  $[3] = startClosing;
31
33
  $[4] = t1;
32
34
  } else {
33
35
  t1 = $[4];
34
36
  }
35
37
  const close = t1;
36
- let t2;
37
- if ($[5] !== bottomSheetState || $[6] !== close) {
38
- t2 = {
38
+ const t2 = bottomSheetState.params;
39
+ let t3;
40
+ if ($[5] !== bottomSheetState || $[6] !== close || $[7] !== t2) {
41
+ t3 = {
39
42
  bottomSheetState,
43
+ params: t2,
40
44
  close,
41
45
  closeBottomSheet: close
42
46
  };
43
47
  $[5] = bottomSheetState;
44
48
  $[6] = close;
45
49
  $[7] = t2;
50
+ $[8] = t3;
46
51
  } else {
47
- t2 = $[7];
52
+ t3 = $[8];
48
53
  }
49
- return t2;
54
+ return t3;
50
55
  }
51
56
  function _temp(state_0) {
52
57
  return state_0.startClosing;
@@ -1 +1 @@
1
- {"version":3,"names":["_BottomSheet","require","_bottomSheet","useBottomSheetState","$","_compilerRuntime","c","context","useMaybeBottomSheetContext","t0","id","state","sheetsById","bottomSheetState","useBottomSheetStore","startClosing","_temp","Error","t1","close","t2","closeBottomSheet","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetState.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAKO,SAAAE,oBAAA;EAAA,MAAAC,CAAA,OAAAC,gBAAA,CAAAC,CAAA;EAKL,MAAAC,OAAA,GAAgB,IAAAC,uCAA0B,EAAC,CAAC;EAAC,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAG,OAAA,EAAAG,EAAA;IAG3CD,EAAA,GAAAE,KAAA,IAAWA,KAAK,CAAAC,UAAW,CAACL,OAAO,EAAAG,EAAI,CAAE;IAAAN,CAAA,MAAAG,OAAA,EAAAG,EAAA;IAAAN,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAD3C,MAAAS,gBAAA,GAAyB,IAAAC,gCAAmB,EAC1CL,EACF,CAAC;EAED,MAAAM,YAAA,GAAqB,IAAAD,gCAAmB,EAACE,KAA6B,CAAC;EAEvE,IAAI,CAACH,gBAAgB;IACnB,MAAM,IAAII,KAAK,CACb,+DACF,CAAC;EAAC;EACH,IAAAC,EAAA;EAAA,IAAAd,CAAA,QAAAS,gBAAA,IAAAT,CAAA,QAAAW,YAAA;IAEaG,EAAA,GAAAA,CAAA,KAAMH,YAAY,CAACF,gBAAgB,CAAAH,EAAG,CAAC;IAAAN,CAAA,MAAAS,gBAAA;IAAAT,CAAA,MAAAW,YAAA;IAAAX,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAArD,MAAAe,KAAA,GAAcD,EAAuC;EAAC,IAAAE,EAAA;EAAA,IAAAhB,CAAA,QAAAS,gBAAA,IAAAT,CAAA,QAAAe,KAAA;IAE/CC,EAAA;MAAAP,gBAAA;MAAAM,KAAA;MAAAE,gBAAA,EAGaF;IACpB,CAAC;IAAAf,CAAA,MAAAS,gBAAA;IAAAT,CAAA,MAAAe,KAAA;IAAAf,CAAA,MAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAAA,OAJMgB,EAIN;AAAA;AAzBI,SAAAJ,MAAAM,OAAA;EAAA,OAW+CX,OAAK,CAAAI,YAAa;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_BottomSheet","require","_bottomSheet","useBottomSheetState","$","_compilerRuntime","c","context","useMaybeBottomSheetContext","t0","id","state","sheetsById","bottomSheetState","useBottomSheetStore","startClosing","_temp","Error","t1","close","t2","params","t3","closeBottomSheet","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetState.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AASA;;AAiBO,SAAAE,oBAAA;EAAA,MAAAC,CAAA,OAAAC,gBAAA,CAAAC,CAAA;EAGL,MAAAC,OAAA,GAAgB,IAAAC,uCAA0B,EAAC,CAAC;EAAC,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAG,OAAA,EAAAG,EAAA;IAG3CD,EAAA,GAAAE,KAAA,IAAWA,KAAK,CAAAC,UAAW,CAACL,OAAO,EAAAG,EAAI,CAAE;IAAAN,CAAA,MAAAG,OAAA,EAAAG,EAAA;IAAAN,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAD3C,MAAAS,gBAAA,GAAyB,IAAAC,gCAAmB,EAC1CL,EACF,CAAC;EAED,MAAAM,YAAA,GAAqB,IAAAD,gCAAmB,EAACE,KAA6B,CAAC;EAEvE,IAAI,CAACH,gBAAgB;IACnB,MAAM,IAAII,KAAK,CACb,+DACF,CAAC;EAAC;EACH,IAAAC,EAAA;EAAA,IAAAd,CAAA,QAAAS,gBAAA,CAAAH,EAAA,IAAAN,CAAA,QAAAW,YAAA;IAEaG,EAAA,GAAAA,CAAA,KAAMH,YAAY,CAACF,gBAAgB,CAAAH,EAAG,CAAC;IAAAN,CAAA,MAAAS,gBAAA,CAAAH,EAAA;IAAAN,CAAA,MAAAW,YAAA;IAAAX,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAArD,MAAAe,KAAA,GAAcD,EAAuC;EAI3C,MAAAE,EAAA,GAAAP,gBAAgB,CAAAQ,MAAO;EAAoB,IAAAC,EAAA;EAAA,IAAAlB,CAAA,QAAAS,gBAAA,IAAAT,CAAA,QAAAe,KAAA,IAAAf,CAAA,QAAAgB,EAAA;IAF9CE,EAAA;MAAAT,gBAAA;MAAAQ,MAAA,EAEGD,EAA2C;MAAAD,KAAA;MAAAI,gBAAA,EAEjCJ;IACpB,CAAC;IAAAf,CAAA,MAAAS,gBAAA;IAAAT,CAAA,MAAAe,KAAA;IAAAf,CAAA,MAAAgB,EAAA;IAAAhB,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAAA,OALMkB,EAKN;AAAA;AAxBI,SAAAN,MAAAQ,OAAA;EAAA,OAS+Cb,OAAK,CAAAI,YAAa;AAAA","ignoreList":[]}
@@ -8,14 +8,16 @@ export interface BottomSheetState {
8
8
  status: BottomSheetStatus;
9
9
  scaleBackground?: boolean;
10
10
  usePortal?: boolean;
11
+ params?: Record<string, unknown>;
11
12
  }
12
13
  type TriggerState = Omit<BottomSheetState, 'status'>;
13
14
  interface BottomSheetStoreState {
14
15
  sheetsById: Record<string, BottomSheetState>;
15
16
  stackOrder: string[];
16
17
  }
17
- export interface PortalOpenOptions {
18
+ export interface PortalOpenOptions<TParams = Record<string, unknown>> {
18
19
  scaleBackground?: boolean;
20
+ params?: TParams;
19
21
  }
20
22
  interface BottomSheetStoreActions {
21
23
  push(sheet: TriggerState): void;
@@ -25,6 +27,7 @@ interface BottomSheetStoreActions {
25
27
  markOpen(id: string): void;
26
28
  startClosing(id: string): void;
27
29
  finishClosing(id: string): void;
30
+ updateParams(id: string, params: Record<string, unknown> | undefined): void;
28
31
  clearAll(): void;
29
32
  }
30
33
  export type BottomSheetStore = BottomSheetStoreState & BottomSheetStoreActions;
@@ -1 +1 @@
1
- {"version":3,"file":"bottomSheet.store.d.ts","sourceRoot":"","sources":["../../../src/bottomSheet.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAErD,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,uBAAuB;IAC/B,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,mBAAmB;;;;;;;;EAuJ/B,CAAC"}
1
+ {"version":3,"file":"bottomSheet.store.d.ts","sourceRoot":"","sources":["../../../src/bottomSheet.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAErD,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,uBAAuB;IAC/B,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5E,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,mBAAmB;;;;;;;;EAsK/B,CAAC"}
@@ -7,5 +7,5 @@ export { BottomSheetScaleView } from './BottomSheetScaleView';
7
7
  export { type ScaleConfig } from './useScaleAnimation';
8
8
  export { BottomSheetPortal } from './BottomSheetPortal';
9
9
  export { useBottomSheetControl } from './useBottomSheetControl';
10
- export type { BottomSheetPortalRegistry, BottomSheetPortalId, } from './portal.types';
10
+ export type { BottomSheetPortalRegistry, BottomSheetPortalId, BottomSheetPortalParams, } from './portal.types';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Registry for portal-based bottom sheets.
3
- * Augment this interface in your app to get type-safe sheet IDs:
3
+ * Augment this interface in your app to get type-safe sheet IDs and params:
4
4
  *
5
5
  * @example
6
6
  * ```tsx
7
7
  * declare module 'react-native-bottom-sheet-stack' {
8
8
  * interface BottomSheetPortalRegistry {
9
- * 'my-sheet': true;
10
- * 'settings-sheet': true;
11
- * 'profile-sheet': true;
9
+ * 'simple-sheet': true; // no params
10
+ * 'user-sheet': { userId: string }; // with params
11
+ * 'settings-sheet': { theme: 'light' | 'dark'; notifications: boolean };
12
12
  * }
13
13
  * }
14
14
  * ```
@@ -21,4 +21,13 @@ export interface BottomSheetPortalRegistry {
21
21
  * Otherwise, it falls back to `string` for flexibility.
22
22
  */
23
23
  export type BottomSheetPortalId = keyof BottomSheetPortalRegistry extends never ? string : Extract<keyof BottomSheetPortalRegistry, string>;
24
+ /**
25
+ * Extract params type for a given portal sheet ID.
26
+ * Returns `undefined` if the sheet has no params (value is `true`).
27
+ */
28
+ export type BottomSheetPortalParams<T extends BottomSheetPortalId> = keyof BottomSheetPortalRegistry extends never ? Record<string, unknown> | undefined : T extends keyof BottomSheetPortalRegistry ? BottomSheetPortalRegistry[T] extends true ? undefined : BottomSheetPortalRegistry[T] : Record<string, unknown> | undefined;
29
+ /**
30
+ * Check if a portal sheet has params defined.
31
+ */
32
+ export type HasParams<T extends BottomSheetPortalId> = keyof BottomSheetPortalRegistry extends never ? false : T extends keyof BottomSheetPortalRegistry ? BottomSheetPortalRegistry[T] extends true ? false : true : false;
24
33
  //# sourceMappingURL=portal.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"portal.types.d.ts","sourceRoot":"","sources":["../../../src/portal.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;CAAG;AAE7C;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,yBAAyB,SAAS,KAAK,GAC3E,MAAM,GACN,OAAO,CAAC,MAAM,yBAAyB,EAAE,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"portal.types.d.ts","sourceRoot":"","sources":["../../../src/portal.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;CAAG;AAE7C;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,yBAAyB,SAAS,KAAK,GAC3E,MAAM,GACN,OAAO,CAAC,MAAM,yBAAyB,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,mBAAmB,IAC/D,MAAM,yBAAyB,SAAS,KAAK,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACnC,CAAC,SAAS,MAAM,yBAAyB,GACvC,yBAAyB,CAAC,CAAC,CAAC,SAAS,IAAI,GACvC,SAAS,GACT,yBAAyB,CAAC,CAAC,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,mBAAmB,IACjD,MAAM,yBAAyB,SAAS,KAAK,GACzC,KAAK,GACL,CAAC,SAAS,MAAM,yBAAyB,GACvC,yBAAyB,CAAC,CAAC,CAAC,SAAS,IAAI,GACvC,KAAK,GACL,IAAI,GACN,KAAK,CAAC"}
@@ -1,10 +1,19 @@
1
1
  import { type BottomSheetStatus, type PortalOpenOptions } from './bottomSheet.store';
2
- import type { BottomSheetPortalId } from './portal.types';
3
- export interface UseBottomSheetControlReturn {
4
- open: (options?: PortalOpenOptions) => void;
2
+ import type { BottomSheetPortalId, BottomSheetPortalParams, HasParams } from './portal.types';
3
+ type OpenOptions<T extends BottomSheetPortalId> = Omit<PortalOpenOptions<BottomSheetPortalParams<T>>, 'params'> & (HasParams<T> extends true ? {
4
+ params: BottomSheetPortalParams<T>;
5
+ } : {
6
+ params?: BottomSheetPortalParams<T>;
7
+ });
8
+ type OpenFunction<T extends BottomSheetPortalId> = HasParams<T> extends true ? (options: OpenOptions<T>) => void : (options?: OpenOptions<T>) => void;
9
+ export interface UseBottomSheetControlReturn<T extends BottomSheetPortalId> {
10
+ open: OpenFunction<T>;
5
11
  close: () => void;
12
+ updateParams: (params: BottomSheetPortalParams<T>) => void;
13
+ resetParams: () => void;
6
14
  isOpen: boolean;
7
15
  status: BottomSheetStatus | null;
8
16
  }
9
- export declare function useBottomSheetControl(id: BottomSheetPortalId): UseBottomSheetControlReturn;
17
+ export declare function useBottomSheetControl<T extends BottomSheetPortalId>(id: T): UseBottomSheetControlReturn<T>;
18
+ export {};
10
19
  //# sourceMappingURL=useBottomSheetControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBottomSheetControl.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAClC;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,mBAAmB,GACtB,2BAA2B,CA8B7B"}
1
+ {"version":3,"file":"useBottomSheetControl.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACV,MAAM,gBAAgB,CAAC;AAGxB,KAAK,WAAW,CAAC,CAAC,SAAS,mBAAmB,IAAI,IAAI,CACpD,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAC7C,QAAQ,CACT,GACC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB;IAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAA;CAAE,GACtC;IAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAAC;AAE/C,KAAK,YAAY,CAAC,CAAC,SAAS,mBAAmB,IAC7C,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,GACrB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,GACjC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEzC,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,mBAAmB;IACxE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,YAAY,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3D,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAClC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,mBAAmB,EACjE,EAAE,EAAE,CAAC,GACJ,2BAA2B,CAAC,CAAC,CAAC,CAyChC"}
@@ -15,6 +15,7 @@ export declare const useBottomSheetManager: () => {
15
15
  content: React.ReactNode;
16
16
  scaleBackground?: boolean | undefined;
17
17
  usePortal?: boolean | undefined;
18
+ params?: Record<string, unknown> | undefined;
18
19
  }) => void;
19
20
  replaceBottomSheet: (sheet: {
20
21
  groupId: string;
@@ -22,6 +23,7 @@ export declare const useBottomSheetManager: () => {
22
23
  content: React.ReactNode;
23
24
  scaleBackground?: boolean | undefined;
24
25
  usePortal?: boolean | undefined;
26
+ params?: Record<string, unknown> | undefined;
25
27
  }) => void;
26
28
  };
27
29
  //# sourceMappingURL=useBottomSheetManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBottomSheetManager.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMzE,eAAO,MAAM,qBAAqB;;gBA0Db,MAAM;+BArCd,KAAK,CAAC,YAAY,YAClB;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B;;;;;;;;;;;;;;;CA8CJ,CAAC"}
1
+ {"version":3,"file":"useBottomSheetManager.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMzE,eAAO,MAAM,qBAAqB;;gBA0Db,MAAM;+BArCd,KAAK,CAAC,YAAY,YAClB;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B;;;;;;;;;;;;;;;;;CA8CJ,CAAC"}
@@ -1,7 +1,14 @@
1
1
  import { type BottomSheetState } from './bottomSheet.store';
2
- export declare function useBottomSheetState(): {
2
+ import type { BottomSheetPortalId, BottomSheetPortalParams } from './portal.types';
3
+ declare const UNSPECIFIED: unique symbol;
4
+ type Unspecified = typeof UNSPECIFIED;
5
+ type ResolveParams<T> = T extends Unspecified ? unknown : T extends BottomSheetPortalId ? BottomSheetPortalParams<T> : unknown;
6
+ export interface UseBottomSheetStateReturn<T> {
3
7
  bottomSheetState: BottomSheetState;
8
+ params: ResolveParams<T>;
4
9
  close: () => void;
5
10
  closeBottomSheet: () => void;
6
- };
11
+ }
12
+ export declare function useBottomSheetState<T extends BottomSheetPortalId | Unspecified = Unspecified>(): UseBottomSheetStateReturn<T>;
13
+ export {};
7
14
  //# sourceMappingURL=useBottomSheetState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBottomSheetState.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetState.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,mBAAmB,IAAI;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B,CAsBA"}
1
+ {"version":3,"file":"useBottomSheetState.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetState.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AACzC,KAAK,WAAW,GAAG,OAAO,WAAW,CAAC;AAEtC,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,GACzC,OAAO,GACP,CAAC,SAAS,mBAAmB,GAC3B,uBAAuB,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC;AAEd,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,mBAAmB,GAAG,WAAW,GAAG,WAAW,KACtD,yBAAyB,CAAC,CAAC,CAAC,CAuBhC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-bottom-sheet-stack",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "description": "Bottom Sheet Stack Manager",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "lib/commonjs/index.js",
@@ -12,6 +12,7 @@ export interface BottomSheetState {
12
12
  status: BottomSheetStatus;
13
13
  scaleBackground?: boolean;
14
14
  usePortal?: boolean;
15
+ params?: Record<string, unknown>;
15
16
  }
16
17
 
17
18
  type TriggerState = Omit<BottomSheetState, 'status'>;
@@ -21,8 +22,9 @@ interface BottomSheetStoreState {
21
22
  stackOrder: string[];
22
23
  }
23
24
 
24
- export interface PortalOpenOptions {
25
+ export interface PortalOpenOptions<TParams = Record<string, unknown>> {
25
26
  scaleBackground?: boolean;
27
+ params?: TParams;
26
28
  }
27
29
 
28
30
  interface BottomSheetStoreActions {
@@ -33,6 +35,7 @@ interface BottomSheetStoreActions {
33
35
  markOpen(id: string): void;
34
36
  startClosing(id: string): void;
35
37
  finishClosing(id: string): void;
38
+ updateParams(id: string, params: Record<string, unknown> | undefined): void;
36
39
  clearAll(): void;
37
40
  }
38
41
 
@@ -120,6 +123,7 @@ export const useBottomSheetStore = create(
120
123
  status: 'opening',
121
124
  usePortal: true,
122
125
  scaleBackground: options?.scaleBackground,
126
+ params: options?.params,
123
127
  },
124
128
  },
125
129
  stackOrder: [...state.stackOrder, id],
@@ -187,6 +191,20 @@ export const useBottomSheetStore = create(
187
191
  };
188
192
  }),
189
193
 
194
+ updateParams: (id, params) =>
195
+ set((state) => {
196
+ const sheet = state.sheetsById[id];
197
+ if (!sheet) {
198
+ return state;
199
+ }
200
+ return {
201
+ sheetsById: {
202
+ ...state.sheetsById,
203
+ [id]: { ...sheet, params },
204
+ },
205
+ };
206
+ }),
207
+
190
208
  clearAll: () => set(() => ({ sheetsById: {}, stackOrder: [] })),
191
209
  }))
192
210
  );
package/src/index.tsx CHANGED
@@ -10,4 +10,5 @@ export { useBottomSheetControl } from './useBottomSheetControl';
10
10
  export type {
11
11
  BottomSheetPortalRegistry,
12
12
  BottomSheetPortalId,
13
+ BottomSheetPortalParams,
13
14
  } from './portal.types';
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Registry for portal-based bottom sheets.
3
- * Augment this interface in your app to get type-safe sheet IDs:
3
+ * Augment this interface in your app to get type-safe sheet IDs and params:
4
4
  *
5
5
  * @example
6
6
  * ```tsx
7
7
  * declare module 'react-native-bottom-sheet-stack' {
8
8
  * interface BottomSheetPortalRegistry {
9
- * 'my-sheet': true;
10
- * 'settings-sheet': true;
11
- * 'profile-sheet': true;
9
+ * 'simple-sheet': true; // no params
10
+ * 'user-sheet': { userId: string }; // with params
11
+ * 'settings-sheet': { theme: 'light' | 'dark'; notifications: boolean };
12
12
  * }
13
13
  * }
14
14
  * ```
@@ -23,3 +23,28 @@ export interface BottomSheetPortalRegistry {}
23
23
  export type BottomSheetPortalId = keyof BottomSheetPortalRegistry extends never
24
24
  ? string
25
25
  : Extract<keyof BottomSheetPortalRegistry, string>;
26
+
27
+ /**
28
+ * Extract params type for a given portal sheet ID.
29
+ * Returns `undefined` if the sheet has no params (value is `true`).
30
+ */
31
+ export type BottomSheetPortalParams<T extends BottomSheetPortalId> =
32
+ keyof BottomSheetPortalRegistry extends never
33
+ ? Record<string, unknown> | undefined
34
+ : T extends keyof BottomSheetPortalRegistry
35
+ ? BottomSheetPortalRegistry[T] extends true
36
+ ? undefined
37
+ : BottomSheetPortalRegistry[T]
38
+ : Record<string, unknown> | undefined;
39
+
40
+ /**
41
+ * Check if a portal sheet has params defined.
42
+ */
43
+ export type HasParams<T extends BottomSheetPortalId> =
44
+ keyof BottomSheetPortalRegistry extends never
45
+ ? false
46
+ : T extends keyof BottomSheetPortalRegistry
47
+ ? BottomSheetPortalRegistry[T] extends true
48
+ ? false
49
+ : true
50
+ : false;
@@ -7,26 +7,46 @@ import {
7
7
  type PortalOpenOptions,
8
8
  } from './bottomSheet.store';
9
9
  import { useMaybeBottomSheetManagerContext } from './BottomSheetManager.provider';
10
- import type { BottomSheetPortalId } from './portal.types';
10
+ import type {
11
+ BottomSheetPortalId,
12
+ BottomSheetPortalParams,
13
+ HasParams,
14
+ } from './portal.types';
11
15
  import { sheetRefs } from './refsMap';
12
16
 
13
- export interface UseBottomSheetControlReturn {
14
- open: (options?: PortalOpenOptions) => void;
17
+ type OpenOptions<T extends BottomSheetPortalId> = Omit<
18
+ PortalOpenOptions<BottomSheetPortalParams<T>>,
19
+ 'params'
20
+ > &
21
+ (HasParams<T> extends true
22
+ ? { params: BottomSheetPortalParams<T> }
23
+ : { params?: BottomSheetPortalParams<T> });
24
+
25
+ type OpenFunction<T extends BottomSheetPortalId> =
26
+ HasParams<T> extends true
27
+ ? (options: OpenOptions<T>) => void
28
+ : (options?: OpenOptions<T>) => void;
29
+
30
+ export interface UseBottomSheetControlReturn<T extends BottomSheetPortalId> {
31
+ open: OpenFunction<T>;
15
32
  close: () => void;
33
+ updateParams: (params: BottomSheetPortalParams<T>) => void;
34
+ resetParams: () => void;
16
35
  isOpen: boolean;
17
36
  status: BottomSheetStatus | null;
18
37
  }
19
38
 
20
- export function useBottomSheetControl(
21
- id: BottomSheetPortalId
22
- ): UseBottomSheetControlReturn {
39
+ export function useBottomSheetControl<T extends BottomSheetPortalId>(
40
+ id: T
41
+ ): UseBottomSheetControlReturn<T> {
23
42
  const bottomSheetManagerContext = useMaybeBottomSheetManagerContext();
24
43
 
25
44
  const openPortal = useBottomSheetStore((state) => state.openPortal);
26
45
  const startClosing = useBottomSheetStore((state) => state.startClosing);
46
+ const storeUpdateParams = useBottomSheetStore((state) => state.updateParams);
27
47
  const sheetState = useBottomSheetStore((state) => state.sheetsById[id]);
28
48
 
29
- const open = (options?: PortalOpenOptions) => {
49
+ const open = (options?: OpenOptions<T>) => {
30
50
  const groupId = bottomSheetManagerContext?.groupId || 'default';
31
51
 
32
52
  // Create ref when opening (same pattern as useBottomSheetManager)
@@ -40,12 +60,22 @@ export function useBottomSheetControl(
40
60
  startClosing(id);
41
61
  };
42
62
 
63
+ const updateParams = (params: BottomSheetPortalParams<T>) => {
64
+ storeUpdateParams(id, params as Record<string, unknown>);
65
+ };
66
+
67
+ const resetParams = () => {
68
+ storeUpdateParams(id, undefined);
69
+ };
70
+
43
71
  const status = sheetState?.status ?? null;
44
72
  const isOpen = status === 'open' || status === 'opening';
45
73
 
46
74
  return {
47
- open,
75
+ open: open as OpenFunction<T>,
48
76
  close,
77
+ updateParams,
78
+ resetParams,
49
79
  isOpen,
50
80
  status,
51
81
  };
@@ -3,12 +3,31 @@ import {
3
3
  useBottomSheetStore,
4
4
  type BottomSheetState,
5
5
  } from './bottomSheet.store';
6
+ import type {
7
+ BottomSheetPortalId,
8
+ BottomSheetPortalParams,
9
+ } from './portal.types';
6
10
 
7
- export function useBottomSheetState(): {
11
+ // Marker type to detect when no generic is provided
12
+ declare const UNSPECIFIED: unique symbol;
13
+ type Unspecified = typeof UNSPECIFIED;
14
+
15
+ type ResolveParams<T> = T extends Unspecified
16
+ ? unknown
17
+ : T extends BottomSheetPortalId
18
+ ? BottomSheetPortalParams<T>
19
+ : unknown;
20
+
21
+ export interface UseBottomSheetStateReturn<T> {
8
22
  bottomSheetState: BottomSheetState;
23
+ params: ResolveParams<T>;
9
24
  close: () => void;
10
25
  closeBottomSheet: () => void;
11
- } {
26
+ }
27
+
28
+ export function useBottomSheetState<
29
+ T extends BottomSheetPortalId | Unspecified = Unspecified,
30
+ >(): UseBottomSheetStateReturn<T> {
12
31
  const context = useMaybeBottomSheetContext();
13
32
 
14
33
  const bottomSheetState = useBottomSheetStore(
@@ -27,6 +46,7 @@ export function useBottomSheetState(): {
27
46
 
28
47
  return {
29
48
  bottomSheetState,
49
+ params: bottomSheetState.params as ResolveParams<T>,
30
50
  close,
31
51
  closeBottomSheet: close,
32
52
  };