@onekeyfe/react-native-native-overlay 6.7.0-alpha.340 → 6.7.0-alpha.354
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/NativeOverlayAnimation.kt +5 -10
- package/android/src/main/java/com/onekey/nativeoverlay/NativeOverlayEntryRootView.kt +23 -2
- package/android/src/main/java/com/onekey/nativeoverlay/NativeOverlayHost.kt +11 -6
- package/android/src/main/java/com/onekey/nativeoverlay/NativeOverlayView.kt +3 -1
- package/android/src/test/java/com/onekey/nativeoverlay/NativeOverlayBackTest.kt +173 -0
- package/android/src/test/java/com/onekey/nativeoverlay/NativeOverlayMotionTest.kt +101 -0
- package/docs/SPEC.md +64 -13
- package/lib/module/OverlayView.web.js +34 -16
- package/lib/module/OverlayView.web.js.map +1 -1
- package/lib/module/web/overlayLayers.js +16 -0
- package/lib/module/web/overlayLayers.js.map +1 -1
- package/lib/module/web/useSheetDrag.js +19 -2
- package/lib/module/web/useSheetDrag.js.map +1 -1
- package/lib/typescript/src/OverlayView.web.d.ts.map +1 -1
- package/lib/typescript/src/web/overlayLayers.d.ts +1 -0
- package/lib/typescript/src/web/overlayLayers.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 +44 -15
- package/src/web/overlayLayers.ts +20 -0
- package/src/web/useSheetDrag.ts +20 -2
|
@@ -69,8 +69,9 @@ internal sealed class OverlayMotion {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
|
-
* Analytic step response of `m·x'' + c·x' + k·x = 0`,
|
|
73
|
-
*
|
|
72
|
+
* Analytic step response of `m·x'' + c·x' + k·x = 0`, with overdamped
|
|
73
|
+
* responses capped at critical damping to match UIKit's sheet response.
|
|
74
|
+
* Driving one ValueAnimator with it
|
|
74
75
|
* keeps alpha, translation, scale and backdrop on the same clock; androidx
|
|
75
76
|
* SpringAnimation would need one animation per property.
|
|
76
77
|
*/
|
|
@@ -89,19 +90,13 @@ internal class SpringInterpolator(private val spring: OverlayMotion.Spring) : Ti
|
|
|
89
90
|
|
|
90
91
|
fun progressAt(spring: OverlayMotion.Spring, t: Double): Double {
|
|
91
92
|
val w0 = sqrt(spring.stiffness / spring.mass)
|
|
92
|
-
val zeta = spring.damping / (2 * sqrt(spring.stiffness * spring.mass))
|
|
93
|
+
val zeta = minOf(1.0, spring.damping / (2 * sqrt(spring.stiffness * spring.mass)))
|
|
93
94
|
return when {
|
|
94
95
|
zeta < 1 -> {
|
|
95
96
|
val wd = w0 * sqrt(1 - zeta * zeta)
|
|
96
97
|
1 - exp(-zeta * w0 * t) * (cos(wd * t) + (zeta * w0 / wd) * sin(wd * t))
|
|
97
98
|
}
|
|
98
|
-
|
|
99
|
-
else -> {
|
|
100
|
-
val root = sqrt(zeta * zeta - 1)
|
|
101
|
-
val r1 = -w0 * (zeta - root)
|
|
102
|
-
val r2 = -w0 * (zeta + root)
|
|
103
|
-
1 - (r2 * exp(r1 * t) - r1 * exp(r2 * t)) / (r2 - r1)
|
|
104
|
-
}
|
|
99
|
+
else -> 1 - exp(-w0 * t) * (1 + w0 * t)
|
|
105
100
|
}
|
|
106
101
|
}
|
|
107
102
|
|
|
@@ -60,7 +60,12 @@ internal class NativeOverlayEntryRootView(
|
|
|
60
60
|
* below), non-blocking ones let it continue past the empty area.
|
|
61
61
|
*/
|
|
62
62
|
override val pointerEvents: PointerEvents
|
|
63
|
-
get() =
|
|
63
|
+
get() = when {
|
|
64
|
+
blocking && isClosing -> PointerEvents.BOX_ONLY
|
|
65
|
+
isClosing -> PointerEvents.NONE
|
|
66
|
+
blocking && isShownForInput -> PointerEvents.AUTO
|
|
67
|
+
else -> PointerEvents.BOX_NONE
|
|
68
|
+
}
|
|
64
69
|
var stackOrder = 0
|
|
65
70
|
var levelOrder = 0
|
|
66
71
|
/** Page scope: the owning page, used by the page host to hide the entry. */
|
|
@@ -74,6 +79,19 @@ internal class NativeOverlayEntryRootView(
|
|
|
74
79
|
var dismissOnBackPress = true
|
|
75
80
|
var dismissOnBackdropPress = false
|
|
76
81
|
var isShownForInput = false
|
|
82
|
+
private var contentAccessibilityBeforeClose: Int? = null
|
|
83
|
+
var isClosing = false
|
|
84
|
+
set(value) {
|
|
85
|
+
if (field == value) return
|
|
86
|
+
field = value
|
|
87
|
+
if (value) {
|
|
88
|
+
contentAccessibilityBeforeClose = contentView.importantForAccessibility
|
|
89
|
+
contentView.importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
|
|
90
|
+
} else {
|
|
91
|
+
contentAccessibilityBeforeClose?.let { contentView.importantForAccessibility = it }
|
|
92
|
+
contentAccessibilityBeforeClose = null
|
|
93
|
+
}
|
|
94
|
+
}
|
|
77
95
|
var onRequestDismiss: ((String) -> Unit)? = null
|
|
78
96
|
|
|
79
97
|
val backdropView = View(reactContext).apply { alpha = 0f }
|
|
@@ -90,12 +108,13 @@ internal class NativeOverlayEntryRootView(
|
|
|
90
108
|
/** `sheet` presentation: the draggable surface; otherwise null. */
|
|
91
109
|
var sheetView: FrameLayout? = null
|
|
92
110
|
private set
|
|
111
|
+
private var sheetAnimationView: CoordinatorLayout? = null
|
|
93
112
|
private var sheetBehavior: BottomSheetBehavior<FrameLayout>? = null
|
|
94
113
|
private var handleView: View? = null
|
|
95
114
|
var onSheetHiddenByPan: (() -> Unit)? = null
|
|
96
115
|
|
|
97
116
|
/** The view that enter / exit animations move. */
|
|
98
|
-
val animatedView: View get() =
|
|
117
|
+
val animatedView: View get() = sheetAnimationView ?: contentView
|
|
99
118
|
|
|
100
119
|
private val touchDispatcher = JSTouchDispatcher(this)
|
|
101
120
|
private val pointerDispatcher = if (ReactFeatureFlags.dispatchPointerEvents) {
|
|
@@ -220,6 +239,7 @@ internal class NativeOverlayEntryRootView(
|
|
|
220
239
|
},
|
|
221
240
|
)
|
|
222
241
|
sheetView = sheet
|
|
242
|
+
sheetAnimationView = coordinator
|
|
223
243
|
sheetBehavior = behavior
|
|
224
244
|
handleView = handle
|
|
225
245
|
return sheet
|
|
@@ -350,6 +370,7 @@ internal class NativeOverlayEntryRootView(
|
|
|
350
370
|
}
|
|
351
371
|
|
|
352
372
|
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
|
|
373
|
+
if (isClosing) return blocking
|
|
353
374
|
if (!isShownForInput) return false
|
|
354
375
|
if (event.actionMasked == MotionEvent.ACTION_DOWN) {
|
|
355
376
|
// Non-blocking overlays (toasts) only take touches that land on content.
|
|
@@ -8,6 +8,7 @@ import android.widget.FrameLayout
|
|
|
8
8
|
import androidx.activity.ComponentActivity
|
|
9
9
|
import androidx.activity.OnBackPressedCallback
|
|
10
10
|
import java.util.WeakHashMap
|
|
11
|
+
import java.lang.ref.WeakReference
|
|
11
12
|
|
|
12
13
|
/** Mirrors `OVERLAY_LEVEL_ORDER`. */
|
|
13
14
|
internal enum class NativeOverlayLevel(val order: Int) {
|
|
@@ -49,7 +50,7 @@ internal class NativeOverlayHost private constructor(
|
|
|
49
50
|
private val backCallback = object : OnBackPressedCallback(false) {
|
|
50
51
|
override fun handleOnBackPressed() {
|
|
51
52
|
topBackEntry()?.let { entry ->
|
|
52
|
-
if (entry.dismissOnBackPress) entry.onRequestDismiss?.invoke("back")
|
|
53
|
+
if (!entry.isClosing && entry.dismissOnBackPress) entry.onRequestDismiss?.invoke("back")
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
}
|
|
@@ -67,7 +68,7 @@ internal class NativeOverlayHost private constructor(
|
|
|
67
68
|
*/
|
|
68
69
|
fun handleBackKey(event: KeyEvent): Boolean {
|
|
69
70
|
val entry = topBackEntry() ?: return false
|
|
70
|
-
if (event.action == KeyEvent.ACTION_UP && !event.isCanceled && entry.dismissOnBackPress) {
|
|
71
|
+
if (event.action == KeyEvent.ACTION_UP && !event.isCanceled && !entry.isClosing && entry.dismissOnBackPress) {
|
|
71
72
|
entry.onRequestDismiss?.invoke("back")
|
|
72
73
|
}
|
|
73
74
|
return true
|
|
@@ -134,10 +135,12 @@ internal class NativeOverlayHost private constructor(
|
|
|
134
135
|
|
|
135
136
|
/** Global overlays win; otherwise the topmost visible page overlay. */
|
|
136
137
|
private fun topBackEntry(): NativeOverlayEntryRootView? =
|
|
137
|
-
orderedEntries().lastOrNull {
|
|
138
|
+
orderedEntries().lastOrNull {
|
|
139
|
+
(it.blocking || it.dismissOnBackPress) && it.isShownForInput && (!it.isClosing || it.blocking)
|
|
140
|
+
}
|
|
138
141
|
?: shownPageHosts()
|
|
139
142
|
.flatMap { it.shownEntries() }
|
|
140
|
-
.lastOrNull { it.blocking || it.dismissOnBackPress }
|
|
143
|
+
.lastOrNull { (it.blocking || it.dismissOnBackPress) && (!it.isClosing || it.blocking) }
|
|
141
144
|
|
|
142
145
|
private fun shownPageHosts(): List<NativeOverlayPageHostView> =
|
|
143
146
|
NativeOverlayPageHostView.allHosts().filter {
|
|
@@ -160,9 +163,11 @@ internal class NativeOverlayHost private constructor(
|
|
|
160
163
|
}
|
|
161
164
|
|
|
162
165
|
companion object {
|
|
163
|
-
private val hosts = WeakHashMap<Activity, NativeOverlayHost
|
|
166
|
+
private val hosts = WeakHashMap<Activity, WeakReference<NativeOverlayHost>>()
|
|
164
167
|
|
|
165
168
|
fun of(activity: Activity): NativeOverlayHost =
|
|
166
|
-
hosts
|
|
169
|
+
hosts[activity]?.get() ?: NativeOverlayHost(activity).also {
|
|
170
|
+
hosts[activity] = WeakReference(it)
|
|
171
|
+
}
|
|
167
172
|
}
|
|
168
173
|
}
|
|
@@ -200,6 +200,7 @@ class NativeOverlayView(
|
|
|
200
200
|
}
|
|
201
201
|
cancelAnimators()
|
|
202
202
|
phase = Phase.ENTERING
|
|
203
|
+
target.isClosing = false
|
|
203
204
|
target.isShownForInput = true
|
|
204
205
|
notifyHostEntriesChanged()
|
|
205
206
|
if (blocking) {
|
|
@@ -226,7 +227,7 @@ class NativeOverlayView(
|
|
|
226
227
|
val target = entry ?: return finishDismiss("programmatic")
|
|
227
228
|
cancelAnimators()
|
|
228
229
|
phase = Phase.EXITING
|
|
229
|
-
target.
|
|
230
|
+
target.isClosing = true
|
|
230
231
|
notifyHostEntriesChanged()
|
|
231
232
|
val transition = config.exit.reduceMotionAdjusted(isReduceMotionEnabled())
|
|
232
233
|
if (transition.kind == "none") return finishDismiss("programmatic")
|
|
@@ -241,6 +242,7 @@ class NativeOverlayView(
|
|
|
241
242
|
phase = Phase.HIDDEN
|
|
242
243
|
entry?.let { target ->
|
|
243
244
|
target.isShownForInput = false
|
|
245
|
+
target.isClosing = false
|
|
244
246
|
stageContent()
|
|
245
247
|
host?.detach(target)
|
|
246
248
|
pageHost?.detach(target)
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
package com.onekey.nativeoverlay
|
|
2
2
|
|
|
3
3
|
import android.view.KeyEvent
|
|
4
|
+
import android.view.MotionEvent
|
|
4
5
|
import android.view.View
|
|
5
6
|
import android.widget.FrameLayout
|
|
6
7
|
import androidx.activity.ComponentActivity
|
|
7
8
|
import com.facebook.react.bridge.BridgeReactContext
|
|
9
|
+
import com.facebook.react.uimanager.PointerEvents
|
|
8
10
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
11
|
+
import com.facebook.react.uimanager.TouchTargetHelper
|
|
12
|
+
import com.facebook.react.views.view.ReactViewGroup
|
|
13
|
+
import java.lang.ref.WeakReference
|
|
14
|
+
import java.util.WeakHashMap
|
|
9
15
|
import org.junit.Assert.assertEquals
|
|
10
16
|
import org.junit.Assert.assertFalse
|
|
17
|
+
import org.junit.Assert.assertNotSame
|
|
18
|
+
import org.junit.Assert.assertSame
|
|
11
19
|
import org.junit.Assert.assertTrue
|
|
12
20
|
import org.junit.Before
|
|
13
21
|
import org.junit.Test
|
|
@@ -119,4 +127,169 @@ class NativeOverlayBackTest {
|
|
|
119
127
|
assertEquals(listOf("global:back", "page:back"), dismissals)
|
|
120
128
|
pageHost.invalidateHost()
|
|
121
129
|
}
|
|
130
|
+
|
|
131
|
+
@Test
|
|
132
|
+
fun closingGlobalBlockerKeepsTouchBackAndAccessibilityOwnership() {
|
|
133
|
+
var pageTouches = 0
|
|
134
|
+
val page = View(activity).apply {
|
|
135
|
+
setOnTouchListener { _, _ ->
|
|
136
|
+
pageTouches += 1
|
|
137
|
+
true
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
activity.setContentView(page)
|
|
141
|
+
val lower = entry("lower", true, true)
|
|
142
|
+
val top = entry("top", true, true, 1)
|
|
143
|
+
host.attach(lower, NativeOverlayLevel.MODAL)
|
|
144
|
+
host.attach(top, NativeOverlayLevel.MODAL)
|
|
145
|
+
top.isClosing = true
|
|
146
|
+
host.onEntriesChanged()
|
|
147
|
+
|
|
148
|
+
assertEquals(PointerEvents.BOX_ONLY, top.pointerEvents)
|
|
149
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, top.contentView.importantForAccessibility)
|
|
150
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, page.importantForAccessibility)
|
|
151
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, lower.importantForAccessibility)
|
|
152
|
+
assertTrue(back())
|
|
153
|
+
assertEquals(emptyList<String>(), dismissals)
|
|
154
|
+
|
|
155
|
+
val content = activity.findViewById<FrameLayout>(android.R.id.content)
|
|
156
|
+
val size = View.MeasureSpec.makeMeasureSpec(300, View.MeasureSpec.EXACTLY)
|
|
157
|
+
content.measure(size, size)
|
|
158
|
+
content.layout(0, 0, 300, 300)
|
|
159
|
+
val down = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, 150f, 150f, 0)
|
|
160
|
+
try {
|
|
161
|
+
assertTrue(content.dispatchTouchEvent(down))
|
|
162
|
+
assertEquals(0, pageTouches)
|
|
163
|
+
} finally {
|
|
164
|
+
down.recycle()
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
top.isClosing = false
|
|
168
|
+
host.onEntriesChanged()
|
|
169
|
+
assertEquals(PointerEvents.AUTO, top.pointerEvents)
|
|
170
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, top.contentView.importantForAccessibility)
|
|
171
|
+
assertTrue(back())
|
|
172
|
+
assertEquals(listOf("top:back"), dismissals)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
@Test
|
|
176
|
+
fun closingPageBlockerStillTakesBack() {
|
|
177
|
+
val pageHost = NativeOverlayPageHostView(context).apply { hostKey = "closing-page" }
|
|
178
|
+
activity.setContentView(pageHost)
|
|
179
|
+
val top = entry("page", true, true)
|
|
180
|
+
pageHost.attach(top)
|
|
181
|
+
top.isClosing = true
|
|
182
|
+
host.onEntriesChanged()
|
|
183
|
+
|
|
184
|
+
assertEquals(PointerEvents.BOX_ONLY, top.pointerEvents)
|
|
185
|
+
assertTrue(back())
|
|
186
|
+
assertEquals(emptyList<String>(), dismissals)
|
|
187
|
+
top.isClosing = false
|
|
188
|
+
host.onEntriesChanged()
|
|
189
|
+
assertEquals(PointerEvents.AUTO, top.pointerEvents)
|
|
190
|
+
assertTrue(back())
|
|
191
|
+
assertEquals(listOf("page:back"), dismissals)
|
|
192
|
+
pageHost.invalidateHost()
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@Test
|
|
196
|
+
fun pageEntryHitTestingKeepsClosingContentAndLowerPageSeparate() {
|
|
197
|
+
val root = ReactViewGroup(context).apply { id = 101 }
|
|
198
|
+
val below = ReactViewGroup(context).apply { id = 102 }
|
|
199
|
+
val child = ReactViewGroup(context).apply { id = 103 }
|
|
200
|
+
val pageHost = NativeOverlayPageHostView(context).apply { hostKey = "page-hit-test" }
|
|
201
|
+
root.addView(below)
|
|
202
|
+
root.addView(pageHost)
|
|
203
|
+
activity.setContentView(root)
|
|
204
|
+
val overlay = entry("page", true, true)
|
|
205
|
+
overlay.contentView.addView(child)
|
|
206
|
+
pageHost.attach(overlay)
|
|
207
|
+
|
|
208
|
+
val size = View.MeasureSpec.makeMeasureSpec(300, View.MeasureSpec.EXACTLY)
|
|
209
|
+
root.measure(size, size)
|
|
210
|
+
root.layout(0, 0, 300, 300)
|
|
211
|
+
below.layout(0, 0, 300, 300)
|
|
212
|
+
pageHost.layout(0, 0, 300, 300)
|
|
213
|
+
child.layout(0, 0, 300, 300)
|
|
214
|
+
|
|
215
|
+
fun target() = TouchTargetHelper.findTargetTagForTouch(150f, 150f, root)
|
|
216
|
+
assertEquals(child.id, target())
|
|
217
|
+
overlay.isClosing = true
|
|
218
|
+
assertEquals(root.id, target())
|
|
219
|
+
overlay.updateBlocking(false)
|
|
220
|
+
assertEquals(below.id, target())
|
|
221
|
+
overlay.updateBlocking(true)
|
|
222
|
+
overlay.isClosing = false
|
|
223
|
+
assertEquals(child.id, target())
|
|
224
|
+
pageHost.invalidateHost()
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
@Test
|
|
228
|
+
fun reopeningCoveredClosingEntryRestoresItsContentAccessibility() {
|
|
229
|
+
activity.setContentView(View(activity))
|
|
230
|
+
val first = entry("first", true, true)
|
|
231
|
+
val second = entry("second", true, true)
|
|
232
|
+
host.attach(first, NativeOverlayLevel.MODAL)
|
|
233
|
+
first.isClosing = true
|
|
234
|
+
host.onEntriesChanged()
|
|
235
|
+
host.attach(second, NativeOverlayLevel.SECURE)
|
|
236
|
+
|
|
237
|
+
first.isClosing = false
|
|
238
|
+
host.onEntriesChanged()
|
|
239
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, first.importantForAccessibility)
|
|
240
|
+
host.detach(second)
|
|
241
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, first.importantForAccessibility)
|
|
242
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, first.contentView.importantForAccessibility)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
@Test
|
|
246
|
+
fun closingNonBlockingEntryPassesTouchAndBackToLowerBlocker() {
|
|
247
|
+
val lower = entry("lower", true, true)
|
|
248
|
+
val toast = entry("toast", false, true)
|
|
249
|
+
host.attach(lower, NativeOverlayLevel.MODAL)
|
|
250
|
+
host.attach(toast, NativeOverlayLevel.TOAST)
|
|
251
|
+
toast.isClosing = true
|
|
252
|
+
host.onEntriesChanged()
|
|
253
|
+
|
|
254
|
+
assertEquals(PointerEvents.NONE, toast.pointerEvents)
|
|
255
|
+
val down = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, 150f, 150f, 0)
|
|
256
|
+
try {
|
|
257
|
+
assertFalse(toast.dispatchTouchEvent(down))
|
|
258
|
+
} finally {
|
|
259
|
+
down.recycle()
|
|
260
|
+
}
|
|
261
|
+
assertTrue(back())
|
|
262
|
+
assertEquals(listOf("lower:back"), dismissals)
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
@Test
|
|
266
|
+
fun hostCacheReusesLiveHostAndSeparatesActivities() {
|
|
267
|
+
assertSame(host, NativeOverlayHost.of(activity))
|
|
268
|
+
val otherActivity = Robolectric.buildActivity(ComponentActivity::class.java).setup().get()
|
|
269
|
+
assertNotSame(host, NativeOverlayHost.of(otherActivity))
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
@Test
|
|
273
|
+
fun hostCacheRebuildsAfterWeakValueIsCleared() {
|
|
274
|
+
val field = NativeOverlayHost::class.java.getDeclaredField("hosts").apply {
|
|
275
|
+
isAccessible = true
|
|
276
|
+
}
|
|
277
|
+
val cache = field.get(null) as WeakHashMap<*, *>
|
|
278
|
+
(cache[activity] as WeakReference<*>).clear()
|
|
279
|
+
val replacement = NativeOverlayHost.of(activity)
|
|
280
|
+
assertNotSame(host, replacement)
|
|
281
|
+
assertSame(replacement, NativeOverlayHost.of(activity))
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
@Test
|
|
285
|
+
fun pageOnlyBackInterceptorRetainsItsHost() {
|
|
286
|
+
val pageHost = NativeOverlayPageHostView(context).apply { hostKey = "page-only" }
|
|
287
|
+
activity.setContentView(pageHost)
|
|
288
|
+
pageHost.attach(entry("page", false, true))
|
|
289
|
+
host.installBackInterceptor()
|
|
290
|
+
assertTrue(activity.window.callback.dispatchKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)))
|
|
291
|
+
assertEquals(listOf("page:back"), dismissals)
|
|
292
|
+
assertSame(host, NativeOverlayHost.of(activity))
|
|
293
|
+
pageHost.invalidateHost()
|
|
294
|
+
}
|
|
122
295
|
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
package com.onekey.nativeoverlay
|
|
2
|
+
|
|
3
|
+
import android.graphics.Color
|
|
4
|
+
import android.os.Looper
|
|
5
|
+
import android.view.View
|
|
6
|
+
import androidx.activity.ComponentActivity
|
|
7
|
+
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
8
|
+
import com.facebook.react.bridge.BridgeReactContext
|
|
9
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
10
|
+
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
11
|
+
import org.junit.Assert.assertEquals
|
|
12
|
+
import org.junit.Assert.assertFalse
|
|
13
|
+
import org.junit.Assert.assertNotSame
|
|
14
|
+
import org.junit.Assert.assertSame
|
|
15
|
+
import org.junit.Assert.assertTrue
|
|
16
|
+
import org.junit.Test
|
|
17
|
+
import org.junit.runner.RunWith
|
|
18
|
+
import org.robolectric.Robolectric
|
|
19
|
+
import org.robolectric.RobolectricTestRunner
|
|
20
|
+
import org.robolectric.Shadows
|
|
21
|
+
import org.robolectric.annotation.Config
|
|
22
|
+
import java.time.Duration
|
|
23
|
+
|
|
24
|
+
@RunWith(RobolectricTestRunner::class)
|
|
25
|
+
@Config(sdk = [34])
|
|
26
|
+
class NativeOverlayMotionTest {
|
|
27
|
+
@Test
|
|
28
|
+
fun sheetAnimationMovesCoordinatorWithoutTakingMaterialsSheetTranslation() {
|
|
29
|
+
val activity = Robolectric.buildActivity(ComponentActivity::class.java).setup().get()
|
|
30
|
+
val reactContext = BridgeReactContext(activity)
|
|
31
|
+
reactContext.onHostResume(activity)
|
|
32
|
+
val context = ThemedReactContext(reactContext, activity, "OverlayMotionTest", 1)
|
|
33
|
+
val entry = NativeOverlayEntryRootView(context)
|
|
34
|
+
assertSame(entry.contentView, entry.animatedView)
|
|
35
|
+
|
|
36
|
+
entry.configureSheet(500, 16f, Color.WHITE, showHandle = true, draggable = true)
|
|
37
|
+
val sheet = entry.sheetView!!
|
|
38
|
+
val animated = entry.animatedView
|
|
39
|
+
assertTrue(animated is CoordinatorLayout)
|
|
40
|
+
assertSame(animated, sheet.parent)
|
|
41
|
+
assertNotSame(sheet, animated)
|
|
42
|
+
assertTrue((sheet.layoutParams as CoordinatorLayout.LayoutParams).behavior is BottomSheetBehavior<*>)
|
|
43
|
+
|
|
44
|
+
animated.translationY = 42f
|
|
45
|
+
assertEquals(0f, sheet.translationY)
|
|
46
|
+
sheet.translationY = 7f
|
|
47
|
+
assertEquals(42f, animated.translationY)
|
|
48
|
+
assertEquals(7f, sheet.translationY)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Test
|
|
52
|
+
fun quickMatchesMeasuredCriticalResponseWithoutChangingUnderdampedResponse() {
|
|
53
|
+
val quick = OverlayMotion.QUICK
|
|
54
|
+
assertEquals(292L, quick.durationMs())
|
|
55
|
+
assertEquals(0.8238140348, SpringInterpolator.progressAt(quick, 0.1), 0.000001)
|
|
56
|
+
assertEquals(0.9990003945, SpringInterpolator.progressAt(quick, 0.292), 0.000001)
|
|
57
|
+
|
|
58
|
+
val underdamped = OverlayMotion.Spring(1.0, 100.0, 5.0)
|
|
59
|
+
assertEquals(0.3929451508, SpringInterpolator.progressAt(underdamped, 0.1), 0.000001)
|
|
60
|
+
val timing = OverlayMotion.Timing(250L, 0.25f, 0.1f, 0.25f, 1f)
|
|
61
|
+
assertEquals(250L, timing.durationMs())
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@Test
|
|
65
|
+
fun reopeningTheSameEntryDuringExitRetargetsItsAnimation() {
|
|
66
|
+
val activity = Robolectric.buildActivity(ComponentActivity::class.java).setup().visible().get()
|
|
67
|
+
val reactContext = BridgeReactContext(activity)
|
|
68
|
+
reactContext.onHostResume(activity)
|
|
69
|
+
val context = ThemedReactContext(reactContext, activity, "OverlayMotionTest", 1)
|
|
70
|
+
val overlay = NativeOverlayView(context).apply {
|
|
71
|
+
presentation = "sheet"
|
|
72
|
+
sheetHeight = 200.0
|
|
73
|
+
addReactChild(View(context))
|
|
74
|
+
}
|
|
75
|
+
activity.setContentView(overlay)
|
|
76
|
+
var dismissals = 0
|
|
77
|
+
overlay.onDismissed = { dismissals++ }
|
|
78
|
+
overlay.visible = true
|
|
79
|
+
overlay.commitConfiguration()
|
|
80
|
+
|
|
81
|
+
val entryField = NativeOverlayView::class.java.getDeclaredField("entry").apply { isAccessible = true }
|
|
82
|
+
val original = entryField.get(overlay) as NativeOverlayEntryRootView
|
|
83
|
+
overlay.visible = false
|
|
84
|
+
overlay.commitConfiguration()
|
|
85
|
+
assertTrue(original.isClosing)
|
|
86
|
+
|
|
87
|
+
overlay.visible = true
|
|
88
|
+
overlay.commitConfiguration()
|
|
89
|
+
assertSame(original, entryField.get(overlay))
|
|
90
|
+
assertTrue(original.isShownForInput)
|
|
91
|
+
assertFalse(original.isClosing)
|
|
92
|
+
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, original.contentView.importantForAccessibility)
|
|
93
|
+
Shadows.shadowOf(Looper.getMainLooper()).idleFor(Duration.ofMillis(350))
|
|
94
|
+
assertEquals(0, dismissals)
|
|
95
|
+
|
|
96
|
+
overlay.visible = false
|
|
97
|
+
overlay.commitConfiguration()
|
|
98
|
+
Shadows.shadowOf(Looper.getMainLooper()).idleFor(Duration.ofMillis(350))
|
|
99
|
+
assertEquals(1, dismissals)
|
|
100
|
+
}
|
|
101
|
+
}
|
package/docs/SPEC.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# react-native-native-overlay SPEC
|
|
2
2
|
|
|
3
3
|
Status: Implemented through the P5 caller migration in app-monorepo. Android
|
|
4
|
-
and Web runtime checks passed there; iOS
|
|
5
|
-
|
|
4
|
+
and Web runtime checks passed there; focused iOS 26.5 simulator and Android 16
|
|
5
|
+
emulator checks are recorded below. Broader iOS runtime, physical-device and
|
|
6
|
+
iPad acceptance remain unverified. Packaging in app-modules is validated
|
|
7
|
+
separately.
|
|
6
8
|
|
|
7
9
|
The implementation is migrated from app-monorepo commit
|
|
8
10
|
`376633bd9f1c410dbccb01fb6a0492be9a5c3f38`, package
|
|
@@ -39,13 +41,15 @@ attribution in source comments.
|
|
|
39
41
|
|
|
40
42
|
### Release boundary
|
|
41
43
|
|
|
42
|
-
The earlier `3.0.162-alpha.272` release remains immutable. This branch
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
The earlier `3.0.162-alpha.272` release remains immutable. This branch is
|
|
45
|
+
prepared at `6.7.0-9`: the repository's release validator requires all 43
|
|
46
|
+
publishable workspace manifests and exact internal pins to use the same
|
|
47
|
+
version. Publish only `@onekeyfe/react-native-native-overlay` through the
|
|
48
|
+
manual `package-publish` workflow with `npm_dist_tag=latest` and
|
|
49
|
+
`only_workspace=@onekeyfe/react-native-native-overlay`; verify that exact
|
|
50
|
+
registry tarball before the App pins it and refreshes its dependency and native
|
|
51
|
+
locks. The other workspace version changes are release metadata, not a request
|
|
52
|
+
to publish their packages in this run. Leave the source PR open for review.
|
|
49
53
|
|
|
50
54
|
## 5.1 Purpose, scope, and non-goals
|
|
51
55
|
|
|
@@ -90,6 +94,9 @@ Ownership:
|
|
|
90
94
|
queues, page visibility, and back/Escape resolution.
|
|
91
95
|
- **Native hosts** own drawing, hit testing, animation, keyboard, and back-key
|
|
92
96
|
capture, and report lifecycle back to the store.
|
|
97
|
+
- Android's static host lookup holds weak Activity keys and weak host values;
|
|
98
|
+
an active overlay or installed back callback owns its host. The lookup does
|
|
99
|
+
not itself extend the lifetime of an Activity.
|
|
93
100
|
- **Content** is the caller's React subtree. The overlay view stays where the
|
|
94
101
|
caller rendered it. Native code reparents its content into the host, so React
|
|
95
102
|
context is preserved; there is no root-siblings portal.
|
|
@@ -165,8 +172,20 @@ visible)`, `removePage(ownerKey)`.
|
|
|
165
172
|
- `motion` is a preset name or a concrete `{ type: 'spring', spring: { mass, stiffness, damping, overshootClamping } }`
|
|
166
173
|
or `{ type: 'timing', timing: { durationMs, easing: cubicBezier } }`.
|
|
167
174
|
- Presets are resolved per platform:
|
|
168
|
-
- Native
|
|
169
|
-
|
|
175
|
+
- Native `quick` supplies spring m 0.1, k 100, c 20. The iOS sheet's
|
|
176
|
+
measured position and dimming response use the critically damped curve
|
|
177
|
+
at angular frequency `sqrt(k/m)`; UIKit reports an animator duration near
|
|
178
|
+
292 ms. Android caps an overdamped spring's effective damping ratio at 1
|
|
179
|
+
while preserving m and k; underdamped and timing motions retain their
|
|
180
|
+
existing response. This rule
|
|
181
|
+
also applies to custom overdamped springs as a platform compatibility
|
|
182
|
+
inference; only the default `quick` sheet path has been measured on iOS.
|
|
183
|
+
Android's implementation is covered by native tests. In the consumer
|
|
184
|
+
shells, the default `quick` Dialog and ActionList sheet enter/exit motion
|
|
185
|
+
and dimming were compared over three cycles per direction on Android 16
|
|
186
|
+
and iOS 26.5; their normalized visible curves met the recorded parity
|
|
187
|
+
tolerance. This does not verify custom springs, exact cross-device
|
|
188
|
+
rectangles, or callback timing.
|
|
170
189
|
- Web mirrors the CSS driver: `quick` is 150 ms `cubic-bezier(.25,.1,.25,1)`.
|
|
171
190
|
- Converting native springs for web is opt-in (`springToCssLinear`), because
|
|
172
191
|
it would slow web overlays down 4–9×.
|
|
@@ -180,6 +199,13 @@ visible)`, `removePage(ownerKey)`.
|
|
|
180
199
|
| fullscreen | fade, `quick` | none |
|
|
181
200
|
| anchored | scale 0.95 + fade from the resolved anchor placement, `popoverQuick` | fade |
|
|
182
201
|
|
|
202
|
+
- **Android sheet transform ownership (Implemented; Android 16 consumer-shell runtime verified):**
|
|
203
|
+
the overlay's enter/exit transform belongs to the sheet's CoordinatorLayout
|
|
204
|
+
parent. Material's IME insets callback owns the child sheet's `translationY`,
|
|
205
|
+
and the keyboard layer owns the IME avoidance lift. These transforms compose
|
|
206
|
+
while the child sheet remains the BottomSheetBehavior drag target. The
|
|
207
|
+
overlay must not animate the child sheet's `translationY` during IME motion.
|
|
208
|
+
|
|
183
209
|
- Special cases the callers set explicitly:
|
|
184
210
|
- App lock: `enter: none`, `exit: fade lockFade`. The web tamper check reloads
|
|
185
211
|
the page if the lock fades in from opacity 0.
|
|
@@ -213,6 +239,22 @@ request ─► queued ─► active ─► (enter anim) presented
|
|
|
213
239
|
its current value. It does not restart.
|
|
214
240
|
- `onRemoved` fires exactly once per entry, even when a finalize and the
|
|
215
241
|
timeout race.
|
|
242
|
+
- **Android exit ownership (Implemented; blocking page/global touch and global
|
|
243
|
+
Back runtime verified on Android 16; accessibility native-test verified,
|
|
244
|
+
TalkBack device verification pending):** A
|
|
245
|
+
blocking entry keeps ownership of touch, Back, and accessibility isolation
|
|
246
|
+
until its exit animation completes and the native host detaches it. During
|
|
247
|
+
exit, the entry consumes touches and Back without forwarding them to its
|
|
248
|
+
closing React content or requesting a
|
|
249
|
+
second dismissal. Its content is hidden from TalkBack while lower content
|
|
250
|
+
remains isolated. A reopen during exit restores content input and
|
|
251
|
+
accessibility without briefly exposing the page below. Closing non-blocking
|
|
252
|
+
entries pass through touch and Back to the entry below.
|
|
253
|
+
Consumer-shell recordings verify that page and global blocking entries keep
|
|
254
|
+
lower touch targets inert during their visible exit, then release them, and
|
|
255
|
+
that Back does not navigate beneath a closing global entry. Native tests
|
|
256
|
+
cover closing non-blocking entries and same-entry reopen; those paths and
|
|
257
|
+
TalkBack reading during exit have not been verified on device.
|
|
216
258
|
- Page entries:
|
|
217
259
|
- They are suspended (hidden but kept) while the owner page is covered or
|
|
218
260
|
detached.
|
|
@@ -363,7 +405,8 @@ Automated (P0):
|
|
|
363
405
|
- `NativeOverlayBackTest` exercises the Android host's key interceptor and
|
|
364
406
|
Back dispatcher with actual entry/page views: dismissible non-blockers,
|
|
365
407
|
blockers, input readiness, canceled key-up, global/page precedence,
|
|
366
|
-
suspension and blocking-only accessibility isolation.
|
|
408
|
+
suspension and blocking-only accessibility isolation. It also checks live
|
|
409
|
+
host reuse, Activity isolation and rebuilding after a cleared weak value.
|
|
367
410
|
- `src/__tests__/pageIsolation.web.test.ts` mounts a real React portal in a
|
|
368
411
|
DOM host and verifies late suspension, level ordering and restoration after
|
|
369
412
|
the blocking entry is removed.
|
|
@@ -435,6 +478,10 @@ P3 page scope notes:
|
|
|
435
478
|
topmost visible page overlay.
|
|
436
479
|
- A declarative page overlay waits for a resolvable host and owner; it never
|
|
437
480
|
falls back to global scope. Direct store requests require both keys.
|
|
481
|
+
- On Web, a page overlay also waits for its registered DOM host while closed
|
|
482
|
+
with `keepContentMounted`. Registration mounts parked content in that host;
|
|
483
|
+
close/reopen retains the same DOM and state. Unregistration never moves page
|
|
484
|
+
content into a global layer.
|
|
438
485
|
|
|
439
486
|
P2 sheet notes:
|
|
440
487
|
|
|
@@ -449,7 +496,11 @@ P2 sheet notes:
|
|
|
449
496
|
overlay motion; dragging fades the backdrop; a drag to hidden reports
|
|
450
497
|
`pan`.
|
|
451
498
|
- Web renders a bottom surface with pointer drag (40% distance or 0.5 px/ms
|
|
452
|
-
flick dismisses, never from scrolled content).
|
|
499
|
+
flick dismisses, never from scrolled content). Reopening kept content after
|
|
500
|
+
a pan dismissal clears the sheet transform, transition and backdrop opacity;
|
|
501
|
+
the next dismissal follows the normal exit path and restores focus.
|
|
502
|
+
Cancelling a tracked pointer resets its drag offset, transition and backdrop
|
|
503
|
+
without dismissing the sheet or swallowing a later click.
|
|
453
504
|
- A fitted sheet measures its content with `onLayout` before presenting.
|
|
454
505
|
Hidden content stays mounted inside the zero-width host (clipped on iOS,
|
|
455
506
|
INVISIBLE on Android), and the host height stays auto: a fixed 0 height
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useEffect, useId, useLayoutEffect, useRef } from 'react';
|
|
3
|
+
import { useCallback, useEffect, useId, useLayoutEffect, useRef, useSyncExternalStore } from 'react';
|
|
4
4
|
import { createPortal } from 'react-dom';
|
|
5
5
|
import { StyleSheet, View } from 'react-native';
|
|
6
6
|
import { OverlayLevelProvider } from "./OverlayLevelContext.js";
|
|
@@ -9,7 +9,7 @@ import { OVERLAY_OWNER_ATTRIBUTE } from "./OverlayPageHost.web.js";
|
|
|
9
9
|
import { overlayStore } from "./OverlayStore.js";
|
|
10
10
|
import { useOverlayController } from "./useOverlayController.js";
|
|
11
11
|
import { animateBackdrop, animateTransition } from "./web/animateTransition.js";
|
|
12
|
-
import { ENTRY_ATTRIBUTE, getOverlayLayerRoot, getOverlayPageHost, registerOverlayDismissRequester, scheduleOverlayInertSync } from "./web/overlayLayers.js";
|
|
12
|
+
import { ENTRY_ATTRIBUTE, getOverlayLayerRoot, getOverlayPageHost, registerOverlayDismissRequester, scheduleOverlayInertSync, subscribeOverlayPageHost } from "./web/overlayLayers.js";
|
|
13
13
|
import { useKeyboardShift } from "./web/useKeyboardShift.js";
|
|
14
14
|
import { useSheetDrag } from "./web/useSheetDrag.js";
|
|
15
15
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -89,16 +89,6 @@ function WebOverlayEntry({
|
|
|
89
89
|
const neverEntered = directionRef.current === undefined;
|
|
90
90
|
directionRef.current = direction;
|
|
91
91
|
scheduleOverlayInertSync();
|
|
92
|
-
if (direction === 'out' && (neverEntered || pannedAwayRef.current)) {
|
|
93
|
-
callbacksRef.current.onDismissed();
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (direction === 'in' && blocking) {
|
|
97
|
-
restoreFocusRef.current = document.activeElement;
|
|
98
|
-
entryRef.current?.focus({
|
|
99
|
-
preventScroll: true
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
92
|
const interruptedFrames = new Map();
|
|
103
93
|
for (const running of runningAnimationsRef.current) {
|
|
104
94
|
const target = running.effect?.target;
|
|
@@ -111,6 +101,29 @@ function WebOverlayEntry({
|
|
|
111
101
|
}
|
|
112
102
|
running.cancel();
|
|
113
103
|
}
|
|
104
|
+
runningAnimationsRef.current = [];
|
|
105
|
+
if (direction === 'out' && (neverEntered || pannedAwayRef.current)) {
|
|
106
|
+
restoreFocusRef.current?.focus?.({
|
|
107
|
+
preventScroll: true
|
|
108
|
+
});
|
|
109
|
+
restoreFocusRef.current = null;
|
|
110
|
+
callbacksRef.current.onDismissed();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (direction === 'in') {
|
|
114
|
+
pannedAwayRef.current = false;
|
|
115
|
+
sheetRef.current?.style.removeProperty('transform');
|
|
116
|
+
sheetRef.current?.style.removeProperty('transition');
|
|
117
|
+
if (backdropRef.current) {
|
|
118
|
+
backdropRef.current.style.opacity = '1';
|
|
119
|
+
}
|
|
120
|
+
if (blocking) {
|
|
121
|
+
restoreFocusRef.current = document.activeElement;
|
|
122
|
+
entryRef.current?.focus({
|
|
123
|
+
preventScroll: true
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
114
127
|
// A sheet is measured as a whole; other presentations by the children
|
|
115
128
|
// of the full-window React root.
|
|
116
129
|
const contentRoot = isSheet ? content : sheetRef.current?.firstElementChild ?? content;
|
|
@@ -322,10 +335,15 @@ export function OverlayView(props) {
|
|
|
322
335
|
// Closed with `keepContentMounted`: the same entry stays in the layer,
|
|
323
336
|
// hidden and inert, so the content keeps its state and can be measured.
|
|
324
337
|
const parked = !mounted || !entry;
|
|
338
|
+
const subscribePageHost = useCallback(listener => subscribeOverlayPageHost(hostKey, listener), [hostKey]);
|
|
339
|
+
const getPageHost = useCallback(() => getOverlayPageHost(hostKey), [hostKey]);
|
|
340
|
+
const pageHost = useSyncExternalStore(subscribePageHost, getPageHost, () => undefined);
|
|
325
341
|
if (parked && !keepContentMounted) {
|
|
326
342
|
return null;
|
|
327
343
|
}
|
|
328
|
-
|
|
344
|
+
if (scope === 'page' && !pageHost) {
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
329
347
|
return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(WebOverlayEntry, {
|
|
330
348
|
parked: parked,
|
|
331
349
|
entryId: entry?.id ?? parkedId,
|
|
@@ -342,13 +360,13 @@ export function OverlayView(props) {
|
|
|
342
360
|
sheet: presentation === 'sheet' ? sheet ?? {} : undefined
|
|
343
361
|
// Inside a page host all levels share one stacking context.
|
|
344
362
|
,
|
|
345
|
-
zIndex:
|
|
346
|
-
ownerKey:
|
|
363
|
+
zIndex: scope === 'page' ? OVERLAY_LEVEL_ORDER[level] * 1000 + (entry?.seq ?? 0) : entry?.seq ?? 0,
|
|
364
|
+
ownerKey: scope === 'page' ? ownerKey : undefined,
|
|
347
365
|
testID: testID,
|
|
348
366
|
children: /*#__PURE__*/_jsx(OverlayLevelProvider, {
|
|
349
367
|
value: level,
|
|
350
368
|
children: children
|
|
351
369
|
})
|
|
352
|
-
}, "entry"), pageHost
|
|
370
|
+
}, "entry"), scope === 'page' ? pageHost : getOverlayLayerRoot(level));
|
|
353
371
|
}
|
|
354
372
|
//# sourceMappingURL=OverlayView.web.js.map
|
|
@@ -1 +1 @@
|
|
|
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","interruptedFrames","Map","running","target","effect","playState","HTMLElement","getComputedStyle","set","transform","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","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":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useId","useLayoutEffect","useRef","useSyncExternalStore","createPortal","StyleSheet","View","OverlayLevelProvider","OVERLAY_LEVEL_ORDER","isBlockingLevel","OVERLAY_OWNER_ATTRIBUTE","overlayStore","useOverlayController","animateBackdrop","animateTransition","ENTRY_ATTRIBUTE","getOverlayLayerRoot","getOverlayPageHost","registerOverlayDismissRequester","scheduleOverlayInertSync","subscribeOverlayPageHost","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","interruptedFrames","Map","running","target","effect","playState","HTMLElement","getComputedStyle","set","transform","cancel","focus","preventScroll","document","activeElement","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","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","subscribePageHost","listener","getPageHost","pageHost","seq","color","dismissOnPress","value"],"sourceRoot":"../../src","sources":["OverlayView.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ export const ENTRY_ATTRIBUTE = 'data-onekey-overlay-entry';
|
|
|
7
7
|
const APP_ROOT_ID = 'root';
|
|
8
8
|
const layerRoots = new Map();
|
|
9
9
|
const pageHosts = new Map();
|
|
10
|
+
const pageHostListeners = new Map();
|
|
10
11
|
const dismissRequesters = new Map();
|
|
11
12
|
let installed = false;
|
|
12
13
|
function createLayerRoot(level) {
|
|
@@ -137,12 +138,27 @@ export function scheduleOverlayInertSync() {
|
|
|
137
138
|
export function registerOverlayPageHost(hostKey, element) {
|
|
138
139
|
installOverlayWebManager();
|
|
139
140
|
pageHosts.set(hostKey, element);
|
|
141
|
+
pageHostListeners.get(hostKey)?.forEach(listener => listener());
|
|
140
142
|
return () => {
|
|
141
143
|
if (pageHosts.get(hostKey) === element) {
|
|
142
144
|
pageHosts.delete(hostKey);
|
|
145
|
+
pageHostListeners.get(hostKey)?.forEach(listener => listener());
|
|
143
146
|
}
|
|
144
147
|
};
|
|
145
148
|
}
|
|
149
|
+
export function subscribeOverlayPageHost(hostKey, listener) {
|
|
150
|
+
if (!hostKey) return () => {};
|
|
151
|
+
let listeners = pageHostListeners.get(hostKey);
|
|
152
|
+
if (!listeners) {
|
|
153
|
+
listeners = new Set();
|
|
154
|
+
pageHostListeners.set(hostKey, listeners);
|
|
155
|
+
}
|
|
156
|
+
listeners.add(listener);
|
|
157
|
+
return () => {
|
|
158
|
+
listeners.delete(listener);
|
|
159
|
+
if (listeners.size === 0) pageHostListeners.delete(hostKey);
|
|
160
|
+
};
|
|
161
|
+
}
|
|
146
162
|
export function getOverlayPageHost(hostKey) {
|
|
147
163
|
return hostKey ? pageHosts.get(hostKey) : undefined;
|
|
148
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OVERLAY_LEVELS","OVERLAY_LEVEL_ORDER","OVERLAY_WEB_Z_INDEX_BASE","overlayStore","LAYER_ATTRIBUTE","ENTRY_ATTRIBUTE","APP_ROOT_ID","layerRoots","Map","pageHosts","dismissRequesters","installed","createLayerRoot","level","root","document","createElement","setAttribute","Object","assign","style","position","inset","pointerEvents","zIndex","String","isolation","next","slice","indexOf","map","l","get","find","Boolean","body","insertBefore","setInert","element","inert","pageInertElements","Set","siblingsOutside","host","siblings","node","parentElement","parent","sibling","Array","from","children","HTMLElement","add","inertEntriesBelow","container","top","querySelectorAll","forEach","Number","dataset","overlayLevelOrder","below","stackOrder","seq","visibility","getAttribute","syncOverlayInert","getBlockingTop","appRoot","getElementById","nextPageInert","pageHost","scope","getOverlayPageHost","hostKey","undefined","contains","has","onKeyDown","event","key","isComposing","keyCode","resolution","resolveBack","kind","stopPropagation","preventDefault","id","installOverlayWebManager","subscribe","addEventListener","getOverlayLayerRoot","isConnected","set","registerOverlayDismissRequester","requester","delete","scheduleOverlayInertSync","requestAnimationFrame","registerOverlayPageHost"],"sourceRoot":"../../../src","sources":["web/overlayLayers.ts"],"mappings":";;AAAA,SACEA,cAAc,EACdC,mBAAmB,EACnBC,wBAAwB,QACnB,qBAAkB;AACzB,SAASC,YAAY,QAAQ,oBAAiB;AAK9C,MAAMC,eAAe,GAAG,2BAA2B;AACnD,OAAO,MAAMC,eAAe,GAAG,2BAA2B;AAE1D,MAAMC,WAAW,GAAG,MAAM;AAE1B,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAgC,CAAC;AAC3D,MAAMC,SAAS,GAAG,IAAID,GAAG,CAAyB,CAAC;AACnD,MAAME,iBAAiB,GAAG,IAAIF,GAAG,CAG/B,CAAC;AACH,
|
|
1
|
+
{"version":3,"names":["OVERLAY_LEVELS","OVERLAY_LEVEL_ORDER","OVERLAY_WEB_Z_INDEX_BASE","overlayStore","LAYER_ATTRIBUTE","ENTRY_ATTRIBUTE","APP_ROOT_ID","layerRoots","Map","pageHosts","pageHostListeners","dismissRequesters","installed","createLayerRoot","level","root","document","createElement","setAttribute","Object","assign","style","position","inset","pointerEvents","zIndex","String","isolation","next","slice","indexOf","map","l","get","find","Boolean","body","insertBefore","setInert","element","inert","pageInertElements","Set","siblingsOutside","host","siblings","node","parentElement","parent","sibling","Array","from","children","HTMLElement","add","inertEntriesBelow","container","top","querySelectorAll","forEach","Number","dataset","overlayLevelOrder","below","stackOrder","seq","visibility","getAttribute","syncOverlayInert","getBlockingTop","appRoot","getElementById","nextPageInert","pageHost","scope","getOverlayPageHost","hostKey","undefined","contains","has","onKeyDown","event","key","isComposing","keyCode","resolution","resolveBack","kind","stopPropagation","preventDefault","id","installOverlayWebManager","subscribe","addEventListener","getOverlayLayerRoot","isConnected","set","registerOverlayDismissRequester","requester","delete","scheduleOverlayInertSync","requestAnimationFrame","registerOverlayPageHost","listener","subscribeOverlayPageHost","listeners","size"],"sourceRoot":"../../../src","sources":["web/overlayLayers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -111,10 +111,27 @@ export function useSheetDrag({
|
|
|
111
111
|
once: true
|
|
112
112
|
});
|
|
113
113
|
};
|
|
114
|
+
const onPointerCancel = event => {
|
|
115
|
+
if (!tracking || event.pointerId !== pointerId) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
tracking = false;
|
|
119
|
+
dragging = false;
|
|
120
|
+
velocity = 0;
|
|
121
|
+
if (sheet.hasPointerCapture?.(pointerId)) {
|
|
122
|
+
sheet.releasePointerCapture(pointerId);
|
|
123
|
+
}
|
|
124
|
+
pointerId = -1;
|
|
125
|
+
sheet.style.transform = '';
|
|
126
|
+
sheet.style.transition = '';
|
|
127
|
+
if (backdropRef.current) {
|
|
128
|
+
backdropRef.current.style.opacity = '1';
|
|
129
|
+
}
|
|
130
|
+
};
|
|
114
131
|
sheet.addEventListener('pointerdown', onPointerDown);
|
|
115
132
|
sheet.addEventListener('pointermove', onPointerMove);
|
|
116
133
|
sheet.addEventListener('pointerup', onPointerUp);
|
|
117
|
-
sheet.addEventListener('pointercancel',
|
|
134
|
+
sheet.addEventListener('pointercancel', onPointerCancel);
|
|
118
135
|
return () => {
|
|
119
136
|
if (sheet.hasPointerCapture?.(pointerId)) {
|
|
120
137
|
sheet.releasePointerCapture(pointerId);
|
|
@@ -122,7 +139,7 @@ export function useSheetDrag({
|
|
|
122
139
|
sheet.removeEventListener('pointerdown', onPointerDown);
|
|
123
140
|
sheet.removeEventListener('pointermove', onPointerMove);
|
|
124
141
|
sheet.removeEventListener('pointerup', onPointerUp);
|
|
125
|
-
sheet.removeEventListener('pointercancel',
|
|
142
|
+
sheet.removeEventListener('pointercancel', onPointerCancel);
|
|
126
143
|
};
|
|
127
144
|
}, [sheetRef, backdropRef, enabled]);
|
|
128
145
|
}
|
|
@@ -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","hasPointerCapture","releasePointerCapture","removeEventListener"],"sourceRoot":"../../../src","sources":["web/useSheetDrag.ts"],"mappings":"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
|
|
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","onPointerCancel","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":"AA+BA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAkY5B,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,sCA2EnD"}
|
|
@@ -8,5 +8,6 @@ export declare function registerOverlayDismissRequester(id: string, requester: (
|
|
|
8
8
|
/** Re-run after entry DOM nodes mount, since the store emits before commit. */
|
|
9
9
|
export declare function scheduleOverlayInertSync(): void;
|
|
10
10
|
export declare function registerOverlayPageHost(hostKey: string, element: HTMLDivElement): () => void;
|
|
11
|
+
export declare function subscribeOverlayPageHost(hostKey: string | undefined, listener: () => void): () => void;
|
|
11
12
|
export declare function getOverlayPageHost(hostKey: string | undefined): HTMLDivElement | undefined;
|
|
12
13
|
//# sourceMappingURL=overlayLayers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlayLayers.d.ts","sourceRoot":"","sources":["../../../../src/web/overlayLayers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,UAAU,CAAC;AAG7D,eAAO,MAAM,eAAe,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"overlayLayers.d.ts","sourceRoot":"","sources":["../../../../src/web/overlayLayers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,UAAU,CAAC;AAG7D,eAAO,MAAM,eAAe,8BAA8B,CAAC;AA+E3D,0EAA0E;AAC1E,wBAAgB,gBAAgB,SAsC/B;AA2BD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAQxE;AAED,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,GACxD,MAAM,IAAI,CAOZ;AAED,+EAA+E;AAC/E,wBAAgB,wBAAwB,SAEvC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,GACtB,MAAM,IAAI,CAUZ;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,IAAI,GACnB,MAAM,IAAI,CAYZ;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,cAAc,GAAG,SAAS,CAE5B"}
|
|
@@ -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,QA6HA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/react-native-native-overlay",
|
|
3
|
-
"version": "6.7.0-alpha.
|
|
3
|
+
"version": "6.7.0-alpha.354",
|
|
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,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
useCallback,
|
|
3
|
+
useEffect,
|
|
4
|
+
useId,
|
|
5
|
+
useLayoutEffect,
|
|
6
|
+
useRef,
|
|
7
|
+
useSyncExternalStore,
|
|
8
|
+
} from 'react';
|
|
2
9
|
import type { KeyboardEvent, ReactNode, SyntheticEvent } from 'react';
|
|
3
10
|
|
|
4
11
|
import { createPortal } from 'react-dom';
|
|
@@ -16,6 +23,7 @@ import {
|
|
|
16
23
|
getOverlayPageHost,
|
|
17
24
|
registerOverlayDismissRequester,
|
|
18
25
|
scheduleOverlayInertSync,
|
|
26
|
+
subscribeOverlayPageHost,
|
|
19
27
|
} from './web/overlayLayers';
|
|
20
28
|
import { useKeyboardShift } from './web/useKeyboardShift';
|
|
21
29
|
import { useSheetDrag } from './web/useSheetDrag';
|
|
@@ -123,14 +131,6 @@ function WebOverlayEntry({
|
|
|
123
131
|
const neverEntered = directionRef.current === undefined;
|
|
124
132
|
directionRef.current = direction;
|
|
125
133
|
scheduleOverlayInertSync();
|
|
126
|
-
if (direction === 'out' && (neverEntered || pannedAwayRef.current)) {
|
|
127
|
-
callbacksRef.current.onDismissed();
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (direction === 'in' && blocking) {
|
|
131
|
-
restoreFocusRef.current = document.activeElement as HTMLElement | null;
|
|
132
|
-
entryRef.current?.focus({ preventScroll: true });
|
|
133
|
-
}
|
|
134
134
|
const interruptedFrames = new Map<HTMLElement, Keyframe>();
|
|
135
135
|
for (const running of runningAnimationsRef.current) {
|
|
136
136
|
const target = (running.effect as KeyframeEffect | null)?.target;
|
|
@@ -143,6 +143,25 @@ function WebOverlayEntry({
|
|
|
143
143
|
}
|
|
144
144
|
running.cancel();
|
|
145
145
|
}
|
|
146
|
+
runningAnimationsRef.current = [];
|
|
147
|
+
if (direction === 'out' && (neverEntered || pannedAwayRef.current)) {
|
|
148
|
+
restoreFocusRef.current?.focus?.({ preventScroll: true });
|
|
149
|
+
restoreFocusRef.current = null;
|
|
150
|
+
callbacksRef.current.onDismissed();
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (direction === 'in') {
|
|
154
|
+
pannedAwayRef.current = false;
|
|
155
|
+
sheetRef.current?.style.removeProperty('transform');
|
|
156
|
+
sheetRef.current?.style.removeProperty('transition');
|
|
157
|
+
if (backdropRef.current) {
|
|
158
|
+
backdropRef.current.style.opacity = '1';
|
|
159
|
+
}
|
|
160
|
+
if (blocking) {
|
|
161
|
+
restoreFocusRef.current = document.activeElement as HTMLElement | null;
|
|
162
|
+
entryRef.current?.focus({ preventScroll: true });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
146
165
|
// A sheet is measured as a whole; other presentations by the children
|
|
147
166
|
// of the full-window React root.
|
|
148
167
|
const contentRoot = isSheet
|
|
@@ -428,12 +447,22 @@ export function OverlayView(props: IOverlayViewProps) {
|
|
|
428
447
|
// Closed with `keepContentMounted`: the same entry stays in the layer,
|
|
429
448
|
// hidden and inert, so the content keeps its state and can be measured.
|
|
430
449
|
const parked = !mounted || !entry;
|
|
450
|
+
const subscribePageHost = useCallback(
|
|
451
|
+
(listener: () => void) => subscribeOverlayPageHost(hostKey, listener),
|
|
452
|
+
[hostKey]
|
|
453
|
+
);
|
|
454
|
+
const getPageHost = useCallback(() => getOverlayPageHost(hostKey), [hostKey]);
|
|
455
|
+
const pageHost = useSyncExternalStore(
|
|
456
|
+
subscribePageHost,
|
|
457
|
+
getPageHost,
|
|
458
|
+
() => undefined
|
|
459
|
+
);
|
|
431
460
|
if (parked && !keepContentMounted) {
|
|
432
461
|
return null;
|
|
433
462
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
463
|
+
if (scope === 'page' && !pageHost) {
|
|
464
|
+
return null;
|
|
465
|
+
}
|
|
437
466
|
return createPortal(
|
|
438
467
|
<WebOverlayEntry
|
|
439
468
|
key="entry"
|
|
@@ -454,15 +483,15 @@ export function OverlayView(props: IOverlayViewProps) {
|
|
|
454
483
|
sheet={presentation === 'sheet' ? sheet ?? {} : undefined}
|
|
455
484
|
// Inside a page host all levels share one stacking context.
|
|
456
485
|
zIndex={
|
|
457
|
-
|
|
486
|
+
scope === 'page'
|
|
458
487
|
? OVERLAY_LEVEL_ORDER[level] * 1000 + (entry?.seq ?? 0)
|
|
459
488
|
: entry?.seq ?? 0
|
|
460
489
|
}
|
|
461
|
-
ownerKey={
|
|
490
|
+
ownerKey={scope === 'page' ? ownerKey : undefined}
|
|
462
491
|
testID={testID}
|
|
463
492
|
>
|
|
464
493
|
<OverlayLevelProvider value={level}>{children}</OverlayLevelProvider>
|
|
465
494
|
</WebOverlayEntry>,
|
|
466
|
-
pageHost
|
|
495
|
+
scope === 'page' ? pageHost! : getOverlayLayerRoot(level)
|
|
467
496
|
);
|
|
468
497
|
}
|
package/src/web/overlayLayers.ts
CHANGED
|
@@ -15,6 +15,7 @@ const APP_ROOT_ID = 'root';
|
|
|
15
15
|
|
|
16
16
|
const layerRoots = new Map<IOverlayLevel, HTMLDivElement>();
|
|
17
17
|
const pageHosts = new Map<string, HTMLDivElement>();
|
|
18
|
+
const pageHostListeners = new Map<string, Set<() => void>>();
|
|
18
19
|
const dismissRequesters = new Map<
|
|
19
20
|
string,
|
|
20
21
|
(reason: IOverlayRequestDismissReason) => void
|
|
@@ -186,13 +187,32 @@ export function registerOverlayPageHost(
|
|
|
186
187
|
): () => void {
|
|
187
188
|
installOverlayWebManager();
|
|
188
189
|
pageHosts.set(hostKey, element);
|
|
190
|
+
pageHostListeners.get(hostKey)?.forEach((listener) => listener());
|
|
189
191
|
return () => {
|
|
190
192
|
if (pageHosts.get(hostKey) === element) {
|
|
191
193
|
pageHosts.delete(hostKey);
|
|
194
|
+
pageHostListeners.get(hostKey)?.forEach((listener) => listener());
|
|
192
195
|
}
|
|
193
196
|
};
|
|
194
197
|
}
|
|
195
198
|
|
|
199
|
+
export function subscribeOverlayPageHost(
|
|
200
|
+
hostKey: string | undefined,
|
|
201
|
+
listener: () => void
|
|
202
|
+
): () => void {
|
|
203
|
+
if (!hostKey) return () => {};
|
|
204
|
+
let listeners = pageHostListeners.get(hostKey);
|
|
205
|
+
if (!listeners) {
|
|
206
|
+
listeners = new Set();
|
|
207
|
+
pageHostListeners.set(hostKey, listeners);
|
|
208
|
+
}
|
|
209
|
+
listeners.add(listener);
|
|
210
|
+
return () => {
|
|
211
|
+
listeners.delete(listener);
|
|
212
|
+
if (listeners.size === 0) pageHostListeners.delete(hostKey);
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
|
|
196
216
|
export function getOverlayPageHost(
|
|
197
217
|
hostKey: string | undefined
|
|
198
218
|
): HTMLDivElement | undefined {
|
package/src/web/useSheetDrag.ts
CHANGED
|
@@ -129,10 +129,28 @@ export function useSheetDrag({
|
|
|
129
129
|
);
|
|
130
130
|
};
|
|
131
131
|
|
|
132
|
+
const onPointerCancel = (event: PointerEvent) => {
|
|
133
|
+
if (!tracking || event.pointerId !== pointerId) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
tracking = false;
|
|
137
|
+
dragging = false;
|
|
138
|
+
velocity = 0;
|
|
139
|
+
if (sheet.hasPointerCapture?.(pointerId)) {
|
|
140
|
+
sheet.releasePointerCapture(pointerId);
|
|
141
|
+
}
|
|
142
|
+
pointerId = -1;
|
|
143
|
+
sheet.style.transform = '';
|
|
144
|
+
sheet.style.transition = '';
|
|
145
|
+
if (backdropRef.current) {
|
|
146
|
+
backdropRef.current.style.opacity = '1';
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
132
150
|
sheet.addEventListener('pointerdown', onPointerDown);
|
|
133
151
|
sheet.addEventListener('pointermove', onPointerMove);
|
|
134
152
|
sheet.addEventListener('pointerup', onPointerUp);
|
|
135
|
-
sheet.addEventListener('pointercancel',
|
|
153
|
+
sheet.addEventListener('pointercancel', onPointerCancel);
|
|
136
154
|
return () => {
|
|
137
155
|
if (sheet.hasPointerCapture?.(pointerId)) {
|
|
138
156
|
sheet.releasePointerCapture(pointerId);
|
|
@@ -140,7 +158,7 @@ export function useSheetDrag({
|
|
|
140
158
|
sheet.removeEventListener('pointerdown', onPointerDown);
|
|
141
159
|
sheet.removeEventListener('pointermove', onPointerMove);
|
|
142
160
|
sheet.removeEventListener('pointerup', onPointerUp);
|
|
143
|
-
sheet.removeEventListener('pointercancel',
|
|
161
|
+
sheet.removeEventListener('pointercancel', onPointerCancel);
|
|
144
162
|
};
|
|
145
163
|
}, [sheetRef, backdropRef, enabled]);
|
|
146
164
|
}
|