aix 0.0.15 → 0.1.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.
Files changed (241) hide show
  1. package/Aix.podspec +32 -0
  2. package/LICENSE +2 -2
  3. package/README.md +165 -33
  4. package/android/CMakeLists.txt +32 -0
  5. package/android/build.gradle +148 -0
  6. package/android/fix-prefab.gradle +51 -0
  7. package/android/gradle.properties +5 -0
  8. package/android/src/main/AndroidManifest.xml +2 -0
  9. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  10. package/android/src/main/java/com/aix/AixPackage.kt +29 -0
  11. package/android/src/main/java/com/aix/HybridAix.kt +27 -0
  12. package/ios/Bridge.h +8 -0
  13. package/ios/HybridAix.swift +1072 -0
  14. package/ios/HybridAixCellView.swift +174 -0
  15. package/ios/HybridAixComposer.swift +119 -0
  16. package/lib/commonjs/aix.js +25 -0
  17. package/lib/commonjs/aix.js.map +1 -0
  18. package/lib/commonjs/fade-in/createUsePool.js +50 -0
  19. package/lib/commonjs/fade-in/createUsePool.js.map +1 -0
  20. package/lib/commonjs/fade-in/createUseStaggered.js +82 -0
  21. package/lib/commonjs/fade-in/createUseStaggered.js.map +1 -0
  22. package/lib/commonjs/fade-in/index.js +78 -0
  23. package/lib/commonjs/fade-in/index.js.map +1 -0
  24. package/lib/commonjs/footer.js +28 -0
  25. package/lib/commonjs/footer.js.map +1 -0
  26. package/lib/commonjs/index.js +48 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/commonjs/package.json +1 -0
  29. package/lib/commonjs/views/aix.nitro.js +6 -0
  30. package/lib/commonjs/views/aix.nitro.js.map +1 -0
  31. package/lib/module/aix.js +20 -0
  32. package/lib/module/aix.js.map +1 -0
  33. package/lib/module/fade-in/createUsePool.js +46 -0
  34. package/lib/module/fade-in/createUsePool.js.map +1 -0
  35. package/lib/module/fade-in/createUseStaggered.js +79 -0
  36. package/lib/module/fade-in/createUseStaggered.js.map +1 -0
  37. package/lib/module/fade-in/index.js +74 -0
  38. package/lib/module/fade-in/index.js.map +1 -0
  39. package/lib/module/footer.js +23 -0
  40. package/lib/module/footer.js.map +1 -0
  41. package/lib/module/index.js +13 -0
  42. package/lib/module/index.js.map +1 -0
  43. package/lib/module/package.json +1 -0
  44. package/lib/module/views/aix.nitro.js +4 -0
  45. package/lib/module/views/aix.nitro.js.map +1 -0
  46. package/lib/typescript/src/aix.d.ts +14 -0
  47. package/lib/typescript/src/aix.d.ts.map +1 -0
  48. package/lib/typescript/src/fade-in/createUsePool.d.ts +5 -0
  49. package/lib/typescript/src/fade-in/createUsePool.d.ts.map +1 -0
  50. package/lib/typescript/src/fade-in/createUseStaggered.d.ts +2 -0
  51. package/lib/typescript/src/fade-in/createUseStaggered.d.ts.map +1 -0
  52. package/lib/typescript/src/fade-in/index.d.ts +5 -0
  53. package/lib/typescript/src/fade-in/index.d.ts.map +1 -0
  54. package/lib/typescript/src/footer.d.ts +5 -0
  55. package/lib/typescript/src/footer.d.ts.map +1 -0
  56. package/lib/typescript/src/index.d.ts +10 -0
  57. package/lib/typescript/src/index.d.ts.map +1 -0
  58. package/lib/typescript/src/views/aix.nitro.d.ts +101 -0
  59. package/lib/typescript/src/views/aix.nitro.d.ts.map +1 -0
  60. package/nitro.json +26 -0
  61. package/nitrogen/generated/.gitattributes +1 -0
  62. package/nitrogen/generated/android/Aix+autolinking.cmake +91 -0
  63. package/nitrogen/generated/android/Aix+autolinking.gradle +27 -0
  64. package/nitrogen/generated/android/AixOnLoad.cpp +70 -0
  65. package/nitrogen/generated/android/AixOnLoad.hpp +25 -0
  66. package/nitrogen/generated/android/c++/JAixAdditionalContentInsets.hpp +61 -0
  67. package/nitrogen/generated/android/c++/JAixAdditionalContentInsetsProp.hpp +63 -0
  68. package/nitrogen/generated/android/c++/JAixScrollIndicatorInsetValue.hpp +61 -0
  69. package/nitrogen/generated/android/c++/JAixScrollIndicatorInsets.hpp +63 -0
  70. package/nitrogen/generated/android/c++/JAixScrollOnFooterSizeUpdate.hpp +65 -0
  71. package/nitrogen/generated/android/c++/JHybridAixCellViewSpec.cpp +65 -0
  72. package/nitrogen/generated/android/c++/JHybridAixCellViewSpec.hpp +68 -0
  73. package/nitrogen/generated/android/c++/JHybridAixComposerSpec.cpp +48 -0
  74. package/nitrogen/generated/android/c++/JHybridAixComposerSpec.hpp +65 -0
  75. package/nitrogen/generated/android/c++/JHybridAixSpec.cpp +137 -0
  76. package/nitrogen/generated/android/c++/JHybridAixSpec.hpp +79 -0
  77. package/nitrogen/generated/android/c++/views/JHybridAixCellViewStateUpdater.cpp +60 -0
  78. package/nitrogen/generated/android/c++/views/JHybridAixCellViewStateUpdater.hpp +49 -0
  79. package/nitrogen/generated/android/c++/views/JHybridAixComposerStateUpdater.cpp +53 -0
  80. package/nitrogen/generated/android/c++/views/JHybridAixComposerStateUpdater.hpp +49 -0
  81. package/nitrogen/generated/android/c++/views/JHybridAixStateUpdater.cpp +80 -0
  82. package/nitrogen/generated/android/c++/views/JHybridAixStateUpdater.hpp +49 -0
  83. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/AixAdditionalContentInsets.kt +41 -0
  84. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/AixAdditionalContentInsetsProp.kt +41 -0
  85. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/AixOnLoad.kt +35 -0
  86. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/AixScrollIndicatorInsetValue.kt +41 -0
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/AixScrollIndicatorInsets.kt +41 -0
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/AixScrollOnFooterSizeUpdate.kt +44 -0
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/HybridAixCellViewSpec.kt +65 -0
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/HybridAixComposerSpec.kt +55 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/HybridAixSpec.kt +101 -0
  92. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/views/HybridAixCellViewManager.kt +50 -0
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/views/HybridAixCellViewStateUpdater.kt +23 -0
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/views/HybridAixComposerManager.kt +50 -0
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/views/HybridAixComposerStateUpdater.kt +23 -0
  96. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/views/HybridAixManager.kt +50 -0
  97. package/nitrogen/generated/android/kotlin/com/margelo/nitro/aix/views/HybridAixStateUpdater.kt +23 -0
  98. package/nitrogen/generated/ios/Aix+autolinking.rb +60 -0
  99. package/nitrogen/generated/ios/Aix-Swift-Cxx-Bridge.cpp +67 -0
  100. package/nitrogen/generated/ios/Aix-Swift-Cxx-Bridge.hpp +222 -0
  101. package/nitrogen/generated/ios/Aix-Swift-Cxx-Umbrella.hpp +70 -0
  102. package/nitrogen/generated/ios/AixAutolinking.mm +49 -0
  103. package/nitrogen/generated/ios/AixAutolinking.swift +55 -0
  104. package/nitrogen/generated/ios/c++/HybridAixCellViewSpecSwift.cpp +11 -0
  105. package/nitrogen/generated/ios/c++/HybridAixCellViewSpecSwift.hpp +80 -0
  106. package/nitrogen/generated/ios/c++/HybridAixComposerSpecSwift.cpp +11 -0
  107. package/nitrogen/generated/ios/c++/HybridAixComposerSpecSwift.hpp +69 -0
  108. package/nitrogen/generated/ios/c++/HybridAixSpecSwift.cpp +11 -0
  109. package/nitrogen/generated/ios/c++/HybridAixSpecSwift.hpp +142 -0
  110. package/nitrogen/generated/ios/c++/views/HybridAixCellViewComponent.mm +101 -0
  111. package/nitrogen/generated/ios/c++/views/HybridAixComponent.mm +126 -0
  112. package/nitrogen/generated/ios/c++/views/HybridAixComposerComponent.mm +92 -0
  113. package/nitrogen/generated/ios/swift/AixAdditionalContentInsets.swift +47 -0
  114. package/nitrogen/generated/ios/swift/AixAdditionalContentInsetsProp.swift +71 -0
  115. package/nitrogen/generated/ios/swift/AixScrollIndicatorInsetValue.swift +47 -0
  116. package/nitrogen/generated/ios/swift/AixScrollIndicatorInsets.swift +71 -0
  117. package/nitrogen/generated/ios/swift/AixScrollOnFooterSizeUpdate.swift +89 -0
  118. package/nitrogen/generated/ios/swift/HybridAixCellViewSpec.swift +57 -0
  119. package/nitrogen/generated/ios/swift/HybridAixCellViewSpec_cxx.swift +151 -0
  120. package/nitrogen/generated/ios/swift/HybridAixComposerSpec.swift +56 -0
  121. package/nitrogen/generated/ios/swift/HybridAixComposerSpec_cxx.swift +131 -0
  122. package/nitrogen/generated/ios/swift/HybridAixSpec.swift +63 -0
  123. package/nitrogen/generated/ios/swift/HybridAixSpec_cxx.swift +292 -0
  124. package/nitrogen/generated/shared/c++/AixAdditionalContentInsets.hpp +79 -0
  125. package/nitrogen/generated/shared/c++/AixAdditionalContentInsetsProp.hpp +81 -0
  126. package/nitrogen/generated/shared/c++/AixScrollIndicatorInsetValue.hpp +79 -0
  127. package/nitrogen/generated/shared/c++/AixScrollIndicatorInsets.hpp +81 -0
  128. package/nitrogen/generated/shared/c++/AixScrollOnFooterSizeUpdate.hpp +83 -0
  129. package/nitrogen/generated/shared/c++/HybridAixCellViewSpec.cpp +24 -0
  130. package/nitrogen/generated/shared/c++/HybridAixCellViewSpec.hpp +65 -0
  131. package/nitrogen/generated/shared/c++/HybridAixComposerSpec.cpp +21 -0
  132. package/nitrogen/generated/shared/c++/HybridAixComposerSpec.hpp +62 -0
  133. package/nitrogen/generated/shared/c++/HybridAixSpec.cpp +36 -0
  134. package/nitrogen/generated/shared/c++/HybridAixSpec.hpp +85 -0
  135. package/nitrogen/generated/shared/c++/views/HybridAixCellViewComponent.cpp +99 -0
  136. package/nitrogen/generated/shared/c++/views/HybridAixCellViewComponent.hpp +108 -0
  137. package/nitrogen/generated/shared/c++/views/HybridAixComponent.cpp +159 -0
  138. package/nitrogen/generated/shared/c++/views/HybridAixComponent.hpp +117 -0
  139. package/nitrogen/generated/shared/c++/views/HybridAixComposerComponent.cpp +75 -0
  140. package/nitrogen/generated/shared/c++/views/HybridAixComposerComponent.hpp +106 -0
  141. package/nitrogen/generated/shared/json/AixCellViewConfig.json +11 -0
  142. package/nitrogen/generated/shared/json/AixComposerConfig.json +9 -0
  143. package/nitrogen/generated/shared/json/AixConfig.json +16 -0
  144. package/package.json +113 -14
  145. package/src/aix.tsx +43 -0
  146. package/src/fade-in/createUsePool.ts +46 -0
  147. package/src/fade-in/createUseStaggered.ts +82 -0
  148. package/src/fade-in/index.tsx +97 -0
  149. package/src/footer.tsx +30 -0
  150. package/src/index.ts +20 -16
  151. package/src/views/aix.nitro.ts +148 -0
  152. package/docs/API.md +0 -288
  153. package/jest.config.js +0 -17
  154. package/lib/__tests__/deferredIterable.test.d.ts +0 -1
  155. package/lib/__tests__/deferredIterable.test.js +0 -108
  156. package/lib/__tests__/filter.test.d.ts +0 -1
  157. package/lib/__tests__/filter.test.js +0 -53
  158. package/lib/__tests__/flatMap.test.d.ts +0 -1
  159. package/lib/__tests__/flatMap.test.js +0 -77
  160. package/lib/__tests__/lookahead.test.d.ts +0 -1
  161. package/lib/__tests__/lookahead.test.js +0 -57
  162. package/lib/__tests__/map.test.d.ts +0 -1
  163. package/lib/__tests__/map.test.js +0 -53
  164. package/lib/__tests__/merge.test.d.ts +0 -1
  165. package/lib/__tests__/merge.test.js +0 -55
  166. package/lib/__tests__/reduce.test.d.ts +0 -1
  167. package/lib/__tests__/reduce.test.js +0 -52
  168. package/lib/__tests__/spanAll.test.d.ts +0 -1
  169. package/lib/__tests__/spanAll.test.js +0 -120
  170. package/lib/concat.d.ts +0 -4
  171. package/lib/concat.js +0 -126
  172. package/lib/deferred.d.ts +0 -9
  173. package/lib/deferred.js +0 -18
  174. package/lib/deferredIterable.d.ts +0 -22
  175. package/lib/deferredIterable.js +0 -111
  176. package/lib/filter.d.ts +0 -7
  177. package/lib/filter.js +0 -99
  178. package/lib/flatMap.d.ts +0 -1
  179. package/lib/flatMap.js +0 -119
  180. package/lib/fromEvent.d.ts +0 -5
  181. package/lib/fromEvent.js +0 -13
  182. package/lib/index.d.ts +0 -16
  183. package/lib/index.js +0 -34
  184. package/lib/insert.d.ts +0 -4
  185. package/lib/insert.js +0 -113
  186. package/lib/interval.d.ts +0 -4
  187. package/lib/interval.js +0 -64
  188. package/lib/iterableToArray.d.ts +0 -1
  189. package/lib/iterableToArray.js +0 -87
  190. package/lib/iteratorToIterable.d.ts +0 -6
  191. package/lib/iteratorToIterable.js +0 -70
  192. package/lib/lookahead.d.ts +0 -10
  193. package/lib/lookahead.js +0 -78
  194. package/lib/map.d.ts +0 -4
  195. package/lib/map.js +0 -98
  196. package/lib/merge.d.ts +0 -6
  197. package/lib/merge.js +0 -21
  198. package/lib/of.d.ts +0 -3
  199. package/lib/of.js +0 -5
  200. package/lib/reduce.d.ts +0 -4
  201. package/lib/reduce.js +0 -92
  202. package/lib/restToIterable.d.ts +0 -4
  203. package/lib/restToIterable.js +0 -73
  204. package/lib/spanAll.d.ts +0 -1
  205. package/lib/spanAll.js +0 -29
  206. package/lib/tap.d.ts +0 -4
  207. package/lib/tap.js +0 -96
  208. package/lib/toCallbacks.d.ts +0 -11
  209. package/lib/toCallbacks.js +0 -97
  210. package/lib/zip.d.ts +0 -4
  211. package/lib/zip.js +0 -75
  212. package/src/__tests__/deferredIterable.test.ts +0 -22
  213. package/src/__tests__/filter.test.ts +0 -10
  214. package/src/__tests__/flatMap.test.ts +0 -12
  215. package/src/__tests__/lookahead.test.ts +0 -9
  216. package/src/__tests__/map.test.ts +0 -10
  217. package/src/__tests__/merge.test.ts +0 -9
  218. package/src/__tests__/reduce.test.ts +0 -10
  219. package/src/__tests__/spanAll.test.ts +0 -17
  220. package/src/concat.ts +0 -13
  221. package/src/deferred.ts +0 -16
  222. package/src/deferredIterable.ts +0 -111
  223. package/src/filter.ts +0 -16
  224. package/src/flatMap.ts +0 -9
  225. package/src/fromEvent.ts +0 -16
  226. package/src/insert.ts +0 -13
  227. package/src/interval.ts +0 -20
  228. package/src/iterableToArray.ts +0 -7
  229. package/src/iteratorToIterable.ts +0 -12
  230. package/src/lookahead.ts +0 -27
  231. package/src/map.ts +0 -11
  232. package/src/merge.ts +0 -18
  233. package/src/of.ts +0 -4
  234. package/src/reduce.ts +0 -12
  235. package/src/restToIterable.ts +0 -8
  236. package/src/spanAll.ts +0 -26
  237. package/src/tap.ts +0 -11
  238. package/src/toCallbacks.ts +0 -27
  239. package/src/zip.ts +0 -19
  240. package/tsconfig.json +0 -63
  241. package/yarn.lock +0 -3514
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { callback, getHostComponent } from 'react-native-nitro-modules';
4
+ import AixConfig from '../nitrogen/generated/shared/json/AixConfig.json';
5
+ import { forwardRef } from 'react';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const AixInternal = getHostComponent('Aix', () => AixConfig);
8
+ export const Aix = /*#__PURE__*/forwardRef(function Aix(props, ref) {
9
+ return /*#__PURE__*/_jsx(AixInternal, {
10
+ ...props,
11
+ hybridRef: ref ? callback(r => {
12
+ if (typeof ref === 'function') {
13
+ ref(r);
14
+ } else {
15
+ ref.current = r;
16
+ }
17
+ }) : undefined
18
+ });
19
+ });
20
+ //# sourceMappingURL=aix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["callback","getHostComponent","AixConfig","forwardRef","jsx","_jsx","AixInternal","Aix","props","ref","hybridRef","r","current","undefined"],"sourceRoot":"../../src","sources":["aix.tsx"],"mappings":";;AAAA,SACEA,QAAQ,EACRC,gBAAgB,QAEX,4BAA4B;AACnC,OAAOC,SAAS,MAAM,kDAAkD;AAExE,SAASC,UAAU,QAAQ,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAIlC,MAAMC,WAAW,GAAGL,gBAAgB,CAClC,KAAK,EACL,MAAMC,SACR,CAAC;AAED,OAAO,MAAMK,GAAG,gBAAGJ,UAAU,CAC3B,SAASI,GAAGA,CAACC,KAAK,EAAEC,GAAG,EAAE;EACvB,oBACEJ,IAAA,CAACC,WAAW;IAAA,GACNE,KAAK;IACTE,SAAS,EACPD,GAAG,GACCT,QAAQ,CAAEW,CAAC,IAAK;MACd,IAAI,OAAOF,GAAG,KAAK,UAAU,EAAE;QAC7BA,GAAG,CAACE,CAAC,CAAC;MACR,CAAC,MAAM;QACLF,GAAG,CAACG,OAAO,GAAGD,CAAC;MACjB;IACF,CAAC,CAAC,GACFE;EACL,CACF,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ import { useState, useRef, useEffect, useCallback } from 'react';
4
+ export function createUsePool(maxPoolSize) {
5
+ // Use parallel arrays instead of one array for fast array operations
6
+ const items = [];
7
+ const setters = [];
8
+ const removeItem = (item, setInactive) => {
9
+ const index = items.indexOf(item);
10
+ if (index !== -1) {
11
+ if (setInactive) {
12
+ setters[index](false);
13
+ }
14
+ items.splice(index, 1);
15
+ setters.splice(index, 1);
16
+ }
17
+ };
18
+ const usePool = () => {
19
+ // Use a stable object reference as the key
20
+ const item = useRef({}).current;
21
+ const [isActive, setIsActive] = useState(true);
22
+
23
+ // A function that is stable and only changes when the item changes
24
+ const evict = useCallback(() => removeItem(item, true), [item]);
25
+ useEffect(() => {
26
+ items.push(item);
27
+ setters.push(setIsActive);
28
+
29
+ // Evict oldest item if over capacity
30
+ if (maxPoolSize && items.length > maxPoolSize) {
31
+ items.shift();
32
+ const evictedListener = setters.shift();
33
+ evictedListener(false);
34
+ }
35
+
36
+ // Remove from pool when unmounting
37
+ return () => removeItem(item);
38
+ }, [item]);
39
+ return {
40
+ isActive,
41
+ evict
42
+ };
43
+ };
44
+ return usePool;
45
+ }
46
+ //# sourceMappingURL=createUsePool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useRef","useEffect","useCallback","createUsePool","maxPoolSize","items","setters","removeItem","item","setInactive","index","indexOf","splice","usePool","current","isActive","setIsActive","evict","push","length","shift","evictedListener"],"sourceRoot":"../../../src","sources":["fade-in/createUsePool.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,SAAS,EAAEC,WAAW,QAAQ,OAAO;AAEhE,OAAO,SAASC,aAAaA,CAACC,WAAoB,EAAE;EAClD;EACA,MAAMC,KAAe,GAAG,EAAE;EAC1B,MAAMC,OAAqC,GAAG,EAAE;EAEhD,MAAMC,UAAU,GAAGA,CAACC,IAAY,EAAEC,WAAqB,KAAK;IAC1D,MAAMC,KAAK,GAAGL,KAAK,CAACM,OAAO,CAACH,IAAI,CAAC;IACjC,IAAIE,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,IAAID,WAAW,EAAE;QACfH,OAAO,CAACI,KAAK,CAAC,CAAE,KAAK,CAAC;MACxB;MACAL,KAAK,CAACO,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MACtBJ,OAAO,CAACM,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;IAC1B;EACF,CAAC;EAED,MAAMG,OAAO,GAAGA,CAAA,KAAM;IACpB;IACA,MAAML,IAAI,GAAGR,MAAM,CAAC,CAAC,CAAC,CAAC,CAACc,OAAO;IAC/B,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGjB,QAAQ,CAAC,IAAI,CAAC;;IAE9C;IACA,MAAMkB,KAAK,GAAGf,WAAW,CAAC,MAAMK,UAAU,CAACC,IAAI,EAAE,IAAI,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;IAE/DP,SAAS,CAAC,MAAM;MACdI,KAAK,CAACa,IAAI,CAACV,IAAI,CAAC;MAChBF,OAAO,CAACY,IAAI,CAACF,WAAW,CAAC;;MAEzB;MACA,IAAIZ,WAAW,IAAIC,KAAK,CAACc,MAAM,GAAGf,WAAW,EAAE;QAC7CC,KAAK,CAACe,KAAK,CAAC,CAAC;QACb,MAAMC,eAAe,GAAGf,OAAO,CAACc,KAAK,CAAC,CAAE;QACxCC,eAAe,CAAC,KAAK,CAAC;MACxB;;MAEA;MACA,OAAO,MAAMd,UAAU,CAACC,IAAI,CAAC;IAC/B,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;IAEV,OAAO;MAAEO,QAAQ;MAAEE;IAAM,CAAC;EAC5B,CAAC;EAED,OAAOJ,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+
5
+ // Creates a staggered animation system - only one animation starts per frame/delay
6
+ export function createUseStaggered(delay) {
7
+ const animationQueue = [];
8
+ let isProcessing = false;
9
+
10
+ // Schedule next animation with delay or requestAnimationFrame
11
+ const scheduleNext = () => {
12
+ if (delay && delay > 0) {
13
+ setTimeout(processNextAnimation, delay);
14
+ } else {
15
+ requestAnimationFrame(processNextAnimation);
16
+ }
17
+ };
18
+ const processNextAnimation = () => {
19
+ if (animationQueue.length === 0) {
20
+ isProcessing = false;
21
+ return;
22
+ }
23
+
24
+ // Calculate how many animations to process this cycle
25
+ const queueLength = animationQueue.length;
26
+ let animationsToProcess = 1;
27
+
28
+ // Catch-up logic: process more animations when queue is long
29
+ if (queueLength > 10) {
30
+ animationsToProcess = Math.min(5, Math.ceil(queueLength / 4));
31
+ } else if (queueLength > 5) {
32
+ animationsToProcess = 2;
33
+ }
34
+
35
+ // Process the calculated number of animations
36
+ for (let i = 0; i < animationsToProcess && animationQueue.length > 0; i++) {
37
+ const startAnimation = animationQueue.shift();
38
+ startAnimation();
39
+ }
40
+
41
+ // Continue processing or mark as idle
42
+ if (animationQueue.length > 0) {
43
+ scheduleNext();
44
+ } else {
45
+ isProcessing = false;
46
+ }
47
+ };
48
+ const queueAnimation = startFn => {
49
+ animationQueue.push(startFn);
50
+ if (!isProcessing) {
51
+ isProcessing = true;
52
+ scheduleNext();
53
+ }
54
+ };
55
+ const useStaggered = animationFn => {
56
+ const animationRef = useRef(animationFn);
57
+
58
+ // Queue animation on mount
59
+ useEffect(() => {
60
+ if (animationRef.current) {
61
+ queueAnimation(animationRef.current);
62
+ }
63
+ }, []);
64
+ useEffect(() => {
65
+ const animation = animationRef.current;
66
+ return () => {
67
+ // Clean up pending animation on unmount
68
+ if (animation) {
69
+ const index = animationQueue.indexOf(animation);
70
+ if (index !== -1) {
71
+ animationQueue.splice(index, 1);
72
+ }
73
+ }
74
+ };
75
+ }, []);
76
+ };
77
+ return useStaggered;
78
+ }
79
+ //# sourceMappingURL=createUseStaggered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","createUseStaggered","delay","animationQueue","isProcessing","scheduleNext","setTimeout","processNextAnimation","requestAnimationFrame","length","queueLength","animationsToProcess","Math","min","ceil","i","startAnimation","shift","queueAnimation","startFn","push","useStaggered","animationFn","animationRef","current","animation","index","indexOf","splice"],"sourceRoot":"../../../src","sources":["fade-in/createUseStaggered.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;;AAEzC;AACA,OAAO,SAASC,kBAAkBA,CAACC,KAAa,EAAE;EAChD,MAAMC,cAA8B,GAAG,EAAE;EACzC,IAAIC,YAAY,GAAG,KAAK;;EAExB;EACA,MAAMC,YAAY,GAAGA,CAAA,KAAM;IACzB,IAAIH,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE;MACtBI,UAAU,CAACC,oBAAoB,EAAEL,KAAK,CAAC;IACzC,CAAC,MAAM;MACLM,qBAAqB,CAACD,oBAAoB,CAAC;IAC7C;EACF,CAAC;EAED,MAAMA,oBAAoB,GAAGA,CAAA,KAAM;IACjC,IAAIJ,cAAc,CAACM,MAAM,KAAK,CAAC,EAAE;MAC/BL,YAAY,GAAG,KAAK;MACpB;IACF;;IAEA;IACA,MAAMM,WAAW,GAAGP,cAAc,CAACM,MAAM;IACzC,IAAIE,mBAAmB,GAAG,CAAC;;IAE3B;IACA,IAAID,WAAW,GAAG,EAAE,EAAE;MACpBC,mBAAmB,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,IAAI,CAACJ,WAAW,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC,MAAM,IAAIA,WAAW,GAAG,CAAC,EAAE;MAC1BC,mBAAmB,GAAG,CAAC;IACzB;;IAEA;IACA,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,mBAAmB,IAAIR,cAAc,CAACM,MAAM,GAAG,CAAC,EAAEM,CAAC,EAAE,EAAE;MACzE,MAAMC,cAAc,GAAGb,cAAc,CAACc,KAAK,CAAC,CAAE;MAC9CD,cAAc,CAAC,CAAC;IAClB;;IAEA;IACA,IAAIb,cAAc,CAACM,MAAM,GAAG,CAAC,EAAE;MAC7BJ,YAAY,CAAC,CAAC;IAChB,CAAC,MAAM;MACLD,YAAY,GAAG,KAAK;IACtB;EACF,CAAC;EAED,MAAMc,cAAc,GAAIC,OAAmB,IAAK;IAC9ChB,cAAc,CAACiB,IAAI,CAACD,OAAO,CAAC;IAE5B,IAAI,CAACf,YAAY,EAAE;MACjBA,YAAY,GAAG,IAAI;MACnBC,YAAY,CAAC,CAAC;IAChB;EACF,CAAC;EAED,MAAMgB,YAAY,GAAIC,WAAuB,IAAK;IAChD,MAAMC,YAAY,GAAGvB,MAAM,CAAsBsB,WAAW,CAAC;;IAE7D;IACAvB,SAAS,CAAC,MAAM;MACd,IAAIwB,YAAY,CAACC,OAAO,EAAE;QACxBN,cAAc,CAACK,YAAY,CAACC,OAAO,CAAC;MACtC;IACF,CAAC,EAAE,EAAE,CAAC;IAENzB,SAAS,CAAC,MAAM;MACd,MAAM0B,SAAS,GAAGF,YAAY,CAACC,OAAO;MACtC,OAAO,MAAM;QACX;QACA,IAAIC,SAAS,EAAE;UACb,MAAMC,KAAK,GAAGvB,cAAc,CAACwB,OAAO,CAACF,SAAS,CAAC;UAC/C,IAAIC,KAAK,KAAK,CAAC,CAAC,EAAE;YAChBvB,cAAc,CAACyB,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;UACjC;QACF;MACF,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;EACR,CAAC;EAED,OAAOL,YAAY;AACrB","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ import { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
4
+ import { createUsePool } from './createUsePool';
5
+ import { createUseStaggered } from './createUseStaggered';
6
+ import Animated from 'react-native-reanimated';
7
+ import { Children, memo, useState } from 'react';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const useIsAnimatedInPool = createUsePool();
10
+ const useStaggeredAnimation = createUseStaggered(32);
11
+ function FadeIn({
12
+ children,
13
+ onFadedIn,
14
+ Component = Animated.Text
15
+ }) {
16
+ const progress = useSharedValue(0);
17
+ const startAnimation = () => {
18
+ progress.set(withTiming(1, {
19
+ duration: 500
20
+ }));
21
+ setTimeout(onFadedIn, 500);
22
+ };
23
+ useStaggeredAnimation(startAnimation);
24
+ const animatedStyle = useAnimatedStyle(() => ({
25
+ opacity: progress.get()
26
+ }));
27
+ return /*#__PURE__*/_jsx(Component, {
28
+ style: animatedStyle,
29
+ children: children
30
+ });
31
+ }
32
+ const AnimatedFadeInText = /*#__PURE__*/memo(function AnimatedFadeInText(props) {
33
+ const chunks = props.text.split(' ');
34
+ return chunks.map((chunk, i) => {
35
+ if (i < chunks.length - 1) chunk += ' ';
36
+ return /*#__PURE__*/_jsx(TextFadeInStaggered, {
37
+ text: chunk
38
+ }, i);
39
+ });
40
+ });
41
+ export const TextFadeInStaggeredIfStreaming = /*#__PURE__*/memo(function TextFadeInStaggeredIfStreaming({
42
+ children: childrenProp,
43
+ disabled
44
+ }) {
45
+ const [enabled] = useState(!disabled);
46
+ let children = childrenProp;
47
+ if (enabled && children) {
48
+ if (Array.isArray(children)) {
49
+ children = Children.map(children, (child, i) => typeof child === 'string' ? /*#__PURE__*/_jsx(AnimatedFadeInText, {
50
+ text: child
51
+ }, i) : child);
52
+ } else if (typeof children === 'string') {
53
+ children = /*#__PURE__*/_jsx(AnimatedFadeInText, {
54
+ text: children
55
+ });
56
+ }
57
+ }
58
+ return children;
59
+ });
60
+ const TextFadeInStaggered = /*#__PURE__*/memo(function TextFadeInStaggered({
61
+ text
62
+ }) {
63
+ const {
64
+ isActive,
65
+ evict
66
+ } = useIsAnimatedInPool();
67
+ return isActive ? /*#__PURE__*/_jsx(FadeIn, {
68
+ onFadedIn: () => {
69
+ evict();
70
+ },
71
+ children: text
72
+ }) : text;
73
+ });
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useAnimatedStyle","useSharedValue","withTiming","createUsePool","createUseStaggered","Animated","Children","memo","useState","jsx","_jsx","useIsAnimatedInPool","useStaggeredAnimation","FadeIn","children","onFadedIn","Component","Text","progress","startAnimation","set","duration","setTimeout","animatedStyle","opacity","get","style","AnimatedFadeInText","props","chunks","text","split","map","chunk","i","length","TextFadeInStaggered","TextFadeInStaggeredIfStreaming","childrenProp","disabled","enabled","Array","isArray","child","isActive","evict"],"sourceRoot":"../../../src","sources":["fade-in/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import { getHostComponent } from 'react-native-nitro-modules';
4
+ import AixComposerConfig from '../nitrogen/generated/shared/json/AixComposerConfig.json';
5
+ import { StyleSheet } from 'react-native';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const AixFooterInternal = getHostComponent('AixComposer', () => AixComposerConfig);
8
+ export function AixFooter(props) {
9
+ if (__DEV__) {
10
+ const flat = StyleSheet.flatten(props.style);
11
+ const broken = Object.keys({
12
+ paddingBottom: flat.paddingBottom,
13
+ padding: flat.padding
14
+ }).filter(key => flat[key] !== undefined);
15
+ if (broken.length) {
16
+ console.error(`<AixFooter /> You used ${broken.join(', ')} in the style prop. Vertical padding is not supported on AixFooter directly. Please apply it to a child view instead.`);
17
+ }
18
+ }
19
+ return /*#__PURE__*/_jsx(AixFooterInternal, {
20
+ ...props
21
+ });
22
+ }
23
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getHostComponent","AixComposerConfig","StyleSheet","jsx","_jsx","AixFooterInternal","AixFooter","props","__DEV__","flat","flatten","style","broken","Object","keys","paddingBottom","padding","filter","key","undefined","length","console","error","join"],"sourceRoot":"../../src","sources":["footer.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,4BAA4B;AAC7D,OAAOC,iBAAiB,MAAM,0DAA0D;AAExF,SAASC,UAAU,QAAQ,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEzC,MAAMC,iBAAiB,GAAGL,gBAAgB,CACxC,aAAa,EACb,MAAMC,iBACR,CAAC;AAED,OAAO,SAASK,SAASA,CACvBC,KAAqD,EACrD;EACA,IAAIC,OAAO,EAAE;IACX,MAAMC,IAAI,GAAGP,UAAU,CAACQ,OAAO,CAACH,KAAK,CAACI,KAAK,CAAC;IAC5C,MAAMC,MAAM,GAAGC,MAAM,CAACC,IAAI,CAAC;MACzBC,aAAa,EAAEN,IAAI,CAACM,aAAa;MACjCC,OAAO,EAAEP,IAAI,CAACO;IAChB,CAAC,CAAC,CAACC,MAAM,CAAEC,GAAG,IAAKT,IAAI,CAACS,GAAG,CAAsB,KAAKC,SAAS,CAAC;IAEhE,IAAIP,MAAM,CAACQ,MAAM,EAAE;MACjBC,OAAO,CAACC,KAAK,CACX,0BAA0BV,MAAM,CAACW,IAAI,CACnC,IACF,CAAC,uHACH,CAAC;IACH;EACF;EACA,oBAAOnB,IAAA,CAACC,iBAAiB;IAAA,GAAKE;EAAK,CAAG,CAAC;AACzC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import { getHostComponent } from 'react-native-nitro-modules';
4
+ import AixCellViewConfig from '../nitrogen/generated/shared/json/AixCellViewConfig.json';
5
+ import { useRef } from 'react';
6
+ export * from './fade-in';
7
+ export { Aix } from './aix';
8
+ export { AixFooter } from './footer';
9
+ export const AixCell = getHostComponent('AixCellView', () => AixCellViewConfig);
10
+ export function useAixRef() {
11
+ return useRef(null);
12
+ }
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getHostComponent","AixCellViewConfig","useRef","Aix","AixFooter","AixCell","useAixRef"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAwB,4BAA4B;AAC7E,OAAOC,iBAAiB,MAAM,0DAA0D;AAExF,SAASC,MAAM,QAAQ,OAAO;AAE9B,cAAc,WAAW;AAEzB,SAASC,GAAG,QAAqB,OAAO;AACxC,SAASC,SAAS,QAAQ,UAAU;AAEpC,OAAO,MAAMC,OAAO,GAAGL,gBAAgB,CACrC,aAAa,EACb,MAAMC,iBACR,CAAC;AAID,OAAO,SAASK,SAASA,CAAA,EAAG;EAC1B,OAAOJ,MAAM,CAAgB,IAAI,CAAC;AACpC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=aix.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/aix.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import { type HybridRef } from 'react-native-nitro-modules';
2
+ import type { AixProps, AixMethods } from './views/aix.nitro';
3
+ export type AixRef = HybridRef<AixProps, AixMethods>;
4
+ export declare const Aix: import("react").ForwardRefExoticComponent<{
5
+ hybridRef?: import("react-native-nitro-modules").NitroViewWrappedCallback<((ref: import("react-native-nitro-modules").HybridView<AixProps, AixMethods>) => void) | undefined> | undefined;
6
+ shouldStartAtEnd: boolean;
7
+ scrollOnFooterSizeUpdate?: import("./views/aix.nitro").AixScrollOnFooterSizeUpdate | undefined;
8
+ scrollEndReachedThreshold?: number | undefined;
9
+ additionalContentInsets?: import("./views/aix.nitro").AixAdditionalContentInsetsProp | undefined;
10
+ additionalScrollIndicatorInsets?: import("./views/aix.nitro").AixScrollIndicatorInsets | undefined;
11
+ mainScrollViewID?: string | undefined;
12
+ penultimateCellIndex?: number | undefined;
13
+ } & import("react-native").ViewProps & import("react").RefAttributes<AixRef>>;
14
+ //# sourceMappingURL=aix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aix.d.ts","sourceRoot":"","sources":["../../../src/aix.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG7D,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AAOpD,eAAO,MAAM,GAAG;;;;;;;;;6EAmBf,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare function createUsePool(maxPoolSize?: number): () => {
2
+ isActive: boolean;
3
+ evict: () => void;
4
+ };
5
+ //# sourceMappingURL=createUsePool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUsePool.d.ts","sourceRoot":"","sources":["../../../../src/fade-in/createUsePool.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM;;;EA2CjD"}
@@ -0,0 +1,2 @@
1
+ export declare function createUseStaggered(delay: number): (animationFn: () => void) => void;
2
+ //# sourceMappingURL=createUseStaggered.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUseStaggered.d.ts","sourceRoot":"","sources":["../../../../src/fade-in/createUseStaggered.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,iBAqDX,MAAM,IAAI,UAyB9C"}
@@ -0,0 +1,5 @@
1
+ export declare const TextFadeInStaggeredIfStreaming: import("react").NamedExoticComponent<{
2
+ children: React.ReactNode;
3
+ disabled: boolean;
4
+ }>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fade-in/index.tsx"],"names":[],"mappings":"AAkDA,eAAO,MAAM,8BAA8B;cAK7B,KAAK,CAAC,SAAS;cACf,OAAO;EAqBpB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { AixComposerProps } from './views/aix.nitro';
2
+ declare const AixFooterInternal: import("react-native-nitro-modules").ReactNativeView<AixComposerProps, {}>;
3
+ export declare function AixFooter(props: React.ComponentProps<typeof AixFooterInternal>): import("react/jsx-runtime").JSX.Element;
4
+ export {};
5
+ //# sourceMappingURL=footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../src/footer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAGzD,QAAA,MAAM,iBAAiB,4EAGtB,CAAA;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,2CAkBtD"}
@@ -0,0 +1,10 @@
1
+ import { type HybridRef } from 'react-native-nitro-modules';
2
+ import type { AixCellViewProps } from './views/aix.nitro';
3
+ import type { AixRef } from './aix';
4
+ export * from './fade-in';
5
+ export { Aix, type AixRef } from './aix';
6
+ export { AixFooter } from './footer';
7
+ export declare const AixCell: import("react-native-nitro-modules").ReactNativeView<AixCellViewProps, {}>;
8
+ export type AixCellViewRef = HybridRef<AixCellViewProps, {}>;
9
+ export declare function useAixRef(): import("react").RefObject<AixRef | null>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACnC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,eAAO,MAAM,OAAO,4EAGnB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;AAE5D,wBAAgB,SAAS,6CAExB"}
@@ -0,0 +1,101 @@
1
+ import type { HybridView, HybridViewProps, HybridViewMethods } from 'react-native-nitro-modules';
2
+ export interface AixAdditionalContentInsets {
3
+ whenKeyboardOpen: number;
4
+ whenKeyboardClosed: number;
5
+ }
6
+ export interface AixAdditionalContentInsetsProp {
7
+ top?: AixAdditionalContentInsets;
8
+ bottom?: AixAdditionalContentInsets;
9
+ }
10
+ export interface AixScrollIndicatorInsetValue {
11
+ whenKeyboardOpen: number;
12
+ whenKeyboardClosed: number;
13
+ }
14
+ export interface AixScrollIndicatorInsets {
15
+ top?: AixScrollIndicatorInsetValue;
16
+ bottom?: AixScrollIndicatorInsetValue;
17
+ }
18
+ export interface AixScrollOnFooterSizeUpdate {
19
+ enabled: boolean;
20
+ scrolledToEndThreshold?: number;
21
+ animated?: boolean;
22
+ }
23
+ export interface AixProps extends HybridViewProps {
24
+ shouldStartAtEnd: boolean;
25
+ scrollOnFooterSizeUpdate?: AixScrollOnFooterSizeUpdate;
26
+ /**
27
+ * The number of pixels from the bottom of the scroll view to the end of the content that is considered "near the end".
28
+ *
29
+ * If the scroll view is scrolled to the end of the content, and the content is less than this threshold, the content will be shifted up when the keyboard is opened.
30
+ *
31
+ * By default, it will be the greater of the current blank size, or 200.
32
+ *
33
+ * TODO make this a more adaptive prop, like { strategy: 'blank-size', min: 200 } | { strategy: 'fixed', value: 200 }
34
+ *
35
+ */
36
+ scrollEndReachedThreshold?: number;
37
+ /**
38
+ * Scroll end blank size threshold.
39
+ *
40
+ * If the blank size is less than this threshold, then the content will collapse to the keyboard when the keyboard is opened.
41
+ *
42
+ * You likely don't need to customize this much.
43
+ *
44
+ * Default: 0
45
+ *
46
+ * TODO we might want to implement this, but i'm not sure.
47
+ *
48
+ * By default, the content will collapse to the keyboard on opening if the blank size is less than half the size of the scroll view parent, and greater than the keyboard height.
49
+ */
50
+ additionalContentInsets?: AixAdditionalContentInsetsProp;
51
+ /**
52
+ * Additional insets for the scroll indicator, added to existing safe area insets.
53
+ * Applied to verticalScrollIndicatorInsets on iOS.
54
+ */
55
+ additionalScrollIndicatorInsets?: AixScrollIndicatorInsets;
56
+ /**
57
+ * The nativeID of the scroll view to use.
58
+ *
59
+ * If provided, will search for a scroll view with this accessibilityIdentifier.
60
+ * If not provided or not found, falls back to the default subview iteration logic.
61
+ */
62
+ mainScrollViewID?: string;
63
+ /**
64
+ * Used to index of the second-to-last message.
65
+ *
66
+ * For AI chat apps, it should correspond to the index of the last user message.
67
+ *
68
+ * By default, it will simply be the seccond-to-last item. Specifically, it will correspond to the Cell index before the <Cell isLast />.
69
+ *
70
+ * However, if you use custom message types, you can override it with this prop.
71
+ *
72
+ * For example, if you use a "<Timestamp />" row in your LegendList or FlashList implementation, then you can set this value.
73
+ *
74
+ * This indicates which message will be scrolled into view.
75
+ *
76
+ */
77
+ penultimateCellIndex?: number;
78
+ }
79
+ export interface AixMethods extends HybridViewMethods {
80
+ scrollToEnd(animated?: boolean): void;
81
+ scrollToIndexWhenBlankSizeReady(index: number, animated?: boolean, waitForKeyboardToEnd?: boolean): void;
82
+ }
83
+ export type Aix = HybridView<AixProps, AixMethods, {
84
+ ios: 'swift';
85
+ android: 'kotlin';
86
+ }>;
87
+ export interface AixCellViewProps extends HybridViewProps {
88
+ isLast: boolean;
89
+ index: number;
90
+ }
91
+ export type AixCellView = HybridView<AixCellViewProps, {}, {
92
+ ios: 'swift';
93
+ android: 'kotlin';
94
+ }>;
95
+ export interface AixComposerProps extends HybridViewProps {
96
+ }
97
+ export type AixComposer = HybridView<AixComposerProps, {}, {
98
+ ios: 'swift';
99
+ android: 'kotlin';
100
+ }>;
101
+ //# sourceMappingURL=aix.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aix.nitro.d.ts","sourceRoot":"","sources":["../../../../src/views/aix.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,0BAA0B,CAAA;IAChC,MAAM,CAAC,EAAE,0BAA0B,CAAA;CACpC;AAED,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,4BAA4B,CAAA;IAClC,MAAM,CAAC,EAAE,4BAA4B,CAAA;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,QAAS,SAAQ,eAAe;IAC/C,gBAAgB,EAAE,OAAO,CAAA;IACzB,wBAAwB,CAAC,EAAE,2BAA2B,CAAA;IACtD;;;;;;;;;OASG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC;;;;;;;;;;;;OAYG;IAEH,uBAAuB,CAAC,EAAE,8BAA8B,CAAA;IAExD;;;OAGG;IACH,+BAA+B,CAAC,EAAE,wBAAwB,CAAA;IAE1D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACrC,+BAA+B,CAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,OAAO,EAClB,oBAAoB,CAAC,EAAE,OAAO,GAC7B,IAAI,CAAA;CACR;AAED,MAAM,MAAM,GAAG,GAAG,UAAU,CAC1B,QAAQ,EACR,UAAU,EACV;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CACpC,CAAA;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAClC,gBAAgB,EAChB,EAAE,EACF;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CACpC,CAAA;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;CAAG;AAE5D,MAAM,MAAM,WAAW,GAAG,UAAU,CAClC,gBAAgB,EAChB,EAAE,EACF;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CACpC,CAAA"}
package/nitro.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://nitro.margelo.com/nitro.schema.json",
3
+ "cxxNamespace": ["aix"],
4
+ "ios": {
5
+ "iosModuleName": "Aix"
6
+ },
7
+ "android": {
8
+ "androidNamespace": ["aix"],
9
+ "androidCxxLibName": "Aix"
10
+ },
11
+ "autolinking": {
12
+ "Aix": {
13
+ "swift": "HybridAix",
14
+ "kotlin": "HybridAix"
15
+ },
16
+ "AixCellView": {
17
+ "swift": "HybridAixCellView",
18
+ "kotlin": "HybridAixCellView"
19
+ },
20
+ "AixComposer": {
21
+ "swift": "HybridAixComposer",
22
+ "kotlin": "HybridAixComposer"
23
+ }
24
+ },
25
+ "ignorePaths": ["**/node_modules"]
26
+ }
@@ -0,0 +1 @@
1
+ ** linguist-generated=true
@@ -0,0 +1,91 @@
1
+ #
2
+ # Aix+autolinking.cmake
3
+ # This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ # https://github.com/mrousavy/nitro
5
+ # Copyright © 2026 Marc Rousavy @ Margelo
6
+ #
7
+
8
+ # This is a CMake file that adds all files generated by Nitrogen
9
+ # to the current CMake project.
10
+ #
11
+ # To use it, add this to your CMakeLists.txt:
12
+ # ```cmake
13
+ # include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/Aix+autolinking.cmake)
14
+ # ```
15
+
16
+ # Define a flag to check if we are building properly
17
+ add_definitions(-DBUILDING_AIX_WITH_GENERATED_CMAKE_PROJECT)
18
+
19
+ # Enable Raw Props parsing in react-native (for Nitro Views)
20
+ add_definitions(-DRN_SERIALIZABLE_STATE)
21
+
22
+ # Add all headers that were generated by Nitrogen
23
+ include_directories(
24
+ "../nitrogen/generated/shared/c++"
25
+ "../nitrogen/generated/android/c++"
26
+ "../nitrogen/generated/android/"
27
+ )
28
+
29
+ # Add all .cpp sources that were generated by Nitrogen
30
+ target_sources(
31
+ # CMake project name (Android C++ library name)
32
+ Aix PRIVATE
33
+ # Autolinking Setup
34
+ ../nitrogen/generated/android/AixOnLoad.cpp
35
+ # Shared Nitrogen C++ sources
36
+ ../nitrogen/generated/shared/c++/HybridAixSpec.cpp
37
+ ../nitrogen/generated/shared/c++/views/HybridAixComponent.cpp
38
+ ../nitrogen/generated/shared/c++/HybridAixCellViewSpec.cpp
39
+ ../nitrogen/generated/shared/c++/views/HybridAixCellViewComponent.cpp
40
+ ../nitrogen/generated/shared/c++/HybridAixComposerSpec.cpp
41
+ ../nitrogen/generated/shared/c++/views/HybridAixComposerComponent.cpp
42
+ # Android-specific Nitrogen C++ sources
43
+ ../nitrogen/generated/android/c++/JHybridAixSpec.cpp
44
+ ../nitrogen/generated/android/c++/views/JHybridAixStateUpdater.cpp
45
+ ../nitrogen/generated/android/c++/JHybridAixCellViewSpec.cpp
46
+ ../nitrogen/generated/android/c++/views/JHybridAixCellViewStateUpdater.cpp
47
+ ../nitrogen/generated/android/c++/JHybridAixComposerSpec.cpp
48
+ ../nitrogen/generated/android/c++/views/JHybridAixComposerStateUpdater.cpp
49
+ )
50
+
51
+ # From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
52
+ # Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake
53
+ target_compile_definitions(
54
+ Aix PRIVATE
55
+ -DFOLLY_NO_CONFIG=1
56
+ -DFOLLY_HAVE_CLOCK_GETTIME=1
57
+ -DFOLLY_USE_LIBCPP=1
58
+ -DFOLLY_CFG_NO_COROUTINES=1
59
+ -DFOLLY_MOBILE=1
60
+ -DFOLLY_HAVE_RECVMMSG=1
61
+ -DFOLLY_HAVE_PTHREAD=1
62
+ # Once we target android-23 above, we can comment
63
+ # the following line. NDK uses GNU style stderror_r() after API 23.
64
+ -DFOLLY_HAVE_XSI_STRERROR_R=1
65
+ )
66
+
67
+ # Add all libraries required by the generated specs
68
+ find_package(fbjni REQUIRED) # <-- Used for communication between Java <-> C++
69
+ find_package(ReactAndroid REQUIRED) # <-- Used to set up React Native bindings (e.g. CallInvoker/TurboModule)
70
+ find_package(react-native-nitro-modules REQUIRED) # <-- Used to create all HybridObjects and use the Nitro core library
71
+
72
+ # Link all libraries together
73
+ target_link_libraries(
74
+ Aix
75
+ fbjni::fbjni # <-- Facebook C++ JNI helpers
76
+ ReactAndroid::jsi # <-- RN: JSI
77
+ react-native-nitro-modules::NitroModules # <-- NitroModules Core :)
78
+ )
79
+
80
+ # Link react-native (different prefab between RN 0.75 and RN 0.76)
81
+ if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
82
+ target_link_libraries(
83
+ Aix
84
+ ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
85
+ )
86
+ else()
87
+ target_link_libraries(
88
+ Aix
89
+ ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
90
+ )
91
+ endif()
@@ -0,0 +1,27 @@
1
+ ///
2
+ /// Aix+autolinking.gradle
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2026 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /// This is a Gradle file that adds all files generated by Nitrogen
9
+ /// to the current Gradle project.
10
+ ///
11
+ /// To use it, add this to your build.gradle:
12
+ /// ```gradle
13
+ /// apply from: '../nitrogen/generated/android/Aix+autolinking.gradle'
14
+ /// ```
15
+
16
+ logger.warn("[NitroModules] 🔥 Aix is boosted by nitro!")
17
+
18
+ android {
19
+ sourceSets {
20
+ main {
21
+ java.srcDirs += [
22
+ // Nitrogen files
23
+ "${project.projectDir}/../nitrogen/generated/android/kotlin"
24
+ ]
25
+ }
26
+ }
27
+ }