@oxyhq/bloom 0.48.0 → 0.49.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/lib/commonjs/bottom-sheet/BottomSheetBase.js +3 -1
- package/lib/commonjs/bottom-sheet/BottomSheetBase.js.map +1 -1
- package/lib/commonjs/dialog/Dialog.js +35 -4
- package/lib/commonjs/dialog/Dialog.js.map +1 -1
- package/lib/commonjs/dialog/Dialog.web.js +48 -14
- package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
- package/lib/commonjs/dialog/DialogBottomSheet.js +30 -5
- package/lib/commonjs/dialog/DialogBottomSheet.js.map +1 -1
- package/lib/commonjs/dialog/DialogHeader.js +12 -6
- package/lib/commonjs/dialog/DialogHeader.js.map +1 -1
- package/lib/commonjs/dialog/DialogMorph.js +458 -0
- package/lib/commonjs/dialog/DialogMorph.js.map +1 -0
- package/lib/commonjs/dialog/index.js +7 -0
- package/lib/commonjs/dialog/index.js.map +1 -1
- package/lib/commonjs/dialog/index.web.js +7 -0
- package/lib/commonjs/dialog/index.web.js.map +1 -1
- package/lib/commonjs/settings-list/SettingsList.js +1 -1
- package/lib/commonjs/surfaces/SurfaceHost.js +1 -0
- package/lib/commonjs/surfaces/SurfaceHost.js.map +1 -1
- package/lib/module/bottom-sheet/BottomSheetBase.js +3 -1
- package/lib/module/bottom-sheet/BottomSheetBase.js.map +1 -1
- package/lib/module/dialog/Dialog.js +35 -4
- package/lib/module/dialog/Dialog.js.map +1 -1
- package/lib/module/dialog/Dialog.web.js +48 -15
- package/lib/module/dialog/Dialog.web.js.map +1 -1
- package/lib/module/dialog/DialogBottomSheet.js +31 -6
- package/lib/module/dialog/DialogBottomSheet.js.map +1 -1
- package/lib/module/dialog/DialogHeader.js +12 -6
- package/lib/module/dialog/DialogHeader.js.map +1 -1
- package/lib/module/dialog/DialogMorph.js +451 -0
- package/lib/module/dialog/DialogMorph.js.map +1 -0
- package/lib/module/dialog/index.js +1 -0
- package/lib/module/dialog/index.js.map +1 -1
- package/lib/module/dialog/index.web.js +1 -0
- package/lib/module/dialog/index.web.js.map +1 -1
- package/lib/module/settings-list/SettingsList.js +1 -1
- package/lib/module/surfaces/SurfaceHost.js +1 -0
- package/lib/module/surfaces/SurfaceHost.js.map +1 -1
- package/lib/typescript/commonjs/bottom-sheet/BottomSheetBase.d.ts +10 -3
- package/lib/typescript/commonjs/bottom-sheet/BottomSheetBase.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/Dialog.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/DialogBottomSheet.d.ts +2 -2
- package/lib/typescript/commonjs/dialog/DialogBottomSheet.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/DialogHeader.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/DialogMorph.d.ts +150 -0
- package/lib/typescript/commonjs/dialog/DialogMorph.d.ts.map +1 -0
- package/lib/typescript/commonjs/dialog/index.d.ts +2 -0
- package/lib/typescript/commonjs/dialog/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/index.web.d.ts +2 -0
- package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/dialog/types.d.ts +30 -0
- package/lib/typescript/commonjs/dialog/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/surfaces/SurfaceHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/surfaces/types.d.ts +9 -0
- package/lib/typescript/commonjs/surfaces/types.d.ts.map +1 -1
- package/lib/typescript/module/bottom-sheet/BottomSheetBase.d.ts +10 -3
- package/lib/typescript/module/bottom-sheet/BottomSheetBase.d.ts.map +1 -1
- package/lib/typescript/module/dialog/Dialog.d.ts.map +1 -1
- package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
- package/lib/typescript/module/dialog/DialogBottomSheet.d.ts +2 -2
- package/lib/typescript/module/dialog/DialogBottomSheet.d.ts.map +1 -1
- package/lib/typescript/module/dialog/DialogHeader.d.ts.map +1 -1
- package/lib/typescript/module/dialog/DialogMorph.d.ts +150 -0
- package/lib/typescript/module/dialog/DialogMorph.d.ts.map +1 -0
- package/lib/typescript/module/dialog/index.d.ts +2 -0
- package/lib/typescript/module/dialog/index.d.ts.map +1 -1
- package/lib/typescript/module/dialog/index.web.d.ts +2 -0
- package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
- package/lib/typescript/module/dialog/types.d.ts +30 -0
- package/lib/typescript/module/dialog/types.d.ts.map +1 -1
- package/lib/typescript/module/surfaces/SurfaceHost.d.ts.map +1 -1
- package/lib/typescript/module/surfaces/types.d.ts +9 -0
- package/lib/typescript/module/surfaces/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/DialogMorph.test.tsx +230 -0
- package/src/bottom-sheet/BottomSheetBase.tsx +15 -2
- package/src/dialog/Dialog.tsx +43 -11
- package/src/dialog/Dialog.web.tsx +40 -10
- package/src/dialog/DialogBottomSheet.tsx +37 -6
- package/src/dialog/DialogHeader.tsx +14 -5
- package/src/dialog/DialogMorph.tsx +576 -0
- package/src/dialog/index.ts +2 -0
- package/src/dialog/index.web.ts +2 -0
- package/src/dialog/types.ts +30 -0
- package/src/settings-list/SettingsList.tsx +1 -1
- package/src/surfaces/SurfaceHost.tsx +1 -0
- package/src/surfaces/types.ts +9 -0
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DIALOG_MORPH_FADE_DURATION = exports.DIALOG_MORPH_DURATION = void 0;
|
|
7
|
+
exports.DialogMorphContent = DialogMorphContent;
|
|
8
|
+
exports.useDialogFrame = useDialogFrame;
|
|
9
|
+
exports.useDialogMorph = useDialogMorph;
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Size morphing — the panel reshapes across an IN-PLACE content swap.
|
|
16
|
+
//
|
|
17
|
+
// A surface has two axes. DEPTH: a new surface is presented on top (its own
|
|
18
|
+
// backdrop / z-layer) — untouched by this module. NAV-WITHIN: the content
|
|
19
|
+
// INSIDE one surface is swapped for another screen. Without morphing that swap
|
|
20
|
+
// hard-cuts: the panel jumps from the outgoing screen's size to the incoming
|
|
21
|
+
// one's in a single frame. Morphing animates the panel between the two sizes
|
|
22
|
+
// while the incoming content fades in, so navigating within a surface reads as
|
|
23
|
+
// ONE container reshaping.
|
|
24
|
+
//
|
|
25
|
+
// The Dialog cannot see a nav-within swap from its props: the content that
|
|
26
|
+
// changes lives deep inside `children` (a host that subscribes to its own
|
|
27
|
+
// route store), so the Dialog re-renders nothing. The content therefore
|
|
28
|
+
// DECLARES its identity through {@link useDialogFrame} — the same
|
|
29
|
+
// external-channel bridge `useDialogHeader` uses for the nav bar — and the
|
|
30
|
+
// surface runs the morph when that identity changes.
|
|
31
|
+
//
|
|
32
|
+
// Geometry, per placement:
|
|
33
|
+
// - centered card — height grows/shrinks about its centre (the backdrop
|
|
34
|
+
// centres it), and `maxWidth` morphs too when the surface changes it.
|
|
35
|
+
// - bottom sheet — height grows/shrinks from its anchored bottom edge.
|
|
36
|
+
// - side sheet — fixed geometry (pinned top/bottom, fixed width), so
|
|
37
|
+
// there is nothing to morph; those placements never mount this.
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
/** Panel reshape duration (ms) between two content frames. */
|
|
41
|
+
const DIALOG_MORPH_DURATION = exports.DIALOG_MORPH_DURATION = 260;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Incoming-frame fade-in (ms). Deliberately shorter than the reshape so the new
|
|
45
|
+
* content has landed by the time the panel finishes settling.
|
|
46
|
+
*/
|
|
47
|
+
const DIALOG_MORPH_FADE_DURATION = exports.DIALOG_MORPH_FADE_DURATION = 150;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* How long the panel stays pinned at the outgoing size waiting for the incoming
|
|
51
|
+
* frame to report its own. A frame whose content measures IDENTICALLY never
|
|
52
|
+
* re-reports (nothing resized), so the pin is released on this timeout — there
|
|
53
|
+
* was no size change to morph.
|
|
54
|
+
*/
|
|
55
|
+
const MORPH_MEASURE_TIMEOUT_MS = 200;
|
|
56
|
+
|
|
57
|
+
/** Reshape easing — matches the ease-out the rest of the Dialog motion uses. */
|
|
58
|
+
const MORPH_EASING = _reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Largest plausible gap between the panel box and its content (borders, the
|
|
62
|
+
* scroll container's padding). A bigger difference means the sample is not
|
|
63
|
+
* chrome — the panel is capped, or the content wrapper is being stretched — so
|
|
64
|
+
* it is dropped rather than baked into the next reshape target.
|
|
65
|
+
*/
|
|
66
|
+
const MAX_PANEL_CHROME = 96;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Below this, an incoming frame is treated as having NO natural height rather
|
|
70
|
+
* than a tiny one: content that fills the space it is given (a list that flexes
|
|
71
|
+
* to its container) measures ~0 inside a content-sized wrapper, and reshaping
|
|
72
|
+
* the panel down to that would collapse the surface. Such a frame keeps the
|
|
73
|
+
* panel's normal sizing instead.
|
|
74
|
+
*/
|
|
75
|
+
const MIN_MEASURABLE_CONTENT = 40;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The identity of the content currently rendered inside a Dialog surface,
|
|
79
|
+
* declared by that content via {@link useDialogFrame}.
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The bridge between a surface's content (which knows WHEN it swapped) and the
|
|
84
|
+
* surface (which owns the panel). Deliberately not a React store: the surface
|
|
85
|
+
* does not need to re-render on a frame change — it drives shared values.
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
function createFrameChannel() {
|
|
89
|
+
let last = null;
|
|
90
|
+
let handler = null;
|
|
91
|
+
let frameListener = null;
|
|
92
|
+
return {
|
|
93
|
+
setFrame: frame => {
|
|
94
|
+
const previous = last;
|
|
95
|
+
last = frame;
|
|
96
|
+
frameListener?.(frame);
|
|
97
|
+
if (previous && previous.key !== frame.key) handler?.(frame, previous);
|
|
98
|
+
},
|
|
99
|
+
setHandler: next => {
|
|
100
|
+
handler = next;
|
|
101
|
+
return () => {
|
|
102
|
+
if (handler === next) handler = null;
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
setFrameListener: next => {
|
|
106
|
+
frameListener = next;
|
|
107
|
+
if (last) next(last);
|
|
108
|
+
return () => {
|
|
109
|
+
if (frameListener === next) frameListener = null;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const DialogFrameContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Declare the identity of the content currently rendered inside a Dialog
|
|
118
|
+
* surface. When the `key` changes while the surface stays open, the surface
|
|
119
|
+
* MORPHS its panel from the outgoing content's size to the incoming one's
|
|
120
|
+
* instead of hard-cutting.
|
|
121
|
+
*
|
|
122
|
+
* Called by the host that owns the surface's content (the SDK's `SurfaceScreen`
|
|
123
|
+
* declares `route#step`). No-op outside a morph-capable Dialog surface — a side
|
|
124
|
+
* sheet, or a plain confirm dialog — so a host can call it unconditionally.
|
|
125
|
+
*
|
|
126
|
+
* EXACTLY ONE host per surface may declare frames: two writers with different
|
|
127
|
+
* identities would each read the other's key as a swap and morph on every
|
|
128
|
+
* render. A screen that wants its own sub-views to morph must fold them into
|
|
129
|
+
* the surface host's key rather than declaring a second frame.
|
|
130
|
+
*/
|
|
131
|
+
function useDialogFrame(frame) {
|
|
132
|
+
const channel = (0, _react.useContext)(DialogFrameContext);
|
|
133
|
+
const key = frame?.key;
|
|
134
|
+
const morph = frame?.morph;
|
|
135
|
+
const sizeHeight = frame?.size?.height;
|
|
136
|
+
const sizeMaxWidth = frame?.size?.maxWidth;
|
|
137
|
+
// Declared in the commit's layout phase, BEFORE the browser paints the new
|
|
138
|
+
// content: that is what lets the surface pin the panel at the outgoing size
|
|
139
|
+
// in the same frame the swap commits (the panel's own layout for the incoming
|
|
140
|
+
// content is not reported until after this). Depend on the size PRIMITIVES (not
|
|
141
|
+
// the object) so a fresh `size` object each render does not re-fire the effect.
|
|
142
|
+
(0, _react.useLayoutEffect)(() => {
|
|
143
|
+
if (!channel || key === undefined) return;
|
|
144
|
+
const size = sizeHeight !== undefined || sizeMaxWidth !== undefined ? {
|
|
145
|
+
height: sizeHeight,
|
|
146
|
+
maxWidth: sizeMaxWidth
|
|
147
|
+
} : undefined;
|
|
148
|
+
channel.setFrame({
|
|
149
|
+
key,
|
|
150
|
+
morph,
|
|
151
|
+
size
|
|
152
|
+
});
|
|
153
|
+
}, [channel, key, morph, sizeHeight, sizeMaxWidth]);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Options a surface passes when it wires up morphing for its panel. */
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Wire size morphing into one Dialog surface. Returns the panel/content styles
|
|
160
|
+
* and the two measurement callbacks the surface must attach.
|
|
161
|
+
*
|
|
162
|
+
* While idle the panel style resolves to `height: 'auto'` — byte-for-byte the
|
|
163
|
+
* natural sizing every placement had before morphing existed — so first open,
|
|
164
|
+
* dismissal, and a responsive placement swap are untouched. The height is only
|
|
165
|
+
* driven for the ~260ms of an actual reshape, then released back to natural.
|
|
166
|
+
*
|
|
167
|
+
* A frame that declares an explicit `size` is different: that size is DERIVED
|
|
168
|
+
* state the panel rests at at EVERY layout (`declaredHeight`/`declaredMaxWidth`),
|
|
169
|
+
* not a one-shot animation target — so a placement swap (which re-lays the panel
|
|
170
|
+
* out WITHOUT a key change, so the animation never re-runs) still settles at the
|
|
171
|
+
* declared size instead of falling back to natural.
|
|
172
|
+
*/
|
|
173
|
+
function useDialogMorph({
|
|
174
|
+
enabled,
|
|
175
|
+
measurable,
|
|
176
|
+
maxHeight,
|
|
177
|
+
maxWidth
|
|
178
|
+
}) {
|
|
179
|
+
const channel = (0, _react.useMemo)(() => createFrameChannel(), []);
|
|
180
|
+
|
|
181
|
+
/** 1 while the panel height is driven by an in-flight morph animation. */
|
|
182
|
+
const pinned = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
183
|
+
const height = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
184
|
+
/** 1 while `maxWidth` is driven by an in-flight morph animation. */
|
|
185
|
+
const widthPinned = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
186
|
+
const width = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
187
|
+
/**
|
|
188
|
+
* The ACTIVE frame's declared explicit size (0 = none) — the panel's RESTING
|
|
189
|
+
* size, re-derived on every `setFrame` so it survives a placement swap. `height`
|
|
190
|
+
* is clamped to the viewport; `maxWidth` widens the centered card.
|
|
191
|
+
*/
|
|
192
|
+
const declaredHeight = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
193
|
+
const declaredMaxWidth = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
194
|
+
/** Incoming-frame opacity. Rests at 1; dips to 0 and fades back on a swap. */
|
|
195
|
+
const fade = (0, _reactNativeReanimated.useSharedValue)(1);
|
|
196
|
+
|
|
197
|
+
/** Last laid-out panel height — the size a morph starts FROM. */
|
|
198
|
+
const panelHeight = (0, _react.useRef)(0);
|
|
199
|
+
/** Last laid-out height of the content wrapper — the content's NATURAL height. */
|
|
200
|
+
const contentHeight = (0, _react.useRef)(0);
|
|
201
|
+
/**
|
|
202
|
+
* Panel box height MINUS its scroll content height, sampled while idle and
|
|
203
|
+
* unclamped: the panel's own chrome (borders, scroll-container padding).
|
|
204
|
+
* Self-calibrating, so no placement has to hard-code its own box math.
|
|
205
|
+
*/
|
|
206
|
+
const chrome = (0, _react.useRef)(0);
|
|
207
|
+
/** True between a frame change and the moment the incoming size arrives. */
|
|
208
|
+
const awaitingSize = (0, _react.useRef)(false);
|
|
209
|
+
const releaseTimer = (0, _react.useRef)(null);
|
|
210
|
+
/** Mirrors of render-time values the (stable) callbacks below need to read. */
|
|
211
|
+
const maxHeightRef = (0, _react.useRef)(maxHeight);
|
|
212
|
+
maxHeightRef.current = maxHeight;
|
|
213
|
+
const measurableRef = (0, _react.useRef)(measurable);
|
|
214
|
+
measurableRef.current = measurable;
|
|
215
|
+
const enabledRef = (0, _react.useRef)(enabled);
|
|
216
|
+
enabledRef.current = enabled;
|
|
217
|
+
/**
|
|
218
|
+
* The EFFECTIVE `maxWidth` of the CURRENT frame — its explicit `size.maxWidth`
|
|
219
|
+
* if it declared one, else the surface `maxWidth`. Held so the next frame change
|
|
220
|
+
* knows the width to morph FROM. The handler owns it (not a passive effect) so a
|
|
221
|
+
* per-frame width is not clobbered mid-flow.
|
|
222
|
+
*/
|
|
223
|
+
const activeMaxWidth = (0, _react.useRef)(maxWidth);
|
|
224
|
+
|
|
225
|
+
// Keep the active frame's DECLARED size current on every render/layout — this
|
|
226
|
+
// is the panel's resting size, so it survives a placement swap (which remounts
|
|
227
|
+
// this surface and fires the listener immediately with the current frame). A
|
|
228
|
+
// frame with no explicit size resets these to 0 (natural sizing). A LAYOUT
|
|
229
|
+
// effect so the seed lands BEFORE paint on a placement-swap remount (the child
|
|
230
|
+
// `SurfaceScreen`'s `setFrame` layout-effect runs first, setting the channel's
|
|
231
|
+
// last frame; registering here then fires immediately with it — no small-size
|
|
232
|
+
// flash). NOTE: must NOT touch `activeMaxWidth` — the listener runs BEFORE the
|
|
233
|
+
// key-change handler in the same `setFrame`, and the handler needs the PREVIOUS
|
|
234
|
+
// frame's width as the animation's FROM.
|
|
235
|
+
(0, _react.useLayoutEffect)(() => {
|
|
236
|
+
return channel.setFrameListener(frame => {
|
|
237
|
+
declaredHeight.value = frame.size?.height ?? 0;
|
|
238
|
+
declaredMaxWidth.value = frame.size?.maxWidth ?? 0;
|
|
239
|
+
});
|
|
240
|
+
}, [channel, declaredHeight, declaredMaxWidth]);
|
|
241
|
+
const clearReleaseTimer = (0, _react.useCallback)(() => {
|
|
242
|
+
if (releaseTimer.current === null) return;
|
|
243
|
+
clearTimeout(releaseTimer.current);
|
|
244
|
+
releaseTimer.current = null;
|
|
245
|
+
}, []);
|
|
246
|
+
|
|
247
|
+
/** Hand the panel back to natural sizing. */
|
|
248
|
+
const release = (0, _react.useCallback)(() => {
|
|
249
|
+
awaitingSize.current = false;
|
|
250
|
+
clearReleaseTimer();
|
|
251
|
+
(0, _reactNativeReanimated.cancelAnimation)(height);
|
|
252
|
+
pinned.value = 0;
|
|
253
|
+
}, [clearReleaseTimer, height, pinned]);
|
|
254
|
+
|
|
255
|
+
/** Start the reshape once the incoming frame's natural height is known. */
|
|
256
|
+
const settle = (0, _react.useCallback)(naturalContentHeight => {
|
|
257
|
+
if (!awaitingSize.current) return;
|
|
258
|
+
awaitingSize.current = false;
|
|
259
|
+
clearReleaseTimer();
|
|
260
|
+
if (naturalContentHeight < MIN_MEASURABLE_CONTENT) {
|
|
261
|
+
release();
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const from = height.value;
|
|
265
|
+
const to = Math.max(0, Math.min(naturalContentHeight + chrome.current, maxHeightRef.current));
|
|
266
|
+
if (Math.abs(to - from) < 1) {
|
|
267
|
+
release();
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
height.value = (0, _reactNativeReanimated.withTiming)(to, {
|
|
271
|
+
duration: DIALOG_MORPH_DURATION,
|
|
272
|
+
easing: MORPH_EASING
|
|
273
|
+
}, finished => {
|
|
274
|
+
'worklet';
|
|
275
|
+
|
|
276
|
+
// Release only on a clean finish — a cancel means a newer morph has
|
|
277
|
+
// already taken the pin over.
|
|
278
|
+
if (finished) pinned.value = 0;
|
|
279
|
+
});
|
|
280
|
+
}, [clearReleaseTimer, height, pinned, release]);
|
|
281
|
+
|
|
282
|
+
// The morph runner. Registered on the channel the content writes into.
|
|
283
|
+
(0, _react.useEffect)(() => {
|
|
284
|
+
return channel.setHandler(next => {
|
|
285
|
+
if (!enabledRef.current) return;
|
|
286
|
+
|
|
287
|
+
// The incoming frame always fades in, morph or not — a hard content cut
|
|
288
|
+
// inside a surface that stays put is the jarring part.
|
|
289
|
+
(0, _reactNativeReanimated.cancelAnimation)(fade);
|
|
290
|
+
fade.value = 0;
|
|
291
|
+
fade.value = (0, _reactNativeReanimated.withTiming)(1, {
|
|
292
|
+
duration: DIALOG_MORPH_FADE_DURATION,
|
|
293
|
+
easing: MORPH_EASING
|
|
294
|
+
});
|
|
295
|
+
if (next.morph === false) {
|
|
296
|
+
release();
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Pin at the size the panel is CURRENTLY painted at. `panelHeight` is
|
|
301
|
+
// still the outgoing frame's: this runs in the swap's layout phase, before
|
|
302
|
+
// the incoming content's layout is reported.
|
|
303
|
+
const from = panelHeight.current;
|
|
304
|
+
|
|
305
|
+
// Width, where the placement allows it: ANIMATE the panel's maxWidth from
|
|
306
|
+
// the outgoing frame's effective width to the incoming one's (its explicit
|
|
307
|
+
// `size.maxWidth`, else the surface `maxWidth`). The resting width is the
|
|
308
|
+
// DERIVED `declaredMaxWidth`, so we release `widthPinned` on finish — nothing
|
|
309
|
+
// snaps, and a placement swap re-settles at the declared width on its own.
|
|
310
|
+
const fromWidth = activeMaxWidth.current;
|
|
311
|
+
const toWidth = next.size?.maxWidth ?? maxWidth;
|
|
312
|
+
activeMaxWidth.current = toWidth;
|
|
313
|
+
if (fromWidth !== undefined && toWidth !== undefined && fromWidth !== toWidth) {
|
|
314
|
+
(0, _reactNativeReanimated.cancelAnimation)(width);
|
|
315
|
+
width.value = fromWidth;
|
|
316
|
+
widthPinned.value = 1;
|
|
317
|
+
width.value = (0, _reactNativeReanimated.withTiming)(toWidth, {
|
|
318
|
+
duration: DIALOG_MORPH_DURATION,
|
|
319
|
+
easing: MORPH_EASING
|
|
320
|
+
}, finished => {
|
|
321
|
+
'worklet';
|
|
322
|
+
|
|
323
|
+
if (finished) widthPinned.value = 0;
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// Height. An EXPLICIT `size.height` animates the panel DIRECTLY to it (grows
|
|
328
|
+
// or shrinks even a non-measurable / own-scroller frame to a big declared
|
|
329
|
+
// size); otherwise the panel can only reshape when the surface owns the
|
|
330
|
+
// scroll container (`measurable`) and we measure the incoming content. The
|
|
331
|
+
// resting height is the DERIVED `declaredHeight`, so we release the pin on
|
|
332
|
+
// finish — no snap to 'auto', and a placement swap re-settles there itself.
|
|
333
|
+
if (next.size?.height !== undefined) {
|
|
334
|
+
if (from <= 0) return;
|
|
335
|
+
(0, _reactNativeReanimated.cancelAnimation)(height);
|
|
336
|
+
height.value = from;
|
|
337
|
+
pinned.value = 1;
|
|
338
|
+
const to = Math.max(0, Math.min(next.size.height, maxHeightRef.current));
|
|
339
|
+
height.value = (0, _reactNativeReanimated.withTiming)(to, {
|
|
340
|
+
duration: DIALOG_MORPH_DURATION,
|
|
341
|
+
easing: MORPH_EASING
|
|
342
|
+
}, finished => {
|
|
343
|
+
'worklet';
|
|
344
|
+
|
|
345
|
+
if (finished) pinned.value = 0;
|
|
346
|
+
});
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
if (!measurableRef.current) {
|
|
350
|
+
release();
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (from <= 0) return;
|
|
354
|
+
(0, _reactNativeReanimated.cancelAnimation)(height);
|
|
355
|
+
height.value = from;
|
|
356
|
+
pinned.value = 1;
|
|
357
|
+
awaitingSize.current = true;
|
|
358
|
+
clearReleaseTimer();
|
|
359
|
+
releaseTimer.current = setTimeout(release, MORPH_MEASURE_TIMEOUT_MS);
|
|
360
|
+
});
|
|
361
|
+
}, [channel, clearReleaseTimer, fade, height, maxWidth, pinned, release, width, widthPinned]);
|
|
362
|
+
(0, _react.useEffect)(() => () => {
|
|
363
|
+
clearReleaseTimer();
|
|
364
|
+
(0, _reactNativeReanimated.cancelAnimation)(height);
|
|
365
|
+
(0, _reactNativeReanimated.cancelAnimation)(width);
|
|
366
|
+
(0, _reactNativeReanimated.cancelAnimation)(fade);
|
|
367
|
+
}, [clearReleaseTimer, fade, height, width]);
|
|
368
|
+
|
|
369
|
+
/** Re-derive the panel's own chrome height whenever it can be sampled cleanly. */
|
|
370
|
+
const calibrate = (0, _react.useCallback)(() => {
|
|
371
|
+
if (!measurableRef.current) return;
|
|
372
|
+
if (pinned.value === 1 || awaitingSize.current) return;
|
|
373
|
+
if (panelHeight.current <= 0 || contentHeight.current <= 0) return;
|
|
374
|
+
const delta = panelHeight.current - contentHeight.current;
|
|
375
|
+
// A panel SHORTER than its content is capped, and one far taller is not
|
|
376
|
+
// reporting chrome at all — neither says anything usable.
|
|
377
|
+
if (delta < 0 || delta > MAX_PANEL_CHROME) return;
|
|
378
|
+
chrome.current = delta;
|
|
379
|
+
}, [pinned]);
|
|
380
|
+
|
|
381
|
+
/** Attach to the panel: tracks the size a morph starts from. */
|
|
382
|
+
const onPanelLayout = (0, _react.useCallback)(event => {
|
|
383
|
+
panelHeight.current = event.nativeEvent.layout.height;
|
|
384
|
+
calibrate();
|
|
385
|
+
}, [calibrate]);
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Attached to the content wrapper, which lives INSIDE the surface's scroll
|
|
389
|
+
* container and is sized by its own content — so it reports the natural height
|
|
390
|
+
* of the incoming frame even while the panel is pinned at the outgoing one,
|
|
391
|
+
* which is exactly what a pinned panel cannot measure for itself.
|
|
392
|
+
*/
|
|
393
|
+
const onContentLayout = (0, _react.useCallback)(event => {
|
|
394
|
+
const natural = event.nativeEvent.layout.height;
|
|
395
|
+
contentHeight.current = natural;
|
|
396
|
+
if (awaitingSize.current) {
|
|
397
|
+
settle(natural);
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
calibrate();
|
|
401
|
+
}, [calibrate, settle]);
|
|
402
|
+
const panelStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
|
|
403
|
+
// Height: the in-flight animation while pinned, else the RESTING size — the
|
|
404
|
+
// active frame's `declaredHeight` when it has one (survives a placement swap),
|
|
405
|
+
// else natural (`'auto'`).
|
|
406
|
+
const resolvedHeight = pinned.value === 1 ? height.value : declaredHeight.value > 0 ? declaredHeight.value : 'auto';
|
|
407
|
+
// Width only varies on a placement that HAS a `maxWidth` (the centered card).
|
|
408
|
+
// A full-bleed placement (bottom sheet, `maxWidth === undefined`) is never
|
|
409
|
+
// width-capped — only height matters there. On the centered card the width is
|
|
410
|
+
// the in-flight animation while pinned, else the frame's declared width (which
|
|
411
|
+
// survives a placement swap), else the surface `maxWidth`.
|
|
412
|
+
if (maxWidth === undefined) return {
|
|
413
|
+
height: resolvedHeight
|
|
414
|
+
};
|
|
415
|
+
const resolvedMaxWidth = widthPinned.value === 1 ? width.value : declaredMaxWidth.value > 0 ? declaredMaxWidth.value : maxWidth;
|
|
416
|
+
return {
|
|
417
|
+
height: resolvedHeight,
|
|
418
|
+
maxWidth: resolvedMaxWidth
|
|
419
|
+
};
|
|
420
|
+
// RN-Web has no worklets babel plugin: every shared value the mapper READS
|
|
421
|
+
// must be listed here or it runs once and freezes at the first frame.
|
|
422
|
+
}, [pinned, height, declaredHeight, widthPinned, width, declaredMaxWidth, maxWidth]);
|
|
423
|
+
const contentStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
424
|
+
opacity: fade.value
|
|
425
|
+
}), [fade]);
|
|
426
|
+
return {
|
|
427
|
+
channel,
|
|
428
|
+
onPanelLayout,
|
|
429
|
+
onContentLayout,
|
|
430
|
+
panelStyle,
|
|
431
|
+
contentStyle
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Wraps a surface's content: publishes the frame channel to it (so it can
|
|
436
|
+
* declare swaps via {@link useDialogFrame}), measures the content's natural
|
|
437
|
+
* height, and carries the incoming-frame fade.
|
|
438
|
+
*
|
|
439
|
+
* MUST be rendered inside the surface's scroll content and MUST NOT be given a
|
|
440
|
+
* growing/stretching style: it is sized by its own content, which is what lets
|
|
441
|
+
* it report the incoming frame's natural height while the panel is still pinned
|
|
442
|
+
* at the outgoing one.
|
|
443
|
+
*/
|
|
444
|
+
function DialogMorphContent({
|
|
445
|
+
morph,
|
|
446
|
+
style,
|
|
447
|
+
children
|
|
448
|
+
}) {
|
|
449
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(DialogFrameContext.Provider, {
|
|
450
|
+
value: morph.channel,
|
|
451
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
|
|
452
|
+
onLayout: morph.onContentLayout,
|
|
453
|
+
style: [style, morph.contentStyle],
|
|
454
|
+
children: children
|
|
455
|
+
})
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
//# sourceMappingURL=DialogMorph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeReanimated","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DIALOG_MORPH_DURATION","exports","DIALOG_MORPH_FADE_DURATION","MORPH_MEASURE_TIMEOUT_MS","MORPH_EASING","Easing","out","cubic","MAX_PANEL_CHROME","MIN_MEASURABLE_CONTENT","createFrameChannel","last","handler","frameListener","setFrame","frame","previous","key","setHandler","next","setFrameListener","DialogFrameContext","createContext","useDialogFrame","channel","useContext","morph","sizeHeight","size","height","sizeMaxWidth","maxWidth","useLayoutEffect","undefined","useDialogMorph","enabled","measurable","maxHeight","useMemo","pinned","useSharedValue","widthPinned","width","declaredHeight","declaredMaxWidth","fade","panelHeight","useRef","contentHeight","chrome","awaitingSize","releaseTimer","maxHeightRef","current","measurableRef","enabledRef","activeMaxWidth","value","clearReleaseTimer","useCallback","clearTimeout","release","cancelAnimation","settle","naturalContentHeight","from","to","Math","max","min","abs","withTiming","duration","easing","finished","useEffect","fromWidth","toWidth","setTimeout","calibrate","delta","onPanelLayout","event","nativeEvent","layout","onContentLayout","natural","panelStyle","useAnimatedStyle","resolvedHeight","resolvedMaxWidth","contentStyle","opacity","DialogMorphContent","style","children","jsx","Provider","View","onLayout"],"sourceRoot":"../../../src","sources":["dialog/DialogMorph.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "useDialogControl", {
|
|
|
39
39
|
return _context.useDialogControl;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
+
Object.defineProperty(exports, "useDialogFrame", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _DialogMorph.useDialogFrame;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
42
48
|
Object.defineProperty(exports, "useDialogHeader", {
|
|
43
49
|
enumerable: true,
|
|
44
50
|
get: function () {
|
|
@@ -50,4 +56,5 @@ var _BloomDialogProvider = require("./BloomDialogProvider");
|
|
|
50
56
|
var _alert = require("./alert.js");
|
|
51
57
|
var _context = require("./context.js");
|
|
52
58
|
var _DialogHeader = require("./DialogHeader.js");
|
|
59
|
+
var _DialogMorph = require("./DialogMorph.js");
|
|
53
60
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Dialog","require","_BloomDialogProvider","_alert","_context","_DialogHeader"],"sourceRoot":"../../../src","sources":["dialog/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_Dialog","require","_BloomDialogProvider","_alert","_context","_DialogHeader","_DialogMorph"],"sourceRoot":"../../../src","sources":["dialog/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA","ignoreList":[]}
|
|
@@ -45,6 +45,12 @@ Object.defineProperty(exports, "useDialogControl", {
|
|
|
45
45
|
return _context.useDialogControl;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
+
Object.defineProperty(exports, "useDialogFrame", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _DialogMorph.useDialogFrame;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
48
54
|
Object.defineProperty(exports, "useDialogHeader", {
|
|
49
55
|
enumerable: true,
|
|
50
56
|
get: function () {
|
|
@@ -56,4 +62,5 @@ var _BloomDialogProviderWeb = require("./BloomDialogProvider.web.js");
|
|
|
56
62
|
var _alert = require("./alert.js");
|
|
57
63
|
var _context = require("./context.js");
|
|
58
64
|
var _DialogHeader = require("./DialogHeader.js");
|
|
65
|
+
var _DialogMorph = require("./DialogMorph.js");
|
|
59
66
|
//# sourceMappingURL=index.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_DialogWeb","require","_BloomDialogProviderWeb","_alert","_context","_DialogHeader"],"sourceRoot":"../../../src","sources":["dialog/index.web.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_DialogWeb","require","_BloomDialogProviderWeb","_alert","_context","_DialogHeader","_DialogMorph"],"sourceRoot":"../../../src","sources":["dialog/index.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_context","_surfaceStore","_useSurface","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_PLACEMENT","base","md","placementFor","p","placement","width","maxWidth","maxHeightRatio","inset","showHandle","dismissOnBackdrop","contentPadding","header","scrollable","style","panelStyle","panelClassName","containerStyle","containerClassName","label","testID","createSurfaceHost","Dialog","SurfaceLayer","entry","index","control","useDialogControl","id","status","controls","useMemo","dismiss","result","requestDismiss","present","render","opts","useEffect","open","close","handleClose","useCallback","finalizeClose","presentation","jsx","onClose","layer","startOpen","children","SurfaceContext","Provider","value","SurfaceHost","stack","useSyncExternalStore","subscribe","getSnapshot","useAndroidBackDismissesTop","useEscapeDismissesTop","Fragment","map","displayName","SurfaceProvider","resetSurfaces","jsxs","Platform","OS","sub","BackHandler","addEventListener","top","length","remove","window","document","handler","key","stopImmediatePropagation","preventDefault","removeEventListener"],"sourceRoot":"../../../src","sources":["surfaces/SurfaceHost.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAMA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAEA,IAAAG,aAAA,GAAAH,OAAA;AAQA,IAAAI,WAAA,GAAAJ,OAAA;AAA8C,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAK9C;AACA,MAAMkB,iBAAmD,GAAG;EAC1DC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE;AACN,CAAC;;AAED;AACA,SAASC,YAAYA,CAACC,CAAsB,EAAwB;EAClE,OAAO;IACLC,SAAS,EAAED,CAAC,CAACC,SAAS,IAAIL,iBAAiB;IAC3CM,KAAK,EAAEF,CAAC,CAACE,KAAK;IACdC,QAAQ,EAAEH,CAAC,CAACG,QAAQ;IACpBC,cAAc,EAAEJ,CAAC,CAACI,cAAc;IAChCC,KAAK,EAAEL,CAAC,CAACK,KAAK;IACdC,UAAU,EAAEN,CAAC,CAACM,UAAU;IACxBC,iBAAiB,EAAEP,CAAC,CAACO,iBAAiB;IACtCC,cAAc,EAAER,CAAC,CAACQ,cAAc;IAChCC,MAAM,EAAET,CAAC,CAACS,MAAM;IAChBC,UAAU,EAAEV,CAAC,CAACU,UAAU;IACxBC,KAAK,EAAEX,CAAC,CAACW,KAAK;IACdC,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_context","_surfaceStore","_useSurface","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_PLACEMENT","base","md","placementFor","p","placement","width","maxWidth","maxHeightRatio","inset","showHandle","dismissOnBackdrop","contentPadding","header","scrollable","morph","style","panelStyle","panelClassName","containerStyle","containerClassName","label","testID","createSurfaceHost","Dialog","SurfaceLayer","entry","index","control","useDialogControl","id","status","controls","useMemo","dismiss","result","requestDismiss","present","render","opts","useEffect","open","close","handleClose","useCallback","finalizeClose","presentation","jsx","onClose","layer","startOpen","children","SurfaceContext","Provider","value","SurfaceHost","stack","useSyncExternalStore","subscribe","getSnapshot","useAndroidBackDismissesTop","useEscapeDismissesTop","Fragment","map","displayName","SurfaceProvider","resetSurfaces","jsxs","Platform","OS","sub","BackHandler","addEventListener","top","length","remove","window","document","handler","key","stopImmediatePropagation","preventDefault","removeEventListener"],"sourceRoot":"../../../src","sources":["surfaces/SurfaceHost.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -68,7 +68,8 @@ export const BottomSheetBase = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
68
68
|
dynamicBackdrop = false,
|
|
69
69
|
handleComponent,
|
|
70
70
|
scrollY: externalScrollY,
|
|
71
|
-
headerOverlay
|
|
71
|
+
headerOverlay,
|
|
72
|
+
onLayout
|
|
72
73
|
} = props;
|
|
73
74
|
const insets = useSafeAreaInsets();
|
|
74
75
|
const theme = useTheme();
|
|
@@ -641,6 +642,7 @@ export const BottomSheetBase = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
641
642
|
}), /*#__PURE__*/_jsx(GestureDetector, {
|
|
642
643
|
gesture: panGesture,
|
|
643
644
|
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
645
|
+
onLayout: onLayout,
|
|
644
646
|
style: [dynamicStyles.sheet, sheetMarginStyle, sheetStyle, sheetHeightStyle, style],
|
|
645
647
|
children: [backgroundComponent?.({
|
|
646
648
|
style: styles.background
|