@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.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +306 -0
  3. package/android/Android.mk +45 -0
  4. package/android/build.gradle +237 -0
  5. package/android/debug.keystore +0 -0
  6. package/android/gradle.properties +5 -0
  7. package/android/registration.cpp +18 -0
  8. package/android/src/main/AndroidManifest.xml +4 -0
  9. package/android/src/main/java/com/reactnativepagerview/NestedScrollableHost.kt +148 -0
  10. package/android/src/main/java/com/reactnativepagerview/PagerViewViewManager.kt +222 -0
  11. package/android/src/main/java/com/reactnativepagerview/PagerViewViewManagerImpl.kt +228 -0
  12. package/android/src/main/java/com/reactnativepagerview/PagerViewViewPackage.kt +17 -0
  13. package/android/src/main/java/com/reactnativepagerview/ViewPagerAdapter.kt +121 -0
  14. package/android/src/main/java/com/reactnativepagerview/ViewPagerViewHolder.kt +21 -0
  15. package/android/src/main/java/com/reactnativepagerview/event/PageScrollEvent.kt +47 -0
  16. package/android/src/main/java/com/reactnativepagerview/event/PageScrollStateChangedEvent.kt +34 -0
  17. package/android/src/main/java/com/reactnativepagerview/event/PageSelectedEvent.kt +38 -0
  18. package/ios/PagerView.xcodeproj/project.pbxproj +274 -0
  19. package/ios/RCTOnPageScrollEvent.h +14 -0
  20. package/ios/RCTOnPageScrollEvent.m +60 -0
  21. package/ios/RNCPagerViewComponentView.h +11 -0
  22. package/ios/RNCPagerViewComponentView.mm +704 -0
  23. package/lib/module/PagerView.js +136 -0
  24. package/lib/module/PagerView.js.map +1 -0
  25. package/lib/module/PagerViewNativeComponent.ts +82 -0
  26. package/lib/module/codegen-types.d.js +2 -0
  27. package/lib/module/codegen-types.d.js.map +1 -0
  28. package/lib/module/index.js +6 -0
  29. package/lib/module/index.js.map +1 -0
  30. package/lib/module/package.json +1 -0
  31. package/lib/module/usePagerView.js +106 -0
  32. package/lib/module/usePagerView.js.map +1 -0
  33. package/lib/module/utils.js +27 -0
  34. package/lib/module/utils.js.map +1 -0
  35. package/lib/typescript/package.json +1 -0
  36. package/lib/typescript/src/PagerView.d.ts +70 -0
  37. package/lib/typescript/src/PagerView.d.ts.map +1 -0
  38. package/lib/typescript/src/PagerViewNativeComponent.d.ts +51 -0
  39. package/lib/typescript/src/PagerViewNativeComponent.d.ts.map +1 -0
  40. package/lib/typescript/src/index.d.ts +10 -0
  41. package/lib/typescript/src/index.d.ts.map +1 -0
  42. package/lib/typescript/src/usePagerView.d.ts +38 -0
  43. package/lib/typescript/src/usePagerView.d.ts.map +1 -0
  44. package/lib/typescript/src/utils.d.ts +3 -0
  45. package/lib/typescript/src/utils.d.ts.map +1 -0
  46. package/package.json +101 -0
  47. package/react-native-pager-view.podspec +20 -0
  48. package/src/PagerView.tsx +170 -0
  49. package/src/PagerViewNativeComponent.ts +82 -0
  50. package/src/codegen-types.d.ts +28 -0
  51. package/src/index.tsx +27 -0
  52. package/src/usePagerView.ts +148 -0
  53. 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
@@ -0,0 +1,11 @@
1
+ #import <UIKit/UIKit.h>
2
+ #import <Foundation/Foundation.h>
3
+ #import <React/RCTViewComponentView.h>
4
+
5
+ NS_ASSUME_NONNULL_BEGIN
6
+
7
+ @interface RNCPagerViewComponentView : RCTViewComponentView
8
+
9
+ @end
10
+
11
+ NS_ASSUME_NONNULL_END