@onekeyfe/react-native-perp-depth-bar 3.0.39

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 (168) hide show
  1. package/LICENSE +21 -0
  2. package/PerpDepthBar.podspec +29 -0
  3. package/README.md +31 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +128 -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/perpdepthbar/HybridPerpDepthBars.kt +164 -0
  9. package/android/src/main/java/com/margelo/nitro/perpdepthbar/HybridPerpSideRatio.kt +139 -0
  10. package/android/src/main/java/com/margelo/nitro/perpdepthbar/PerpColorParser.kt +56 -0
  11. package/android/src/main/java/com/margelo/nitro/perpdepthbar/PerpDepthBarPackage.kt +33 -0
  12. package/ios/HybridPerpDepthBars.swift +148 -0
  13. package/ios/HybridPerpSideRatio.swift +118 -0
  14. package/ios/PerpColorParser.swift +92 -0
  15. package/lib/module/PerpDepthBars.nitro.js +4 -0
  16. package/lib/module/PerpDepthBars.nitro.js.map +1 -0
  17. package/lib/module/PerpSideRatio.nitro.js +4 -0
  18. package/lib/module/PerpSideRatio.nitro.js.map +1 -0
  19. package/lib/module/index.js +8 -0
  20. package/lib/module/index.js.map +1 -0
  21. package/lib/module/package.json +1 -0
  22. package/lib/nitrogen/generated/android/c++/JHybridPerpDepthBarsSpec.cpp +130 -0
  23. package/lib/nitrogen/generated/android/c++/JHybridPerpDepthBarsSpec.hpp +80 -0
  24. package/lib/nitrogen/generated/android/c++/JHybridPerpSideRatioSpec.cpp +119 -0
  25. package/lib/nitrogen/generated/android/c++/JHybridPerpSideRatioSpec.hpp +80 -0
  26. package/lib/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.cpp +84 -0
  27. package/lib/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.hpp +49 -0
  28. package/lib/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.cpp +84 -0
  29. package/lib/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.hpp +49 -0
  30. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/HybridPerpDepthBarsSpec.kt +101 -0
  31. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/HybridPerpSideRatioSpec.kt +101 -0
  32. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/perpdepthbarOnLoad.kt +35 -0
  33. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsManager.kt +50 -0
  34. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsStateUpdater.kt +23 -0
  35. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioManager.kt +50 -0
  36. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioStateUpdater.kt +23 -0
  37. package/lib/nitrogen/generated/android/perpdepthbar+autolinking.cmake +87 -0
  38. package/lib/nitrogen/generated/android/perpdepthbar+autolinking.gradle +27 -0
  39. package/lib/nitrogen/generated/android/perpdepthbarOnLoad.cpp +58 -0
  40. package/lib/nitrogen/generated/android/perpdepthbarOnLoad.hpp +25 -0
  41. package/lib/nitrogen/generated/ios/PerpDepthBar+autolinking.rb +60 -0
  42. package/lib/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Bridge.cpp +50 -0
  43. package/lib/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Bridge.hpp +69 -0
  44. package/lib/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Umbrella.hpp +48 -0
  45. package/lib/nitrogen/generated/ios/PerpDepthBarAutolinking.mm +41 -0
  46. package/lib/nitrogen/generated/ios/PerpDepthBarAutolinking.swift +40 -0
  47. package/lib/nitrogen/generated/ios/c++/HybridPerpDepthBarsSpecSwift.cpp +11 -0
  48. package/lib/nitrogen/generated/ios/c++/HybridPerpDepthBarsSpecSwift.hpp +120 -0
  49. package/lib/nitrogen/generated/ios/c++/HybridPerpSideRatioSpecSwift.cpp +11 -0
  50. package/lib/nitrogen/generated/ios/c++/HybridPerpSideRatioSpecSwift.hpp +118 -0
  51. package/lib/nitrogen/generated/ios/c++/views/HybridPerpDepthBarsComponent.mm +131 -0
  52. package/lib/nitrogen/generated/ios/c++/views/HybridPerpSideRatioComponent.mm +131 -0
  53. package/lib/nitrogen/generated/ios/swift/HybridPerpDepthBarsSpec.swift +63 -0
  54. package/lib/nitrogen/generated/ios/swift/HybridPerpDepthBarsSpec_cxx.swift +223 -0
  55. package/lib/nitrogen/generated/ios/swift/HybridPerpSideRatioSpec.swift +63 -0
  56. package/lib/nitrogen/generated/ios/swift/HybridPerpSideRatioSpec_cxx.swift +217 -0
  57. package/lib/nitrogen/generated/shared/c++/HybridPerpDepthBarsSpec.cpp +36 -0
  58. package/lib/nitrogen/generated/shared/c++/HybridPerpDepthBarsSpec.hpp +78 -0
  59. package/lib/nitrogen/generated/shared/c++/HybridPerpSideRatioSpec.cpp +36 -0
  60. package/lib/nitrogen/generated/shared/c++/HybridPerpSideRatioSpec.hpp +77 -0
  61. package/lib/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.cpp +171 -0
  62. package/lib/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.hpp +116 -0
  63. package/lib/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.cpp +171 -0
  64. package/lib/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.hpp +115 -0
  65. package/lib/nitrogen/generated/shared/json/PerpDepthBarsConfig.json +17 -0
  66. package/lib/nitrogen/generated/shared/json/PerpSideRatioConfig.json +17 -0
  67. package/lib/nitrogen/nitrogen/generated/android/c++/JHybridPerpDepthBarsSpec.cpp +130 -0
  68. package/lib/nitrogen/nitrogen/generated/android/c++/JHybridPerpDepthBarsSpec.hpp +80 -0
  69. package/lib/nitrogen/nitrogen/generated/android/c++/JHybridPerpSideRatioSpec.cpp +119 -0
  70. package/lib/nitrogen/nitrogen/generated/android/c++/JHybridPerpSideRatioSpec.hpp +80 -0
  71. package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.cpp +84 -0
  72. package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.hpp +49 -0
  73. package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.cpp +84 -0
  74. package/lib/nitrogen/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.hpp +49 -0
  75. package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/HybridPerpDepthBarsSpec.kt +101 -0
  76. package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/HybridPerpSideRatioSpec.kt +101 -0
  77. package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/perpdepthbarOnLoad.kt +35 -0
  78. package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsManager.kt +50 -0
  79. package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsStateUpdater.kt +23 -0
  80. package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioManager.kt +50 -0
  81. package/lib/nitrogen/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioStateUpdater.kt +23 -0
  82. package/lib/nitrogen/nitrogen/generated/android/perpdepthbar+autolinking.cmake +87 -0
  83. package/lib/nitrogen/nitrogen/generated/android/perpdepthbar+autolinking.gradle +27 -0
  84. package/lib/nitrogen/nitrogen/generated/android/perpdepthbarOnLoad.cpp +58 -0
  85. package/lib/nitrogen/nitrogen/generated/android/perpdepthbarOnLoad.hpp +25 -0
  86. package/lib/nitrogen/nitrogen/generated/ios/PerpDepthBar+autolinking.rb +60 -0
  87. package/lib/nitrogen/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Bridge.cpp +50 -0
  88. package/lib/nitrogen/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Bridge.hpp +69 -0
  89. package/lib/nitrogen/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Umbrella.hpp +48 -0
  90. package/lib/nitrogen/nitrogen/generated/ios/PerpDepthBarAutolinking.mm +41 -0
  91. package/lib/nitrogen/nitrogen/generated/ios/PerpDepthBarAutolinking.swift +40 -0
  92. package/lib/nitrogen/nitrogen/generated/ios/c++/HybridPerpDepthBarsSpecSwift.cpp +11 -0
  93. package/lib/nitrogen/nitrogen/generated/ios/c++/HybridPerpDepthBarsSpecSwift.hpp +120 -0
  94. package/lib/nitrogen/nitrogen/generated/ios/c++/HybridPerpSideRatioSpecSwift.cpp +11 -0
  95. package/lib/nitrogen/nitrogen/generated/ios/c++/HybridPerpSideRatioSpecSwift.hpp +118 -0
  96. package/lib/nitrogen/nitrogen/generated/ios/c++/views/HybridPerpDepthBarsComponent.mm +131 -0
  97. package/lib/nitrogen/nitrogen/generated/ios/c++/views/HybridPerpSideRatioComponent.mm +131 -0
  98. package/lib/nitrogen/nitrogen/generated/ios/swift/HybridPerpDepthBarsSpec.swift +63 -0
  99. package/lib/nitrogen/nitrogen/generated/ios/swift/HybridPerpDepthBarsSpec_cxx.swift +223 -0
  100. package/lib/nitrogen/nitrogen/generated/ios/swift/HybridPerpSideRatioSpec.swift +63 -0
  101. package/lib/nitrogen/nitrogen/generated/ios/swift/HybridPerpSideRatioSpec_cxx.swift +217 -0
  102. package/lib/nitrogen/nitrogen/generated/shared/c++/HybridPerpDepthBarsSpec.cpp +36 -0
  103. package/lib/nitrogen/nitrogen/generated/shared/c++/HybridPerpDepthBarsSpec.hpp +78 -0
  104. package/lib/nitrogen/nitrogen/generated/shared/c++/HybridPerpSideRatioSpec.cpp +36 -0
  105. package/lib/nitrogen/nitrogen/generated/shared/c++/HybridPerpSideRatioSpec.hpp +77 -0
  106. package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.cpp +171 -0
  107. package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.hpp +116 -0
  108. package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.cpp +171 -0
  109. package/lib/nitrogen/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.hpp +115 -0
  110. package/lib/nitrogen/nitrogen/generated/shared/json/PerpDepthBarsConfig.json +17 -0
  111. package/lib/nitrogen/nitrogen/generated/shared/json/PerpSideRatioConfig.json +17 -0
  112. package/lib/typescript/package.json +1 -0
  113. package/lib/typescript/src/PerpDepthBars.nitro.d.ts +37 -0
  114. package/lib/typescript/src/PerpDepthBars.nitro.d.ts.map +1 -0
  115. package/lib/typescript/src/PerpSideRatio.nitro.d.ts +29 -0
  116. package/lib/typescript/src/PerpSideRatio.nitro.d.ts.map +1 -0
  117. package/lib/typescript/src/index.d.ts +6 -0
  118. package/lib/typescript/src/index.d.ts.map +1 -0
  119. package/nitro.json +21 -0
  120. package/nitrogen/generated/android/c++/JHybridPerpDepthBarsSpec.cpp +130 -0
  121. package/nitrogen/generated/android/c++/JHybridPerpDepthBarsSpec.hpp +80 -0
  122. package/nitrogen/generated/android/c++/JHybridPerpSideRatioSpec.cpp +119 -0
  123. package/nitrogen/generated/android/c++/JHybridPerpSideRatioSpec.hpp +80 -0
  124. package/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.cpp +84 -0
  125. package/nitrogen/generated/android/c++/views/JHybridPerpDepthBarsStateUpdater.hpp +49 -0
  126. package/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.cpp +84 -0
  127. package/nitrogen/generated/android/c++/views/JHybridPerpSideRatioStateUpdater.hpp +49 -0
  128. package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/HybridPerpDepthBarsSpec.kt +101 -0
  129. package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/HybridPerpSideRatioSpec.kt +101 -0
  130. package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/perpdepthbarOnLoad.kt +35 -0
  131. package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsManager.kt +50 -0
  132. package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpDepthBarsStateUpdater.kt +23 -0
  133. package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioManager.kt +50 -0
  134. package/nitrogen/generated/android/kotlin/com/margelo/nitro/perpdepthbar/views/HybridPerpSideRatioStateUpdater.kt +23 -0
  135. package/nitrogen/generated/android/perpdepthbar+autolinking.cmake +87 -0
  136. package/nitrogen/generated/android/perpdepthbar+autolinking.gradle +27 -0
  137. package/nitrogen/generated/android/perpdepthbarOnLoad.cpp +58 -0
  138. package/nitrogen/generated/android/perpdepthbarOnLoad.hpp +25 -0
  139. package/nitrogen/generated/ios/PerpDepthBar+autolinking.rb +60 -0
  140. package/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Bridge.cpp +50 -0
  141. package/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Bridge.hpp +69 -0
  142. package/nitrogen/generated/ios/PerpDepthBar-Swift-Cxx-Umbrella.hpp +48 -0
  143. package/nitrogen/generated/ios/PerpDepthBarAutolinking.mm +41 -0
  144. package/nitrogen/generated/ios/PerpDepthBarAutolinking.swift +40 -0
  145. package/nitrogen/generated/ios/c++/HybridPerpDepthBarsSpecSwift.cpp +11 -0
  146. package/nitrogen/generated/ios/c++/HybridPerpDepthBarsSpecSwift.hpp +120 -0
  147. package/nitrogen/generated/ios/c++/HybridPerpSideRatioSpecSwift.cpp +11 -0
  148. package/nitrogen/generated/ios/c++/HybridPerpSideRatioSpecSwift.hpp +118 -0
  149. package/nitrogen/generated/ios/c++/views/HybridPerpDepthBarsComponent.mm +131 -0
  150. package/nitrogen/generated/ios/c++/views/HybridPerpSideRatioComponent.mm +131 -0
  151. package/nitrogen/generated/ios/swift/HybridPerpDepthBarsSpec.swift +63 -0
  152. package/nitrogen/generated/ios/swift/HybridPerpDepthBarsSpec_cxx.swift +223 -0
  153. package/nitrogen/generated/ios/swift/HybridPerpSideRatioSpec.swift +63 -0
  154. package/nitrogen/generated/ios/swift/HybridPerpSideRatioSpec_cxx.swift +217 -0
  155. package/nitrogen/generated/shared/c++/HybridPerpDepthBarsSpec.cpp +36 -0
  156. package/nitrogen/generated/shared/c++/HybridPerpDepthBarsSpec.hpp +78 -0
  157. package/nitrogen/generated/shared/c++/HybridPerpSideRatioSpec.cpp +36 -0
  158. package/nitrogen/generated/shared/c++/HybridPerpSideRatioSpec.hpp +77 -0
  159. package/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.cpp +171 -0
  160. package/nitrogen/generated/shared/c++/views/HybridPerpDepthBarsComponent.hpp +116 -0
  161. package/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.cpp +171 -0
  162. package/nitrogen/generated/shared/c++/views/HybridPerpSideRatioComponent.hpp +115 -0
  163. package/nitrogen/generated/shared/json/PerpDepthBarsConfig.json +17 -0
  164. package/nitrogen/generated/shared/json/PerpSideRatioConfig.json +17 -0
  165. package/package.json +170 -0
  166. package/src/PerpDepthBars.nitro.ts +42 -0
  167. package/src/PerpSideRatio.nitro.ts +34 -0
  168. package/src/index.tsx +30 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 OneKey
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,29 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "PerpDepthBar"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => min_ios_version_supported }
14
+ s.source = { :git => "https://github.com/OneKeyHQ/app-modules.git", :tag => "#{s.version}" }
15
+
16
+ s.source_files = [
17
+ "ios/**/*.{swift}",
18
+ "ios/**/*.{m,mm}",
19
+ "cpp/**/*.{hpp,cpp}",
20
+ ]
21
+
22
+ s.dependency 'React-jsi'
23
+ s.dependency 'React-callinvoker'
24
+
25
+ load 'nitrogen/generated/ios/PerpDepthBar+autolinking.rb'
26
+ add_nitrogen_files(s)
27
+
28
+ install_modules_dependencies(s)
29
+ end
package/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # @onekeyfe/react-native-perp-depth-bar
2
+
3
+ PerpDepthBar view for React Native
4
+
5
+ ## Installation
6
+
7
+ ```sh
8
+ yarn add @onekeyfe/react-native-perp-depth-bar
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```js
14
+ import { PerpDepthBarView } from '@onekeyfe/react-native-perp-depth-bar';
15
+
16
+ // ...
17
+
18
+ <PerpDepthBarView color="#ff0000" style={{ width: 100, height: 100 }} />
19
+ ```
20
+
21
+ ## Contributing
22
+
23
+ See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
24
+
25
+ ## License
26
+
27
+ MIT
28
+
29
+ ---
30
+
31
+ Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
@@ -0,0 +1,24 @@
1
+ project(perpdepthbar)
2
+ cmake_minimum_required(VERSION 3.9.0)
3
+
4
+ set(PACKAGE_NAME perpdepthbar)
5
+ set(CMAKE_VERBOSE_MAKEFILE ON)
6
+ set(CMAKE_CXX_STANDARD 20)
7
+
8
+ # Define C++ library and add all sources
9
+ add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp)
10
+
11
+ # Add Nitrogen specs :)
12
+ include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/perpdepthbar+autolinking.cmake)
13
+
14
+ # Set up local includes
15
+ include_directories("src/main/cpp" "../cpp")
16
+
17
+ find_library(LOG_LIB log)
18
+
19
+ # Link all libraries together
20
+ target_link_libraries(
21
+ ${PACKAGE_NAME}
22
+ ${LOG_LIB}
23
+ android # <-- Android core
24
+ )
@@ -0,0 +1,128 @@
1
+ buildscript {
2
+ ext.getExtOrDefault = {name ->
3
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['PerpDepthBar_' + name]
4
+ }
5
+
6
+ repositories {
7
+ google()
8
+ mavenCentral()
9
+ }
10
+
11
+ dependencies {
12
+ classpath "com.android.tools.build:gradle:8.7.2"
13
+ // noinspection DifferentKotlinGradleVersion
14
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
15
+ }
16
+ }
17
+
18
+ def reactNativeArchitectures() {
19
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
20
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
21
+ }
22
+
23
+ apply plugin: "com.android.library"
24
+ apply plugin: "kotlin-android"
25
+ apply from: '../nitrogen/generated/android/perpdepthbar+autolinking.gradle'
26
+
27
+ apply plugin: "com.facebook.react"
28
+
29
+ def getExtOrIntegerDefault(name) {
30
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["PerpDepthBar_" + name]).toInteger()
31
+ }
32
+
33
+ android {
34
+ namespace "com.margelo.nitro.perpdepthbar"
35
+
36
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
37
+
38
+ defaultConfig {
39
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
40
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
41
+
42
+ externalNativeBuild {
43
+ cmake {
44
+ cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
45
+ arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
46
+ abiFilters (*reactNativeArchitectures())
47
+
48
+ buildTypes {
49
+ debug {
50
+ cppFlags "-O1 -g"
51
+ }
52
+ release {
53
+ cppFlags "-O2"
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ externalNativeBuild {
61
+ cmake {
62
+ path "CMakeLists.txt"
63
+ }
64
+ }
65
+
66
+ packagingOptions {
67
+ excludes = [
68
+ "META-INF",
69
+ "META-INF/**",
70
+ "**/libc++_shared.so",
71
+ "**/libfbjni.so",
72
+ "**/libjsi.so",
73
+ "**/libfolly_json.so",
74
+ "**/libfolly_runtime.so",
75
+ "**/libglog.so",
76
+ "**/libhermes.so",
77
+ "**/libhermes-executor-debug.so",
78
+ "**/libhermes_executor.so",
79
+ "**/libreactnative.so",
80
+ "**/libreactnativejni.so",
81
+ "**/libturbomodulejsijni.so",
82
+ "**/libreact_nativemodule_core.so",
83
+ "**/libjscexecutor.so"
84
+ ]
85
+ }
86
+
87
+ buildFeatures {
88
+ buildConfig true
89
+ prefab true
90
+ }
91
+
92
+ buildTypes {
93
+ release {
94
+ minifyEnabled false
95
+ }
96
+ }
97
+
98
+ lintOptions {
99
+ disable "GradleCompatible"
100
+ }
101
+
102
+ compileOptions {
103
+ sourceCompatibility JavaVersion.VERSION_1_8
104
+ targetCompatibility JavaVersion.VERSION_1_8
105
+ }
106
+
107
+ sourceSets {
108
+ main {
109
+ java.srcDirs += [
110
+ "generated/java",
111
+ "generated/jni"
112
+ ]
113
+ }
114
+ }
115
+ }
116
+
117
+ repositories {
118
+ mavenCentral()
119
+ google()
120
+ }
121
+
122
+ def kotlin_version = getExtOrDefault("kotlinVersion")
123
+
124
+ dependencies {
125
+ implementation "com.facebook.react:react-android"
126
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
127
+ implementation project(":react-native-nitro-modules")
128
+ }
@@ -0,0 +1,2 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ </manifest>
@@ -0,0 +1,6 @@
1
+ #include <jni.h>
2
+ #include "perpdepthbarOnLoad.hpp"
3
+
4
+ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
5
+ return margelo::nitro::perpdepthbar::initialize(vm);
6
+ }
@@ -0,0 +1,164 @@
1
+ package com.margelo.nitro.perpdepthbar
2
+
3
+ import android.animation.ValueAnimator
4
+ import android.graphics.Canvas
5
+ import android.graphics.Paint
6
+ import android.view.View
7
+ import android.view.animation.PathInterpolator
8
+ import com.facebook.proguard.annotations.DoNotStrip
9
+ import com.facebook.react.uimanager.ThemedReactContext
10
+
11
+ /**
12
+ * Renders an entire column of order-book depth bars for one side. Draws N
13
+ * rects whose horizontal fill fraction animates on the UI thread via a single
14
+ * [ValueAnimator], replacing N reanimated `DepthBar` instances.
15
+ */
16
+ @DoNotStrip
17
+ class HybridPerpDepthBars(val context: ThemedReactContext) : HybridPerpDepthBarsSpec() {
18
+
19
+ private val density = context.resources.displayMetrics.density
20
+ private val paint = Paint(Paint.ANTI_ALIAS_FLAG)
21
+
22
+ private var current = DoubleArray(0)
23
+ private var start = DoubleArray(0)
24
+ private var target = DoubleArray(0)
25
+
26
+ private var lastEpoch = Double.NaN
27
+ private var hasDrawn = false
28
+ private var isDisposed = false
29
+ private var animator: ValueAnimator? = null
30
+
31
+ override val view: View = object : View(context) {
32
+ override fun onDraw(canvas: Canvas) {
33
+ drawBars(canvas)
34
+ }
35
+ }.apply {
36
+ isClickable = false
37
+ isFocusable = false
38
+ }
39
+
40
+ // MARK: - Props
41
+ override var percents: DoubleArray = DoubleArray(0)
42
+ get() = field
43
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
44
+
45
+ override var rowHeight: Double = 0.0
46
+ get() = field
47
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
48
+
49
+ override var rowMarginTop: Double = 0.0
50
+ get() = field
51
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
52
+
53
+ override var barInset: Double = 0.0
54
+ get() = field
55
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
56
+
57
+ override var origin: String = "left"
58
+ get() = field
59
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
60
+
61
+ override var reducedMotion: Boolean = false
62
+ get() = field
63
+ set(value) { field = value }
64
+
65
+ override var epoch: Double = 0.0
66
+ get() = field
67
+ set(value) { field = value }
68
+
69
+ override var color: String = ""
70
+ get() = field
71
+ set(value) {
72
+ if (isDisposed) return
73
+ field = value
74
+ paint.color = PerpColorParser.parse(value)
75
+ view.invalidate()
76
+ }
77
+
78
+ /**
79
+ * Called by Nitro once after a prop-update transaction. Recompute targets and
80
+ * (re)start the animation here so a multi-prop update animates once.
81
+ */
82
+ override fun afterUpdate() {
83
+ super.afterUpdate()
84
+ if (isDisposed) return
85
+ syncTargets()
86
+ }
87
+
88
+ private fun syncTargets() {
89
+ val count = percents.size
90
+ val epochChanged = epoch != lastEpoch
91
+ val countChanged = target.size != count
92
+ val snap = !hasDrawn || reducedMotion || epochChanged || countChanged
93
+
94
+ val newTarget = DoubleArray(count) { clampFrac(percents[it]) }
95
+
96
+ if (snap) {
97
+ animator?.cancel()
98
+ current = newTarget.copyOf()
99
+ target = newTarget
100
+ lastEpoch = epoch
101
+ hasDrawn = true
102
+ view.invalidate()
103
+ return
104
+ }
105
+
106
+ // Animate each row from its current value to the new target.
107
+ if (current.size != count) current = current.copyOf(count)
108
+ start = current.copyOf()
109
+ target = newTarget
110
+ lastEpoch = epoch
111
+
112
+ animator?.cancel()
113
+ animator = ValueAnimator.ofFloat(0f, 1f).apply {
114
+ duration = DURATION_MS
115
+ interpolator = EASE_OUT_CUBIC
116
+ addUpdateListener { a ->
117
+ if (isDisposed) return@addUpdateListener
118
+ val f = a.animatedFraction
119
+ for (i in current.indices) {
120
+ val s = if (i < start.size) start[i] else 0.0
121
+ val t = if (i < target.size) target[i] else 0.0
122
+ current[i] = s + (t - s) * f
123
+ }
124
+ view.invalidate()
125
+ }
126
+ start()
127
+ }
128
+ }
129
+
130
+ private fun drawBars(canvas: Canvas) {
131
+ val w = view.width.toFloat()
132
+ if (w <= 0f) return
133
+ val rh = (rowHeight * density).toFloat()
134
+ val mt = (rowMarginTop * density).toFloat()
135
+ val inset = (barInset * density).toFloat()
136
+ val barH = (rh - inset * 2f).coerceAtLeast(0f)
137
+ val isRight = origin == "right"
138
+
139
+ for (i in current.indices) {
140
+ val rowTop = mt + i * (rh + mt)
141
+ val top = rowTop + inset
142
+ val bottom = top + barH
143
+ val fillW = w * current[i].toFloat()
144
+ if (fillW <= 0f) continue
145
+ val left = if (isRight) w - fillW else 0f
146
+ val right = if (isRight) w else fillW
147
+ canvas.drawRect(left, top, right, bottom, paint)
148
+ }
149
+ }
150
+
151
+ private fun clampFrac(percent: Double): Double =
152
+ (percent.coerceIn(0.0, 100.0)) / 100.0
153
+
154
+ override fun dispose() {
155
+ isDisposed = true
156
+ animator?.cancel()
157
+ animator = null
158
+ }
159
+
160
+ companion object {
161
+ private const val DURATION_MS = 260L
162
+ private val EASE_OUT_CUBIC = PathInterpolator(0.33f, 1f, 0.68f, 1f)
163
+ }
164
+ }
@@ -0,0 +1,139 @@
1
+ package com.margelo.nitro.perpdepthbar
2
+
3
+ import android.animation.ValueAnimator
4
+ import android.graphics.Canvas
5
+ import android.graphics.Paint
6
+ import android.graphics.RectF
7
+ import android.view.View
8
+ import android.view.animation.PathInterpolator
9
+ import com.facebook.proguard.annotations.DoNotStrip
10
+ import com.facebook.react.uimanager.ThemedReactContext
11
+
12
+ /** Two horizontal segments whose widths animate to the bid/ask ratio. */
13
+ @DoNotStrip
14
+ class HybridPerpSideRatio(val context: ThemedReactContext) : HybridPerpSideRatioSpec() {
15
+
16
+ private val density = context.resources.displayMetrics.density
17
+ private val bidPaint = Paint(Paint.ANTI_ALIAS_FLAG)
18
+ private val askPaint = Paint(Paint.ANTI_ALIAS_FLAG)
19
+
20
+ // Animated split fraction (bid share of the available width), 0..1.
21
+ private var currentSplit = 0.5
22
+ private var startSplit = 0.5
23
+ private var targetSplit = 0.5
24
+ private var hasDrawn = false
25
+ private var isDisposed = false
26
+ private var animator: ValueAnimator? = null
27
+
28
+ override val view: View = object : View(context) {
29
+ override fun onDraw(canvas: Canvas) {
30
+ drawSegments(canvas)
31
+ }
32
+ }.apply {
33
+ isClickable = false
34
+ isFocusable = false
35
+ }
36
+
37
+ override var bidPercentage: Double = 50.0
38
+ get() = field
39
+ set(value) { field = value }
40
+
41
+ override var askPercentage: Double = 50.0
42
+ get() = field
43
+ set(value) { field = value }
44
+
45
+ override var segmentHeight: Double = 4.0
46
+ get() = field
47
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
48
+
49
+ override var cornerRadius: Double = 999.0
50
+ get() = field
51
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
52
+
53
+ override var gap: Double = 2.0
54
+ get() = field
55
+ set(value) { if (!isDisposed) { field = value; view.invalidate() } }
56
+
57
+ override var reducedMotion: Boolean = false
58
+ get() = field
59
+ set(value) { field = value }
60
+
61
+ override var longColor: String = ""
62
+ get() = field
63
+ set(value) {
64
+ if (isDisposed) return
65
+ field = value
66
+ bidPaint.color = PerpColorParser.parse(value)
67
+ view.invalidate()
68
+ }
69
+
70
+ override var shortColor: String = ""
71
+ get() = field
72
+ set(value) {
73
+ if (isDisposed) return
74
+ field = value
75
+ askPaint.color = PerpColorParser.parse(value)
76
+ view.invalidate()
77
+ }
78
+
79
+ override fun afterUpdate() {
80
+ super.afterUpdate()
81
+ if (isDisposed) return
82
+ val bid = maxOf(bidPercentage, 1.0)
83
+ val ask = maxOf(askPercentage, 1.0)
84
+ val split = bid / (bid + ask)
85
+ val snap = !hasDrawn || reducedMotion
86
+ if (snap) {
87
+ animator?.cancel()
88
+ currentSplit = split
89
+ targetSplit = split
90
+ hasDrawn = true
91
+ view.invalidate()
92
+ return
93
+ }
94
+ startSplit = currentSplit
95
+ targetSplit = split
96
+ animator?.cancel()
97
+ animator = ValueAnimator.ofFloat(0f, 1f).apply {
98
+ duration = DURATION_MS
99
+ interpolator = EASE_OUT_CUBIC
100
+ addUpdateListener { a ->
101
+ if (isDisposed) return@addUpdateListener
102
+ currentSplit = startSplit + (targetSplit - startSplit) * a.animatedFraction
103
+ view.invalidate()
104
+ }
105
+ start()
106
+ }
107
+ }
108
+
109
+ private fun drawSegments(canvas: Canvas) {
110
+ val w = view.width.toFloat()
111
+ if (w <= 0f) return
112
+ val h = (segmentHeight * density).toFloat()
113
+ val g = (gap * density).toFloat()
114
+ val y = (view.height - h) / 2f
115
+ val available = (w - g).coerceAtLeast(0f)
116
+ val bidW = available * currentSplit.toFloat()
117
+ val askW = available - bidW
118
+ val r = (cornerRadius * density).toFloat().coerceAtMost(h / 2f)
119
+
120
+ if (bidW > 0f) {
121
+ canvas.drawRoundRect(RectF(0f, y, bidW, y + h), r, r, bidPaint)
122
+ }
123
+ if (askW > 0f) {
124
+ val askLeft = bidW + g
125
+ canvas.drawRoundRect(RectF(askLeft, y, askLeft + askW, y + h), r, r, askPaint)
126
+ }
127
+ }
128
+
129
+ override fun dispose() {
130
+ isDisposed = true
131
+ animator?.cancel()
132
+ animator = null
133
+ }
134
+
135
+ companion object {
136
+ private const val DURATION_MS = 300L
137
+ private val EASE_OUT_CUBIC = PathInterpolator(0.33f, 1f, 0.68f, 1f)
138
+ }
139
+ }
@@ -0,0 +1,56 @@
1
+ package com.margelo.nitro.perpdepthbar
2
+
3
+ import android.graphics.Color
4
+
5
+ /**
6
+ * Parses color strings from JS. Supports `#rgb`/`#rrggbb`/`#rrggbbaa` and
7
+ * `rgb(...)`/`rgba(...)` (alpha 0..1). Returns [fallback] on failure.
8
+ *
9
+ * Note: Android's [Color.parseColor] expects `#AARRGGBB`, while web/JS emit
10
+ * `#RRGGBBAA`, so 8-digit hex is reordered here before parsing.
11
+ */
12
+ object PerpColorParser {
13
+ fun parse(value: String?, fallback: Int = Color.TRANSPARENT): Int {
14
+ val raw = value?.trim().orEmpty()
15
+ if (raw.isEmpty()) return fallback
16
+ return try {
17
+ when {
18
+ raw.startsWith("#") -> parseHex(raw) ?: fallback
19
+ raw.startsWith("rgb", ignoreCase = true) -> parseRgb(raw) ?: fallback
20
+ else -> fallback
21
+ }
22
+ } catch (e: Exception) {
23
+ fallback
24
+ }
25
+ }
26
+
27
+ private fun parseHex(hex: String): Int? {
28
+ var s = hex.substring(1)
29
+ if (s.length == 3) {
30
+ s = s.map { "$it$it" }.joinToString("")
31
+ }
32
+ return when (s.length) {
33
+ 6 -> Color.parseColor("#$s")
34
+ 8 -> {
35
+ // #RRGGBBAA (JS) -> #AARRGGBB (Android)
36
+ val rgb = s.substring(0, 6)
37
+ val a = s.substring(6, 8)
38
+ Color.parseColor("#$a$rgb")
39
+ }
40
+ else -> null
41
+ }
42
+ }
43
+
44
+ private fun parseRgb(value: String): Int? {
45
+ val open = value.indexOf('(')
46
+ val close = value.indexOf(')')
47
+ if (open < 0 || close < 0 || close <= open) return null
48
+ val parts = value.substring(open + 1, close).split(",").map { it.trim() }
49
+ if (parts.size < 3) return null
50
+ val r = parts[0].toFloatOrNull()?.toInt() ?: return null
51
+ val g = parts[1].toFloatOrNull()?.toInt() ?: return null
52
+ val b = parts[2].toFloatOrNull()?.toInt() ?: return null
53
+ val a = if (parts.size >= 4) ((parts[3].toFloatOrNull() ?: 1f) * 255f).toInt() else 255
54
+ return Color.argb(a.coerceIn(0, 255), r.coerceIn(0, 255), g.coerceIn(0, 255), b.coerceIn(0, 255))
55
+ }
56
+ }
@@ -0,0 +1,33 @@
1
+ package com.margelo.nitro.perpdepthbar
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfoProvider
7
+ import com.facebook.react.uimanager.ViewManager
8
+
9
+ import com.margelo.nitro.perpdepthbar.views.HybridPerpDepthBarsManager
10
+ import com.margelo.nitro.perpdepthbar.views.HybridPerpSideRatioManager
11
+
12
+ class PerpDepthBarPackage : BaseReactPackage() {
13
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
14
+ return null
15
+ }
16
+
17
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
18
+ return ReactModuleInfoProvider { HashMap() }
19
+ }
20
+
21
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
22
+ return listOf(
23
+ HybridPerpDepthBarsManager(),
24
+ HybridPerpSideRatioManager()
25
+ )
26
+ }
27
+
28
+ companion object {
29
+ init {
30
+ System.loadLibrary("perpdepthbar")
31
+ }
32
+ }
33
+ }