@onekeyfe/react-native-native-list 6.7.0-alpha.375 → 6.7.0-alpha.382

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 (116) hide show
  1. package/android/src/main/java/com/onekey/nativelist/HybridNativeList.kt +14 -1
  2. package/android/src/main/java/com/onekey/nativelist/NativeListAccessoryStack.kt +240 -11
  3. package/android/src/main/java/com/onekey/nativelist/NativeListActivityDetailsView.kt +7 -4
  4. package/android/src/main/java/com/onekey/nativelist/NativeListActivityRenderer.kt +6 -3
  5. package/android/src/main/java/com/onekey/nativelist/NativeListButtonGroupRenderer.kt +102 -0
  6. package/android/src/main/java/com/onekey/nativelist/NativeListContainerSlotAdapter.kt +12 -0
  7. package/android/src/main/java/com/onekey/nativelist/NativeListDataRowRenderer.kt +87 -7
  8. package/android/src/main/java/com/onekey/nativelist/NativeListIdentityRenderer.kt +177 -1
  9. package/android/src/main/java/com/onekey/nativelist/NativeListLeadingVisual.kt +43 -14
  10. package/android/src/main/java/com/onekey/nativelist/NativeListMessageRenderer.kt +25 -0
  11. package/android/src/main/java/com/onekey/nativelist/NativeListModels.kt +33 -2
  12. package/android/src/main/java/com/onekey/nativelist/NativeListPrimitives.kt +22 -0
  13. package/android/src/main/java/com/onekey/nativelist/NativeListRendererRegistry.kt +2 -0
  14. package/android/src/main/java/com/onekey/nativelist/NativeListRendererRowView.kt +2 -0
  15. package/android/src/main/java/com/onekey/nativelist/NativeListResolvedText.kt +3 -2
  16. package/android/src/main/java/com/onekey/nativelist/NativeListSectionHeaderRenderer.kt +69 -0
  17. package/android/src/main/java/com/onekey/nativelist/NativeListTextView.kt +55 -1
  18. package/android/src/main/java/com/onekey/nativelist/NativeListView.kt +1912 -107
  19. package/android/src/test/java/com/margelo/nitro/nativelist/NativeListPressPolicyTest.kt +1 -0
  20. package/docs/ROW_TEMPLATES.md +60 -9
  21. package/docs/SPEC.md +450 -5
  22. package/docs/STYLE_SPEC.md +6 -0
  23. package/ios/HybridNativeList.swift +21 -2
  24. package/ios/NativeListAccessoryStack.swift +227 -39
  25. package/ios/NativeListActivityDetailsView.swift +18 -8
  26. package/ios/NativeListActivityRenderer.swift +8 -2
  27. package/ios/NativeListButtonGroupRenderer.swift +89 -0
  28. package/ios/NativeListDataRowRenderer.swift +155 -27
  29. package/ios/NativeListDesignAssets.swift +3 -0
  30. package/ios/NativeListIdentityRenderer.swift +166 -30
  31. package/ios/NativeListLeadingVisual.swift +49 -14
  32. package/ios/NativeListMessageRenderer.swift +34 -1
  33. package/ios/NativeListModels.swift +42 -2
  34. package/ios/NativeListRendererRegistry.swift +1 -0
  35. package/ios/NativeListResolvedText.swift +2 -1
  36. package/ios/NativeListRowHost.swift +14 -0
  37. package/ios/NativeListSectionHeaderRenderer.swift +88 -0
  38. package/ios/RNCNativeListView.swift +1013 -55
  39. package/ios/Resources/NativeListIcons.xcassets/onekey_crypto_coin_outline.imageset/Contents.json +15 -0
  40. package/ios/Resources/NativeListIcons.xcassets/onekey_crypto_coin_outline.imageset/icon.svg +4 -0
  41. package/ios/Resources/NativeListIcons.xcassets/onekey_gas_solid.imageset/Contents.json +15 -0
  42. package/ios/Resources/NativeListIcons.xcassets/onekey_gas_solid.imageset/icon.svg +3 -0
  43. package/ios/Resources/NativeListIcons.xcassets/onekey_refresh_ccw_outline.imageset/Contents.json +15 -0
  44. package/ios/Resources/NativeListIcons.xcassets/onekey_refresh_ccw_outline.imageset/icon.svg +3 -0
  45. package/ios/tests/NativeListActivityPresentationTests.swift +56 -0
  46. package/ios/tests/NativeListLifecycleTests.swift +2720 -3
  47. package/lib/module/NativeList.js +175 -28
  48. package/lib/module/NativeList.web.js +129 -30
  49. package/lib/module/index.js +1 -1
  50. package/lib/module/models.js +1 -0
  51. package/lib/module/selection.js +1 -1
  52. package/lib/module/validation.js +421 -8
  53. package/lib/module/web/NativeListWebEngine.js +507 -19
  54. package/lib/module/web/templates/ActivityRowRenderer.js +8 -7
  55. package/lib/module/web/templates/ButtonGroupRowRenderer.js +47 -0
  56. package/lib/module/web/templates/DataRowRenderer.js +40 -5
  57. package/lib/module/web/templates/IdentityRowRenderer.js +90 -4
  58. package/lib/module/web/templates/MessageRowRenderer.js +18 -2
  59. package/lib/module/web/templates/RowContainerStyle.js +1 -0
  60. package/lib/module/web/templates/RowRendererRegistry.js +3 -0
  61. package/lib/module/web/templates/SectionHeaderRowRenderer.js +36 -2
  62. package/lib/nitrogen/generated/android/c++/JHybridNativeListSpec.cpp +26 -0
  63. package/lib/nitrogen/generated/android/c++/JHybridNativeListSpec.hpp +4 -0
  64. package/lib/nitrogen/generated/android/c++/views/JHybridNativeListStateUpdater.cpp +10 -0
  65. package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/HybridNativeListSpec.kt +20 -0
  66. package/lib/nitrogen/generated/ios/c++/HybridNativeListSpecSwift.hpp +14 -0
  67. package/lib/nitrogen/generated/ios/c++/views/HybridNativeListComponent.mm +12 -0
  68. package/lib/nitrogen/generated/ios/swift/HybridNativeListSpec.swift +2 -0
  69. package/lib/nitrogen/generated/ios/swift/HybridNativeListSpec_cxx.swift +43 -0
  70. package/lib/nitrogen/generated/shared/c++/HybridNativeListSpec.cpp +4 -0
  71. package/lib/nitrogen/generated/shared/c++/HybridNativeListSpec.hpp +4 -0
  72. package/lib/nitrogen/generated/shared/c++/views/HybridNativeListComponent.cpp +4 -0
  73. package/lib/nitrogen/generated/shared/c++/views/HybridNativeListComponent.hpp +6 -0
  74. package/lib/nitrogen/generated/shared/json/NativeListConfig.json +2 -0
  75. package/lib/typescript/src/NativeList.d.ts +1 -1
  76. package/lib/typescript/src/NativeList.nitro.d.ts +2 -0
  77. package/lib/typescript/src/NativeList.types.d.ts +18 -0
  78. package/lib/typescript/src/index.d.ts +2 -2
  79. package/lib/typescript/src/models.d.ts +105 -9
  80. package/lib/typescript/src/validation.d.ts +12 -0
  81. package/lib/typescript/src/web/NativeListWebEngine.d.ts +32 -0
  82. package/lib/typescript/src/web/templates/ButtonGroupRowRenderer.d.ts +14 -0
  83. package/lib/typescript/src/web/templates/IdentityRowRenderer.d.ts +1 -1
  84. package/lib/typescript/src/web/templates/MessageRowRenderer.d.ts +9 -3
  85. package/nitrogen/generated/android/c++/JHybridNativeListSpec.cpp +26 -0
  86. package/nitrogen/generated/android/c++/JHybridNativeListSpec.hpp +4 -0
  87. package/nitrogen/generated/android/c++/views/JHybridNativeListStateUpdater.cpp +10 -0
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nativelist/HybridNativeListSpec.kt +20 -0
  89. package/nitrogen/generated/ios/c++/HybridNativeListSpecSwift.hpp +14 -0
  90. package/nitrogen/generated/ios/c++/views/HybridNativeListComponent.mm +12 -0
  91. package/nitrogen/generated/ios/swift/HybridNativeListSpec.swift +2 -0
  92. package/nitrogen/generated/ios/swift/HybridNativeListSpec_cxx.swift +43 -0
  93. package/nitrogen/generated/shared/c++/HybridNativeListSpec.cpp +4 -0
  94. package/nitrogen/generated/shared/c++/HybridNativeListSpec.hpp +4 -0
  95. package/nitrogen/generated/shared/c++/views/HybridNativeListComponent.cpp +4 -0
  96. package/nitrogen/generated/shared/c++/views/HybridNativeListComponent.hpp +6 -0
  97. package/nitrogen/generated/shared/json/NativeListConfig.json +2 -0
  98. package/package.json +3 -3
  99. package/react-native-native-list.podspec +1 -0
  100. package/src/NativeList.nitro.ts +2 -0
  101. package/src/NativeList.tsx +313 -44
  102. package/src/NativeList.types.ts +22 -0
  103. package/src/NativeList.web.tsx +204 -48
  104. package/src/index.ts +2 -0
  105. package/src/models.ts +117 -3
  106. package/src/selection.ts +1 -0
  107. package/src/validation.ts +852 -6
  108. package/src/web/NativeListWebEngine.ts +803 -20
  109. package/src/web/templates/ActivityRowRenderer.ts +14 -6
  110. package/src/web/templates/ButtonGroupRowRenderer.ts +58 -0
  111. package/src/web/templates/DataRowRenderer.ts +93 -20
  112. package/src/web/templates/IdentityRowRenderer.ts +150 -5
  113. package/src/web/templates/MessageRowRenderer.ts +23 -7
  114. package/src/web/templates/RowContainerStyle.ts +2 -0
  115. package/src/web/templates/RowRendererRegistry.ts +11 -1
  116. package/src/web/templates/SectionHeaderRowRenderer.ts +47 -4
@@ -3,8 +3,20 @@ import type { NativeListSnapshot, RowPatch } from './models';
3
3
  export declare function containNativeListInput<T>(operation: () => T): T | undefined;
4
4
  export declare function emptyNativeListSnapshot(): NativeListSnapshot;
5
5
  export declare function validateSnapshot(snapshot: NativeListSnapshot): NativeListSnapshot;
6
+ /** Capture caller data once before validation, including accessor values. */
7
+ export declare function captureNativeListInput<T>(value: T): T;
8
+ /** Private native-wrapper ownership; exported validators keep their public identity. */
9
+ export declare function ownValidatedNativeSnapshot(snapshot: NativeListSnapshot): NativeListSnapshot;
6
10
  export declare function validatePatches(patches: readonly RowPatch[]): readonly RowPatch[];
11
+ /** Plan value-only patches; callers own valid immutable snapshots and commit state. */
12
+ export declare function planNativeListPatches(previous: NativeListSnapshot, next: NativeListSnapshot): readonly RowPatch[] | undefined;
7
13
  export declare function applyRowPatches(snapshot: NativeListSnapshot, patches: readonly RowPatch[]): NativeListSnapshot;
14
+ /** Native wrapper only: preserve full public validation for unsupported patches. */
15
+ export declare function applyOwnedNativePatches(snapshot: NativeListSnapshot, patches: readonly RowPatch[]): {
16
+ patches: readonly RowPatch[];
17
+ snapshot: NativeListSnapshot;
18
+ json: string;
19
+ };
8
20
  export declare function serializeSnapshot(snapshot: NativeListSnapshot): string;
9
21
  export declare function serializePatches(patches: readonly RowPatch[]): string;
10
22
  //# sourceMappingURL=validation.d.ts.map
@@ -145,6 +145,7 @@ export declare class NativeListWebEngine {
145
145
  private pullDistance;
146
146
  private virtualizationEnabled;
147
147
  private actionAnchor;
148
+ private pressedHelpElement;
148
149
  private readonly actionAnchorInstanceId;
149
150
  private actionAnchorCounter;
150
151
  private bindingEpochCounter;
@@ -153,6 +154,26 @@ export declare class NativeListWebEngine {
153
154
  private lastViewportWidth;
154
155
  private lastViewportHeight;
155
156
  private destroyed;
157
+ private hasAppliedSnapshot;
158
+ private lastStructuralTransitionId;
159
+ private structuralFrame;
160
+ private structuralFinish;
161
+ private structuralRevision;
162
+ private structuralAnimations;
163
+ private structuralScrollInterrupted;
164
+ private structuralRenderedHeight;
165
+ private structuralTargetHeight;
166
+ private reactFooterHeight;
167
+ private structuralFooterCompensation;
168
+ private structuralFooterExpansion;
169
+ private structuralFooterFromHeight;
170
+ private structuralFooterElement;
171
+ private structuralFooterStyles;
172
+ private structuralProgress;
173
+ private structuralAnchorStyles;
174
+ private structuralContentOverflow;
175
+ private structuralPrefixTransition;
176
+ private structuralTail;
156
177
  private sectionIndexAlignStart;
157
178
  private measuredRendererHeights;
158
179
  private notifyScrollCommandAccepted;
@@ -168,6 +189,15 @@ export declare class NativeListWebEngine {
168
189
  updateCallbacks(callbacks: NativeListWebCallbacks): void;
169
190
  setVirtualizationEnabled(enabled: boolean): void;
170
191
  applySnapshot(snapshot: NativeListSnapshot): void;
192
+ private applyValidatedSnapshot;
193
+ private cancelStructuralAnimation;
194
+ private handleStructuralUserScroll;
195
+ private updateStructuralTailWindow;
196
+ private writeStructuralHeight;
197
+ private reactFooterElement;
198
+ private readReactFooterHeight;
199
+ private applyStructuralFooterVisual;
200
+ private applyStructuralSnapshot;
171
201
  currentContentHeight(): number;
172
202
  currentSnapshot(): NativeListSnapshot;
173
203
  applyPatches(patches: readonly RowPatch[]): void;
@@ -239,6 +269,8 @@ export declare class NativeListWebEngine {
239
269
  private handleMarketTouchMove;
240
270
  private handleMarketPointerEnd;
241
271
  private handleTitlePointerOver;
272
+ private emitHoverAction;
273
+ private handleIconHelpPointerDown;
242
274
  private handleTitlePointerOut;
243
275
  private handleClick;
244
276
  private handleKeyDown;
@@ -0,0 +1,14 @@
1
+ import type { ButtonGroupRow } from '../../models';
2
+ import type { RowPrimitives } from './RowVisual';
3
+ declare function bind(body: HTMLElement, row: ButtonGroupRow): void;
4
+ declare function create(document: Document, row: ButtonGroupRow, _primitives: RowPrimitives): HTMLDivElement;
5
+ export declare const buttonGroupRowRenderer: {
6
+ key: "buttonGroup";
7
+ create: typeof create;
8
+ bind: typeof bind;
9
+ recycle: (body: HTMLElement) => void;
10
+ measure: (_row: ButtonGroupRow, _width: number) => number;
11
+ measureRendered: (body: HTMLElement) => number;
12
+ };
13
+ export {};
14
+ //# sourceMappingURL=ButtonGroupRowRenderer.d.ts.map
@@ -10,7 +10,7 @@ export declare const identityRowRenderer: {
10
10
  recycle: typeof recycle;
11
11
  appliesSizePreset: (row: IdentityRow) => boolean;
12
12
  measure: (row: IdentityRow, _width: number) => number;
13
- measureRendered: (_body: HTMLElement, _row: IdentityRow) => number | undefined;
13
+ measureRendered: (body: HTMLElement, row: IdentityRow) => number | undefined;
14
14
  };
15
15
  export {};
16
16
  //# sourceMappingURL=IdentityRowRenderer.d.ts.map
@@ -3,15 +3,21 @@ import type { MessageRow, NativeListTextStyle } from '../../models';
3
3
  export declare function resolveMessageRow(row: MessageRow): {
4
4
  title: Readonly<{
5
5
  value: string;
6
- style: Required<Pick<NativeListTextStyle, "fontSize" | "lineHeight" | "lines">> & NativeListTextStyle;
6
+ style: Required<Pick<NativeListTextStyle, "fontSize" | "lineHeight">> & Omit<NativeListTextStyle, "lines"> & {
7
+ lines: 0 | 1 | 2 | 3;
8
+ };
7
9
  }>;
8
10
  body: Readonly<{
9
11
  value: string;
10
- style: Required<Pick<NativeListTextStyle, "fontSize" | "lineHeight" | "lines">> & NativeListTextStyle;
12
+ style: Required<Pick<NativeListTextStyle, "fontSize" | "lineHeight">> & Omit<NativeListTextStyle, "lines"> & {
13
+ lines: 0 | 1 | 2 | 3;
14
+ };
11
15
  }>;
12
16
  time: Readonly<{
13
17
  value: string;
14
- style: Required<Pick<NativeListTextStyle, "fontSize" | "lineHeight" | "lines">> & NativeListTextStyle;
18
+ style: Required<Pick<NativeListTextStyle, "fontSize" | "lineHeight">> & Omit<NativeListTextStyle, "lines"> & {
19
+ lines: 0 | 1 | 2 | 3;
20
+ };
15
21
  }>;
16
22
  horizontalPadding: number;
17
23
  verticalPadding: number;
@@ -88,6 +88,15 @@ namespace margelo::nitro::nativelist {
88
88
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* containerSlotHeightsJson */)>("setContainerSlotHeightsJson");
89
89
  method(_javaPart, jni::make_jstring(containerSlotHeightsJson));
90
90
  }
91
+ std::string JHybridNativeListSpec::getSidecarLayoutJson() {
92
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getSidecarLayoutJson");
93
+ auto __result = method(_javaPart);
94
+ return __result->toStdString();
95
+ }
96
+ void JHybridNativeListSpec::setSidecarLayoutJson(const std::string& sidecarLayoutJson) {
97
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* sidecarLayoutJson */)>("setSidecarLayoutJson");
98
+ method(_javaPart, jni::make_jstring(sidecarLayoutJson));
99
+ }
91
100
  NativeListScrollEdgeEffect JHybridNativeListSpec::getTopScrollEdgeEffect() {
92
101
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JNativeListScrollEdgeEffect>()>("getTopScrollEdgeEffect");
93
102
  auto __result = method(_javaPart);
@@ -252,6 +261,23 @@ namespace margelo::nitro::nativelist {
252
261
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__string::javaobject> /* onVisibleRangeChanged */)>("setOnVisibleRangeChanged_cxx");
253
262
  method(_javaPart, onVisibleRangeChanged.has_value() ? JFunc_void_std__string_cxx::fromCpp(onVisibleRangeChanged.value()) : nullptr);
254
263
  }
264
+ std::optional<std::function<void(const std::string& /* payloadJson */)>> JHybridNativeListSpec::getOnStructuralTransitionSettled() {
265
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_std__string::javaobject>()>("getOnStructuralTransitionSettled_cxx");
266
+ auto __result = method(_javaPart);
267
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(const std::string& /* payloadJson */)> {
268
+ if (__result->isInstanceOf(JFunc_void_std__string_cxx::javaClassStatic())) [[likely]] {
269
+ auto downcast = jni::static_ref_cast<JFunc_void_std__string_cxx::javaobject>(__result);
270
+ return downcast->cthis()->getFunction();
271
+ } else {
272
+ auto __resultRef = jni::make_global(__result);
273
+ return JNICallable<JFunc_void_std__string, void(std::string)>(std::move(__resultRef));
274
+ }
275
+ }()) : std::nullopt;
276
+ }
277
+ void JHybridNativeListSpec::setOnStructuralTransitionSettled(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onStructuralTransitionSettled) {
278
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_std__string::javaobject> /* onStructuralTransitionSettled */)>("setOnStructuralTransitionSettled_cxx");
279
+ method(_javaPart, onStructuralTransitionSettled.has_value() ? JFunc_void_std__string_cxx::fromCpp(onStructuralTransitionSettled.value()) : nullptr);
280
+ }
255
281
 
256
282
  // Methods
257
283
  void JHybridNativeListSpec::applySnapshot(const std::string& snapshotJson) {
@@ -56,6 +56,8 @@ namespace margelo::nitro::nativelist {
56
56
  void setFontFamiliesJson(const std::string& fontFamiliesJson) override;
57
57
  std::string getContainerSlotHeightsJson() override;
58
58
  void setContainerSlotHeightsJson(const std::string& containerSlotHeightsJson) override;
59
+ std::string getSidecarLayoutJson() override;
60
+ void setSidecarLayoutJson(const std::string& sidecarLayoutJson) override;
59
61
  NativeListScrollEdgeEffect getTopScrollEdgeEffect() override;
60
62
  void setTopScrollEdgeEffect(NativeListScrollEdgeEffect topScrollEdgeEffect) override;
61
63
  double getTopOverlayHeight() override;
@@ -80,6 +82,8 @@ namespace margelo::nitro::nativelist {
80
82
  void setOnEndReached(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onEndReached) override;
81
83
  std::optional<std::function<void(const std::string& /* payloadJson */)>> getOnVisibleRangeChanged() override;
82
84
  void setOnVisibleRangeChanged(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onVisibleRangeChanged) override;
85
+ std::optional<std::function<void(const std::string& /* payloadJson */)>> getOnStructuralTransitionSettled() override;
86
+ void setOnStructuralTransitionSettled(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onStructuralTransitionSettled) override;
83
87
 
84
88
  public:
85
89
  // Methods
@@ -68,6 +68,11 @@ void JHybridNativeListStateUpdater::updateViewProps(jni::alias_ref<jni::JClass>
68
68
  : !newProps->containerSlotHeightsJson.hasSameValue(oldProps->containerSlotHeightsJson)) {
69
69
  hybridView->setContainerSlotHeightsJson(newProps->containerSlotHeightsJson.get());
70
70
  }
71
+ if (oldProps == nullptr
72
+ ? newProps->sidecarLayoutJson.isProvided()
73
+ : !newProps->sidecarLayoutJson.hasSameValue(oldProps->sidecarLayoutJson)) {
74
+ hybridView->setSidecarLayoutJson(newProps->sidecarLayoutJson.get());
75
+ }
71
76
  if (oldProps == nullptr
72
77
  ? newProps->topScrollEdgeEffect.isProvided()
73
78
  : !newProps->topScrollEdgeEffect.hasSameValue(oldProps->topScrollEdgeEffect)) {
@@ -128,6 +133,11 @@ void JHybridNativeListStateUpdater::updateViewProps(jni::alias_ref<jni::JClass>
128
133
  : !newProps->onVisibleRangeChanged.hasSameValue(oldProps->onVisibleRangeChanged)) {
129
134
  hybridView->setOnVisibleRangeChanged(newProps->onVisibleRangeChanged.get());
130
135
  }
136
+ if (oldProps == nullptr
137
+ ? newProps->onStructuralTransitionSettled.isProvided()
138
+ : !newProps->onStructuralTransitionSettled.hasSameValue(oldProps->onStructuralTransitionSettled)) {
139
+ hybridView->setOnStructuralTransitionSettled(newProps->onStructuralTransitionSettled.get());
140
+ }
131
141
 
132
142
  // Update hybridRef if it changed
133
143
  if (oldProps == nullptr
@@ -45,6 +45,12 @@ abstract class HybridNativeListSpec: HybridView() {
45
45
  @set:Keep
46
46
  abstract var containerSlotHeightsJson: String
47
47
 
48
+ @get:DoNotStrip
49
+ @get:Keep
50
+ @set:DoNotStrip
51
+ @set:Keep
52
+ abstract var sidecarLayoutJson: String
53
+
48
54
  @get:DoNotStrip
49
55
  @get:Keep
50
56
  @set:DoNotStrip
@@ -172,6 +178,20 @@ abstract class HybridNativeListSpec: HybridView() {
172
178
  set(value) {
173
179
  onVisibleRangeChanged = value?.let { it }
174
180
  }
181
+
182
+ abstract var onStructuralTransitionSettled: ((payloadJson: String) -> Unit)?
183
+
184
+ private var onStructuralTransitionSettled_cxx: Func_void_std__string?
185
+ @Keep
186
+ @DoNotStrip
187
+ get() {
188
+ return onStructuralTransitionSettled?.let { Func_void_std__string_java(it) }
189
+ }
190
+ @Keep
191
+ @DoNotStrip
192
+ set(value) {
193
+ onStructuralTransitionSettled = value?.let { it }
194
+ }
175
195
 
176
196
  // Methods
177
197
  @DoNotStrip
@@ -96,6 +96,13 @@ namespace margelo::nitro::nativelist {
96
96
  inline void setContainerSlotHeightsJson(const std::string& containerSlotHeightsJson) noexcept override {
97
97
  _swiftPart.setContainerSlotHeightsJson(containerSlotHeightsJson);
98
98
  }
99
+ inline std::string getSidecarLayoutJson() noexcept override {
100
+ auto __result = _swiftPart.getSidecarLayoutJson();
101
+ return __result;
102
+ }
103
+ inline void setSidecarLayoutJson(const std::string& sidecarLayoutJson) noexcept override {
104
+ _swiftPart.setSidecarLayoutJson(sidecarLayoutJson);
105
+ }
99
106
  inline NativeListScrollEdgeEffect getTopScrollEdgeEffect() noexcept override {
100
107
  auto __result = _swiftPart.getTopScrollEdgeEffect();
101
108
  return static_cast<NativeListScrollEdgeEffect>(__result);
@@ -179,6 +186,13 @@ namespace margelo::nitro::nativelist {
179
186
  inline void setOnVisibleRangeChanged(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onVisibleRangeChanged) noexcept override {
180
187
  _swiftPart.setOnVisibleRangeChanged(onVisibleRangeChanged);
181
188
  }
189
+ inline std::optional<std::function<void(const std::string& /* payloadJson */)>> getOnStructuralTransitionSettled() noexcept override {
190
+ auto __result = _swiftPart.getOnStructuralTransitionSettled();
191
+ return __result;
192
+ }
193
+ inline void setOnStructuralTransitionSettled(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onStructuralTransitionSettled) noexcept override {
194
+ _swiftPart.setOnStructuralTransitionSettled(onStructuralTransitionSettled);
195
+ }
182
196
 
183
197
  public:
184
198
  // Methods
@@ -130,6 +130,12 @@ using namespace margelo::nitro::nativelist::views;
130
130
  : !newViewProps.containerSlotHeightsJson.hasSameValue(oldViewProps->containerSlotHeightsJson)) {
131
131
  swiftPart.setContainerSlotHeightsJson(newViewProps.containerSlotHeightsJson.get());
132
132
  }
133
+ // sidecarLayoutJson: string
134
+ if (oldViewProps == nullptr
135
+ ? newViewProps.sidecarLayoutJson.isProvided()
136
+ : !newViewProps.sidecarLayoutJson.hasSameValue(oldViewProps->sidecarLayoutJson)) {
137
+ swiftPart.setSidecarLayoutJson(newViewProps.sidecarLayoutJson.get());
138
+ }
133
139
  // topScrollEdgeEffect: enum
134
140
  if (oldViewProps == nullptr
135
141
  ? newViewProps.topScrollEdgeEffect.isProvided()
@@ -202,6 +208,12 @@ using namespace margelo::nitro::nativelist::views;
202
208
  : !newViewProps.onVisibleRangeChanged.hasSameValue(oldViewProps->onVisibleRangeChanged)) {
203
209
  swiftPart.setOnVisibleRangeChanged(newViewProps.onVisibleRangeChanged.get());
204
210
  }
211
+ // onStructuralTransitionSettled: optional
212
+ if (oldViewProps == nullptr
213
+ ? newViewProps.onStructuralTransitionSettled.isProvided()
214
+ : !newViewProps.onStructuralTransitionSettled.hasSameValue(oldViewProps->onStructuralTransitionSettled)) {
215
+ swiftPart.setOnStructuralTransitionSettled(newViewProps.onStructuralTransitionSettled.get());
216
+ }
205
217
 
206
218
  // Update hybridRef if it changed
207
219
  if (oldViewProps == nullptr
@@ -13,6 +13,7 @@ public protocol HybridNativeListSpec_protocol: HybridObject, HybridView {
13
13
  var snapshotJson: String { get set }
14
14
  var fontFamiliesJson: String { get set }
15
15
  var containerSlotHeightsJson: String { get set }
16
+ var sidecarLayoutJson: String { get set }
16
17
  var topScrollEdgeEffect: NativeListScrollEdgeEffect { get set }
17
18
  var topOverlayHeight: Double { get set }
18
19
  var scrollPositionThresholdsJson: String { get set }
@@ -25,6 +26,7 @@ public protocol HybridNativeListSpec_protocol: HybridObject, HybridView {
25
26
  var onReorder: ((_ payloadJson: String) -> Void)? { get set }
26
27
  var onEndReached: ((_ payloadJson: String) -> Void)? { get set }
27
28
  var onVisibleRangeChanged: ((_ payloadJson: String) -> Void)? { get set }
29
+ var onStructuralTransitionSettled: ((_ payloadJson: String) -> Void)? { get set }
28
30
 
29
31
  // Methods
30
32
  func applySnapshot(snapshotJson: String) throws -> Void
@@ -154,6 +154,17 @@ open class HybridNativeListSpec_cxx {
154
154
  }
155
155
  }
156
156
 
157
+ public final var sidecarLayoutJson: std.string {
158
+ @inline(__always)
159
+ get {
160
+ return std.string(self.__implementation.sidecarLayoutJson)
161
+ }
162
+ @inline(__always)
163
+ set {
164
+ self.__implementation.sidecarLayoutJson = String(newValue)
165
+ }
166
+ }
167
+
157
168
  public final var topScrollEdgeEffect: Int32 {
158
169
  @inline(__always)
159
170
  get {
@@ -432,6 +443,38 @@ open class HybridNativeListSpec_cxx {
432
443
  }()
433
444
  }
434
445
  }
446
+
447
+ public final var onStructuralTransitionSettled: bridge.std__optional_std__function_void_const_std__string_____payloadJson______ {
448
+ @inline(__always)
449
+ get {
450
+ return { () -> bridge.std__optional_std__function_void_const_std__string_____payloadJson______ in
451
+ if let __unwrappedValue = self.__implementation.onStructuralTransitionSettled {
452
+ return bridge.create_std__optional_std__function_void_const_std__string_____payloadJson______({ () -> bridge.Func_void_std__string in
453
+ let __closureWrapper = Func_void_std__string(__unwrappedValue)
454
+ return bridge.create_Func_void_std__string(__closureWrapper.toUnsafe())
455
+ }())
456
+ } else {
457
+ return .init()
458
+ }
459
+ }()
460
+ }
461
+ @inline(__always)
462
+ set {
463
+ self.__implementation.onStructuralTransitionSettled = { () -> ((_ payloadJson: String) -> Void)? in
464
+ if bridge.has_value_std__optional_std__function_void_const_std__string_____payloadJson______(newValue) {
465
+ let __unwrapped = bridge.get_std__optional_std__function_void_const_std__string_____payloadJson______(newValue)
466
+ return { () -> (String) -> Void in
467
+ let __wrappedFunction = bridge.wrap_Func_void_std__string(__unwrapped)
468
+ return { (__payloadJson: String) -> Void in
469
+ __wrappedFunction.call(std.string(__payloadJson))
470
+ }
471
+ }()
472
+ } else {
473
+ return nil
474
+ }
475
+ }()
476
+ }
477
+ }
435
478
 
436
479
  // Methods
437
480
  @inline(__always)
@@ -20,6 +20,8 @@ namespace margelo::nitro::nativelist {
20
20
  prototype.registerHybridSetter("fontFamiliesJson", &HybridNativeListSpec::setFontFamiliesJson);
21
21
  prototype.registerHybridGetter("containerSlotHeightsJson", &HybridNativeListSpec::getContainerSlotHeightsJson);
22
22
  prototype.registerHybridSetter("containerSlotHeightsJson", &HybridNativeListSpec::setContainerSlotHeightsJson);
23
+ prototype.registerHybridGetter("sidecarLayoutJson", &HybridNativeListSpec::getSidecarLayoutJson);
24
+ prototype.registerHybridSetter("sidecarLayoutJson", &HybridNativeListSpec::setSidecarLayoutJson);
23
25
  prototype.registerHybridGetter("topScrollEdgeEffect", &HybridNativeListSpec::getTopScrollEdgeEffect);
24
26
  prototype.registerHybridSetter("topScrollEdgeEffect", &HybridNativeListSpec::setTopScrollEdgeEffect);
25
27
  prototype.registerHybridGetter("topOverlayHeight", &HybridNativeListSpec::getTopOverlayHeight);
@@ -44,6 +46,8 @@ namespace margelo::nitro::nativelist {
44
46
  prototype.registerHybridSetter("onEndReached", &HybridNativeListSpec::setOnEndReached);
45
47
  prototype.registerHybridGetter("onVisibleRangeChanged", &HybridNativeListSpec::getOnVisibleRangeChanged);
46
48
  prototype.registerHybridSetter("onVisibleRangeChanged", &HybridNativeListSpec::setOnVisibleRangeChanged);
49
+ prototype.registerHybridGetter("onStructuralTransitionSettled", &HybridNativeListSpec::getOnStructuralTransitionSettled);
50
+ prototype.registerHybridSetter("onStructuralTransitionSettled", &HybridNativeListSpec::setOnStructuralTransitionSettled);
47
51
  prototype.registerHybridMethod("applySnapshot", &HybridNativeListSpec::applySnapshot);
48
52
  prototype.registerHybridMethod("applyPatches", &HybridNativeListSpec::applyPatches);
49
53
  prototype.registerHybridMethod("reconcileSelection", &HybridNativeListSpec::reconcileSelection);
@@ -63,6 +63,8 @@ namespace margelo::nitro::nativelist {
63
63
  virtual void setFontFamiliesJson(const std::string& fontFamiliesJson) = 0;
64
64
  virtual std::string getContainerSlotHeightsJson() = 0;
65
65
  virtual void setContainerSlotHeightsJson(const std::string& containerSlotHeightsJson) = 0;
66
+ virtual std::string getSidecarLayoutJson() = 0;
67
+ virtual void setSidecarLayoutJson(const std::string& sidecarLayoutJson) = 0;
66
68
  virtual NativeListScrollEdgeEffect getTopScrollEdgeEffect() = 0;
67
69
  virtual void setTopScrollEdgeEffect(NativeListScrollEdgeEffect topScrollEdgeEffect) = 0;
68
70
  virtual double getTopOverlayHeight() = 0;
@@ -87,6 +89,8 @@ namespace margelo::nitro::nativelist {
87
89
  virtual void setOnEndReached(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onEndReached) = 0;
88
90
  virtual std::optional<std::function<void(const std::string& /* payloadJson */)>> getOnVisibleRangeChanged() = 0;
89
91
  virtual void setOnVisibleRangeChanged(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onVisibleRangeChanged) = 0;
92
+ virtual std::optional<std::function<void(const std::string& /* payloadJson */)>> getOnStructuralTransitionSettled() = 0;
93
+ virtual void setOnStructuralTransitionSettled(const std::optional<std::function<void(const std::string& /* payloadJson */)>>& onStructuralTransitionSettled) = 0;
90
94
 
91
95
  public:
92
96
  // Methods
@@ -23,6 +23,7 @@ namespace margelo::nitro::nativelist::views {
23
23
  snapshotJson(nitro::ReactProp<std::string>::fromRawValue("NativeList", "snapshotJson", rawProps, sourceProps.snapshotJson)),
24
24
  fontFamiliesJson(nitro::ReactProp<std::string>::fromRawValue("NativeList", "fontFamiliesJson", rawProps, sourceProps.fontFamiliesJson)),
25
25
  containerSlotHeightsJson(nitro::ReactProp<std::string>::fromRawValue("NativeList", "containerSlotHeightsJson", rawProps, sourceProps.containerSlotHeightsJson)),
26
+ sidecarLayoutJson(nitro::ReactProp<std::string>::fromRawValue("NativeList", "sidecarLayoutJson", rawProps, sourceProps.sidecarLayoutJson)),
26
27
  topScrollEdgeEffect(nitro::ReactProp<NativeListScrollEdgeEffect>::fromRawValue("NativeList", "topScrollEdgeEffect", rawProps, sourceProps.topScrollEdgeEffect)),
27
28
  topOverlayHeight(nitro::ReactProp<double>::fromRawValue("NativeList", "topOverlayHeight", rawProps, sourceProps.topOverlayHeight)),
28
29
  scrollPositionThresholdsJson(nitro::ReactProp<std::string>::fromRawValue("NativeList", "scrollPositionThresholdsJson", rawProps, sourceProps.scrollPositionThresholdsJson)),
@@ -35,6 +36,7 @@ namespace margelo::nitro::nativelist::views {
35
36
  onReorder(nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>>::fromRawValue("NativeList", "onReorder", rawProps, sourceProps.onReorder)),
36
37
  onEndReached(nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>>::fromRawValue("NativeList", "onEndReached", rawProps, sourceProps.onEndReached)),
37
38
  onVisibleRangeChanged(nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>>::fromRawValue("NativeList", "onVisibleRangeChanged", rawProps, sourceProps.onVisibleRangeChanged)),
39
+ onStructuralTransitionSettled(nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>>::fromRawValue("NativeList", "onStructuralTransitionSettled", rawProps, sourceProps.onStructuralTransitionSettled)),
38
40
  hybridRef(nitro::ReactProp<std::optional<std::function<void(const std::shared_ptr<HybridNativeListSpec>& /* ref */)>>>::fromRawValue("NativeList", "hybridRef", rawProps, sourceProps.hybridRef)) { }
39
41
 
40
42
  bool HybridNativeListProps::filterObjectKeys(const std::string& propName) {
@@ -42,6 +44,7 @@ namespace margelo::nitro::nativelist::views {
42
44
  case hashString("snapshotJson"): return true;
43
45
  case hashString("fontFamiliesJson"): return true;
44
46
  case hashString("containerSlotHeightsJson"): return true;
47
+ case hashString("sidecarLayoutJson"): return true;
45
48
  case hashString("topScrollEdgeEffect"): return true;
46
49
  case hashString("topOverlayHeight"): return true;
47
50
  case hashString("scrollPositionThresholdsJson"): return true;
@@ -54,6 +57,7 @@ namespace margelo::nitro::nativelist::views {
54
57
  case hashString("onReorder"): return true;
55
58
  case hashString("onEndReached"): return true;
56
59
  case hashString("onVisibleRangeChanged"): return true;
60
+ case hashString("onStructuralTransitionSettled"): return true;
57
61
  case hashString("hybridRef"): return true;
58
62
  default: return false;
59
63
  }
@@ -49,6 +49,7 @@ namespace margelo::nitro::nativelist::views {
49
49
  nitro::ReactProp<std::string> snapshotJson;
50
50
  nitro::ReactProp<std::string> fontFamiliesJson;
51
51
  nitro::ReactProp<std::string> containerSlotHeightsJson;
52
+ nitro::ReactProp<std::string> sidecarLayoutJson;
52
53
  nitro::ReactProp<NativeListScrollEdgeEffect> topScrollEdgeEffect;
53
54
  nitro::ReactProp<double> topOverlayHeight;
54
55
  nitro::ReactProp<std::string> scrollPositionThresholdsJson;
@@ -61,6 +62,7 @@ namespace margelo::nitro::nativelist::views {
61
62
  nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>> onReorder;
62
63
  nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>> onEndReached;
63
64
  nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>> onVisibleRangeChanged;
65
+ nitro::ReactProp<std::optional<std::function<void(const std::string& /* payloadJson */)>>> onStructuralTransitionSettled;
64
66
  nitro::ReactProp<std::optional<std::function<void(const std::shared_ptr<HybridNativeListSpec>& /* ref */)>>> hybridRef;
65
67
 
66
68
  [[nodiscard]]
@@ -68,6 +70,7 @@ namespace margelo::nitro::nativelist::views {
68
70
  return snapshotJson.hasSameValue(other.snapshotJson) &&
69
71
  fontFamiliesJson.hasSameValue(other.fontFamiliesJson) &&
70
72
  containerSlotHeightsJson.hasSameValue(other.containerSlotHeightsJson) &&
73
+ sidecarLayoutJson.hasSameValue(other.sidecarLayoutJson) &&
71
74
  topScrollEdgeEffect.hasSameValue(other.topScrollEdgeEffect) &&
72
75
  topOverlayHeight.hasSameValue(other.topOverlayHeight) &&
73
76
  scrollPositionThresholdsJson.hasSameValue(other.scrollPositionThresholdsJson) &&
@@ -80,6 +83,7 @@ namespace margelo::nitro::nativelist::views {
80
83
  onReorder.hasSameValue(other.onReorder) &&
81
84
  onEndReached.hasSameValue(other.onEndReached) &&
82
85
  onVisibleRangeChanged.hasSameValue(other.onVisibleRangeChanged) &&
86
+ onStructuralTransitionSettled.hasSameValue(other.onStructuralTransitionSettled) &&
83
87
  hybridRef.hasSameValue(other.hybridRef);
84
88
  }
85
89
 
@@ -88,6 +92,7 @@ namespace margelo::nitro::nativelist::views {
88
92
  return snapshotJson.isProvided() ||
89
93
  fontFamiliesJson.isProvided() ||
90
94
  containerSlotHeightsJson.isProvided() ||
95
+ sidecarLayoutJson.isProvided() ||
91
96
  topScrollEdgeEffect.isProvided() ||
92
97
  topOverlayHeight.isProvided() ||
93
98
  scrollPositionThresholdsJson.isProvided() ||
@@ -100,6 +105,7 @@ namespace margelo::nitro::nativelist::views {
100
105
  onReorder.isProvided() ||
101
106
  onEndReached.isProvided() ||
102
107
  onVisibleRangeChanged.isProvided() ||
108
+ onStructuralTransitionSettled.isProvided() ||
103
109
  hybridRef.isProvided();
104
110
  }
105
111
 
@@ -7,6 +7,7 @@
7
7
  "snapshotJson": true,
8
8
  "fontFamiliesJson": true,
9
9
  "containerSlotHeightsJson": true,
10
+ "sidecarLayoutJson": true,
10
11
  "topScrollEdgeEffect": true,
11
12
  "topOverlayHeight": true,
12
13
  "scrollPositionThresholdsJson": true,
@@ -19,6 +20,7 @@
19
20
  "onReorder": true,
20
21
  "onEndReached": true,
21
22
  "onVisibleRangeChanged": true,
23
+ "onStructuralTransitionSettled": true,
22
24
  "hybridRef": true
23
25
  }
24
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/react-native-native-list",
3
- "version": "6.7.0-alpha.375",
3
+ "version": "6.7.0-alpha.382",
4
4
  "description": "Template-driven native RecyclerView and UICollectionView for React Native",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/module/index.js",
@@ -86,8 +86,8 @@
86
86
  "typescript": "^5.9.2"
87
87
  },
88
88
  "peerDependencies": {
89
- "@onekeyfe/react-native-image": "6.7.0-alpha.375",
90
- "@onekeyfe/react-native-native-logger": "6.7.0-alpha.375",
89
+ "@onekeyfe/react-native-image": "6.7.0-alpha.382",
90
+ "@onekeyfe/react-native-native-logger": "6.7.0-alpha.382",
91
91
  "react": "*",
92
92
  "react-native": "*",
93
93
  "react-native-nitro-modules": "0.37.0"
@@ -33,6 +33,7 @@ Pod::Spec.new do |s|
33
33
  s.dependency "React-callinvoker"
34
34
 
35
35
  s.test_spec "Tests" do |test_spec|
36
+ test_spec.requires_app_host = true
36
37
  test_spec.source_files = "ios/tests/**/*.swift"
37
38
  test_spec.pod_target_xcconfig = {
38
39
  "PRODUCT_MODULE_NAME" => "NativeListModuleTests",
@@ -13,6 +13,7 @@ export interface NativeListNativeProps extends HybridViewProps {
13
13
  snapshotJson: string;
14
14
  fontFamiliesJson: string;
15
15
  containerSlotHeightsJson: string;
16
+ sidecarLayoutJson: string;
16
17
  topScrollEdgeEffect: NativeListScrollEdgeEffect;
17
18
  topOverlayHeight: number;
18
19
  scrollPositionThresholdsJson: string;
@@ -25,6 +26,7 @@ export interface NativeListNativeProps extends HybridViewProps {
25
26
  onReorder?: (payloadJson: string) => void;
26
27
  onEndReached?: (payloadJson: string) => void;
27
28
  onVisibleRangeChanged?: (payloadJson: string) => void;
29
+ onStructuralTransitionSettled?: (payloadJson: string) => void;
28
30
  }
29
31
 
30
32
  export type NativeListKeyboardDismissMode = 'none' | 'on-drag' | 'interactive';