@onekeyfe/react-native-segment-slider 3.0.86-alpha.0 → 3.0.86

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 (75) hide show
  1. package/README.md +3 -13
  2. package/android/src/main/java/com/margelo/nitro/segmentslider/HybridSegmentSlider.kt +7 -31
  3. package/ios/HybridSegmentSlider.swift +8 -34
  4. package/lib/nitrogen/generated/android/c++/JFunc_void.hpp +3 -3
  5. package/lib/nitrogen/generated/android/c++/JFunc_void_double.hpp +3 -3
  6. package/lib/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.cpp +63 -71
  7. package/lib/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.hpp +20 -24
  8. package/lib/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.cpp +77 -81
  9. package/lib/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.hpp +4 -4
  10. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void.kt +1 -1
  11. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void_double.kt +1 -1
  12. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/HybridSegmentSliderSpec.kt +17 -25
  13. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/segmentsliderOnLoad.kt +1 -1
  14. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderManager.kt +40 -10
  15. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderStateUpdater.kt +1 -1
  16. package/lib/nitrogen/generated/android/segmentslider+autolinking.cmake +1 -1
  17. package/lib/nitrogen/generated/android/segmentslider+autolinking.gradle +1 -1
  18. package/lib/nitrogen/generated/android/segmentsliderOnLoad.cpp +30 -20
  19. package/lib/nitrogen/generated/android/segmentsliderOnLoad.hpp +14 -5
  20. package/lib/nitrogen/generated/ios/SegmentSlider+autolinking.rb +2 -2
  21. package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.cpp +1 -1
  22. package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.hpp +3 -3
  23. package/lib/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Umbrella.hpp +1 -1
  24. package/lib/nitrogen/generated/ios/SegmentSliderAutolinking.mm +1 -1
  25. package/lib/nitrogen/generated/ios/SegmentSliderAutolinking.swift +9 -8
  26. package/lib/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.cpp +1 -1
  27. package/lib/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.hpp +7 -7
  28. package/lib/nitrogen/generated/ios/c++/views/HybridSegmentSliderComponent.mm +27 -6
  29. package/lib/nitrogen/generated/ios/swift/Func_void.swift +1 -2
  30. package/lib/nitrogen/generated/ios/swift/Func_void_double.swift +1 -2
  31. package/lib/nitrogen/generated/ios/swift/HybridSegmentSliderSpec.swift +3 -5
  32. package/lib/nitrogen/generated/ios/swift/HybridSegmentSliderSpec_cxx.swift +18 -13
  33. package/lib/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.cpp +1 -3
  34. package/lib/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.hpp +1 -3
  35. package/lib/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.cpp +10 -46
  36. package/lib/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.hpp +9 -7
  37. package/lib/nitrogen/generated/shared/json/SegmentSliderConfig.json +0 -1
  38. package/lib/typescript/src/SegmentSlider.nitro.d.ts +0 -8
  39. package/lib/typescript/src/SegmentSlider.nitro.d.ts.map +1 -1
  40. package/nitrogen/generated/android/c++/JFunc_void.hpp +3 -3
  41. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +3 -3
  42. package/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.cpp +63 -71
  43. package/nitrogen/generated/android/c++/JHybridSegmentSliderSpec.hpp +20 -24
  44. package/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.cpp +77 -81
  45. package/nitrogen/generated/android/c++/views/JHybridSegmentSliderStateUpdater.hpp +4 -4
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void.kt +1 -1
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/Func_void_double.kt +1 -1
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/HybridSegmentSliderSpec.kt +17 -25
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/segmentsliderOnLoad.kt +1 -1
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderManager.kt +40 -10
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/segmentslider/views/HybridSegmentSliderStateUpdater.kt +1 -1
  52. package/nitrogen/generated/android/segmentslider+autolinking.cmake +1 -1
  53. package/nitrogen/generated/android/segmentslider+autolinking.gradle +1 -1
  54. package/nitrogen/generated/android/segmentsliderOnLoad.cpp +30 -20
  55. package/nitrogen/generated/android/segmentsliderOnLoad.hpp +14 -5
  56. package/nitrogen/generated/ios/SegmentSlider+autolinking.rb +2 -2
  57. package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.cpp +1 -1
  58. package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Bridge.hpp +3 -3
  59. package/nitrogen/generated/ios/SegmentSlider-Swift-Cxx-Umbrella.hpp +1 -1
  60. package/nitrogen/generated/ios/SegmentSliderAutolinking.mm +1 -1
  61. package/nitrogen/generated/ios/SegmentSliderAutolinking.swift +9 -8
  62. package/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.cpp +1 -1
  63. package/nitrogen/generated/ios/c++/HybridSegmentSliderSpecSwift.hpp +7 -7
  64. package/nitrogen/generated/ios/c++/views/HybridSegmentSliderComponent.mm +27 -6
  65. package/nitrogen/generated/ios/swift/Func_void.swift +1 -2
  66. package/nitrogen/generated/ios/swift/Func_void_double.swift +1 -2
  67. package/nitrogen/generated/ios/swift/HybridSegmentSliderSpec.swift +3 -5
  68. package/nitrogen/generated/ios/swift/HybridSegmentSliderSpec_cxx.swift +18 -13
  69. package/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.cpp +1 -3
  70. package/nitrogen/generated/shared/c++/HybridSegmentSliderSpec.hpp +1 -3
  71. package/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.cpp +10 -46
  72. package/nitrogen/generated/shared/c++/views/HybridSegmentSliderComponent.hpp +9 -7
  73. package/nitrogen/generated/shared/json/SegmentSliderConfig.json +0 -1
  74. package/package.json +4 -4
  75. package/src/SegmentSlider.nitro.ts +1 -12
package/README.md CHANGED
@@ -15,12 +15,6 @@ once on mount), read live changes through `onChange`, and set the value
15
15
  imperatively via the `setValue` method on the hybrid ref. This keeps reset/programmatic
16
16
  updates off the Fabric prop-commit path and avoids any controlled-value-vs-drag conflict.
17
17
 
18
- Set `alignSegmentMarksToIntegerValues` when an evenly divided segment lands on
19
- a fractional value but the slider emits integers. Marks, tap snapping, hover
20
- halos, and active states then share the same half-to-even integer values. For
21
- example, `min={10}`, `max={100}`, and `segments={4}` use
22
- `10 / 32 / 55 / 78 / 100`.
23
-
24
18
  ```tsx
25
19
  import { useMemo, useRef } from 'react';
26
20
  import {
@@ -36,11 +30,8 @@ type ISegmentSliderRef = HybridView<SegmentSliderProps, SegmentSliderMethods>;
36
30
 
37
31
  const sliderRef = useRef<ISegmentSliderRef | null>(null);
38
32
  const hybridRef = useMemo(
39
- () =>
40
- callback((node: ISegmentSliderRef) => {
41
- sliderRef.current = node;
42
- }),
43
- []
33
+ () => callback((node: ISegmentSliderRef) => { sliderRef.current = node; }),
34
+ [],
44
35
  );
45
36
 
46
37
  // Programmatically move the thumb (does NOT fire onChange):
@@ -58,7 +49,6 @@ const hybridRef = useMemo(
58
49
  showBubble={true}
59
50
  centerOrigin={false}
60
51
  snapTapToSegment={true}
61
- alignSegmentMarksToIntegerValues={false}
62
52
  fillColor="#000000df"
63
53
  trackColor="#0000001f"
64
54
  thumbColor="#ffffff"
@@ -69,7 +59,7 @@ const hybridRef = useMemo(
69
59
  bubbleColor="#000000df"
70
60
  bubbleTextColor="#ffffff"
71
61
  onChange={(nextValue) => console.log(nextValue)}
72
- />;
62
+ />
73
63
  ```
74
64
 
75
65
  ## Contributing
@@ -195,10 +195,6 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
195
195
  get() = field
196
196
  set(v) { field = v }
197
197
 
198
- override var alignSegmentMarksToIntegerValues: Boolean = false
199
- get() = field
200
- set(v) { field = v; invalidateIfAlive() }
201
-
202
198
  override var fillColor: String = ""
203
199
  get() = field
204
200
  set(v) { field = v; cFill = parse(v); fillPaint.color = cFill; invalidateIfAlive() }
@@ -263,29 +259,6 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
263
259
  private val rangeSafe: Double get() = (max - min).let { if (it == 0.0) 1.0 else it }
264
260
  private val markCount: Int get() = if (segments >= 1) segments.toInt() + 1 else 0
265
261
 
266
- private fun segmentValue(index: Int): Double {
267
- if (markCount <= 1) return min
268
- val fraction = index.toDouble() / (markCount - 1)
269
- val value = min + fraction * (max - min)
270
- return if (alignSegmentMarksToIntegerValues) Math.rint(value) else value
271
- }
272
-
273
- private fun markFraction(index: Int): Float = valueToFrac(segmentValue(index))
274
-
275
- private fun nearestMarkIndex(value: Double): Int {
276
- val valueFraction = valueToFrac(value)
277
- var nearestIndex = 0
278
- var nearestDistance = Float.POSITIVE_INFINITY
279
- for (index in 0 until markCount) {
280
- val distance = Math.abs(valueFraction - markFraction(index))
281
- if (distance <= nearestDistance) {
282
- nearestDistance = distance
283
- nearestIndex = index
284
- }
285
- }
286
- return nearestIndex
287
- }
288
-
289
262
  /** True when tap-snapping should defer the value commit: enabled with marks to snap to. */
290
263
  private val snapTapsActive: Boolean get() = snapTapToSegment && markCount > 1
291
264
 
@@ -304,7 +277,10 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
304
277
 
305
278
  /** Snaps a value to the value of the nearest segment mark. Caller guarantees `markCount > 1`. */
306
279
  private fun snapValueToNearestMark(v: Double): Double {
307
- return segmentValue(nearestMarkIndex(v))
280
+ val frac = valueToFrac(v).toDouble()
281
+ val idx = Math.round(frac * (markCount - 1)).toDouble()
282
+ val snappedFrac = idx / (markCount - 1)
283
+ return min + snappedFrac * (max - min)
308
284
  }
309
285
 
310
286
  /** Hard re-sync: snap the thumb to [v], overriding any in-flight drag. */
@@ -345,7 +321,7 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
345
321
  var best = -1
346
322
  var bestDist = threshold
347
323
  for (i in 0 until markCount) {
348
- val mf = markFraction(i)
324
+ val mf = if (markCount > 1) i.toFloat() / (markCount - 1) else 0f
349
325
  val mx = insetPx + mf * tw
350
326
  val d = Math.abs(thumbX - mx)
351
327
  if (d <= bestDist) { bestDist = d; best = i }
@@ -411,7 +387,7 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
411
387
  // Node halo (drag-time highlight) — drawn under the marks so the node dot
412
388
  // stays crisp on top. Translucent markActive color (25% alpha).
413
389
  if (isDragging && hoverMarkIndex in 0 until markCount) {
414
- val mf = markFraction(hoverMarkIndex)
390
+ val mf = if (markCount > 1) hoverMarkIndex.toFloat() / (markCount - 1) else 0f
415
391
  val hx = insetPx + mf * tw
416
392
  markHaloPaint.color = (cMarkActive and 0x00FFFFFF) or (0x3F shl 24)
417
393
  canvas.drawCircle(hx, midY, markSizePx / 2f + haloRingPx, markHaloPaint)
@@ -421,7 +397,7 @@ class HybridSegmentSlider(val context: ThemedReactContext) : HybridSegmentSlider
421
397
  val centerFrac = valueToFrac(0.0)
422
398
  val markR = markSizePx / 2f
423
399
  for (i in 0 until markCount) {
424
- val markFrac = markFraction(i)
400
+ val markFrac = if (markCount > 1) i.toFloat() / (markCount - 1) else 0f
425
401
  val cx = insetPx + markFrac * tw
426
402
  val active = when {
427
403
  centerOrigin && currentValue == 0.0 -> false
@@ -86,8 +86,6 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
86
86
  var centerOrigin: Bool = false { didSet { scheduleLayout() } }
87
87
  // Gates tap snapping only; no visual change on its own, so no didSet.
88
88
  var snapTapToSegment: Bool = false
89
- // Keeps marks and integer-emitting thumbs on the same value-derived geometry.
90
- var alignSegmentMarksToIntegerValues: Bool = false { didSet { scheduleLayout() } }
91
89
 
92
90
  var fillColor: String = "" {
93
91
  didSet { cFill = parse(fillColor); fillLayer.backgroundColor = cFill; scheduleLayout() }
@@ -180,33 +178,6 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
180
178
  private var range: Double { let r = max - min; return r == 0 ? 1 : r }
181
179
  private var markCount: Int { segments >= 1 ? Int(segments) + 1 : 0 }
182
180
 
183
- private func segmentValue(at index: Int) -> Double {
184
- guard markCount > 1 else { return min }
185
- let fraction = Double(index) / Double(markCount - 1)
186
- let value = min + fraction * (max - min)
187
- return alignSegmentMarksToIntegerValues
188
- ? value.rounded(.toNearestOrEven)
189
- : value
190
- }
191
-
192
- private func markFraction(at index: Int) -> CGFloat {
193
- valueToFrac(segmentValue(at: index))
194
- }
195
-
196
- private func nearestMarkIndex(to value: Double) -> Int {
197
- let valueFraction = valueToFrac(value)
198
- var nearestIndex = 0
199
- var nearestDistance = CGFloat.infinity
200
- for index in 0..<markCount {
201
- let distance = abs(valueFraction - markFraction(at: index))
202
- if distance <= nearestDistance {
203
- nearestDistance = distance
204
- nearestIndex = index
205
- }
206
- }
207
- return nearestIndex
208
- }
209
-
210
181
  /// value -> fraction 0..1
211
182
  private func valueToFrac(_ v: Double) -> CGFloat {
212
183
  let clamped = Swift.max(min, Swift.min(max, v))
@@ -242,7 +213,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
242
213
  // Marks sit on the track line, centred vertically on it.
243
214
  for i in 0..<markLayers.count {
244
215
  let layer = markLayers[i]
245
- let frac = markFraction(at: i)
216
+ let frac = markCount > 1 ? CGFloat(i) / CGFloat(markCount - 1) : 0
246
217
  let cx = trackLeft + frac * trackWidth
247
218
  layer.bounds = CGRect(x: 0, y: 0, width: markSize, height: markSize)
248
219
  layer.position = CGPoint(x: cx, y: bounds.midY)
@@ -314,7 +285,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
314
285
  // Marks active states.
315
286
  let centerFrac = valueToFrac(0)
316
287
  for i in 0..<markLayers.count {
317
- let markFrac = markFraction(at: i)
288
+ let markFrac = markLayers.count > 1 ? CGFloat(i) / CGFloat(markLayers.count - 1) : 0
318
289
  var active: Bool
319
290
  if centerOrigin {
320
291
  if v == 0 {
@@ -368,7 +339,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
368
339
  var best = -1
369
340
  var bestDist = threshold
370
341
  for i in 0..<markCount {
371
- let frac = markFraction(at: i)
342
+ let frac = markCount > 1 ? CGFloat(i) / CGFloat(markCount - 1) : 0
372
343
  let mx = trackLeft + frac * trackWidth
373
344
  let d = abs(thumbX - mx)
374
345
  if d <= bestDist { bestDist = d; best = i }
@@ -388,7 +359,7 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
388
359
  CATransaction.begin()
389
360
  CATransaction.setDisableActions(true)
390
361
  if visible {
391
- let frac = markFraction(at: index)
362
+ let frac = markCount > 1 ? CGFloat(index) / CGFloat(markCount - 1) : 0
392
363
  let mx = trackLeft + frac * trackWidth
393
364
  haloLayer.position = CGPoint(x: mx, y: view.bounds.midY)
394
365
  haloLayer.backgroundColor = UIColor(cgColor: cMarkActive)
@@ -457,7 +428,10 @@ final class HybridSegmentSlider: HybridSegmentSliderSpec {
457
428
  /// Snaps a value to the value of the nearest segment mark. Caller guarantees
458
429
  /// `markCount > 1`.
459
430
  private func snapValueToNearestMark(_ v: Double) -> Double {
460
- segmentValue(at: nearestMarkIndex(to: v))
431
+ let frac = Double(valueToFrac(v))
432
+ let idx = (frac * Double(markCount - 1)).rounded()
433
+ let snappedFrac = idx / Double(markCount - 1)
434
+ return min + snappedFrac * (max - min)
461
435
  }
462
436
 
463
437
  /// Hard re-sync: snap the thumb to `v`, overriding any in-flight drag. An
@@ -2,7 +2,7 @@
2
2
  /// JFunc_void.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -23,7 +23,7 @@ namespace margelo::nitro::segmentslider {
23
23
  */
24
24
  struct JFunc_void: public jni::JavaClass<JFunc_void> {
25
25
  public:
26
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void;";
26
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void;";
27
27
 
28
28
  public:
29
29
  /**
@@ -59,7 +59,7 @@ namespace margelo::nitro::segmentslider {
59
59
  }
60
60
 
61
61
  public:
62
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_cxx;";
62
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_cxx;";
63
63
  static void registerNatives() {
64
64
  registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_cxx::invoke_cxx)});
65
65
  }
@@ -2,7 +2,7 @@
2
2
  /// JFunc_void_double.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -23,7 +23,7 @@ namespace margelo::nitro::segmentslider {
23
23
  */
24
24
  struct JFunc_void_double: public jni::JavaClass<JFunc_void_double> {
25
25
  public:
26
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_double;";
26
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_double;";
27
27
 
28
28
  public:
29
29
  /**
@@ -59,7 +59,7 @@ namespace margelo::nitro::segmentslider {
59
59
  }
60
60
 
61
61
  public:
62
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_double_cxx;";
62
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/segmentslider/Func_void_double_cxx;";
63
63
  static void registerNatives() {
64
64
  registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_double_cxx::invoke_cxx)});
65
65
  }
@@ -2,7 +2,7 @@
2
2
  /// JHybridSegmentSliderSpec.cpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #include "JHybridSegmentSliderSpec.hpp"
@@ -18,206 +18,198 @@
18
18
 
19
19
  namespace margelo::nitro::segmentslider {
20
20
 
21
- jni::local_ref<JHybridSegmentSliderSpec::jhybriddata> JHybridSegmentSliderSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
22
- return makeCxxInstance(jThis);
23
- }
24
-
25
- void JHybridSegmentSliderSpec::registerNatives() {
26
- registerHybrid({
27
- makeNativeMethod("initHybrid", JHybridSegmentSliderSpec::initHybrid),
28
- });
21
+ std::shared_ptr<JHybridSegmentSliderSpec> JHybridSegmentSliderSpec::JavaPart::getJHybridSegmentSliderSpec() {
22
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
23
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridSegmentSliderSpec>(hybridObject);
24
+ if (castHybridObject == nullptr) [[unlikely]] {
25
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridSegmentSliderSpec!");
26
+ }
27
+ return castHybridObject;
29
28
  }
30
29
 
31
- size_t JHybridSegmentSliderSpec::getExternalMemorySize() noexcept {
32
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
33
- return method(_javaPart);
30
+ jni::local_ref<JHybridSegmentSliderSpec::CxxPart::jhybriddata> JHybridSegmentSliderSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
31
+ return makeCxxInstance(jThis);
34
32
  }
35
33
 
36
- void JHybridSegmentSliderSpec::dispose() noexcept {
37
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
38
- method(_javaPart);
34
+ std::shared_ptr<JHybridObject> JHybridSegmentSliderSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
35
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridSegmentSliderSpec::JavaPart>(javaPart);
36
+ if (castJavaPart == nullptr) [[unlikely]] {
37
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridSegmentSliderSpec::JavaPart!");
38
+ }
39
+ return std::make_shared<JHybridSegmentSliderSpec>(castJavaPart);
39
40
  }
40
41
 
41
- std::string JHybridSegmentSliderSpec::toString() {
42
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
43
- auto javaString = method(_javaPart);
44
- return javaString->toStdString();
42
+ void JHybridSegmentSliderSpec::CxxPart::registerNatives() {
43
+ registerHybrid({
44
+ makeNativeMethod("initHybrid", JHybridSegmentSliderSpec::CxxPart::initHybrid),
45
+ });
45
46
  }
46
47
 
47
48
  // Properties
48
49
  double JHybridSegmentSliderSpec::getDefaultValue() {
49
- static const auto method = javaClassStatic()->getMethod<double()>("getDefaultValue");
50
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getDefaultValue");
50
51
  auto __result = method(_javaPart);
51
52
  return __result;
52
53
  }
53
54
  void JHybridSegmentSliderSpec::setDefaultValue(double defaultValue) {
54
- static const auto method = javaClassStatic()->getMethod<void(double /* defaultValue */)>("setDefaultValue");
55
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* defaultValue */)>("setDefaultValue");
55
56
  method(_javaPart, defaultValue);
56
57
  }
57
58
  double JHybridSegmentSliderSpec::getMin() {
58
- static const auto method = javaClassStatic()->getMethod<double()>("getMin");
59
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getMin");
59
60
  auto __result = method(_javaPart);
60
61
  return __result;
61
62
  }
62
63
  void JHybridSegmentSliderSpec::setMin(double min) {
63
- static const auto method = javaClassStatic()->getMethod<void(double /* min */)>("setMin");
64
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* min */)>("setMin");
64
65
  method(_javaPart, min);
65
66
  }
66
67
  double JHybridSegmentSliderSpec::getMax() {
67
- static const auto method = javaClassStatic()->getMethod<double()>("getMax");
68
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getMax");
68
69
  auto __result = method(_javaPart);
69
70
  return __result;
70
71
  }
71
72
  void JHybridSegmentSliderSpec::setMax(double max) {
72
- static const auto method = javaClassStatic()->getMethod<void(double /* max */)>("setMax");
73
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* max */)>("setMax");
73
74
  method(_javaPart, max);
74
75
  }
75
76
  double JHybridSegmentSliderSpec::getSegments() {
76
- static const auto method = javaClassStatic()->getMethod<double()>("getSegments");
77
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getSegments");
77
78
  auto __result = method(_javaPart);
78
79
  return __result;
79
80
  }
80
81
  void JHybridSegmentSliderSpec::setSegments(double segments) {
81
- static const auto method = javaClassStatic()->getMethod<void(double /* segments */)>("setSegments");
82
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* segments */)>("setSegments");
82
83
  method(_javaPart, segments);
83
84
  }
84
85
  double JHybridSegmentSliderSpec::getSliderHeight() {
85
- static const auto method = javaClassStatic()->getMethod<double()>("getSliderHeight");
86
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getSliderHeight");
86
87
  auto __result = method(_javaPart);
87
88
  return __result;
88
89
  }
89
90
  void JHybridSegmentSliderSpec::setSliderHeight(double sliderHeight) {
90
- static const auto method = javaClassStatic()->getMethod<void(double /* sliderHeight */)>("setSliderHeight");
91
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* sliderHeight */)>("setSliderHeight");
91
92
  method(_javaPart, sliderHeight);
92
93
  }
93
94
  bool JHybridSegmentSliderSpec::getDisabled() {
94
- static const auto method = javaClassStatic()->getMethod<jboolean()>("getDisabled");
95
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("getDisabled");
95
96
  auto __result = method(_javaPart);
96
97
  return static_cast<bool>(__result);
97
98
  }
98
99
  void JHybridSegmentSliderSpec::setDisabled(bool disabled) {
99
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* disabled */)>("setDisabled");
100
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* disabled */)>("setDisabled");
100
101
  method(_javaPart, disabled);
101
102
  }
102
103
  bool JHybridSegmentSliderSpec::getShowBubble() {
103
- static const auto method = javaClassStatic()->getMethod<jboolean()>("getShowBubble");
104
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("getShowBubble");
104
105
  auto __result = method(_javaPart);
105
106
  return static_cast<bool>(__result);
106
107
  }
107
108
  void JHybridSegmentSliderSpec::setShowBubble(bool showBubble) {
108
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* showBubble */)>("setShowBubble");
109
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* showBubble */)>("setShowBubble");
109
110
  method(_javaPart, showBubble);
110
111
  }
111
112
  bool JHybridSegmentSliderSpec::getCenterOrigin() {
112
- static const auto method = javaClassStatic()->getMethod<jboolean()>("getCenterOrigin");
113
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("getCenterOrigin");
113
114
  auto __result = method(_javaPart);
114
115
  return static_cast<bool>(__result);
115
116
  }
116
117
  void JHybridSegmentSliderSpec::setCenterOrigin(bool centerOrigin) {
117
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* centerOrigin */)>("setCenterOrigin");
118
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* centerOrigin */)>("setCenterOrigin");
118
119
  method(_javaPart, centerOrigin);
119
120
  }
120
121
  bool JHybridSegmentSliderSpec::getSnapTapToSegment() {
121
- static const auto method = javaClassStatic()->getMethod<jboolean()>("getSnapTapToSegment");
122
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("getSnapTapToSegment");
122
123
  auto __result = method(_javaPart);
123
124
  return static_cast<bool>(__result);
124
125
  }
125
126
  void JHybridSegmentSliderSpec::setSnapTapToSegment(bool snapTapToSegment) {
126
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* snapTapToSegment */)>("setSnapTapToSegment");
127
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* snapTapToSegment */)>("setSnapTapToSegment");
127
128
  method(_javaPart, snapTapToSegment);
128
129
  }
129
- bool JHybridSegmentSliderSpec::getAlignSegmentMarksToIntegerValues() {
130
- static const auto method = javaClassStatic()->getMethod<jboolean()>("getAlignSegmentMarksToIntegerValues");
131
- auto __result = method(_javaPart);
132
- return static_cast<bool>(__result);
133
- }
134
- void JHybridSegmentSliderSpec::setAlignSegmentMarksToIntegerValues(bool alignSegmentMarksToIntegerValues) {
135
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* alignSegmentMarksToIntegerValues */)>("setAlignSegmentMarksToIntegerValues");
136
- method(_javaPart, alignSegmentMarksToIntegerValues);
137
- }
138
130
  std::string JHybridSegmentSliderSpec::getFillColor() {
139
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getFillColor");
131
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getFillColor");
140
132
  auto __result = method(_javaPart);
141
133
  return __result->toStdString();
142
134
  }
143
135
  void JHybridSegmentSliderSpec::setFillColor(const std::string& fillColor) {
144
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* fillColor */)>("setFillColor");
136
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* fillColor */)>("setFillColor");
145
137
  method(_javaPart, jni::make_jstring(fillColor));
146
138
  }
147
139
  std::string JHybridSegmentSliderSpec::getTrackColor() {
148
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getTrackColor");
140
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getTrackColor");
149
141
  auto __result = method(_javaPart);
150
142
  return __result->toStdString();
151
143
  }
152
144
  void JHybridSegmentSliderSpec::setTrackColor(const std::string& trackColor) {
153
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* trackColor */)>("setTrackColor");
145
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* trackColor */)>("setTrackColor");
154
146
  method(_javaPart, jni::make_jstring(trackColor));
155
147
  }
156
148
  std::string JHybridSegmentSliderSpec::getThumbColor() {
157
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getThumbColor");
149
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getThumbColor");
158
150
  auto __result = method(_javaPart);
159
151
  return __result->toStdString();
160
152
  }
161
153
  void JHybridSegmentSliderSpec::setThumbColor(const std::string& thumbColor) {
162
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* thumbColor */)>("setThumbColor");
154
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* thumbColor */)>("setThumbColor");
163
155
  method(_javaPart, jni::make_jstring(thumbColor));
164
156
  }
165
157
  std::string JHybridSegmentSliderSpec::getThumbBorderColor() {
166
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getThumbBorderColor");
158
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getThumbBorderColor");
167
159
  auto __result = method(_javaPart);
168
160
  return __result->toStdString();
169
161
  }
170
162
  void JHybridSegmentSliderSpec::setThumbBorderColor(const std::string& thumbBorderColor) {
171
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* thumbBorderColor */)>("setThumbBorderColor");
163
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* thumbBorderColor */)>("setThumbBorderColor");
172
164
  method(_javaPart, jni::make_jstring(thumbBorderColor));
173
165
  }
174
166
  std::string JHybridSegmentSliderSpec::getMarkActiveColor() {
175
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkActiveColor");
167
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkActiveColor");
176
168
  auto __result = method(_javaPart);
177
169
  return __result->toStdString();
178
170
  }
179
171
  void JHybridSegmentSliderSpec::setMarkActiveColor(const std::string& markActiveColor) {
180
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markActiveColor */)>("setMarkActiveColor");
172
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markActiveColor */)>("setMarkActiveColor");
181
173
  method(_javaPart, jni::make_jstring(markActiveColor));
182
174
  }
183
175
  std::string JHybridSegmentSliderSpec::getMarkInactiveColor() {
184
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkInactiveColor");
176
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkInactiveColor");
185
177
  auto __result = method(_javaPart);
186
178
  return __result->toStdString();
187
179
  }
188
180
  void JHybridSegmentSliderSpec::setMarkInactiveColor(const std::string& markInactiveColor) {
189
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markInactiveColor */)>("setMarkInactiveColor");
181
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markInactiveColor */)>("setMarkInactiveColor");
190
182
  method(_javaPart, jni::make_jstring(markInactiveColor));
191
183
  }
192
184
  std::string JHybridSegmentSliderSpec::getMarkBorderColor() {
193
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkBorderColor");
185
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getMarkBorderColor");
194
186
  auto __result = method(_javaPart);
195
187
  return __result->toStdString();
196
188
  }
197
189
  void JHybridSegmentSliderSpec::setMarkBorderColor(const std::string& markBorderColor) {
198
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markBorderColor */)>("setMarkBorderColor");
190
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* markBorderColor */)>("setMarkBorderColor");
199
191
  method(_javaPart, jni::make_jstring(markBorderColor));
200
192
  }
201
193
  std::string JHybridSegmentSliderSpec::getBubbleColor() {
202
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getBubbleColor");
194
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getBubbleColor");
203
195
  auto __result = method(_javaPart);
204
196
  return __result->toStdString();
205
197
  }
206
198
  void JHybridSegmentSliderSpec::setBubbleColor(const std::string& bubbleColor) {
207
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* bubbleColor */)>("setBubbleColor");
199
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* bubbleColor */)>("setBubbleColor");
208
200
  method(_javaPart, jni::make_jstring(bubbleColor));
209
201
  }
210
202
  std::string JHybridSegmentSliderSpec::getBubbleTextColor() {
211
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getBubbleTextColor");
203
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getBubbleTextColor");
212
204
  auto __result = method(_javaPart);
213
205
  return __result->toStdString();
214
206
  }
215
207
  void JHybridSegmentSliderSpec::setBubbleTextColor(const std::string& bubbleTextColor) {
216
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* bubbleTextColor */)>("setBubbleTextColor");
208
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* bubbleTextColor */)>("setBubbleTextColor");
217
209
  method(_javaPart, jni::make_jstring(bubbleTextColor));
218
210
  }
219
211
  std::optional<std::function<void(double /* value */)>> JHybridSegmentSliderSpec::getOnChange() {
220
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnChange_cxx");
212
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnChange_cxx");
221
213
  auto __result = method(_javaPart);
222
214
  return __result != nullptr ? std::make_optional([&]() -> std::function<void(double /* value */)> {
223
215
  if (__result->isInstanceOf(JFunc_void_double_cxx::javaClassStatic())) [[likely]] {
@@ -230,11 +222,11 @@ namespace margelo::nitro::segmentslider {
230
222
  }()) : std::nullopt;
231
223
  }
232
224
  void JHybridSegmentSliderSpec::setOnChange(const std::optional<std::function<void(double /* value */)>>& onChange) {
233
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onChange */)>("setOnChange_cxx");
225
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onChange */)>("setOnChange_cxx");
234
226
  method(_javaPart, onChange.has_value() ? JFunc_void_double_cxx::fromCpp(onChange.value()) : nullptr);
235
227
  }
236
228
  std::optional<std::function<void()>> JHybridSegmentSliderSpec::getOnSlideStart() {
237
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnSlideStart_cxx");
229
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnSlideStart_cxx");
238
230
  auto __result = method(_javaPart);
239
231
  return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
240
232
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -247,11 +239,11 @@ namespace margelo::nitro::segmentslider {
247
239
  }()) : std::nullopt;
248
240
  }
249
241
  void JHybridSegmentSliderSpec::setOnSlideStart(const std::optional<std::function<void()>>& onSlideStart) {
250
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onSlideStart */)>("setOnSlideStart_cxx");
242
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onSlideStart */)>("setOnSlideStart_cxx");
251
243
  method(_javaPart, onSlideStart.has_value() ? JFunc_void_cxx::fromCpp(onSlideStart.value()) : nullptr);
252
244
  }
253
245
  std::optional<std::function<void()>> JHybridSegmentSliderSpec::getOnSlideComplete() {
254
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnSlideComplete_cxx");
246
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnSlideComplete_cxx");
255
247
  auto __result = method(_javaPart);
256
248
  return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
257
249
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -264,13 +256,13 @@ namespace margelo::nitro::segmentslider {
264
256
  }()) : std::nullopt;
265
257
  }
266
258
  void JHybridSegmentSliderSpec::setOnSlideComplete(const std::optional<std::function<void()>>& onSlideComplete) {
267
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onSlideComplete */)>("setOnSlideComplete_cxx");
259
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onSlideComplete */)>("setOnSlideComplete_cxx");
268
260
  method(_javaPart, onSlideComplete.has_value() ? JFunc_void_cxx::fromCpp(onSlideComplete.value()) : nullptr);
269
261
  }
270
262
 
271
263
  // Methods
272
264
  void JHybridSegmentSliderSpec::setValue(double value) {
273
- static const auto method = javaClassStatic()->getMethod<void(double /* value */)>("setValue");
265
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* value */)>("setValue");
274
266
  method(_javaPart, value);
275
267
  }
276
268