react-native-nitro-modal 0.2.0 → 0.3.0-rc
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 +48 -4
- package/android/src/main/java/com/margelo/nitro/nitromodal/BottomSheetPresenter.kt +335 -34
- package/android/src/main/java/com/margelo/nitro/nitromodal/HybridNitroModal.kt +63 -22
- package/android/src/main/java/com/margelo/nitro/nitromodal/ModalConfig.kt +31 -1
- package/android/src/main/java/com/margelo/nitro/nitromodal/ModalContentRoot.kt +48 -5
- package/android/src/main/java/com/margelo/nitro/nitromodal/ModalPresenter.kt +63 -4
- package/android/src/main/java/com/margelo/nitro/nitromodal/NitroModalHostView.kt +68 -8
- package/ios/HybridNitroModal.swift +111 -20
- package/ios/ModalConfig.swift +44 -2
- package/ios/NitroModalHostView.swift +73 -8
- package/ios/SheetView.swift +575 -0
- package/ios/SheetViewController.swift +19 -450
- package/lib/module/NitroModal.js +38 -5
- package/lib/module/NitroModal.js.map +1 -1
- package/lib/module/NitroModalView.web.js +55 -25
- package/lib/module/NitroModalView.web.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/web/AnimatedValue.js +3 -0
- package/lib/module/web/AnimatedValue.js.map +1 -1
- package/lib/module/web/ModalConfig.js +8 -4
- package/lib/module/web/ModalConfig.js.map +1 -1
- package/lib/module/web/ModalController.js +29 -2
- package/lib/module/web/ModalController.js.map +1 -1
- package/lib/module/web/ModalPresenter.js +47 -12
- package/lib/module/web/ModalPresenter.js.map +1 -1
- package/lib/module/web/SheetPresenter.js +54 -29
- package/lib/module/web/SheetPresenter.js.map +1 -1
- package/lib/module/web/dom.js +13 -0
- package/lib/module/web/dom.js.map +1 -1
- package/lib/typescript/src/NitroModal.d.ts +33 -2
- package/lib/typescript/src/NitroModal.d.ts.map +1 -1
- package/lib/typescript/src/NitroModal.nitro.d.ts +29 -2
- package/lib/typescript/src/NitroModal.nitro.d.ts.map +1 -1
- package/lib/typescript/src/NitroModalView.web.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/web/AnimatedValue.d.ts +1 -0
- package/lib/typescript/src/web/AnimatedValue.d.ts.map +1 -1
- package/lib/typescript/src/web/ModalConfig.d.ts +6 -0
- package/lib/typescript/src/web/ModalConfig.d.ts.map +1 -1
- package/lib/typescript/src/web/ModalController.d.ts +5 -0
- package/lib/typescript/src/web/ModalController.d.ts.map +1 -1
- package/lib/typescript/src/web/ModalPresenter.d.ts +9 -0
- package/lib/typescript/src/web/ModalPresenter.d.ts.map +1 -1
- package/lib/typescript/src/web/SheetPresenter.d.ts +1 -1
- package/lib/typescript/src/web/SheetPresenter.d.ts.map +1 -1
- package/lib/typescript/src/web/dom.d.ts +2 -0
- package/lib/typescript/src/web/dom.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridNitroModalSpec.cpp +60 -6
- package/nitrogen/generated/android/c++/JHybridNitroModalSpec.hpp +10 -2
- package/nitrogen/generated/android/c++/JNamedSheetDetent.hpp +64 -0
- package/nitrogen/generated/android/c++/JSheetDetent.cpp +26 -0
- package/nitrogen/generated/android/c++/JSheetDetent.hpp +42 -37
- package/nitrogen/generated/android/c++/views/JHybridNitroModalStateUpdater.cpp +20 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/HybridNitroModalSpec.kt +40 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/NamedSheetDetent.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/SheetDetent.kt +47 -10
- package/nitrogen/generated/android/nitromodal+autolinking.cmake +1 -0
- package/nitrogen/generated/ios/NitroModal-Swift-Cxx-Bridge.hpp +53 -8
- package/nitrogen/generated/ios/NitroModal-Swift-Cxx-Umbrella.hpp +4 -3
- package/nitrogen/generated/ios/c++/HybridNitroModalSpecSwift.hpp +32 -5
- package/nitrogen/generated/ios/c++/views/HybridNitroModalComponent.mm +24 -0
- package/nitrogen/generated/ios/swift/HybridNitroModalSpec.swift +4 -0
- package/nitrogen/generated/ios/swift/HybridNitroModalSpec_cxx.swift +110 -5
- package/nitrogen/generated/ios/swift/NamedSheetDetent.swift +48 -0
- package/nitrogen/generated/ios/swift/SheetDetent.swift +15 -33
- package/nitrogen/generated/shared/c++/HybridNitroModalSpec.cpp +8 -0
- package/nitrogen/generated/shared/c++/HybridNitroModalSpec.hpp +14 -5
- package/nitrogen/generated/shared/c++/{SheetDetent.hpp → NamedSheetDetent.hpp} +17 -17
- package/nitrogen/generated/shared/c++/views/HybridNitroModalComponent.cpp +9 -1
- package/nitrogen/generated/shared/c++/views/HybridNitroModalComponent.hpp +15 -2
- package/nitrogen/generated/shared/json/NitroModalConfig.json +4 -0
- package/package.json +1 -1
- package/src/NitroModal.nitro.ts +30 -2
- package/src/NitroModal.tsx +68 -4
- package/src/NitroModalView.web.tsx +54 -12
- package/src/index.tsx +2 -0
- package/src/web/AnimatedValue.ts +4 -0
- package/src/web/ModalConfig.ts +13 -3
- package/src/web/ModalController.ts +35 -2
- package/src/web/ModalPresenter.ts +46 -11
- package/src/web/SheetPresenter.ts +98 -33
- package/src/web/dom.ts +17 -0
|
@@ -14,8 +14,8 @@ namespace margelo::nitro::nitromodal { enum class DismissReason; }
|
|
|
14
14
|
namespace margelo::nitro::nitromodal { class HybridNitroModalSpec; }
|
|
15
15
|
// Forward declaration of `ModalContentArea` to properly resolve imports.
|
|
16
16
|
namespace margelo::nitro::nitromodal { struct ModalContentArea; }
|
|
17
|
-
// Forward declaration of `
|
|
18
|
-
namespace margelo::nitro::nitromodal { enum class
|
|
17
|
+
// Forward declaration of `NamedSheetDetent` to properly resolve imports.
|
|
18
|
+
namespace margelo::nitro::nitromodal { enum class NamedSheetDetent; }
|
|
19
19
|
|
|
20
20
|
// Forward declarations of Swift defined types
|
|
21
21
|
// Forward declaration of `HybridNitroModalSpec_cxx` to properly resolve imports.
|
|
@@ -25,12 +25,13 @@ namespace NitroModal { class HybridNitroModalSpec_cxx; }
|
|
|
25
25
|
#include "DismissReason.hpp"
|
|
26
26
|
#include "HybridNitroModalSpec.hpp"
|
|
27
27
|
#include "ModalContentArea.hpp"
|
|
28
|
-
#include "
|
|
28
|
+
#include "NamedSheetDetent.hpp"
|
|
29
29
|
#include <NitroModules/Result.hpp>
|
|
30
30
|
#include <exception>
|
|
31
31
|
#include <functional>
|
|
32
32
|
#include <memory>
|
|
33
33
|
#include <optional>
|
|
34
|
+
#include <variant>
|
|
34
35
|
#include <vector>
|
|
35
36
|
|
|
36
37
|
/**
|
|
@@ -39,13 +40,42 @@ namespace NitroModal { class HybridNitroModalSpec_cxx; }
|
|
|
39
40
|
*/
|
|
40
41
|
namespace margelo::nitro::nitromodal::bridge::swift {
|
|
41
42
|
|
|
42
|
-
// pragma MARK: std::
|
|
43
|
+
// pragma MARK: std::variant<NamedSheetDetent, double>
|
|
43
44
|
/**
|
|
44
|
-
*
|
|
45
|
+
* Wrapper struct for `std::variant<NamedSheetDetent, double>`.
|
|
46
|
+
* std::variant cannot be used in Swift because of a Swift bug.
|
|
47
|
+
* Not even specializing it works. So we create a wrapper struct.
|
|
45
48
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
std::
|
|
49
|
+
struct std__variant_NamedSheetDetent__double_ final {
|
|
50
|
+
std::variant<NamedSheetDetent, double> variant;
|
|
51
|
+
std__variant_NamedSheetDetent__double_(std::variant<NamedSheetDetent, double> variant): variant(variant) { }
|
|
52
|
+
operator std::variant<NamedSheetDetent, double>() const noexcept {
|
|
53
|
+
return variant;
|
|
54
|
+
}
|
|
55
|
+
inline size_t index() const noexcept {
|
|
56
|
+
return variant.index();
|
|
57
|
+
}
|
|
58
|
+
inline NamedSheetDetent get_0() const noexcept {
|
|
59
|
+
return std::get<0>(variant);
|
|
60
|
+
}
|
|
61
|
+
inline double get_1() const noexcept {
|
|
62
|
+
return std::get<1>(variant);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
inline std__variant_NamedSheetDetent__double_ create_std__variant_NamedSheetDetent__double_(NamedSheetDetent value) noexcept {
|
|
66
|
+
return std__variant_NamedSheetDetent__double_(value);
|
|
67
|
+
}
|
|
68
|
+
inline std__variant_NamedSheetDetent__double_ create_std__variant_NamedSheetDetent__double_(double value) noexcept {
|
|
69
|
+
return std__variant_NamedSheetDetent__double_(value);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// pragma MARK: std::vector<std::variant<NamedSheetDetent, double>>
|
|
73
|
+
/**
|
|
74
|
+
* Specialized version of `std::vector<std::variant<NamedSheetDetent, double>>`.
|
|
75
|
+
*/
|
|
76
|
+
using std__vector_std__variant_NamedSheetDetent__double__ = std::vector<std::variant<NamedSheetDetent, double>>;
|
|
77
|
+
inline std::vector<std::variant<NamedSheetDetent, double>> create_std__vector_std__variant_NamedSheetDetent__double__(size_t size) noexcept {
|
|
78
|
+
std::vector<std::variant<NamedSheetDetent, double>> vector;
|
|
49
79
|
vector.reserve(size);
|
|
50
80
|
return vector;
|
|
51
81
|
}
|
|
@@ -213,6 +243,21 @@ namespace margelo::nitro::nitromodal::bridge::swift {
|
|
|
213
243
|
return optional.value();
|
|
214
244
|
}
|
|
215
245
|
|
|
246
|
+
// pragma MARK: std::optional<std::function<void(double /* top */)>>
|
|
247
|
+
/**
|
|
248
|
+
* Specialized version of `std::optional<std::function<void(double / * top * /)>>`.
|
|
249
|
+
*/
|
|
250
|
+
using std__optional_std__function_void_double____top______ = std::optional<std::function<void(double /* top */)>>;
|
|
251
|
+
inline std::optional<std::function<void(double /* top */)>> create_std__optional_std__function_void_double____top______(const std::function<void(double /* top */)>& value) noexcept {
|
|
252
|
+
return std::optional<std::function<void(double /* top */)>>(value);
|
|
253
|
+
}
|
|
254
|
+
inline bool has_value_std__optional_std__function_void_double____top______(const std::optional<std::function<void(double /* top */)>>& optional) noexcept {
|
|
255
|
+
return optional.has_value();
|
|
256
|
+
}
|
|
257
|
+
inline std::function<void(double /* top */)> get_std__optional_std__function_void_double____top______(const std::optional<std::function<void(double /* top */)>>& optional) noexcept {
|
|
258
|
+
return optional.value();
|
|
259
|
+
}
|
|
260
|
+
|
|
216
261
|
// pragma MARK: std::shared_ptr<HybridNitroModalSpec>
|
|
217
262
|
/**
|
|
218
263
|
* Specialized version of `std::shared_ptr<HybridNitroModalSpec>`.
|
|
@@ -18,10 +18,10 @@ namespace margelo::nitro::nitromodal { enum class KeyboardBehavior; }
|
|
|
18
18
|
namespace margelo::nitro::nitromodal { struct ModalContentArea; }
|
|
19
19
|
// Forward declaration of `ModalMode` to properly resolve imports.
|
|
20
20
|
namespace margelo::nitro::nitromodal { enum class ModalMode; }
|
|
21
|
+
// Forward declaration of `NamedSheetDetent` to properly resolve imports.
|
|
22
|
+
namespace margelo::nitro::nitromodal { enum class NamedSheetDetent; }
|
|
21
23
|
// Forward declaration of `PopupAnimation` to properly resolve imports.
|
|
22
24
|
namespace margelo::nitro::nitromodal { enum class PopupAnimation; }
|
|
23
|
-
// Forward declaration of `SheetDetent` to properly resolve imports.
|
|
24
|
-
namespace margelo::nitro::nitromodal { enum class SheetDetent; }
|
|
25
25
|
|
|
26
26
|
// Include C++ defined types
|
|
27
27
|
#include "DismissReason.hpp"
|
|
@@ -29,13 +29,14 @@ namespace margelo::nitro::nitromodal { enum class SheetDetent; }
|
|
|
29
29
|
#include "KeyboardBehavior.hpp"
|
|
30
30
|
#include "ModalContentArea.hpp"
|
|
31
31
|
#include "ModalMode.hpp"
|
|
32
|
+
#include "NamedSheetDetent.hpp"
|
|
32
33
|
#include "PopupAnimation.hpp"
|
|
33
|
-
#include "SheetDetent.hpp"
|
|
34
34
|
#include <NitroModules/Result.hpp>
|
|
35
35
|
#include <exception>
|
|
36
36
|
#include <functional>
|
|
37
37
|
#include <memory>
|
|
38
38
|
#include <optional>
|
|
39
|
+
#include <variant>
|
|
39
40
|
#include <vector>
|
|
40
41
|
|
|
41
42
|
// C++ helpers for Swift
|
|
@@ -14,8 +14,8 @@ namespace NitroModal { class HybridNitroModalSpec_cxx; }
|
|
|
14
14
|
|
|
15
15
|
// Forward declaration of `ModalMode` to properly resolve imports.
|
|
16
16
|
namespace margelo::nitro::nitromodal { enum class ModalMode; }
|
|
17
|
-
// Forward declaration of `
|
|
18
|
-
namespace margelo::nitro::nitromodal { enum class
|
|
17
|
+
// Forward declaration of `NamedSheetDetent` to properly resolve imports.
|
|
18
|
+
namespace margelo::nitro::nitromodal { enum class NamedSheetDetent; }
|
|
19
19
|
// Forward declaration of `KeyboardBehavior` to properly resolve imports.
|
|
20
20
|
namespace margelo::nitro::nitromodal { enum class KeyboardBehavior; }
|
|
21
21
|
// Forward declaration of `PopupAnimation` to properly resolve imports.
|
|
@@ -26,7 +26,8 @@ namespace margelo::nitro::nitromodal { enum class DismissReason; }
|
|
|
26
26
|
namespace margelo::nitro::nitromodal { struct ModalContentArea; }
|
|
27
27
|
|
|
28
28
|
#include "ModalMode.hpp"
|
|
29
|
-
#include "
|
|
29
|
+
#include "NamedSheetDetent.hpp"
|
|
30
|
+
#include <variant>
|
|
30
31
|
#include <vector>
|
|
31
32
|
#include <optional>
|
|
32
33
|
#include "KeyboardBehavior.hpp"
|
|
@@ -94,11 +95,17 @@ namespace margelo::nitro::nitromodal {
|
|
|
94
95
|
inline void setMode(ModalMode mode) noexcept override {
|
|
95
96
|
_swiftPart.setMode(static_cast<int>(mode));
|
|
96
97
|
}
|
|
97
|
-
inline
|
|
98
|
+
inline bool getIsInline() noexcept override {
|
|
99
|
+
return _swiftPart.isInline();
|
|
100
|
+
}
|
|
101
|
+
inline void setIsInline(bool isInline) noexcept override {
|
|
102
|
+
_swiftPart.setIsInline(std::forward<decltype(isInline)>(isInline));
|
|
103
|
+
}
|
|
104
|
+
inline std::vector<std::variant<NamedSheetDetent, double>> getDetents() noexcept override {
|
|
98
105
|
auto __result = _swiftPart.getDetents();
|
|
99
106
|
return __result;
|
|
100
107
|
}
|
|
101
|
-
inline void setDetents(const std::vector<
|
|
108
|
+
inline void setDetents(const std::vector<std::variant<NamedSheetDetent, double>>& detents) noexcept override {
|
|
102
109
|
_swiftPart.setDetents(detents);
|
|
103
110
|
}
|
|
104
111
|
inline double getInitialDetentIndex() noexcept override {
|
|
@@ -176,6 +183,12 @@ namespace margelo::nitro::nitromodal {
|
|
|
176
183
|
inline void setPopupAnimation(PopupAnimation popupAnimation) noexcept override {
|
|
177
184
|
_swiftPart.setPopupAnimation(static_cast<int>(popupAnimation));
|
|
178
185
|
}
|
|
186
|
+
inline bool getPullToRefreshEnabled() noexcept override {
|
|
187
|
+
return _swiftPart.getPullToRefreshEnabled();
|
|
188
|
+
}
|
|
189
|
+
inline void setPullToRefreshEnabled(bool pullToRefreshEnabled) noexcept override {
|
|
190
|
+
_swiftPart.setPullToRefreshEnabled(std::forward<decltype(pullToRefreshEnabled)>(pullToRefreshEnabled));
|
|
191
|
+
}
|
|
179
192
|
inline std::optional<std::function<void()>> getOnPresent() noexcept override {
|
|
180
193
|
auto __result = _swiftPart.getOnPresent();
|
|
181
194
|
return __result;
|
|
@@ -218,6 +231,20 @@ namespace margelo::nitro::nitromodal {
|
|
|
218
231
|
inline void setOnContentAreaChange(const std::optional<std::function<void(const ModalContentArea& /* area */)>>& onContentAreaChange) noexcept override {
|
|
219
232
|
_swiftPart.setOnContentAreaChange(onContentAreaChange);
|
|
220
233
|
}
|
|
234
|
+
inline std::optional<std::function<void()>> getOnPullToRefresh() noexcept override {
|
|
235
|
+
auto __result = _swiftPart.getOnPullToRefresh();
|
|
236
|
+
return __result;
|
|
237
|
+
}
|
|
238
|
+
inline void setOnPullToRefresh(const std::optional<std::function<void()>>& onPullToRefresh) noexcept override {
|
|
239
|
+
_swiftPart.setOnPullToRefresh(onPullToRefresh);
|
|
240
|
+
}
|
|
241
|
+
inline std::optional<std::function<void(double /* top */)>> getOnRestingTopChange() noexcept override {
|
|
242
|
+
auto __result = _swiftPart.getOnRestingTopChange();
|
|
243
|
+
return __result;
|
|
244
|
+
}
|
|
245
|
+
inline void setOnRestingTopChange(const std::optional<std::function<void(double /* top */)>>& onRestingTopChange) noexcept override {
|
|
246
|
+
_swiftPart.setOnRestingTopChange(onRestingTopChange);
|
|
247
|
+
}
|
|
221
248
|
|
|
222
249
|
public:
|
|
223
250
|
// Methods
|
|
@@ -110,6 +110,12 @@ using namespace margelo::nitro::nitromodal::views;
|
|
|
110
110
|
: !newViewProps.mode.hasSameValue(oldViewProps->mode)) {
|
|
111
111
|
swiftPart.setMode(static_cast<int>(newViewProps.mode.get()));
|
|
112
112
|
}
|
|
113
|
+
// isInline: boolean
|
|
114
|
+
if (oldViewProps == nullptr
|
|
115
|
+
? newViewProps.isInline.isProvided()
|
|
116
|
+
: !newViewProps.isInline.hasSameValue(oldViewProps->isInline)) {
|
|
117
|
+
swiftPart.setIsInline(newViewProps.isInline.get());
|
|
118
|
+
}
|
|
113
119
|
// detents: array
|
|
114
120
|
if (oldViewProps == nullptr
|
|
115
121
|
? newViewProps.detents.isProvided()
|
|
@@ -188,6 +194,12 @@ using namespace margelo::nitro::nitromodal::views;
|
|
|
188
194
|
: !newViewProps.popupAnimation.hasSameValue(oldViewProps->popupAnimation)) {
|
|
189
195
|
swiftPart.setPopupAnimation(static_cast<int>(newViewProps.popupAnimation.get()));
|
|
190
196
|
}
|
|
197
|
+
// pullToRefreshEnabled: boolean
|
|
198
|
+
if (oldViewProps == nullptr
|
|
199
|
+
? newViewProps.pullToRefreshEnabled.isProvided()
|
|
200
|
+
: !newViewProps.pullToRefreshEnabled.hasSameValue(oldViewProps->pullToRefreshEnabled)) {
|
|
201
|
+
swiftPart.setPullToRefreshEnabled(newViewProps.pullToRefreshEnabled.get());
|
|
202
|
+
}
|
|
191
203
|
// onPresent: optional
|
|
192
204
|
if (oldViewProps == nullptr
|
|
193
205
|
? newViewProps.onPresent.isProvided()
|
|
@@ -224,6 +236,18 @@ using namespace margelo::nitro::nitromodal::views;
|
|
|
224
236
|
: !newViewProps.onContentAreaChange.hasSameValue(oldViewProps->onContentAreaChange)) {
|
|
225
237
|
swiftPart.setOnContentAreaChange(newViewProps.onContentAreaChange.get());
|
|
226
238
|
}
|
|
239
|
+
// onPullToRefresh: optional
|
|
240
|
+
if (oldViewProps == nullptr
|
|
241
|
+
? newViewProps.onPullToRefresh.isProvided()
|
|
242
|
+
: !newViewProps.onPullToRefresh.hasSameValue(oldViewProps->onPullToRefresh)) {
|
|
243
|
+
swiftPart.setOnPullToRefresh(newViewProps.onPullToRefresh.get());
|
|
244
|
+
}
|
|
245
|
+
// onRestingTopChange: optional
|
|
246
|
+
if (oldViewProps == nullptr
|
|
247
|
+
? newViewProps.onRestingTopChange.isProvided()
|
|
248
|
+
: !newViewProps.onRestingTopChange.hasSameValue(oldViewProps->onRestingTopChange)) {
|
|
249
|
+
swiftPart.setOnRestingTopChange(newViewProps.onRestingTopChange.get());
|
|
250
|
+
}
|
|
227
251
|
|
|
228
252
|
// Update hybridRef if it changed
|
|
229
253
|
if (oldViewProps == nullptr
|
|
@@ -12,6 +12,7 @@ public protocol HybridNitroModalSpec_protocol: HybridObject, HybridView {
|
|
|
12
12
|
// Properties
|
|
13
13
|
var isOpen: Bool { get set }
|
|
14
14
|
var mode: ModalMode { get set }
|
|
15
|
+
var isInline: Bool { get set }
|
|
15
16
|
var detents: [SheetDetent] { get set }
|
|
16
17
|
var initialDetentIndex: Double { get set }
|
|
17
18
|
var backdropColor: Double { get set }
|
|
@@ -25,12 +26,15 @@ public protocol HybridNitroModalSpec_protocol: HybridObject, HybridView {
|
|
|
25
26
|
var contentBackgroundColor: Double? { get set }
|
|
26
27
|
var keyboardBehavior: KeyboardBehavior { get set }
|
|
27
28
|
var popupAnimation: PopupAnimation { get set }
|
|
29
|
+
var pullToRefreshEnabled: Bool { get set }
|
|
28
30
|
var onPresent: (() -> Void)? { get set }
|
|
29
31
|
var onDismiss: ((_ reason: DismissReason) -> Void)? { get set }
|
|
30
32
|
var onDetentChange: ((_ index: Double) -> Void)? { get set }
|
|
31
33
|
var onBackdropPress: (() -> Void)? { get set }
|
|
32
34
|
var onBackButtonPress: (() -> Void)? { get set }
|
|
33
35
|
var onContentAreaChange: ((_ area: ModalContentArea) -> Void)? { get set }
|
|
36
|
+
var onPullToRefresh: (() -> Void)? { get set }
|
|
37
|
+
var onRestingTopChange: ((_ top: Double) -> Void)? { get set }
|
|
34
38
|
|
|
35
39
|
// Methods
|
|
36
40
|
func present() throws -> Void
|
|
@@ -143,20 +143,50 @@ open class HybridNitroModalSpec_cxx {
|
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
public final var
|
|
146
|
+
public final var isInline: Bool {
|
|
147
147
|
@inline(__always)
|
|
148
148
|
get {
|
|
149
|
-
return
|
|
150
|
-
|
|
149
|
+
return self.__implementation.isInline
|
|
150
|
+
}
|
|
151
|
+
@inline(__always)
|
|
152
|
+
set {
|
|
153
|
+
self.__implementation.isInline = newValue
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
public final var detents: bridge.std__vector_std__variant_NamedSheetDetent__double__ {
|
|
158
|
+
@inline(__always)
|
|
159
|
+
get {
|
|
160
|
+
return { () -> bridge.std__vector_std__variant_NamedSheetDetent__double__ in
|
|
161
|
+
var __vector = bridge.create_std__vector_std__variant_NamedSheetDetent__double__(self.__implementation.detents.count)
|
|
151
162
|
for __item in self.__implementation.detents {
|
|
152
|
-
__vector.push_back(
|
|
163
|
+
__vector.push_back({ () -> bridge.std__variant_NamedSheetDetent__double_ in
|
|
164
|
+
switch __item {
|
|
165
|
+
case .first(let __value):
|
|
166
|
+
return bridge.create_std__variant_NamedSheetDetent__double_(__value)
|
|
167
|
+
case .second(let __value):
|
|
168
|
+
return bridge.create_std__variant_NamedSheetDetent__double_(__value)
|
|
169
|
+
}
|
|
170
|
+
}().variant)
|
|
153
171
|
}
|
|
154
172
|
return __vector
|
|
155
173
|
}()
|
|
156
174
|
}
|
|
157
175
|
@inline(__always)
|
|
158
176
|
set {
|
|
159
|
-
self.__implementation.detents = newValue.map({ __item in
|
|
177
|
+
self.__implementation.detents = newValue.map({ __item in { () -> SheetDetent in
|
|
178
|
+
let __variant = bridge.std__variant_NamedSheetDetent__double_(__item)
|
|
179
|
+
switch __variant.index() {
|
|
180
|
+
case 0:
|
|
181
|
+
let __actual = __variant.get_0()
|
|
182
|
+
return .first(__actual)
|
|
183
|
+
case 1:
|
|
184
|
+
let __actual = __variant.get_1()
|
|
185
|
+
return .second(__actual)
|
|
186
|
+
default:
|
|
187
|
+
fatalError("Variant can never have index \(__variant.index())!")
|
|
188
|
+
}
|
|
189
|
+
}() })
|
|
160
190
|
}
|
|
161
191
|
}
|
|
162
192
|
|
|
@@ -305,6 +335,17 @@ open class HybridNitroModalSpec_cxx {
|
|
|
305
335
|
}
|
|
306
336
|
}
|
|
307
337
|
|
|
338
|
+
public final var pullToRefreshEnabled: Bool {
|
|
339
|
+
@inline(__always)
|
|
340
|
+
get {
|
|
341
|
+
return self.__implementation.pullToRefreshEnabled
|
|
342
|
+
}
|
|
343
|
+
@inline(__always)
|
|
344
|
+
set {
|
|
345
|
+
self.__implementation.pullToRefreshEnabled = newValue
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
308
349
|
public final var onPresent: bridge.std__optional_std__function_void____ {
|
|
309
350
|
@inline(__always)
|
|
310
351
|
get {
|
|
@@ -496,6 +537,70 @@ open class HybridNitroModalSpec_cxx {
|
|
|
496
537
|
}()
|
|
497
538
|
}
|
|
498
539
|
}
|
|
540
|
+
|
|
541
|
+
public final var onPullToRefresh: bridge.std__optional_std__function_void____ {
|
|
542
|
+
@inline(__always)
|
|
543
|
+
get {
|
|
544
|
+
return { () -> bridge.std__optional_std__function_void____ in
|
|
545
|
+
if let __unwrappedValue = self.__implementation.onPullToRefresh {
|
|
546
|
+
return bridge.create_std__optional_std__function_void____({ () -> bridge.Func_void in
|
|
547
|
+
let __closureWrapper = Func_void(__unwrappedValue)
|
|
548
|
+
return bridge.create_Func_void(__closureWrapper.toUnsafe())
|
|
549
|
+
}())
|
|
550
|
+
} else {
|
|
551
|
+
return .init()
|
|
552
|
+
}
|
|
553
|
+
}()
|
|
554
|
+
}
|
|
555
|
+
@inline(__always)
|
|
556
|
+
set {
|
|
557
|
+
self.__implementation.onPullToRefresh = { () -> (() -> Void)? in
|
|
558
|
+
if bridge.has_value_std__optional_std__function_void____(newValue) {
|
|
559
|
+
let __unwrapped = bridge.get_std__optional_std__function_void____(newValue)
|
|
560
|
+
return { () -> () -> Void in
|
|
561
|
+
let __wrappedFunction = bridge.wrap_Func_void(__unwrapped)
|
|
562
|
+
return { () -> Void in
|
|
563
|
+
__wrappedFunction.call()
|
|
564
|
+
}
|
|
565
|
+
}()
|
|
566
|
+
} else {
|
|
567
|
+
return nil
|
|
568
|
+
}
|
|
569
|
+
}()
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
public final var onRestingTopChange: bridge.std__optional_std__function_void_double____top______ {
|
|
574
|
+
@inline(__always)
|
|
575
|
+
get {
|
|
576
|
+
return { () -> bridge.std__optional_std__function_void_double____top______ in
|
|
577
|
+
if let __unwrappedValue = self.__implementation.onRestingTopChange {
|
|
578
|
+
return bridge.create_std__optional_std__function_void_double____top______({ () -> bridge.Func_void_double in
|
|
579
|
+
let __closureWrapper = Func_void_double(__unwrappedValue)
|
|
580
|
+
return bridge.create_Func_void_double(__closureWrapper.toUnsafe())
|
|
581
|
+
}())
|
|
582
|
+
} else {
|
|
583
|
+
return .init()
|
|
584
|
+
}
|
|
585
|
+
}()
|
|
586
|
+
}
|
|
587
|
+
@inline(__always)
|
|
588
|
+
set {
|
|
589
|
+
self.__implementation.onRestingTopChange = { () -> ((_ top: Double) -> Void)? in
|
|
590
|
+
if bridge.has_value_std__optional_std__function_void_double____top______(newValue) {
|
|
591
|
+
let __unwrapped = bridge.get_std__optional_std__function_void_double____top______(newValue)
|
|
592
|
+
return { () -> (Double) -> Void in
|
|
593
|
+
let __wrappedFunction = bridge.wrap_Func_void_double(__unwrapped)
|
|
594
|
+
return { (__top: Double) -> Void in
|
|
595
|
+
__wrappedFunction.call(__top)
|
|
596
|
+
}
|
|
597
|
+
}()
|
|
598
|
+
} else {
|
|
599
|
+
return nil
|
|
600
|
+
}
|
|
601
|
+
}()
|
|
602
|
+
}
|
|
603
|
+
}
|
|
499
604
|
|
|
500
605
|
// Methods
|
|
501
606
|
@inline(__always)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// NamedSheetDetent.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
|
+
/**
|
|
9
|
+
* Represents the JS union `NamedSheetDetent`, backed by a C++ enum.
|
|
10
|
+
*/
|
|
11
|
+
public typealias NamedSheetDetent = margelo.nitro.nitromodal.NamedSheetDetent
|
|
12
|
+
|
|
13
|
+
public extension NamedSheetDetent {
|
|
14
|
+
/**
|
|
15
|
+
* Get a NamedSheetDetent for the given String value, or
|
|
16
|
+
* return `nil` if the given value was invalid/unknown.
|
|
17
|
+
*/
|
|
18
|
+
init?(fromString string: String) {
|
|
19
|
+
switch string {
|
|
20
|
+
case "small":
|
|
21
|
+
self = .small
|
|
22
|
+
case "medium":
|
|
23
|
+
self = .medium
|
|
24
|
+
case "large":
|
|
25
|
+
self = .large
|
|
26
|
+
case "fitContent":
|
|
27
|
+
self = .fitcontent
|
|
28
|
+
default:
|
|
29
|
+
return nil
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get the String value this NamedSheetDetent represents.
|
|
35
|
+
*/
|
|
36
|
+
var stringValue: String {
|
|
37
|
+
switch self {
|
|
38
|
+
case .small:
|
|
39
|
+
return "small"
|
|
40
|
+
case .medium:
|
|
41
|
+
return "medium"
|
|
42
|
+
case .large:
|
|
43
|
+
return "large"
|
|
44
|
+
case .fitcontent:
|
|
45
|
+
return "fitContent"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -5,44 +5,26 @@
|
|
|
5
5
|
/// Copyright © Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
|
|
8
10
|
/**
|
|
9
|
-
*
|
|
11
|
+
* An Swift enum with associated values representing a Variant/Union type.
|
|
12
|
+
* JS type: `enum | number`
|
|
10
13
|
*/
|
|
11
|
-
|
|
14
|
+
@frozen
|
|
15
|
+
public indirect enum SheetDetent {
|
|
16
|
+
case first(NamedSheetDetent)
|
|
17
|
+
case second(Double)
|
|
18
|
+
}
|
|
12
19
|
|
|
13
20
|
public extension SheetDetent {
|
|
14
|
-
|
|
15
|
-
* Get a SheetDetent for the given String value, or
|
|
16
|
-
* return `nil` if the given value was invalid/unknown.
|
|
17
|
-
*/
|
|
18
|
-
init?(fromString string: String) {
|
|
19
|
-
switch string {
|
|
20
|
-
case "small":
|
|
21
|
-
self = .small
|
|
22
|
-
case "medium":
|
|
23
|
-
self = .medium
|
|
24
|
-
case "large":
|
|
25
|
-
self = .large
|
|
26
|
-
case "fitContent":
|
|
27
|
-
self = .fitcontent
|
|
28
|
-
default:
|
|
29
|
-
return nil
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Get the String value this SheetDetent represents.
|
|
35
|
-
*/
|
|
36
|
-
var stringValue: String {
|
|
21
|
+
func asType<T>(_ type: T.Type = T.self) -> T? {
|
|
37
22
|
switch self {
|
|
38
|
-
case .
|
|
39
|
-
|
|
40
|
-
case .medium:
|
|
41
|
-
return "medium"
|
|
42
|
-
case .large:
|
|
43
|
-
return "large"
|
|
44
|
-
case .fitcontent:
|
|
45
|
-
return "fitContent"
|
|
23
|
+
case .first(let value): return value as? T
|
|
24
|
+
case .second(let value): return value as? T
|
|
46
25
|
}
|
|
47
26
|
}
|
|
27
|
+
func isType<T>(_ type: T.Type = T.self) -> Bool {
|
|
28
|
+
return self.asType(type) != nil
|
|
29
|
+
}
|
|
48
30
|
}
|
|
@@ -18,6 +18,8 @@ namespace margelo::nitro::nitromodal {
|
|
|
18
18
|
prototype.registerHybridSetter("isOpen", &HybridNitroModalSpec::setIsOpen);
|
|
19
19
|
prototype.registerHybridGetter("mode", &HybridNitroModalSpec::getMode);
|
|
20
20
|
prototype.registerHybridSetter("mode", &HybridNitroModalSpec::setMode);
|
|
21
|
+
prototype.registerHybridGetter("isInline", &HybridNitroModalSpec::getIsInline);
|
|
22
|
+
prototype.registerHybridSetter("isInline", &HybridNitroModalSpec::setIsInline);
|
|
21
23
|
prototype.registerHybridGetter("detents", &HybridNitroModalSpec::getDetents);
|
|
22
24
|
prototype.registerHybridSetter("detents", &HybridNitroModalSpec::setDetents);
|
|
23
25
|
prototype.registerHybridGetter("initialDetentIndex", &HybridNitroModalSpec::getInitialDetentIndex);
|
|
@@ -44,6 +46,8 @@ namespace margelo::nitro::nitromodal {
|
|
|
44
46
|
prototype.registerHybridSetter("keyboardBehavior", &HybridNitroModalSpec::setKeyboardBehavior);
|
|
45
47
|
prototype.registerHybridGetter("popupAnimation", &HybridNitroModalSpec::getPopupAnimation);
|
|
46
48
|
prototype.registerHybridSetter("popupAnimation", &HybridNitroModalSpec::setPopupAnimation);
|
|
49
|
+
prototype.registerHybridGetter("pullToRefreshEnabled", &HybridNitroModalSpec::getPullToRefreshEnabled);
|
|
50
|
+
prototype.registerHybridSetter("pullToRefreshEnabled", &HybridNitroModalSpec::setPullToRefreshEnabled);
|
|
47
51
|
prototype.registerHybridGetter("onPresent", &HybridNitroModalSpec::getOnPresent);
|
|
48
52
|
prototype.registerHybridSetter("onPresent", &HybridNitroModalSpec::setOnPresent);
|
|
49
53
|
prototype.registerHybridGetter("onDismiss", &HybridNitroModalSpec::getOnDismiss);
|
|
@@ -56,6 +60,10 @@ namespace margelo::nitro::nitromodal {
|
|
|
56
60
|
prototype.registerHybridSetter("onBackButtonPress", &HybridNitroModalSpec::setOnBackButtonPress);
|
|
57
61
|
prototype.registerHybridGetter("onContentAreaChange", &HybridNitroModalSpec::getOnContentAreaChange);
|
|
58
62
|
prototype.registerHybridSetter("onContentAreaChange", &HybridNitroModalSpec::setOnContentAreaChange);
|
|
63
|
+
prototype.registerHybridGetter("onPullToRefresh", &HybridNitroModalSpec::getOnPullToRefresh);
|
|
64
|
+
prototype.registerHybridSetter("onPullToRefresh", &HybridNitroModalSpec::setOnPullToRefresh);
|
|
65
|
+
prototype.registerHybridGetter("onRestingTopChange", &HybridNitroModalSpec::getOnRestingTopChange);
|
|
66
|
+
prototype.registerHybridSetter("onRestingTopChange", &HybridNitroModalSpec::setOnRestingTopChange);
|
|
59
67
|
prototype.registerHybridMethod("present", &HybridNitroModalSpec::present);
|
|
60
68
|
prototype.registerHybridMethod("dismiss", &HybridNitroModalSpec::dismiss);
|
|
61
69
|
prototype.registerHybridMethod("snapToDetent", &HybridNitroModalSpec::snapToDetent);
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
|
|
16
16
|
// Forward declaration of `ModalMode` to properly resolve imports.
|
|
17
17
|
namespace margelo::nitro::nitromodal { enum class ModalMode; }
|
|
18
|
-
// Forward declaration of `
|
|
19
|
-
namespace margelo::nitro::nitromodal { enum class
|
|
18
|
+
// Forward declaration of `NamedSheetDetent` to properly resolve imports.
|
|
19
|
+
namespace margelo::nitro::nitromodal { enum class NamedSheetDetent; }
|
|
20
20
|
// Forward declaration of `KeyboardBehavior` to properly resolve imports.
|
|
21
21
|
namespace margelo::nitro::nitromodal { enum class KeyboardBehavior; }
|
|
22
22
|
// Forward declaration of `PopupAnimation` to properly resolve imports.
|
|
@@ -27,7 +27,8 @@ namespace margelo::nitro::nitromodal { enum class DismissReason; }
|
|
|
27
27
|
namespace margelo::nitro::nitromodal { struct ModalContentArea; }
|
|
28
28
|
|
|
29
29
|
#include "ModalMode.hpp"
|
|
30
|
-
#include "
|
|
30
|
+
#include "NamedSheetDetent.hpp"
|
|
31
|
+
#include <variant>
|
|
31
32
|
#include <vector>
|
|
32
33
|
#include <optional>
|
|
33
34
|
#include "KeyboardBehavior.hpp"
|
|
@@ -67,8 +68,10 @@ namespace margelo::nitro::nitromodal {
|
|
|
67
68
|
virtual void setIsOpen(bool isOpen) = 0;
|
|
68
69
|
virtual ModalMode getMode() = 0;
|
|
69
70
|
virtual void setMode(ModalMode mode) = 0;
|
|
70
|
-
virtual
|
|
71
|
-
virtual void
|
|
71
|
+
virtual bool getIsInline() = 0;
|
|
72
|
+
virtual void setIsInline(bool isInline) = 0;
|
|
73
|
+
virtual std::vector<std::variant<NamedSheetDetent, double>> getDetents() = 0;
|
|
74
|
+
virtual void setDetents(const std::vector<std::variant<NamedSheetDetent, double>>& detents) = 0;
|
|
72
75
|
virtual double getInitialDetentIndex() = 0;
|
|
73
76
|
virtual void setInitialDetentIndex(double initialDetentIndex) = 0;
|
|
74
77
|
virtual double getBackdropColor() = 0;
|
|
@@ -93,6 +96,8 @@ namespace margelo::nitro::nitromodal {
|
|
|
93
96
|
virtual void setKeyboardBehavior(KeyboardBehavior keyboardBehavior) = 0;
|
|
94
97
|
virtual PopupAnimation getPopupAnimation() = 0;
|
|
95
98
|
virtual void setPopupAnimation(PopupAnimation popupAnimation) = 0;
|
|
99
|
+
virtual bool getPullToRefreshEnabled() = 0;
|
|
100
|
+
virtual void setPullToRefreshEnabled(bool pullToRefreshEnabled) = 0;
|
|
96
101
|
virtual std::optional<std::function<void()>> getOnPresent() = 0;
|
|
97
102
|
virtual void setOnPresent(const std::optional<std::function<void()>>& onPresent) = 0;
|
|
98
103
|
virtual std::optional<std::function<void(DismissReason /* reason */)>> getOnDismiss() = 0;
|
|
@@ -105,6 +110,10 @@ namespace margelo::nitro::nitromodal {
|
|
|
105
110
|
virtual void setOnBackButtonPress(const std::optional<std::function<void()>>& onBackButtonPress) = 0;
|
|
106
111
|
virtual std::optional<std::function<void(const ModalContentArea& /* area */)>> getOnContentAreaChange() = 0;
|
|
107
112
|
virtual void setOnContentAreaChange(const std::optional<std::function<void(const ModalContentArea& /* area */)>>& onContentAreaChange) = 0;
|
|
113
|
+
virtual std::optional<std::function<void()>> getOnPullToRefresh() = 0;
|
|
114
|
+
virtual void setOnPullToRefresh(const std::optional<std::function<void()>>& onPullToRefresh) = 0;
|
|
115
|
+
virtual std::optional<std::function<void(double /* top */)>> getOnRestingTopChange() = 0;
|
|
116
|
+
virtual void setOnRestingTopChange(const std::optional<std::function<void(double /* top */)>>& onRestingTopChange) = 0;
|
|
108
117
|
|
|
109
118
|
public:
|
|
110
119
|
// Methods
|