@onekeyfe/react-native-native-overlay 3.0.162-alpha.272 → 6.7.0-alpha.336
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/android/src/main/java/com/onekey/nativeoverlay/NativeOverlayHost.kt +8 -8
- package/android/src/test/java/com/onekey/nativeoverlay/NativeOverlayBackTest.kt +122 -0
- package/docs/SPEC.md +69 -12
- package/lib/module/OverlayView.web.js +62 -12
- package/lib/module/OverlayView.web.js.map +1 -1
- package/lib/module/useOverlayController.js +7 -3
- package/lib/module/useOverlayController.js.map +1 -1
- package/lib/module/web/animateTransition.js +7 -2
- package/lib/module/web/animateTransition.js.map +1 -1
- package/lib/module/web/useKeyboardShift.js +1 -1
- package/lib/module/web/useKeyboardShift.js.map +1 -1
- package/lib/module/web/useSheetDrag.js +3 -0
- package/lib/module/web/useSheetDrag.js.map +1 -1
- package/lib/typescript/src/OverlayView.web.d.ts.map +1 -1
- package/lib/typescript/src/useOverlayController.d.ts.map +1 -1
- package/lib/typescript/src/web/animateTransition.d.ts.map +1 -1
- package/lib/typescript/src/web/useSheetDrag.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/OverlayView.web.tsx +133 -43
- package/src/useOverlayController.ts +7 -4
- package/src/web/animateTransition.ts +14 -4
- package/src/web/useKeyboardShift.ts +1 -1
- package/src/web/useSheetDrag.ts +3 -0
|
@@ -48,7 +48,7 @@ internal class NativeOverlayHost private constructor(
|
|
|
48
48
|
)
|
|
49
49
|
private val backCallback = object : OnBackPressedCallback(false) {
|
|
50
50
|
override fun handleOnBackPressed() {
|
|
51
|
-
|
|
51
|
+
topBackEntry()?.let { entry ->
|
|
52
52
|
if (entry.dismissOnBackPress) entry.onRequestDismiss?.invoke("back")
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -66,7 +66,7 @@ internal class NativeOverlayHost private constructor(
|
|
|
66
66
|
* predictive back, so the dispatcher alone never runs first.
|
|
67
67
|
*/
|
|
68
68
|
fun handleBackKey(event: KeyEvent): Boolean {
|
|
69
|
-
val entry =
|
|
69
|
+
val entry = topBackEntry() ?: return false
|
|
70
70
|
if (event.action == KeyEvent.ACTION_UP && !event.isCanceled && entry.dismissOnBackPress) {
|
|
71
71
|
entry.onRequestDismiss?.invoke("back")
|
|
72
72
|
}
|
|
@@ -108,14 +108,14 @@ internal class NativeOverlayHost private constructor(
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
fun onEntriesChanged() {
|
|
111
|
-
val
|
|
112
|
-
if (
|
|
111
|
+
val hasBackEntry = topBackEntry() != null
|
|
112
|
+
if (hasBackEntry && !backCallback.isEnabled) {
|
|
113
113
|
// The most recently added callback wins; re-add so ours runs before
|
|
114
114
|
// ReactActivity's and react-native-screens' callbacks.
|
|
115
115
|
backCallback.remove()
|
|
116
116
|
(activity as? ComponentActivity)?.onBackPressedDispatcher?.addCallback(backCallback)
|
|
117
117
|
}
|
|
118
|
-
backCallback.isEnabled =
|
|
118
|
+
backCallback.isEnabled = hasBackEntry
|
|
119
119
|
updateAccessibility()
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -133,11 +133,11 @@ internal class NativeOverlayHost private constructor(
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
/** Global overlays win; otherwise the topmost visible page overlay. */
|
|
136
|
-
private fun
|
|
137
|
-
orderedEntries().lastOrNull { it.blocking && it.isShownForInput }
|
|
136
|
+
private fun topBackEntry(): NativeOverlayEntryRootView? =
|
|
137
|
+
orderedEntries().lastOrNull { (it.blocking || it.dismissOnBackPress) && it.isShownForInput }
|
|
138
138
|
?: shownPageHosts()
|
|
139
139
|
.flatMap { it.shownEntries() }
|
|
140
|
-
.lastOrNull { it.blocking }
|
|
140
|
+
.lastOrNull { it.blocking || it.dismissOnBackPress }
|
|
141
141
|
|
|
142
142
|
private fun shownPageHosts(): List<NativeOverlayPageHostView> =
|
|
143
143
|
NativeOverlayPageHostView.allHosts().filter {
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
package com.onekey.nativeoverlay
|
|
2
|
+
|
|
3
|
+
import android.view.KeyEvent
|
|
4
|
+
import android.view.View
|
|
5
|
+
import android.widget.FrameLayout
|
|
6
|
+
import androidx.activity.ComponentActivity
|
|
7
|
+
import com.facebook.react.bridge.BridgeReactContext
|
|
8
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
9
|
+
import org.junit.Assert.assertEquals
|
|
10
|
+
import org.junit.Assert.assertFalse
|
|
11
|
+
import org.junit.Assert.assertTrue
|
|
12
|
+
import org.junit.Before
|
|
13
|
+
import org.junit.Test
|
|
14
|
+
import org.junit.runner.RunWith
|
|
15
|
+
import org.robolectric.Robolectric
|
|
16
|
+
import org.robolectric.RobolectricTestRunner
|
|
17
|
+
import org.robolectric.annotation.Config
|
|
18
|
+
|
|
19
|
+
@RunWith(RobolectricTestRunner::class)
|
|
20
|
+
@Config(sdk = [34])
|
|
21
|
+
class NativeOverlayBackTest {
|
|
22
|
+
private lateinit var activity: ComponentActivity
|
|
23
|
+
private lateinit var context: ThemedReactContext
|
|
24
|
+
private lateinit var host: NativeOverlayHost
|
|
25
|
+
private val dismissals = mutableListOf<String>()
|
|
26
|
+
|
|
27
|
+
@Before
|
|
28
|
+
fun setUp() {
|
|
29
|
+
activity = Robolectric.buildActivity(ComponentActivity::class.java).setup().visible().get()
|
|
30
|
+
val reactContext = BridgeReactContext(activity)
|
|
31
|
+
reactContext.onHostResume(activity)
|
|
32
|
+
context = ThemedReactContext(reactContext, activity, "OverlayBackTest", 1)
|
|
33
|
+
host = NativeOverlayHost.of(activity)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private fun entry(name: String, blocking: Boolean, dismissible: Boolean, order: Int = 0) =
|
|
37
|
+
NativeOverlayEntryRootView(context).apply {
|
|
38
|
+
this.blocking = blocking
|
|
39
|
+
dismissOnBackPress = dismissible
|
|
40
|
+
stackOrder = order
|
|
41
|
+
isShownForInput = true
|
|
42
|
+
onRequestDismiss = { dismissals.add("$name:$it") }
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
private fun back(action: Int = KeyEvent.ACTION_UP, flags: Int = 0) =
|
|
46
|
+
host.handleBackKey(KeyEvent(0L, 0L, action, KeyEvent.KEYCODE_BACK, 0, 0, 0, 0, flags))
|
|
47
|
+
|
|
48
|
+
@Test
|
|
49
|
+
fun dismissibleNonBlockingGlobalEntryWinsOverLowerBlocker() {
|
|
50
|
+
host.attach(entry("lower", true, true), NativeOverlayLevel.MODAL)
|
|
51
|
+
host.attach(entry("top", false, true), NativeOverlayLevel.TOAST)
|
|
52
|
+
assertTrue(back(KeyEvent.ACTION_DOWN))
|
|
53
|
+
assertEquals(emptyList<String>(), dismissals)
|
|
54
|
+
assertTrue(back())
|
|
55
|
+
assertEquals(listOf("top:back"), dismissals)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@Test
|
|
59
|
+
fun dispatcherHandlesNonBlockingEntryAndKeepsPageAccessible() {
|
|
60
|
+
val page = View(activity).apply { importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_YES }
|
|
61
|
+
activity.setContentView(page)
|
|
62
|
+
val top = entry("top", false, true)
|
|
63
|
+
host.attach(top, NativeOverlayLevel.MODAL)
|
|
64
|
+
activity.onBackPressedDispatcher.onBackPressed()
|
|
65
|
+
assertEquals(listOf("top:back"), dismissals)
|
|
66
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_YES, page.importantForAccessibility)
|
|
67
|
+
host.detach(top)
|
|
68
|
+
assertFalse(back())
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@Test
|
|
72
|
+
fun nonDismissibleBlockerConsumesBackWithoutClosingLowerEntry() {
|
|
73
|
+
host.attach(entry("lower", false, true), NativeOverlayLevel.MODAL)
|
|
74
|
+
host.attach(entry("lock", true, false), NativeOverlayLevel.LOCK)
|
|
75
|
+
assertTrue(back())
|
|
76
|
+
assertEquals(emptyList<String>(), dismissals)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Test
|
|
80
|
+
fun passiveOrNotInputReadyEntriesDoNotTakeBack() {
|
|
81
|
+
host.attach(entry("passive", false, false), NativeOverlayLevel.TOAST)
|
|
82
|
+
host.attach(entry("hidden", true, true).apply { isShownForInput = false }, NativeOverlayLevel.LOCK)
|
|
83
|
+
assertFalse(back())
|
|
84
|
+
assertEquals(emptyList<String>(), dismissals)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@Test
|
|
88
|
+
fun canceledKeyUpDoesNotDismiss() {
|
|
89
|
+
host.attach(entry("top", false, true), NativeOverlayLevel.MODAL)
|
|
90
|
+
assertTrue(back(flags = KeyEvent.FLAG_CANCELED))
|
|
91
|
+
assertEquals(emptyList<String>(), dismissals)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@Test
|
|
95
|
+
fun dismissiblePageEntryWinsOverLowerPageBlockerAndSuspensionSkipsIt() {
|
|
96
|
+
val pageHost = NativeOverlayPageHostView(context).apply { hostKey = "page-back-test" }
|
|
97
|
+
activity.setContentView(pageHost)
|
|
98
|
+
val lower = entry("lower", true, true).apply { ownerKey = "owner" }
|
|
99
|
+
val top = entry("top", false, true, 1).apply { ownerKey = "owner" }
|
|
100
|
+
pageHost.attach(lower)
|
|
101
|
+
pageHost.attach(top)
|
|
102
|
+
assertTrue(back())
|
|
103
|
+
assertEquals(listOf("top:back"), dismissals)
|
|
104
|
+
pageHost.setSuspendedOwners("owner")
|
|
105
|
+
assertFalse(back())
|
|
106
|
+
pageHost.invalidateHost()
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@Test
|
|
110
|
+
fun globalEntryTakesBackBeforePageEntryAndDismissalRestoresPageTarget() {
|
|
111
|
+
val pageHost = NativeOverlayPageHostView(context).apply { hostKey = "page-global-test" }
|
|
112
|
+
activity.setContentView(FrameLayout(activity).apply { addView(pageHost) })
|
|
113
|
+
pageHost.attach(entry("page", false, true))
|
|
114
|
+
val global = entry("global", false, true)
|
|
115
|
+
host.attach(global, NativeOverlayLevel.MODAL)
|
|
116
|
+
assertTrue(back())
|
|
117
|
+
host.detach(global)
|
|
118
|
+
assertTrue(back())
|
|
119
|
+
assertEquals(listOf("global:back", "page:back"), dismissals)
|
|
120
|
+
pageHost.invalidateHost()
|
|
121
|
+
}
|
|
122
|
+
}
|
package/docs/SPEC.md
CHANGED
|
@@ -35,12 +35,13 @@ retains its original implementation attribution in source comments.
|
|
|
35
35
|
|
|
36
36
|
### Release boundary
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
workspace
|
|
43
|
-
|
|
38
|
+
The earlier `3.0.162-alpha.272` release remains immutable. This branch now
|
|
39
|
+
includes the current main SDK baseline, with all publishable workspaces aligned
|
|
40
|
+
before release. Use `package-publish` with `npm_dist_tag=next` and an empty
|
|
41
|
+
`only_workspace` to generate a fresh `6.7.0-alpha.N` preview, publish every
|
|
42
|
+
workspace, and verify every registry version. Preserve `latest` and keep both
|
|
43
|
+
repository PRs open. App consumers pin the verified exact preview version and
|
|
44
|
+
refresh dependency and native locks before installed-version acceptance.
|
|
44
45
|
|
|
45
46
|
## 5.1 Purpose, scope, and non-goals
|
|
46
47
|
|
|
@@ -136,6 +137,11 @@ visible)`, `removePage(ownerKey)`.
|
|
|
136
137
|
|
|
137
138
|
- `usePageOverlayHost()` resolves `hostKey` and `ownerKey` from navigation
|
|
138
139
|
context.
|
|
140
|
+
- A declarative page overlay keeps `scope: 'page'` while either key is
|
|
141
|
+
unavailable. It does not request or present an entry until both keys are
|
|
142
|
+
available; becoming ready while visible requests it in the page lane.
|
|
143
|
+
Hiding or unmounting before readiness creates no entry or close callback.
|
|
144
|
+
Direct store requests still throw for missing page keys.
|
|
139
145
|
- `useInPageDialog`, `useInModalDialog`, and `useInTabDialog` become aliases of
|
|
140
146
|
page scope. Tab scope is removed.
|
|
141
147
|
|
|
@@ -208,6 +214,30 @@ request ─► queued ─► active ─► (enter anim) presented
|
|
|
208
214
|
- Threads: store mutations happen on the JS thread. Native animation and layout
|
|
209
215
|
run on the UI thread. Events are delivered as direct events.
|
|
210
216
|
|
|
217
|
+
### Web presentation updates (OK-50653)
|
|
218
|
+
|
|
219
|
+
For an open Web overlay that keeps its portal host, changing `presentation`
|
|
220
|
+
between sheet and a non-sheet frame MUST preserve the mounted content subtree.
|
|
221
|
+
Its props and React context continue to update normally. Changing the optional
|
|
222
|
+
sheet handle MUST NOT move the content into a different React child slot.
|
|
223
|
+
Closing without `keepContentMounted` still unmounts content after exit; reopening
|
|
224
|
+
creates a fresh content lifecycle. Business entity changes and draft resets
|
|
225
|
+
remain caller-owned; the overlay does not cache or persist form values.
|
|
226
|
+
|
|
227
|
+
The stable sheet shell must not change non-sheet animation origins or keyboard
|
|
228
|
+
avoidance geometry. Switching away from a sheet clears any pan offset and its
|
|
229
|
+
backdrop opacity override, and releases an active pointer capture.
|
|
230
|
+
|
|
231
|
+
Conformance: `src/__tests__/draftRetention.web.test.ts` exercises the real Web
|
|
232
|
+
host, portal and store for presentation changes, live props/context/callbacks,
|
|
233
|
+
close/reopen, animation origins, keyboard geometry and an interrupted pan.
|
|
234
|
+
Chrome extension side-panel and ordinary-tab checks use synthetic content;
|
|
235
|
+
this correction does not claim new iOS/Android runtime verification.
|
|
236
|
+
|
|
237
|
+
These source changes require a new published package version before the app
|
|
238
|
+
can consume them from npm. This fix leaves package versions and lockfiles at
|
|
239
|
+
their existing values and does not publish a release.
|
|
240
|
+
|
|
211
241
|
## 5.5 Data, cache, and identity
|
|
212
242
|
|
|
213
243
|
- Identity is the entry `id`: caller-provided, otherwise `overlay-<seq>`.
|
|
@@ -216,6 +246,17 @@ request ─► queued ─► active ─► (enter anim) presented
|
|
|
216
246
|
|
|
217
247
|
## 5.6 Platform contract
|
|
218
248
|
|
|
249
|
+
### Web keyboard focus containment
|
|
250
|
+
|
|
251
|
+
The topmost active, unsuspended blocking Web entry MUST contain sequential
|
|
252
|
+
keyboard focus. Tab from its last tabbable child wraps to the first;
|
|
253
|
+
Shift+Tab from its first wraps to the last. From the entry root, focus enters
|
|
254
|
+
the first/last child respectively. With no tabbable children, focus stays on
|
|
255
|
+
the entry root. Disabled, negative-tabindex, hidden and inert subtrees are
|
|
256
|
+
excluded. Positive tabindex values precede ordinary DOM-order tab stops.
|
|
257
|
+
Non-blocking, lower, closing, suspended and parked entries MUST NOT run a
|
|
258
|
+
focus loop. Existing focus entry/restore and Escape policies are unchanged.
|
|
259
|
+
|
|
219
260
|
| Concern | iOS | Android | Web |
|
|
220
261
|
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
221
262
|
| Global level host | One passthrough `UIWindow` per active level per `UIWindowScene`, ordered by `windowLevel`. `lock` sits above RN Alert (2001). | One `OverlayHost` FrameLayout in `android.R.id.content` above the ReactRootView, with one child container per level. | Sibling `div[data-onekey-layer]` roots under `body`, one z-index band per level (`OVERLAY_WEB_Z_INDEX_BASE`). |
|
|
@@ -224,7 +265,7 @@ request ─► queued ─► active ─► (enter anim) presented
|
|
|
224
265
|
| Page host | Fabric `PageOverlayHost` as the last child of the root-route screen. Custom-drawn sheet, because UIKit sheets cannot be page-scoped. | The same host inside the root-route screen. The ReactRootView already dispatches touches, so no nested RootView. | `position: absolute` host inside the root-route card. |
|
|
225
266
|
| Header / tab bar coverage (page) | Covered: the host is above the tab controller and navigation bars. | Covered. | Covered. |
|
|
226
267
|
| Touch passthrough (toast, debug, box-none) | `hitTest` returns nil on the window or root view. | A non-blocking entry hit-tests its React content with `TouchTargetHelper` (honoring `box-none`) and falls through to the FrameLayout sibling on a miss. | `pointer-events: none` root, `auto` per entry. |
|
|
227
|
-
| Back / Escape | Escape via `accessibilityPerformEscape`. The interactive pop gesture is disabled while a blocking page overlay is shown. | A `Window.Callback` wrapper consumes `KEYCODE_BACK`
|
|
268
|
+
| Back / Escape | Escape via `accessibilityPerformEscape`. The interactive pop gesture is disabled while a blocking page overlay is shown. | A `Window.Callback` wrapper consumes `KEYCODE_BACK` for the topmost input-ready blocking or dismissible overlay. `ReactActivity.onBackPressed` hands back to JS BackHandler (react-navigation) before the `OnBackPressedDispatcher`, and the app opts out of predictive back, so a dispatcher callback alone never runs first. The dispatcher callback is kept for the predictive-back path. The IME still gets back first to close the keyboard. | Capture-phase `keydown` that ignores IME composition. |
|
|
228
269
|
| Modality / accessibility | `accessibilityViewIsModal` on the blocking level window; `.screenChanged` posted on present. | `IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS` on the content below. | `inert` on the app root and lower layers, `role=dialog`, `aria-modal`, focus trap and restore. |
|
|
229
270
|
| Keyboard | System sheet avoidance; `keyboardLayoutGuide` for custom presentations. The main window regains key status on dismiss. | `WindowInsetsAnimationCompat` per sheet (the app uses `adjustPan`). | `visualViewport`. |
|
|
230
271
|
| Animation engine | `UIViewPropertyAnimator` + `UISpringTimingParameters(mass:stiffness:damping:)`, which maps 1:1 and supports damping ratio > 1. | `SpringAnimation` with `stiffness = k/m` and `dampingRatio`; `PathInterpolator` for timing curves. | WAAPI `element.animate`. Timing presets use `cubic-bezier`; custom springs use `linear()`. |
|
|
@@ -296,6 +337,16 @@ navigation remains a separate runtime acceptance item.
|
|
|
296
337
|
|
|
297
338
|
Automated (P0):
|
|
298
339
|
|
|
340
|
+
- `src/__tests__/focusTrap.web.test.ts` mounts real Web overlays and checks
|
|
341
|
+
both Tab boundaries, root/empty fallback, inaccessible children, positive
|
|
342
|
+
tabindex order, top-entry precedence, page scope, suspension and parking.
|
|
343
|
+
- `src/__tests__/useOverlayController.test.ts` exercises the actual hook and
|
|
344
|
+
page scope providers: missing/empty keys, delayed readiness, one request,
|
|
345
|
+
page suspension/removal, hiding/unmounting before readiness and global scope.
|
|
346
|
+
- `NativeOverlayBackTest` exercises the Android host's key interceptor and
|
|
347
|
+
Back dispatcher with actual entry/page views: dismissible non-blockers,
|
|
348
|
+
blockers, input readiness, canceled key-up, global/page precedence,
|
|
349
|
+
suspension and blocking-only accessibility isolation.
|
|
299
350
|
- `src/__tests__/pageIsolation.web.test.ts` mounts a real React portal in a
|
|
300
351
|
DOM host and verifies late suspension, level ordering and restoration after
|
|
301
352
|
the blocking entry is removed.
|
|
@@ -331,7 +382,10 @@ Runtime matrix, required per platform before migrating callers (P1–P3):
|
|
|
331
382
|
- switch tab and come back: it restores;
|
|
332
383
|
- remove the page: it closes with `page-removed`;
|
|
333
384
|
- the native header and tab bar are covered.
|
|
334
|
-
5. Back/Escape reaches the topmost
|
|
385
|
+
5. Back/Escape reaches the topmost input-ready overlay that is blocking or
|
|
386
|
+
explicitly dismissible, global before page. A non-dismissible blocker
|
|
387
|
+
consumes Back without closing; a passive non-blocking entry passes through.
|
|
388
|
+
Accessibility isolation remains blocking-only. The lock swallows Back.
|
|
335
389
|
6. Keyboard: an input in a global sheet, a page sheet and a secure dialog.
|
|
336
390
|
7. iOS: a system picker opened from an overlay appears above it.
|
|
337
391
|
8. Split view: page overlays stay in their own pane.
|
|
@@ -362,8 +416,8 @@ P3 page scope notes:
|
|
|
362
416
|
their global sheet implementation inside the page host.
|
|
363
417
|
- Android back also resolves page entries: global overlays first, then the
|
|
364
418
|
topmost visible page overlay.
|
|
365
|
-
- A page
|
|
366
|
-
scope.
|
|
419
|
+
- A declarative page overlay waits for a resolvable host and owner; it never
|
|
420
|
+
falls back to global scope. Direct store requests require both keys.
|
|
367
421
|
|
|
368
422
|
P2 sheet notes:
|
|
369
423
|
|
|
@@ -505,8 +559,11 @@ P5b web popover notes:
|
|
|
505
559
|
Floating UI (`@floating-ui/dom`) places the panel: offset, flip, shift,
|
|
506
560
|
and a max height from the available space. `autoUpdate` follows scroll
|
|
507
561
|
and resize.
|
|
508
|
-
-
|
|
509
|
-
|
|
562
|
+
- For a single positioned child, Web anchored scale/fade runs on that content,
|
|
563
|
+
with a local transform origin. Its full-window positioning ancestors remain
|
|
564
|
+
untransformed, so Floating UI uses the same coordinate space during and after
|
|
565
|
+
the animation. Completion positioning must not correct coordinates distorted
|
|
566
|
+
by the enter scale. Multi-child roots retain their shared full-window motion.
|
|
510
567
|
- Anchored panels close on an outside press. Presses on the trigger, on the
|
|
511
568
|
panel, or inside an overlay ranked above it do not close it, so a nested
|
|
512
569
|
Select or a Dialog opened from the panel keeps it open. They also close on
|
|
@@ -6,6 +6,7 @@ import { StyleSheet, View } from 'react-native';
|
|
|
6
6
|
import { OverlayLevelProvider } from "./OverlayLevelContext.js";
|
|
7
7
|
import { OVERLAY_LEVEL_ORDER, isBlockingLevel } from "./OverlayLevels.js";
|
|
8
8
|
import { OVERLAY_OWNER_ATTRIBUTE } from "./OverlayPageHost.web.js";
|
|
9
|
+
import { overlayStore } from "./OverlayStore.js";
|
|
9
10
|
import { useOverlayController } from "./useOverlayController.js";
|
|
10
11
|
import { animateBackdrop, animateTransition } from "./web/animateTransition.js";
|
|
11
12
|
import { ENTRY_ATTRIBUTE, getOverlayLayerRoot, getOverlayPageHost, registerOverlayDismissRequester, scheduleOverlayInertSync } from "./web/overlayLayers.js";
|
|
@@ -56,6 +57,7 @@ function WebOverlayEntry({
|
|
|
56
57
|
const keyboardLayerRef = useRef(null);
|
|
57
58
|
const backdropRef = useRef(null);
|
|
58
59
|
const directionRef = useRef(undefined);
|
|
60
|
+
const runningAnimationsRef = useRef([]);
|
|
59
61
|
const restoreFocusRef = useRef(null);
|
|
60
62
|
const callbacksRef = useRef({
|
|
61
63
|
onPresented,
|
|
@@ -65,6 +67,16 @@ function WebOverlayEntry({
|
|
|
65
67
|
onPresented,
|
|
66
68
|
onDismissed
|
|
67
69
|
};
|
|
70
|
+
useLayoutEffect(() => {
|
|
71
|
+
if (!isSheet && sheetRef.current) {
|
|
72
|
+
// The host now survives a presentation switch; clear any in-flight pan.
|
|
73
|
+
sheetRef.current.style.removeProperty('transform');
|
|
74
|
+
sheetRef.current.style.removeProperty('transition');
|
|
75
|
+
if (backdropRef.current) {
|
|
76
|
+
backdropRef.current.style.opacity = '1';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}, [isSheet]);
|
|
68
80
|
useLayoutEffect(() => {
|
|
69
81
|
const content = contentRef.current;
|
|
70
82
|
if (!content) {
|
|
@@ -87,13 +99,13 @@ function WebOverlayEntry({
|
|
|
87
99
|
preventScroll: true
|
|
88
100
|
});
|
|
89
101
|
}
|
|
90
|
-
|
|
91
|
-
backdropRef.current?.getAnimations().forEach(running => running.cancel());
|
|
102
|
+
runningAnimationsRef.current.forEach(running => running.cancel());
|
|
92
103
|
// A sheet is measured as a whole; other presentations by the children
|
|
93
104
|
// of the full-window React root.
|
|
94
|
-
const contentRoot = isSheet ? content :
|
|
105
|
+
const contentRoot = isSheet ? content : sheetRef.current?.firstElementChild ?? content;
|
|
95
106
|
const transition = direction === 'in' ? animation.enter : animation.exit;
|
|
96
107
|
const running = [animateTransition(content, contentRoot, transition, direction), backdropRef.current ? animateBackdrop(backdropRef.current, animation.backdrop.motion, direction) : undefined].filter(item => !!item);
|
|
108
|
+
runningAnimationsRef.current = running;
|
|
97
109
|
void Promise.all(running.map(item => item.finished)).then(() => {
|
|
98
110
|
if (directionRef.current !== direction) {
|
|
99
111
|
return;
|
|
@@ -142,6 +154,40 @@ function WebOverlayEntry({
|
|
|
142
154
|
});
|
|
143
155
|
const showBackdrop = !!backdropColor || blocking;
|
|
144
156
|
const cornerRadius = sheet?.cornerRadius ?? DEFAULT_SHEET_CORNER_RADIUS;
|
|
157
|
+
const onKeyDownCapture = event => {
|
|
158
|
+
const root = entryRef.current;
|
|
159
|
+
if (event.key !== 'Tab' || event.defaultPrevented || event.nativeEvent.isComposing || !root || !presented || parked || overlayStore.getBlockingTop()?.id !== entryId) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const tabbable = Array.from(root.querySelectorAll('a[href], area[href], button, input:not([type="hidden"]), select, textarea, iframe, object, embed, [tabindex], [contenteditable]:not([contenteditable="false"])')).filter(node => {
|
|
163
|
+
if (node.tabIndex < 0 && (node.hasAttribute('tabindex') || !node.hasAttribute('contenteditable')) || node.matches(':disabled')) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
for (let ancestor = node; ancestor; ancestor = ancestor.parentElement) {
|
|
167
|
+
const style = getComputedStyle(ancestor);
|
|
168
|
+
if (ancestor.inert || ancestor.hasAttribute('inert') || ancestor.hidden || ancestor.getAttribute('aria-hidden') === 'true' || style.display === 'none' || style.visibility === 'hidden') {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return true;
|
|
173
|
+
}).sort((a, b) => {
|
|
174
|
+
const aOrder = a.tabIndex > 0 ? a.tabIndex : Infinity;
|
|
175
|
+
const bOrder = b.tabIndex > 0 ? b.tabIndex : Infinity;
|
|
176
|
+
return aOrder === bOrder ? 0 : aOrder - bOrder;
|
|
177
|
+
});
|
|
178
|
+
const active = document.activeElement;
|
|
179
|
+
const first = tabbable[0];
|
|
180
|
+
const last = tabbable[tabbable.length - 1];
|
|
181
|
+
if (!first || active === root || !root.contains(active) || active === (event.shiftKey ? first : last)) {
|
|
182
|
+
event.preventDefault();
|
|
183
|
+
(event.shiftKey ? last : first)?.focus({
|
|
184
|
+
preventScroll: true
|
|
185
|
+
});
|
|
186
|
+
if (!first) root.focus({
|
|
187
|
+
preventScroll: true
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
};
|
|
145
191
|
return /*#__PURE__*/_jsxs("div", {
|
|
146
192
|
ref: entryRef,
|
|
147
193
|
[ENTRY_ATTRIBUTE]: '',
|
|
@@ -165,6 +211,7 @@ function WebOverlayEntry({
|
|
|
165
211
|
visibility: parked ? 'hidden' : undefined
|
|
166
212
|
},
|
|
167
213
|
...ISOLATED_EVENT_HANDLERS,
|
|
214
|
+
onKeyDownCapture: onKeyDownCapture,
|
|
168
215
|
children: [showBackdrop ? /*#__PURE__*/_jsx("div", {
|
|
169
216
|
ref: backdropRef,
|
|
170
217
|
"aria-hidden": true,
|
|
@@ -190,9 +237,9 @@ function WebOverlayEntry({
|
|
|
190
237
|
inset: 0,
|
|
191
238
|
pointerEvents: 'none'
|
|
192
239
|
},
|
|
193
|
-
children:
|
|
240
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
194
241
|
ref: sheetRef,
|
|
195
|
-
style: {
|
|
242
|
+
style: sheet ? {
|
|
196
243
|
position: 'absolute',
|
|
197
244
|
left: 0,
|
|
198
245
|
right: 0,
|
|
@@ -207,8 +254,14 @@ function WebOverlayEntry({
|
|
|
207
254
|
background: sheet.backgroundColor ? String(sheet.backgroundColor) : undefined,
|
|
208
255
|
borderTopLeftRadius: cornerRadius,
|
|
209
256
|
borderTopRightRadius: cornerRadius
|
|
257
|
+
} : {
|
|
258
|
+
position: 'absolute',
|
|
259
|
+
inset: 0,
|
|
260
|
+
display: 'flex',
|
|
261
|
+
flexDirection: 'column',
|
|
262
|
+
pointerEvents: 'none'
|
|
210
263
|
},
|
|
211
|
-
children: [sheet
|
|
264
|
+
children: [sheet?.showHandle ? /*#__PURE__*/_jsx("div", {
|
|
212
265
|
style: {
|
|
213
266
|
alignSelf: 'center',
|
|
214
267
|
width: 36,
|
|
@@ -219,15 +272,12 @@ function WebOverlayEntry({
|
|
|
219
272
|
flexShrink: 0
|
|
220
273
|
}
|
|
221
274
|
}) : null, /*#__PURE__*/_jsx(View, {
|
|
222
|
-
|
|
275
|
+
pointerEvents: sheet ? undefined : 'box-none',
|
|
276
|
+
style: sheet ? {
|
|
223
277
|
flexShrink: 1
|
|
224
|
-
},
|
|
278
|
+
} : StyleSheet.absoluteFill,
|
|
225
279
|
children: children
|
|
226
280
|
})]
|
|
227
|
-
}) : /*#__PURE__*/_jsx(View, {
|
|
228
|
-
pointerEvents: "box-none",
|
|
229
|
-
style: StyleSheet.absoluteFill,
|
|
230
|
-
children: children
|
|
231
281
|
})
|
|
232
282
|
})
|
|
233
283
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useId","useLayoutEffect","useRef","createPortal","StyleSheet","View","OverlayLevelProvider","OVERLAY_LEVEL_ORDER","isBlockingLevel","OVERLAY_OWNER_ATTRIBUTE","useOverlayController","animateBackdrop","animateTransition","ENTRY_ATTRIBUTE","getOverlayLayerRoot","getOverlayPageHost","registerOverlayDismissRequester","scheduleOverlayInertSync","useKeyboardShift","useSheetDrag","jsx","_jsx","jsxs","_jsxs","DEFAULT_BACKDROP_COLOR","DEFAULT_SHEET_MAX_HEIGHT","DEFAULT_SHEET_CORNER_RADIUS","stopPropagation","event","ISOLATED_EVENT_HANDLERS","onClick","onPointerDown","onPointerUp","onKeyDown","WebOverlayEntry","entryId","parked","stackOrder","levelOrder","presented","animation","blocking","backdropColor","dismissOnBackdropPress","onPresented","onDismissed","onRequestDismiss","sheet","zIndex","ownerKey","testID","children","sheetRef","pannedAwayRef","isSheet","entryRef","contentRef","keyboardLayerRef","backdropRef","directionRef","undefined","restoreFocusRef","callbacksRef","current","content","direction","neverEntered","document","activeElement","focus","preventScroll","getAnimations","forEach","running","cancel","contentRoot","firstElementChild","transition","enter","exit","backdrop","motion","filter","item","Promise","all","map","finished","then","catch","backdropNode","onBackdropClick","addEventListener","removeEventListener","layerRef","enabled","dismissOnPanDown","onDismissByPan","showBackdrop","cornerRadius","ref","role","tabIndex","inert","style","position","inset","pointerEvents","outline","visibility","opacity","background","left","right","bottom","height","maxHeight","display","flexDirection","overflow","touchAction","backgroundColor","String","borderTopLeftRadius","borderTopRightRadius","showHandle","alignSelf","width","marginTop","borderRadius","flexShrink","absoluteFill","OverlayView","props","level","presentation","keepContentMounted","parkedId","entry","mounted","onHostPresented","onHostDismissed","onHostRequestDismiss","scope","hostKey","pageHost","id","seq","color","dismissOnPress","value"],"sourceRoot":"../../src","sources":["OverlayView.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useEffect","useId","useLayoutEffect","useRef","createPortal","StyleSheet","View","OverlayLevelProvider","OVERLAY_LEVEL_ORDER","isBlockingLevel","OVERLAY_OWNER_ATTRIBUTE","overlayStore","useOverlayController","animateBackdrop","animateTransition","ENTRY_ATTRIBUTE","getOverlayLayerRoot","getOverlayPageHost","registerOverlayDismissRequester","scheduleOverlayInertSync","useKeyboardShift","useSheetDrag","jsx","_jsx","jsxs","_jsxs","DEFAULT_BACKDROP_COLOR","DEFAULT_SHEET_MAX_HEIGHT","DEFAULT_SHEET_CORNER_RADIUS","stopPropagation","event","ISOLATED_EVENT_HANDLERS","onClick","onPointerDown","onPointerUp","onKeyDown","WebOverlayEntry","entryId","parked","stackOrder","levelOrder","presented","animation","blocking","backdropColor","dismissOnBackdropPress","onPresented","onDismissed","onRequestDismiss","sheet","zIndex","ownerKey","testID","children","sheetRef","pannedAwayRef","isSheet","entryRef","contentRef","keyboardLayerRef","backdropRef","directionRef","undefined","runningAnimationsRef","restoreFocusRef","callbacksRef","current","style","removeProperty","opacity","content","direction","neverEntered","document","activeElement","focus","preventScroll","forEach","running","cancel","contentRoot","firstElementChild","transition","enter","exit","backdrop","motion","filter","item","Promise","all","map","finished","then","catch","backdropNode","onBackdropClick","addEventListener","removeEventListener","layerRef","enabled","dismissOnPanDown","onDismissByPan","showBackdrop","cornerRadius","onKeyDownCapture","root","key","defaultPrevented","nativeEvent","isComposing","getBlockingTop","id","tabbable","Array","from","querySelectorAll","node","tabIndex","hasAttribute","matches","ancestor","parentElement","getComputedStyle","inert","hidden","getAttribute","display","visibility","sort","a","b","aOrder","Infinity","bOrder","active","first","last","length","contains","shiftKey","preventDefault","ref","role","position","inset","pointerEvents","outline","background","left","right","bottom","height","maxHeight","flexDirection","overflow","touchAction","backgroundColor","String","borderTopLeftRadius","borderTopRightRadius","showHandle","alignSelf","width","marginTop","borderRadius","flexShrink","absoluteFill","OverlayView","props","level","presentation","keepContentMounted","parkedId","entry","mounted","onHostPresented","onHostDismissed","onHostRequestDismiss","scope","hostKey","pageHost","seq","color","dismissOnPress","value"],"sourceRoot":"../../src","sources":["OverlayView.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,8 +32,7 @@ export function useOverlayController(props) {
|
|
|
32
32
|
const pageScope = useOverlayPageScope();
|
|
33
33
|
const hostKey = props.hostKey ?? pageScope.hostKey;
|
|
34
34
|
const ownerKey = props.ownerKey ?? pageScope.ownerKey;
|
|
35
|
-
|
|
36
|
-
const scope = props.scope === 'page' && hostKey && ownerKey ? 'page' : 'global';
|
|
35
|
+
const scope = props.scope ?? 'global';
|
|
37
36
|
const baseId = useId();
|
|
38
37
|
const cycleRef = useRef(0);
|
|
39
38
|
const [entryId, setEntryId] = useState();
|
|
@@ -54,6 +53,11 @@ export function useOverlayController(props) {
|
|
|
54
53
|
if (entryId || closedByStoreRef.current) {
|
|
55
54
|
return;
|
|
56
55
|
}
|
|
56
|
+
// Page context can become ready after the caller first opens the overlay.
|
|
57
|
+
// Keep the request in its page boundary instead of presenting globally.
|
|
58
|
+
if (scope === 'page' && (!hostKey || !ownerKey)) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
57
61
|
cycleRef.current += 1;
|
|
58
62
|
const id = `overlay-view${baseId}${cycleRef.current}`;
|
|
59
63
|
overlayStore.request({
|
|
@@ -80,7 +84,7 @@ export function useOverlayController(props) {
|
|
|
80
84
|
setEntryId(id);
|
|
81
85
|
// Level / strategy changes apply to the next open cycle only.
|
|
82
86
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
83
|
-
}, [visible, entryId]);
|
|
87
|
+
}, [visible, entryId, scope, hostKey, ownerKey]);
|
|
84
88
|
useEffect(() => () => {
|
|
85
89
|
if (entryId) {
|
|
86
90
|
overlayStore.dismiss(entryId, 'system');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useId","useMemo","useRef","useState","useSyncExternalStore","OVERLAY_MOTION_PRESETS","resolveOverlayAnimation","useOverlayPageScope","findStatusBarOwner","overlayStore","useLatest","value","ref","current","useOverlayController","props","visible","level","strategy","priority","replaceKey","blocking","dismissOnBackPress","presentation","animation","statusBarStyle","pageScope","hostKey","ownerKey","scope","baseId","cycleRef","entryId","setEntryId","closedByStoreRef","propsRef","snapshot","subscribe","getSnapshot","entry","entries","find","e","id","queued","undefined","dismiss","request","dismissible","onRemoved","reason","onClose","finalize","resolvedAnimation","onHostPresented","onPresented","onHostDismissed","phase","getEntry","onHostRequestDismiss","handler","onRequestDismiss","mounted","presented","suspended","ownsStatusBar"],"sourceRoot":"../../src","sources":["useOverlayController.ts"],"mappings":";;AAAA,SACEA,WAAW,EACXC,SAAS,EACTC,KAAK,EACLC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,oBAAoB,QACf,OAAO;AAEd,SAASC,sBAAsB,QAAQ,mCAAmC;AAC1E,SAASC,uBAAuB,QAAQ,iCAA8B;AACtE,SAASC,mBAAmB,QAAQ,uBAAoB;AACxD,SAASC,kBAAkB,EAAEC,YAAY,QAAQ,mBAAgB;AA6BjE,SAASC,SAASA,CAAIC,KAAQ,EAAE;EAC9B,MAAMC,GAAG,GAAGV,MAAM,CAACS,KAAK,CAAC;EACzBC,GAAG,CAACC,OAAO,GAAGF,KAAK;EACnB,OAAOC,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,oBAAoBA,CAClCC,KAAwB,EACJ;EACpB,MAAM;IACJC,OAAO;IACPC,KAAK;IACLC,QAAQ;IACRC,QAAQ;IACRC,UAAU;IACVC,QAAQ;IACRC,kBAAkB;IAClBC,YAAY,GAAG,QAAQ;IACvBC,SAAS;IACTC;EACF,CAAC,GAAGV,KAAK;EACT,MAAMW,SAAS,GAAGnB,mBAAmB,CAAC,CAAC;EACvC,MAAMoB,OAAO,GAAGZ,KAAK,CAACY,OAAO,IAAID,SAAS,CAACC,OAAO;EAClD,MAAMC,QAAQ,GAAGb,KAAK,CAACa,QAAQ,IAAIF,SAAS,CAACE,QAAQ;EACrD
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useId","useMemo","useRef","useState","useSyncExternalStore","OVERLAY_MOTION_PRESETS","resolveOverlayAnimation","useOverlayPageScope","findStatusBarOwner","overlayStore","useLatest","value","ref","current","useOverlayController","props","visible","level","strategy","priority","replaceKey","blocking","dismissOnBackPress","presentation","animation","statusBarStyle","pageScope","hostKey","ownerKey","scope","baseId","cycleRef","entryId","setEntryId","closedByStoreRef","propsRef","snapshot","subscribe","getSnapshot","entry","entries","find","e","id","queued","undefined","dismiss","request","dismissible","onRemoved","reason","onClose","finalize","resolvedAnimation","onHostPresented","onPresented","onHostDismissed","phase","getEntry","onHostRequestDismiss","handler","onRequestDismiss","mounted","presented","suspended","ownsStatusBar"],"sourceRoot":"../../src","sources":["useOverlayController.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -85,14 +85,19 @@ export function animateTransition(element, contentRoot, transition, direction) {
|
|
|
85
85
|
fade: true
|
|
86
86
|
} : transition;
|
|
87
87
|
const extent = measureContentExtent(contentRoot);
|
|
88
|
-
|
|
88
|
+
// The React Native root wraps the positioned panel. Animate that panel so its
|
|
89
|
+
// offset parent stays unscaled; multi-child roots retain their shared motion.
|
|
90
|
+
const anchoredContent = effective.origin === 'anchor' && contentRoot.childElementCount === 1 ? contentRoot.firstElementChild : undefined;
|
|
91
|
+
const target = anchoredContent instanceof HTMLElement ? anchoredContent : element;
|
|
92
|
+
const targetRect = target === element ? undefined : target.getBoundingClientRect();
|
|
93
|
+
target.style.transformOrigin = `${(extent.left + extent.right) / 2 - (targetRect?.left ?? 0)}px ${(extent.top + extent.bottom) / 2 - (targetRect?.top ?? 0)}px`;
|
|
89
94
|
const hidden = hiddenKeyframe(effective, extent);
|
|
90
95
|
const visible = {};
|
|
91
96
|
Object.keys(hidden).forEach(key => {
|
|
92
97
|
visible[key] = VISIBLE_KEYFRAME[key];
|
|
93
98
|
});
|
|
94
99
|
const keyframes = direction === 'in' ? [hidden, visible] : [visible, hidden];
|
|
95
|
-
return
|
|
100
|
+
return target.animate(keyframes, {
|
|
96
101
|
...toTiming(effective.motion),
|
|
97
102
|
fill: 'forwards'
|
|
98
103
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["springToCssLinear","measureContentExtent","container","rects","Array","from","children","map","child","getBoundingClientRect","length","top","bottom","window","innerHeight","left","right","innerWidth","Math","min","r","max","toTiming","motion","type","x1","y1","x2","y2","timing","easing","duration","durationMs","spring","prefersReducedMotion","globalThis","matchMedia","matches","hiddenKeyframe","transition","extent","frame","fade","opacity","edge","distance","transform","offsetY","scale","VISIBLE_KEYFRAME","animateTransition","element","contentRoot","direction","undefined","effective","style","transformOrigin","hidden","visible","Object","keys","forEach","key","keyframes","animate","fill","animateBackdrop"],"sourceRoot":"../../../src","sources":["web/animateTransition.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["springToCssLinear","measureContentExtent","container","rects","Array","from","children","map","child","getBoundingClientRect","length","top","bottom","window","innerHeight","left","right","innerWidth","Math","min","r","max","toTiming","motion","type","x1","y1","x2","y2","timing","easing","duration","durationMs","spring","prefersReducedMotion","globalThis","matchMedia","matches","hiddenKeyframe","transition","extent","frame","fade","opacity","edge","distance","transform","offsetY","scale","VISIBLE_KEYFRAME","animateTransition","element","contentRoot","direction","undefined","effective","anchoredContent","origin","childElementCount","firstElementChild","target","HTMLElement","targetRect","style","transformOrigin","hidden","visible","Object","keys","forEach","key","keyframes","animate","fill","animateBackdrop"],"sourceRoot":"../../../src","sources":["web/animateTransition.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -78,7 +78,7 @@ export function useKeyboardShift({
|
|
|
78
78
|
top = origin + sheet.offsetTop;
|
|
79
79
|
bottom = top + sheet.offsetHeight;
|
|
80
80
|
} else {
|
|
81
|
-
const extent = layoutExtent(contentRef.current);
|
|
81
|
+
const extent = layoutExtent(sheet ?? contentRef.current);
|
|
82
82
|
if (extent) {
|
|
83
83
|
top = origin + extent.top;
|
|
84
84
|
bottom = origin + extent.bottom;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","KEYBOARD_MARGIN","computeKeyboardShift","keyboardTop","contentTop","contentBottom","isSheet","safeTop","undefined","needed","room","Math","max","min","layoutExtent","content","root","firstElementChild","children","Array","from","filter","child","HTMLElement","length","top","map","c","offsetTop","bottom","offsetHeight","useKeyboardShift","layerRef","sheetRef","contentRef","enabled","shiftRef","viewport","globalThis","visualViewport","layer","current","update","keyboardBottom","height","covered","innerHeight","origin","parentElement","getBoundingClientRect","sheet","extent","shift","abs","style","transform","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["web/useKeyboardShift.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","KEYBOARD_MARGIN","computeKeyboardShift","keyboardTop","contentTop","contentBottom","isSheet","safeTop","undefined","needed","room","Math","max","min","layoutExtent","content","root","firstElementChild","children","Array","from","filter","child","HTMLElement","length","top","map","c","offsetTop","bottom","offsetHeight","useKeyboardShift","layerRef","sheetRef","contentRef","enabled","shiftRef","viewport","globalThis","visualViewport","layer","current","update","keyboardBottom","height","covered","innerHeight","origin","parentElement","getBoundingClientRect","sheet","extent","shift","abs","style","transform","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["web/useKeyboardShift.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAGzC;AACA,OAAO,MAAMC,eAAe,GAAG,EAAE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAC;EACnCC,WAAW;EACXC,UAAU;EACVC,aAAa;EACbC,OAAO;EACPC,OAAO,GAAG;AAOZ,CAAC,EAAU;EACT,IAAIJ,WAAW,KAAKK,SAAS,EAAE;IAC7B,OAAO,CAAC;EACV;EACA,MAAMC,MAAM,GAAGH,OAAO,GAClBD,aAAa,GAAGF,WAAW,GAC3BE,aAAa,GAAGJ,eAAe,GAAGE,WAAW;EACjD,MAAMO,IAAI,GAAGN,UAAU,GAAGG,OAAO;EACjC,OAAOI,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACJ,MAAM,EAAEC,IAAI,CAAC,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA,SAASI,YAAYA,CACnBC,OAA2B,EACkB;EAC7C,MAAMC,IAAI,GAAGD,OAAO,EAAEE,iBAAmD;EACzE,IAAI,CAACD,IAAI,EAAE;IACT,OAAOR,SAAS;EAClB;EACA,MAAMU,QAAQ,GAAGC,KAAK,CAACC,IAAI,CAACJ,IAAI,CAACE,QAAQ,CAAC,CAACG,MAAM,CAC9CC,KAAK,IAA2BA,KAAK,YAAYC,WACpD,CAAC;EACD,IAAIL,QAAQ,CAACM,MAAM,KAAK,CAAC,EAAE;IACzB,OAAOhB,SAAS;EAClB;EACA,OAAO;IACLiB,GAAG,EAAEd,IAAI,CAACE,GAAG,CAAC,GAAGK,QAAQ,CAACQ,GAAG,CAAEC,CAAC,IAAKX,IAAI,CAACY,SAAS,GAAGD,CAAC,CAACC,SAAS,CAAC,CAAC;IACnEC,MAAM,EAAElB,IAAI,CAACC,GAAG,CACd,GAAGM,QAAQ,CAACQ,GAAG,CAAEC,CAAC,IAAKX,IAAI,CAACY,SAAS,GAAGD,CAAC,CAACC,SAAS,GAAGD,CAAC,CAACG,YAAY,CACtE;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,QAAQ;EACRC,QAAQ;EACRC,UAAU;EACV5B,OAAO;EACP6B;AAOF,CAAC,EAAE;EACD,MAAMC,QAAQ,GAAGpC,MAAM,CAAC,CAAC,CAAC;EAE1BD,SAAS,CAAC,MAAM;IACd,MAAMsC,QAAQ,GAAGC,UAAU,CAACC,cAAc;IAC1C,MAAMC,KAAK,GAAGR,QAAQ,CAACS,OAAO;IAC9B,IAAI,CAACJ,QAAQ,IAAI,CAACG,KAAK,IAAI,CAACL,OAAO,EAAE;MACnC;IACF;IACA,MAAMO,MAAM,GAAGA,CAAA,KAAM;MACnB,MAAMC,cAAc,GAAGN,QAAQ,CAACT,SAAS,GAAGS,QAAQ,CAACO,MAAM;MAC3D,MAAMC,OAAO,GAAGP,UAAU,CAACQ,WAAW,GAAGH,cAAc;MACvD,MAAMF,OAAO,GAAGL,QAAQ,CAACK,OAAO;MAChC;MACA;MACA;MACA,MAAMM,MAAM,GAAGP,KAAK,CAACQ,aAAa,EAAEC,qBAAqB,CAAC,CAAC,CAACxB,GAAG,IAAI,CAAC;MACpE,IAAIA,GAAG,GAAGsB,MAAM;MAChB,IAAIlB,MAAM,GAAGkB,MAAM,GAAGP,KAAK,CAACV,YAAY;MACxC,MAAMoB,KAAK,GAAGjB,QAAQ,CAACQ,OAAO;MAC9B,IAAInC,OAAO,IAAI4C,KAAK,EAAE;QACpBzB,GAAG,GAAGsB,MAAM,GAAGG,KAAK,CAACtB,SAAS;QAC9BC,MAAM,GAAGJ,GAAG,GAAGyB,KAAK,CAACpB,YAAY;MACnC,CAAC,MAAM;QACL,MAAMqB,MAAM,GAAGrC,YAAY,CAACoC,KAAK,IAAIhB,UAAU,CAACO,OAAO,CAAC;QACxD,IAAIU,MAAM,EAAE;UACV1B,GAAG,GAAGsB,MAAM,GAAGI,MAAM,CAAC1B,GAAG;UACzBI,MAAM,GAAGkB,MAAM,GAAGI,MAAM,CAACtB,MAAM;QACjC;MACF;MACA,MAAMuB,KAAK,GAAGlD,oBAAoB,CAAC;QACjCC,WAAW,EAAE0C,OAAO,GAAG,CAAC,GAAGF,cAAc,GAAGnC,SAAS;QACrDJ,UAAU,EAAEqB,GAAG;QACfpB,aAAa,EAAEwB,MAAM;QACrBvB;MACF,CAAC,CAAC;MACF,IAAIK,IAAI,CAAC0C,GAAG,CAACD,KAAK,GAAGX,OAAO,CAAC,GAAG,GAAG,EAAE;QACnC;MACF;MACAL,QAAQ,CAACK,OAAO,GAAGW,KAAK;MACxBZ,KAAK,CAACc,KAAK,CAACC,SAAS,GAAGH,KAAK,GAAG,kBAAkB,CAACA,KAAK,QAAQ,GAAG,EAAE;IACvE,CAAC;IACDf,QAAQ,CAACmB,gBAAgB,CAAC,QAAQ,EAAEd,MAAM,CAAC;IAC3CL,QAAQ,CAACmB,gBAAgB,CAAC,QAAQ,EAAEd,MAAM,CAAC;IAC3CA,MAAM,CAAC,CAAC;IACR,OAAO,MAAM;MACXL,QAAQ,CAACoB,mBAAmB,CAAC,QAAQ,EAAEf,MAAM,CAAC;MAC9CL,QAAQ,CAACoB,mBAAmB,CAAC,QAAQ,EAAEf,MAAM,CAAC;MAC9CN,QAAQ,CAACK,OAAO,GAAG,CAAC;MACpBD,KAAK,CAACc,KAAK,CAACC,SAAS,GAAG,EAAE;IAC5B,CAAC;EACH,CAAC,EAAE,CAACrB,UAAU,EAAEC,OAAO,EAAE7B,OAAO,EAAE0B,QAAQ,EAAEC,QAAQ,CAAC,CAAC;AACxD","ignoreList":[]}
|
|
@@ -116,6 +116,9 @@ export function useSheetDrag({
|
|
|
116
116
|
sheet.addEventListener('pointerup', onPointerUp);
|
|
117
117
|
sheet.addEventListener('pointercancel', onPointerUp);
|
|
118
118
|
return () => {
|
|
119
|
+
if (sheet.hasPointerCapture?.(pointerId)) {
|
|
120
|
+
sheet.releasePointerCapture(pointerId);
|
|
121
|
+
}
|
|
119
122
|
sheet.removeEventListener('pointerdown', onPointerDown);
|
|
120
123
|
sheet.removeEventListener('pointermove', onPointerMove);
|
|
121
124
|
sheet.removeEventListener('pointerup', onPointerUp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","DRAG_START_THRESHOLD","DISMISS_DISTANCE_RATIO","DISMISS_VELOCITY","UPWARD_RESISTANCE","SETTLE_TRANSITION","scrolledAncestorWithin","target","sheet","node","HTMLElement","scrollTop","scrollHeight","clientHeight","parentElement","undefined","useSheetDrag","sheetRef","backdropRef","enabled","onDismissByPan","onDismissRef","current","startY","lastY","lastTime","velocity","tracking","dragging","pointerId","setOffset","offset","style","transform","backdrop","opacity","String","Math","max","offsetHeight","onPointerDown","event","button","clientY","timeStamp","onPointerMove","dy","setPointerCapture","transition","dt","onPointerUp","height","addEventListener","clickEvent","stopPropagation","preventDefault","capture","once","removeEventListener"],"sourceRoot":"../../../src","sources":["web/useSheetDrag.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAGzC,MAAMC,oBAAoB,GAAG,CAAC;AAC9B,MAAMC,sBAAsB,GAAG,GAAG;AAClC,MAAMC,gBAAgB,GAAG,GAAG,CAAC,CAAC;AAC9B,MAAMC,iBAAiB,GAAG,GAAG;AAC7B,MAAMC,iBAAiB,GAAG,gDAAgD;AAE1E,SAASC,sBAAsBA,CAC7BC,MAA0B,EAC1BC,KAAkB,EAClB;EACA,IAAIC,IAAI,GAAGF,MAAM,YAAYG,WAAW,GAAGH,MAAM,GAAG,IAAI;EACxD,OAAOE,IAAI,IAAIA,IAAI,KAAKD,KAAK,EAAE;IAC7B,IAAIC,IAAI,CAACE,SAAS,GAAG,CAAC,IAAIF,IAAI,CAACG,YAAY,GAAGH,IAAI,CAACI,YAAY,EAAE;MAC/D,OAAOJ,IAAI;IACb;IACAA,IAAI,GAAGA,IAAI,CAACK,aAAa;EAC3B;EACA,OAAOC,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAAC;EAC3BC,QAAQ;EACRC,WAAW;EACXC,OAAO;EACPC;AAMF,CAAC,EAAE;EACD,MAAMC,YAAY,GAAGrB,MAAM,CAACoB,cAAc,CAAC;EAC3CC,YAAY,CAACC,OAAO,GAAGF,cAAc;EAErCrB,SAAS,CAAC,MAAM;IACd,MAAMS,KAAK,GAAGS,QAAQ,CAACK,OAAO;IAC9B,IAAI,CAACd,KAAK,IAAI,CAACW,OAAO,EAAE;MACtB;IACF;IACA,IAAII,MAAM,GAAG,CAAC;IACd,IAAIC,KAAK,GAAG,CAAC;IACb,IAAIC,QAAQ,GAAG,CAAC;IAChB,IAAIC,QAAQ,GAAG,CAAC;IAChB,IAAIC,QAAQ,GAAG,KAAK;IACpB,IAAIC,QAAQ,GAAG,KAAK;IACpB,IAAIC,SAAS,GAAG,CAAC,CAAC;IAElB,MAAMC,SAAS,GAAIC,MAAc,IAAK;MACpCvB,KAAK,CAACwB,KAAK,CAACC,SAAS,GAAG,kBAAkBF,MAAM,QAAQ;MACxD,MAAMG,QAAQ,GAAGhB,WAAW,CAACI,OAAO;MACpC,IAAIY,QAAQ,IAAIH,MAAM,GAAG,CAAC,EAAE;QAC1BG,QAAQ,CAACF,KAAK,CAACG,OAAO,GAAGC,MAAM,CAC7BC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAGP,MAAM,GAAGvB,KAAK,CAAC+B,YAAY,CAC7C,CAAC;MACH;IACF,CAAC;IAED,MAAMC,aAAa,GAAIC,KAAmB,IAAK;MAC7C,IAAIA,KAAK,CAACC,MAAM,KAAK,CAAC,IAAIpC,sBAAsB,CAACmC,KAAK,CAAClC,MAAM,EAAEC,KAAK,CAAC,EAAE;QACrE;MACF;MACAmB,QAAQ,GAAG,IAAI;MACfC,QAAQ,GAAG,KAAK;MAChBC,SAAS,GAAGY,KAAK,CAACZ,SAAS;MAC3BN,MAAM,GAAGkB,KAAK,CAACE,OAAO;MACtBnB,KAAK,GAAGiB,KAAK,CAACE,OAAO;MACrBlB,QAAQ,GAAGgB,KAAK,CAACG,SAAS;MAC1BlB,QAAQ,GAAG,CAAC;IACd,CAAC;IAED,MAAMmB,aAAa,GAAIJ,KAAmB,IAAK;MAC7C,IAAI,CAACd,QAAQ,IAAIc,KAAK,CAACZ,SAAS,KAAKA,SAAS,EAAE;QAC9C;MACF;MACA,MAAMiB,EAAE,GAAGL,KAAK,CAACE,OAAO,GAAGpB,MAAM;MACjC,IAAI,CAACK,QAAQ,EAAE;QACb,IAAIkB,EAAE,GAAG7C,oBAAoB,EAAE;UAC7B;QACF;QACA2B,QAAQ,GAAG,IAAI;QACfpB,KAAK,CAACuC,iBAAiB,CAAClB,SAAS,CAAC;QAClCrB,KAAK,CAACwB,KAAK,CAACgB,UAAU,GAAG,MAAM;MACjC;MACA,MAAMC,EAAE,GAAGZ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEG,KAAK,CAACG,SAAS,GAAGnB,QAAQ,CAAC;MAClDC,QAAQ,GAAG,CAACe,KAAK,CAACE,OAAO,GAAGnB,KAAK,IAAIyB,EAAE;MACvCzB,KAAK,GAAGiB,KAAK,CAACE,OAAO;MACrBlB,QAAQ,GAAGgB,KAAK,CAACG,SAAS;MAC1Bd,SAAS,CAACgB,EAAE,GAAG,CAAC,GAAGA,EAAE,GAAGA,EAAE,GAAG1C,iBAAiB,CAAC;IACjD,CAAC;IAED,MAAM8C,WAAW,GAAIT,KAAmB,IAAK;MAC3C,IAAI,CAACd,QAAQ,IAAIc,KAAK,CAACZ,SAAS,KAAKA,SAAS,EAAE;QAC9C;MACF;MACAF,QAAQ,GAAG,KAAK;MAChB,IAAI,CAACC,QAAQ,EAAE;QACb;MACF;MACAA,QAAQ,GAAG,KAAK;MAChB,MAAMkB,EAAE,GAAGL,KAAK,CAACE,OAAO,GAAGpB,MAAM;MACjC,MAAM4B,MAAM,GAAG3C,KAAK,CAAC+B,YAAY;MACjC/B,KAAK,CAACwB,KAAK,CAACgB,UAAU,GAAG3C,iBAAiB;MAC1C,IAAIyC,EAAE,GAAGK,MAAM,GAAGjD,sBAAsB,IAAIwB,QAAQ,GAAGvB,gBAAgB,EAAE;QACvE2B,SAAS,CAACqB,MAAM,CAAC;QACjB9B,YAAY,CAACC,OAAO,CAAC,CAAC;MACxB,CAAC,MAAM;QACLQ,SAAS,CAAC,CAAC,CAAC;QACZ,IAAIZ,WAAW,CAACI,OAAO,EAAE;UACvBJ,WAAW,CAACI,OAAO,CAACU,KAAK,CAACG,OAAO,GAAG,GAAG;QACzC;MACF;MACA;MACA;MACA3B,KAAK,CAAC4C,gBAAgB,CACpB,OAAO,EACNC,UAAU,IAAK;QACdA,UAAU,CAACC,eAAe,CAAC,CAAC;QAC5BD,UAAU,CAACE,cAAc,CAAC,CAAC;MAC7B,CAAC,EACD;QAAEC,OAAO,EAAE,IAAI;QAAEC,IAAI,EAAE;MAAK,CAC9B,CAAC;IACH,CAAC;IAEDjD,KAAK,CAAC4C,gBAAgB,CAAC,aAAa,EAAEZ,aAAa,CAAC;IACpDhC,KAAK,CAAC4C,gBAAgB,CAAC,aAAa,EAAEP,aAAa,CAAC;IACpDrC,KAAK,CAAC4C,gBAAgB,CAAC,WAAW,EAAEF,WAAW,CAAC;IAChD1C,KAAK,CAAC4C,gBAAgB,CAAC,eAAe,EAAEF,WAAW,CAAC;IACpD,OAAO,MAAM;
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","DRAG_START_THRESHOLD","DISMISS_DISTANCE_RATIO","DISMISS_VELOCITY","UPWARD_RESISTANCE","SETTLE_TRANSITION","scrolledAncestorWithin","target","sheet","node","HTMLElement","scrollTop","scrollHeight","clientHeight","parentElement","undefined","useSheetDrag","sheetRef","backdropRef","enabled","onDismissByPan","onDismissRef","current","startY","lastY","lastTime","velocity","tracking","dragging","pointerId","setOffset","offset","style","transform","backdrop","opacity","String","Math","max","offsetHeight","onPointerDown","event","button","clientY","timeStamp","onPointerMove","dy","setPointerCapture","transition","dt","onPointerUp","height","addEventListener","clickEvent","stopPropagation","preventDefault","capture","once","hasPointerCapture","releasePointerCapture","removeEventListener"],"sourceRoot":"../../../src","sources":["web/useSheetDrag.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayView.web.d.ts","sourceRoot":"","sources":["../../../src/OverlayView.web.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OverlayView.web.d.ts","sourceRoot":"","sources":["../../../src/OverlayView.web.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAqW5B,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,sCAiEnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverlayController.d.ts","sourceRoot":"","sources":["../../../src/useOverlayController.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EACV,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,yBAAyB,CAAC;IACrC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,CAAC;CACtE;AAQD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,GACvB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"useOverlayController.d.ts","sourceRoot":"","sources":["../../../src/useOverlayController.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EACV,4BAA4B,EAC5B,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,yBAAyB,CAAC;IACrC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,CAAC;CACtE;AAQD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,GACvB,kBAAkB,CAkJpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animateTransition.d.ts","sourceRoot":"","sources":["../../../../src/web/animateTransition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,GAAG,cAAc,CAkB3E;AA8DD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,0BAA0B,EACtC,SAAS,EAAE,IAAI,GAAG,KAAK,GACtB,SAAS,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"animateTransition.d.ts","sourceRoot":"","sources":["../../../../src/web/animateTransition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,GAAG,cAAc,CAkB3E;AA8DD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,0BAA0B,EACtC,SAAS,EAAE,IAAI,GAAG,KAAK,GACtB,SAAS,GAAG,SAAS,CA+BvB;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,IAAI,GAAG,KAAK,GACtB,SAAS,CAMX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSheetDrag.d.ts","sourceRoot":"","sources":["../../../../src/web/useSheetDrag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAsBvC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,OAAO,EACP,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3C,WAAW,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,
|
|
1
|
+
{"version":3,"file":"useSheetDrag.d.ts","sourceRoot":"","sources":["../../../../src/web/useSheetDrag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAsBvC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,OAAO,EACP,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3C,WAAW,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,QA2GA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/react-native-native-overlay",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.7.0-alpha.336",
|
|
4
4
|
"description": "Native and Web overlay hosts with ordered levels, page scope and Fabric measurement",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
package/src/OverlayView.web.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useId, useLayoutEffect, useRef } from 'react';
|
|
2
|
-
import type { ReactNode, SyntheticEvent } from 'react';
|
|
2
|
+
import type { KeyboardEvent, ReactNode, SyntheticEvent } from 'react';
|
|
3
3
|
|
|
4
4
|
import { createPortal } from 'react-dom';
|
|
5
5
|
import { StyleSheet, View } from 'react-native';
|
|
@@ -7,6 +7,7 @@ import { StyleSheet, View } from 'react-native';
|
|
|
7
7
|
import { OverlayLevelProvider } from './OverlayLevelContext';
|
|
8
8
|
import { OVERLAY_LEVEL_ORDER, isBlockingLevel } from './OverlayLevels';
|
|
9
9
|
import { OVERLAY_OWNER_ATTRIBUTE } from './OverlayPageHost.web';
|
|
10
|
+
import { overlayStore } from './OverlayStore';
|
|
10
11
|
import { useOverlayController } from './useOverlayController';
|
|
11
12
|
import { animateBackdrop, animateTransition } from './web/animateTransition';
|
|
12
13
|
import {
|
|
@@ -94,10 +95,22 @@ function WebOverlayEntry({
|
|
|
94
95
|
const keyboardLayerRef = useRef<HTMLDivElement>(null);
|
|
95
96
|
const backdropRef = useRef<HTMLDivElement>(null);
|
|
96
97
|
const directionRef = useRef<'in' | 'out' | undefined>(undefined);
|
|
98
|
+
const runningAnimationsRef = useRef<Animation[]>([]);
|
|
97
99
|
const restoreFocusRef = useRef<HTMLElement | null>(null);
|
|
98
100
|
const callbacksRef = useRef({ onPresented, onDismissed });
|
|
99
101
|
callbacksRef.current = { onPresented, onDismissed };
|
|
100
102
|
|
|
103
|
+
useLayoutEffect(() => {
|
|
104
|
+
if (!isSheet && sheetRef.current) {
|
|
105
|
+
// The host now survives a presentation switch; clear any in-flight pan.
|
|
106
|
+
sheetRef.current.style.removeProperty('transform');
|
|
107
|
+
sheetRef.current.style.removeProperty('transition');
|
|
108
|
+
if (backdropRef.current) {
|
|
109
|
+
backdropRef.current.style.opacity = '1';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}, [isSheet]);
|
|
113
|
+
|
|
101
114
|
useLayoutEffect(() => {
|
|
102
115
|
const content = contentRef.current;
|
|
103
116
|
if (!content) {
|
|
@@ -118,13 +131,12 @@ function WebOverlayEntry({
|
|
|
118
131
|
restoreFocusRef.current = document.activeElement as HTMLElement | null;
|
|
119
132
|
entryRef.current?.focus({ preventScroll: true });
|
|
120
133
|
}
|
|
121
|
-
|
|
122
|
-
backdropRef.current?.getAnimations().forEach((running) => running.cancel());
|
|
134
|
+
runningAnimationsRef.current.forEach((running) => running.cancel());
|
|
123
135
|
// A sheet is measured as a whole; other presentations by the children
|
|
124
136
|
// of the full-window React root.
|
|
125
137
|
const contentRoot = isSheet
|
|
126
138
|
? content
|
|
127
|
-
: (
|
|
139
|
+
: (sheetRef.current?.firstElementChild as HTMLElement | null) ?? content;
|
|
128
140
|
const transition = direction === 'in' ? animation.enter : animation.exit;
|
|
129
141
|
const running = [
|
|
130
142
|
animateTransition(content, contentRoot, transition, direction),
|
|
@@ -136,6 +148,7 @@ function WebOverlayEntry({
|
|
|
136
148
|
)
|
|
137
149
|
: undefined,
|
|
138
150
|
].filter((item): item is Animation => !!item);
|
|
151
|
+
runningAnimationsRef.current = running;
|
|
139
152
|
void Promise.all(running.map((item) => item.finished))
|
|
140
153
|
.then(() => {
|
|
141
154
|
if (directionRef.current !== direction) {
|
|
@@ -192,6 +205,72 @@ function WebOverlayEntry({
|
|
|
192
205
|
const showBackdrop = !!backdropColor || blocking;
|
|
193
206
|
const cornerRadius = sheet?.cornerRadius ?? DEFAULT_SHEET_CORNER_RADIUS;
|
|
194
207
|
|
|
208
|
+
const onKeyDownCapture = (event: KeyboardEvent<HTMLDivElement>) => {
|
|
209
|
+
const root = entryRef.current;
|
|
210
|
+
if (
|
|
211
|
+
event.key !== 'Tab' ||
|
|
212
|
+
event.defaultPrevented ||
|
|
213
|
+
event.nativeEvent.isComposing ||
|
|
214
|
+
!root ||
|
|
215
|
+
!presented ||
|
|
216
|
+
parked ||
|
|
217
|
+
overlayStore.getBlockingTop()?.id !== entryId
|
|
218
|
+
) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const tabbable = Array.from(
|
|
222
|
+
root.querySelectorAll<HTMLElement>(
|
|
223
|
+
'a[href], area[href], button, input:not([type="hidden"]), select, textarea, iframe, object, embed, [tabindex], [contenteditable]:not([contenteditable="false"])'
|
|
224
|
+
)
|
|
225
|
+
)
|
|
226
|
+
.filter((node) => {
|
|
227
|
+
if (
|
|
228
|
+
(node.tabIndex < 0 &&
|
|
229
|
+
(node.hasAttribute('tabindex') ||
|
|
230
|
+
!node.hasAttribute('contenteditable'))) ||
|
|
231
|
+
node.matches(':disabled')
|
|
232
|
+
) {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
for (
|
|
236
|
+
let ancestor: HTMLElement | null = node;
|
|
237
|
+
ancestor;
|
|
238
|
+
ancestor = ancestor.parentElement
|
|
239
|
+
) {
|
|
240
|
+
const style = getComputedStyle(ancestor);
|
|
241
|
+
if (
|
|
242
|
+
ancestor.inert ||
|
|
243
|
+
ancestor.hasAttribute('inert') ||
|
|
244
|
+
ancestor.hidden ||
|
|
245
|
+
ancestor.getAttribute('aria-hidden') === 'true' ||
|
|
246
|
+
style.display === 'none' ||
|
|
247
|
+
style.visibility === 'hidden'
|
|
248
|
+
) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return true;
|
|
253
|
+
})
|
|
254
|
+
.sort((a, b) => {
|
|
255
|
+
const aOrder = a.tabIndex > 0 ? a.tabIndex : Infinity;
|
|
256
|
+
const bOrder = b.tabIndex > 0 ? b.tabIndex : Infinity;
|
|
257
|
+
return aOrder === bOrder ? 0 : aOrder - bOrder;
|
|
258
|
+
});
|
|
259
|
+
const active = document.activeElement;
|
|
260
|
+
const first = tabbable[0];
|
|
261
|
+
const last = tabbable[tabbable.length - 1];
|
|
262
|
+
if (
|
|
263
|
+
!first ||
|
|
264
|
+
active === root ||
|
|
265
|
+
!root.contains(active) ||
|
|
266
|
+
active === (event.shiftKey ? first : last)
|
|
267
|
+
) {
|
|
268
|
+
event.preventDefault();
|
|
269
|
+
(event.shiftKey ? last : first)?.focus({ preventScroll: true });
|
|
270
|
+
if (!first) root.focus({ preventScroll: true });
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
|
|
195
274
|
return (
|
|
196
275
|
<div
|
|
197
276
|
ref={entryRef}
|
|
@@ -214,6 +293,7 @@ function WebOverlayEntry({
|
|
|
214
293
|
visibility: parked ? 'hidden' : undefined,
|
|
215
294
|
}}
|
|
216
295
|
{...ISOLATED_EVENT_HANDLERS}
|
|
296
|
+
onKeyDownCapture={onKeyDownCapture}
|
|
217
297
|
>
|
|
218
298
|
{showBackdrop ? (
|
|
219
299
|
<div
|
|
@@ -244,48 +324,58 @@ function WebOverlayEntry({
|
|
|
244
324
|
ref={contentRef}
|
|
245
325
|
style={{ position: 'absolute', inset: 0, pointerEvents: 'none' }}
|
|
246
326
|
>
|
|
247
|
-
{
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
327
|
+
{/* Keep both hosts and the content slot stable across presentations. */}
|
|
328
|
+
<div
|
|
329
|
+
ref={sheetRef}
|
|
330
|
+
style={
|
|
331
|
+
sheet
|
|
332
|
+
? {
|
|
333
|
+
position: 'absolute',
|
|
334
|
+
left: 0,
|
|
335
|
+
right: 0,
|
|
336
|
+
bottom: 0,
|
|
337
|
+
height: sheet.height,
|
|
338
|
+
maxHeight: sheet.maxHeight ?? DEFAULT_SHEET_MAX_HEIGHT,
|
|
339
|
+
display: 'flex',
|
|
340
|
+
flexDirection: 'column',
|
|
341
|
+
overflow: 'hidden',
|
|
342
|
+
pointerEvents: 'auto',
|
|
343
|
+
touchAction: 'pan-y',
|
|
344
|
+
background: sheet.backgroundColor
|
|
345
|
+
? String(sheet.backgroundColor)
|
|
346
|
+
: undefined,
|
|
347
|
+
borderTopLeftRadius: cornerRadius,
|
|
348
|
+
borderTopRightRadius: cornerRadius,
|
|
349
|
+
}
|
|
350
|
+
: {
|
|
351
|
+
position: 'absolute',
|
|
352
|
+
inset: 0,
|
|
353
|
+
display: 'flex',
|
|
354
|
+
flexDirection: 'column',
|
|
355
|
+
pointerEvents: 'none',
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
>
|
|
359
|
+
{sheet?.showHandle ? (
|
|
360
|
+
<div
|
|
361
|
+
style={{
|
|
362
|
+
alignSelf: 'center',
|
|
363
|
+
width: 36,
|
|
364
|
+
height: 5,
|
|
365
|
+
marginTop: 8,
|
|
366
|
+
borderRadius: 2.5,
|
|
367
|
+
background: 'rgba(0, 0, 0, 0.2)',
|
|
368
|
+
flexShrink: 0,
|
|
369
|
+
}}
|
|
370
|
+
/>
|
|
371
|
+
) : null}
|
|
372
|
+
<View
|
|
373
|
+
pointerEvents={sheet ? undefined : 'box-none'}
|
|
374
|
+
style={sheet ? { flexShrink: 1 } : StyleSheet.absoluteFill}
|
|
268
375
|
>
|
|
269
|
-
{sheet.showHandle ? (
|
|
270
|
-
<div
|
|
271
|
-
style={{
|
|
272
|
-
alignSelf: 'center',
|
|
273
|
-
width: 36,
|
|
274
|
-
height: 5,
|
|
275
|
-
marginTop: 8,
|
|
276
|
-
borderRadius: 2.5,
|
|
277
|
-
background: 'rgba(0, 0, 0, 0.2)',
|
|
278
|
-
flexShrink: 0,
|
|
279
|
-
}}
|
|
280
|
-
/>
|
|
281
|
-
) : null}
|
|
282
|
-
<View style={{ flexShrink: 1 }}>{children}</View>
|
|
283
|
-
</div>
|
|
284
|
-
) : (
|
|
285
|
-
<View pointerEvents="box-none" style={StyleSheet.absoluteFill}>
|
|
286
376
|
{children}
|
|
287
377
|
</View>
|
|
288
|
-
|
|
378
|
+
</div>
|
|
289
379
|
</div>
|
|
290
380
|
</div>
|
|
291
381
|
</div>
|
|
@@ -69,9 +69,7 @@ export function useOverlayController(
|
|
|
69
69
|
const pageScope = useOverlayPageScope();
|
|
70
70
|
const hostKey = props.hostKey ?? pageScope.hostKey;
|
|
71
71
|
const ownerKey = props.ownerKey ?? pageScope.ownerKey;
|
|
72
|
-
|
|
73
|
-
const scope =
|
|
74
|
-
props.scope === 'page' && hostKey && ownerKey ? 'page' : 'global';
|
|
72
|
+
const scope = props.scope ?? 'global';
|
|
75
73
|
const baseId = useId();
|
|
76
74
|
const cycleRef = useRef(0);
|
|
77
75
|
const [entryId, setEntryId] = useState<string | undefined>();
|
|
@@ -105,6 +103,11 @@ export function useOverlayController(
|
|
|
105
103
|
if (entryId || closedByStoreRef.current) {
|
|
106
104
|
return;
|
|
107
105
|
}
|
|
106
|
+
// Page context can become ready after the caller first opens the overlay.
|
|
107
|
+
// Keep the request in its page boundary instead of presenting globally.
|
|
108
|
+
if (scope === 'page' && (!hostKey || !ownerKey)) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
108
111
|
cycleRef.current += 1;
|
|
109
112
|
const id = `overlay-view${baseId}${cycleRef.current}`;
|
|
110
113
|
overlayStore.request(
|
|
@@ -134,7 +137,7 @@ export function useOverlayController(
|
|
|
134
137
|
setEntryId(id);
|
|
135
138
|
// Level / strategy changes apply to the next open cycle only.
|
|
136
139
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
137
|
-
}, [visible, entryId]);
|
|
140
|
+
}, [visible, entryId, scope, hostKey, ownerKey]);
|
|
138
141
|
|
|
139
142
|
useEffect(
|
|
140
143
|
() => () => {
|
|
@@ -109,16 +109,26 @@ export function animateTransition(
|
|
|
109
109
|
? { ...transition, type: 'fade', fade: true }
|
|
110
110
|
: transition;
|
|
111
111
|
const extent = measureContentExtent(contentRoot);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
// The React Native root wraps the positioned panel. Animate that panel so its
|
|
113
|
+
// offset parent stays unscaled; multi-child roots retain their shared motion.
|
|
114
|
+
const anchoredContent =
|
|
115
|
+
effective.origin === 'anchor' && contentRoot.childElementCount === 1
|
|
116
|
+
? contentRoot.firstElementChild
|
|
117
|
+
: undefined;
|
|
118
|
+
const target =
|
|
119
|
+
anchoredContent instanceof HTMLElement ? anchoredContent : element;
|
|
120
|
+
const targetRect =
|
|
121
|
+
target === element ? undefined : target.getBoundingClientRect();
|
|
122
|
+
target.style.transformOrigin = `${
|
|
123
|
+
(extent.left + extent.right) / 2 - (targetRect?.left ?? 0)
|
|
124
|
+
}px ${(extent.top + extent.bottom) / 2 - (targetRect?.top ?? 0)}px`;
|
|
115
125
|
const hidden = hiddenKeyframe(effective, extent);
|
|
116
126
|
const visible: Keyframe = {};
|
|
117
127
|
Object.keys(hidden).forEach((key) => {
|
|
118
128
|
visible[key] = VISIBLE_KEYFRAME[key];
|
|
119
129
|
});
|
|
120
130
|
const keyframes = direction === 'in' ? [hidden, visible] : [visible, hidden];
|
|
121
|
-
return
|
|
131
|
+
return target.animate(keyframes, {
|
|
122
132
|
...toTiming(effective.motion),
|
|
123
133
|
fill: 'forwards',
|
|
124
134
|
});
|
|
@@ -99,7 +99,7 @@ export function useKeyboardShift({
|
|
|
99
99
|
top = origin + sheet.offsetTop;
|
|
100
100
|
bottom = top + sheet.offsetHeight;
|
|
101
101
|
} else {
|
|
102
|
-
const extent = layoutExtent(contentRef.current);
|
|
102
|
+
const extent = layoutExtent(sheet ?? contentRef.current);
|
|
103
103
|
if (extent) {
|
|
104
104
|
top = origin + extent.top;
|
|
105
105
|
bottom = origin + extent.bottom;
|
package/src/web/useSheetDrag.ts
CHANGED
|
@@ -134,6 +134,9 @@ export function useSheetDrag({
|
|
|
134
134
|
sheet.addEventListener('pointerup', onPointerUp);
|
|
135
135
|
sheet.addEventListener('pointercancel', onPointerUp);
|
|
136
136
|
return () => {
|
|
137
|
+
if (sheet.hasPointerCapture?.(pointerId)) {
|
|
138
|
+
sheet.releasePointerCapture(pointerId);
|
|
139
|
+
}
|
|
137
140
|
sheet.removeEventListener('pointerdown', onPointerDown);
|
|
138
141
|
sheet.removeEventListener('pointermove', onPointerMove);
|
|
139
142
|
sheet.removeEventListener('pointerup', onPointerUp);
|