@onekeyfe/react-native-native-sheet 3.0.129 → 3.0.130

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.
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ const PRESENTATION_CLOSE_FALLBACK_MS = 5_000;
4
+ let nextId = 1;
5
+ let entries = [];
6
+ const listeners = new Set();
7
+ let securityFallbackTimer;
8
+ const closeFallbackTimers = new Map();
9
+ let registryBlocked = false;
10
+ function clearCloseFallbackTimer(id) {
11
+ const timer = closeFallbackTimers.get(id);
12
+ if (timer) {
13
+ clearTimeout(timer);
14
+ closeFallbackTimers.delete(id);
15
+ }
16
+ }
17
+ function emitChange() {
18
+ listeners.forEach(listener => listener());
19
+ }
20
+ export function subscribeNativeSheetRegistry(listener) {
21
+ listeners.add(listener);
22
+ return () => listeners.delete(listener);
23
+ }
24
+ export function getNativeSheetRegistrySnapshot() {
25
+ return entries;
26
+ }
27
+ export function addNativeSheetRegistryEntry(options, content) {
28
+ const id = nextId;
29
+ nextId += 1;
30
+ if (registryBlocked) {
31
+ options.onOpenChange?.(true);
32
+ options.onOpenChange?.(false);
33
+ options.onDismiss?.('security');
34
+ options.onAnimationComplete?.({
35
+ open: false
36
+ });
37
+ return id;
38
+ }
39
+ const entry = {
40
+ id,
41
+ open: true,
42
+ presentationRequested: false,
43
+ content,
44
+ options
45
+ };
46
+ entries = [...entries, entry];
47
+ options.onOpenChange?.(true);
48
+ emitChange();
49
+ return id;
50
+ }
51
+ export function closeNativeSheetRegistryEntry(id) {
52
+ const entry = entries.find(item => item.id === id);
53
+ if (!entry || !entry.open) {
54
+ return;
55
+ }
56
+ entry.options.onOpenChange?.(false);
57
+ if (!entry.presentationRequested) {
58
+ entries = entries.filter(item => item.id !== id);
59
+ entry.options.onDismiss?.('programmatic');
60
+ entry.options.onAnimationComplete?.({
61
+ open: false
62
+ });
63
+ } else {
64
+ entries = entries.map(item => item.id === id ? {
65
+ ...item,
66
+ open: false
67
+ } : item);
68
+ if (!closeFallbackTimers.has(id)) {
69
+ closeFallbackTimers.set(id, setTimeout(() => {
70
+ closeFallbackTimers.delete(id);
71
+ const pendingEntry = entries.find(item => item.id === id);
72
+ if (!pendingEntry) {
73
+ return;
74
+ }
75
+ finishNativeSheetRegistryEntry(id, 'programmatic');
76
+ pendingEntry.options.onAnimationComplete?.({
77
+ open: false
78
+ });
79
+ }, PRESENTATION_CLOSE_FALLBACK_MS));
80
+ }
81
+ }
82
+ emitChange();
83
+ }
84
+ export function markNativeSheetRegistryEntryPresentationRequested(id) {
85
+ entries = entries.map(entry => entry.id === id && !entry.presentationRequested ? {
86
+ ...entry,
87
+ presentationRequested: true
88
+ } : entry);
89
+ }
90
+ export function finishNativeSheetRegistryEntry(id, reason) {
91
+ const entry = entries.find(item => item.id === id);
92
+ if (!entry) {
93
+ return;
94
+ }
95
+ clearCloseFallbackTimer(id);
96
+ if (entry.open) {
97
+ entry.options.onOpenChange?.(false);
98
+ }
99
+ entries = entries.filter(item => item.id !== id);
100
+ entry.options.onDismiss?.(reason);
101
+ emitChange();
102
+ }
103
+ export function finishAllNativeSheetRegistryEntries(reason) {
104
+ const currentEntries = entries;
105
+ if (!currentEntries.length) {
106
+ return;
107
+ }
108
+ entries = [];
109
+ currentEntries.forEach(entry => {
110
+ clearCloseFallbackTimer(entry.id);
111
+ if (entry.open) {
112
+ entry.options.onOpenChange?.(false);
113
+ }
114
+ entry.options.onDismiss?.(reason);
115
+ entry.options.onAnimationComplete?.({
116
+ open: false
117
+ });
118
+ });
119
+ emitChange();
120
+ }
121
+ export function requestSecurityDismissAllNativeSheets() {
122
+ if (!entries.length) {
123
+ return;
124
+ }
125
+ const unpresentedEntries = entries.filter(entry => !entry.presentationRequested);
126
+ const presentedEntries = entries.filter(entry => entry.presentationRequested);
127
+ unpresentedEntries.forEach(entry => {
128
+ if (entry.open) {
129
+ entry.options.onOpenChange?.(false);
130
+ }
131
+ entry.options.onDismiss?.('security');
132
+ entry.options.onAnimationComplete?.({
133
+ open: false
134
+ });
135
+ });
136
+ entries = presentedEntries.map(entry => {
137
+ if (entry.open) {
138
+ entry.options.onOpenChange?.(false);
139
+ return {
140
+ ...entry,
141
+ open: false
142
+ };
143
+ }
144
+ return entry;
145
+ });
146
+ emitChange();
147
+ if (!entries.length) {
148
+ return;
149
+ }
150
+ if (securityFallbackTimer) {
151
+ clearTimeout(securityFallbackTimer);
152
+ }
153
+ securityFallbackTimer = setTimeout(() => {
154
+ securityFallbackTimer = undefined;
155
+ finishAllNativeSheetRegistryEntries('security');
156
+ }, 500);
157
+ }
158
+ export function setNativeSheetRegistryBlocked(blocked) {
159
+ registryBlocked = blocked;
160
+ if (blocked) {
161
+ requestSecurityDismissAllNativeSheets();
162
+ }
163
+ }
164
+ export function resetNativeSheetRegistryForTests() {
165
+ if (securityFallbackTimer) {
166
+ clearTimeout(securityFallbackTimer);
167
+ securityFallbackTimer = undefined;
168
+ }
169
+ closeFallbackTimers.forEach(clearTimeout);
170
+ closeFallbackTimers.clear();
171
+ entries = [];
172
+ nextId = 1;
173
+ registryBlocked = false;
174
+ listeners.clear();
175
+ }
176
+ //# sourceMappingURL=NativeSheetRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PRESENTATION_CLOSE_FALLBACK_MS","nextId","entries","listeners","Set","securityFallbackTimer","closeFallbackTimers","Map","registryBlocked","clearCloseFallbackTimer","id","timer","get","clearTimeout","delete","emitChange","forEach","listener","subscribeNativeSheetRegistry","add","getNativeSheetRegistrySnapshot","addNativeSheetRegistryEntry","options","content","onOpenChange","onDismiss","onAnimationComplete","open","entry","presentationRequested","closeNativeSheetRegistryEntry","find","item","filter","map","has","set","setTimeout","pendingEntry","finishNativeSheetRegistryEntry","markNativeSheetRegistryEntryPresentationRequested","reason","finishAllNativeSheetRegistryEntries","currentEntries","length","requestSecurityDismissAllNativeSheets","unpresentedEntries","presentedEntries","undefined","setNativeSheetRegistryBlocked","blocked","resetNativeSheetRegistryForTests","clear"],"sourceRoot":"../../src","sources":["NativeSheetRegistry.ts"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { createContext, useCallback, useContext } from 'react';
3
+ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';
4
4
  import { StyleSheet, useWindowDimensions, View } from 'react-native';
5
5
  import RNCNativeSheet from './NativeSheetNativeComponent';
6
- import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { resolveNativeSheetHeight, resolveNativeSheetLayoutConstraints } from "./NativeSheetHeight.js";
7
+ import { addNativeSheetRegistryEntry, closeNativeSheetRegistryEntry, finishNativeSheetRegistryEntry, getNativeSheetRegistrySnapshot, markNativeSheetRegistryEntryPresentationRequested, setNativeSheetRegistryBlocked, subscribeNativeSheetRegistry } from "./NativeSheetRegistry.js";
8
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
7
9
  const NativeSheetSecurityContext = /*#__PURE__*/createContext(false);
8
10
 
9
11
  /**
@@ -15,6 +17,10 @@ export function NativeSheetSecurityProvider({
15
17
  blocked,
16
18
  children
17
19
  }) {
20
+ useEffect(() => {
21
+ setNativeSheetRegistryBlocked(blocked);
22
+ return () => setNativeSheetRegistryBlocked(false);
23
+ }, [blocked]);
18
24
  return /*#__PURE__*/_jsx(NativeSheetSecurityContext.Provider, {
19
25
  value: blocked,
20
26
  children: children
@@ -27,38 +33,134 @@ export function NativeSheetSecurityProvider({
27
33
  * Fabric mounts the same child view into the platform sheet without serializing
28
34
  * business content through the native bridge.
29
35
  */
30
- export function NativeSheet({
36
+ function NativeSheetComponent({
31
37
  open,
32
38
  height,
39
+ maxHeight,
33
40
  children,
34
41
  onDismiss,
35
42
  onPresented,
36
- dismissOnPanDown = true,
37
- dismissOnBackdropPress = false,
43
+ onAnimationComplete,
44
+ onOpenChange,
45
+ dismissOnSnapToBottom,
46
+ disableDrag = false,
47
+ dismissOnPanDown,
48
+ dismissOnOverlayPress,
49
+ dismissOnBackdropPress,
38
50
  dismissOnBackPress = true,
39
51
  showHandle = true,
40
52
  cornerRadius = 32,
41
53
  dimAmount = 0.4,
42
54
  backgroundColor,
43
- testID
55
+ testID,
56
+ onPresentationRequested
44
57
  }) {
45
58
  const securityBlocked = useContext(NativeSheetSecurityContext);
46
59
  const {
60
+ height: windowHeight,
47
61
  width
48
62
  } = useWindowDimensions();
63
+ const [measurement, setMeasurement] = useState();
64
+ const lockedHeightRef = useRef(undefined);
65
+ const dismissNotifiedRef = useRef(false);
66
+ const wasOpenRef = useRef(false);
67
+ const openCycleRef = useRef(0);
68
+ const explicitHeightForOpenRef = useRef(false);
69
+ if (open && !wasOpenRef.current) {
70
+ openCycleRef.current += 1;
71
+ dismissNotifiedRef.current = false;
72
+ explicitHeightForOpenRef.current = height !== undefined;
73
+ } else if (open && height !== undefined) {
74
+ explicitHeightForOpenRef.current = true;
75
+ }
76
+ wasOpenRef.current = open;
77
+ const shouldAutoMeasure = !explicitHeightForOpenRef.current;
78
+ const resolvedMaxHeight = maxHeight ?? Math.floor(windowHeight * 0.92);
79
+ if (open) {
80
+ lockedHeightRef.current = resolveNativeSheetHeight({
81
+ currentHeight: lockedHeightRef.current,
82
+ explicitHeight: height,
83
+ measuredHeight: measurement?.openCycle === openCycleRef.current ? measurement.height : undefined,
84
+ maxHeight: resolvedMaxHeight,
85
+ shouldAutoMeasure
86
+ });
87
+ }
88
+ const lockedHeight = lockedHeightRef.current;
89
+ const resolvedDismissOnPanDown = !disableDrag && (dismissOnSnapToBottom ?? dismissOnPanDown ?? true);
90
+ const resolvedDismissOnBackdropPress = dismissOnOverlayPress ?? dismissOnBackdropPress ?? false;
91
+ const layoutConstraints = useMemo(() => resolveNativeSheetLayoutConstraints({
92
+ lockedHeight,
93
+ maxHeight: resolvedMaxHeight,
94
+ shouldAutoMeasure
95
+ }), [lockedHeight, resolvedMaxHeight, shouldAutoMeasure]);
96
+ const notifyDismiss = useCallback(reason => {
97
+ if (dismissNotifiedRef.current) {
98
+ return;
99
+ }
100
+ dismissNotifiedRef.current = true;
101
+ lockedHeightRef.current = undefined;
102
+ onOpenChange?.(false);
103
+ onDismiss?.(reason);
104
+ onAnimationComplete?.({
105
+ open: false
106
+ });
107
+ }, [onAnimationComplete, onDismiss, onOpenChange]);
49
108
  const handleDismiss = useCallback(event => {
50
- onDismiss?.(event.nativeEvent.reason);
51
- }, [onDismiss]);
109
+ notifyDismiss(event.nativeEvent.reason);
110
+ }, [notifyDismiss]);
111
+ useEffect(() => {
112
+ if (!securityBlocked || !open) {
113
+ return;
114
+ }
115
+ // Native normally acknowledges the no-animation security dismissal. This
116
+ // fallback also covers an open request blocked before native presentation.
117
+ const timer = setTimeout(() => notifyDismiss('security'), 500);
118
+ return () => clearTimeout(timer);
119
+ }, [notifyDismiss, open, securityBlocked]);
120
+ useEffect(() => {
121
+ if (open && lockedHeight && !securityBlocked) {
122
+ onPresentationRequested?.();
123
+ }
124
+ }, [lockedHeight, onPresentationRequested, open, securityBlocked]);
52
125
  const handlePresented = useCallback(event => {
53
126
  onPresented?.(event.nativeEvent.height);
54
- }, [onPresented]);
127
+ onAnimationComplete?.({
128
+ open: true
129
+ });
130
+ }, [onAnimationComplete, onPresented]);
131
+ const handleContentLayout = useCallback(event => {
132
+ if (!open || !shouldAutoMeasure) {
133
+ return;
134
+ }
135
+ const nextHeight = Math.ceil(event.nativeEvent.layout.height);
136
+ if (nextHeight > 0) {
137
+ const nextMeasurement = {
138
+ height: Math.min(nextHeight, resolvedMaxHeight),
139
+ openCycle: openCycleRef.current
140
+ };
141
+ setMeasurement(currentMeasurement => {
142
+ if (currentMeasurement?.height === nextMeasurement.height && currentMeasurement.openCycle === nextMeasurement.openCycle) {
143
+ return currentMeasurement;
144
+ }
145
+ return nextMeasurement;
146
+ });
147
+ }
148
+ }, [open, resolvedMaxHeight, shouldAutoMeasure]);
149
+ const hostStyle = useMemo(() => [styles.stagingHost, {
150
+ width,
151
+ ...(layoutConstraints.hostHeight !== undefined ? {
152
+ height: layoutConstraints.hostHeight
153
+ } : {
154
+ maxHeight: layoutConstraints.hostMaxHeight
155
+ })
156
+ }], [layoutConstraints, width]);
55
157
  return /*#__PURE__*/_jsx(RNCNativeSheet, {
56
158
  testID: testID,
57
- open: open,
58
- sheetHeight: height,
159
+ open: open && Boolean(lockedHeight),
160
+ sheetHeight: lockedHeight ?? 1,
59
161
  securityBlocked: securityBlocked,
60
- dismissOnPanDown: dismissOnPanDown,
61
- dismissOnBackdropPress: dismissOnBackdropPress,
162
+ dismissOnPanDown: resolvedDismissOnPanDown,
163
+ dismissOnBackdropPress: resolvedDismissOnBackdropPress,
62
164
  dismissOnBackPress: dismissOnBackPress,
63
165
  showHandle: showHandle,
64
166
  cornerRadius: cornerRadius,
@@ -66,18 +168,72 @@ export function NativeSheet({
66
168
  sheetBackgroundColor: backgroundColor,
67
169
  onDismiss: handleDismiss,
68
170
  onPresented: handlePresented,
69
- style: [styles.stagingHost, {
70
- width,
71
- height
72
- }],
171
+ style: hostStyle,
73
172
  children: /*#__PURE__*/_jsx(View, {
74
173
  pointerEvents: "auto",
75
- style: styles.content,
174
+ style: layoutConstraints.shouldFillHost ? styles.content : undefined,
76
175
  collapsable: false,
77
- children: children
78
- })
176
+ children: shouldAutoMeasure ? /*#__PURE__*/_jsx(View, {
177
+ collapsable: false,
178
+ style: styles.autoMeasureContent,
179
+ onLayout: handleContentLayout,
180
+ children: children
181
+ }) : children
182
+ }, `open-cycle-${openCycleRef.current}`)
183
+ });
184
+ }
185
+ function showNativeSheet(options) {
186
+ let id;
187
+ let closeRequestedBeforeRegistration = false;
188
+ const close = () => {
189
+ if (id === undefined) {
190
+ closeRequestedBeforeRegistration = true;
191
+ return;
192
+ }
193
+ closeNativeSheetRegistryEntry(id);
194
+ };
195
+ const content = typeof options.renderContent === 'function' ? options.renderContent({
196
+ close
197
+ }) : options.renderContent;
198
+ id = addNativeSheetRegistryEntry(options, content);
199
+ if (closeRequestedBeforeRegistration) {
200
+ closeNativeSheetRegistryEntry(id);
201
+ }
202
+ return {
203
+ close
204
+ };
205
+ }
206
+ function NativeSheetHostEntry({
207
+ entry
208
+ }) {
209
+ const handleOpenChange = useCallback(nextOpen => {
210
+ if (!nextOpen) {
211
+ closeNativeSheetRegistryEntry(entry.id);
212
+ }
213
+ }, [entry.id]);
214
+ const handleDismiss = useCallback(reason => finishNativeSheetRegistryEntry(entry.id, reason), [entry.id]);
215
+ const handlePresentationRequested = useCallback(() => markNativeSheetRegistryEntryPresentationRequested(entry.id), [entry.id]);
216
+ return /*#__PURE__*/_jsx(NativeSheetComponent, {
217
+ ...entry.options,
218
+ open: entry.open,
219
+ onOpenChange: handleOpenChange,
220
+ onPresented: entry.options.onPresented,
221
+ onPresentationRequested: handlePresentationRequested,
222
+ onDismiss: handleDismiss,
223
+ children: entry.content
79
224
  });
80
225
  }
226
+ export function NativeSheetHost() {
227
+ const entries = useSyncExternalStore(subscribeNativeSheetRegistry, getNativeSheetRegistrySnapshot, getNativeSheetRegistrySnapshot);
228
+ return /*#__PURE__*/_jsx(_Fragment, {
229
+ children: entries.map(entry => /*#__PURE__*/_jsx(NativeSheetHostEntry, {
230
+ entry: entry
231
+ }, entry.id))
232
+ });
233
+ }
234
+ export const NativeSheet = Object.assign(NativeSheetComponent, {
235
+ show: showNativeSheet
236
+ });
81
237
  const styles = StyleSheet.create({
82
238
  stagingHost: {
83
239
  position: 'absolute',
@@ -87,6 +243,10 @@ const styles = StyleSheet.create({
87
243
  },
88
244
  content: {
89
245
  flex: 1
246
+ },
247
+ autoMeasureContent: {
248
+ alignSelf: 'stretch',
249
+ flexShrink: 0
90
250
  }
91
251
  });
92
252
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useCallback","useContext","StyleSheet","useWindowDimensions","View","RNCNativeSheet","jsx","_jsx","NativeSheetSecurityContext","NativeSheetSecurityProvider","blocked","children","Provider","value","NativeSheet","open","height","onDismiss","onPresented","dismissOnPanDown","dismissOnBackdropPress","dismissOnBackPress","showHandle","cornerRadius","dimAmount","backgroundColor","testID","securityBlocked","width","handleDismiss","event","nativeEvent","reason","handlePresented","sheetHeight","sheetBackgroundColor","style","styles","stagingHost","pointerEvents","content","collapsable","create","position","left","bottom","opacity","flex"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SACEA,aAAa,EAEbC,WAAW,EACXC,UAAU,QACL,OAAO;AAEd,SAGEC,UAAU,EACVC,mBAAmB,EACnBC,IAAI,QACC,cAAc;AAErB,OAAOC,cAAc,MAGd,8BAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA+BtC,MAAMC,0BAA0B,gBAAGT,aAAa,CAAC,KAAK,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASU,2BAA2BA,CAAC;EAC1CC,OAAO;EACPC;AACuC,CAAC,EAAE;EAC1C,oBACEJ,IAAA,CAACC,0BAA0B,CAACI,QAAQ;IAACC,KAAK,EAAEH,OAAQ;IAAAC,QAAA,EACjDA;EAAQ,CAC0B,CAAC;AAE1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,WAAWA,CAAC;EAC1BC,IAAI;EACJC,MAAM;EACNL,QAAQ;EACRM,SAAS;EACTC,WAAW;EACXC,gBAAgB,GAAG,IAAI;EACvBC,sBAAsB,GAAG,KAAK;EAC9BC,kBAAkB,GAAG,IAAI;EACzBC,UAAU,GAAG,IAAI;EACjBC,YAAY,GAAG,EAAE;EACjBC,SAAS,GAAG,GAAG;EACfC,eAAe;EACfC;AACgB,CAAC,EAAE;EACnB,MAAMC,eAAe,GAAG1B,UAAU,CAACO,0BAA0B,CAAC;EAC9D,MAAM;IAAEoB;EAAM,CAAC,GAAGzB,mBAAmB,CAAC,CAAC;EAEvC,MAAM0B,aAAa,GAAG7B,WAAW,CAC9B8B,KAAoD,IAAK;IACxDb,SAAS,GAAGa,KAAK,CAACC,WAAW,CAACC,MAAkC,CAAC;EACnE,CAAC,EACD,CAACf,SAAS,CACZ,CAAC;EACD,MAAMgB,eAAe,GAAGjC,WAAW,CAChC8B,KAAsD,IAAK;IAC1DZ,WAAW,GAAGY,KAAK,CAACC,WAAW,CAACf,MAAM,CAAC;EACzC,CAAC,EACD,CAACE,WAAW,CACd,CAAC;EAED,oBACEX,IAAA,CAACF,cAAc;IACbqB,MAAM,EAAEA,MAAO;IACfX,IAAI,EAAEA,IAAK;IACXmB,WAAW,EAAElB,MAAO;IACpBW,eAAe,EAAEA,eAAgB;IACjCR,gBAAgB,EAAEA,gBAAiB;IACnCC,sBAAsB,EAAEA,sBAAuB;IAC/CC,kBAAkB,EAAEA,kBAAmB;IACvCC,UAAU,EAAEA,UAAW;IACvBC,YAAY,EAAEA,YAAa;IAC3BC,SAAS,EAAEA,SAAU;IACrBW,oBAAoB,EAAEV,eAAgB;IACtCR,SAAS,EAAEY,aAAc;IACzBX,WAAW,EAAEe,eAAgB;IAC7BG,KAAK,EAAE,CAACC,MAAM,CAACC,WAAW,EAAE;MAAEV,KAAK;MAAEZ;IAAO,CAAC,CAAE;IAAAL,QAAA,eAE/CJ,IAAA,CAACH,IAAI;MAACmC,aAAa,EAAC,MAAM;MAACH,KAAK,EAAEC,MAAM,CAACG,OAAQ;MAACC,WAAW,EAAE,KAAM;MAAA9B,QAAA,EAClEA;IAAQ,CACL;EAAC,CACO,CAAC;AAErB;AAEA,MAAM0B,MAAM,GAAGnC,UAAU,CAACwC,MAAM,CAAC;EAC/BJ,WAAW,EAAE;IACXK,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC,OAAO;IACdC,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE;EACX,CAAC;EACDN,OAAO,EAAE;IACPO,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","useSyncExternalStore","StyleSheet","useWindowDimensions","View","RNCNativeSheet","resolveNativeSheetHeight","resolveNativeSheetLayoutConstraints","addNativeSheetRegistryEntry","closeNativeSheetRegistryEntry","finishNativeSheetRegistryEntry","getNativeSheetRegistrySnapshot","markNativeSheetRegistryEntryPresentationRequested","setNativeSheetRegistryBlocked","subscribeNativeSheetRegistry","jsx","_jsx","Fragment","_Fragment","NativeSheetSecurityContext","NativeSheetSecurityProvider","blocked","children","Provider","value","NativeSheetComponent","open","height","maxHeight","onDismiss","onPresented","onAnimationComplete","onOpenChange","dismissOnSnapToBottom","disableDrag","dismissOnPanDown","dismissOnOverlayPress","dismissOnBackdropPress","dismissOnBackPress","showHandle","cornerRadius","dimAmount","backgroundColor","testID","onPresentationRequested","securityBlocked","windowHeight","width","measurement","setMeasurement","lockedHeightRef","undefined","dismissNotifiedRef","wasOpenRef","openCycleRef","explicitHeightForOpenRef","current","shouldAutoMeasure","resolvedMaxHeight","Math","floor","currentHeight","explicitHeight","measuredHeight","openCycle","lockedHeight","resolvedDismissOnPanDown","resolvedDismissOnBackdropPress","layoutConstraints","notifyDismiss","reason","handleDismiss","event","nativeEvent","timer","setTimeout","clearTimeout","handlePresented","handleContentLayout","nextHeight","ceil","layout","nextMeasurement","min","currentMeasurement","hostStyle","styles","stagingHost","hostHeight","hostMaxHeight","Boolean","sheetHeight","sheetBackgroundColor","style","pointerEvents","shouldFillHost","content","collapsable","autoMeasureContent","onLayout","showNativeSheet","options","id","closeRequestedBeforeRegistration","close","renderContent","NativeSheetHostEntry","entry","handleOpenChange","nextOpen","handlePresentationRequested","NativeSheetHost","entries","map","NativeSheet","Object","assign","show","create","position","left","bottom","opacity","flex","alignSelf","flexShrink"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ export interface ResolveNativeSheetHeightOptions {
2
+ currentHeight?: number;
3
+ explicitHeight?: number;
4
+ measuredHeight?: number;
5
+ maxHeight: number;
6
+ shouldAutoMeasure: boolean;
7
+ }
8
+ export interface ResolveNativeSheetLayoutConstraintsOptions {
9
+ lockedHeight?: number;
10
+ maxHeight: number;
11
+ shouldAutoMeasure: boolean;
12
+ }
13
+ export interface NativeSheetLayoutConstraints {
14
+ hostHeight?: number;
15
+ hostMaxHeight?: number;
16
+ shouldFillHost: boolean;
17
+ }
18
+ export declare function resolveNativeSheetLayoutConstraints({ lockedHeight, maxHeight, shouldAutoMeasure, }: ResolveNativeSheetLayoutConstraintsOptions): NativeSheetLayoutConstraints;
19
+ export declare function resolveNativeSheetHeight({ currentHeight, explicitHeight, measuredHeight, maxHeight, shouldAutoMeasure, }: ResolveNativeSheetHeightOptions): number | undefined;
20
+ //# sourceMappingURL=NativeSheetHeight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeSheetHeight.d.ts","sourceRoot":"","sources":["../../../src/NativeSheetHeight.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,+BAA+B;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,0CAA0C;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mCAAmC,CAAC,EAClD,YAAY,EACZ,SAAS,EACT,iBAAiB,GAClB,EAAE,0CAA0C,GAAG,4BAA4B,CAiB3E;AAED,wBAAgB,wBAAwB,CAAC,EACvC,aAAa,EACb,cAAc,EACd,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,EAAE,+BAA+B,GAAG,MAAM,GAAG,SAAS,CAgBtD"}
@@ -0,0 +1,22 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { NativeSheetDismissReason, NativeSheetShowOptions } from './index';
3
+ export interface NativeSheetRegistryEntry {
4
+ id: number;
5
+ open: boolean;
6
+ presentationRequested: boolean;
7
+ content: ReactNode;
8
+ options: NativeSheetShowOptions;
9
+ }
10
+ type RegistryListener = () => void;
11
+ export declare function subscribeNativeSheetRegistry(listener: RegistryListener): () => boolean;
12
+ export declare function getNativeSheetRegistrySnapshot(): readonly NativeSheetRegistryEntry[];
13
+ export declare function addNativeSheetRegistryEntry(options: NativeSheetShowOptions, content: ReactNode): number;
14
+ export declare function closeNativeSheetRegistryEntry(id: number): void;
15
+ export declare function markNativeSheetRegistryEntryPresentationRequested(id: number): void;
16
+ export declare function finishNativeSheetRegistryEntry(id: number, reason: NativeSheetDismissReason): void;
17
+ export declare function finishAllNativeSheetRegistryEntries(reason: NativeSheetDismissReason): void;
18
+ export declare function requestSecurityDismissAllNativeSheets(): void;
19
+ export declare function setNativeSheetRegistryBlocked(blocked: boolean): void;
20
+ export declare function resetNativeSheetRegistryForTests(): void;
21
+ export {};
22
+ //# sourceMappingURL=NativeSheetRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeSheetRegistry.d.ts","sourceRoot":"","sources":["../../../src/NativeSheetRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEhF,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,sBAAsB,CAAC;CACjC;AAED,KAAK,gBAAgB,GAAG,MAAM,IAAI,CAAC;AAuBnC,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,iBAGtE;AAED,wBAAgB,8BAA8B,wCAE7C;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,SAAS,UAsBnB;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,MAAM,QA8BvD;AAED,wBAAgB,iDAAiD,CAAC,EAAE,EAAE,MAAM,QAM3E;AAED,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,wBAAwB,QAajC;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,wBAAwB,QAgBjC;AAED,wBAAgB,qCAAqC,SAmCpD;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,QAK7D;AAED,wBAAgB,gCAAgC,SAW/C"}
@@ -1,18 +1,31 @@
1
- import { type PropsWithChildren } from 'react';
1
+ import { type ReactNode, type PropsWithChildren } from 'react';
2
2
  import { type ColorValue } from 'react-native';
3
3
  export type NativeSheetDismissReason = 'back' | 'backdrop' | 'pan' | 'programmatic' | 'security' | 'system';
4
4
  export interface NativeSheetProps extends PropsWithChildren {
5
5
  /** Controls whether the sheet is presented. */
6
6
  open: boolean;
7
7
  /**
8
- * Fixed outer height for this presentation, in points/dp. Content updates do
9
- * not change this value, so asynchronously loaded children cannot resize the
10
- * native sheet mid-transition.
8
+ * Outer height in points/dp. Changes while open animate the native surface
9
+ * from its bottom edge. When omitted, settled content-size changes update the
10
+ * native height automatically.
11
11
  */
12
- height: number;
12
+ height?: number;
13
+ /** Maximum auto-fit height. Defaults to 92% of the current window height. */
14
+ maxHeight?: number;
13
15
  onDismiss?: (reason: NativeSheetDismissReason) => void;
14
16
  onPresented?: (height: number) => void;
17
+ onAnimationComplete?: (info: NativeSheetAnimationInfo) => void;
18
+ /** Matches the React Native Sheet callback for controlled open state. */
19
+ onOpenChange?: (open: boolean) => void;
20
+ /** Matches the React Native Sheet drag-dismiss option. */
21
+ dismissOnSnapToBottom?: boolean;
22
+ /** Disables the native drag gesture. */
23
+ disableDrag?: boolean;
24
+ /** @deprecated Use dismissOnSnapToBottom. */
15
25
  dismissOnPanDown?: boolean;
26
+ /** Matches the React Native Sheet overlay-dismiss option. */
27
+ dismissOnOverlayPress?: boolean;
28
+ /** @deprecated Use dismissOnOverlayPress. */
16
29
  dismissOnBackdropPress?: boolean;
17
30
  dismissOnBackPress?: boolean;
18
31
  showHandle?: boolean;
@@ -21,6 +34,21 @@ export interface NativeSheetProps extends PropsWithChildren {
21
34
  backgroundColor?: ColorValue;
22
35
  testID?: string;
23
36
  }
37
+ export type NativeSheetAnimationInfo = Readonly<{
38
+ open: boolean;
39
+ }>;
40
+ export interface NativeSheetShowControls {
41
+ close: () => void;
42
+ }
43
+ export interface NativeSheetShowOptions extends Omit<NativeSheetProps, 'children' | 'open' | 'onDismiss' | 'onOpenChange'> {
44
+ renderContent: ReactNode | ((controls: NativeSheetShowControls) => ReactNode);
45
+ onOpenChange?: (open: boolean) => void;
46
+ onDismiss?: (reason: NativeSheetDismissReason) => void;
47
+ onAnimationComplete?: (info: NativeSheetAnimationInfo) => void;
48
+ }
49
+ export interface NativeSheetShowHandle {
50
+ close: () => void;
51
+ }
24
52
  /**
25
53
  * Blocks every descendant sheet while security UI is visible. Consumers must
26
54
  * place this provider above all NativeSheet instances and bind `blocked` to the
@@ -29,12 +57,10 @@ export interface NativeSheetProps extends PropsWithChildren {
29
57
  export declare function NativeSheetSecurityProvider({ blocked, children, }: PropsWithChildren<{
30
58
  blocked: boolean;
31
59
  }>): import("react/jsx-runtime").JSX.Element;
32
- /**
33
- * Presents arbitrary React Native children inside a native sheet container.
34
- * The native component is staged off-screen before presentation; once opened,
35
- * Fabric mounts the same child view into the platform sheet without serializing
36
- * business content through the native bridge.
37
- */
38
- export declare function NativeSheet({ open, height, children, onDismiss, onPresented, dismissOnPanDown, dismissOnBackdropPress, dismissOnBackPress, showHandle, cornerRadius, dimAmount, backgroundColor, testID, }: NativeSheetProps): import("react/jsx-runtime").JSX.Element;
60
+ declare function showNativeSheet(options: NativeSheetShowOptions): NativeSheetShowHandle;
61
+ export declare function NativeSheetHost(): import("react/jsx-runtime").JSX.Element;
62
+ export declare const NativeSheet: ((props: NativeSheetProps) => ReactNode) & {
63
+ show: typeof showNativeSheet;
64
+ };
39
65
  export type { NativeSheetDismissEvent, NativeSheetNativeProps, NativeSheetPresentedEvent, } from './NativeSheetNativeComponent';
40
66
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,cAAc,CAAC;AAOtB,MAAM,MAAM,wBAAwB,GAChC,MAAM,GACN,UAAU,GACV,KAAK,GACL,cAAc,GACd,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,+CAA+C;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACvD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,OAAO,EACP,QAAQ,GACT,EAAE,iBAAiB,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,2CAMzC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EACT,WAAW,EACX,gBAAuB,EACvB,sBAA8B,EAC9B,kBAAyB,EACzB,UAAiB,EACjB,YAAiB,EACjB,SAAe,EACf,eAAe,EACf,MAAM,GACP,EAAE,gBAAgB,2CAuClB;AAcD,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,iBAAiB,EAQvB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,cAAc,CAAC;AAoBtB,MAAM,MAAM,wBAAwB,GAChC,MAAM,GACN,UAAU,GACV,KAAK,GACL,cAAc,GACd,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,+CAA+C;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACvD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAC/D,yEAAyE;IACzE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6CAA6C;IAC7C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,sBACf,SAAQ,IAAI,CACV,gBAAgB,EAChB,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,CACnD;IACD,aAAa,EAAE,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,uBAAuB,KAAK,SAAS,CAAC,CAAC;IAC9E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACvD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAQD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,OAAO,EACP,QAAQ,GACT,EAAE,iBAAiB,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,2CAUzC;AAkMD,iBAAS,eAAe,CACtB,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAmBvB;AAsCD,wBAAgB,eAAe,4CAa9B;AAED,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,SAAS,CAAC,GAAG;IACnE,IAAI,EAAE,OAAO,eAAe,CAAC;CACmC,CAAC;AAkBnE,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,8BAA8B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/react-native-native-sheet",
3
- "version": "3.0.129",
3
+ "version": "3.0.130",
4
4
  "description": "Native bottom sheet host for arbitrary React Native content",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/module/index.js",