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,174 @@
1
+ //
2
+ // HybridAixBlank.swift
3
+ // Pods
4
+ //
5
+ // Created by Fernando Rojo on 12/11/2025.
6
+ //
7
+
8
+ import Foundation
9
+ import UIKit
10
+
11
+ /// HybridAixCellView wraps each list item in the chat (the "blank" cell at the end)
12
+ /// It tracks its index and whether it's the last item,
13
+ /// and reports size changes to the AixContext
14
+ class HybridAixCellView: HybridAixCellViewSpec {
15
+
16
+
17
+ // MARK: - Inner View
18
+
19
+ /// Custom UIView that notifies owner when layout changes
20
+ private final class InnerView: UIView {
21
+ weak var owner: HybridAixCellView?
22
+
23
+ override init(frame: CGRect) {
24
+ super.init(frame: frame)
25
+ autoresizingMask = [.flexibleWidth]
26
+ }
27
+
28
+ required init?(coder: NSCoder) {
29
+ fatalError("init(coder:) has not been implemented")
30
+ }
31
+
32
+ override func layoutSubviews() {
33
+ super.layoutSubviews()
34
+ owner?.handleLayoutChange()
35
+ }
36
+
37
+ override func didMoveToSuperview() {
38
+ super.didMoveToSuperview()
39
+ owner?.handleDidMoveToSuperview()
40
+ }
41
+
42
+ override func didMoveToWindow() {
43
+ super.didMoveToWindow()
44
+ owner?.handleDidMoveToWindow()
45
+ }
46
+
47
+ override func willMove(toSuperview newSuperview: UIView?) {
48
+ super.willMove(toSuperview: newSuperview)
49
+ if newSuperview == nil {
50
+ // Being removed from superview - unregister
51
+ owner?.handleWillRemoveFromSuperview()
52
+ }
53
+ }
54
+ }
55
+
56
+ // MARK: - Properties
57
+
58
+ /// The UIView for this cell
59
+ let view: UIView
60
+
61
+ /// The index of this cell in the list
62
+ var index: Double = 0 {
63
+ didSet {
64
+ if oldValue != index {
65
+ updateRegistration()
66
+ }
67
+ }
68
+ }
69
+
70
+ /// Whether this is the last cell in the list
71
+ /// When true, this cell becomes the "blank view" used for calculating scroll offsets
72
+ var isLast: Bool = false {
73
+ didSet {
74
+ if oldValue != isLast {
75
+ updateBlankViewStatus()
76
+ }
77
+ }
78
+ }
79
+
80
+ /// Cached reference to the AixContext (found on first access)
81
+ private weak var cachedAixContext: AixContext?
82
+
83
+ /// Last reported size (to avoid reporting unchanged sizes)
84
+ private var lastReportedSize: CGSize = .zero
85
+
86
+ // MARK: - Initialization
87
+
88
+ override init() {
89
+ let inner = InnerView()
90
+ self.view = inner
91
+ super.init()
92
+ inner.owner = self
93
+ getAixContext()?.registerCell(self)
94
+ }
95
+
96
+ // MARK: - Context Access
97
+
98
+ /// Get the AixContext, caching it for performance
99
+ private func getAixContext() -> AixContext? {
100
+ if let cached = cachedAixContext {
101
+ return cached
102
+ }
103
+ let ctx = view.useAixContext()
104
+ cachedAixContext = ctx
105
+ return ctx
106
+ }
107
+
108
+ // MARK: - Lifecycle Handlers
109
+
110
+ /// Called when the view is added to a superview
111
+ private func handleDidMoveToSuperview() {
112
+ // Don't register here - hierarchy may not be complete yet
113
+ // Wait for didMoveToWindow instead
114
+ }
115
+
116
+ /// Called when the view is added to a window (full hierarchy is connected)
117
+ private func handleDidMoveToWindow() {
118
+ guard view.window != nil else { return }
119
+
120
+ // Clear cached context since hierarchy changed
121
+ cachedAixContext = nil
122
+
123
+ // Register with the new context
124
+ if let ctx = getAixContext() {
125
+ ctx.registerCell(self)
126
+ }
127
+ }
128
+
129
+ /// Called when the view is about to be removed from superview
130
+ private func handleWillRemoveFromSuperview() {
131
+ // Unregister from context before removal
132
+ if let ctx = cachedAixContext {
133
+ ctx.unregisterCell(self)
134
+ }
135
+ cachedAixContext = nil
136
+ }
137
+
138
+ /// Called when layoutSubviews fires (size may have changed)
139
+ private func handleLayoutChange() {
140
+ // Only report size changes for the last cell (blank view)
141
+ // and only if the size actually changed
142
+ let currentSize = view.bounds.size
143
+ if isLast && currentSize != lastReportedSize {
144
+ lastReportedSize = currentSize
145
+ if let ctx = getAixContext() {
146
+ ctx.reportBlankViewSizeChange(size: currentSize, index: Int(index))
147
+ }
148
+ }
149
+ }
150
+
151
+ // MARK: - Registration
152
+
153
+ /// Update registration with context (called when index changes)
154
+ private func updateRegistration() {
155
+ guard let ctx = getAixContext() else { return }
156
+ ctx.registerCell(self)
157
+ }
158
+
159
+ /// Update blank view status (called when isLast changes)
160
+ private func updateBlankViewStatus() {
161
+ guard let ctx = getAixContext() else { return }
162
+
163
+ if isLast {
164
+ // This cell is now the last one - become the blank view
165
+ ctx.blankView = self
166
+ let currentSize = view.bounds.size
167
+ lastReportedSize = currentSize
168
+ ctx.reportBlankViewSizeChange(size: currentSize, index: Int(index))
169
+ } else if ctx.blankView === self {
170
+ // This cell is no longer last - clear blank view reference
171
+ ctx.blankView = nil
172
+ }
173
+ }
174
+ }
@@ -0,0 +1,119 @@
1
+ //
2
+ // HybridAixComposer.swift
3
+ // Pods
4
+ //
5
+ // Created by Fernando Rojo on 12/11/2025.
6
+ //
7
+
8
+ import Foundation
9
+ import UIKit
10
+
11
+ /// HybridAixComposer wraps the chat composer input
12
+ /// It registers itself with the AixContext so the context can track composer height
13
+ /// for calculating content insets
14
+ class HybridAixComposer: HybridAixComposerSpec {
15
+
16
+ // MARK: - Inner View
17
+
18
+ /// Custom UIView that notifies owner when layout changes
19
+ private final class InnerView: UIView {
20
+ weak var owner: HybridAixComposer?
21
+
22
+ override func layoutSubviews() {
23
+ super.layoutSubviews()
24
+ owner?.handleLayoutChange()
25
+ }
26
+
27
+ override func didMoveToWindow() {
28
+ super.didMoveToWindow()
29
+ owner?.handleDidMoveToWindow()
30
+ }
31
+
32
+ override func willMove(toSuperview newSuperview: UIView?) {
33
+ super.willMove(toSuperview: newSuperview)
34
+ if newSuperview == nil {
35
+ // Being removed from superview - unregister
36
+ owner?.handleWillRemoveFromSuperview()
37
+ }
38
+ }
39
+
40
+ // MARK: - Touch Handling
41
+
42
+ /// Let touches pass through to React Native children
43
+ override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
44
+ return false
45
+ }
46
+ }
47
+
48
+ // MARK: - Properties
49
+
50
+ /// The UIView for this composer
51
+ let view: UIView
52
+
53
+ /// Cached reference to the AixContext (found on first access)
54
+ private weak var cachedAixContext: AixContext?
55
+
56
+ /// Last reported height (to avoid reporting unchanged heights)
57
+ private var lastReportedHeight: CGFloat = 0
58
+
59
+ // MARK: - Initialization
60
+
61
+ override init() {
62
+ let inner = InnerView()
63
+ self.view = inner
64
+ super.init()
65
+ inner.owner = self
66
+ }
67
+
68
+ // MARK: - Context Access
69
+
70
+ /// Get the AixContext, caching it for performance
71
+ private func getAixContext() -> AixContext? {
72
+ if let cached = cachedAixContext {
73
+ return cached
74
+ }
75
+ let ctx = view.useAixContext()
76
+ cachedAixContext = ctx
77
+ return ctx
78
+ }
79
+
80
+ // MARK: - Lifecycle Handlers
81
+
82
+ /// Called when the view is added to a window (full hierarchy is connected)
83
+ private func handleDidMoveToWindow() {
84
+ guard view.window != nil else { return }
85
+
86
+ // Clear cached context since hierarchy changed
87
+ cachedAixContext = nil
88
+
89
+ // Register with the new context
90
+ if let ctx = getAixContext() {
91
+ ctx.registerComposerView(self)
92
+ }
93
+ }
94
+
95
+ /// Called when the view is about to be removed from superview
96
+ private func handleWillRemoveFromSuperview() {
97
+ // Unregister from context before removal
98
+ if let ctx = cachedAixContext {
99
+ ctx.unregisterComposerView(self)
100
+ }
101
+ cachedAixContext = nil
102
+ }
103
+
104
+ /// Called when layoutSubviews fires (size may have changed)
105
+ private func handleLayoutChange() {
106
+ let currentHeight = view.bounds.height
107
+ if currentHeight != lastReportedHeight {
108
+ lastReportedHeight = currentHeight
109
+ getAixContext()?.reportComposerHeightChange(height: currentHeight)
110
+ }
111
+ }
112
+
113
+ // MARK: - Deinitialization
114
+
115
+ deinit {
116
+ // Ensure we unregister when deallocated
117
+ cachedAixContext?.unregisterComposerView(self)
118
+ }
119
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Aix = void 0;
7
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
8
+ var _AixConfig = _interopRequireDefault(require("../nitrogen/generated/shared/json/AixConfig.json"));
9
+ var _react = require("react");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const AixInternal = (0, _reactNativeNitroModules.getHostComponent)('Aix', () => _AixConfig.default);
13
+ const Aix = exports.Aix = /*#__PURE__*/(0, _react.forwardRef)(function Aix(props, ref) {
14
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(AixInternal, {
15
+ ...props,
16
+ hybridRef: ref ? (0, _reactNativeNitroModules.callback)(r => {
17
+ if (typeof ref === 'function') {
18
+ ref(r);
19
+ } else {
20
+ ref.current = r;
21
+ }
22
+ }) : undefined
23
+ });
24
+ });
25
+ //# sourceMappingURL=aix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_AixConfig","_interopRequireDefault","_react","_jsxRuntime","e","__esModule","default","AixInternal","getHostComponent","AixConfig","Aix","exports","forwardRef","props","ref","jsx","hybridRef","callback","r","current","undefined"],"sourceRoot":"../../src","sources":["aix.tsx"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAAkC,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAE,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIlC,MAAMG,WAAW,GAAG,IAAAC,yCAAgB,EAClC,KAAK,EACL,MAAMC,kBACR,CAAC;AAEM,MAAMC,GAAG,GAAAC,OAAA,CAAAD,GAAA,gBAAG,IAAAE,iBAAU,EAC3B,SAASF,GAAGA,CAACG,KAAK,EAAEC,GAAG,EAAE;EACvB,oBACE,IAAAX,WAAA,CAAAY,GAAA,EAACR,WAAW;IAAA,GACNM,KAAK;IACTG,SAAS,EACPF,GAAG,GACC,IAAAG,iCAAQ,EAAEC,CAAC,IAAK;MACd,IAAI,OAAOJ,GAAG,KAAK,UAAU,EAAE;QAC7BA,GAAG,CAACI,CAAC,CAAC;MACR,CAAC,MAAM;QACLJ,GAAG,CAACK,OAAO,GAAGD,CAAC;MACjB;IACF,CAAC,CAAC,GACFE;EACL,CACF,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createUsePool = createUsePool;
7
+ var _react = require("react");
8
+ function createUsePool(maxPoolSize) {
9
+ // Use parallel arrays instead of one array for fast array operations
10
+ const items = [];
11
+ const setters = [];
12
+ const removeItem = (item, setInactive) => {
13
+ const index = items.indexOf(item);
14
+ if (index !== -1) {
15
+ if (setInactive) {
16
+ setters[index](false);
17
+ }
18
+ items.splice(index, 1);
19
+ setters.splice(index, 1);
20
+ }
21
+ };
22
+ const usePool = () => {
23
+ // Use a stable object reference as the key
24
+ const item = (0, _react.useRef)({}).current;
25
+ const [isActive, setIsActive] = (0, _react.useState)(true);
26
+
27
+ // A function that is stable and only changes when the item changes
28
+ const evict = (0, _react.useCallback)(() => removeItem(item, true), [item]);
29
+ (0, _react.useEffect)(() => {
30
+ items.push(item);
31
+ setters.push(setIsActive);
32
+
33
+ // Evict oldest item if over capacity
34
+ if (maxPoolSize && items.length > maxPoolSize) {
35
+ items.shift();
36
+ const evictedListener = setters.shift();
37
+ evictedListener(false);
38
+ }
39
+
40
+ // Remove from pool when unmounting
41
+ return () => removeItem(item);
42
+ }, [item]);
43
+ return {
44
+ isActive,
45
+ evict
46
+ };
47
+ };
48
+ return usePool;
49
+ }
50
+ //# sourceMappingURL=createUsePool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","createUsePool","maxPoolSize","items","setters","removeItem","item","setInactive","index","indexOf","splice","usePool","useRef","current","isActive","setIsActive","useState","evict","useCallback","useEffect","push","length","shift","evictedListener"],"sourceRoot":"../../../src","sources":["fade-in/createUsePool.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,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,GAAG,IAAAM,aAAM,EAAC,CAAC,CAAC,CAAC,CAACC,OAAO;IAC/B,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,IAAI,CAAC;;IAE9C;IACA,MAAMC,KAAK,GAAG,IAAAC,kBAAW,EAAC,MAAMb,UAAU,CAACC,IAAI,EAAE,IAAI,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;IAE/D,IAAAa,gBAAS,EAAC,MAAM;MACdhB,KAAK,CAACiB,IAAI,CAACd,IAAI,CAAC;MAChBF,OAAO,CAACgB,IAAI,CAACL,WAAW,CAAC;;MAEzB;MACA,IAAIb,WAAW,IAAIC,KAAK,CAACkB,MAAM,GAAGnB,WAAW,EAAE;QAC7CC,KAAK,CAACmB,KAAK,CAAC,CAAC;QACb,MAAMC,eAAe,GAAGnB,OAAO,CAACkB,KAAK,CAAC,CAAE;QACxCC,eAAe,CAAC,KAAK,CAAC;MACxB;;MAEA;MACA,OAAO,MAAMlB,UAAU,CAACC,IAAI,CAAC;IAC/B,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;IAEV,OAAO;MAAEQ,QAAQ;MAAEG;IAAM,CAAC;EAC5B,CAAC;EAED,OAAON,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createUseStaggered = createUseStaggered;
7
+ var _react = require("react");
8
+ // Creates a staggered animation system - only one animation starts per frame/delay
9
+ function createUseStaggered(delay) {
10
+ const animationQueue = [];
11
+ let isProcessing = false;
12
+
13
+ // Schedule next animation with delay or requestAnimationFrame
14
+ const scheduleNext = () => {
15
+ if (delay && delay > 0) {
16
+ setTimeout(processNextAnimation, delay);
17
+ } else {
18
+ requestAnimationFrame(processNextAnimation);
19
+ }
20
+ };
21
+ const processNextAnimation = () => {
22
+ if (animationQueue.length === 0) {
23
+ isProcessing = false;
24
+ return;
25
+ }
26
+
27
+ // Calculate how many animations to process this cycle
28
+ const queueLength = animationQueue.length;
29
+ let animationsToProcess = 1;
30
+
31
+ // Catch-up logic: process more animations when queue is long
32
+ if (queueLength > 10) {
33
+ animationsToProcess = Math.min(5, Math.ceil(queueLength / 4));
34
+ } else if (queueLength > 5) {
35
+ animationsToProcess = 2;
36
+ }
37
+
38
+ // Process the calculated number of animations
39
+ for (let i = 0; i < animationsToProcess && animationQueue.length > 0; i++) {
40
+ const startAnimation = animationQueue.shift();
41
+ startAnimation();
42
+ }
43
+
44
+ // Continue processing or mark as idle
45
+ if (animationQueue.length > 0) {
46
+ scheduleNext();
47
+ } else {
48
+ isProcessing = false;
49
+ }
50
+ };
51
+ const queueAnimation = startFn => {
52
+ animationQueue.push(startFn);
53
+ if (!isProcessing) {
54
+ isProcessing = true;
55
+ scheduleNext();
56
+ }
57
+ };
58
+ const useStaggered = animationFn => {
59
+ const animationRef = (0, _react.useRef)(animationFn);
60
+
61
+ // Queue animation on mount
62
+ (0, _react.useEffect)(() => {
63
+ if (animationRef.current) {
64
+ queueAnimation(animationRef.current);
65
+ }
66
+ }, []);
67
+ (0, _react.useEffect)(() => {
68
+ const animation = animationRef.current;
69
+ return () => {
70
+ // Clean up pending animation on unmount
71
+ if (animation) {
72
+ const index = animationQueue.indexOf(animation);
73
+ if (index !== -1) {
74
+ animationQueue.splice(index, 1);
75
+ }
76
+ }
77
+ };
78
+ }, []);
79
+ };
80
+ return useStaggered;
81
+ }
82
+ //# sourceMappingURL=createUseStaggered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","createUseStaggered","delay","animationQueue","isProcessing","scheduleNext","setTimeout","processNextAnimation","requestAnimationFrame","length","queueLength","animationsToProcess","Math","min","ceil","i","startAnimation","shift","queueAnimation","startFn","push","useStaggered","animationFn","animationRef","useRef","useEffect","current","animation","index","indexOf","splice"],"sourceRoot":"../../../src","sources":["fade-in/createUseStaggered.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACO,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,GAAG,IAAAC,aAAM,EAAsBF,WAAW,CAAC;;IAE7D;IACA,IAAAG,gBAAS,EAAC,MAAM;MACd,IAAIF,YAAY,CAACG,OAAO,EAAE;QACxBR,cAAc,CAACK,YAAY,CAACG,OAAO,CAAC;MACtC;IACF,CAAC,EAAE,EAAE,CAAC;IAEN,IAAAD,gBAAS,EAAC,MAAM;MACd,MAAME,SAAS,GAAGJ,YAAY,CAACG,OAAO;MACtC,OAAO,MAAM;QACX;QACA,IAAIC,SAAS,EAAE;UACb,MAAMC,KAAK,GAAGzB,cAAc,CAAC0B,OAAO,CAACF,SAAS,CAAC;UAC/C,IAAIC,KAAK,KAAK,CAAC,CAAC,EAAE;YAChBzB,cAAc,CAAC2B,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;UACjC;QACF;MACF,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;EACR,CAAC;EAED,OAAOP,YAAY;AACrB","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TextFadeInStaggeredIfStreaming = void 0;
7
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
8
+ var _createUsePool = require("./createUsePool");
9
+ var _createUseStaggered = require("./createUseStaggered");
10
+ var _react = require("react");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const useIsAnimatedInPool = (0, _createUsePool.createUsePool)();
14
+ const useStaggeredAnimation = (0, _createUseStaggered.createUseStaggered)(32);
15
+ function FadeIn({
16
+ children,
17
+ onFadedIn,
18
+ Component = _reactNativeReanimated.default.Text
19
+ }) {
20
+ const progress = (0, _reactNativeReanimated.useSharedValue)(0);
21
+ const startAnimation = () => {
22
+ progress.set((0, _reactNativeReanimated.withTiming)(1, {
23
+ duration: 500
24
+ }));
25
+ setTimeout(onFadedIn, 500);
26
+ };
27
+ useStaggeredAnimation(startAnimation);
28
+ const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
29
+ opacity: progress.get()
30
+ }));
31
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {
32
+ style: animatedStyle,
33
+ children: children
34
+ });
35
+ }
36
+ const AnimatedFadeInText = /*#__PURE__*/(0, _react.memo)(function AnimatedFadeInText(props) {
37
+ const chunks = props.text.split(' ');
38
+ return chunks.map((chunk, i) => {
39
+ if (i < chunks.length - 1) chunk += ' ';
40
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TextFadeInStaggered, {
41
+ text: chunk
42
+ }, i);
43
+ });
44
+ });
45
+ const TextFadeInStaggeredIfStreaming = exports.TextFadeInStaggeredIfStreaming = /*#__PURE__*/(0, _react.memo)(function TextFadeInStaggeredIfStreaming({
46
+ children: childrenProp,
47
+ disabled
48
+ }) {
49
+ const [enabled] = (0, _react.useState)(!disabled);
50
+ let children = childrenProp;
51
+ if (enabled && children) {
52
+ if (Array.isArray(children)) {
53
+ children = _react.Children.map(children, (child, i) => typeof child === 'string' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedFadeInText, {
54
+ text: child
55
+ }, i) : child);
56
+ } else if (typeof children === 'string') {
57
+ children = /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedFadeInText, {
58
+ text: children
59
+ });
60
+ }
61
+ }
62
+ return children;
63
+ });
64
+ const TextFadeInStaggered = /*#__PURE__*/(0, _react.memo)(function TextFadeInStaggered({
65
+ text
66
+ }) {
67
+ const {
68
+ isActive,
69
+ evict
70
+ } = useIsAnimatedInPool();
71
+ return isActive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(FadeIn, {
72
+ onFadedIn: () => {
73
+ evict();
74
+ },
75
+ children: text
76
+ }) : text;
77
+ });
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeReanimated","_interopRequireWildcard","require","_createUsePool","_createUseStaggered","_react","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useIsAnimatedInPool","createUsePool","useStaggeredAnimation","createUseStaggered","FadeIn","children","onFadedIn","Component","Animated","Text","progress","useSharedValue","startAnimation","withTiming","duration","setTimeout","animatedStyle","useAnimatedStyle","opacity","jsx","style","AnimatedFadeInText","memo","props","chunks","text","split","map","chunk","length","TextFadeInStaggered","TextFadeInStaggeredIfStreaming","exports","childrenProp","disabled","enabled","useState","Array","isArray","Children","child","isActive","evict"],"sourceRoot":"../../../src","sources":["fade-in/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AixFooter = AixFooter;
7
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
8
+ var _AixComposerConfig = _interopRequireDefault(require("../nitrogen/generated/shared/json/AixComposerConfig.json"));
9
+ var _reactNative = require("react-native");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const AixFooterInternal = (0, _reactNativeNitroModules.getHostComponent)('AixComposer', () => _AixComposerConfig.default);
13
+ function AixFooter(props) {
14
+ if (__DEV__) {
15
+ const flat = _reactNative.StyleSheet.flatten(props.style);
16
+ const broken = Object.keys({
17
+ paddingBottom: flat.paddingBottom,
18
+ padding: flat.padding
19
+ }).filter(key => flat[key] !== undefined);
20
+ if (broken.length) {
21
+ 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.`);
22
+ }
23
+ }
24
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(AixFooterInternal, {
25
+ ...props
26
+ });
27
+ }
28
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_AixComposerConfig","_interopRequireDefault","_reactNative","_jsxRuntime","e","__esModule","default","AixFooterInternal","getHostComponent","AixComposerConfig","AixFooter","props","__DEV__","flat","StyleSheet","flatten","style","broken","Object","keys","paddingBottom","padding","filter","key","undefined","length","console","error","join","jsx"],"sourceRoot":"../../src","sources":["footer.tsx"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,YAAA,GAAAH,OAAA;AAAyC,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAE,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEzC,MAAMG,iBAAiB,GAAG,IAAAC,yCAAgB,EACxC,aAAa,EACb,MAAMC,0BACR,CAAC;AAEM,SAASC,SAASA,CACvBC,KAAqD,EACrD;EACA,IAAIC,OAAO,EAAE;IACX,MAAMC,IAAI,GAAGC,uBAAU,CAACC,OAAO,CAACJ,KAAK,CAACK,KAAK,CAAC;IAC5C,MAAMC,MAAM,GAAGC,MAAM,CAACC,IAAI,CAAC;MACzBC,aAAa,EAAEP,IAAI,CAACO,aAAa;MACjCC,OAAO,EAAER,IAAI,CAACQ;IAChB,CAAC,CAAC,CAACC,MAAM,CAAEC,GAAG,IAAKV,IAAI,CAACU,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,oBAAO,IAAAzB,WAAA,CAAA0B,GAAA,EAACtB,iBAAiB;IAAA,GAAKI;EAAK,CAAG,CAAC;AACzC","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ AixCell: true,
8
+ useAixRef: true,
9
+ Aix: true,
10
+ AixFooter: true
11
+ };
12
+ Object.defineProperty(exports, "Aix", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _aix.Aix;
16
+ }
17
+ });
18
+ exports.AixCell = void 0;
19
+ Object.defineProperty(exports, "AixFooter", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _footer.AixFooter;
23
+ }
24
+ });
25
+ exports.useAixRef = useAixRef;
26
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
27
+ var _AixCellViewConfig = _interopRequireDefault(require("../nitrogen/generated/shared/json/AixCellViewConfig.json"));
28
+ var _react = require("react");
29
+ var _fadeIn = require("./fade-in");
30
+ Object.keys(_fadeIn).forEach(function (key) {
31
+ if (key === "default" || key === "__esModule") return;
32
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
33
+ if (key in exports && exports[key] === _fadeIn[key]) return;
34
+ Object.defineProperty(exports, key, {
35
+ enumerable: true,
36
+ get: function () {
37
+ return _fadeIn[key];
38
+ }
39
+ });
40
+ });
41
+ var _aix = require("./aix");
42
+ var _footer = require("./footer");
43
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
44
+ const AixCell = exports.AixCell = (0, _reactNativeNitroModules.getHostComponent)('AixCellView', () => _AixCellViewConfig.default);
45
+ function useAixRef() {
46
+ return (0, _react.useRef)(null);
47
+ }
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_AixCellViewConfig","_interopRequireDefault","_react","_fadeIn","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_aix","_footer","e","__esModule","default","AixCell","getHostComponent","AixCellViewConfig","useAixRef","useRef"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AAAAK,MAAA,CAAAC,IAAA,CAAAF,OAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,OAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,OAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAS,IAAA,GAAAjB,OAAA;AACA,IAAAkB,OAAA,GAAAlB,OAAA;AAAoC,SAAAE,uBAAAiB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE7B,MAAMG,OAAO,GAAAT,OAAA,CAAAS,OAAA,GAAG,IAAAC,yCAAgB,EACrC,aAAa,EACb,MAAMC,0BACR,CAAC;AAIM,SAASC,SAASA,CAAA,EAAG;EAC1B,OAAO,IAAAC,aAAM,EAAgB,IAAI,CAAC;AACpC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=aix.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/aix.nitro.ts"],"mappings":"","ignoreList":[]}