@onekeyfe/react-native-segment-slider 3.0.85 → 3.0.86-alpha.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.
- package/README.md +13 -3
- package/android/src/main/java/com/margelo/nitro/segmentslider/HybridSegmentSlider.kt +31 -7
- package/ios/HybridSegmentSlider.swift +34 -8
- package/lib/nitrogen/generated/android/c++/JFunc_void.hpp +3 -3
- package/lib/nitrogen/generated/android/c++/JFunc_void_double.hpp +3 -3
- package/lib/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.cpp +71 -63
- package/lib/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.hpp +24 -20
- package/lib/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.cpp +81 -77
- package/lib/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.hpp +4 -4
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void.kt +1 -1
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void_double.kt +1 -1
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/HybridSegmentSliderSpec.kt +25 -17
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/segmentsliderOnLoad.kt +1 -1
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderManager.kt +10 -40
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderStateUpdater.kt +1 -1
- package/lib/nitrogen/generated/android/segmentslider+autolinking.cmake +1 -1
- package/lib/nitrogen/generated/android/segmentslider+autolinking.gradle +1 -1
- package/lib/nitrogen/generated/android/segmentsliderOnLoad.cpp +20 -30
- package/lib/nitrogen/generated/android/segmentsliderOnLoad.hpp +5 -14
- package/lib/nitrogen/generated/ios/SegmentSlider+autolinking.rb +2 -2
- package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.cpp +1 -1
- package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.hpp +3 -3
- package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Umbrella.hpp +1 -1
- package/lib/nitrogen/generated/ios/SegmentSliderAutolinking.mm +1 -1
- package/lib/nitrogen/generated/ios/SegmentSliderAutolinking.swift +8 -9
- package/lib/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.cpp +1 -1
- package/lib/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.hpp +7 -7
- package/lib/nitrogen/generated/ios/c++/views/HybridSegmentSliderComponent.mm +6 -27
- package/lib/nitrogen/generated/ios/swift/Func_void.swift +2 -1
- package/lib/nitrogen/generated/ios/swift/Func_void_double.swift +2 -1
- package/lib/nitrogen/generated/ios/swift/HybridSegmentSliderSpec.swift +5 -3
- package/lib/nitrogen/generated/ios/swift/HybridSegmentSliderSpec_cxx.swift +13 -18
- package/lib/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.cpp +3 -1
- package/lib/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.hpp +3 -1
- package/lib/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.cpp +46 -10
- package/lib/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.hpp +7 -9
- package/lib/nitrogen/generated/shared/json/SegmentSliderConfig.json +1 -0
- package/lib/typescript/src/SegmentSlider.nitro.d.ts +8 -0
- package/lib/typescript/src/SegmentSlider.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JFunc_void.hpp +3 -3
- package/nitrogen/generated/android/c++/JFunc_void_double.hpp +3 -3
- package/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.cpp +71 -63
- package/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.hpp +24 -20
- package/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.cpp +81 -77
- package/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.hpp +4 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void_double.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/HybridSegmentSliderSpec.kt +25 -17
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/segmentsliderOnLoad.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderManager.kt +10 -40
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderStateUpdater.kt +1 -1
- package/nitrogen/generated/android/segmentslider+autolinking.cmake +1 -1
- package/nitrogen/generated/android/segmentslider+autolinking.gradle +1 -1
- package/nitrogen/generated/android/segmentsliderOnLoad.cpp +20 -30
- package/nitrogen/generated/android/segmentsliderOnLoad.hpp +5 -14
- package/nitrogen/generated/ios/SegmentSlider+autolinking.rb +2 -2
- package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.cpp +1 -1
- package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.hpp +3 -3
- package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Umbrella.hpp +1 -1
- package/nitrogen/generated/ios/SegmentSliderAutolinking.mm +1 -1
- package/nitrogen/generated/ios/SegmentSliderAutolinking.swift +8 -9
- package/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.cpp +1 -1
- package/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.hpp +7 -7
- package/nitrogen/generated/ios/c++/views/HybridSegmentSliderComponent.mm +6 -27
- package/nitrogen/generated/ios/swift/Func_void.swift +2 -1
- package/nitrogen/generated/ios/swift/Func_void_double.swift +2 -1
- package/nitrogen/generated/ios/swift/HybridSegmentSliderSpec.swift +5 -3
- package/nitrogen/generated/ios/swift/HybridSegmentSliderSpec_cxx.swift +13 -18
- package/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.cpp +3 -1
- package/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.hpp +3 -1
- package/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.cpp +46 -10
- package/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.hpp +7 -9
- package/nitrogen/generated/shared/json/SegmentSliderConfig.json +1 -0
- package/package.json +4 -4
- package/src/SegmentSlider.nitro.ts +12 -1
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
/// HybridSegmentSliderSpec_cxx.swift
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
|
+
import Foundation
|
|
8
9
|
import NitroModules
|
|
9
10
|
|
|
10
11
|
/**
|
|
@@ -95,14 +96,6 @@ open class HybridSegmentSliderSpec_cxx {
|
|
|
95
96
|
return MemoryHelper.getSizeOf(self.__implementation) + self.__implementation.memorySize
|
|
96
97
|
}
|
|
97
98
|
|
|
98
|
-
/**
|
|
99
|
-
* Compares this object with the given [other] object for reference equality.
|
|
100
|
-
*/
|
|
101
|
-
@inline(__always)
|
|
102
|
-
public func equals(other: HybridSegmentSliderSpec_cxx) -> Bool {
|
|
103
|
-
return self.__implementation === other.__implementation
|
|
104
|
-
}
|
|
105
|
-
|
|
106
99
|
/**
|
|
107
100
|
* Call dispose() on the Swift class.
|
|
108
101
|
* This _may_ be called manually from JS.
|
|
@@ -220,6 +213,17 @@ open class HybridSegmentSliderSpec_cxx {
|
|
|
220
213
|
}
|
|
221
214
|
}
|
|
222
215
|
|
|
216
|
+
public final var alignSegmentMarksToIntegerValues: Bool {
|
|
217
|
+
@inline(__always)
|
|
218
|
+
get {
|
|
219
|
+
return self.__implementation.alignSegmentMarksToIntegerValues
|
|
220
|
+
}
|
|
221
|
+
@inline(__always)
|
|
222
|
+
set {
|
|
223
|
+
self.__implementation.alignSegmentMarksToIntegerValues = newValue
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
223
227
|
public final var fillColor: std.string {
|
|
224
228
|
@inline(__always)
|
|
225
229
|
get {
|
|
@@ -438,13 +442,4 @@ open class HybridSegmentSliderSpec_cxx {
|
|
|
438
442
|
public final func afterUpdate() {
|
|
439
443
|
__implementation.afterUpdate()
|
|
440
444
|
}
|
|
441
|
-
|
|
442
|
-
public final func maybePrepareForRecycle() {
|
|
443
|
-
guard let recyclable = __implementation as? any RecyclableView else { return }
|
|
444
|
-
recyclable.prepareForRecycle()
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
public final func onDropView() {
|
|
448
|
-
__implementation.onDropView()
|
|
449
|
-
}
|
|
450
445
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridSegmentSliderSpec.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "HybridSegmentSliderSpec.hpp"
|
|
@@ -32,6 +32,8 @@ namespace margelo::nitro::segmentslider {
|
|
|
32
32
|
prototype.registerHybridSetter("centerOrigin", &HybridSegmentSliderSpec::setCenterOrigin);
|
|
33
33
|
prototype.registerHybridGetter("snapTapToSegment", &HybridSegmentSliderSpec::getSnapTapToSegment);
|
|
34
34
|
prototype.registerHybridSetter("snapTapToSegment", &HybridSegmentSliderSpec::setSnapTapToSegment);
|
|
35
|
+
prototype.registerHybridGetter("alignSegmentMarksToIntegerValues", &HybridSegmentSliderSpec::getAlignSegmentMarksToIntegerValues);
|
|
36
|
+
prototype.registerHybridSetter("alignSegmentMarksToIntegerValues", &HybridSegmentSliderSpec::setAlignSegmentMarksToIntegerValues);
|
|
35
37
|
prototype.registerHybridGetter("fillColor", &HybridSegmentSliderSpec::getFillColor);
|
|
36
38
|
prototype.registerHybridSetter("fillColor", &HybridSegmentSliderSpec::setFillColor);
|
|
37
39
|
prototype.registerHybridGetter("trackColor", &HybridSegmentSliderSpec::getTrackColor);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridSegmentSliderSpec.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
@@ -64,6 +64,8 @@ namespace margelo::nitro::segmentslider {
|
|
|
64
64
|
virtual void setCenterOrigin(bool centerOrigin) = 0;
|
|
65
65
|
virtual bool getSnapTapToSegment() = 0;
|
|
66
66
|
virtual void setSnapTapToSegment(bool snapTapToSegment) = 0;
|
|
67
|
+
virtual bool getAlignSegmentMarksToIntegerValues() = 0;
|
|
68
|
+
virtual void setAlignSegmentMarksToIntegerValues(bool alignSegmentMarksToIntegerValues) = 0;
|
|
67
69
|
virtual std::string getFillColor() = 0;
|
|
68
70
|
virtual void setFillColor(const std::string& fillColor) = 0;
|
|
69
71
|
virtual std::string getTrackColor() = 0;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridSegmentSliderComponent.cpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include "HybridSegmentSliderComponent.hpp"
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
#include <utility>
|
|
13
13
|
#include <NitroModules/NitroDefines.hpp>
|
|
14
14
|
#include <NitroModules/JSIConverter.hpp>
|
|
15
|
-
#include <NitroModules/PropNameIDCache.hpp>
|
|
16
15
|
#include <react/renderer/core/RawValue.h>
|
|
17
16
|
#include <react/renderer/core/ShadowNode.h>
|
|
18
17
|
#include <react/renderer/core/ComponentDescriptor.h>
|
|
@@ -116,6 +115,16 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
116
115
|
throw std::runtime_error(std::string("SegmentSlider.snapTapToSegment: ") + exc.what());
|
|
117
116
|
}
|
|
118
117
|
}()),
|
|
118
|
+
alignSegmentMarksToIntegerValues([&]() -> CachedProp<bool> {
|
|
119
|
+
try {
|
|
120
|
+
const react::RawValue* rawValue = rawProps.at("alignSegmentMarksToIntegerValues", nullptr, nullptr);
|
|
121
|
+
if (rawValue == nullptr) return sourceProps.alignSegmentMarksToIntegerValues;
|
|
122
|
+
const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
|
|
123
|
+
return CachedProp<bool>::fromRawValue(*runtime, value, sourceProps.alignSegmentMarksToIntegerValues);
|
|
124
|
+
} catch (const std::exception& exc) {
|
|
125
|
+
throw std::runtime_error(std::string("SegmentSlider.alignSegmentMarksToIntegerValues: ") + exc.what());
|
|
126
|
+
}
|
|
127
|
+
}()),
|
|
119
128
|
fillColor([&]() -> CachedProp<std::string> {
|
|
120
129
|
try {
|
|
121
130
|
const react::RawValue* rawValue = rawProps.at("fillColor", nullptr, nullptr);
|
|
@@ -211,7 +220,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
211
220
|
const react::RawValue* rawValue = rawProps.at("onChange", nullptr, nullptr);
|
|
212
221
|
if (rawValue == nullptr) return sourceProps.onChange;
|
|
213
222
|
const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
|
|
214
|
-
return CachedProp<std::optional<std::function<void(double /* value */)>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime,
|
|
223
|
+
return CachedProp<std::optional<std::function<void(double /* value */)>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime, "f"), sourceProps.onChange);
|
|
215
224
|
} catch (const std::exception& exc) {
|
|
216
225
|
throw std::runtime_error(std::string("SegmentSlider.onChange: ") + exc.what());
|
|
217
226
|
}
|
|
@@ -221,7 +230,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
221
230
|
const react::RawValue* rawValue = rawProps.at("onSlideStart", nullptr, nullptr);
|
|
222
231
|
if (rawValue == nullptr) return sourceProps.onSlideStart;
|
|
223
232
|
const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
|
|
224
|
-
return CachedProp<std::optional<std::function<void()>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime,
|
|
233
|
+
return CachedProp<std::optional<std::function<void()>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime, "f"), sourceProps.onSlideStart);
|
|
225
234
|
} catch (const std::exception& exc) {
|
|
226
235
|
throw std::runtime_error(std::string("SegmentSlider.onSlideStart: ") + exc.what());
|
|
227
236
|
}
|
|
@@ -231,7 +240,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
231
240
|
const react::RawValue* rawValue = rawProps.at("onSlideComplete", nullptr, nullptr);
|
|
232
241
|
if (rawValue == nullptr) return sourceProps.onSlideComplete;
|
|
233
242
|
const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
|
|
234
|
-
return CachedProp<std::optional<std::function<void()>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime,
|
|
243
|
+
return CachedProp<std::optional<std::function<void()>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime, "f"), sourceProps.onSlideComplete);
|
|
235
244
|
} catch (const std::exception& exc) {
|
|
236
245
|
throw std::runtime_error(std::string("SegmentSlider.onSlideComplete: ") + exc.what());
|
|
237
246
|
}
|
|
@@ -241,12 +250,38 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
241
250
|
const react::RawValue* rawValue = rawProps.at("hybridRef", nullptr, nullptr);
|
|
242
251
|
if (rawValue == nullptr) return sourceProps.hybridRef;
|
|
243
252
|
const auto& [runtime, value] = (std::pair<jsi::Runtime*, jsi::Value>)*rawValue;
|
|
244
|
-
return CachedProp<std::optional<std::function<void(const std::shared_ptr<HybridSegmentSliderSpec>& /* ref */)>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime,
|
|
253
|
+
return CachedProp<std::optional<std::function<void(const std::shared_ptr<HybridSegmentSliderSpec>& /* ref */)>>>::fromRawValue(*runtime, value.asObject(*runtime).getProperty(*runtime, "f"), sourceProps.hybridRef);
|
|
245
254
|
} catch (const std::exception& exc) {
|
|
246
255
|
throw std::runtime_error(std::string("SegmentSlider.hybridRef: ") + exc.what());
|
|
247
256
|
}
|
|
248
257
|
}()) { }
|
|
249
258
|
|
|
259
|
+
HybridSegmentSliderProps::HybridSegmentSliderProps(const HybridSegmentSliderProps& other):
|
|
260
|
+
react::ViewProps(),
|
|
261
|
+
defaultValue(other.defaultValue),
|
|
262
|
+
min(other.min),
|
|
263
|
+
max(other.max),
|
|
264
|
+
segments(other.segments),
|
|
265
|
+
sliderHeight(other.sliderHeight),
|
|
266
|
+
disabled(other.disabled),
|
|
267
|
+
showBubble(other.showBubble),
|
|
268
|
+
centerOrigin(other.centerOrigin),
|
|
269
|
+
snapTapToSegment(other.snapTapToSegment),
|
|
270
|
+
alignSegmentMarksToIntegerValues(other.alignSegmentMarksToIntegerValues),
|
|
271
|
+
fillColor(other.fillColor),
|
|
272
|
+
trackColor(other.trackColor),
|
|
273
|
+
thumbColor(other.thumbColor),
|
|
274
|
+
thumbBorderColor(other.thumbBorderColor),
|
|
275
|
+
markActiveColor(other.markActiveColor),
|
|
276
|
+
markInactiveColor(other.markInactiveColor),
|
|
277
|
+
markBorderColor(other.markBorderColor),
|
|
278
|
+
bubbleColor(other.bubbleColor),
|
|
279
|
+
bubbleTextColor(other.bubbleTextColor),
|
|
280
|
+
onChange(other.onChange),
|
|
281
|
+
onSlideStart(other.onSlideStart),
|
|
282
|
+
onSlideComplete(other.onSlideComplete),
|
|
283
|
+
hybridRef(other.hybridRef) { }
|
|
284
|
+
|
|
250
285
|
bool HybridSegmentSliderProps::filterObjectKeys(const std::string& propName) {
|
|
251
286
|
switch (hashString(propName)) {
|
|
252
287
|
case hashString("defaultValue"): return true;
|
|
@@ -258,6 +293,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
258
293
|
case hashString("showBubble"): return true;
|
|
259
294
|
case hashString("centerOrigin"): return true;
|
|
260
295
|
case hashString("snapTapToSegment"): return true;
|
|
296
|
+
case hashString("alignSegmentMarksToIntegerValues"): return true;
|
|
261
297
|
case hashString("fillColor"): return true;
|
|
262
298
|
case hashString("trackColor"): return true;
|
|
263
299
|
case hashString("thumbColor"): return true;
|
|
@@ -292,10 +328,10 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
292
328
|
void HybridSegmentSliderComponentDescriptor::adopt(react::ShadowNode& shadowNode) const {
|
|
293
329
|
// This is called immediately after `ShadowNode` is created, cloned or in progress.
|
|
294
330
|
// On Android, we need to wrap props in our state, which gets routed through Java and later unwrapped in JNI/C++.
|
|
295
|
-
auto& concreteShadowNode =
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
331
|
+
auto& concreteShadowNode = dynamic_cast<HybridSegmentSliderShadowNode&>(shadowNode);
|
|
332
|
+
const HybridSegmentSliderProps& props = concreteShadowNode.getConcreteProps();
|
|
333
|
+
HybridSegmentSliderState state;
|
|
334
|
+
state.setProps(props);
|
|
299
335
|
concreteShadowNode.setStateData(std::move(state));
|
|
300
336
|
}
|
|
301
337
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/// HybridSegmentSliderComponent.hpp
|
|
3
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
4
|
/// https://github.com/mrousavy/nitro
|
|
5
|
-
/// Copyright © Marc Rousavy @ Margelo
|
|
5
|
+
/// Copyright © 2026 Marc Rousavy @ Margelo
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
@@ -37,6 +37,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
37
37
|
class HybridSegmentSliderProps final: public react::ViewProps {
|
|
38
38
|
public:
|
|
39
39
|
HybridSegmentSliderProps() = default;
|
|
40
|
+
HybridSegmentSliderProps(const HybridSegmentSliderProps&);
|
|
40
41
|
HybridSegmentSliderProps(const react::PropsParserContext& context,
|
|
41
42
|
const HybridSegmentSliderProps& sourceProps,
|
|
42
43
|
const react::RawProps& rawProps);
|
|
@@ -51,6 +52,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
51
52
|
CachedProp<bool> showBubble;
|
|
52
53
|
CachedProp<bool> centerOrigin;
|
|
53
54
|
CachedProp<bool> snapTapToSegment;
|
|
55
|
+
CachedProp<bool> alignSegmentMarksToIntegerValues;
|
|
54
56
|
CachedProp<std::string> fillColor;
|
|
55
57
|
CachedProp<std::string> trackColor;
|
|
56
58
|
CachedProp<std::string> thumbColor;
|
|
@@ -75,14 +77,10 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
75
77
|
class HybridSegmentSliderState final {
|
|
76
78
|
public:
|
|
77
79
|
HybridSegmentSliderState() = default;
|
|
78
|
-
explicit HybridSegmentSliderState(const std::shared_ptr<HybridSegmentSliderProps>& props):
|
|
79
|
-
_props(props) {}
|
|
80
80
|
|
|
81
81
|
public:
|
|
82
|
-
|
|
83
|
-
const std::
|
|
84
|
-
return _props;
|
|
85
|
-
}
|
|
82
|
+
void setProps(const HybridSegmentSliderProps& props) { _props.emplace(props); }
|
|
83
|
+
const std::optional<HybridSegmentSliderProps>& getProps() const { return _props; }
|
|
86
84
|
|
|
87
85
|
public:
|
|
88
86
|
#ifdef ANDROID
|
|
@@ -96,7 +94,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
96
94
|
#endif
|
|
97
95
|
|
|
98
96
|
private:
|
|
99
|
-
std::
|
|
97
|
+
std::optional<HybridSegmentSliderProps> _props;
|
|
100
98
|
};
|
|
101
99
|
|
|
102
100
|
/**
|
|
@@ -112,7 +110,7 @@ namespace margelo::nitro::segmentslider::views {
|
|
|
112
110
|
*/
|
|
113
111
|
class HybridSegmentSliderComponentDescriptor final: public react::ConcreteComponentDescriptor<HybridSegmentSliderShadowNode> {
|
|
114
112
|
public:
|
|
115
|
-
|
|
113
|
+
HybridSegmentSliderComponentDescriptor(const react::ComponentDescriptorParameters& parameters);
|
|
116
114
|
|
|
117
115
|
public:
|
|
118
116
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/react-native-segment-slider",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.86-alpha.0",
|
|
4
4
|
"description": "react-native-segment-slider",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -77,12 +77,12 @@
|
|
|
77
77
|
"eslint-plugin-prettier": "^5.5.4",
|
|
78
78
|
"jest": "^29.7.0",
|
|
79
79
|
"lefthook": "^2.0.3",
|
|
80
|
-
"nitrogen": "0.
|
|
80
|
+
"nitrogen": "0.31.10",
|
|
81
81
|
"prettier": "^2.8.8",
|
|
82
82
|
"react": "19.2.0",
|
|
83
83
|
"react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
|
|
84
84
|
"react-native-builder-bob": "^0.40.13",
|
|
85
|
-
"react-native-nitro-modules": "0.
|
|
85
|
+
"react-native-nitro-modules": "0.33.2",
|
|
86
86
|
"release-it": "^19.0.4",
|
|
87
87
|
"turbo": "^2.5.6",
|
|
88
88
|
"typescript": "^5.9.2"
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"peerDependencies": {
|
|
91
91
|
"react": "*",
|
|
92
92
|
"react-native": "*",
|
|
93
|
-
"react-native-nitro-modules": "0.
|
|
93
|
+
"react-native-nitro-modules": "0.33.2"
|
|
94
94
|
},
|
|
95
95
|
"packageManager": "yarn@4.11.0",
|
|
96
96
|
"react-native-builder-bob": {
|
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
* pct = (clamp(value,min,max) - min) / (max - min)
|
|
20
20
|
* thumb x = 8 + pct * W'
|
|
21
21
|
* mark i x = 8 + (i / segments) * W' (i in 0..segments)
|
|
22
|
+
* aligned mark i uses pct(roundHalfToEven(min + i * step))
|
|
22
23
|
*
|
|
23
24
|
* Colors are resolved from the Tamagui theme in the JS wrapper and passed in as
|
|
24
25
|
* hex / rgba() strings so the native side never depends on the theme system.
|
|
@@ -55,6 +56,13 @@ export interface SegmentSliderProps extends HybridViewProps {
|
|
|
55
56
|
* callers keep the free-tap behavior.
|
|
56
57
|
*/
|
|
57
58
|
snapTapToSegment: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* When true, segment marks use the same integer values emitted by the slider.
|
|
61
|
+
* This keeps a rounded thumb centered on marks whose evenly divided values
|
|
62
|
+
* would otherwise be fractional. Half steps round to even so the result is
|
|
63
|
+
* consistent with the web slider. Default false.
|
|
64
|
+
*/
|
|
65
|
+
alignSegmentMarksToIntegerValues: boolean;
|
|
58
66
|
|
|
59
67
|
// --- Resolved theme colors (hex `#rgb`/`#rrggbb`/`#rrggbbaa` or rgba()) ---
|
|
60
68
|
/** Active fill bar color (Tamagui `bgPrimary`). */
|
|
@@ -95,4 +103,7 @@ export interface SegmentSliderMethods extends HybridViewMethods {
|
|
|
95
103
|
setValue(value: number): void;
|
|
96
104
|
}
|
|
97
105
|
|
|
98
|
-
export type SegmentSlider = HybridView<
|
|
106
|
+
export type SegmentSlider = HybridView<
|
|
107
|
+
SegmentSliderProps,
|
|
108
|
+
SegmentSliderMethods
|
|
109
|
+
>;
|