@onekeyfe/react-native-pager-view 6.7.0-alpha.436 → 6.7.0-alpha.449
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/android/build.gradle +1 -0
- package/android/src/androidTest/java/com/reactnativepagerview/CollapsiblePagerTabReservationTest.kt +135 -0
- package/android/src/main/java/com/reactnativepagerview/CollapsiblePagerHost.kt +88 -12
- package/android/src/main/java/com/reactnativepagerview/CollapsiblePagerNativeHeaders.kt +442 -15
- package/android/src/main/java/com/reactnativepagerview/CollapsiblePagerViewManager.kt +11 -1
- package/android/src/main/java/com/reactnativepagerview/event/NativeHeaderPressEvent.kt +8 -0
- package/docs/SPEC.md +298 -3
- package/ios/RNCCollapsiblePagerViewComponentView.mm +834 -20
- package/ios/tests/RNCCollapsiblePagerFirstFrameTests.mm +61 -0
- package/ios/tests/RNCCollapsiblePagerHitTestTests.mm +22 -0
- package/lib/module/CollapsiblePagerView.js +37 -5
- package/lib/module/CollapsiblePagerView.web.js +519 -6
- package/lib/module/CollapsiblePagerViewNativeComponent.ts +6 -0
- package/lib/module/NativeScrollerNativeComponent.ts +0 -1
- package/lib/typescript/src/CollapsiblePagerView.d.ts +31 -2
- package/lib/typescript/src/CollapsiblePagerView.web.d.ts +44 -1
- package/lib/typescript/src/CollapsiblePagerViewNativeComponent.d.ts +11 -0
- package/lib/typescript/src/NativeScroller.d.ts +2 -2
- package/package.json +3 -2
- package/src/CollapsiblePagerView.tsx +68 -5
- package/src/CollapsiblePagerView.web.tsx +464 -5
- package/src/CollapsiblePagerViewNativeComponent.ts +6 -0
- package/src/NativeScroller.tsx +2 -3
- package/src/NativeScrollerNativeComponent.ts +0 -1
package/docs/SPEC.md
CHANGED
|
@@ -136,6 +136,34 @@ style forwarding, overlay retention and disabling; UIKit tests cover native
|
|
|
136
136
|
style switching and restoring the previous style. Rendered iOS acceptance must
|
|
137
137
|
be reported separately from type, codegen and build checks.
|
|
138
138
|
|
|
139
|
+
### iOS 27 local incoming transition hosts
|
|
140
|
+
|
|
141
|
+
Status: Implemented; scoped iOS 27 simulator runtime verified.
|
|
142
|
+
|
|
143
|
+
For the existing local smooth Hard direct-pager transition, incoming pages use
|
|
144
|
+
the external path's transparent, noninteractive per-page top/sticky interaction
|
|
145
|
+
hosts. Their horizontal origin follows each page's scroll viewport; vertical
|
|
146
|
+
geometry follows the existing overlay and sticky references. The actual local
|
|
147
|
+
overlay and source interaction/marker/borrowed-host identities remain unchanged.
|
|
148
|
+
No replacement material, background, public API or additional mask is added.
|
|
149
|
+
Existing completion, release-back-to-source, invalidation and recycle paths
|
|
150
|
+
release only owned temporary hosts.
|
|
151
|
+
|
|
152
|
+
Source-matched iOS 27 simulator checks passed for slow movement in both
|
|
153
|
+
directions, same-contact over-half return followed by UP, retained nonzero scroll
|
|
154
|
+
regions, light/dark header protection and actual toolbar sheet opening/closing.
|
|
155
|
+
Selected fixed-label anchors retained their geometry. This is scoped main-UI
|
|
156
|
+
native-view evidence; background runtime readiness and shared JS heaps are not
|
|
157
|
+
assumed. Continuous/rapid alternation remains unproven: the final recording
|
|
158
|
+
shows no discernible alternating page motion despite successful input ACKs.
|
|
159
|
+
True CANCEL, resize/orientation and native lifecycle test execution remain
|
|
160
|
+
unverified. The original physical-device recording's exact OS/build is unknown;
|
|
161
|
+
selected-frame results do not establish exhaustive frame or numeric-offset parity.
|
|
162
|
+
The run retains `normalDevSession=false` and its official launcher failure notice;
|
|
163
|
+
diagnostic compilation and strict-input installation are separate build evidence.
|
|
164
|
+
Market's equal-height secondary display-owner change is an independent consumer
|
|
165
|
+
companion, not a new SDK public guarantee or JS/native same-frame contract.
|
|
166
|
+
|
|
139
167
|
### iOS 27 external-overlay interactive ownership
|
|
140
168
|
|
|
141
169
|
Status: Implemented in iOS source; runtime acceptance is reported separately.
|
|
@@ -555,11 +583,11 @@ input, coalesced-event delivery, and physical-device acceptance.
|
|
|
555
583
|
|
|
556
584
|
Status: implemented locally. Focused production-class iOS XCTest and Android
|
|
557
585
|
instrumentation checks pass; consuming App interaction acceptance is separate.
|
|
558
|
-
`nativeTabBar.style.variant`
|
|
559
|
-
`"segmented"` on iOS and Android. The optional
|
|
586
|
+
`nativeTabBar.style.variant` retains `"underline"` (the default) and
|
|
587
|
+
`"segmented"` on iOS and Android; the text variant is specified below. The optional
|
|
560
588
|
`nativeTabBar.style.contentPaddingVertical` is a nonnegative logical inset,
|
|
561
589
|
defaulting to zero. Omitting both fields preserves the existing content-width,
|
|
562
|
-
horizontally scrollable underline bar. Web ignores `nativeTabBar` and retains
|
|
590
|
+
horizontally scrollable underline bar. Web ignores legacy `nativeTabBar` configurations and retains
|
|
563
591
|
its caller-rendered sticky header.
|
|
564
592
|
|
|
565
593
|
In segmented mode, the existing `height` is the entire tab slot. The track
|
|
@@ -1128,3 +1156,270 @@ This separates package initialization in the Native UI main runtime; it does not
|
|
|
1128
1156
|
add a bridge, share JS heaps with background, or change Native scroll commands.
|
|
1129
1157
|
Acceptance includes the actual Native dependency graph and unchanged startup
|
|
1130
1158
|
budgets, Web runtime/type exports, and package source/module/declaration entries.
|
|
1159
|
+
|
|
1160
|
+
## Text tabs, controlled selection and per-tab toolbar
|
|
1161
|
+
|
|
1162
|
+
Physical font-owner revision: Implemented from source-matched consumer candidates
|
|
1163
|
+
and independently accepted for the scoped three-platform checks: iOS `e6dab83e`,
|
|
1164
|
+
Android Header `c7fdbb4d` and Web `c75c725c`. Native compiled objects/classes,
|
|
1165
|
+
archives/APKs and installed binaries are matched separately from runtime evidence.
|
|
1166
|
+
iOS original-resolution bidirectional slow motion pairs body displacement with
|
|
1167
|
+
normalized same-label glyph references across halfway, and actual adjacent and
|
|
1168
|
+
nonadjacent clicks were reviewed. Supplemental same-contact out-and-back followed
|
|
1169
|
+
by UP also passed on the same task device/source: one native path contains 244
|
|
1170
|
+
events (1 DOWN, 242 MOVE, 1 UP). Selected-frame analysis of the 442-frame original
|
|
1171
|
+
recording independently pairs body displacement with normalized glyphs across the outgoing and returning
|
|
1172
|
+
halfway crossings, closing the out-and-back/UP evidence gap. An injected CANCEL
|
|
1173
|
+
event remains untested. Image-derived progress has plus/minus two-physical-pixel
|
|
1174
|
+
uncertainty; exact midpoint paint time is not claimed. Its authorized lower-level
|
|
1175
|
+
runtime remains `normalDevSession=false` with the existing DeviceHub GUI limitation.
|
|
1176
|
+
|
|
1177
|
+
Android actual slow and reverse motion, clicks and same-contact out-and-back
|
|
1178
|
+
input were reviewed with glyph/body evidence. The boundary estimate has a
|
|
1179
|
+
plus/minus two-physical-pixel uncertainty; the cancel input settled on Perps, so
|
|
1180
|
+
it is not evidence that cancellation returned to the source page. Web reviewed
|
|
1181
|
+
actual release-time CSS motion, normalized glyph ownership and stable neighboring
|
|
1182
|
+
tab geometry. Its existing touch path still moves the body after release. These
|
|
1183
|
+
are scoped runtime passes, not full gesture, typography or accessibility coverage.
|
|
1184
|
+
Two mounted DOM regressions exercise the physical-owner/semantic distinction and
|
|
1185
|
+
inherited-family/mode cleanup; they do not replace browser/native pixel evidence.
|
|
1186
|
+
|
|
1187
|
+
Prior interaction revision evidence (retained for unchanged paths): Implemented
|
|
1188
|
+
and synchronized from the source-matched consumer prototype. Targeted independent
|
|
1189
|
+
runtime acceptance passed for Web (`f22adedb`),
|
|
1190
|
+
iOS (`14ac191c`) and Android (Header `bafa2c02`, Host `f80156f7`). The consumer
|
|
1191
|
+
records are `web-settled-review.json`, `ios-14ac-review.json` and
|
|
1192
|
+
`android-bafa-review.json`; the unchanged Android Host/component/history evidence
|
|
1193
|
+
is retained separately in `android-f801-review.json`.
|
|
1194
|
+
|
|
1195
|
+
Web exercised different/same SVG handoff, approximately 100 ms presence, pointer
|
|
1196
|
+
cancellation/late UP, keyboard activation, resize/reattach and real Home menus.
|
|
1197
|
+
iOS exercised fresh History-to-Spot settlement, route/owner return, different/same
|
|
1198
|
+
SVG and no-entry Gallery controls, continuous actual-motion label colors, and a
|
|
1199
|
+
50-to-100 History append with exact key/image prefix. Android's final background
|
|
1200
|
+
build measured zero leaked badge pixels over 142 with-entry frames and a clean
|
|
1201
|
+
slot over 84 no-entry frames, plus real pressed feedback and route/owner menus.
|
|
1202
|
+
Its unchanged Host build separately exercised Gallery return, owner changes,
|
|
1203
|
+
50-to-100 History append and retained viewport/key-image prefix.
|
|
1204
|
+
|
|
1205
|
+
These are main-UI/native-view checks; background initializes independently and no
|
|
1206
|
+
shared JS heap/readiness is assumed. iOS verification used the authorized
|
|
1207
|
+
lower-level launch with `normalDevSession=false`. Its unchanged vendor/session
|
|
1208
|
+
payload followed an earlier OCI manifest HTTP 404 local-build fallback, so this
|
|
1209
|
+
is not normal-launcher or clean cache-hit evidence. Existing debugger/Purchases
|
|
1210
|
+
and Gallery warnings remain; no console-clean claim is made.
|
|
1211
|
+
|
|
1212
|
+
Native exact slow-drag/cancel and sub-150 ms tap storms, physical hover, complete
|
|
1213
|
+
RTL/extreme-font coverage, live custom-RGBA composition and exact append commit
|
|
1214
|
+
frame stability were not established by the final targeted builds. Earlier
|
|
1215
|
+
component evidence remains scoped to unchanged paths, never relabeled as new
|
|
1216
|
+
binary footage. Source/type/method-double checks and new native test drafts are
|
|
1217
|
+
separate from runtime evidence; the new native host/Bitmap test additions have
|
|
1218
|
+
not yet executed in the SDK host.
|
|
1219
|
+
|
|
1220
|
+
Earlier revision validation (retained baseline; not proof of the revision below):
|
|
1221
|
+
Validation scope: Web exercised real content switching, toolbar menus and selected
|
|
1222
|
+
feedback, drag cancellation, keyboard activation, sticky headers, localized narrow
|
|
1223
|
+
labels, dark mode and the unchanged wide layout. iOS exercised real page contents,
|
|
1224
|
+
medium/semibold labels and descenders, named SVG controls, 38-point button frames,
|
|
1225
|
+
press/drag cancellation, filter menus, LP selected-background restoration and sticky
|
|
1226
|
+
navigation. Android exercised real page contents, toolbar controls, native press
|
|
1227
|
+
and drag cancellation, LP selected-background restoration and sticky scrolling.
|
|
1228
|
+
|
|
1229
|
+
Rich-data Home checks on all three targets expanded the token list from 6 to 50
|
|
1230
|
+
items, loaded 785 NFT items, and reached 150 unique History entries through two
|
|
1231
|
+
successive page appends. History checks included the companion consumer
|
|
1232
|
+
content-generation update. Native append recordings showed no return to the
|
|
1233
|
+
initial list top, and 10-fps samples showed no whole-column icon clearing.
|
|
1234
|
+
Pixel-exact anchor stability and zero individual-image flicker were not measured.
|
|
1235
|
+
|
|
1236
|
+
VoiceOver/TalkBack speech and native hover were not exercised. An iOS Spot
|
|
1237
|
+
accessibility-tree snapshot failure also occurs with the original Home JS tab
|
|
1238
|
+
bar in the same binary; History snapshots succeed. This comparison does not
|
|
1239
|
+
establish a full native baseline or resolve the separate accessibility issue.
|
|
1240
|
+
|
|
1241
|
+
The existing `nativeTabBar` additionally accepts the `text` style variant. It
|
|
1242
|
+
uses scrollable, intrinsic-width labels, no indicator or track, and full-height
|
|
1243
|
+
hit areas with sufficient font ascent/descent space. Text labels use 18-point medium by default, with semibold text for the visual
|
|
1244
|
+
font owner defined below; consumers supply fontSize, fontFamily and
|
|
1245
|
+
activeFontFamily for their bundled brand faces. Native width reserves the larger
|
|
1246
|
+
medium/semibold label. Controlled Web text buttons use a private overlapping grid
|
|
1247
|
+
with one visible label and two hidden normal/active face reservations, so a font
|
|
1248
|
+
handoff does not resize the button or move its neighboring tabs. Hidden copies
|
|
1249
|
+
are AX-hidden, noninteractive and unselectable; there remains one named button
|
|
1250
|
+
and one visible label. The normal face keeps its inherited family when
|
|
1251
|
+
fontFamily is omitted, and the active face falls back to that normal family.
|
|
1252
|
+
Other modes retain their existing structure and behavior. Existing underline and
|
|
1253
|
+
segmented defaults remain unchanged.
|
|
1254
|
+
|
|
1255
|
+
`nativeTabBar.controlled` defaults to false. When true, a tab press emits its
|
|
1256
|
+
stable item key without issuing a pager command. `selectedKey` identifies the
|
|
1257
|
+
selected item independently of its visual index. Consumers own business routing
|
|
1258
|
+
and call the existing pager commands when appropriate. With unique item/page
|
|
1259
|
+
keys and every page matched, label colors follow actual pager progress, including
|
|
1260
|
+
integer samples. Only the two page endpoints interpolate; extra non-page items
|
|
1261
|
+
receive no transition emphasis. Config echoes and semantic selection callbacks
|
|
1262
|
+
MUST NOT replace this actual progress with the target endpoint. Semantic selection,
|
|
1263
|
+
including selectedKey, aria-selected/native selected traits and press callbacks,
|
|
1264
|
+
continues to follow the existing controlled contract. Toolbar snapshot ownership,
|
|
1265
|
+
activation and settlement are unchanged.
|
|
1266
|
+
|
|
1267
|
+
For valid controlled text tabs with an actual progress sample, only the visual
|
|
1268
|
+
font owner follows the physical page: clamp raw page progress to the page range,
|
|
1269
|
+
choose its source page below fraction 0.5 and its destination at or above 0.5,
|
|
1270
|
+
then map that page key to its item. At 0.49 the source uses the active face; at
|
|
1271
|
+
0.50 and 0.51 the destination does. Reversing actual progress uses the same rule.
|
|
1272
|
+
Do not round interpolated item coordinates: an extra non-page item between the
|
|
1273
|
+
two endpoints must never become the transition font owner. Both font weight and
|
|
1274
|
+
normal/active font family use this owner, including native remeasurement and Web
|
|
1275
|
+
render/RAF synchronization. Config or semantic echoes do not move the font owner
|
|
1276
|
+
ahead of physical progress. Missing/invalid mappings, selected non-page items,
|
|
1277
|
+
no actual sample, uncontrolled and non-text modes retain their existing semantic
|
|
1278
|
+
or automatic fallback; stale valid mapping state must not survive a newly invalid
|
|
1279
|
+
configuration. Label color interpolation is unchanged.
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
`nativeTabBar.toolbar` is one JSON-compatible dictionary indexed by stable tab
|
|
1283
|
+
key. Each entry describes one `iconName` from the existing OneKeyImage named-SVG
|
|
1284
|
+
pipeline, `selected`, `accessibilityLabel` and `testID`. Omitting `toolbar`
|
|
1285
|
+
reserves zero width. Explicit `toolbar: {}` reserves 44 logical units. A nonempty
|
|
1286
|
+
map reserves the largest resolved `contentWidth + trailingInset` across all its
|
|
1287
|
+
entries, independent of the displayed owner. A missing selected entry has no
|
|
1288
|
+
button, hit target or accessibility element while this fixed slot remains. Each toolbar entry accepts `iconColor`, `selectedBackgroundColor`, `hoverBackgroundColor` and `pressedBackgroundColor` as resolved CSS strings. `size`, `iconSize`, `contentWidth` and `trailingInset` are logical dimensions supplied by the consumer (defaults 38, 24, 24 and 20). The circular frame includes the icon and border; layout reservation is contentWidth plus trailingInset, preserving the consumer's negative-margin layout. The SDK does not infer application scale rules.
|
|
1289
|
+
At the native JSON boundary, finite `size` is clamped to 1..128,
|
|
1290
|
+
`iconSize` to 1..size, `contentWidth` to 0..size, and `trailingInset` to
|
|
1291
|
+
0..128. Missing, null, nonnumeric or nonfinite dimensions use the defaults
|
|
1292
|
+
above (iconSize/contentWidth defaults are additionally capped by size).
|
|
1293
|
+
Consumers supply finite dimensions on Web; finite bounds and missing/null
|
|
1294
|
+
defaults apply there, while direct NaN/Infinity values are unsupported CSS
|
|
1295
|
+
inputs. Colors are normalized at the native wrapper boundary: iconColor uses
|
|
1296
|
+
OneKeyImage's rgba representation and native background colors use ARGB.
|
|
1297
|
+
This does not add a second toolbar configuration or a JavaScript feedback loop. Default background is transparent;
|
|
1298
|
+
selected background remains the base color after hover, press or cancellation.
|
|
1299
|
+
iOS UIKit and Android drawable state own feedback without JavaScript roundtrips
|
|
1300
|
+
or default Android ripples. No menus or business capability checks live here.
|
|
1301
|
+
|
|
1302
|
+
`onNativeToolbarPress` reports the stable `key` of the displayed control and
|
|
1303
|
+
`anchorRect` (`x`, `y`, `width`, `height`) in window/viewport logical coordinates.
|
|
1304
|
+
It never changes pager selection. Invalid, stale or removed controls emit
|
|
1305
|
+
nothing. The controlled toolbar has a private committed presentation snapshot:
|
|
1306
|
+
owner key, image, dimensions, label/test identifier, colors and selected base.
|
|
1307
|
+
During a gesture, programmatic/queued transition or detach, the old whole visual
|
|
1308
|
+
remains, with hit testing and accessibility disabled and active input invalidated.
|
|
1309
|
+
A config-selected target before the page command cannot transfer this snapshot.
|
|
1310
|
+
|
|
1311
|
+
With a valid page mapping, commit requires genuine physical settlement and a
|
|
1312
|
+
physical page key matching the latest `selectedKey`. A late business echo delays
|
|
1313
|
+
enablement; it never changes business selection. Cancellation restores the old
|
|
1314
|
+
owner, rapid commands submit only the final stable owner, and idle same-owner
|
|
1315
|
+
LP/config updates apply once ready. Non-page/invalid mapping uses semantic fallback
|
|
1316
|
+
at genuine idle. Automatic/legacy modes retain their existing timing; changing
|
|
1317
|
+
modes cancels requests/ready owners and restores the destination mode's hit/AX state.
|
|
1318
|
+
|
|
1319
|
+
Presence changes alone fade for approximately 100 ms from current presentation
|
|
1320
|
+
opacity. Two present entries never fade the whole button out: identical rendering
|
|
1321
|
+
inputs reuse artwork across distinct action owners; different ready artwork
|
|
1322
|
+
replaces in place once, without crossfade or fade-through. Pending artwork may
|
|
1323
|
+
retain the old snapshot only as disabled, AX-hidden decoration. Ready callbacks
|
|
1324
|
+
recheck owner, attachment and physical settlement before atomically changing the
|
|
1325
|
+
whole entry. Missing/failed artwork hides content without removing the fixed slot.
|
|
1326
|
+
|
|
1327
|
+
The existing named-SVG identity includes name, color, scale and raster geometry;
|
|
1328
|
+
it is separate from the owner key. Replacement/detach cancels pending and ready
|
|
1329
|
+
owners; stale callbacks cannot paint or enable. One loaded image, at most one
|
|
1330
|
+
pending/ready target and one failed identity are retained per toolbar view; this
|
|
1331
|
+
does not replace the image package's existing resource cache. Repeated config or
|
|
1332
|
+
frame updates do not retry a failed identity. Returning to it still cancels a
|
|
1333
|
+
different pending target and hides old content; matching loaded artwork wins over
|
|
1334
|
+
failure memory. Android clears failed identity on detach; iOS retains it across
|
|
1335
|
+
transient header reparenting, and Web clears it on disposal.
|
|
1336
|
+
|
|
1337
|
+
A pointer origin is invalidated on suspension/owner transfer; a late UP cannot
|
|
1338
|
+
fall back to the new owner. Valid idle keyboard/AX activation remains available.
|
|
1339
|
+
Web blurs a focused toolbar before AX hiding. Native busy state must preserve the
|
|
1340
|
+
old raster without UIKit's default disabled-image dimming.
|
|
1341
|
+
|
|
1342
|
+
Platform settlement and progress:
|
|
1343
|
+
|
|
1344
|
+
- iOS uses actual scroll/presentation bounds during programmatic animation;
|
|
1345
|
+
UIView's model offset is not physical completion. Toolbar settlement follows
|
|
1346
|
+
completion, pending-command drain and observer/header restoration, with current
|
|
1347
|
+
generation, controller, transition, attachment and geometry checks. An owned,
|
|
1348
|
+
logically idle toolbar may retry transient tracking/presentation guards on at
|
|
1349
|
+
most two actual display ticks. Every tick rechecks full state; tracking still
|
|
1350
|
+
prevents commit. Real dragging/deceleration/queued transitions do not poll.
|
|
1351
|
+
Success stops immediately; same-context sync does not replenish the budget,
|
|
1352
|
+
and exhaustion stays disabled without self-renewal. Command, drag, route,
|
|
1353
|
+
recycle, mode and exact width changes cancel stale callbacks. Width identifies
|
|
1354
|
+
the geometry owner exactly, independently of visual offset-arrival tolerance.
|
|
1355
|
+
- Android accepts actual `onPageScrolled` for controlled text, independently of
|
|
1356
|
+
shared-header transition bookkeeping. Semantic `onPageSelected` keeps its
|
|
1357
|
+
business timing but cannot write the visual target early. IDLE settlement also
|
|
1358
|
+
requires valid attached bounds, no fake drag/suppression and no pending/computing
|
|
1359
|
+
RecyclerView or ViewPager2 layout. The existing pre-draw drain normally measures
|
|
1360
|
+
and lays out a requested parent pager for this opt-in mode, including when its
|
|
1361
|
+
RecyclerView is already clean. A retained host may reattach with positive
|
|
1362
|
+
bounds but without a completed layout; this opt-in path normally measures and
|
|
1363
|
+
lays out the attached, shown, idle host before testing its real `isLaidOut`.
|
|
1364
|
+
It never assigns that flag or bypasses it. Hidden/zero/busy/computing hosts wait.
|
|
1365
|
+
The existing RecyclerView drain then keeps its original behavior. A deferred turn rechecks all guards and the fresh page before updating
|
|
1366
|
+
endpoint color and toolbar together. Only success records a generation/page
|
|
1367
|
+
stamp; later idle draws do not repeatedly post or lay out. Config, actual motion,
|
|
1368
|
+
transitions and attachment invalidate it; a separately attached busy header can
|
|
1369
|
+
recover. Legacy RecyclerView drain behavior is unchanged. Text-bar background belongs to
|
|
1370
|
+
the parent Header over the full row and fixed slot; row/content are transparent
|
|
1371
|
+
to composite fractional alpha once. Non-text clears that parent and keeps its
|
|
1372
|
+
original row/track path. Toolbar presence/LP/hover/pressed fills do not change
|
|
1373
|
+
this background ownership.
|
|
1374
|
+
- Web samples the live computed CSS track transform and existing gesture progress.
|
|
1375
|
+
Its existing touch path moves the body after release; the new font owner follows
|
|
1376
|
+
that actual CSS movement and does not add continuous body dragging. Timeout or
|
|
1377
|
+
semantic state alone does not settle. Finish, resize and route return
|
|
1378
|
+
require valid live width/transform and no active gesture/inactive route; old
|
|
1379
|
+
RAF/timer/transition owners cannot finish a newer transition.
|
|
1380
|
+
|
|
1381
|
+
Web uses the same existing `CollapsiblePagerView.nativeTabBar` entry point,
|
|
1382
|
+
selection semantics and toolbar dictionary. Pointer CSS owns hover/active states;
|
|
1383
|
+
viewport geometry comes from the clicked element. For compatibility, legacy configurations containing only underline/segmented items remain ignored by Web as before; the new text variant, controlled=true or an explicitly supplied toolbar opt into Web rendering. The consumer remains the owner
|
|
1384
|
+
of menus, filtering, export, analytics and translated labels.
|
|
1385
|
+
|
|
1386
|
+
Acceptance: focused wrapper tests must cover automatic compatibility, controlled
|
|
1387
|
+
presses, stable keys with extra tabs, empty toolbar and toolbar events. Rendered
|
|
1388
|
+
checks must cover long localized labels and p/y/g glyphs, changing tabs while
|
|
1389
|
+
pressed, drag cancellation, sticky headers, SVG icons, light/dark colors, no-icon
|
|
1390
|
+
fixed reservation and native/Web parity. Include adjacent same/different SVG,
|
|
1391
|
+
LP differences, config-before-command, fast reversals/cancel, DOWN-switch-UP,
|
|
1392
|
+
pending/failed/late image completion, mode changes, no-animation, initial attach,
|
|
1393
|
+
resize/reorder/route return and interrupted presence fades. Different-artwork
|
|
1394
|
+
acceptance must render the actual component, not infer it from Home's same icon.
|
|
1395
|
+
Rebuilt Android frames must remove semantic-endpoint flashes and retained-layout
|
|
1396
|
+
settle deadlocks. Focused mounted DOM regressions cover the actual track matrix
|
|
1397
|
+
around 0.49/0.50/0.51 and reversal with interleaved items and unchanged selected
|
|
1398
|
+
AX, plus inherited normal family and text-only reservation cleanup across mode
|
|
1399
|
+
changes. DOM style checks do not prove browser geometry or native glyph weight.
|
|
1400
|
+
Real frame acceptance pairs physical body displacement with normalized glyph
|
|
1401
|
+
shape using the same label's normal/active endpoint references; color darkness
|
|
1402
|
+
alone is not font-weight evidence. Separate bidirectional gestures do not prove
|
|
1403
|
+
same-contact out-and-back behavior, and an out-and-back ending in UP does not prove
|
|
1404
|
+
CANCEL-event behavior. Source/type/JVM-double checks are not runtime proof.
|
|
1405
|
+
|
|
1406
|
+
### React Native public type boundary
|
|
1407
|
+
|
|
1408
|
+
The three codegen specs import the public `CodegenTypes` namespace from
|
|
1409
|
+
`react-native`. NativeScroller's six host methods derive from its existing
|
|
1410
|
+
native `HostRef`, preserving the 11-method ref API and valid parameter calls.
|
|
1411
|
+
`keyboardShouldPersistTaps` explicitly retains the deprecated boolean aliases
|
|
1412
|
+
(`true` to `always`, `false` to `never`) alongside the standard string values;
|
|
1413
|
+
the Web wrapper also normalizes these aliases before forwarding to ScrollView,
|
|
1414
|
+
as in the merged main branch. Other values and owner/ref behavior are unchanged.
|
|
1415
|
+
|
|
1416
|
+
The merged development workspace follows main's RN 0.88/React 19.3 dependency
|
|
1417
|
+
baseline. Fresh normal package prepare/typecheck passed there; isolated copies of
|
|
1418
|
+
the current sources also passed normal declaration builds with RN 0.86.2.
|
|
1419
|
+
Actual ref/parameter fixtures passed on both RN versions, and RN 0.88 checks
|
|
1420
|
+
established bidirectional compatibility of the derived six host methods with
|
|
1421
|
+
public `HostInstance`. Both Codegen parsers produced unchanged three-component
|
|
1422
|
+
schemas relative to the pre-integration PR. Native source and erased JavaScript
|
|
1423
|
+
for the native wrapper/codegen files remain unchanged; the Web boolean forwarding
|
|
1424
|
+
above is a separate main-branch runtime change. These checks do not prove a new
|
|
1425
|
+
RN 0.88 SDK native example build or extend the scoped consumer UI acceptance.
|