react-native-list 1.0.1 → 2.0.0-alpha.1
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 +188 -32
- package/ReactNativeList.podspec +39 -0
- package/android/CMakeLists.txt +48 -0
- package/android/build.gradle +151 -0
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/JHybridUiListModule.cpp +192 -0
- package/android/src/main/cpp/JHybridUiListModule.h +50 -0
- package/android/src/main/cpp/cpp-adapter.cpp +12 -0
- package/android/src/main/java/com/hannojg/reactnativelist/ReactNativeListPackage.kt +27 -0
- package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridNativeListDataSource.kt +146 -0
- package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridNativeListLayout.kt +86 -0
- package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridUiListModule.kt +116 -0
- package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridUiListView.kt +410 -0
- package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridViewHolder.kt +9 -0
- package/android/src/main/java/com/margelo/nitro/reactnativelist/NativeListAdapter.kt +217 -0
- package/ios/DataSource/HybridNativeListDataSource.swift +213 -0
- package/ios/HybridObjects/HybridUiListModule.swift +49 -0
- package/ios/HybridObjects/HybridViewHolder.swift +16 -0
- package/ios/Layout/HybridNativeListLayout.swift +128 -0
- package/ios/Utils/ErrorUtils.h +26 -0
- package/ios/Utils/HybridIOSWorkletsModuleProxyHolder.swift +10 -0
- package/ios/Utils/SurfaceHelper.h +20 -0
- package/ios/Utils/SurfaceHelper.mm +144 -0
- package/ios/Utils/SurfacePresenterRegistry.h +17 -0
- package/ios/Utils/SurfacePresenterRegistry.m +31 -0
- package/ios/Utils/TurboModuleInstaller.h +18 -0
- package/ios/Utils/TurboModuleInstaller.mm +267 -0
- package/ios/Views/HostCell.swift +216 -0
- package/ios/Views/HybridUiListView.swift +695 -0
- package/metro/RendererProxyThreadSwitch.js +66 -0
- package/metro-config.d.ts +1 -0
- package/metro-config.js +52 -0
- package/nitro.json +47 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/ReactNativeList+autolinking.cmake +99 -0
- package/nitrogen/generated/android/ReactNativeList+autolinking.gradle +27 -0
- package/nitrogen/generated/android/ReactNativeListOnLoad.cpp +156 -0
- package/nitrogen/generated/android/ReactNativeListOnLoad.hpp +34 -0
- package/nitrogen/generated/android/c++/JFunc_bool_NativeListItem_NativeListItem.hpp +83 -0
- package/nitrogen/generated/android/c++/JFunc_bool_double_NativeListItem_double.hpp +83 -0
- package/nitrogen/generated/android/c++/JFunc_double_std__string.hpp +78 -0
- package/nitrogen/generated/android/c++/JHybridIOSWorkletsModuleProxyHolderSpec.cpp +49 -0
- package/nitrogen/generated/android/c++/JHybridIOSWorkletsModuleProxyHolderSpec.hpp +63 -0
- package/nitrogen/generated/android/c++/JHybridNativeLinearListLayoutSpec.cpp +63 -0
- package/nitrogen/generated/android/c++/JHybridNativeLinearListLayoutSpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridNativeListDataSourceSpec.cpp +101 -0
- package/nitrogen/generated/android/c++/JHybridNativeListDataSourceSpec.hpp +70 -0
- package/nitrogen/generated/android/c++/JHybridNativeListLayoutSpec.cpp +49 -0
- package/nitrogen/generated/android/c++/JHybridNativeListLayoutSpec.hpp +63 -0
- package/nitrogen/generated/android/c++/JHybridUiListModuleSpec.cpp +65 -0
- package/nitrogen/generated/android/c++/JHybridUiListModuleSpec.hpp +64 -0
- package/nitrogen/generated/android/c++/JHybridUiListViewSpec.cpp +92 -0
- package/nitrogen/generated/android/c++/JHybridUiListViewSpec.hpp +67 -0
- package/nitrogen/generated/android/c++/JHybridViewHolderSpec.cpp +49 -0
- package/nitrogen/generated/android/c++/JHybridViewHolderSpec.hpp +63 -0
- package/nitrogen/generated/android/c++/JNativeItemSizeEstimate.hpp +61 -0
- package/nitrogen/generated/android/c++/JNativeLinearListLayoutConfig.hpp +81 -0
- package/nitrogen/generated/android/c++/JNativeLinearListLayoutIOSConfig.hpp +59 -0
- package/nitrogen/generated/android/c++/JNativeListItem.hpp +76 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_HybridIOSWorkletsModuleProxyHolderSpec.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_HybridIOSWorkletsModuleProxyHolderSpec.hpp +72 -0
- package/nitrogen/generated/android/c++/views/JHybridUiListViewStateUpdater.cpp +53 -0
- package/nitrogen/generated/android/c++/views/JHybridUiListViewStateUpdater.hpp +49 -0
- package/nitrogen/generated/android/c++/views/JHybridViewHolderStateUpdater.cpp +53 -0
- package/nitrogen/generated/android/c++/views/JHybridViewHolderStateUpdater.hpp +49 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Func_bool_NativeListItem_NativeListItem.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Func_bool_double_NativeListItem_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Func_double_std__string.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridIOSWorkletsModuleProxyHolderSpec.kt +52 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridNativeLinearListLayoutSpec.kt +54 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridNativeListDataSourceSpec.kt +87 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridNativeListLayoutSpec.kt +52 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridUiListModuleSpec.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridUiListViewSpec.kt +76 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridViewHolderSpec.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeItemSizeEstimate.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeLinearListLayoutConfig.kt +76 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeLinearListLayoutIOSConfig.kt +51 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeListItem.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/ReactNativeListOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Variant_NullType_HybridIOSWorkletsModuleProxyHolderSpec.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridUiListViewManager.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridUiListViewStateUpdater.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridViewHolderManager.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridViewHolderStateUpdater.kt +23 -0
- package/nitrogen/generated/ios/ReactNativeList+autolinking.rb +62 -0
- package/nitrogen/generated/ios/ReactNativeList-Swift-Cxx-Bridge.cpp +162 -0
- package/nitrogen/generated/ios/ReactNativeList-Swift-Cxx-Bridge.hpp +368 -0
- package/nitrogen/generated/ios/ReactNativeList-Swift-Cxx-Umbrella.hpp +92 -0
- package/nitrogen/generated/ios/ReactNativeListAutolinking.mm +83 -0
- package/nitrogen/generated/ios/ReactNativeListAutolinking.swift +86 -0
- package/nitrogen/generated/ios/c++/HybridIOSWorkletsModuleProxyHolderSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridIOSWorkletsModuleProxyHolderSpecSwift.hpp +75 -0
- package/nitrogen/generated/ios/c++/HybridNativeLinearListLayoutSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNativeLinearListLayoutSpecSwift.hpp +92 -0
- package/nitrogen/generated/ios/c++/HybridNativeListDataSourceSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNativeListDataSourceSpecSwift.hpp +132 -0
- package/nitrogen/generated/ios/c++/HybridNativeListLayoutSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNativeListLayoutSpecSwift.hpp +75 -0
- package/nitrogen/generated/ios/c++/HybridUiListModuleSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridUiListModuleSpecSwift.hpp +93 -0
- package/nitrogen/generated/ios/c++/HybridUiListViewSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridUiListViewSpecSwift.hpp +121 -0
- package/nitrogen/generated/ios/c++/HybridViewHolderSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewHolderSpecSwift.hpp +75 -0
- package/nitrogen/generated/ios/c++/views/HybridUiListViewComponent.mm +118 -0
- package/nitrogen/generated/ios/c++/views/HybridViewHolderComponent.mm +118 -0
- package/nitrogen/generated/ios/swift/Func_bool_NativeListItem_NativeListItem.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_bool_double_NativeListItem_double.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_double_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridIOSWorkletsModuleProxyHolderSpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridIOSWorkletsModuleProxyHolderSpec_cxx.swift +128 -0
- package/nitrogen/generated/ios/swift/HybridNativeLinearListLayoutSpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridNativeLinearListLayoutSpec_cxx.swift +140 -0
- package/nitrogen/generated/ios/swift/HybridNativeListDataSourceSpec.swift +62 -0
- package/nitrogen/generated/ios/swift/HybridNativeListDataSourceSpec_cxx.swift +222 -0
- package/nitrogen/generated/ios/swift/HybridNativeListLayoutSpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridNativeListLayoutSpec_cxx.swift +128 -0
- package/nitrogen/generated/ios/swift/HybridUiListModuleSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridUiListModuleSpec_cxx.swift +175 -0
- package/nitrogen/generated/ios/swift/HybridUiListViewSpec.swift +59 -0
- package/nitrogen/generated/ios/swift/HybridUiListViewSpec_cxx.swift +227 -0
- package/nitrogen/generated/ios/swift/HybridViewHolderSpec.swift +55 -0
- package/nitrogen/generated/ios/swift/HybridViewHolderSpec_cxx.swift +147 -0
- package/nitrogen/generated/ios/swift/NativeItemSizeEstimate.swift +60 -0
- package/nitrogen/generated/ios/swift/NativeLinearListLayoutConfig.swift +60 -0
- package/nitrogen/generated/ios/swift/NativeLinearListLayoutIOSConfig.swift +35 -0
- package/nitrogen/generated/ios/swift/NativeListItem.swift +75 -0
- package/nitrogen/generated/ios/swift/Variant_NullType__any_HybridIOSWorkletsModuleProxyHolderSpec_.swift +30 -0
- package/nitrogen/generated/shared/c++/HybridIOSWorkletsModuleProxyHolderSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridIOSWorkletsModuleProxyHolderSpec.hpp +62 -0
- package/nitrogen/generated/shared/c++/HybridNativeLinearListLayoutSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridNativeLinearListLayoutSpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridNativeListDataSourceSpec.cpp +28 -0
- package/nitrogen/generated/shared/c++/HybridNativeListDataSourceSpec.hpp +72 -0
- package/nitrogen/generated/shared/c++/HybridNativeListLayoutSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridNativeListLayoutSpec.hpp +62 -0
- package/nitrogen/generated/shared/c++/HybridUiListModuleSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridUiListModuleSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridUiListViewSpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridUiListViewSpec.hpp +79 -0
- package/nitrogen/generated/shared/c++/HybridUiManagerHelperSpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridUiManagerHelperSpec.hpp +65 -0
- package/nitrogen/generated/shared/c++/HybridViewHolderSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridViewHolderSpec.hpp +62 -0
- package/nitrogen/generated/shared/c++/NativeItemSizeEstimate.hpp +87 -0
- package/nitrogen/generated/shared/c++/NativeLinearListLayoutConfig.hpp +105 -0
- package/nitrogen/generated/shared/c++/NativeLinearListLayoutIOSConfig.hpp +85 -0
- package/nitrogen/generated/shared/c++/NativeListItem.hpp +101 -0
- package/nitrogen/generated/shared/c++/views/HybridUiListViewComponent.cpp +72 -0
- package/nitrogen/generated/shared/c++/views/HybridUiListViewComponent.hpp +109 -0
- package/nitrogen/generated/shared/c++/views/HybridViewHolderComponent.cpp +72 -0
- package/nitrogen/generated/shared/c++/views/HybridViewHolderComponent.hpp +109 -0
- package/nitrogen/generated/shared/json/UiListViewConfig.json +9 -0
- package/nitrogen/generated/shared/json/ViewHolderConfig.json +9 -0
- package/package.json +152 -5
- package/react-native.config.js +16 -0
- package/src/ListDataSource.ts +232 -0
- package/src/ListLayout.ts +95 -0
- package/src/UiListModule.ts +5 -0
- package/src/hooks/useChangeEffect.ts +50 -0
- package/src/index.tsx +49 -0
- package/src/privateGlobals.ts +20 -0
- package/src/renderer/fabric/RenderHelper.ts +29 -0
- package/src/renderer/fabric/UiManagerHelper.ts +5 -0
- package/src/renderer/react/ReactFabricMirror.bundle.js +1984 -0
- package/src/renderer/react/ReactFabricMirror.ts +766 -0
- package/src/renderer/react/ReactFabricRenderer.ts +11 -0
- package/src/specs/IOSWorkletsModuleProxyHolder.nitro.ts +6 -0
- package/src/specs/NativeLinearListLayout.nitro.ts +23 -0
- package/src/specs/NativeListDataSource.nitro.ts +28 -0
- package/src/specs/NativeListLayout.nitro.ts +6 -0
- package/src/specs/UIListModule.nitro.ts +13 -0
- package/src/specs/UIManagerHelper.nitro.ts +34 -0
- package/src/specs/UiListView.nitro.ts +31 -0
- package/src/specs/ViewHolder.nitro.ts +11 -0
- package/src/views/List.tsx +525 -0
- package/src/views/UiListHostComponent.ts +8 -0
- package/FillRateHelper.js +0 -179
- package/FlatList.js +0 -494
- package/LICENSE.md +0 -31
- package/MetroListView.js +0 -166
- package/SectionList.js +0 -291
- package/ViewabilityHelper.js +0 -260
- package/VirtualizeUtils.js +0 -163
- package/VirtualizedList.js +0 -861
- package/VirtualizedSectionList.js +0 -397
- package/index.js +0 -5
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridUiListViewManager.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.reactnativelist.views
|
|
9
|
+
|
|
10
|
+
import android.view.View
|
|
11
|
+
import com.facebook.react.uimanager.ReactStylesDiffMap
|
|
12
|
+
import com.facebook.react.uimanager.SimpleViewManager
|
|
13
|
+
import com.facebook.react.uimanager.StateWrapper
|
|
14
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
15
|
+
import com.margelo.nitro.R.id.associated_hybrid_view_tag
|
|
16
|
+
import com.margelo.nitro.views.RecyclableView
|
|
17
|
+
import com.margelo.nitro.reactnativelist.*
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Represents the React Native `ViewManager` for the "UiListView" Nitro HybridView.
|
|
21
|
+
*/
|
|
22
|
+
public class HybridUiListViewManager: SimpleViewManager<View>() {
|
|
23
|
+
init {
|
|
24
|
+
if (RecyclableView::class.java.isAssignableFrom(HybridUiListView::class.java)) {
|
|
25
|
+
// Enable view recycling
|
|
26
|
+
super.setupViewRecycling()
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override fun getName(): String {
|
|
31
|
+
return "UiListView"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override fun createViewInstance(reactContext: ThemedReactContext): View {
|
|
35
|
+
val hybridView = HybridUiListView(reactContext)
|
|
36
|
+
val view = hybridView.view
|
|
37
|
+
view.setTag(associated_hybrid_view_tag, hybridView)
|
|
38
|
+
return view
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun updateState(view: View, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? {
|
|
42
|
+
val hybridView = getHybridView(view)
|
|
43
|
+
?: throw Error("Couldn't find view $view in local views table!")
|
|
44
|
+
|
|
45
|
+
// 1. Update each prop individually
|
|
46
|
+
hybridView.beforeUpdate()
|
|
47
|
+
HybridUiListViewStateUpdater.updateViewProps(hybridView, stateWrapper)
|
|
48
|
+
hybridView.afterUpdate()
|
|
49
|
+
|
|
50
|
+
// 2. Continue in base View props
|
|
51
|
+
return super.updateState(view, props, stateWrapper)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
override fun onDropViewInstance(view: View) {
|
|
55
|
+
val hybridView = getHybridView(view)
|
|
56
|
+
hybridView?.onDropView()
|
|
57
|
+
return super.onDropViewInstance(view)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: View): View? {
|
|
61
|
+
super.prepareToRecycleView(reactContext, view)
|
|
62
|
+
val hybridView = getHybridView(view)
|
|
63
|
+
?: return null
|
|
64
|
+
|
|
65
|
+
@Suppress("USELESS_IS_CHECK")
|
|
66
|
+
if (hybridView is RecyclableView) {
|
|
67
|
+
// Recycle in it's implementation
|
|
68
|
+
hybridView.prepareForRecycle()
|
|
69
|
+
|
|
70
|
+
// Maybe update the view if it changed
|
|
71
|
+
return hybridView.view
|
|
72
|
+
} else {
|
|
73
|
+
return null
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private fun getHybridView(view: View): HybridUiListView? {
|
|
78
|
+
return view.getTag(associated_hybrid_view_tag) as? HybridUiListView
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridUiListViewStateUpdater.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.reactnativelist.views
|
|
9
|
+
|
|
10
|
+
import com.facebook.react.uimanager.StateWrapper
|
|
11
|
+
import com.margelo.nitro.reactnativelist.*
|
|
12
|
+
|
|
13
|
+
internal class HybridUiListViewStateUpdater {
|
|
14
|
+
companion object {
|
|
15
|
+
/**
|
|
16
|
+
* Updates the props for [view] through C++.
|
|
17
|
+
* The [state] prop is expected to contain [view]'s props as wrapped Fabric state.
|
|
18
|
+
*/
|
|
19
|
+
@Suppress("KotlinJniMissingFunction")
|
|
20
|
+
@JvmStatic
|
|
21
|
+
external fun updateViewProps(view: HybridUiListViewSpec, state: StateWrapper)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridViewHolderManager.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.reactnativelist.views
|
|
9
|
+
|
|
10
|
+
import android.view.View
|
|
11
|
+
import com.facebook.react.uimanager.ReactStylesDiffMap
|
|
12
|
+
import com.facebook.react.uimanager.SimpleViewManager
|
|
13
|
+
import com.facebook.react.uimanager.StateWrapper
|
|
14
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
15
|
+
import com.margelo.nitro.R.id.associated_hybrid_view_tag
|
|
16
|
+
import com.margelo.nitro.views.RecyclableView
|
|
17
|
+
import com.margelo.nitro.reactnativelist.*
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Represents the React Native `ViewManager` for the "ViewHolder" Nitro HybridView.
|
|
21
|
+
*/
|
|
22
|
+
public class HybridViewHolderManager: SimpleViewManager<View>() {
|
|
23
|
+
init {
|
|
24
|
+
if (RecyclableView::class.java.isAssignableFrom(HybridViewHolder::class.java)) {
|
|
25
|
+
// Enable view recycling
|
|
26
|
+
super.setupViewRecycling()
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override fun getName(): String {
|
|
31
|
+
return "ViewHolder"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override fun createViewInstance(reactContext: ThemedReactContext): View {
|
|
35
|
+
val hybridView = HybridViewHolder(reactContext)
|
|
36
|
+
val view = hybridView.view
|
|
37
|
+
view.setTag(associated_hybrid_view_tag, hybridView)
|
|
38
|
+
return view
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun updateState(view: View, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? {
|
|
42
|
+
val hybridView = getHybridView(view)
|
|
43
|
+
?: throw Error("Couldn't find view $view in local views table!")
|
|
44
|
+
|
|
45
|
+
// 1. Update each prop individually
|
|
46
|
+
hybridView.beforeUpdate()
|
|
47
|
+
HybridViewHolderStateUpdater.updateViewProps(hybridView, stateWrapper)
|
|
48
|
+
hybridView.afterUpdate()
|
|
49
|
+
|
|
50
|
+
// 2. Continue in base View props
|
|
51
|
+
return super.updateState(view, props, stateWrapper)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
override fun onDropViewInstance(view: View) {
|
|
55
|
+
val hybridView = getHybridView(view)
|
|
56
|
+
hybridView?.onDropView()
|
|
57
|
+
return super.onDropViewInstance(view)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: View): View? {
|
|
61
|
+
super.prepareToRecycleView(reactContext, view)
|
|
62
|
+
val hybridView = getHybridView(view)
|
|
63
|
+
?: return null
|
|
64
|
+
|
|
65
|
+
@Suppress("USELESS_IS_CHECK")
|
|
66
|
+
if (hybridView is RecyclableView) {
|
|
67
|
+
// Recycle in it's implementation
|
|
68
|
+
hybridView.prepareForRecycle()
|
|
69
|
+
|
|
70
|
+
// Maybe update the view if it changed
|
|
71
|
+
return hybridView.view
|
|
72
|
+
} else {
|
|
73
|
+
return null
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private fun getHybridView(view: View): HybridViewHolder? {
|
|
78
|
+
return view.getTag(associated_hybrid_view_tag) as? HybridViewHolder
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridViewHolderStateUpdater.kt
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
package com.margelo.nitro.reactnativelist.views
|
|
9
|
+
|
|
10
|
+
import com.facebook.react.uimanager.StateWrapper
|
|
11
|
+
import com.margelo.nitro.reactnativelist.*
|
|
12
|
+
|
|
13
|
+
internal class HybridViewHolderStateUpdater {
|
|
14
|
+
companion object {
|
|
15
|
+
/**
|
|
16
|
+
* Updates the props for [view] through C++.
|
|
17
|
+
* The [state] prop is expected to contain [view]'s props as wrapped Fabric state.
|
|
18
|
+
*/
|
|
19
|
+
@Suppress("KotlinJniMissingFunction")
|
|
20
|
+
@JvmStatic
|
|
21
|
+
external fun updateViewProps(view: HybridViewHolderSpec, state: StateWrapper)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#
|
|
2
|
+
# ReactNativeList+autolinking.rb
|
|
3
|
+
# This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
# https://github.com/mrousavy/nitro
|
|
5
|
+
# Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
# This is a Ruby script that adds all files generated by Nitrogen
|
|
9
|
+
# to the given podspec.
|
|
10
|
+
#
|
|
11
|
+
# To use it, add this to your .podspec:
|
|
12
|
+
# ```ruby
|
|
13
|
+
# Pod::Spec.new do |spec|
|
|
14
|
+
# # ...
|
|
15
|
+
#
|
|
16
|
+
# # Add all files generated by Nitrogen
|
|
17
|
+
# load 'nitrogen/generated/ios/ReactNativeList+autolinking.rb'
|
|
18
|
+
# add_nitrogen_files(spec)
|
|
19
|
+
# end
|
|
20
|
+
# ```
|
|
21
|
+
|
|
22
|
+
def add_nitrogen_files(spec)
|
|
23
|
+
Pod::UI.puts "[NitroModules] 🔥 ReactNativeList is boosted by nitro!"
|
|
24
|
+
|
|
25
|
+
spec.dependency "NitroModules"
|
|
26
|
+
|
|
27
|
+
current_source_files = Array(spec.attributes_hash['source_files'])
|
|
28
|
+
spec.source_files = current_source_files + [
|
|
29
|
+
# Generated cross-platform specs
|
|
30
|
+
"nitrogen/generated/shared/**/*.{h,hpp,c,cpp,swift}",
|
|
31
|
+
# Generated bridges for the cross-platform specs
|
|
32
|
+
"nitrogen/generated/ios/**/*.{h,hpp,c,cpp,mm,swift}",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
current_public_header_files = Array(spec.attributes_hash['public_header_files'])
|
|
36
|
+
spec.public_header_files = current_public_header_files + [
|
|
37
|
+
# Generated specs
|
|
38
|
+
"nitrogen/generated/shared/**/*.{h,hpp}",
|
|
39
|
+
# Swift to C++ bridging helpers
|
|
40
|
+
"nitrogen/generated/ios/ReactNativeList-Swift-Cxx-Bridge.hpp"
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
current_private_header_files = Array(spec.attributes_hash['private_header_files'])
|
|
44
|
+
spec.private_header_files = current_private_header_files + [
|
|
45
|
+
# iOS specific specs
|
|
46
|
+
"nitrogen/generated/ios/c++/**/*.{h,hpp}",
|
|
47
|
+
# Views are framework-specific and should be private
|
|
48
|
+
"nitrogen/generated/shared/**/views/**/*"
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
current_pod_target_xcconfig = spec.attributes_hash['pod_target_xcconfig'] || {}
|
|
52
|
+
spec.pod_target_xcconfig = current_pod_target_xcconfig.merge({
|
|
53
|
+
# Use C++ 20
|
|
54
|
+
"CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
|
|
55
|
+
# Enables C++ <-> Swift interop (by default it's only ObjC)
|
|
56
|
+
"SWIFT_OBJC_INTEROP_MODE" => "objcxx",
|
|
57
|
+
# Enables stricter modular headers
|
|
58
|
+
"DEFINES_MODULE" => "YES",
|
|
59
|
+
# Disable auto-generated ObjC header for Swift (Static linkage on Xcode 26.4 breaks here)
|
|
60
|
+
"SWIFT_INSTALL_OBJC_HEADER" => "NO",
|
|
61
|
+
})
|
|
62
|
+
end
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// ReactNativeList-Swift-Cxx-Bridge.cpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include "ReactNativeList-Swift-Cxx-Bridge.hpp"
|
|
9
|
+
|
|
10
|
+
// Include C++ implementation defined types
|
|
11
|
+
#include "HybridIOSWorkletsModuleProxyHolderSpecSwift.hpp"
|
|
12
|
+
#include "HybridNativeLinearListLayoutSpecSwift.hpp"
|
|
13
|
+
#include "HybridNativeListDataSourceSpecSwift.hpp"
|
|
14
|
+
#include "HybridNativeListLayoutSpecSwift.hpp"
|
|
15
|
+
#include "HybridUiListModuleSpecSwift.hpp"
|
|
16
|
+
#include "HybridUiListViewSpecSwift.hpp"
|
|
17
|
+
#include "HybridViewHolderSpecSwift.hpp"
|
|
18
|
+
#include "ReactNativeList-Swift-Cxx-Umbrella.hpp"
|
|
19
|
+
#include <NitroModules/NitroDefines.hpp>
|
|
20
|
+
|
|
21
|
+
namespace margelo::nitro::reactnativelist::bridge::swift {
|
|
22
|
+
|
|
23
|
+
// pragma MARK: std::shared_ptr<HybridIOSWorkletsModuleProxyHolderSpec>
|
|
24
|
+
std::shared_ptr<HybridIOSWorkletsModuleProxyHolderSpec> create_std__shared_ptr_HybridIOSWorkletsModuleProxyHolderSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
25
|
+
ReactNativeList::HybridIOSWorkletsModuleProxyHolderSpec_cxx swiftPart = ReactNativeList::HybridIOSWorkletsModuleProxyHolderSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
26
|
+
return std::make_shared<margelo::nitro::reactnativelist::HybridIOSWorkletsModuleProxyHolderSpecSwift>(swiftPart);
|
|
27
|
+
}
|
|
28
|
+
void* NON_NULL get_std__shared_ptr_HybridIOSWorkletsModuleProxyHolderSpec_(std__shared_ptr_HybridIOSWorkletsModuleProxyHolderSpec_ cppType) {
|
|
29
|
+
std::shared_ptr<margelo::nitro::reactnativelist::HybridIOSWorkletsModuleProxyHolderSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::reactnativelist::HybridIOSWorkletsModuleProxyHolderSpecSwift>(cppType);
|
|
30
|
+
#ifdef NITRO_DEBUG
|
|
31
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
32
|
+
throw std::runtime_error("Class \"HybridIOSWorkletsModuleProxyHolderSpec\" is not implemented in Swift!");
|
|
33
|
+
}
|
|
34
|
+
#endif
|
|
35
|
+
ReactNativeList::HybridIOSWorkletsModuleProxyHolderSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
36
|
+
return swiftPart.toUnsafe();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// pragma MARK: std::shared_ptr<HybridNativeListLayoutSpec>
|
|
40
|
+
std::shared_ptr<HybridNativeListLayoutSpec> create_std__shared_ptr_HybridNativeListLayoutSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
41
|
+
ReactNativeList::HybridNativeListLayoutSpec_cxx swiftPart = ReactNativeList::HybridNativeListLayoutSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
42
|
+
return std::make_shared<margelo::nitro::reactnativelist::HybridNativeListLayoutSpecSwift>(swiftPart);
|
|
43
|
+
}
|
|
44
|
+
void* NON_NULL get_std__shared_ptr_HybridNativeListLayoutSpec_(std__shared_ptr_HybridNativeListLayoutSpec_ cppType) {
|
|
45
|
+
std::shared_ptr<margelo::nitro::reactnativelist::HybridNativeListLayoutSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::reactnativelist::HybridNativeListLayoutSpecSwift>(cppType);
|
|
46
|
+
#ifdef NITRO_DEBUG
|
|
47
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
48
|
+
throw std::runtime_error("Class \"HybridNativeListLayoutSpec\" is not implemented in Swift!");
|
|
49
|
+
}
|
|
50
|
+
#endif
|
|
51
|
+
ReactNativeList::HybridNativeListLayoutSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
52
|
+
return swiftPart.toUnsafe();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// pragma MARK: std::shared_ptr<HybridNativeLinearListLayoutSpec>
|
|
56
|
+
std::shared_ptr<HybridNativeLinearListLayoutSpec> create_std__shared_ptr_HybridNativeLinearListLayoutSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
57
|
+
ReactNativeList::HybridNativeLinearListLayoutSpec_cxx swiftPart = ReactNativeList::HybridNativeLinearListLayoutSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
58
|
+
return std::make_shared<margelo::nitro::reactnativelist::HybridNativeLinearListLayoutSpecSwift>(swiftPart);
|
|
59
|
+
}
|
|
60
|
+
void* NON_NULL get_std__shared_ptr_HybridNativeLinearListLayoutSpec_(std__shared_ptr_HybridNativeLinearListLayoutSpec_ cppType) {
|
|
61
|
+
std::shared_ptr<margelo::nitro::reactnativelist::HybridNativeLinearListLayoutSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::reactnativelist::HybridNativeLinearListLayoutSpecSwift>(cppType);
|
|
62
|
+
#ifdef NITRO_DEBUG
|
|
63
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
64
|
+
throw std::runtime_error("Class \"HybridNativeLinearListLayoutSpec\" is not implemented in Swift!");
|
|
65
|
+
}
|
|
66
|
+
#endif
|
|
67
|
+
ReactNativeList::HybridNativeLinearListLayoutSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
68
|
+
return swiftPart.toUnsafe();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// pragma MARK: std::function<bool(const NativeListItem& /* oldItem */, const NativeListItem& /* newItem */)>
|
|
72
|
+
Func_bool_NativeListItem_NativeListItem create_Func_bool_NativeListItem_NativeListItem(void* NON_NULL swiftClosureWrapper) noexcept {
|
|
73
|
+
auto swiftClosure = ReactNativeList::Func_bool_NativeListItem_NativeListItem::fromUnsafe(swiftClosureWrapper);
|
|
74
|
+
return [swiftClosure = std::move(swiftClosure)](const NativeListItem& oldItem, const NativeListItem& newItem) mutable -> bool {
|
|
75
|
+
auto __result = swiftClosure.call(oldItem, newItem);
|
|
76
|
+
return __result;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// pragma MARK: std::shared_ptr<HybridNativeListDataSourceSpec>
|
|
81
|
+
std::shared_ptr<HybridNativeListDataSourceSpec> create_std__shared_ptr_HybridNativeListDataSourceSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
82
|
+
ReactNativeList::HybridNativeListDataSourceSpec_cxx swiftPart = ReactNativeList::HybridNativeListDataSourceSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
83
|
+
return std::make_shared<margelo::nitro::reactnativelist::HybridNativeListDataSourceSpecSwift>(swiftPart);
|
|
84
|
+
}
|
|
85
|
+
void* NON_NULL get_std__shared_ptr_HybridNativeListDataSourceSpec_(std__shared_ptr_HybridNativeListDataSourceSpec_ cppType) {
|
|
86
|
+
std::shared_ptr<margelo::nitro::reactnativelist::HybridNativeListDataSourceSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::reactnativelist::HybridNativeListDataSourceSpecSwift>(cppType);
|
|
87
|
+
#ifdef NITRO_DEBUG
|
|
88
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
89
|
+
throw std::runtime_error("Class \"HybridNativeListDataSourceSpec\" is not implemented in Swift!");
|
|
90
|
+
}
|
|
91
|
+
#endif
|
|
92
|
+
ReactNativeList::HybridNativeListDataSourceSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
93
|
+
return swiftPart.toUnsafe();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// pragma MARK: std::shared_ptr<HybridUiListModuleSpec>
|
|
97
|
+
std::shared_ptr<HybridUiListModuleSpec> create_std__shared_ptr_HybridUiListModuleSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
98
|
+
ReactNativeList::HybridUiListModuleSpec_cxx swiftPart = ReactNativeList::HybridUiListModuleSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
99
|
+
return std::make_shared<margelo::nitro::reactnativelist::HybridUiListModuleSpecSwift>(swiftPart);
|
|
100
|
+
}
|
|
101
|
+
void* NON_NULL get_std__shared_ptr_HybridUiListModuleSpec_(std__shared_ptr_HybridUiListModuleSpec_ cppType) {
|
|
102
|
+
std::shared_ptr<margelo::nitro::reactnativelist::HybridUiListModuleSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::reactnativelist::HybridUiListModuleSpecSwift>(cppType);
|
|
103
|
+
#ifdef NITRO_DEBUG
|
|
104
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
105
|
+
throw std::runtime_error("Class \"HybridUiListModuleSpec\" is not implemented in Swift!");
|
|
106
|
+
}
|
|
107
|
+
#endif
|
|
108
|
+
ReactNativeList::HybridUiListModuleSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
109
|
+
return swiftPart.toUnsafe();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// pragma MARK: std::function<double(const std::string& /* type */)>
|
|
113
|
+
Func_double_std__string create_Func_double_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
|
|
114
|
+
auto swiftClosure = ReactNativeList::Func_double_std__string::fromUnsafe(swiftClosureWrapper);
|
|
115
|
+
return [swiftClosure = std::move(swiftClosure)](const std::string& type) mutable -> double {
|
|
116
|
+
auto __result = swiftClosure.call(type);
|
|
117
|
+
return __result;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// pragma MARK: std::function<bool(double /* reactTag */, const NativeListItem& /* item */, double /* index */)>
|
|
122
|
+
Func_bool_double_NativeListItem_double create_Func_bool_double_NativeListItem_double(void* NON_NULL swiftClosureWrapper) noexcept {
|
|
123
|
+
auto swiftClosure = ReactNativeList::Func_bool_double_NativeListItem_double::fromUnsafe(swiftClosureWrapper);
|
|
124
|
+
return [swiftClosure = std::move(swiftClosure)](double reactTag, const NativeListItem& item, double index) mutable -> bool {
|
|
125
|
+
auto __result = swiftClosure.call(reactTag, item, index);
|
|
126
|
+
return __result;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// pragma MARK: std::shared_ptr<HybridUiListViewSpec>
|
|
131
|
+
std::shared_ptr<HybridUiListViewSpec> create_std__shared_ptr_HybridUiListViewSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
132
|
+
ReactNativeList::HybridUiListViewSpec_cxx swiftPart = ReactNativeList::HybridUiListViewSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
133
|
+
return std::make_shared<margelo::nitro::reactnativelist::HybridUiListViewSpecSwift>(swiftPart);
|
|
134
|
+
}
|
|
135
|
+
void* NON_NULL get_std__shared_ptr_HybridUiListViewSpec_(std__shared_ptr_HybridUiListViewSpec_ cppType) {
|
|
136
|
+
std::shared_ptr<margelo::nitro::reactnativelist::HybridUiListViewSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::reactnativelist::HybridUiListViewSpecSwift>(cppType);
|
|
137
|
+
#ifdef NITRO_DEBUG
|
|
138
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
139
|
+
throw std::runtime_error("Class \"HybridUiListViewSpec\" is not implemented in Swift!");
|
|
140
|
+
}
|
|
141
|
+
#endif
|
|
142
|
+
ReactNativeList::HybridUiListViewSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
143
|
+
return swiftPart.toUnsafe();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// pragma MARK: std::shared_ptr<HybridViewHolderSpec>
|
|
147
|
+
std::shared_ptr<HybridViewHolderSpec> create_std__shared_ptr_HybridViewHolderSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
|
|
148
|
+
ReactNativeList::HybridViewHolderSpec_cxx swiftPart = ReactNativeList::HybridViewHolderSpec_cxx::fromUnsafe(swiftUnsafePointer);
|
|
149
|
+
return std::make_shared<margelo::nitro::reactnativelist::HybridViewHolderSpecSwift>(swiftPart);
|
|
150
|
+
}
|
|
151
|
+
void* NON_NULL get_std__shared_ptr_HybridViewHolderSpec_(std__shared_ptr_HybridViewHolderSpec_ cppType) {
|
|
152
|
+
std::shared_ptr<margelo::nitro::reactnativelist::HybridViewHolderSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::reactnativelist::HybridViewHolderSpecSwift>(cppType);
|
|
153
|
+
#ifdef NITRO_DEBUG
|
|
154
|
+
if (swiftWrapper == nullptr) [[unlikely]] {
|
|
155
|
+
throw std::runtime_error("Class \"HybridViewHolderSpec\" is not implemented in Swift!");
|
|
156
|
+
}
|
|
157
|
+
#endif
|
|
158
|
+
ReactNativeList::HybridViewHolderSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
|
|
159
|
+
return swiftPart.toUnsafe();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
} // namespace margelo::nitro::reactnativelist::bridge::swift
|