@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
@@ -0,0 +1,171 @@
1
+ ///
2
+ /// HybridPerpSideRatioComponent.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridPerpSideRatioComponent.hpp"
9
+
10
+ #include <string>
11
+ #include <exception>
12
+ #include <utility>
13
+ #include <NitroModules/NitroDefines.hpp>
14
+ #include <NitroModules/JSIConverter.hpp>
15
+ #include <react/renderer/core/RawValue.h>
16
+ #include <react/renderer/core/ShadowNode.h>
17
+ #include <react/renderer/core/ComponentDescriptor.h>
18
+ #include <react/renderer/components/view/ViewProps.h>
19
+
20
+ namespace margelo::nitro::perpdepthbar::views {
21
+
22
+ extern const char HybridPerpSideRatioComponentName[] = "PerpSideRatio";
23
+
24
+ HybridPerpSideRatioProps::HybridPerpSideRatioProps(const react::PropsParserContext& context,
25
+ const HybridPerpSideRatioProps& sourceProps,
26
+ const react::RawProps& rawProps):
27
+ react::ViewProps(context, sourceProps, rawProps, filterObjectKeys),
28
+ bidPercentage([&]() -> CachedProp<double> {
29
+ try {
30
+ const react::RawValue* rawValue = rawProps.at("bidPercentage", nullptr, nullptr);
31
+ if (rawValue == nullptr) return sourceProps.bidPercentage;
32
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
33
+ return CachedProp<double>::fromRawValue(*runtime, value, sourceProps.bidPercentage);
34
+ } catch (const std::exception& exc) {
35
+ throw std::runtime_error(std::string("PerpSideRatio.bidPercentage: ") + exc.what());
36
+ }
37
+ }()),
38
+ askPercentage([&]() -> CachedProp<double> {
39
+ try {
40
+ const react::RawValue* rawValue = rawProps.at("askPercentage", nullptr, nullptr);
41
+ if (rawValue == nullptr) return sourceProps.askPercentage;
42
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
43
+ return CachedProp<double>::fromRawValue(*runtime, value, sourceProps.askPercentage);
44
+ } catch (const std::exception& exc) {
45
+ throw std::runtime_error(std::string("PerpSideRatio.askPercentage: ") + exc.what());
46
+ }
47
+ }()),
48
+ longColor([&]() -> CachedProp<std::string> {
49
+ try {
50
+ const react::RawValue* rawValue = rawProps.at("longColor", nullptr, nullptr);
51
+ if (rawValue == nullptr) return sourceProps.longColor;
52
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
53
+ return CachedProp<std::string>::fromRawValue(*runtime, value, sourceProps.longColor);
54
+ } catch (const std::exception& exc) {
55
+ throw std::runtime_error(std::string("PerpSideRatio.longColor: ") + exc.what());
56
+ }
57
+ }()),
58
+ shortColor([&]() -> CachedProp<std::string> {
59
+ try {
60
+ const react::RawValue* rawValue = rawProps.at("shortColor", nullptr, nullptr);
61
+ if (rawValue == nullptr) return sourceProps.shortColor;
62
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
63
+ return CachedProp<std::string>::fromRawValue(*runtime, value, sourceProps.shortColor);
64
+ } catch (const std::exception& exc) {
65
+ throw std::runtime_error(std::string("PerpSideRatio.shortColor: ") + exc.what());
66
+ }
67
+ }()),
68
+ segmentHeight([&]() -> CachedProp<double> {
69
+ try {
70
+ const react::RawValue* rawValue = rawProps.at("segmentHeight", nullptr, nullptr);
71
+ if (rawValue == nullptr) return sourceProps.segmentHeight;
72
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
73
+ return CachedProp<double>::fromRawValue(*runtime, value, sourceProps.segmentHeight);
74
+ } catch (const std::exception& exc) {
75
+ throw std::runtime_error(std::string("PerpSideRatio.segmentHeight: ") + exc.what());
76
+ }
77
+ }()),
78
+ cornerRadius([&]() -> CachedProp<double> {
79
+ try {
80
+ const react::RawValue* rawValue = rawProps.at("cornerRadius", nullptr, nullptr);
81
+ if (rawValue == nullptr) return sourceProps.cornerRadius;
82
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
83
+ return CachedProp<double>::fromRawValue(*runtime, value, sourceProps.cornerRadius);
84
+ } catch (const std::exception& exc) {
85
+ throw std::runtime_error(std::string("PerpSideRatio.cornerRadius: ") + exc.what());
86
+ }
87
+ }()),
88
+ gap([&]() -> CachedProp<double> {
89
+ try {
90
+ const react::RawValue* rawValue = rawProps.at("gap", nullptr, nullptr);
91
+ if (rawValue == nullptr) return sourceProps.gap;
92
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
93
+ return CachedProp<double>::fromRawValue(*runtime, value, sourceProps.gap);
94
+ } catch (const std::exception& exc) {
95
+ throw std::runtime_error(std::string("PerpSideRatio.gap: ") + exc.what());
96
+ }
97
+ }()),
98
+ reducedMotion([&]() -> CachedProp<bool> {
99
+ try {
100
+ const react::RawValue* rawValue = rawProps.at("reducedMotion", nullptr, nullptr);
101
+ if (rawValue == nullptr) return sourceProps.reducedMotion;
102
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
103
+ return CachedProp<bool>::fromRawValue(*runtime, value, sourceProps.reducedMotion);
104
+ } catch (const std::exception& exc) {
105
+ throw std::runtime_error(std::string("PerpSideRatio.reducedMotion: ") + exc.what());
106
+ }
107
+ }()),
108
+ hybridRef([&]() -> CachedProp<std::optional<std::function<void(const std::shared_ptr<HybridPerpSideRatioSpec>& /* ref */)>>> {
109
+ try {
110
+ const react::RawValue* rawValue = rawProps.at("hybridRef", nullptr, nullptr);
111
+ if (rawValue == nullptr) return sourceProps.hybridRef;
112
+ const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
113
+ return CachedProp<std::optional<std::function<void(const std::shared_ptr<HybridPerpSideRatioSpec>& /* ref */)>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime, "f"), sourceProps.hybridRef);
114
+ } catch (const std::exception& exc) {
115
+ throw std::runtime_error(std::string("PerpSideRatio.hybridRef: ") + exc.what());
116
+ }
117
+ }()) { }
118
+
119
+ HybridPerpSideRatioProps::HybridPerpSideRatioProps(const HybridPerpSideRatioProps& other):
120
+ react::ViewProps(),
121
+ bidPercentage(other.bidPercentage),
122
+ askPercentage(other.askPercentage),
123
+ longColor(other.longColor),
124
+ shortColor(other.shortColor),
125
+ segmentHeight(other.segmentHeight),
126
+ cornerRadius(other.cornerRadius),
127
+ gap(other.gap),
128
+ reducedMotion(other.reducedMotion),
129
+ hybridRef(other.hybridRef) { }
130
+
131
+ bool HybridPerpSideRatioProps::filterObjectKeys(const std::string& propName) {
132
+ switch (hashString(propName)) {
133
+ case hashString("bidPercentage"): return true;
134
+ case hashString("askPercentage"): return true;
135
+ case hashString("longColor"): return true;
136
+ case hashString("shortColor"): return true;
137
+ case hashString("segmentHeight"): return true;
138
+ case hashString("cornerRadius"): return true;
139
+ case hashString("gap"): return true;
140
+ case hashString("reducedMotion"): return true;
141
+ case hashString("hybridRef"): return true;
142
+ default: return false;
143
+ }
144
+ }
145
+
146
+ HybridPerpSideRatioComponentDescriptor::HybridPerpSideRatioComponentDescriptor(const react::ComponentDescriptorParameters& parameters)
147
+ : ConcreteComponentDescriptor(parameters,
148
+ react::RawPropsParser(/* enableJsiParser */ true)) {}
149
+
150
+ std::shared_ptr<const react::Props> HybridPerpSideRatioComponentDescriptor::cloneProps(const react::PropsParserContext& context,
151
+ const std::shared_ptr<const react::Props>& props,
152
+ react::RawProps rawProps) const {
153
+ // 1. Prepare raw props parser
154
+ rawProps.parse(rawPropsParser_);
155
+ // 2. Copy props with Nitro's cached copy constructor
156
+ return HybridPerpSideRatioShadowNode::Props(context, /* & */ rawProps, props);
157
+ }
158
+
159
+ #ifdef ANDROID
160
+ void HybridPerpSideRatioComponentDescriptor::adopt(react::ShadowNode& shadowNode) const {
161
+ // This is called immediately after `ShadowNode` is created, cloned or in progress.
162
+ // On Android, we need to wrap props in our state, which gets routed through Java and later unwrapped in JNI/C++.
163
+ auto& concreteShadowNode = dynamic_cast<HybridPerpSideRatioShadowNode&>(shadowNode);
164
+ const HybridPerpSideRatioProps& props = concreteShadowNode.getConcreteProps();
165
+ HybridPerpSideRatioState state;
166
+ state.setProps(props);
167
+ concreteShadowNode.setStateData(std::move(state));
168
+ }
169
+ #endif
170
+
171
+ } // namespace margelo::nitro::perpdepthbar::views
@@ -0,0 +1,115 @@
1
+ ///
2
+ /// HybridPerpSideRatioComponent.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <optional>
11
+ #include <NitroModules/NitroDefines.hpp>
12
+ #include <NitroModules/NitroHash.hpp>
13
+ #include <NitroModules/CachedProp.hpp>
14
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
15
+ #include <react/renderer/core/PropsParserContext.h>
16
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
17
+ #include <react/renderer/components/view/ViewProps.h>
18
+
19
+ #include <string>
20
+ #include <memory>
21
+ #include "HybridPerpSideRatioSpec.hpp"
22
+ #include <functional>
23
+ #include <optional>
24
+
25
+ namespace margelo::nitro::perpdepthbar::views {
26
+
27
+ using namespace facebook;
28
+
29
+ /**
30
+ * The name of the actual native View.
31
+ */
32
+ extern const char HybridPerpSideRatioComponentName[];
33
+
34
+ /**
35
+ * Props for the "PerpSideRatio" View.
36
+ */
37
+ class HybridPerpSideRatioProps final: public react::ViewProps {
38
+ public:
39
+ HybridPerpSideRatioProps() = default;
40
+ HybridPerpSideRatioProps(const HybridPerpSideRatioProps&);
41
+ HybridPerpSideRatioProps(const react::PropsParserContext& context,
42
+ const HybridPerpSideRatioProps& sourceProps,
43
+ const react::RawProps& rawProps);
44
+
45
+ public:
46
+ CachedProp<double> bidPercentage;
47
+ CachedProp<double> askPercentage;
48
+ CachedProp<std::string> longColor;
49
+ CachedProp<std::string> shortColor;
50
+ CachedProp<double> segmentHeight;
51
+ CachedProp<double> cornerRadius;
52
+ CachedProp<double> gap;
53
+ CachedProp<bool> reducedMotion;
54
+ CachedProp<std::optional<std::function<void(const std::shared_ptr<HybridPerpSideRatioSpec>& /* ref */)>>> hybridRef;
55
+
56
+ private:
57
+ static bool filterObjectKeys(const std::string& propName);
58
+ };
59
+
60
+ /**
61
+ * State for the "PerpSideRatio" View.
62
+ */
63
+ class HybridPerpSideRatioState final {
64
+ public:
65
+ HybridPerpSideRatioState() = default;
66
+
67
+ public:
68
+ void setProps(const HybridPerpSideRatioProps& props) { _props.emplace(props); }
69
+ const std::optional<HybridPerpSideRatioProps>& getProps() const { return _props; }
70
+
71
+ public:
72
+ #ifdef ANDROID
73
+ HybridPerpSideRatioState(const HybridPerpSideRatioState& /* previousState */, folly::dynamic /* data */) {}
74
+ folly::dynamic getDynamic() const {
75
+ throw std::runtime_error("HybridPerpSideRatioState does not support folly!");
76
+ }
77
+ react::MapBuffer getMapBuffer() const {
78
+ throw std::runtime_error("HybridPerpSideRatioState does not support MapBuffer!");
79
+ };
80
+ #endif
81
+
82
+ private:
83
+ std::optional<HybridPerpSideRatioProps> _props;
84
+ };
85
+
86
+ /**
87
+ * The Shadow Node for the "PerpSideRatio" View.
88
+ */
89
+ using HybridPerpSideRatioShadowNode = react::ConcreteViewShadowNode<HybridPerpSideRatioComponentName /* "HybridPerpSideRatio" */,
90
+ HybridPerpSideRatioProps /* custom props */,
91
+ react::ViewEventEmitter /* default */,
92
+ HybridPerpSideRatioState /* custom state */>;
93
+
94
+ /**
95
+ * The Component Descriptor for the "PerpSideRatio" View.
96
+ */
97
+ class HybridPerpSideRatioComponentDescriptor final: public react::ConcreteComponentDescriptor<HybridPerpSideRatioShadowNode> {
98
+ public:
99
+ HybridPerpSideRatioComponentDescriptor(const react::ComponentDescriptorParameters& parameters);
100
+
101
+ public:
102
+ /**
103
+ * A faster path for cloning props - reuses the caching logic from `HybridPerpSideRatioProps`.
104
+ */
105
+ std::shared_ptr<const react::Props> cloneProps(const react::PropsParserContext& context,
106
+ const std::shared_ptr<const react::Props>& props,
107
+ react::RawProps rawProps) const override;
108
+ #ifdef ANDROID
109
+ void adopt(react::ShadowNode& shadowNode) const override;
110
+ #endif
111
+ };
112
+
113
+ /* The actual view for "PerpSideRatio" needs to be implemented in platform-specific code. */
114
+
115
+ } // namespace margelo::nitro::perpdepthbar::views
@@ -0,0 +1,17 @@
1
+ {
2
+ "uiViewClassName": "PerpDepthBars",
3
+ "supportsRawText": false,
4
+ "bubblingEventTypes": {},
5
+ "directEventTypes": {},
6
+ "validAttributes": {
7
+ "percents": true,
8
+ "rowHeight": true,
9
+ "rowMarginTop": true,
10
+ "barInset": true,
11
+ "color": true,
12
+ "origin": true,
13
+ "reducedMotion": true,
14
+ "epoch": true,
15
+ "hybridRef": true
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "uiViewClassName": "PerpSideRatio",
3
+ "supportsRawText": false,
4
+ "bubblingEventTypes": {},
5
+ "directEventTypes": {},
6
+ "validAttributes": {
7
+ "bidPercentage": true,
8
+ "askPercentage": true,
9
+ "longColor": true,
10
+ "shortColor": true,
11
+ "segmentHeight": true,
12
+ "cornerRadius": true,
13
+ "gap": true,
14
+ "reducedMotion": true,
15
+ "hybridRef": true
16
+ }
17
+ }
package/package.json ADDED
@@ -0,0 +1,170 @@
1
+ {
2
+ "name": "@onekeyfe/react-native-perp-depth-bar",
3
+ "version": "3.0.39",
4
+ "description": "react-native-perp-depth-bar",
5
+ "main": "./lib/module/index.js",
6
+ "types": "./lib/typescript/src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "source": "./src/index.tsx",
10
+ "types": "./lib/typescript/src/index.d.ts",
11
+ "default": "./lib/module/index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "files": [
16
+ "src",
17
+ "lib",
18
+ "android",
19
+ "ios",
20
+ "cpp",
21
+ "nitrogen",
22
+ "nitro.json",
23
+ "*.podspec",
24
+ "react-native.config.js",
25
+ "!ios/build",
26
+ "!android/build",
27
+ "!android/gradle",
28
+ "!android/gradlew",
29
+ "!android/gradlew.bat",
30
+ "!android/local.properties",
31
+ "!**/__tests__",
32
+ "!**/__fixtures__",
33
+ "!**/__mocks__",
34
+ "!**/.*"
35
+ ],
36
+ "scripts": {
37
+ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
38
+ "prepare": "bob build && cp -r nitrogen lib/nitrogen",
39
+ "nitrogen": "nitrogen",
40
+ "typecheck": "tsc",
41
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
42
+ "test": "jest",
43
+ "release": "yarn nitrogen && yarn prepare && npm whoami && npm publish --access public"
44
+ },
45
+ "keywords": [
46
+ "react-native",
47
+ "ios",
48
+ "android"
49
+ ],
50
+ "repository": {
51
+ "type": "git",
52
+ "url": "git+https://github.com/OneKeyHQ/native-views/react-native-perp-depth-bar.git"
53
+ },
54
+ "author": "@onekeyfe <huanming@onekey.so> (https://github.com/OneKeyHQ/app-modules)",
55
+ "license": "MIT",
56
+ "bugs": {
57
+ "url": "https://github.com/OneKeyHQ/native-views/react-native-perp-depth-bar/issues"
58
+ },
59
+ "homepage": "https://github.com/OneKeyHQ/native-views/react-native-perp-depth-bar#readme",
60
+ "publishConfig": {
61
+ "registry": "https://registry.npmjs.org/"
62
+ },
63
+ "devDependencies": {
64
+ "@commitlint/config-conventional": "^19.8.1",
65
+ "@eslint/compat": "^1.3.2",
66
+ "@eslint/eslintrc": "^3.3.1",
67
+ "@eslint/js": "^9.35.0",
68
+ "@react-native/babel-preset": "0.83.0",
69
+ "@react-native/eslint-config": "0.83.0",
70
+ "@release-it/conventional-changelog": "^10.0.1",
71
+ "@types/jest": "^29.5.14",
72
+ "@types/react": "^19.2.0",
73
+ "commitlint": "^19.8.1",
74
+ "del-cli": "^6.0.0",
75
+ "eslint": "^9.35.0",
76
+ "eslint-config-prettier": "^10.1.8",
77
+ "eslint-plugin-prettier": "^5.5.4",
78
+ "jest": "^29.7.0",
79
+ "lefthook": "^2.0.3",
80
+ "nitrogen": "0.31.10",
81
+ "prettier": "^2.8.8",
82
+ "react": "19.2.0",
83
+ "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
84
+ "react-native-builder-bob": "^0.40.13",
85
+ "react-native-nitro-modules": "0.33.2",
86
+ "release-it": "^19.0.4",
87
+ "turbo": "^2.5.6",
88
+ "typescript": "^5.9.2"
89
+ },
90
+ "peerDependencies": {
91
+ "react": "*",
92
+ "react-native": "*",
93
+ "react-native-nitro-modules": "0.33.2"
94
+ },
95
+ "packageManager": "yarn@4.11.0",
96
+ "react-native-builder-bob": {
97
+ "source": "src",
98
+ "output": "lib",
99
+ "targets": [
100
+ [
101
+ "custom",
102
+ {
103
+ "script": "nitrogen",
104
+ "clean": "nitrogen/"
105
+ }
106
+ ],
107
+ [
108
+ "module",
109
+ {
110
+ "esm": true
111
+ }
112
+ ],
113
+ [
114
+ "typescript",
115
+ {
116
+ "project": "tsconfig.build.json"
117
+ }
118
+ ]
119
+ ]
120
+ },
121
+ "prettier": {
122
+ "quoteProps": "consistent",
123
+ "singleQuote": true,
124
+ "tabWidth": 2,
125
+ "trailingComma": "es5",
126
+ "useTabs": false
127
+ },
128
+ "jest": {
129
+ "preset": "react-native",
130
+ "modulePathIgnorePatterns": [
131
+ "<rootDir>/example/node_modules",
132
+ "<rootDir>/lib/"
133
+ ]
134
+ },
135
+ "commitlint": {
136
+ "extends": [
137
+ "@commitlint/config-conventional"
138
+ ]
139
+ },
140
+ "release-it": {
141
+ "git": {
142
+ "commitMessage": "chore: release ${version}",
143
+ "tagName": "v${version}"
144
+ },
145
+ "npm": {
146
+ "publish": true
147
+ },
148
+ "github": {
149
+ "release": true
150
+ },
151
+ "plugins": {
152
+ "@release-it/conventional-changelog": {
153
+ "preset": {
154
+ "name": "angular"
155
+ }
156
+ }
157
+ }
158
+ },
159
+ "create-react-native-library": {
160
+ "type": "nitro-view",
161
+ "languages": "kotlin-swift",
162
+ "tools": [
163
+ "eslint",
164
+ "jest",
165
+ "lefthook",
166
+ "release-it"
167
+ ],
168
+ "version": "0.56.0"
169
+ }
170
+ }
@@ -0,0 +1,42 @@
1
+ import type {
2
+ HybridView,
3
+ HybridViewMethods,
4
+ HybridViewProps,
5
+ } from 'react-native-nitro-modules';
6
+
7
+ /**
8
+ * One native view renders an ENTIRE column of order-book depth bars for a
9
+ * single side (asks or bids). It replaces N reanimated `DepthBar` rows with a
10
+ * single native view that owns N CALayer/onDraw rects and animates each row's
11
+ * horizontal fill on the native UI thread.
12
+ *
13
+ * Layout contract (must mirror the RN text layer for pixel alignment):
14
+ * row i top = rowMarginTop + i * (rowHeight + rowMarginTop)
15
+ * bar rect = inset vertically by `barInset` inside each row
16
+ * All values are in points (DIP); the native side quantizes to physical pixels.
17
+ */
18
+ export interface PerpDepthBarsProps extends HybridViewProps {
19
+ /** Depth percentage per row, 0..100. Length == number of rows on this side. */
20
+ percents: number[];
21
+ /** Row height in points (matches the sibling RN text row height). */
22
+ rowHeight: number;
23
+ /** Inter-row gap in points (RN `marginTop`; applied to every row incl. first). */
24
+ rowMarginTop: number;
25
+ /** Vertical inset of the bar inside its row in points (RN `rowHeight - gap`). */
26
+ barInset: number;
27
+ /** Resolved fill color: hex (#rgb/#rrggbb/#rrggbbaa) or rgba()/rgb(). */
28
+ color: string;
29
+ /** Fill anchor / growth direction: 'left' or 'right'. */
30
+ origin: string;
31
+ /** When true, skip animations (accessibility reduce-motion). */
32
+ reducedMotion: boolean;
33
+ /**
34
+ * Monotonic token. Bump from JS on coin switch / tick-size change /
35
+ * empty<->full so native snaps to the new values WITHOUT animating.
36
+ */
37
+ epoch: number;
38
+ }
39
+
40
+ export interface PerpDepthBarsMethods extends HybridViewMethods {}
41
+
42
+ export type PerpDepthBars = HybridView<PerpDepthBarsProps, PerpDepthBarsMethods>;
@@ -0,0 +1,34 @@
1
+ import type {
2
+ HybridView,
3
+ HybridViewMethods,
4
+ HybridViewProps,
5
+ } from 'react-native-nitro-modules';
6
+
7
+ /**
8
+ * Native replacement for `SideRatioSegments`: two horizontal segments whose
9
+ * widths animate to the bid/ask ratio. Outer corners are rounded; a `gap`
10
+ * separates the two segments. Standalone track (not overlaid on text), so
11
+ * alignment risk is low.
12
+ */
13
+ export interface PerpSideRatioProps extends HybridViewProps {
14
+ /** Bid (long) share, 0..100. */
15
+ bidPercentage: number;
16
+ /** Ask (short) share, 0..100. */
17
+ askPercentage: number;
18
+ /** Resolved long (bid) color. */
19
+ longColor: string;
20
+ /** Resolved short (ask) color. */
21
+ shortColor: string;
22
+ /** Track/segment height in points. */
23
+ segmentHeight: number;
24
+ /** Outer corner radius in points. */
25
+ cornerRadius: number;
26
+ /** Gap between the two segments in points. */
27
+ gap: number;
28
+ /** When true, skip animations (accessibility reduce-motion). */
29
+ reducedMotion: boolean;
30
+ }
31
+
32
+ export interface PerpSideRatioMethods extends HybridViewMethods {}
33
+
34
+ export type PerpSideRatio = HybridView<PerpSideRatioProps, PerpSideRatioMethods>;
package/src/index.tsx ADDED
@@ -0,0 +1,30 @@
1
+ import { getHostComponent } from 'react-native-nitro-modules';
2
+
3
+ import type {
4
+ PerpDepthBarsMethods,
5
+ PerpDepthBarsProps,
6
+ } from './PerpDepthBars.nitro';
7
+ import type {
8
+ PerpSideRatioMethods,
9
+ PerpSideRatioProps,
10
+ } from './PerpSideRatio.nitro';
11
+
12
+ const PerpDepthBarsConfig = require('../nitrogen/generated/shared/json/PerpDepthBarsConfig.json');
13
+ const PerpSideRatioConfig = require('../nitrogen/generated/shared/json/PerpSideRatioConfig.json');
14
+
15
+ export type {
16
+ PerpDepthBarsMethods,
17
+ PerpDepthBarsProps,
18
+ PerpSideRatioMethods,
19
+ PerpSideRatioProps,
20
+ };
21
+
22
+ export const PerpDepthBarsView = getHostComponent<
23
+ PerpDepthBarsProps,
24
+ PerpDepthBarsMethods
25
+ >('PerpDepthBars', () => PerpDepthBarsConfig);
26
+
27
+ export const PerpSideRatioView = getHostComponent<
28
+ PerpSideRatioProps,
29
+ PerpSideRatioMethods
30
+ >('PerpSideRatio', () => PerpSideRatioConfig);