@onekeyfe/react-native-native-list 3.0.157-alpha.253 → 3.0.157-alpha.255
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/build.gradle +7 -0
- package/android/src/main/java/com/onekey/nativelist/HybridNativeList.kt +20 -0
- package/android/src/main/java/com/onekey/nativelist/NativeListActivityDetailsView.kt +179 -0
- package/android/src/main/java/com/onekey/nativelist/NativeListActivityRenderer.kt +23 -2
- package/android/src/main/java/com/onekey/nativelist/NativeListContainerSlotAdapter.kt +53 -0
- package/android/src/main/java/com/onekey/nativelist/NativeListEndAlignment.kt +5 -0
- package/android/src/main/java/com/onekey/nativelist/NativeListMediaPreviewSlot.kt +215 -0
- package/android/src/main/java/com/onekey/nativelist/NativeListMediaTileRenderer.kt +15 -6
- package/android/src/main/java/com/onekey/nativelist/NativeListModels.kt +3 -1
- package/android/src/main/java/com/onekey/nativelist/NativeListScrollPositionTracker.kt +29 -0
- package/android/src/main/java/com/onekey/nativelist/NativeListSectionHeaderRenderer.kt +16 -1
- package/android/src/main/java/com/onekey/nativelist/NativeListView.kt +163 -26
- package/android/src/main/res/values/native_scroll_coordinator_ids.xml +4 -0
- package/android/src/test/java/com/margelo/nitro/nativelist/NativeListEndAlignmentTest.kt +34 -0
- package/android/src/test/java/com/margelo/nitro/nativelist/NativeListScrollPositionTrackerTest.kt +28 -0
- package/docs/DESIGN.md +4 -2
- package/docs/ROW_TEMPLATES.md +45 -0
- package/docs/SPEC.md +227 -1
- package/docs/STYLE_SPEC.md +8 -0
- package/ios/HybridNativeList.swift +30 -0
- package/ios/NativeListActivityDetailsView.swift +229 -0
- package/ios/NativeListActivityRenderer.swift +24 -2
- package/ios/NativeListMediaPreviewSlot.swift +199 -0
- package/ios/NativeListMediaTileRenderer.swift +10 -4
- package/ios/NativeListModels.swift +4 -1
- package/ios/NativeListScrollPositionTracker.swift +30 -0
- package/ios/NativeListSectionHeaderRenderer.swift +27 -1
- package/ios/RNCNativeListView.swift +159 -4
- package/ios/tests/NativeListActivityPresentationTests.swift +43 -0
- package/ios/tests/NativeListLifecycleTests.swift +213 -0
- package/ios/tests/NativeListMediaVisibilityTests.swift +42 -0
- package/ios/tests/NativeListScrollPositionTrackerTests.swift +25 -0
- package/lib/module/NativeList.js +56 -3
- package/lib/module/NativeList.web.js +5 -0
- package/lib/module/validation.js +64 -4
- package/lib/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
- package/lib/nitrogen/generated/android/c++/JHybridNativeListSpec.cpp +39 -3
- package/lib/nitrogen/generated/android/c++/JHybridNativeListSpec.hpp +6 -0
- package/lib/nitrogen/generated/android/c++/views/JHybridNativeListStateUpdater.cpp +15 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/Func_void_bool.kt +78 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/HybridNativeListSpec.kt +26 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/views/HybridNativeListManager.kt +24 -9
- package/lib/nitrogen/generated/android/nativelistOnLoad.cpp +2 -0
- package/lib/nitrogen/generated/ios/NativeListModule-Swift-Cxx-Bridge.cpp +8 -0
- package/lib/nitrogen/generated/ios/NativeListModule-Swift-Cxx-Bridge.hpp +37 -0
- package/lib/nitrogen/generated/ios/c++/HybridNativeListSpecSwift.hpp +23 -2
- package/lib/nitrogen/generated/ios/c++/views/HybridNativeListComponent.mm +32 -0
- package/lib/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/lib/nitrogen/generated/ios/swift/HybridNativeListSpec.swift +3 -0
- package/lib/nitrogen/generated/ios/swift/HybridNativeListSpec_cxx.swift +54 -0
- package/lib/nitrogen/generated/shared/c++/HybridNativeListSpec.cpp +6 -0
- package/lib/nitrogen/generated/shared/c++/HybridNativeListSpec.hpp +8 -2
- package/lib/nitrogen/generated/shared/c++/views/HybridNativeListComponent.cpp +6 -0
- package/lib/nitrogen/generated/shared/c++/views/HybridNativeListComponent.hpp +11 -2
- package/lib/nitrogen/generated/shared/json/NativeListConfig.json +3 -0
- package/lib/typescript/src/NativeList.nitro.d.ts +3 -0
- package/lib/typescript/src/NativeList.types.d.ts +14 -1
- package/lib/typescript/src/models.d.ts +33 -5
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
- package/nitrogen/generated/android/c++/JHybridNativeListSpec.cpp +39 -3
- package/nitrogen/generated/android/c++/JHybridNativeListSpec.hpp +6 -0
- package/nitrogen/generated/android/c++/views/JHybridNativeListStateUpdater.cpp +15 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/Func_void_bool.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/HybridNativeListSpec.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/views/HybridNativeListManager.kt +24 -9
- package/nitrogen/generated/android/nativelistOnLoad.cpp +2 -0
- package/nitrogen/generated/ios/NativeListModule-Swift-Cxx-Bridge.cpp +8 -0
- package/nitrogen/generated/ios/NativeListModule-Swift-Cxx-Bridge.hpp +37 -0
- package/nitrogen/generated/ios/c++/HybridNativeListSpecSwift.hpp +23 -2
- package/nitrogen/generated/ios/c++/views/HybridNativeListComponent.mm +32 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridNativeListSpec.swift +3 -0
- package/nitrogen/generated/ios/swift/HybridNativeListSpec_cxx.swift +54 -0
- package/nitrogen/generated/shared/c++/HybridNativeListSpec.cpp +6 -0
- package/nitrogen/generated/shared/c++/HybridNativeListSpec.hpp +8 -2
- package/nitrogen/generated/shared/c++/views/HybridNativeListComponent.cpp +6 -0
- package/nitrogen/generated/shared/c++/views/HybridNativeListComponent.hpp +11 -2
- package/nitrogen/generated/shared/json/NativeListConfig.json +3 -0
- package/package.json +6 -5
- package/react-native-native-list.podspec +6 -0
- package/scripts/enable-container-slots.mjs +58 -0
- package/scripts/enable-container-slots.test.mjs +58 -0
- package/src/NativeList.nitro.ts +3 -0
- package/src/NativeList.tsx +84 -2
- package/src/NativeList.types.ts +14 -1
- package/src/NativeList.web.tsx +5 -0
- package/src/models.ts +38 -1
- package/src/validation.ts +146 -4
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void_bool.hpp
|
|
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
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include <functional>
|
|
14
|
+
#include <NitroModules/JNICallable.hpp>
|
|
15
|
+
|
|
16
|
+
namespace margelo::nitro::nativelist {
|
|
17
|
+
|
|
18
|
+
using namespace facebook;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Represents the Java/Kotlin callback `(isBeyondThreshold: Boolean) -> Unit`.
|
|
22
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
23
|
+
*/
|
|
24
|
+
struct JFunc_void_bool: public jni::JavaClass<JFunc_void_bool> {
|
|
25
|
+
public:
|
|
26
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nativelist/Func_void_bool;";
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
/**
|
|
30
|
+
* Invokes the function this `JFunc_void_bool` instance holds through JNI.
|
|
31
|
+
*/
|
|
32
|
+
void invoke(bool isBeyondThreshold) const {
|
|
33
|
+
static const auto method = javaClassStatic()->getMethod<void(jboolean /* isBeyondThreshold */)>("invoke");
|
|
34
|
+
method(self(), isBeyondThreshold);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* An implementation of Func_void_bool that is backed by a C++ implementation (using `std::function<...>`)
|
|
40
|
+
*/
|
|
41
|
+
class JFunc_void_bool_cxx final: public jni::HybridClass<JFunc_void_bool_cxx, JFunc_void_bool> {
|
|
42
|
+
public:
|
|
43
|
+
static jni::local_ref<JFunc_void_bool::javaobject> fromCpp(const std::function<void(bool /* isBeyondThreshold */)>& func) {
|
|
44
|
+
return JFunc_void_bool_cxx::newObjectCxxArgs(func);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public:
|
|
48
|
+
/**
|
|
49
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_bool_cxx` instance holds.
|
|
50
|
+
*/
|
|
51
|
+
void invoke_cxx(jboolean isBeyondThreshold) {
|
|
52
|
+
_func(static_cast<bool>(isBeyondThreshold));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
[[nodiscard]]
|
|
57
|
+
inline const std::function<void(bool /* isBeyondThreshold */)>& getFunction() const {
|
|
58
|
+
return _func;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public:
|
|
62
|
+
static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nativelist/Func_void_bool_cxx;";
|
|
63
|
+
static void registerNatives() {
|
|
64
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_bool_cxx::invoke_cxx)});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private:
|
|
68
|
+
explicit JFunc_void_bool_cxx(const std::function<void(bool /* isBeyondThreshold */)>& func): _func(func) { }
|
|
69
|
+
|
|
70
|
+
private:
|
|
71
|
+
friend HybridBase;
|
|
72
|
+
std::function<void(bool /* isBeyondThreshold */)> _func;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // namespace margelo::nitro::nativelist
|
|
@@ -15,14 +15,15 @@ namespace margelo::nitro::nativelist { enum class NativeListKeyboardShouldPersis
|
|
|
15
15
|
namespace margelo::nitro::nativelist { enum class NativeListScrollAlignment; }
|
|
16
16
|
|
|
17
17
|
#include <string>
|
|
18
|
+
#include <functional>
|
|
19
|
+
#include <optional>
|
|
20
|
+
#include "JFunc_void_bool.hpp"
|
|
21
|
+
#include <NitroModules/JNICallable.hpp>
|
|
18
22
|
#include "NativeListKeyboardDismissMode.hpp"
|
|
19
23
|
#include "JNativeListKeyboardDismissMode.hpp"
|
|
20
24
|
#include "NativeListKeyboardShouldPersistTaps.hpp"
|
|
21
25
|
#include "JNativeListKeyboardShouldPersistTaps.hpp"
|
|
22
|
-
#include <functional>
|
|
23
|
-
#include <optional>
|
|
24
26
|
#include "JFunc_void_std__string.hpp"
|
|
25
|
-
#include <NitroModules/JNICallable.hpp>
|
|
26
27
|
#include "NativeListScrollAlignment.hpp"
|
|
27
28
|
#include "JNativeListScrollAlignment.hpp"
|
|
28
29
|
|
|
@@ -65,6 +66,41 @@ namespace margelo::nitro::nativelist {
|
|
|
65
66
|
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* snapshotJson */)>("setSnapshotJson");
|
|
66
67
|
method(_javaPart, jni::make_jstring(snapshotJson));
|
|
67
68
|
}
|
|
69
|
+
std::string JHybridNativeListSpec::getContainerSlotHeightsJson() {
|
|
70
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getContainerSlotHeightsJson");
|
|
71
|
+
auto __result = method(_javaPart);
|
|
72
|
+
return __result->toStdString();
|
|
73
|
+
}
|
|
74
|
+
void JHybridNativeListSpec::setContainerSlotHeightsJson(const std::string& containerSlotHeightsJson) {
|
|
75
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* containerSlotHeightsJson */)>("setContainerSlotHeightsJson");
|
|
76
|
+
method(_javaPart, jni::make_jstring(containerSlotHeightsJson));
|
|
77
|
+
}
|
|
78
|
+
std::string JHybridNativeListSpec::getScrollPositionThresholdsJson() {
|
|
79
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getScrollPositionThresholdsJson");
|
|
80
|
+
auto __result = method(_javaPart);
|
|
81
|
+
return __result->toStdString();
|
|
82
|
+
}
|
|
83
|
+
void JHybridNativeListSpec::setScrollPositionThresholdsJson(const std::string& scrollPositionThresholdsJson) {
|
|
84
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* scrollPositionThresholdsJson */)>("setScrollPositionThresholdsJson");
|
|
85
|
+
method(_javaPart, jni::make_jstring(scrollPositionThresholdsJson));
|
|
86
|
+
}
|
|
87
|
+
std::optional<std::function<void(bool /* isBeyondThreshold */)>> JHybridNativeListSpec::getOnScrollPositionThresholdChange() {
|
|
88
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_bool::javaobject>()>("getOnScrollPositionThresholdChange_cxx");
|
|
89
|
+
auto __result = method(_javaPart);
|
|
90
|
+
return __result != nullptr ? std::make_optional([&]() -> std::function<void(bool /* isBeyondThreshold */)> {
|
|
91
|
+
if (__result->isInstanceOf(JFunc_void_bool_cxx::javaClassStatic())) [[likely]] {
|
|
92
|
+
auto downcast = jni::static_ref_cast<JFunc_void_bool_cxx::javaobject>(__result);
|
|
93
|
+
return downcast->cthis()->getFunction();
|
|
94
|
+
} else {
|
|
95
|
+
auto __resultRef = jni::make_global(__result);
|
|
96
|
+
return JNICallable<JFunc_void_bool, void(bool)>(std::move(__resultRef));
|
|
97
|
+
}
|
|
98
|
+
}()) : std::nullopt;
|
|
99
|
+
}
|
|
100
|
+
void JHybridNativeListSpec::setOnScrollPositionThresholdChange(const std::optional<std::function<void(bool /* isBeyondThreshold */)>>& onScrollPositionThresholdChange) {
|
|
101
|
+
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_bool::javaobject> /* onScrollPositionThresholdChange */)>("setOnScrollPositionThresholdChange_cxx");
|
|
102
|
+
method(_javaPart, onScrollPositionThresholdChange.has_value() ? JFunc_void_bool_cxx::fromCpp(onScrollPositionThresholdChange.value()) : nullptr);
|
|
103
|
+
}
|
|
68
104
|
NativeListKeyboardDismissMode JHybridNativeListSpec::getKeyboardDismissMode() {
|
|
69
105
|
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JNativeListKeyboardDismissMode>()>("getKeyboardDismissMode");
|
|
70
106
|
auto __result = method(_javaPart);
|
|
@@ -52,6 +52,12 @@ namespace margelo::nitro::nativelist {
|
|
|
52
52
|
// Properties
|
|
53
53
|
std::string getSnapshotJson() override;
|
|
54
54
|
void setSnapshotJson(const std::string& snapshotJson) override;
|
|
55
|
+
std::string getContainerSlotHeightsJson() override;
|
|
56
|
+
void setContainerSlotHeightsJson(const std::string& containerSlotHeightsJson) override;
|
|
57
|
+
std::string getScrollPositionThresholdsJson() override;
|
|
58
|
+
void setScrollPositionThresholdsJson(const std::string& scrollPositionThresholdsJson) override;
|
|
59
|
+
std::optional<std::function<void(bool /* isBeyondThreshold */)>> getOnScrollPositionThresholdChange() override;
|
|
60
|
+
void setOnScrollPositionThresholdChange(const std::optional<std::function<void(bool /* isBeyondThreshold */)>>& onScrollPositionThresholdChange) override;
|
|
55
61
|
NativeListKeyboardDismissMode getKeyboardDismissMode() override;
|
|
56
62
|
void setKeyboardDismissMode(NativeListKeyboardDismissMode keyboardDismissMode) override;
|
|
57
63
|
NativeListKeyboardShouldPersistTaps getKeyboardShouldPersistTaps() override;
|
|
@@ -58,6 +58,21 @@ void JHybridNativeListStateUpdater::updateViewProps(jni::alias_ref<jni::JClass>
|
|
|
58
58
|
: !newProps->snapshotJson.hasSameValue(oldProps->snapshotJson)) {
|
|
59
59
|
hybridView->setSnapshotJson(newProps->snapshotJson.get());
|
|
60
60
|
}
|
|
61
|
+
if (oldProps == nullptr
|
|
62
|
+
? newProps->containerSlotHeightsJson.isProvided()
|
|
63
|
+
: !newProps->containerSlotHeightsJson.hasSameValue(oldProps->containerSlotHeightsJson)) {
|
|
64
|
+
hybridView->setContainerSlotHeightsJson(newProps->containerSlotHeightsJson.get());
|
|
65
|
+
}
|
|
66
|
+
if (oldProps == nullptr
|
|
67
|
+
? newProps->scrollPositionThresholdsJson.isProvided()
|
|
68
|
+
: !newProps->scrollPositionThresholdsJson.hasSameValue(oldProps->scrollPositionThresholdsJson)) {
|
|
69
|
+
hybridView->setScrollPositionThresholdsJson(newProps->scrollPositionThresholdsJson.get());
|
|
70
|
+
}
|
|
71
|
+
if (oldProps == nullptr
|
|
72
|
+
? newProps->onScrollPositionThresholdChange.isProvided()
|
|
73
|
+
: !newProps->onScrollPositionThresholdChange.hasSameValue(oldProps->onScrollPositionThresholdChange)) {
|
|
74
|
+
hybridView->setOnScrollPositionThresholdChange(newProps->onScrollPositionThresholdChange.get());
|
|
75
|
+
}
|
|
61
76
|
if (oldProps == nullptr
|
|
62
77
|
? newProps->keyboardDismissMode.isProvided()
|
|
63
78
|
: !newProps->keyboardDismissMode.hasSameValue(oldProps->keyboardDismissMode)) {
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// Func_void_bool.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.nativelist
|
|
9
|
+
|
|
10
|
+
import androidx.annotation.Keep
|
|
11
|
+
import com.facebook.jni.HybridData
|
|
12
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Represents the JavaScript callback `(isBeyondThreshold: boolean) => void`.
|
|
17
|
+
* This can be either implemented in C++ (in which case it might be a callback coming from JS),
|
|
18
|
+
* or in Kotlin/Java (in which case it is a native callback).
|
|
19
|
+
*/
|
|
20
|
+
@DoNotStrip
|
|
21
|
+
@Keep
|
|
22
|
+
@Suppress("ClassName", "RedundantUnitReturnType")
|
|
23
|
+
fun interface Func_void_bool: (Boolean) -> Unit {
|
|
24
|
+
/**
|
|
25
|
+
* Call the given JS callback.
|
|
26
|
+
* @throws Throwable if the JS function itself throws an error, or if the JS function/runtime has already been deleted.
|
|
27
|
+
*/
|
|
28
|
+
@DoNotStrip
|
|
29
|
+
@Keep
|
|
30
|
+
override fun invoke(isBeyondThreshold: Boolean): Unit
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Represents the JavaScript callback `(isBeyondThreshold: boolean) => void`.
|
|
35
|
+
* This is implemented in C++, via a `std::function<...>`.
|
|
36
|
+
* The callback might be coming from JS.
|
|
37
|
+
*/
|
|
38
|
+
@DoNotStrip
|
|
39
|
+
@Keep
|
|
40
|
+
@Suppress(
|
|
41
|
+
"KotlinJniMissingFunction", "unused",
|
|
42
|
+
"RedundantSuppression", "RedundantUnitReturnType", "FunctionName",
|
|
43
|
+
"ConvertSecondaryConstructorToPrimary", "ClassName", "LocalVariableName",
|
|
44
|
+
)
|
|
45
|
+
class Func_void_bool_cxx: Func_void_bool {
|
|
46
|
+
@DoNotStrip
|
|
47
|
+
@Keep
|
|
48
|
+
private val mHybridData: HybridData
|
|
49
|
+
|
|
50
|
+
@DoNotStrip
|
|
51
|
+
@Keep
|
|
52
|
+
private constructor(hybridData: HybridData) {
|
|
53
|
+
mHybridData = hybridData
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@DoNotStrip
|
|
57
|
+
@Keep
|
|
58
|
+
override fun invoke(isBeyondThreshold: Boolean): Unit
|
|
59
|
+
= invoke_cxx(isBeyondThreshold)
|
|
60
|
+
|
|
61
|
+
private external fun invoke_cxx(isBeyondThreshold: Boolean): Unit
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Represents the JavaScript callback `(isBeyondThreshold: boolean) => void`.
|
|
66
|
+
* This is implemented in Java/Kotlin, via a `(Boolean) -> Unit`.
|
|
67
|
+
* The callback is always coming from native.
|
|
68
|
+
*/
|
|
69
|
+
@DoNotStrip
|
|
70
|
+
@Keep
|
|
71
|
+
@Suppress("ClassName", "RedundantUnitReturnType", "unused")
|
|
72
|
+
class Func_void_bool_java(private val function: (Boolean) -> Unit): Func_void_bool {
|
|
73
|
+
@DoNotStrip
|
|
74
|
+
@Keep
|
|
75
|
+
override fun invoke(isBeyondThreshold: Boolean): Unit {
|
|
76
|
+
return this.function(isBeyondThreshold)
|
|
77
|
+
}
|
|
78
|
+
}
|
package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/HybridNativeListSpec.kt
CHANGED
|
@@ -33,6 +33,32 @@ abstract class HybridNativeListSpec: HybridView() {
|
|
|
33
33
|
@set:Keep
|
|
34
34
|
abstract var snapshotJson: String
|
|
35
35
|
|
|
36
|
+
@get:DoNotStrip
|
|
37
|
+
@get:Keep
|
|
38
|
+
@set:DoNotStrip
|
|
39
|
+
@set:Keep
|
|
40
|
+
abstract var containerSlotHeightsJson: String
|
|
41
|
+
|
|
42
|
+
@get:DoNotStrip
|
|
43
|
+
@get:Keep
|
|
44
|
+
@set:DoNotStrip
|
|
45
|
+
@set:Keep
|
|
46
|
+
abstract var scrollPositionThresholdsJson: String
|
|
47
|
+
|
|
48
|
+
abstract var onScrollPositionThresholdChange: ((isBeyondThreshold: Boolean) -> Unit)?
|
|
49
|
+
|
|
50
|
+
private var onScrollPositionThresholdChange_cxx: Func_void_bool?
|
|
51
|
+
@Keep
|
|
52
|
+
@DoNotStrip
|
|
53
|
+
get() {
|
|
54
|
+
return onScrollPositionThresholdChange?.let { Func_void_bool_java(it) }
|
|
55
|
+
}
|
|
56
|
+
@Keep
|
|
57
|
+
@DoNotStrip
|
|
58
|
+
set(value) {
|
|
59
|
+
onScrollPositionThresholdChange = value?.let { it }
|
|
60
|
+
}
|
|
61
|
+
|
|
36
62
|
@get:DoNotStrip
|
|
37
63
|
@get:Keep
|
|
38
64
|
@set:DoNotStrip
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
package com.margelo.nitro.nativelist.views
|
|
9
9
|
|
|
10
10
|
import android.view.View
|
|
11
|
+
import android.view.ViewGroup
|
|
11
12
|
import com.facebook.react.uimanager.ReactStylesDiffMap
|
|
12
|
-
import com.facebook.react.uimanager.
|
|
13
|
+
import com.facebook.react.uimanager.ViewGroupManager
|
|
13
14
|
import com.facebook.react.uimanager.StateWrapper
|
|
14
15
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
15
16
|
import com.margelo.nitro.R.id.associated_hybrid_view_tag
|
|
@@ -19,7 +20,7 @@ import com.margelo.nitro.nativelist.*
|
|
|
19
20
|
/**
|
|
20
21
|
* Represents the React Native `ViewManager` for the "NativeList" Nitro HybridView.
|
|
21
22
|
*/
|
|
22
|
-
public class HybridNativeListManager:
|
|
23
|
+
public class HybridNativeListManager: ViewGroupManager<ViewGroup>() {
|
|
23
24
|
/**
|
|
24
25
|
* Represents the View and its last state snapshot (mutable)
|
|
25
26
|
*/
|
|
@@ -35,18 +36,32 @@ public class HybridNativeListManager: SimpleViewManager<View>() {
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
|
|
39
|
+
// NativeList container slot mounting
|
|
40
|
+
override fun needsCustomLayoutForChildren(): Boolean = true
|
|
41
|
+
override fun addView(parent: ViewGroup, child: View, index: Int) {
|
|
42
|
+
(parent as NativeListView).mountContainerSlot(child, index)
|
|
43
|
+
}
|
|
44
|
+
override fun getChildCount(parent: ViewGroup): Int = (parent as NativeListView).containerSlotCount()
|
|
45
|
+
override fun getChildAt(parent: ViewGroup, index: Int): View = (parent as NativeListView).containerSlotAt(index)
|
|
46
|
+
override fun removeViewAt(parent: ViewGroup, index: Int) {
|
|
47
|
+
(parent as NativeListView).unmountContainerSlot(index)
|
|
48
|
+
}
|
|
49
|
+
override fun removeAllViews(parent: ViewGroup) {
|
|
50
|
+
while (getChildCount(parent) > 0) removeViewAt(parent, getChildCount(parent) - 1)
|
|
51
|
+
}
|
|
52
|
+
|
|
38
53
|
override fun getName(): String {
|
|
39
54
|
return "NativeList"
|
|
40
55
|
}
|
|
41
56
|
|
|
42
|
-
override fun createViewInstance(reactContext: ThemedReactContext):
|
|
57
|
+
override fun createViewInstance(reactContext: ThemedReactContext): ViewGroup {
|
|
43
58
|
val hybridView = HybridNativeList(reactContext)
|
|
44
|
-
val view = hybridView.view
|
|
59
|
+
val view = hybridView.view as ViewGroup
|
|
45
60
|
view.setTag(associated_hybrid_view_tag, HybridViewHolder(hybridView))
|
|
46
61
|
return view
|
|
47
62
|
}
|
|
48
63
|
|
|
49
|
-
override fun updateState(view:
|
|
64
|
+
override fun updateState(view: ViewGroup, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? {
|
|
50
65
|
val holder = getHybridViewHolder(view)
|
|
51
66
|
?: throw Error("Couldn't find view $view in local views table!")
|
|
52
67
|
val hybridView = holder.hybridView
|
|
@@ -63,14 +78,14 @@ public class HybridNativeListManager: SimpleViewManager<View>() {
|
|
|
63
78
|
return super.updateState(view, props, newState)
|
|
64
79
|
}
|
|
65
80
|
|
|
66
|
-
override fun onDropViewInstance(view:
|
|
81
|
+
override fun onDropViewInstance(view: ViewGroup) {
|
|
67
82
|
val holder = getHybridViewHolder(view)
|
|
68
83
|
holder?.lastState = null
|
|
69
84
|
holder?.hybridView?.onDropView()
|
|
70
85
|
return super.onDropViewInstance(view)
|
|
71
86
|
}
|
|
72
87
|
|
|
73
|
-
protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view:
|
|
88
|
+
protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: ViewGroup): ViewGroup? {
|
|
74
89
|
val preparedView = super.prepareToRecycleView(reactContext, view)
|
|
75
90
|
?: return null
|
|
76
91
|
val holder = getHybridViewHolder(preparedView)
|
|
@@ -84,13 +99,13 @@ public class HybridNativeListManager: SimpleViewManager<View>() {
|
|
|
84
99
|
hybridView.prepareForRecycle()
|
|
85
100
|
|
|
86
101
|
// Maybe update the view if it changed
|
|
87
|
-
return hybridView.view
|
|
102
|
+
return hybridView.view as ViewGroup
|
|
88
103
|
} else {
|
|
89
104
|
return null
|
|
90
105
|
}
|
|
91
106
|
}
|
|
92
107
|
|
|
93
|
-
private fun getHybridViewHolder(view:
|
|
108
|
+
private fun getHybridViewHolder(view: ViewGroup): HybridViewHolder? {
|
|
94
109
|
return view.getTag(associated_hybrid_view_tag) as? HybridViewHolder
|
|
95
110
|
}
|
|
96
111
|
}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
#include <NitroModules/HybridObjectRegistry.hpp>
|
|
17
17
|
|
|
18
18
|
#include "JHybridNativeListSpec.hpp"
|
|
19
|
+
#include "JFunc_void_bool.hpp"
|
|
19
20
|
#include "JFunc_void_std__string.hpp"
|
|
20
21
|
#include "views/JHybridNativeListStateUpdater.hpp"
|
|
21
22
|
#include <NitroModules/DefaultConstructableObject.hpp>
|
|
@@ -43,6 +44,7 @@ void registerAllNatives() {
|
|
|
43
44
|
|
|
44
45
|
// Register native JNI methods
|
|
45
46
|
margelo::nitro::nativelist::JHybridNativeListSpec::CxxPart::registerNatives();
|
|
47
|
+
margelo::nitro::nativelist::JFunc_void_bool_cxx::registerNatives();
|
|
46
48
|
margelo::nitro::nativelist::JFunc_void_std__string_cxx::registerNatives();
|
|
47
49
|
margelo::nitro::nativelist::views::JHybridNativeListStateUpdater::registerNatives();
|
|
48
50
|
|
|
@@ -14,6 +14,14 @@
|
|
|
14
14
|
|
|
15
15
|
namespace margelo::nitro::nativelist::bridge::swift {
|
|
16
16
|
|
|
17
|
+
// pragma MARK: std::function<void(bool /* isBeyondThreshold */)>
|
|
18
|
+
Func_void_bool create_Func_void_bool(void* NON_NULL swiftClosureWrapper) noexcept {
|
|
19
|
+
auto swiftClosure = NativeListModule::Func_void_bool::fromUnsafe(swiftClosureWrapper);
|
|
20
|
+
return [swiftClosure = std::move(swiftClosure)](bool isBeyondThreshold) mutable -> void {
|
|
21
|
+
swiftClosure.call(isBeyondThreshold);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
17
25
|
// pragma MARK: std::function<void(const std::string& /* payloadJson */)>
|
|
18
26
|
Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept {
|
|
19
27
|
auto swiftClosure = NativeListModule::Func_void_std__string::fromUnsafe(swiftClosureWrapper);
|
|
@@ -30,6 +30,43 @@ namespace NativeListModule { class HybridNativeListSpec_cxx; }
|
|
|
30
30
|
*/
|
|
31
31
|
namespace margelo::nitro::nativelist::bridge::swift {
|
|
32
32
|
|
|
33
|
+
// pragma MARK: std::function<void(bool /* isBeyondThreshold */)>
|
|
34
|
+
/**
|
|
35
|
+
* Specialized version of `std::function<void(bool)>`.
|
|
36
|
+
*/
|
|
37
|
+
using Func_void_bool = std::function<void(bool /* isBeyondThreshold */)>;
|
|
38
|
+
/**
|
|
39
|
+
* Wrapper class for a `std::function<void(bool / * isBeyondThreshold * /)>`, this can be used from Swift.
|
|
40
|
+
*/
|
|
41
|
+
class Func_void_bool_Wrapper final {
|
|
42
|
+
public:
|
|
43
|
+
explicit Func_void_bool_Wrapper(std::function<void(bool /* isBeyondThreshold */)>&& func): _function(std::make_unique<std::function<void(bool /* isBeyondThreshold */)>>(std::move(func))) {}
|
|
44
|
+
inline void call(bool isBeyondThreshold) const noexcept {
|
|
45
|
+
_function->operator()(isBeyondThreshold);
|
|
46
|
+
}
|
|
47
|
+
private:
|
|
48
|
+
std::unique_ptr<std::function<void(bool /* isBeyondThreshold */)>> _function;
|
|
49
|
+
} SWIFT_NONCOPYABLE;
|
|
50
|
+
Func_void_bool create_Func_void_bool(void* NON_NULL swiftClosureWrapper) noexcept;
|
|
51
|
+
inline Func_void_bool_Wrapper wrap_Func_void_bool(Func_void_bool value) noexcept {
|
|
52
|
+
return Func_void_bool_Wrapper(std::move(value));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// pragma MARK: std::optional<std::function<void(bool /* isBeyondThreshold */)>>
|
|
56
|
+
/**
|
|
57
|
+
* Specialized version of `std::optional<std::function<void(bool / * isBeyondThreshold * /)>>`.
|
|
58
|
+
*/
|
|
59
|
+
using std__optional_std__function_void_bool____isBeyondThreshold______ = std::optional<std::function<void(bool /* isBeyondThreshold */)>>;
|
|
60
|
+
inline std::optional<std::function<void(bool /* isBeyondThreshold */)>> create_std__optional_std__function_void_bool____isBeyondThreshold______(const std::function<void(bool /* isBeyondThreshold */)>& value) noexcept {
|
|
61
|
+
return std::optional<std::function<void(bool /* isBeyondThreshold */)>>(value);
|
|
62
|
+
}
|
|
63
|
+
inline bool has_value_std__optional_std__function_void_bool____isBeyondThreshold______(const std::optional<std::function<void(bool /* isBeyondThreshold */)>>& optional) noexcept {
|
|
64
|
+
return optional.has_value();
|
|
65
|
+
}
|
|
66
|
+
inline std::function<void(bool /* isBeyondThreshold */)> get_std__optional_std__function_void_bool____isBeyondThreshold______(const std::optional<std::function<void(bool /* isBeyondThreshold */)>>& optional) noexcept {
|
|
67
|
+
return optional.value();
|
|
68
|
+
}
|
|
69
|
+
|
|
33
70
|
// pragma MARK: std::function<void(const std::string& /* payloadJson */)>
|
|
34
71
|
/**
|
|
35
72
|
* Specialized version of `std::function<void(const std::string&)>`.
|
|
@@ -20,10 +20,10 @@ namespace margelo::nitro::nativelist { enum class NativeListKeyboardShouldPersis
|
|
|
20
20
|
namespace margelo::nitro::nativelist { enum class NativeListScrollAlignment; }
|
|
21
21
|
|
|
22
22
|
#include <string>
|
|
23
|
-
#include "NativeListKeyboardDismissMode.hpp"
|
|
24
|
-
#include "NativeListKeyboardShouldPersistTaps.hpp"
|
|
25
23
|
#include <functional>
|
|
26
24
|
#include <optional>
|
|
25
|
+
#include "NativeListKeyboardDismissMode.hpp"
|
|
26
|
+
#include "NativeListKeyboardShouldPersistTaps.hpp"
|
|
27
27
|
#include "NativeListScrollAlignment.hpp"
|
|
28
28
|
|
|
29
29
|
#include "NativeListModule-Swift-Cxx-Umbrella.hpp"
|
|
@@ -79,6 +79,27 @@ namespace margelo::nitro::nativelist {
|
|
|
79
79
|
inline void setSnapshotJson(const std::string& snapshotJson) noexcept override {
|
|
80
80
|
_swiftPart.setSnapshotJson(snapshotJson);
|
|
81
81
|
}
|
|
82
|
+
inline std::string getContainerSlotHeightsJson() noexcept override {
|
|
83
|
+
auto __result = _swiftPart.getContainerSlotHeightsJson();
|
|
84
|
+
return __result;
|
|
85
|
+
}
|
|
86
|
+
inline void setContainerSlotHeightsJson(const std::string& containerSlotHeightsJson) noexcept override {
|
|
87
|
+
_swiftPart.setContainerSlotHeightsJson(containerSlotHeightsJson);
|
|
88
|
+
}
|
|
89
|
+
inline std::string getScrollPositionThresholdsJson() noexcept override {
|
|
90
|
+
auto __result = _swiftPart.getScrollPositionThresholdsJson();
|
|
91
|
+
return __result;
|
|
92
|
+
}
|
|
93
|
+
inline void setScrollPositionThresholdsJson(const std::string& scrollPositionThresholdsJson) noexcept override {
|
|
94
|
+
_swiftPart.setScrollPositionThresholdsJson(scrollPositionThresholdsJson);
|
|
95
|
+
}
|
|
96
|
+
inline std::optional<std::function<void(bool /* isBeyondThreshold */)>> getOnScrollPositionThresholdChange() noexcept override {
|
|
97
|
+
auto __result = _swiftPart.getOnScrollPositionThresholdChange();
|
|
98
|
+
return __result;
|
|
99
|
+
}
|
|
100
|
+
inline void setOnScrollPositionThresholdChange(const std::optional<std::function<void(bool /* isBeyondThreshold */)>>& onScrollPositionThresholdChange) noexcept override {
|
|
101
|
+
_swiftPart.setOnScrollPositionThresholdChange(onScrollPositionThresholdChange);
|
|
102
|
+
}
|
|
82
103
|
inline NativeListKeyboardDismissMode getKeyboardDismissMode() noexcept override {
|
|
83
104
|
auto __result = _swiftPart.getKeyboardDismissMode();
|
|
84
105
|
return static_cast<NativeListKeyboardDismissMode>(__result);
|
|
@@ -35,6 +35,11 @@ using namespace margelo::nitro::nativelist::views;
|
|
|
35
35
|
+ (BOOL)shouldBeRecycled;
|
|
36
36
|
@end
|
|
37
37
|
|
|
38
|
+
@interface UIView (NativeListContainerSlots)
|
|
39
|
+
- (void)mountContainerSlot:(UIView *)view atIndex:(NSInteger)index;
|
|
40
|
+
- (void)unmountContainerSlot:(UIView *)view;
|
|
41
|
+
@end
|
|
42
|
+
|
|
38
43
|
@implementation HybridNativeListComponent {
|
|
39
44
|
std::shared_ptr<HybridNativeListSpecSwift> _hybridView;
|
|
40
45
|
BOOL _didDropView;
|
|
@@ -59,6 +64,15 @@ using namespace margelo::nitro::nativelist::views;
|
|
|
59
64
|
return self;
|
|
60
65
|
}
|
|
61
66
|
|
|
67
|
+
// NativeList container slot mounting
|
|
68
|
+
- (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)child index:(NSInteger)index {
|
|
69
|
+
[self.contentView mountContainerSlot:child atIndex:index];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
- (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)child index:(NSInteger)index {
|
|
73
|
+
[self.contentView unmountContainerSlot:child];
|
|
74
|
+
}
|
|
75
|
+
|
|
62
76
|
- (void) updateView {
|
|
63
77
|
// 1. Get Swift part
|
|
64
78
|
NativeListModule::HybridNativeListSpec_cxx& swiftPart = _hybridView->getSwiftPart();
|
|
@@ -104,6 +118,24 @@ using namespace margelo::nitro::nativelist::views;
|
|
|
104
118
|
: !newViewProps.snapshotJson.hasSameValue(oldViewProps->snapshotJson)) {
|
|
105
119
|
swiftPart.setSnapshotJson(newViewProps.snapshotJson.get());
|
|
106
120
|
}
|
|
121
|
+
// containerSlotHeightsJson: string
|
|
122
|
+
if (oldViewProps == nullptr
|
|
123
|
+
? newViewProps.containerSlotHeightsJson.isProvided()
|
|
124
|
+
: !newViewProps.containerSlotHeightsJson.hasSameValue(oldViewProps->containerSlotHeightsJson)) {
|
|
125
|
+
swiftPart.setContainerSlotHeightsJson(newViewProps.containerSlotHeightsJson.get());
|
|
126
|
+
}
|
|
127
|
+
// scrollPositionThresholdsJson: string
|
|
128
|
+
if (oldViewProps == nullptr
|
|
129
|
+
? newViewProps.scrollPositionThresholdsJson.isProvided()
|
|
130
|
+
: !newViewProps.scrollPositionThresholdsJson.hasSameValue(oldViewProps->scrollPositionThresholdsJson)) {
|
|
131
|
+
swiftPart.setScrollPositionThresholdsJson(newViewProps.scrollPositionThresholdsJson.get());
|
|
132
|
+
}
|
|
133
|
+
// onScrollPositionThresholdChange: optional
|
|
134
|
+
if (oldViewProps == nullptr
|
|
135
|
+
? newViewProps.onScrollPositionThresholdChange.isProvided()
|
|
136
|
+
: !newViewProps.onScrollPositionThresholdChange.hasSameValue(oldViewProps->onScrollPositionThresholdChange)) {
|
|
137
|
+
swiftPart.setOnScrollPositionThresholdChange(newViewProps.onScrollPositionThresholdChange.get());
|
|
138
|
+
}
|
|
107
139
|
// keyboardDismissMode: enum
|
|
108
140
|
if (oldViewProps == nullptr
|
|
109
141
|
? newViewProps.keyboardDismissMode.isProvided()
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// Func_void_bool.swift
|
|
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
|
+
import NitroModules
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Wraps a Swift `(_ isBeyondThreshold: Bool) -> Void` as a class.
|
|
12
|
+
* This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
|
|
13
|
+
*/
|
|
14
|
+
public final class Func_void_bool {
|
|
15
|
+
public typealias bridge = margelo.nitro.nativelist.bridge.swift
|
|
16
|
+
|
|
17
|
+
private let closure: (_ isBeyondThreshold: Bool) -> Void
|
|
18
|
+
|
|
19
|
+
public init(_ closure: @escaping (_ isBeyondThreshold: Bool) -> Void) {
|
|
20
|
+
self.closure = closure
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@inline(__always)
|
|
24
|
+
public func call(isBeyondThreshold: Bool) -> Void {
|
|
25
|
+
self.closure(isBeyondThreshold)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Casts this instance to a retained unsafe raw pointer.
|
|
30
|
+
* This acquires one additional strong reference on the object!
|
|
31
|
+
*/
|
|
32
|
+
@inline(__always)
|
|
33
|
+
public func toUnsafe() -> UnsafeMutableRawPointer {
|
|
34
|
+
return Unmanaged.passRetained(self).toOpaque()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Casts an unsafe pointer to a `Func_void_bool`.
|
|
39
|
+
* The pointer has to be a retained opaque `Unmanaged<Func_void_bool>`.
|
|
40
|
+
* This removes one strong reference from the object!
|
|
41
|
+
*/
|
|
42
|
+
@inline(__always)
|
|
43
|
+
public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_bool {
|
|
44
|
+
return Unmanaged<Func_void_bool>.fromOpaque(pointer).takeRetainedValue()
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -11,6 +11,9 @@ import NitroModules
|
|
|
11
11
|
public protocol HybridNativeListSpec_protocol: HybridObject, HybridView {
|
|
12
12
|
// Properties
|
|
13
13
|
var snapshotJson: String { get set }
|
|
14
|
+
var containerSlotHeightsJson: String { get set }
|
|
15
|
+
var scrollPositionThresholdsJson: String { get set }
|
|
16
|
+
var onScrollPositionThresholdChange: ((_ isBeyondThreshold: Bool) -> Void)? { get set }
|
|
14
17
|
var keyboardDismissMode: NativeListKeyboardDismissMode { get set }
|
|
15
18
|
var keyboardShouldPersistTaps: NativeListKeyboardShouldPersistTaps { get set }
|
|
16
19
|
var onRowAction: ((_ payloadJson: String) -> Void)? { get set }
|
|
@@ -132,6 +132,60 @@ open class HybridNativeListSpec_cxx {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
+
public final var containerSlotHeightsJson: std.string {
|
|
136
|
+
@inline(__always)
|
|
137
|
+
get {
|
|
138
|
+
return std.string(self.__implementation.containerSlotHeightsJson)
|
|
139
|
+
}
|
|
140
|
+
@inline(__always)
|
|
141
|
+
set {
|
|
142
|
+
self.__implementation.containerSlotHeightsJson = String(newValue)
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
public final var scrollPositionThresholdsJson: std.string {
|
|
147
|
+
@inline(__always)
|
|
148
|
+
get {
|
|
149
|
+
return std.string(self.__implementation.scrollPositionThresholdsJson)
|
|
150
|
+
}
|
|
151
|
+
@inline(__always)
|
|
152
|
+
set {
|
|
153
|
+
self.__implementation.scrollPositionThresholdsJson = String(newValue)
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
public final var onScrollPositionThresholdChange: bridge.std__optional_std__function_void_bool____isBeyondThreshold______ {
|
|
158
|
+
@inline(__always)
|
|
159
|
+
get {
|
|
160
|
+
return { () -> bridge.std__optional_std__function_void_bool____isBeyondThreshold______ in
|
|
161
|
+
if let __unwrappedValue = self.__implementation.onScrollPositionThresholdChange {
|
|
162
|
+
return bridge.create_std__optional_std__function_void_bool____isBeyondThreshold______({ () -> bridge.Func_void_bool in
|
|
163
|
+
let __closureWrapper = Func_void_bool(__unwrappedValue)
|
|
164
|
+
return bridge.create_Func_void_bool(__closureWrapper.toUnsafe())
|
|
165
|
+
}())
|
|
166
|
+
} else {
|
|
167
|
+
return .init()
|
|
168
|
+
}
|
|
169
|
+
}()
|
|
170
|
+
}
|
|
171
|
+
@inline(__always)
|
|
172
|
+
set {
|
|
173
|
+
self.__implementation.onScrollPositionThresholdChange = { () -> ((_ isBeyondThreshold: Bool) -> Void)? in
|
|
174
|
+
if bridge.has_value_std__optional_std__function_void_bool____isBeyondThreshold______(newValue) {
|
|
175
|
+
let __unwrapped = bridge.get_std__optional_std__function_void_bool____isBeyondThreshold______(newValue)
|
|
176
|
+
return { () -> (Bool) -> Void in
|
|
177
|
+
let __wrappedFunction = bridge.wrap_Func_void_bool(__unwrapped)
|
|
178
|
+
return { (__isBeyondThreshold: Bool) -> Void in
|
|
179
|
+
__wrappedFunction.call(__isBeyondThreshold)
|
|
180
|
+
}
|
|
181
|
+
}()
|
|
182
|
+
} else {
|
|
183
|
+
return nil
|
|
184
|
+
}
|
|
185
|
+
}()
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
135
189
|
public final var keyboardDismissMode: Int32 {
|
|
136
190
|
@inline(__always)
|
|
137
191
|
get {
|