@onekeyfe/react-native-pager-view 1.1.35
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/LICENSE +21 -0
- package/README.md +306 -0
- package/android/Android.mk +45 -0
- package/android/build.gradle +237 -0
- package/android/debug.keystore +0 -0
- package/android/gradle.properties +5 -0
- package/android/registration.cpp +18 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/reactnativepagerview/NestedScrollableHost.kt +148 -0
- package/android/src/main/java/com/reactnativepagerview/PagerViewViewManager.kt +222 -0
- package/android/src/main/java/com/reactnativepagerview/PagerViewViewManagerImpl.kt +228 -0
- package/android/src/main/java/com/reactnativepagerview/PagerViewViewPackage.kt +17 -0
- package/android/src/main/java/com/reactnativepagerview/ViewPagerAdapter.kt +121 -0
- package/android/src/main/java/com/reactnativepagerview/ViewPagerViewHolder.kt +21 -0
- package/android/src/main/java/com/reactnativepagerview/event/PageScrollEvent.kt +47 -0
- package/android/src/main/java/com/reactnativepagerview/event/PageScrollStateChangedEvent.kt +34 -0
- package/android/src/main/java/com/reactnativepagerview/event/PageSelectedEvent.kt +38 -0
- package/ios/PagerView.xcodeproj/project.pbxproj +274 -0
- package/ios/RCTOnPageScrollEvent.h +14 -0
- package/ios/RCTOnPageScrollEvent.m +60 -0
- package/ios/RNCPagerViewComponentView.h +11 -0
- package/ios/RNCPagerViewComponentView.mm +704 -0
- package/lib/module/PagerView.js +136 -0
- package/lib/module/PagerView.js.map +1 -0
- package/lib/module/PagerViewNativeComponent.ts +82 -0
- package/lib/module/codegen-types.d.js +2 -0
- package/lib/module/codegen-types.d.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/usePagerView.js +106 -0
- package/lib/module/usePagerView.js.map +1 -0
- package/lib/module/utils.js +27 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/PagerView.d.ts +70 -0
- package/lib/typescript/src/PagerView.d.ts.map +1 -0
- package/lib/typescript/src/PagerViewNativeComponent.d.ts +51 -0
- package/lib/typescript/src/PagerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/usePagerView.d.ts +38 -0
- package/lib/typescript/src/usePagerView.d.ts.map +1 -0
- package/lib/typescript/src/utils.d.ts +3 -0
- package/lib/typescript/src/utils.d.ts.map +1 -0
- package/package.json +101 -0
- package/react-native-pager-view.podspec +20 -0
- package/src/PagerView.tsx +170 -0
- package/src/PagerViewNativeComponent.ts +82 -0
- package/src/codegen-types.d.ts +28 -0
- package/src/index.tsx +27 -0
- package/src/usePagerView.ts +148 -0
- package/src/utils.tsx +22 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
package com.reactnativepagerview
|
|
2
|
+
|
|
3
|
+
import android.os.Handler
|
|
4
|
+
import android.os.Looper
|
|
5
|
+
import android.view.View
|
|
6
|
+
import android.view.ViewGroup
|
|
7
|
+
import android.widget.FrameLayout
|
|
8
|
+
import androidx.recyclerview.widget.RecyclerView
|
|
9
|
+
import androidx.recyclerview.widget.RecyclerView.Adapter
|
|
10
|
+
import android.util.Log
|
|
11
|
+
import java.util.*
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ViewPagerAdapter() : Adapter<ViewPagerViewHolder>() {
|
|
15
|
+
private companion object {
|
|
16
|
+
private const val TAG = "PagerView"
|
|
17
|
+
}
|
|
18
|
+
private val childrenViews: ArrayList<View> = ArrayList()
|
|
19
|
+
private var recyclerView: RecyclerView? = null
|
|
20
|
+
private val handler = Handler(Looper.getMainLooper())
|
|
21
|
+
|
|
22
|
+
override fun onAttachedToRecyclerView(rv: RecyclerView) {
|
|
23
|
+
super.onAttachedToRecyclerView(rv)
|
|
24
|
+
recyclerView = rv
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override fun onDetachedFromRecyclerView(rv: RecyclerView) {
|
|
28
|
+
super.onDetachedFromRecyclerView(rv)
|
|
29
|
+
handler.removeCallbacksAndMessages(null)
|
|
30
|
+
recyclerView = null
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewPagerViewHolder {
|
|
34
|
+
return ViewPagerViewHolder.create(parent)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override fun onBindViewHolder(holder: ViewPagerViewHolder, index: Int) {
|
|
38
|
+
val container: FrameLayout = holder.container
|
|
39
|
+
val child = getChildAt(index)
|
|
40
|
+
holder.setIsRecyclable(false)
|
|
41
|
+
|
|
42
|
+
if (container.childCount > 0) {
|
|
43
|
+
container.removeAllViews()
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (child.parent != null) {
|
|
47
|
+
(child.parent as FrameLayout).removeView(child)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
container.addView(child)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
override fun getItemCount(): Int {
|
|
54
|
+
return childrenViews.size
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
private fun isComputingLayout(): Boolean {
|
|
58
|
+
val rv = recyclerView
|
|
59
|
+
return rv != null && rv.isComputingLayout
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
fun addChild(child: View, index: Int) {
|
|
63
|
+
if (isComputingLayout()) {
|
|
64
|
+
handler.post { addChild(child, index) }
|
|
65
|
+
return
|
|
66
|
+
}
|
|
67
|
+
val safeIndex = index.coerceIn(0, childrenViews.size)
|
|
68
|
+
if (safeIndex != index) {
|
|
69
|
+
Log.w(TAG, "addChild index $index out of bounds (size=${childrenViews.size}), clamped to $safeIndex")
|
|
70
|
+
}
|
|
71
|
+
childrenViews.add(safeIndex, child)
|
|
72
|
+
notifyItemInserted(safeIndex)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
fun getChildAt(index: Int): View {
|
|
76
|
+
return childrenViews[index]
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
fun removeChild(child: View) {
|
|
80
|
+
if (isComputingLayout()) {
|
|
81
|
+
handler.post { removeChild(child) }
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
val index = childrenViews.indexOf(child)
|
|
85
|
+
if (index >= 0) {
|
|
86
|
+
childrenViews.removeAt(index)
|
|
87
|
+
notifyItemRemoved(index)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
fun removeAll() {
|
|
92
|
+
if (isComputingLayout()) {
|
|
93
|
+
handler.post { removeAll() }
|
|
94
|
+
return
|
|
95
|
+
}
|
|
96
|
+
for (index in 1..childrenViews.size) {
|
|
97
|
+
val child = childrenViews[index-1]
|
|
98
|
+
if (child.parent?.parent != null) {
|
|
99
|
+
(child.parent.parent as ViewGroup).removeView(child.parent as View)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
val removedChildrenCount = childrenViews.size
|
|
103
|
+
childrenViews.clear()
|
|
104
|
+
notifyItemRangeRemoved(0, removedChildrenCount)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
fun removeChildAt(index: Int) {
|
|
108
|
+
if (isComputingLayout()) {
|
|
109
|
+
// Capture child by identity to avoid stale-index removal after deferral
|
|
110
|
+
if (index >= 0 && index < childrenViews.size) {
|
|
111
|
+
val child = childrenViews[index]
|
|
112
|
+
handler.post { removeChild(child) }
|
|
113
|
+
}
|
|
114
|
+
return
|
|
115
|
+
}
|
|
116
|
+
if (index >= 0 && index < childrenViews.size) {
|
|
117
|
+
childrenViews.removeAt(index)
|
|
118
|
+
notifyItemRemoved(index)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package com.reactnativepagerview
|
|
2
|
+
|
|
3
|
+
import android.view.ViewGroup
|
|
4
|
+
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
|
5
|
+
import android.widget.FrameLayout
|
|
6
|
+
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ViewPagerViewHolder private constructor(container: FrameLayout) : ViewHolder(container) {
|
|
10
|
+
val container: FrameLayout
|
|
11
|
+
get() = itemView as FrameLayout
|
|
12
|
+
|
|
13
|
+
companion object {
|
|
14
|
+
fun create(parent: ViewGroup): ViewPagerViewHolder {
|
|
15
|
+
val container = FrameLayout(parent.context)
|
|
16
|
+
container.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
|
|
17
|
+
container.isSaveEnabled = false
|
|
18
|
+
return ViewPagerViewHolder(container)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
package com.reactnativepagerview.event
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
import com.facebook.react.uimanager.events.Event
|
|
6
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
7
|
+
import java.lang.Float.isInfinite
|
|
8
|
+
import java.lang.Float.isNaN
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Event emitted by [ReactViewPager] when user scrolls between pages (or when animating
|
|
13
|
+
* between pages).
|
|
14
|
+
*
|
|
15
|
+
* Additional data provided by this event:
|
|
16
|
+
* - position - index of first page from the left that is currently visible
|
|
17
|
+
* - offset - value from range [0,1) describing stage between page transitions. Value x means that
|
|
18
|
+
* (1 - x) fraction of the page at "position" index is visible, and x fraction of the next page
|
|
19
|
+
* is visible.
|
|
20
|
+
*/
|
|
21
|
+
class PageScrollEvent(viewTag: Int, private val mPosition: Int, offset: Float) : Event<PageScrollEvent>(viewTag) {
|
|
22
|
+
private val mOffset: Float = if (isInfinite(offset) || isNaN(offset)) 0.0f else offset
|
|
23
|
+
override fun getEventName(): String {
|
|
24
|
+
return EVENT_NAME
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override fun dispatch(rctEventEmitter: RCTEventEmitter) {
|
|
28
|
+
rctEventEmitter.receiveEvent(viewTag, eventName, serializeEventData())
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private fun serializeEventData(): WritableMap {
|
|
32
|
+
val eventData = Arguments.createMap()
|
|
33
|
+
eventData.putInt("position", mPosition)
|
|
34
|
+
eventData.putDouble("offset", mOffset.toDouble())
|
|
35
|
+
return eventData
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
companion object {
|
|
39
|
+
const val EVENT_NAME = "topPageScroll"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
init {
|
|
43
|
+
|
|
44
|
+
// folly::toJson default options don't support serialize NaN or Infinite value
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
package com.reactnativepagerview.event
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
import com.facebook.react.uimanager.events.Event
|
|
6
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Event emitted by [ReactViewPager] when user scrolling state changed.
|
|
11
|
+
*
|
|
12
|
+
* Additional data provided by this event:
|
|
13
|
+
* - pageScrollState - {Idle,Dragging,Settling}
|
|
14
|
+
*/
|
|
15
|
+
class PageScrollStateChangedEvent(viewTag: Int, private val mPageScrollState: String) : Event<PageScrollStateChangedEvent>(viewTag) {
|
|
16
|
+
override fun getEventName(): String {
|
|
17
|
+
return EVENT_NAME
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun dispatch(rctEventEmitter: RCTEventEmitter) {
|
|
21
|
+
rctEventEmitter.receiveEvent(viewTag, eventName, serializeEventData())
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private fun serializeEventData(): WritableMap {
|
|
25
|
+
val eventData = Arguments.createMap()
|
|
26
|
+
eventData.putString("pageScrollState", mPageScrollState)
|
|
27
|
+
return eventData
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
companion object {
|
|
31
|
+
const val EVENT_NAME = "topPageScrollStateChanged"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
package com.reactnativepagerview.event
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
import com.facebook.react.uimanager.events.Event
|
|
6
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Event emitted by [ReactViewPager] when selected page changes.
|
|
11
|
+
*
|
|
12
|
+
* Additional data provided by this event:
|
|
13
|
+
* - position - index of page that has been selected
|
|
14
|
+
*/
|
|
15
|
+
class PageSelectedEvent(viewTag: Int, private val mPosition: Int) : Event<PageSelectedEvent>(viewTag) {
|
|
16
|
+
override fun getEventName(): String {
|
|
17
|
+
return EVENT_NAME
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun canCoalesce(): Boolean {
|
|
21
|
+
return false
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
override fun dispatch(rctEventEmitter: RCTEventEmitter) {
|
|
25
|
+
rctEventEmitter.receiveEvent(viewTag, eventName, serializeEventData())
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private fun serializeEventData(): WritableMap {
|
|
29
|
+
val eventData = Arguments.createMap()
|
|
30
|
+
eventData.putInt("position", mPosition)
|
|
31
|
+
return eventData
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
companion object {
|
|
35
|
+
const val EVENT_NAME = "topPageSelected"
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 46;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXBuildFile section */
|
|
10
|
+
5E555C0D2413F4C50049A1A2 /* PagerView.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* PagerView.m */; };
|
|
11
|
+
/* End PBXBuildFile section */
|
|
12
|
+
|
|
13
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
|
14
|
+
58B511D91A9E6C8500147676 /* CopyFiles */ = {
|
|
15
|
+
isa = PBXCopyFilesBuildPhase;
|
|
16
|
+
buildActionMask = 2147483647;
|
|
17
|
+
dstPath = "include/$(PRODUCT_NAME)";
|
|
18
|
+
dstSubfolderSpec = 16;
|
|
19
|
+
files = (
|
|
20
|
+
);
|
|
21
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
22
|
+
};
|
|
23
|
+
/* End PBXCopyFilesBuildPhase section */
|
|
24
|
+
|
|
25
|
+
/* Begin PBXFileReference section */
|
|
26
|
+
134814201AA4EA6300B7C361 /* libPagerView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPagerView.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
27
|
+
B3E7B5881CC2AC0600A0062D /* PagerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PagerView.h; sourceTree = "<group>"; };
|
|
28
|
+
B3E7B5891CC2AC0600A0062D /* PagerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PagerView.m; sourceTree = "<group>"; };
|
|
29
|
+
/* End PBXFileReference section */
|
|
30
|
+
|
|
31
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
32
|
+
58B511D81A9E6C8500147676 /* Frameworks */ = {
|
|
33
|
+
isa = PBXFrameworksBuildPhase;
|
|
34
|
+
buildActionMask = 2147483647;
|
|
35
|
+
files = (
|
|
36
|
+
);
|
|
37
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
38
|
+
};
|
|
39
|
+
/* End PBXFrameworksBuildPhase section */
|
|
40
|
+
|
|
41
|
+
/* Begin PBXGroup section */
|
|
42
|
+
134814211AA4EA7D00B7C361 /* Products */ = {
|
|
43
|
+
isa = PBXGroup;
|
|
44
|
+
children = (
|
|
45
|
+
134814201AA4EA6300B7C361 /* libPagerView.a */,
|
|
46
|
+
);
|
|
47
|
+
name = Products;
|
|
48
|
+
sourceTree = "<group>";
|
|
49
|
+
};
|
|
50
|
+
58B511D21A9E6C8500147676 = {
|
|
51
|
+
isa = PBXGroup;
|
|
52
|
+
children = (
|
|
53
|
+
B3E7B5881CC2AC0600A0062D /* PagerView.h */,
|
|
54
|
+
B3E7B5891CC2AC0600A0062D /* PagerView.m */,
|
|
55
|
+
134814211AA4EA7D00B7C361 /* Products */,
|
|
56
|
+
);
|
|
57
|
+
sourceTree = "<group>";
|
|
58
|
+
};
|
|
59
|
+
/* End PBXGroup section */
|
|
60
|
+
|
|
61
|
+
/* Begin PBXNativeTarget section */
|
|
62
|
+
58B511DA1A9E6C8500147676 /* PagerView */ = {
|
|
63
|
+
isa = PBXNativeTarget;
|
|
64
|
+
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "PagerView" */;
|
|
65
|
+
buildPhases = (
|
|
66
|
+
58B511D71A9E6C8500147676 /* Sources */,
|
|
67
|
+
58B511D81A9E6C8500147676 /* Frameworks */,
|
|
68
|
+
58B511D91A9E6C8500147676 /* CopyFiles */,
|
|
69
|
+
);
|
|
70
|
+
buildRules = (
|
|
71
|
+
);
|
|
72
|
+
dependencies = (
|
|
73
|
+
);
|
|
74
|
+
name = PagerView;
|
|
75
|
+
productName = RCTDataManager;
|
|
76
|
+
productReference = 134814201AA4EA6300B7C361 /* libPagerView.a */;
|
|
77
|
+
productType = "com.apple.product-type.library.static";
|
|
78
|
+
};
|
|
79
|
+
/* End PBXNativeTarget section */
|
|
80
|
+
|
|
81
|
+
/* Begin PBXProject section */
|
|
82
|
+
58B511D31A9E6C8500147676 /* Project object */ = {
|
|
83
|
+
isa = PBXProject;
|
|
84
|
+
attributes = {
|
|
85
|
+
LastUpgradeCheck = 0920;
|
|
86
|
+
ORGANIZATIONNAME = Facebook;
|
|
87
|
+
TargetAttributes = {
|
|
88
|
+
58B511DA1A9E6C8500147676 = {
|
|
89
|
+
CreatedOnToolsVersion = 6.1.1;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "PagerView" */;
|
|
94
|
+
compatibilityVersion = "Xcode 3.2";
|
|
95
|
+
developmentRegion = English;
|
|
96
|
+
hasScannedForEncodings = 0;
|
|
97
|
+
knownRegions = (
|
|
98
|
+
English,
|
|
99
|
+
en,
|
|
100
|
+
);
|
|
101
|
+
mainGroup = 58B511D21A9E6C8500147676;
|
|
102
|
+
productRefGroup = 58B511D21A9E6C8500147676;
|
|
103
|
+
projectDirPath = "";
|
|
104
|
+
projectRoot = "";
|
|
105
|
+
targets = (
|
|
106
|
+
58B511DA1A9E6C8500147676 /* PagerView */,
|
|
107
|
+
);
|
|
108
|
+
};
|
|
109
|
+
/* End PBXProject section */
|
|
110
|
+
|
|
111
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
112
|
+
58B511D71A9E6C8500147676 /* Sources */ = {
|
|
113
|
+
isa = PBXSourcesBuildPhase;
|
|
114
|
+
buildActionMask = 2147483647;
|
|
115
|
+
files = (
|
|
116
|
+
B3E7B58A1CC2AC0600A0062D /* PagerView.m in Sources */,
|
|
117
|
+
);
|
|
118
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
119
|
+
};
|
|
120
|
+
/* End PBXSourcesBuildPhase section */
|
|
121
|
+
|
|
122
|
+
/* Begin XCBuildConfiguration section */
|
|
123
|
+
58B511ED1A9E6C8500147676 /* Debug */ = {
|
|
124
|
+
isa = XCBuildConfiguration;
|
|
125
|
+
buildSettings = {
|
|
126
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
127
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
128
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
129
|
+
CLANG_ENABLE_MODULES = YES;
|
|
130
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
131
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
132
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
133
|
+
CLANG_WARN_COMMA = YES;
|
|
134
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
135
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
136
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
137
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
138
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
139
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
140
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
141
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
142
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
143
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
144
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
145
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
146
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
147
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
148
|
+
COPY_PHASE_STRIP = NO;
|
|
149
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
150
|
+
ENABLE_TESTABILITY = YES;
|
|
151
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
152
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
153
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
154
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
155
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
156
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
157
|
+
"DEBUG=1",
|
|
158
|
+
"$(inherited)",
|
|
159
|
+
);
|
|
160
|
+
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
161
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
162
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
163
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
164
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
165
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
166
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
167
|
+
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
|
|
168
|
+
MTL_ENABLE_DEBUG_INFO = YES;
|
|
169
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
170
|
+
SDKROOT = iphoneos;
|
|
171
|
+
};
|
|
172
|
+
name = Debug;
|
|
173
|
+
};
|
|
174
|
+
58B511EE1A9E6C8500147676 /* Release */ = {
|
|
175
|
+
isa = XCBuildConfiguration;
|
|
176
|
+
buildSettings = {
|
|
177
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
178
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
179
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
180
|
+
CLANG_ENABLE_MODULES = YES;
|
|
181
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
182
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
183
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
184
|
+
CLANG_WARN_COMMA = YES;
|
|
185
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
186
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
187
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
188
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
189
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
190
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
191
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
192
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
193
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
194
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
195
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
196
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
197
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
198
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
199
|
+
COPY_PHASE_STRIP = YES;
|
|
200
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
201
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
202
|
+
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
|
203
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
204
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
205
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
206
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
207
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
208
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
209
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
210
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
211
|
+
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
|
|
212
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
213
|
+
SDKROOT = iphoneos;
|
|
214
|
+
VALIDATE_PRODUCT = YES;
|
|
215
|
+
};
|
|
216
|
+
name = Release;
|
|
217
|
+
};
|
|
218
|
+
58B511F01A9E6C8500147676 /* Debug */ = {
|
|
219
|
+
isa = XCBuildConfiguration;
|
|
220
|
+
buildSettings = {
|
|
221
|
+
HEADER_SEARCH_PATHS = (
|
|
222
|
+
"$(inherited)",
|
|
223
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
224
|
+
"$(SRCROOT)/../../../React/**",
|
|
225
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
226
|
+
);
|
|
227
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
228
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
229
|
+
PRODUCT_NAME = PagerView;
|
|
230
|
+
SKIP_INSTALL = YES;
|
|
231
|
+
};
|
|
232
|
+
name = Debug;
|
|
233
|
+
};
|
|
234
|
+
58B511F11A9E6C8500147676 /* Release */ = {
|
|
235
|
+
isa = XCBuildConfiguration;
|
|
236
|
+
buildSettings = {
|
|
237
|
+
HEADER_SEARCH_PATHS = (
|
|
238
|
+
"$(inherited)",
|
|
239
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
240
|
+
"$(SRCROOT)/../../../React/**",
|
|
241
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
242
|
+
);
|
|
243
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
244
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
245
|
+
PRODUCT_NAME = PagerView;
|
|
246
|
+
SKIP_INSTALL = YES;
|
|
247
|
+
};
|
|
248
|
+
name = Release;
|
|
249
|
+
};
|
|
250
|
+
/* End XCBuildConfiguration section */
|
|
251
|
+
|
|
252
|
+
/* Begin XCConfigurationList section */
|
|
253
|
+
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "PagerView" */ = {
|
|
254
|
+
isa = XCConfigurationList;
|
|
255
|
+
buildConfigurations = (
|
|
256
|
+
58B511ED1A9E6C8500147676 /* Debug */,
|
|
257
|
+
58B511EE1A9E6C8500147676 /* Release */,
|
|
258
|
+
);
|
|
259
|
+
defaultConfigurationIsVisible = 0;
|
|
260
|
+
defaultConfigurationName = Release;
|
|
261
|
+
};
|
|
262
|
+
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "PagerView" */ = {
|
|
263
|
+
isa = XCConfigurationList;
|
|
264
|
+
buildConfigurations = (
|
|
265
|
+
58B511F01A9E6C8500147676 /* Debug */,
|
|
266
|
+
58B511F11A9E6C8500147676 /* Release */,
|
|
267
|
+
);
|
|
268
|
+
defaultConfigurationIsVisible = 0;
|
|
269
|
+
defaultConfigurationName = Release;
|
|
270
|
+
};
|
|
271
|
+
/* End XCConfigurationList section */
|
|
272
|
+
};
|
|
273
|
+
rootObject = 58B511D31A9E6C8500147676 /* Project object */;
|
|
274
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import <React/RCTViewManager.h>
|
|
3
|
+
|
|
4
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
5
|
+
|
|
6
|
+
@interface RCTOnPageScrollEvent : NSObject <RCTEvent>
|
|
7
|
+
|
|
8
|
+
- (instancetype) initWithReactTag:(NSNumber *)reactTag
|
|
9
|
+
position:(NSNumber *)position
|
|
10
|
+
offset:(NSNumber *)offset;
|
|
11
|
+
|
|
12
|
+
@end
|
|
13
|
+
|
|
14
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#import <React/UIView+React.h>
|
|
2
|
+
#import "RCTOnPageScrollEvent.h"
|
|
3
|
+
|
|
4
|
+
@implementation RCTOnPageScrollEvent
|
|
5
|
+
{
|
|
6
|
+
NSNumber* _position;
|
|
7
|
+
NSNumber* _offset;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@synthesize viewTag = _viewTag;
|
|
11
|
+
|
|
12
|
+
- (NSString *)eventName {
|
|
13
|
+
return @"onPageScroll";
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
- (instancetype) initWithReactTag:(NSNumber *)reactTag
|
|
17
|
+
position:(NSNumber *)position
|
|
18
|
+
offset:(NSNumber *)offset;
|
|
19
|
+
{
|
|
20
|
+
RCTAssertParam(reactTag);
|
|
21
|
+
|
|
22
|
+
if ((self = [super init])) {
|
|
23
|
+
_viewTag = reactTag;
|
|
24
|
+
_position = position;
|
|
25
|
+
_offset = offset;
|
|
26
|
+
}
|
|
27
|
+
return self;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
RCT_NOT_IMPLEMENTED(- (instancetype)init)
|
|
31
|
+
- (uint16_t)coalescingKey
|
|
32
|
+
{
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
- (BOOL)canCoalesce
|
|
38
|
+
{
|
|
39
|
+
return YES;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
+ (NSString *)moduleDotMethod
|
|
43
|
+
{
|
|
44
|
+
return @"RCTEventEmitter.receiveEvent";
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
- (NSArray *)arguments
|
|
48
|
+
{
|
|
49
|
+
return @[self.viewTag, RCTNormalizeInputEventName(self.eventName), @{
|
|
50
|
+
@"position": _position,
|
|
51
|
+
@"offset": _offset
|
|
52
|
+
}];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
- (id<RCTEvent>)coalesceWithEvent:(id<RCTEvent>)newEvent;
|
|
56
|
+
{
|
|
57
|
+
return newEvent;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@end
|