react-native-nitro-modal 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +20 -0
  2. package/NitroModal.podspec +29 -0
  3. package/README.md +39 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +124 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  8. package/android/src/main/java/com/margelo/nitro/nitromodal/BottomSheetPresenter.kt +284 -0
  9. package/android/src/main/java/com/margelo/nitro/nitromodal/HybridNitroModal.kt +312 -0
  10. package/android/src/main/java/com/margelo/nitro/nitromodal/ModalConfig.kt +50 -0
  11. package/android/src/main/java/com/margelo/nitro/nitromodal/ModalContentRoot.kt +115 -0
  12. package/android/src/main/java/com/margelo/nitro/nitromodal/ModalPresenter.kt +253 -0
  13. package/android/src/main/java/com/margelo/nitro/nitromodal/NitroModalHostView.kt +52 -0
  14. package/android/src/main/java/com/margelo/nitro/nitromodal/NitroModalPackage.kt +28 -0
  15. package/android/src/main/java/com/margelo/nitro/nitromodal/NitroModalViewManager.kt +67 -0
  16. package/android/src/main/java/com/margelo/nitro/nitromodal/PopupPresenter.kt +156 -0
  17. package/android/src/main/res/values/styles.xml +17 -0
  18. package/ios/BackdropView.swift +64 -0
  19. package/ios/HybridNitroModal.swift +329 -0
  20. package/ios/HybridNitroModalComponent+Children.mm +77 -0
  21. package/ios/ModalConfig.swift +73 -0
  22. package/ios/NitroModalHostView.swift +91 -0
  23. package/ios/PopupViewController.swift +223 -0
  24. package/ios/SheetViewController.swift +244 -0
  25. package/lib/module/NitroModal.js +188 -0
  26. package/lib/module/NitroModal.js.map +1 -0
  27. package/lib/module/NitroModal.nitro.js +4 -0
  28. package/lib/module/NitroModal.nitro.js.map +1 -0
  29. package/lib/module/NitroModalView.js +17 -0
  30. package/lib/module/NitroModalView.js.map +1 -0
  31. package/lib/module/NitroModalView.native.js +6 -0
  32. package/lib/module/NitroModalView.native.js.map +1 -0
  33. package/lib/module/index.js +4 -0
  34. package/lib/module/index.js.map +1 -0
  35. package/lib/module/package.json +1 -0
  36. package/lib/typescript/package.json +1 -0
  37. package/lib/typescript/src/NitroModal.d.ts +59 -0
  38. package/lib/typescript/src/NitroModal.d.ts.map +1 -0
  39. package/lib/typescript/src/NitroModal.nitro.d.ts +78 -0
  40. package/lib/typescript/src/NitroModal.nitro.d.ts.map +1 -0
  41. package/lib/typescript/src/NitroModalView.d.ts +4 -0
  42. package/lib/typescript/src/NitroModalView.d.ts.map +1 -0
  43. package/lib/typescript/src/NitroModalView.native.d.ts +3 -0
  44. package/lib/typescript/src/NitroModalView.native.d.ts.map +1 -0
  45. package/lib/typescript/src/index.d.ts +3 -0
  46. package/lib/typescript/src/index.d.ts.map +1 -0
  47. package/nitro.json +23 -0
  48. package/nitrogen/generated/android/c++/JDismissReason.hpp +64 -0
  49. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  50. package/nitrogen/generated/android/c++/JFunc_void_DismissReason.hpp +77 -0
  51. package/nitrogen/generated/android/c++/JFunc_void_ModalContentArea.hpp +77 -0
  52. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
  53. package/nitrogen/generated/android/c++/JHybridNitroModalSpec.cpp +344 -0
  54. package/nitrogen/generated/android/c++/JHybridNitroModalSpec.hpp +106 -0
  55. package/nitrogen/generated/android/c++/JKeyboardBehavior.hpp +61 -0
  56. package/nitrogen/generated/android/c++/JModalContentArea.hpp +61 -0
  57. package/nitrogen/generated/android/c++/JModalMode.hpp +58 -0
  58. package/nitrogen/generated/android/c++/JPopupAnimation.hpp +61 -0
  59. package/nitrogen/generated/android/c++/JSheetDetent.hpp +64 -0
  60. package/nitrogen/generated/android/c++/views/JHybridNitroModalStateUpdater.cpp +174 -0
  61. package/nitrogen/generated/android/c++/views/JHybridNitroModalStateUpdater.hpp +54 -0
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/DismissReason.kt +25 -0
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/Func_void.kt +78 -0
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/Func_void_DismissReason.kt +78 -0
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/Func_void_ModalContentArea.kt +78 -0
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/Func_void_double.kt +78 -0
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/HybridNitroModalSpec.kt +237 -0
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/KeyboardBehavior.kt +24 -0
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/ModalContentArea.kt +56 -0
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/ModalMode.kt +23 -0
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/PopupAnimation.kt +24 -0
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/SheetDetent.kt +25 -0
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/nitromodalOnLoad.kt +35 -0
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/views/HybridNitroModalManager.kt +96 -0
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/views/HybridNitroModalStateUpdater.kt +23 -0
  76. package/nitrogen/generated/android/nitromodal+autolinking.cmake +83 -0
  77. package/nitrogen/generated/android/nitromodal+autolinking.gradle +27 -0
  78. package/nitrogen/generated/android/nitromodalOnLoad.cpp +64 -0
  79. package/nitrogen/generated/android/nitromodalOnLoad.hpp +34 -0
  80. package/nitrogen/generated/ios/NitroModal+autolinking.rb +62 -0
  81. package/nitrogen/generated/ios/NitroModal-Swift-Cxx-Bridge.cpp +65 -0
  82. package/nitrogen/generated/ios/NitroModal-Swift-Cxx-Bridge.hpp +237 -0
  83. package/nitrogen/generated/ios/NitroModal-Swift-Cxx-Umbrella.hpp +64 -0
  84. package/nitrogen/generated/ios/NitroModalAutolinking.mm +33 -0
  85. package/nitrogen/generated/ios/NitroModalAutolinking.swift +26 -0
  86. package/nitrogen/generated/ios/c++/HybridNitroModalSpecSwift.cpp +11 -0
  87. package/nitrogen/generated/ios/c++/HybridNitroModalSpecSwift.hpp +247 -0
  88. package/nitrogen/generated/ios/c++/views/HybridNitroModalComponent.mm +264 -0
  89. package/nitrogen/generated/ios/swift/DismissReason.swift +48 -0
  90. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  91. package/nitrogen/generated/ios/swift/Func_void_DismissReason.swift +46 -0
  92. package/nitrogen/generated/ios/swift/Func_void_ModalContentArea.swift +46 -0
  93. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  94. package/nitrogen/generated/ios/swift/HybridNitroModalSpec.swift +77 -0
  95. package/nitrogen/generated/ios/swift/HybridNitroModalSpec_cxx.swift +554 -0
  96. package/nitrogen/generated/ios/swift/KeyboardBehavior.swift +44 -0
  97. package/nitrogen/generated/ios/swift/ModalContentArea.swift +34 -0
  98. package/nitrogen/generated/ios/swift/ModalMode.swift +40 -0
  99. package/nitrogen/generated/ios/swift/PopupAnimation.swift +44 -0
  100. package/nitrogen/generated/ios/swift/SheetDetent.swift +48 -0
  101. package/nitrogen/generated/shared/c++/DismissReason.hpp +84 -0
  102. package/nitrogen/generated/shared/c++/HybridNitroModalSpec.cpp +65 -0
  103. package/nitrogen/generated/shared/c++/HybridNitroModalSpec.hpp +124 -0
  104. package/nitrogen/generated/shared/c++/KeyboardBehavior.hpp +80 -0
  105. package/nitrogen/generated/shared/c++/ModalContentArea.hpp +87 -0
  106. package/nitrogen/generated/shared/c++/ModalMode.hpp +76 -0
  107. package/nitrogen/generated/shared/c++/PopupAnimation.hpp +80 -0
  108. package/nitrogen/generated/shared/c++/SheetDetent.hpp +84 -0
  109. package/nitrogen/generated/shared/c++/views/HybridNitroModalComponent.cpp +74 -0
  110. package/nitrogen/generated/shared/c++/views/HybridNitroModalComponent.hpp +151 -0
  111. package/nitrogen/generated/shared/json/NitroModalConfig.json +30 -0
  112. package/package.json +183 -0
  113. package/src/NitroModal.nitro.ts +92 -0
  114. package/src/NitroModal.tsx +292 -0
  115. package/src/NitroModalView.native.tsx +8 -0
  116. package/src/NitroModalView.tsx +24 -0
  117. package/src/index.tsx +12 -0
@@ -0,0 +1,78 @@
1
+ ///
2
+ /// Func_void_double.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.nitromodal
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 `(index: number) => 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_double: (Double) -> 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(index: Double): Unit
31
+ }
32
+
33
+ /**
34
+ * Represents the JavaScript callback `(index: number) => 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_double_cxx: Func_void_double {
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(index: Double): Unit
59
+ = invoke_cxx(index)
60
+
61
+ private external fun invoke_cxx(index: Double): Unit
62
+ }
63
+
64
+ /**
65
+ * Represents the JavaScript callback `(index: number) => void`.
66
+ * This is implemented in Java/Kotlin, via a `(Double) -> Unit`.
67
+ * The callback is always coming from native.
68
+ */
69
+ @DoNotStrip
70
+ @Keep
71
+ @Suppress("ClassName", "RedundantUnitReturnType", "unused")
72
+ class Func_void_double_java(private val function: (Double) -> Unit): Func_void_double {
73
+ @DoNotStrip
74
+ @Keep
75
+ override fun invoke(index: Double): Unit {
76
+ return this.function(index)
77
+ }
78
+ }
@@ -0,0 +1,237 @@
1
+ ///
2
+ /// HybridNitroModalSpec.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.nitromodal
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.jni.HybridData
12
+ import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
14
+ import com.margelo.nitro.core.HybridObject
15
+ import com.margelo.nitro.views.HybridView
16
+
17
+ /**
18
+ * A Kotlin class representing the NitroModal HybridObject.
19
+ * Implement this abstract class to create Kotlin-based instances of NitroModal.
20
+ */
21
+ @DoNotStrip
22
+ @Keep
23
+ @Suppress(
24
+ "KotlinJniMissingFunction", "unused",
25
+ "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
26
+ "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
27
+ )
28
+ abstract class HybridNitroModalSpec: HybridView() {
29
+ // Properties
30
+ @get:DoNotStrip
31
+ @get:Keep
32
+ @set:DoNotStrip
33
+ @set:Keep
34
+ abstract var isOpen: Boolean
35
+
36
+ @get:DoNotStrip
37
+ @get:Keep
38
+ @set:DoNotStrip
39
+ @set:Keep
40
+ abstract var mode: ModalMode
41
+
42
+ @get:DoNotStrip
43
+ @get:Keep
44
+ @set:DoNotStrip
45
+ @set:Keep
46
+ abstract var detents: Array<SheetDetent>
47
+
48
+ @get:DoNotStrip
49
+ @get:Keep
50
+ @set:DoNotStrip
51
+ @set:Keep
52
+ abstract var initialDetentIndex: Double
53
+
54
+ @get:DoNotStrip
55
+ @get:Keep
56
+ @set:DoNotStrip
57
+ @set:Keep
58
+ abstract var backdropColor: Double
59
+
60
+ @get:DoNotStrip
61
+ @get:Keep
62
+ @set:DoNotStrip
63
+ @set:Keep
64
+ abstract var backdropOpacity: Double
65
+
66
+ @get:DoNotStrip
67
+ @get:Keep
68
+ @set:DoNotStrip
69
+ @set:Keep
70
+ abstract var backdropBlurRadius: Double
71
+
72
+ @get:DoNotStrip
73
+ @get:Keep
74
+ @set:DoNotStrip
75
+ @set:Keep
76
+ abstract var dismissOnBackdropPress: Boolean
77
+
78
+ @get:DoNotStrip
79
+ @get:Keep
80
+ @set:DoNotStrip
81
+ @set:Keep
82
+ abstract var dismissOnSwipe: Boolean
83
+
84
+ @get:DoNotStrip
85
+ @get:Keep
86
+ @set:DoNotStrip
87
+ @set:Keep
88
+ abstract var dismissOnBackButton: Boolean
89
+
90
+ @get:DoNotStrip
91
+ @get:Keep
92
+ @set:DoNotStrip
93
+ @set:Keep
94
+ abstract var grabberVisible: Boolean
95
+
96
+ @get:DoNotStrip
97
+ @get:Keep
98
+ @set:DoNotStrip
99
+ @set:Keep
100
+ abstract var cornerRadius: Double
101
+
102
+ @get:DoNotStrip
103
+ @get:Keep
104
+ @set:DoNotStrip
105
+ @set:Keep
106
+ abstract var contentBackgroundColor: Double?
107
+
108
+ @get:DoNotStrip
109
+ @get:Keep
110
+ @set:DoNotStrip
111
+ @set:Keep
112
+ abstract var keyboardBehavior: KeyboardBehavior
113
+
114
+ @get:DoNotStrip
115
+ @get:Keep
116
+ @set:DoNotStrip
117
+ @set:Keep
118
+ abstract var popupAnimation: PopupAnimation
119
+
120
+ abstract var onPresent: (() -> Unit)?
121
+
122
+ private var onPresent_cxx: Func_void?
123
+ @Keep
124
+ @DoNotStrip
125
+ get() {
126
+ return onPresent?.let { Func_void_java(it) }
127
+ }
128
+ @Keep
129
+ @DoNotStrip
130
+ set(value) {
131
+ onPresent = value?.let { it }
132
+ }
133
+
134
+ abstract var onDismiss: ((reason: DismissReason) -> Unit)?
135
+
136
+ private var onDismiss_cxx: Func_void_DismissReason?
137
+ @Keep
138
+ @DoNotStrip
139
+ get() {
140
+ return onDismiss?.let { Func_void_DismissReason_java(it) }
141
+ }
142
+ @Keep
143
+ @DoNotStrip
144
+ set(value) {
145
+ onDismiss = value?.let { it }
146
+ }
147
+
148
+ abstract var onDetentChange: ((index: Double) -> Unit)?
149
+
150
+ private var onDetentChange_cxx: Func_void_double?
151
+ @Keep
152
+ @DoNotStrip
153
+ get() {
154
+ return onDetentChange?.let { Func_void_double_java(it) }
155
+ }
156
+ @Keep
157
+ @DoNotStrip
158
+ set(value) {
159
+ onDetentChange = value?.let { it }
160
+ }
161
+
162
+ abstract var onBackdropPress: (() -> Unit)?
163
+
164
+ private var onBackdropPress_cxx: Func_void?
165
+ @Keep
166
+ @DoNotStrip
167
+ get() {
168
+ return onBackdropPress?.let { Func_void_java(it) }
169
+ }
170
+ @Keep
171
+ @DoNotStrip
172
+ set(value) {
173
+ onBackdropPress = value?.let { it }
174
+ }
175
+
176
+ abstract var onBackButtonPress: (() -> Unit)?
177
+
178
+ private var onBackButtonPress_cxx: Func_void?
179
+ @Keep
180
+ @DoNotStrip
181
+ get() {
182
+ return onBackButtonPress?.let { Func_void_java(it) }
183
+ }
184
+ @Keep
185
+ @DoNotStrip
186
+ set(value) {
187
+ onBackButtonPress = value?.let { it }
188
+ }
189
+
190
+ abstract var onContentAreaChange: ((area: ModalContentArea) -> Unit)?
191
+
192
+ private var onContentAreaChange_cxx: Func_void_ModalContentArea?
193
+ @Keep
194
+ @DoNotStrip
195
+ get() {
196
+ return onContentAreaChange?.let { Func_void_ModalContentArea_java(it) }
197
+ }
198
+ @Keep
199
+ @DoNotStrip
200
+ set(value) {
201
+ onContentAreaChange = value?.let { it }
202
+ }
203
+
204
+ // Methods
205
+ @DoNotStrip
206
+ @Keep
207
+ abstract fun present(): Unit
208
+
209
+ @DoNotStrip
210
+ @Keep
211
+ abstract fun dismiss(): Unit
212
+
213
+ @DoNotStrip
214
+ @Keep
215
+ abstract fun snapToDetent(index: Double): Unit
216
+
217
+ // Default implementation of `HybridObject.toString()`
218
+ override fun toString(): String {
219
+ return "[HybridObject NitroModal]"
220
+ }
221
+
222
+ // C++ backing class
223
+ @DoNotStrip
224
+ @Keep
225
+ protected open class CxxPart(javaPart: HybridNitroModalSpec): HybridObject.CxxPart(javaPart) {
226
+ // C++ JHybridNitroModalSpec::CxxPart::initHybrid(...)
227
+ @FastNative
228
+ external override fun initHybrid(): HybridData
229
+ }
230
+ override fun createCxxPart(): CxxPart {
231
+ return CxxPart(this)
232
+ }
233
+
234
+ companion object {
235
+ protected const val TAG = "HybridNitroModalSpec"
236
+ }
237
+ }
@@ -0,0 +1,24 @@
1
+ ///
2
+ /// KeyboardBehavior.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.nitromodal
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+
13
+ /**
14
+ * Represents the JavaScript enum/union "KeyboardBehavior".
15
+ */
16
+ @DoNotStrip
17
+ @Keep
18
+ enum class KeyboardBehavior(@DoNotStrip @Keep val value: Int) {
19
+ PAN(0),
20
+ RESIZE(1),
21
+ NONE(2);
22
+
23
+ companion object
24
+ }
@@ -0,0 +1,56 @@
1
+ ///
2
+ /// ModalContentArea.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.nitromodal
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+ import java.util.Objects
13
+
14
+
15
+ /**
16
+ * Represents the JavaScript object/struct "ModalContentArea".
17
+ */
18
+ @DoNotStrip
19
+ @Keep
20
+ data class ModalContentArea(
21
+ @DoNotStrip
22
+ @Keep
23
+ val width: Double,
24
+ @DoNotStrip
25
+ @Keep
26
+ val height: Double
27
+ ) {
28
+ /* primary constructor */
29
+
30
+ override fun equals(other: Any?): Boolean {
31
+ if (this === other) return true
32
+ if (other !is ModalContentArea) return false
33
+ return Objects.deepEquals(this.width, other.width)
34
+ && Objects.deepEquals(this.height, other.height)
35
+ }
36
+
37
+ override fun hashCode(): Int {
38
+ return arrayOf<Any?>(
39
+ width,
40
+ height
41
+ ).contentDeepHashCode()
42
+ }
43
+
44
+ companion object {
45
+ /**
46
+ * Constructor called from C++
47
+ */
48
+ @DoNotStrip
49
+ @Keep
50
+ @Suppress("unused")
51
+ @JvmStatic
52
+ private fun fromCpp(width: Double, height: Double): ModalContentArea {
53
+ return ModalContentArea(width, height)
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,23 @@
1
+ ///
2
+ /// ModalMode.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.nitromodal
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+
13
+ /**
14
+ * Represents the JavaScript enum/union "ModalMode".
15
+ */
16
+ @DoNotStrip
17
+ @Keep
18
+ enum class ModalMode(@DoNotStrip @Keep val value: Int) {
19
+ BOTTOMSHEET(0),
20
+ POPUP(1);
21
+
22
+ companion object
23
+ }
@@ -0,0 +1,24 @@
1
+ ///
2
+ /// PopupAnimation.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.nitromodal
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+
13
+ /**
14
+ * Represents the JavaScript enum/union "PopupAnimation".
15
+ */
16
+ @DoNotStrip
17
+ @Keep
18
+ enum class PopupAnimation(@DoNotStrip @Keep val value: Int) {
19
+ NONE(0),
20
+ SCALE(1),
21
+ FADE(2);
22
+
23
+ companion object
24
+ }
@@ -0,0 +1,25 @@
1
+ ///
2
+ /// SheetDetent.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.nitromodal
9
+
10
+ import androidx.annotation.Keep
11
+ import com.facebook.proguard.annotations.DoNotStrip
12
+
13
+ /**
14
+ * Represents the JavaScript enum/union "SheetDetent".
15
+ */
16
+ @DoNotStrip
17
+ @Keep
18
+ enum class SheetDetent(@DoNotStrip @Keep val value: Int) {
19
+ SMALL(0),
20
+ MEDIUM(1),
21
+ LARGE(2),
22
+ FITCONTENT(3);
23
+
24
+ companion object
25
+ }
@@ -0,0 +1,35 @@
1
+ ///
2
+ /// nitromodalOnLoad.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.nitromodal
9
+
10
+ import android.util.Log
11
+
12
+ internal class nitromodalOnLoad {
13
+ companion object {
14
+ private const val TAG = "nitromodalOnLoad"
15
+ private var didLoad = false
16
+ /**
17
+ * Initializes the native part of "nitromodal".
18
+ * This method is idempotent and can be called more than once.
19
+ */
20
+ @JvmStatic
21
+ fun initializeNative() {
22
+ if (didLoad) return
23
+ try {
24
+ Log.i(TAG, "Loading nitromodal C++ library...")
25
+ System.loadLibrary("nitromodal")
26
+ Log.i(TAG, "Successfully loaded nitromodal C++ library!")
27
+ didLoad = true
28
+ } catch (e: Error) {
29
+ Log.e(TAG, "Failed to load nitromodal C++ library! Is it properly installed and linked? " +
30
+ "Is the name correct? (see `CMakeLists.txt`, at `add_library(...)`)", e)
31
+ throw e
32
+ }
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,96 @@
1
+ ///
2
+ /// HybridNitroModalManager.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.nitromodal.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.nitromodal.*
18
+
19
+ /**
20
+ * Represents the React Native `ViewManager` for the "NitroModal" Nitro HybridView.
21
+ */
22
+ public class HybridNitroModalManager: SimpleViewManager<View>() {
23
+ /**
24
+ * Represents the View and its last state snapshot (mutable)
25
+ */
26
+ private class HybridViewHolder(
27
+ val hybridView: HybridNitroModal,
28
+ var lastState: StateWrapper? = null,
29
+ )
30
+
31
+ init {
32
+ if (RecyclableView::class.java.isAssignableFrom(HybridNitroModal::class.java)) {
33
+ // Enable view recycling
34
+ super.setupViewRecycling()
35
+ }
36
+ }
37
+
38
+ override fun getName(): String {
39
+ return "NitroModal"
40
+ }
41
+
42
+ override fun createViewInstance(reactContext: ThemedReactContext): View {
43
+ val hybridView = HybridNitroModal(reactContext)
44
+ val view = hybridView.view
45
+ view.setTag(associated_hybrid_view_tag, HybridViewHolder(hybridView))
46
+ return view
47
+ }
48
+
49
+ override fun updateState(view: View, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? {
50
+ val holder = getHybridViewHolder(view)
51
+ ?: throw Error("Couldn't find view $view in local views table!")
52
+ val hybridView = holder.hybridView
53
+ val oldState = holder.lastState
54
+ val newState = stateWrapper
55
+
56
+ // 1. Update each prop individually
57
+ hybridView.beforeUpdate()
58
+ HybridNitroModalStateUpdater.updateViewProps(hybridView, newState, oldState)
59
+ hybridView.afterUpdate()
60
+ holder.lastState = newState
61
+
62
+ // 2. Continue in base View props
63
+ return super.updateState(view, props, newState)
64
+ }
65
+
66
+ override fun onDropViewInstance(view: View) {
67
+ val holder = getHybridViewHolder(view)
68
+ holder?.lastState = null
69
+ holder?.hybridView?.onDropView()
70
+ return super.onDropViewInstance(view)
71
+ }
72
+
73
+ protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: View): View? {
74
+ val preparedView = super.prepareToRecycleView(reactContext, view)
75
+ ?: return null
76
+ val holder = getHybridViewHolder(preparedView)
77
+ ?: return null
78
+ val hybridView = holder.hybridView
79
+ holder.lastState = null
80
+
81
+ @Suppress("USELESS_IS_CHECK")
82
+ if (hybridView is RecyclableView) {
83
+ // Recycle in it's implementation
84
+ hybridView.prepareForRecycle()
85
+
86
+ // Maybe update the view if it changed
87
+ return hybridView.view
88
+ } else {
89
+ return null
90
+ }
91
+ }
92
+
93
+ private fun getHybridViewHolder(view: View): HybridViewHolder? {
94
+ return view.getTag(associated_hybrid_view_tag) as? HybridViewHolder
95
+ }
96
+ }
@@ -0,0 +1,23 @@
1
+ ///
2
+ /// HybridNitroModalStateUpdater.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.nitromodal.views
9
+
10
+ import com.facebook.react.uimanager.StateWrapper
11
+ import com.margelo.nitro.nitromodal.*
12
+
13
+ internal class HybridNitroModalStateUpdater {
14
+ companion object {
15
+ /**
16
+ * Updates the props for [view] through C++.
17
+ * The [newState] prop is expected to contain [view]'s props as wrapped Fabric state.
18
+ */
19
+ @Suppress("KotlinJniMissingFunction")
20
+ @JvmStatic
21
+ external fun updateViewProps(view: HybridNitroModalSpec, newState: StateWrapper, oldState: StateWrapper?)
22
+ }
23
+ }