@onekeyfe/react-native-pager-view 6.7.0-20 → 6.7.0-22
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/reactnativepagerview/CollapsiblePagerHost.kt +40 -9
- package/android/src/main/java/com/reactnativepagerview/NestedScrollableHost.kt +8 -2
- package/docs/SPEC.md +44 -0
- package/ios/RNCCollapsiblePagerViewComponentView.mm +410 -19
- package/ios/tests/RNCCollapsiblePagerFirstFrameTests.mm +36 -5
- package/ios/tests/RNCCollapsiblePagerHitTestTests.mm +756 -0
- package/lib/module/CollapsiblePagerViewNativeComponent.ts +41 -46
- package/lib/module/NativeScroller.web.js +3 -0
- package/lib/module/NativeScrollerNativeComponent.ts +43 -46
- package/lib/module/PagerViewNativeComponent.ts +20 -25
- package/lib/module/WebCollapsiblePagerPage.js +7 -2
- package/lib/typescript/src/CollapsiblePagerView.d.ts +1 -1
- package/lib/typescript/src/CollapsiblePagerView.web.d.ts +1 -1
- package/lib/typescript/src/CollapsiblePagerViewNativeComponent.d.ts +41 -42
- package/lib/typescript/src/NativeScroller.d.ts +5 -3
- package/lib/typescript/src/NativeScroller.web.d.ts +1 -1
- package/lib/typescript/src/NativeScrollerNativeComponent.d.ts +47 -48
- package/lib/typescript/src/PagerView.d.ts +1 -1
- package/lib/typescript/src/PagerView.web.d.ts +1 -1
- package/lib/typescript/src/PagerViewNativeComponent.d.ts +20 -21
- package/lib/typescript/src/WebCollapsiblePagerPage.d.ts +1 -1
- package/lib/typescript/src/usePagerView.d.ts +2 -2
- package/lib/typescript/src/utils.d.ts +2 -2
- package/package.json +19 -7
- package/src/CollapsiblePagerViewNativeComponent.ts +41 -46
- package/src/NativeScroller.tsx +14 -3
- package/src/NativeScroller.web.tsx +15 -1
- package/src/NativeScrollerNativeComponent.ts +43 -46
- package/src/PagerViewNativeComponent.ts +20 -25
- package/src/WebCollapsiblePagerPage.tsx +7 -2
|
@@ -52,6 +52,8 @@ using namespace facebook::react;
|
|
|
52
52
|
window.hidden = NO;
|
|
53
53
|
[self addTeardownBlock:^{
|
|
54
54
|
[pager prepareForRecycle];
|
|
55
|
+
[pager removeFromSuperview];
|
|
56
|
+
window.rootViewController = nil;
|
|
55
57
|
window.hidden = YES;
|
|
56
58
|
}];
|
|
57
59
|
|
|
@@ -77,7 +79,7 @@ using namespace facebook::react;
|
|
|
77
79
|
[pager layoutIfNeeded];
|
|
78
80
|
XCTestExpectation *settled = [self expectationWithDescription:@"Baseline slots and observer settled"];
|
|
79
81
|
dispatch_async(dispatch_get_main_queue(), ^{ [settled fulfill]; });
|
|
80
|
-
[self waitForExpectations:@[settled] timeout:
|
|
82
|
+
[self waitForExpectations:@[settled] timeout:5];
|
|
81
83
|
[pager attachScrollObserverForCurrentPage];
|
|
82
84
|
UIScrollView *ownedScroll = scroller.scrollView;
|
|
83
85
|
XCTAssertEqual([pager valueForKey:@"observedScrollView"], ownedScroll);
|
|
@@ -118,7 +120,7 @@ using namespace facebook::react;
|
|
|
118
120
|
initialLogicalOffset, 0.01);
|
|
119
121
|
XCTestExpectation *rebuilt = [self expectationWithDescription:@"Post-mount observer restored"];
|
|
120
122
|
dispatch_async(dispatch_get_main_queue(), ^{ [rebuilt fulfill]; });
|
|
121
|
-
[self waitForExpectations:@[rebuilt] timeout:
|
|
123
|
+
[self waitForExpectations:@[rebuilt] timeout:5];
|
|
122
124
|
[pager attachScrollObserverForCurrentPage];
|
|
123
125
|
XCTAssertEqual([pager valueForKey:@"topOverlayView"], overlay);
|
|
124
126
|
XCTAssertEqual([pager valueForKey:@"observedScrollView"], ownedScroll);
|
|
@@ -171,9 +173,10 @@ using namespace facebook::react;
|
|
|
171
173
|
RNCNativeScrollerComponentView *scroller = [self addScrollerToPager:pager atIndex:0];
|
|
172
174
|
[pager.window layoutIfNeeded];
|
|
173
175
|
[pager layoutIfNeeded];
|
|
176
|
+
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.05]];
|
|
174
177
|
XCTestExpectation *initialLayout = [self expectationWithDescription:@"Initial observer attachment drained"];
|
|
175
178
|
dispatch_async(dispatch_get_main_queue(), ^{ [initialLayout fulfill]; });
|
|
176
|
-
[self waitForExpectations:@[initialLayout] timeout:
|
|
179
|
+
[self waitForExpectations:@[initialLayout] timeout:5];
|
|
177
180
|
[pager detachScrollObserver];
|
|
178
181
|
[pager attachScrollObserverForCurrentPage];
|
|
179
182
|
[pager updateHeaderSettledStateForceBusy:NO];
|
|
@@ -580,12 +583,34 @@ using namespace facebook::react;
|
|
|
580
583
|
XCTAssertEqualObjects([pager valueForKey:@"currentIndex"], @0);
|
|
581
584
|
}
|
|
582
585
|
__block RNCNativeScrollerComponentView *replacement;
|
|
586
|
+
__block BOOL replacementFixtureActive = YES;
|
|
583
587
|
int64_t replacementDelay = finalRetryPending ? 150 : 50;
|
|
584
|
-
|
|
588
|
+
dispatch_block_t insertReplacement = dispatch_block_create((dispatch_block_flags_t)0, ^{
|
|
589
|
+
if (!replacementFixtureActive) return;
|
|
585
590
|
replacement = [self addScrollerToPager:pager atIndex:0];
|
|
586
591
|
[replacementHost addSubview:replacement];
|
|
587
592
|
});
|
|
588
|
-
|
|
593
|
+
// LIFO teardown invalidates this callback before the pager clears its pages.
|
|
594
|
+
[self addTeardownBlock:^{
|
|
595
|
+
replacementFixtureActive = NO;
|
|
596
|
+
dispatch_block_cancel(insertReplacement);
|
|
597
|
+
}];
|
|
598
|
+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, replacementDelay * NSEC_PER_MSEC),
|
|
599
|
+
dispatch_get_main_queue(), insertReplacement);
|
|
600
|
+
NSPredicate *hasReplacementOwners = [NSPredicate predicateWithBlock:
|
|
601
|
+
^BOOL(__unused id object, __unused NSDictionary *bindings) {
|
|
602
|
+
return replacement != nil &&
|
|
603
|
+
[pager valueForKey:@"observedScrollView"] == replacement.scrollView &&
|
|
604
|
+
[pager valueForKey:@"sharedHeaderScrollView"] == replacement.scrollView;
|
|
605
|
+
}];
|
|
606
|
+
XCTNSPredicateExpectation *replacementReady =
|
|
607
|
+
[[XCTNSPredicateExpectation alloc] initWithPredicate:hasReplacementOwners object:nil];
|
|
608
|
+
XCTWaiterResult result = [XCTWaiter waitForExpectations:@[replacementReady] timeout:5];
|
|
609
|
+
replacementFixtureActive = NO;
|
|
610
|
+
dispatch_block_cancel(insertReplacement);
|
|
611
|
+
XCTAssertEqual(result, XCTWaiterResultCompleted);
|
|
612
|
+
XCTAssertNotNil(replacement);
|
|
613
|
+
if (result != XCTWaiterResultCompleted || replacement == nil) return;
|
|
589
614
|
XCTAssertEqual([pager valueForKey:@"observedScrollView"], replacement.scrollView);
|
|
590
615
|
XCTAssertEqual([pager valueForKey:@"sharedHeaderScrollView"], replacement.scrollView);
|
|
591
616
|
XCTAssertEqualWithAccuracy(replacement.scrollView.contentOffset.y + replacement.scrollView.contentInset.top,
|
|
@@ -622,6 +647,8 @@ using namespace facebook::react;
|
|
|
622
647
|
window.hidden = NO;
|
|
623
648
|
[self addTeardownBlock:^{
|
|
624
649
|
[pager prepareForRecycle];
|
|
650
|
+
[pager removeFromSuperview];
|
|
651
|
+
window.rootViewController = nil;
|
|
625
652
|
window.hidden = YES;
|
|
626
653
|
}];
|
|
627
654
|
NSMutableArray *pages = [pager valueForKey:@"pageControllers"];
|
|
@@ -801,6 +828,10 @@ using namespace facebook::react;
|
|
|
801
828
|
component.contentView.frame = component.bounds;
|
|
802
829
|
UIViewController *page = [pager valueForKey:@"pageControllers"][0];
|
|
803
830
|
[page.view addSubview:component];
|
|
831
|
+
[self addTeardownBlock:^{
|
|
832
|
+
[component prepareForRecycle];
|
|
833
|
+
[component removeFromSuperview];
|
|
834
|
+
}];
|
|
804
835
|
[component.contentView layoutIfNeeded];
|
|
805
836
|
return component;
|
|
806
837
|
}
|