@abeman/react-native-nitro-blur 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 (86) hide show
  1. package/LICENSE +20 -0
  2. package/NitroBlur.podspec +29 -0
  3. package/README.md +200 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +120 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  8. package/android/src/main/java/com/margelo/nitro/nitroblur/NitroBlur.kt +229 -0
  9. package/android/src/main/java/com/margelo/nitro/nitroblur/NitroBlurPackage.kt +31 -0
  10. package/android/src/main/java/com/margelo/nitro/nitroblur/NitroBlurTarget.kt +149 -0
  11. package/android/src/main/java/com/margelo/nitro/nitroblur/NitroBlurTargetViewGroupManager.kt +47 -0
  12. package/android/src/main/java/com/margelo/nitro/nitroblur/TintStyle.kt +85 -0
  13. package/ios/NitroBlur.swift +173 -0
  14. package/ios/NitroBlurTarget.swift +5 -0
  15. package/lib/module/NitroBlur.nitro.js +4 -0
  16. package/lib/module/NitroBlur.nitro.js.map +1 -0
  17. package/lib/module/NitroBlurTarget.nitro.js +4 -0
  18. package/lib/module/NitroBlurTarget.nitro.js.map +1 -0
  19. package/lib/module/index.js +114 -0
  20. package/lib/module/index.js.map +1 -0
  21. package/lib/module/package.json +1 -0
  22. package/lib/typescript/package.json +1 -0
  23. package/lib/typescript/src/NitroBlur.nitro.d.ts +25 -0
  24. package/lib/typescript/src/NitroBlur.nitro.d.ts.map +1 -0
  25. package/lib/typescript/src/NitroBlurTarget.nitro.d.ts +7 -0
  26. package/lib/typescript/src/NitroBlurTarget.nitro.d.ts.map +1 -0
  27. package/lib/typescript/src/index.d.ts +201 -0
  28. package/lib/typescript/src/index.d.ts.map +1 -0
  29. package/nitro.json +33 -0
  30. package/nitrogen/generated/android/c++/JBlurMethod.hpp +61 -0
  31. package/nitrogen/generated/android/c++/JBlurTint.hpp +115 -0
  32. package/nitrogen/generated/android/c++/JHybridNitroBlurSpec.cpp +99 -0
  33. package/nitrogen/generated/android/c++/JHybridNitroBlurSpec.hpp +72 -0
  34. package/nitrogen/generated/android/c++/JHybridNitroBlurTargetSpec.cpp +49 -0
  35. package/nitrogen/generated/android/c++/JHybridNitroBlurTargetSpec.hpp +63 -0
  36. package/nitrogen/generated/android/c++/views/JHybridNitroBlurStateUpdater.cpp +72 -0
  37. package/nitrogen/generated/android/c++/views/JHybridNitroBlurStateUpdater.hpp +49 -0
  38. package/nitrogen/generated/android/c++/views/JHybridNitroBlurTargetStateUpdater.cpp +53 -0
  39. package/nitrogen/generated/android/c++/views/JHybridNitroBlurTargetStateUpdater.hpp +49 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/BlurMethod.kt +24 -0
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/BlurTint.kt +42 -0
  42. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/HybridNitroBlurSpec.kt +81 -0
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/HybridNitroBlurTargetSpec.kt +53 -0
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/nitroblurOnLoad.kt +35 -0
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/views/HybridNitroBlurManager.kt +80 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/views/HybridNitroBlurStateUpdater.kt +23 -0
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/views/HybridNitroBlurTargetManager.kt +80 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroblur/views/HybridNitroBlurTargetStateUpdater.kt +23 -0
  49. package/nitrogen/generated/android/nitroblur+autolinking.cmake +87 -0
  50. package/nitrogen/generated/android/nitroblur+autolinking.gradle +27 -0
  51. package/nitrogen/generated/android/nitroblurOnLoad.cpp +74 -0
  52. package/nitrogen/generated/android/nitroblurOnLoad.hpp +34 -0
  53. package/nitrogen/generated/ios/NitroBlur+autolinking.rb +60 -0
  54. package/nitrogen/generated/ios/NitroBlur-Swift-Cxx-Bridge.cpp +50 -0
  55. package/nitrogen/generated/ios/NitroBlur-Swift-Cxx-Bridge.hpp +57 -0
  56. package/nitrogen/generated/ios/NitroBlur-Swift-Cxx-Umbrella.hpp +52 -0
  57. package/nitrogen/generated/ios/NitroBlurAutolinking.mm +41 -0
  58. package/nitrogen/generated/ios/NitroBlurAutolinking.swift +38 -0
  59. package/nitrogen/generated/ios/c++/HybridNitroBlurSpecSwift.cpp +11 -0
  60. package/nitrogen/generated/ios/c++/HybridNitroBlurSpecSwift.hpp +110 -0
  61. package/nitrogen/generated/ios/c++/HybridNitroBlurTargetSpecSwift.cpp +11 -0
  62. package/nitrogen/generated/ios/c++/HybridNitroBlurTargetSpecSwift.hpp +75 -0
  63. package/nitrogen/generated/ios/c++/views/HybridNitroBlurComponent.mm +142 -0
  64. package/nitrogen/generated/ios/c++/views/HybridNitroBlurTargetComponent.mm +118 -0
  65. package/nitrogen/generated/ios/swift/BlurMethod.swift +44 -0
  66. package/nitrogen/generated/ios/swift/BlurTint.swift +116 -0
  67. package/nitrogen/generated/ios/swift/HybridNitroBlurSpec.swift +59 -0
  68. package/nitrogen/generated/ios/swift/HybridNitroBlurSpec_cxx.swift +200 -0
  69. package/nitrogen/generated/ios/swift/HybridNitroBlurTargetSpec.swift +55 -0
  70. package/nitrogen/generated/ios/swift/HybridNitroBlurTargetSpec_cxx.swift +147 -0
  71. package/nitrogen/generated/shared/c++/BlurMethod.hpp +80 -0
  72. package/nitrogen/generated/shared/c++/BlurTint.hpp +152 -0
  73. package/nitrogen/generated/shared/c++/HybridNitroBlurSpec.cpp +30 -0
  74. package/nitrogen/generated/shared/c++/HybridNitroBlurSpec.hpp +75 -0
  75. package/nitrogen/generated/shared/c++/HybridNitroBlurTargetSpec.cpp +21 -0
  76. package/nitrogen/generated/shared/c++/HybridNitroBlurTargetSpec.hpp +62 -0
  77. package/nitrogen/generated/shared/c++/views/HybridNitroBlurComponent.cpp +127 -0
  78. package/nitrogen/generated/shared/c++/views/HybridNitroBlurComponent.hpp +116 -0
  79. package/nitrogen/generated/shared/c++/views/HybridNitroBlurTargetComponent.cpp +72 -0
  80. package/nitrogen/generated/shared/c++/views/HybridNitroBlurTargetComponent.hpp +109 -0
  81. package/nitrogen/generated/shared/json/NitroBlurConfig.json +14 -0
  82. package/nitrogen/generated/shared/json/NitroBlurTargetConfig.json +9 -0
  83. package/package.json +174 -0
  84. package/src/NitroBlur.nitro.ts +56 -0
  85. package/src/NitroBlurTarget.nitro.ts +13 -0
  86. package/src/index.tsx +215 -0
@@ -0,0 +1,80 @@
1
+ ///
2
+ /// HybridNitroBlurTargetManager.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.nitroblur.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.nitroblur.*
18
+
19
+ /**
20
+ * Represents the React Native `ViewManager` for the "NitroBlurTarget" Nitro HybridView.
21
+ */
22
+ public class HybridNitroBlurTargetManager: SimpleViewManager<View>() {
23
+ init {
24
+ if (RecyclableView::class.java.isAssignableFrom(HybridNitroBlurTarget::class.java)) {
25
+ // Enable view recycling
26
+ super.setupViewRecycling()
27
+ }
28
+ }
29
+
30
+ override fun getName(): String {
31
+ return "NitroBlurTarget"
32
+ }
33
+
34
+ override fun createViewInstance(reactContext: ThemedReactContext): View {
35
+ val hybridView = HybridNitroBlurTarget(reactContext)
36
+ val view = hybridView.view
37
+ view.setTag(associated_hybrid_view_tag, hybridView)
38
+ return view
39
+ }
40
+
41
+ override fun updateState(view: View, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? {
42
+ val hybridView = getHybridView(view)
43
+ ?: throw Error("Couldn't find view $view in local views table!")
44
+
45
+ // 1. Update each prop individually
46
+ hybridView.beforeUpdate()
47
+ HybridNitroBlurTargetStateUpdater.updateViewProps(hybridView, stateWrapper)
48
+ hybridView.afterUpdate()
49
+
50
+ // 2. Continue in base View props
51
+ return super.updateState(view, props, stateWrapper)
52
+ }
53
+
54
+ override fun onDropViewInstance(view: View) {
55
+ val hybridView = getHybridView(view)
56
+ hybridView?.onDropView()
57
+ return super.onDropViewInstance(view)
58
+ }
59
+
60
+ protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: View): View? {
61
+ super.prepareToRecycleView(reactContext, view)
62
+ val hybridView = getHybridView(view)
63
+ ?: return null
64
+
65
+ @Suppress("USELESS_IS_CHECK")
66
+ if (hybridView is RecyclableView) {
67
+ // Recycle in it's implementation
68
+ hybridView.prepareForRecycle()
69
+
70
+ // Maybe update the view if it changed
71
+ return hybridView.view
72
+ } else {
73
+ return null
74
+ }
75
+ }
76
+
77
+ private fun getHybridView(view: View): HybridNitroBlurTarget? {
78
+ return view.getTag(associated_hybrid_view_tag) as? HybridNitroBlurTarget
79
+ }
80
+ }
@@ -0,0 +1,23 @@
1
+ ///
2
+ /// HybridNitroBlurTargetStateUpdater.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.nitroblur.views
9
+
10
+ import com.facebook.react.uimanager.StateWrapper
11
+ import com.margelo.nitro.nitroblur.*
12
+
13
+ internal class HybridNitroBlurTargetStateUpdater {
14
+ companion object {
15
+ /**
16
+ * Updates the props for [view] through C++.
17
+ * The [state] prop is expected to contain [view]'s props as wrapped Fabric state.
18
+ */
19
+ @Suppress("KotlinJniMissingFunction")
20
+ @JvmStatic
21
+ external fun updateViewProps(view: HybridNitroBlurTargetSpec, state: StateWrapper)
22
+ }
23
+ }
@@ -0,0 +1,87 @@
1
+ #
2
+ # nitroblur+autolinking.cmake
3
+ # This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ # https://github.com/mrousavy/nitro
5
+ # Copyright © Marc Rousavy @ Margelo
6
+ #
7
+
8
+ # This is a CMake file that adds all files generated by Nitrogen
9
+ # to the current CMake project.
10
+ #
11
+ # To use it, add this to your CMakeLists.txt:
12
+ # ```cmake
13
+ # include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/nitroblur+autolinking.cmake)
14
+ # ```
15
+
16
+ # Define a flag to check if we are building properly
17
+ add_definitions(-DBUILDING_NITROBLUR_WITH_GENERATED_CMAKE_PROJECT)
18
+
19
+ # Enable Raw Props parsing in react-native (for Nitro Views)
20
+ add_definitions(-DRN_SERIALIZABLE_STATE)
21
+
22
+ # Add all headers that were generated by Nitrogen
23
+ include_directories(
24
+ "../nitrogen/generated/shared/c++"
25
+ "../nitrogen/generated/android/c++"
26
+ "../nitrogen/generated/android/"
27
+ )
28
+
29
+ # Add all .cpp sources that were generated by Nitrogen
30
+ target_sources(
31
+ # CMake project name (Android C++ library name)
32
+ nitroblur PRIVATE
33
+ # Autolinking Setup
34
+ ../nitrogen/generated/android/nitroblurOnLoad.cpp
35
+ # Shared Nitrogen C++ sources
36
+ ../nitrogen/generated/shared/c++/HybridNitroBlurSpec.cpp
37
+ ../nitrogen/generated/shared/c++/views/HybridNitroBlurComponent.cpp
38
+ ../nitrogen/generated/shared/c++/HybridNitroBlurTargetSpec.cpp
39
+ ../nitrogen/generated/shared/c++/views/HybridNitroBlurTargetComponent.cpp
40
+ # Android-specific Nitrogen C++ sources
41
+ ../nitrogen/generated/android/c++/JHybridNitroBlurSpec.cpp
42
+ ../nitrogen/generated/android/c++/views/JHybridNitroBlurStateUpdater.cpp
43
+ ../nitrogen/generated/android/c++/JHybridNitroBlurTargetSpec.cpp
44
+ ../nitrogen/generated/android/c++/views/JHybridNitroBlurTargetStateUpdater.cpp
45
+ )
46
+
47
+ # From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
48
+ # Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake
49
+ target_compile_definitions(
50
+ nitroblur PRIVATE
51
+ -DFOLLY_NO_CONFIG=1
52
+ -DFOLLY_HAVE_CLOCK_GETTIME=1
53
+ -DFOLLY_USE_LIBCPP=1
54
+ -DFOLLY_CFG_NO_COROUTINES=1
55
+ -DFOLLY_MOBILE=1
56
+ -DFOLLY_HAVE_RECVMMSG=1
57
+ -DFOLLY_HAVE_PTHREAD=1
58
+ # Once we target android-23 above, we can comment
59
+ # the following line. NDK uses GNU style stderror_r() after API 23.
60
+ -DFOLLY_HAVE_XSI_STRERROR_R=1
61
+ )
62
+
63
+ # Add all libraries required by the generated specs
64
+ find_package(fbjni REQUIRED) # <-- Used for communication between Java <-> C++
65
+ find_package(ReactAndroid REQUIRED) # <-- Used to set up React Native bindings (e.g. CallInvoker/TurboModule)
66
+ find_package(react-native-nitro-modules REQUIRED) # <-- Used to create all HybridObjects and use the Nitro core library
67
+
68
+ # Link all libraries together
69
+ target_link_libraries(
70
+ nitroblur
71
+ fbjni::fbjni # <-- Facebook C++ JNI helpers
72
+ ReactAndroid::jsi # <-- RN: JSI
73
+ react-native-nitro-modules::NitroModules # <-- NitroModules Core :)
74
+ )
75
+
76
+ # Link react-native (different prefab between RN 0.75 and RN 0.76)
77
+ if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
78
+ target_link_libraries(
79
+ nitroblur
80
+ ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
81
+ )
82
+ else()
83
+ target_link_libraries(
84
+ nitroblur
85
+ ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
86
+ )
87
+ endif()
@@ -0,0 +1,27 @@
1
+ ///
2
+ /// nitroblur+autolinking.gradle
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /// This is a Gradle file that adds all files generated by Nitrogen
9
+ /// to the current Gradle project.
10
+ ///
11
+ /// To use it, add this to your build.gradle:
12
+ /// ```gradle
13
+ /// apply from: '../nitrogen/generated/android/nitroblur+autolinking.gradle'
14
+ /// ```
15
+
16
+ logger.warn("[NitroModules] 🔥 nitroblur is boosted by nitro!")
17
+
18
+ android {
19
+ sourceSets {
20
+ main {
21
+ java.srcDirs += [
22
+ // Nitrogen files
23
+ "${project.projectDir}/../nitrogen/generated/android/kotlin"
24
+ ]
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,74 @@
1
+ ///
2
+ /// nitroblurOnLoad.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #ifndef BUILDING_NITROBLUR_WITH_GENERATED_CMAKE_PROJECT
9
+ #error nitroblurOnLoad.cpp is not being built with the autogenerated CMakeLists.txt project. Is a different CMakeLists.txt building this?
10
+ #endif
11
+
12
+ #include "nitroblurOnLoad.hpp"
13
+
14
+ #include <jni.h>
15
+ #include <fbjni/fbjni.h>
16
+ #include <NitroModules/HybridObjectRegistry.hpp>
17
+
18
+ #include "JHybridNitroBlurSpec.hpp"
19
+ #include "views/JHybridNitroBlurStateUpdater.hpp"
20
+ #include "JHybridNitroBlurTargetSpec.hpp"
21
+ #include "views/JHybridNitroBlurTargetStateUpdater.hpp"
22
+ #include <NitroModules/DefaultConstructableObject.hpp>
23
+
24
+ namespace margelo::nitro::nitroblur {
25
+
26
+ int initialize(JavaVM* vm) {
27
+ return facebook::jni::initialize(vm, []() {
28
+ ::margelo::nitro::nitroblur::registerAllNatives();
29
+ });
30
+ }
31
+
32
+ struct JHybridNitroBlurSpecImpl: public jni::JavaClass<JHybridNitroBlurSpecImpl, JHybridNitroBlurSpec::JavaPart> {
33
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroblur/HybridNitroBlur;";
34
+ static std::shared_ptr<JHybridNitroBlurSpec> create() {
35
+ static const auto constructorFn = javaClassStatic()->getConstructor<JHybridNitroBlurSpecImpl::javaobject()>();
36
+ jni::local_ref<JHybridNitroBlurSpec::JavaPart> javaPart = javaClassStatic()->newObject(constructorFn);
37
+ return javaPart->getJHybridNitroBlurSpec();
38
+ }
39
+ };
40
+ struct JHybridNitroBlurTargetSpecImpl: public jni::JavaClass<JHybridNitroBlurTargetSpecImpl, JHybridNitroBlurTargetSpec::JavaPart> {
41
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitroblur/HybridNitroBlurTarget;";
42
+ static std::shared_ptr<JHybridNitroBlurTargetSpec> create() {
43
+ static const auto constructorFn = javaClassStatic()->getConstructor<JHybridNitroBlurTargetSpecImpl::javaobject()>();
44
+ jni::local_ref<JHybridNitroBlurTargetSpec::JavaPart> javaPart = javaClassStatic()->newObject(constructorFn);
45
+ return javaPart->getJHybridNitroBlurTargetSpec();
46
+ }
47
+ };
48
+
49
+ void registerAllNatives() {
50
+ using namespace margelo::nitro;
51
+ using namespace margelo::nitro::nitroblur;
52
+
53
+ // Register native JNI methods
54
+ margelo::nitro::nitroblur::JHybridNitroBlurSpec::CxxPart::registerNatives();
55
+ margelo::nitro::nitroblur::views::JHybridNitroBlurStateUpdater::registerNatives();
56
+ margelo::nitro::nitroblur::JHybridNitroBlurTargetSpec::CxxPart::registerNatives();
57
+ margelo::nitro::nitroblur::views::JHybridNitroBlurTargetStateUpdater::registerNatives();
58
+
59
+ // Register Nitro Hybrid Objects
60
+ HybridObjectRegistry::registerHybridObjectConstructor(
61
+ "NitroBlur",
62
+ []() -> std::shared_ptr<HybridObject> {
63
+ return JHybridNitroBlurSpecImpl::create();
64
+ }
65
+ );
66
+ HybridObjectRegistry::registerHybridObjectConstructor(
67
+ "NitroBlurTarget",
68
+ []() -> std::shared_ptr<HybridObject> {
69
+ return JHybridNitroBlurTargetSpecImpl::create();
70
+ }
71
+ );
72
+ }
73
+
74
+ } // namespace margelo::nitro::nitroblur
@@ -0,0 +1,34 @@
1
+ ///
2
+ /// nitroblurOnLoad.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
+ #include <jni.h>
9
+ #include <functional>
10
+ #include <NitroModules/NitroDefines.hpp>
11
+
12
+ namespace margelo::nitro::nitroblur {
13
+
14
+ [[deprecated("Use registerNatives() instead.")]]
15
+ int initialize(JavaVM* vm);
16
+
17
+ /**
18
+ * Register the native (C++) part of nitroblur, and autolinks all Hybrid Objects.
19
+ * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`),
20
+ * inside a `facebook::jni::initialize(vm, ...)` call.
21
+ * Example:
22
+ * ```cpp (cpp-adapter.cpp)
23
+ * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
24
+ * return facebook::jni::initialize(vm, []() {
25
+ * // register all nitroblur HybridObjects
26
+ * margelo::nitro::nitroblur::registerNatives();
27
+ * // any other custom registrations go here.
28
+ * });
29
+ * }
30
+ * ```
31
+ */
32
+ void registerAllNatives();
33
+
34
+ } // namespace margelo::nitro::nitroblur
@@ -0,0 +1,60 @@
1
+ #
2
+ # NitroBlur+autolinking.rb
3
+ # This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ # https://github.com/mrousavy/nitro
5
+ # Copyright © Marc Rousavy @ Margelo
6
+ #
7
+
8
+ # This is a Ruby script that adds all files generated by Nitrogen
9
+ # to the given podspec.
10
+ #
11
+ # To use it, add this to your .podspec:
12
+ # ```ruby
13
+ # Pod::Spec.new do |spec|
14
+ # # ...
15
+ #
16
+ # # Add all files generated by Nitrogen
17
+ # load 'nitrogen/generated/ios/NitroBlur+autolinking.rb'
18
+ # add_nitrogen_files(spec)
19
+ # end
20
+ # ```
21
+
22
+ def add_nitrogen_files(spec)
23
+ Pod::UI.puts "[NitroModules] 🔥 NitroBlur is boosted by nitro!"
24
+
25
+ spec.dependency "NitroModules"
26
+
27
+ current_source_files = Array(spec.attributes_hash['source_files'])
28
+ spec.source_files = current_source_files + [
29
+ # Generated cross-platform specs
30
+ "nitrogen/generated/shared/**/*.{h,hpp,c,cpp,swift}",
31
+ # Generated bridges for the cross-platform specs
32
+ "nitrogen/generated/ios/**/*.{h,hpp,c,cpp,mm,swift}",
33
+ ]
34
+
35
+ current_public_header_files = Array(spec.attributes_hash['public_header_files'])
36
+ spec.public_header_files = current_public_header_files + [
37
+ # Generated specs
38
+ "nitrogen/generated/shared/**/*.{h,hpp}",
39
+ # Swift to C++ bridging helpers
40
+ "nitrogen/generated/ios/NitroBlur-Swift-Cxx-Bridge.hpp"
41
+ ]
42
+
43
+ current_private_header_files = Array(spec.attributes_hash['private_header_files'])
44
+ spec.private_header_files = current_private_header_files + [
45
+ # iOS specific specs
46
+ "nitrogen/generated/ios/c++/**/*.{h,hpp}",
47
+ # Views are framework-specific and should be private
48
+ "nitrogen/generated/shared/**/views/**/*"
49
+ ]
50
+
51
+ current_pod_target_xcconfig = spec.attributes_hash['pod_target_xcconfig'] || {}
52
+ spec.pod_target_xcconfig = current_pod_target_xcconfig.merge({
53
+ # Use C++ 20
54
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
55
+ # Enables C++ <-> Swift interop (by default it's only ObjC)
56
+ "SWIFT_OBJC_INTEROP_MODE" => "objcxx",
57
+ # Enables stricter modular headers
58
+ "DEFINES_MODULE" => "YES",
59
+ })
60
+ end
@@ -0,0 +1,50 @@
1
+ ///
2
+ /// NitroBlur-Swift-Cxx-Bridge.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "NitroBlur-Swift-Cxx-Bridge.hpp"
9
+
10
+ // Include C++ implementation defined types
11
+ #include "HybridNitroBlurSpecSwift.hpp"
12
+ #include "HybridNitroBlurTargetSpecSwift.hpp"
13
+ #include "NitroBlur-Swift-Cxx-Umbrella.hpp"
14
+ #include <NitroModules/NitroDefines.hpp>
15
+
16
+ namespace margelo::nitro::nitroblur::bridge::swift {
17
+
18
+ // pragma MARK: std::shared_ptr<HybridNitroBlurSpec>
19
+ std::shared_ptr<HybridNitroBlurSpec> create_std__shared_ptr_HybridNitroBlurSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
20
+ NitroBlur::HybridNitroBlurSpec_cxx swiftPart = NitroBlur::HybridNitroBlurSpec_cxx::fromUnsafe(swiftUnsafePointer);
21
+ return std::make_shared<margelo::nitro::nitroblur::HybridNitroBlurSpecSwift>(swiftPart);
22
+ }
23
+ void* NON_NULL get_std__shared_ptr_HybridNitroBlurSpec_(std__shared_ptr_HybridNitroBlurSpec_ cppType) {
24
+ std::shared_ptr<margelo::nitro::nitroblur::HybridNitroBlurSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::nitroblur::HybridNitroBlurSpecSwift>(cppType);
25
+ #ifdef NITRO_DEBUG
26
+ if (swiftWrapper == nullptr) [[unlikely]] {
27
+ throw std::runtime_error("Class \"HybridNitroBlurSpec\" is not implemented in Swift!");
28
+ }
29
+ #endif
30
+ NitroBlur::HybridNitroBlurSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
31
+ return swiftPart.toUnsafe();
32
+ }
33
+
34
+ // pragma MARK: std::shared_ptr<HybridNitroBlurTargetSpec>
35
+ std::shared_ptr<HybridNitroBlurTargetSpec> create_std__shared_ptr_HybridNitroBlurTargetSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
36
+ NitroBlur::HybridNitroBlurTargetSpec_cxx swiftPart = NitroBlur::HybridNitroBlurTargetSpec_cxx::fromUnsafe(swiftUnsafePointer);
37
+ return std::make_shared<margelo::nitro::nitroblur::HybridNitroBlurTargetSpecSwift>(swiftPart);
38
+ }
39
+ void* NON_NULL get_std__shared_ptr_HybridNitroBlurTargetSpec_(std__shared_ptr_HybridNitroBlurTargetSpec_ cppType) {
40
+ std::shared_ptr<margelo::nitro::nitroblur::HybridNitroBlurTargetSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::nitroblur::HybridNitroBlurTargetSpecSwift>(cppType);
41
+ #ifdef NITRO_DEBUG
42
+ if (swiftWrapper == nullptr) [[unlikely]] {
43
+ throw std::runtime_error("Class \"HybridNitroBlurTargetSpec\" is not implemented in Swift!");
44
+ }
45
+ #endif
46
+ NitroBlur::HybridNitroBlurTargetSpec_cxx& swiftPart = swiftWrapper->getSwiftPart();
47
+ return swiftPart.toUnsafe();
48
+ }
49
+
50
+ } // namespace margelo::nitro::nitroblur::bridge::swift
@@ -0,0 +1,57 @@
1
+ ///
2
+ /// NitroBlur-Swift-Cxx-Bridge.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
+ // Forward declarations of C++ defined types
11
+ // Forward declaration of `HybridNitroBlurSpec` to properly resolve imports.
12
+ namespace margelo::nitro::nitroblur { class HybridNitroBlurSpec; }
13
+ // Forward declaration of `HybridNitroBlurTargetSpec` to properly resolve imports.
14
+ namespace margelo::nitro::nitroblur { class HybridNitroBlurTargetSpec; }
15
+
16
+ // Forward declarations of Swift defined types
17
+ // Forward declaration of `HybridNitroBlurSpec_cxx` to properly resolve imports.
18
+ namespace NitroBlur { class HybridNitroBlurSpec_cxx; }
19
+ // Forward declaration of `HybridNitroBlurTargetSpec_cxx` to properly resolve imports.
20
+ namespace NitroBlur { class HybridNitroBlurTargetSpec_cxx; }
21
+
22
+ // Include C++ defined types
23
+ #include "HybridNitroBlurSpec.hpp"
24
+ #include "HybridNitroBlurTargetSpec.hpp"
25
+ #include <memory>
26
+
27
+ /**
28
+ * Contains specialized versions of C++ templated types so they can be accessed from Swift,
29
+ * as well as helper functions to interact with those C++ types from Swift.
30
+ */
31
+ namespace margelo::nitro::nitroblur::bridge::swift {
32
+
33
+ // pragma MARK: std::shared_ptr<HybridNitroBlurSpec>
34
+ /**
35
+ * Specialized version of `std::shared_ptr<HybridNitroBlurSpec>`.
36
+ */
37
+ using std__shared_ptr_HybridNitroBlurSpec_ = std::shared_ptr<HybridNitroBlurSpec>;
38
+ std::shared_ptr<HybridNitroBlurSpec> create_std__shared_ptr_HybridNitroBlurSpec_(void* NON_NULL swiftUnsafePointer) noexcept;
39
+ void* NON_NULL get_std__shared_ptr_HybridNitroBlurSpec_(std__shared_ptr_HybridNitroBlurSpec_ cppType);
40
+
41
+ // pragma MARK: std::weak_ptr<HybridNitroBlurSpec>
42
+ using std__weak_ptr_HybridNitroBlurSpec_ = std::weak_ptr<HybridNitroBlurSpec>;
43
+ inline std__weak_ptr_HybridNitroBlurSpec_ weakify_std__shared_ptr_HybridNitroBlurSpec_(const std::shared_ptr<HybridNitroBlurSpec>& strong) noexcept { return strong; }
44
+
45
+ // pragma MARK: std::shared_ptr<HybridNitroBlurTargetSpec>
46
+ /**
47
+ * Specialized version of `std::shared_ptr<HybridNitroBlurTargetSpec>`.
48
+ */
49
+ using std__shared_ptr_HybridNitroBlurTargetSpec_ = std::shared_ptr<HybridNitroBlurTargetSpec>;
50
+ std::shared_ptr<HybridNitroBlurTargetSpec> create_std__shared_ptr_HybridNitroBlurTargetSpec_(void* NON_NULL swiftUnsafePointer) noexcept;
51
+ void* NON_NULL get_std__shared_ptr_HybridNitroBlurTargetSpec_(std__shared_ptr_HybridNitroBlurTargetSpec_ cppType);
52
+
53
+ // pragma MARK: std::weak_ptr<HybridNitroBlurTargetSpec>
54
+ using std__weak_ptr_HybridNitroBlurTargetSpec_ = std::weak_ptr<HybridNitroBlurTargetSpec>;
55
+ inline std__weak_ptr_HybridNitroBlurTargetSpec_ weakify_std__shared_ptr_HybridNitroBlurTargetSpec_(const std::shared_ptr<HybridNitroBlurTargetSpec>& strong) noexcept { return strong; }
56
+
57
+ } // namespace margelo::nitro::nitroblur::bridge::swift
@@ -0,0 +1,52 @@
1
+ ///
2
+ /// NitroBlur-Swift-Cxx-Umbrella.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
+ // Forward declarations of C++ defined types
11
+ // Forward declaration of `BlurMethod` to properly resolve imports.
12
+ namespace margelo::nitro::nitroblur { enum class BlurMethod; }
13
+ // Forward declaration of `BlurTint` to properly resolve imports.
14
+ namespace margelo::nitro::nitroblur { enum class BlurTint; }
15
+ // Forward declaration of `HybridNitroBlurSpec` to properly resolve imports.
16
+ namespace margelo::nitro::nitroblur { class HybridNitroBlurSpec; }
17
+ // Forward declaration of `HybridNitroBlurTargetSpec` to properly resolve imports.
18
+ namespace margelo::nitro::nitroblur { class HybridNitroBlurTargetSpec; }
19
+
20
+ // Include C++ defined types
21
+ #include "BlurMethod.hpp"
22
+ #include "BlurTint.hpp"
23
+ #include "HybridNitroBlurSpec.hpp"
24
+ #include "HybridNitroBlurTargetSpec.hpp"
25
+ #include <memory>
26
+
27
+ // C++ helpers for Swift
28
+ #include "NitroBlur-Swift-Cxx-Bridge.hpp"
29
+
30
+ // Common C++ types used in Swift
31
+ #include <NitroModules/ArrayBufferHolder.hpp>
32
+ #include <NitroModules/AnyMapUtils.hpp>
33
+ #include <NitroModules/RuntimeError.hpp>
34
+ #include <NitroModules/DateToChronoDate.hpp>
35
+
36
+ // Forward declarations of Swift defined types
37
+ // Forward declaration of `HybridNitroBlurSpec_cxx` to properly resolve imports.
38
+ namespace NitroBlur { class HybridNitroBlurSpec_cxx; }
39
+ // Forward declaration of `HybridNitroBlurTargetSpec_cxx` to properly resolve imports.
40
+ namespace NitroBlur { class HybridNitroBlurTargetSpec_cxx; }
41
+
42
+ // Include Swift defined types
43
+ #if __has_include("NitroBlur-Swift.h")
44
+ // This header is generated by Xcode/Swift on every app build.
45
+ // If it cannot be found, make sure the Swift module's name (= podspec name) is actually "NitroBlur".
46
+ #include "NitroBlur-Swift.h"
47
+ // Same as above, but used when building with frameworks (`use_frameworks`)
48
+ #elif __has_include(<NitroBlur/NitroBlur-Swift.h>)
49
+ #include <NitroBlur/NitroBlur-Swift.h>
50
+ #else
51
+ #error NitroBlur's autogenerated Swift header cannot be found! Make sure the Swift module's name (= podspec name) is actually "NitroBlur", and try building the app first.
52
+ #endif
@@ -0,0 +1,41 @@
1
+ ///
2
+ /// NitroBlurAutolinking.mm
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 <Foundation/Foundation.h>
9
+ #import <NitroModules/HybridObjectRegistry.hpp>
10
+ #import "NitroBlur-Swift-Cxx-Umbrella.hpp"
11
+ #import <type_traits>
12
+
13
+ #include "HybridNitroBlurSpecSwift.hpp"
14
+ #include "HybridNitroBlurTargetSpecSwift.hpp"
15
+
16
+ @interface NitroBlurAutolinking : NSObject
17
+ @end
18
+
19
+ @implementation NitroBlurAutolinking
20
+
21
+ + (void) load {
22
+ using namespace margelo::nitro;
23
+ using namespace margelo::nitro::nitroblur;
24
+
25
+ HybridObjectRegistry::registerHybridObjectConstructor(
26
+ "NitroBlur",
27
+ []() -> std::shared_ptr<HybridObject> {
28
+ std::shared_ptr<HybridNitroBlurSpec> hybridObject = NitroBlur::NitroBlurAutolinking::createNitroBlur();
29
+ return hybridObject;
30
+ }
31
+ );
32
+ HybridObjectRegistry::registerHybridObjectConstructor(
33
+ "NitroBlurTarget",
34
+ []() -> std::shared_ptr<HybridObject> {
35
+ std::shared_ptr<HybridNitroBlurTargetSpec> hybridObject = NitroBlur::NitroBlurAutolinking::createNitroBlurTarget();
36
+ return hybridObject;
37
+ }
38
+ );
39
+ }
40
+
41
+ @end
@@ -0,0 +1,38 @@
1
+ ///
2
+ /// NitroBlurAutolinking.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
+ // TODO: Use empty enums once Swift supports exporting them as namespaces
11
+ // See: https://github.com/swiftlang/swift/pull/83616
12
+ public final class NitroBlurAutolinking {
13
+ public typealias bridge = margelo.nitro.nitroblur.bridge.swift
14
+
15
+ public static func createNitroBlur() -> bridge.std__shared_ptr_HybridNitroBlurSpec_ {
16
+ let hybridObject = HybridNitroBlur()
17
+ return { () -> bridge.std__shared_ptr_HybridNitroBlurSpec_ in
18
+ let __cxxWrapped = hybridObject.getCxxWrapper()
19
+ return __cxxWrapped.getCxxPart()
20
+ }()
21
+ }
22
+
23
+ public static func isNitroBlurRecyclable() -> Bool {
24
+ return HybridNitroBlur.self is any RecyclableView.Type
25
+ }
26
+
27
+ public static func createNitroBlurTarget() -> bridge.std__shared_ptr_HybridNitroBlurTargetSpec_ {
28
+ let hybridObject = HybridNitroBlurTarget()
29
+ return { () -> bridge.std__shared_ptr_HybridNitroBlurTargetSpec_ in
30
+ let __cxxWrapped = hybridObject.getCxxWrapper()
31
+ return __cxxWrapped.getCxxPart()
32
+ }()
33
+ }
34
+
35
+ public static func isNitroBlurTargetRecyclable() -> Bool {
36
+ return HybridNitroBlurTarget.self is any RecyclableView.Type
37
+ }
38
+ }
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridNitroBlurSpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridNitroBlurSpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::nitroblur {
11
+ } // namespace margelo::nitro::nitroblur