@symbiote-native/angular 1.0.0 → 2.0.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 (248) hide show
  1. package/README.md +13 -10
  2. package/babel-register-composed.cjs +41 -19
  3. package/bin/symbiote-angular-dev.cjs +16 -4
  4. package/build/angular/anchor-host-registry.js +1 -17
  5. package/build/angular/anchor-host-registry.js.map +1 -1
  6. package/build/angular/change-detection-flush.d.ts +31 -0
  7. package/build/angular/change-detection-flush.js +110 -0
  8. package/build/angular/change-detection-flush.js.map +1 -0
  9. package/build/angular/components/activity-indicator-props.d.ts +2 -0
  10. package/build/angular/components/activity-indicator-props.js +2 -0
  11. package/build/angular/components/activity-indicator-props.js.map +1 -0
  12. package/build/angular/components/button-props.d.ts +2 -0
  13. package/build/angular/components/button-props.js +2 -0
  14. package/build/angular/components/button-props.js.map +1 -0
  15. package/build/angular/components/flat-list/index.d.ts +2 -1
  16. package/build/angular/components/flat-list/index.js +22 -10
  17. package/build/angular/components/flat-list/index.js.map +1 -1
  18. package/build/angular/components/image-background-props.d.ts +6 -0
  19. package/build/angular/components/image-background-props.js +2 -0
  20. package/build/angular/components/image-background-props.js.map +1 -0
  21. package/build/angular/components/{image/shared.d.ts → image-shared.d.ts} +1 -1
  22. package/build/angular/components/{image/shared.js → image-shared.js} +7 -2
  23. package/build/angular/components/image-shared.js.map +1 -0
  24. package/build/angular/components/input-accessory-view-props.d.ts +7 -0
  25. package/build/angular/components/input-accessory-view-props.js +9 -0
  26. package/build/angular/components/input-accessory-view-props.js.map +1 -0
  27. package/build/angular/components/keyboard-avoiding-view/index.js +11 -17
  28. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
  29. package/build/angular/components/modal/index.d.ts +1 -0
  30. package/build/angular/components/modal/index.js +19 -12
  31. package/build/angular/components/modal/index.js.map +1 -1
  32. package/build/angular/components/pressable-props.d.ts +32 -0
  33. package/build/angular/components/pressable-props.js +11 -0
  34. package/build/angular/components/pressable-props.js.map +1 -0
  35. package/build/angular/components/refresh-control-props.d.ts +16 -0
  36. package/build/angular/components/refresh-control-props.js +14 -0
  37. package/build/angular/components/refresh-control-props.js.map +1 -0
  38. package/build/angular/components/safe-area-view-props.d.ts +7 -0
  39. package/build/angular/components/safe-area-view-props.js +11 -0
  40. package/build/angular/components/safe-area-view-props.js.map +1 -0
  41. package/build/angular/components/scroll-view-props.d.ts +76 -0
  42. package/build/angular/components/scroll-view-props.js +18 -0
  43. package/build/angular/components/scroll-view-props.js.map +1 -0
  44. package/build/angular/components/text-input-props.d.ts +45 -0
  45. package/build/angular/components/text-input-props.js +18 -0
  46. package/build/angular/components/text-input-props.js.map +1 -0
  47. package/build/angular/components/touchable-native-feedback/touchable-native-feedback-props.d.ts +6 -0
  48. package/build/angular/components/touchable-native-feedback/touchable-native-feedback-props.js +2 -0
  49. package/build/angular/components/touchable-native-feedback/touchable-native-feedback-props.js.map +1 -0
  50. package/build/angular/components/touchable-props.d.ts +14 -0
  51. package/build/angular/components/touchable-props.js +13 -0
  52. package/build/angular/components/touchable-props.js.map +1 -0
  53. package/build/angular/components/touchable-without-feedback/touchable-without-feedback-props.d.ts +3 -0
  54. package/build/angular/components/touchable-without-feedback/touchable-without-feedback-props.js +2 -0
  55. package/build/angular/components/touchable-without-feedback/touchable-without-feedback-props.js.map +1 -0
  56. package/build/angular/components/virtualized-list/index.d.ts +5 -1
  57. package/build/angular/components/virtualized-list/index.js +366 -280
  58. package/build/angular/components/virtualized-list/index.js.map +1 -1
  59. package/build/angular/components.d.ts +20 -26
  60. package/build/angular/components.js +12 -14
  61. package/build/angular/components.js.map +1 -1
  62. package/build/angular/create-portal/index.d.ts +2 -2
  63. package/build/angular/create-portal/index.js +5 -5
  64. package/build/angular/create-tunnel/index.js +1 -1
  65. package/build/angular/element-props.d.ts +53 -0
  66. package/build/angular/element-props.js +2 -0
  67. package/build/angular/element-props.js.map +1 -0
  68. package/build/angular/elements.d.ts +528 -0
  69. package/build/angular/elements.js +1444 -0
  70. package/build/angular/elements.js.map +1 -0
  71. package/build/angular/host-instance/index.js +1 -1
  72. package/build/angular/index.d.ts +4 -2
  73. package/build/angular/index.js +15 -1
  74. package/build/angular/index.js.map +1 -1
  75. package/build/angular/modules/animated/create-animated-component.d.ts +5 -6
  76. package/build/angular/modules/animated/create-animated-component.js +60 -73
  77. package/build/angular/modules/animated/create-animated-component.js.map +1 -1
  78. package/build/angular/modules/animated/index.js +1 -1
  79. package/build/angular/modules/animated/index.js.map +1 -1
  80. package/build/angular/modules/image/index.d.ts +3 -0
  81. package/build/angular/modules/image/index.js +16 -0
  82. package/build/angular/modules/image/index.js.map +1 -0
  83. package/build/angular/primitives/index.d.ts +18 -18
  84. package/build/angular/primitives/index.js +40 -36
  85. package/build/angular/primitives/index.js.map +1 -1
  86. package/build/angular/primitives/shared.d.ts +2 -3
  87. package/build/angular/primitives/shared.js +8 -53
  88. package/build/angular/primitives/shared.js.map +1 -1
  89. package/build/angular/register.d.ts +1 -1
  90. package/build/angular/register.js +12 -31
  91. package/build/angular/register.js.map +1 -1
  92. package/build/angular/render/index.js +3 -3
  93. package/build/angular/render/index.js.map +1 -1
  94. package/build/angular/renderer/index.js +113 -67
  95. package/build/angular/renderer/index.js.map +1 -1
  96. package/build/angular/renderer/value-change.d.ts +2 -0
  97. package/build/angular/renderer/value-change.js +9 -0
  98. package/build/angular/renderer/value-change.js.map +1 -0
  99. package/metro-config.cjs +23 -5
  100. package/metro-css-parser.cjs +2 -1
  101. package/package.json +5 -14
  102. package/src/anchor-host-registry.ts +1 -17
  103. package/src/change-detection-flush.ts +120 -0
  104. package/src/components/activity-indicator-props.ts +21 -0
  105. package/src/components/button-props.ts +26 -0
  106. package/src/components/flat-list/index.ts +12 -4
  107. package/src/components/image-background-props.ts +24 -0
  108. package/src/components/{image/shared.ts → image-shared.ts} +6 -1
  109. package/src/components/input-accessory-view-props.ts +21 -0
  110. package/src/components/keyboard-avoiding-view/index.ts +6 -9
  111. package/src/components/modal/index.ts +15 -7
  112. package/src/components/pressable-props.ts +73 -0
  113. package/src/components/refresh-control-props.ts +43 -0
  114. package/src/components/safe-area-view-props.ts +28 -0
  115. package/src/components/scroll-view-props.ts +109 -0
  116. package/src/components/text-input-props.ts +72 -0
  117. package/src/components/touchable-native-feedback/touchable-native-feedback-props.ts +23 -0
  118. package/src/components/touchable-props.ts +30 -0
  119. package/src/components/touchable-without-feedback/touchable-without-feedback-props.ts +21 -0
  120. package/src/components/virtualized-list/index.ts +239 -156
  121. package/src/components.ts +84 -35
  122. package/src/create-portal/index.ts +5 -5
  123. package/src/create-tunnel/index.ts +1 -1
  124. package/src/diagnostics.ts +1 -1
  125. package/src/element-props.ts +90 -0
  126. package/src/elements.ts +919 -0
  127. package/src/host-instance/index.ts +1 -1
  128. package/src/index.ts +52 -15
  129. package/src/modules/animated/create-animated-component.ts +50 -55
  130. package/src/modules/animated/index.ts +1 -1
  131. package/src/modules/image/index.ts +18 -0
  132. package/src/primitives/index.ts +22 -18
  133. package/src/primitives/shared.ts +11 -44
  134. package/src/register.ts +12 -40
  135. package/src/render/index.ts +3 -3
  136. package/src/renderer/index.ts +122 -73
  137. package/src/renderer/value-change.ts +8 -0
  138. package/babel-lower-host-primitives.cjs +0 -636
  139. package/build/angular/components/activity-indicator/index.android.d.ts +0 -13
  140. package/build/angular/components/activity-indicator/index.android.js +0 -29
  141. package/build/angular/components/activity-indicator/index.android.js.map +0 -1
  142. package/build/angular/components/activity-indicator/index.d.ts +0 -1
  143. package/build/angular/components/activity-indicator/index.ios.d.ts +0 -9
  144. package/build/angular/components/activity-indicator/index.ios.js +0 -26
  145. package/build/angular/components/activity-indicator/index.ios.js.map +0 -1
  146. package/build/angular/components/activity-indicator/index.js +0 -4
  147. package/build/angular/components/activity-indicator/index.js.map +0 -1
  148. package/build/angular/components/activity-indicator/shared.d.ts +0 -67
  149. package/build/angular/components/activity-indicator/shared.js +0 -260
  150. package/build/angular/components/activity-indicator/shared.js.map +0 -1
  151. package/build/angular/components/button.d.ts +0 -68
  152. package/build/angular/components/button.js +0 -360
  153. package/build/angular/components/button.js.map +0 -1
  154. package/build/angular/components/image/index.android.d.ts +0 -15
  155. package/build/angular/components/image/index.android.js +0 -83
  156. package/build/angular/components/image/index.android.js.map +0 -1
  157. package/build/angular/components/image/index.d.ts +0 -1
  158. package/build/angular/components/image/index.ios.d.ts +0 -15
  159. package/build/angular/components/image/index.ios.js +0 -83
  160. package/build/angular/components/image/index.ios.js.map +0 -1
  161. package/build/angular/components/image/index.js +0 -3
  162. package/build/angular/components/image/index.js.map +0 -1
  163. package/build/angular/components/image/shared.js.map +0 -1
  164. package/build/angular/components/image-background.d.ts +0 -85
  165. package/build/angular/components/image-background.js +0 -443
  166. package/build/angular/components/image-background.js.map +0 -1
  167. package/build/angular/components/input-accessory-view/index.d.ts +0 -66
  168. package/build/angular/components/input-accessory-view/index.js +0 -287
  169. package/build/angular/components/input-accessory-view/index.js.map +0 -1
  170. package/build/angular/components/pressable/index.d.ts +0 -134
  171. package/build/angular/components/pressable/index.js +0 -514
  172. package/build/angular/components/pressable/index.js.map +0 -1
  173. package/build/angular/components/refresh-control/index.d.ts +0 -91
  174. package/build/angular/components/refresh-control/index.js +0 -382
  175. package/build/angular/components/refresh-control/index.js.map +0 -1
  176. package/build/angular/components/safe-area-view/index.d.ts +0 -64
  177. package/build/angular/components/safe-area-view/index.js +0 -287
  178. package/build/angular/components/safe-area-view/index.js.map +0 -1
  179. package/build/angular/components/scroll-view/index.android.d.ts +0 -20
  180. package/build/angular/components/scroll-view/index.android.js +0 -262
  181. package/build/angular/components/scroll-view/index.android.js.map +0 -1
  182. package/build/angular/components/scroll-view/index.d.ts +0 -3
  183. package/build/angular/components/scroll-view/index.ios.d.ts +0 -8
  184. package/build/angular/components/scroll-view/index.ios.js +0 -92
  185. package/build/angular/components/scroll-view/index.ios.js.map +0 -1
  186. package/build/angular/components/scroll-view/index.js +0 -6
  187. package/build/angular/components/scroll-view/index.js.map +0 -1
  188. package/build/angular/components/scroll-view/projection.d.ts +0 -67
  189. package/build/angular/components/scroll-view/projection.js +0 -560
  190. package/build/angular/components/scroll-view/projection.js.map +0 -1
  191. package/build/angular/components/scroll-view/shared.d.ts +0 -241
  192. package/build/angular/components/scroll-view/shared.js +0 -848
  193. package/build/angular/components/scroll-view/shared.js.map +0 -1
  194. package/build/angular/components/scroll-view/sticky-header.d.ts +0 -40
  195. package/build/angular/components/scroll-view/sticky-header.js +0 -224
  196. package/build/angular/components/scroll-view/sticky-header.js.map +0 -1
  197. package/build/angular/components/switch/index.android.d.ts +0 -24
  198. package/build/angular/components/switch/index.android.js +0 -112
  199. package/build/angular/components/switch/index.android.js.map +0 -1
  200. package/build/angular/components/switch/index.d.ts +0 -1
  201. package/build/angular/components/switch/index.ios.d.ts +0 -23
  202. package/build/angular/components/switch/index.ios.js +0 -111
  203. package/build/angular/components/switch/index.ios.js.map +0 -1
  204. package/build/angular/components/switch/index.js +0 -4
  205. package/build/angular/components/switch/index.js.map +0 -1
  206. package/build/angular/components/switch/shared.d.ts +0 -49
  207. package/build/angular/components/switch/shared.js +0 -191
  208. package/build/angular/components/switch/shared.js.map +0 -1
  209. package/build/angular/components/text-input.d.ts +0 -167
  210. package/build/angular/components/text-input.js +0 -684
  211. package/build/angular/components/text-input.js.map +0 -1
  212. package/build/angular/components/touchable/index.d.ts +0 -283
  213. package/build/angular/components/touchable/index.js +0 -1453
  214. package/build/angular/components/touchable/index.js.map +0 -1
  215. package/build/angular/components/touchable-native-feedback/index.d.ts +0 -87
  216. package/build/angular/components/touchable-native-feedback/index.js +0 -409
  217. package/build/angular/components/touchable-native-feedback/index.js.map +0 -1
  218. package/build/angular/state-style.d.ts +0 -9
  219. package/build/angular/state-style.js +0 -39
  220. package/build/angular/state-style.js.map +0 -1
  221. package/metro-transformer.cjs +0 -69
  222. package/src/components/activity-indicator/index.android.ts +0 -23
  223. package/src/components/activity-indicator/index.ios.ts +0 -21
  224. package/src/components/activity-indicator/index.ts +0 -4
  225. package/src/components/activity-indicator/shared.ts +0 -225
  226. package/src/components/button.ts +0 -237
  227. package/src/components/image/index.android.ts +0 -95
  228. package/src/components/image/index.ios.ts +0 -95
  229. package/src/components/image/index.ts +0 -3
  230. package/src/components/image-background.ts +0 -308
  231. package/src/components/input-accessory-view/index.ts +0 -246
  232. package/src/components/pressable/index.ts +0 -522
  233. package/src/components/refresh-control/index.ts +0 -349
  234. package/src/components/safe-area-view/index.ts +0 -247
  235. package/src/components/scroll-view/index.android.ts +0 -205
  236. package/src/components/scroll-view/index.ios.ts +0 -81
  237. package/src/components/scroll-view/index.ts +0 -7
  238. package/src/components/scroll-view/projection.ts +0 -713
  239. package/src/components/scroll-view/shared.ts +0 -1093
  240. package/src/components/scroll-view/sticky-header.ts +0 -267
  241. package/src/components/switch/index.android.ts +0 -113
  242. package/src/components/switch/index.ios.ts +0 -112
  243. package/src/components/switch/index.ts +0 -4
  244. package/src/components/switch/shared.ts +0 -284
  245. package/src/components/text-input.ts +0 -669
  246. package/src/components/touchable/index.ts +0 -956
  247. package/src/components/touchable-native-feedback/index.ts +0 -327
  248. package/src/state-style.ts +0 -39
@@ -1,8 +0,0 @@
1
- import { ScrollViewBase } from './shared';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../primitives/shared";
4
- export type { IAngularScrollViewProps, IScrollViewHandle } from './shared';
5
- export declare class ScrollView extends ScrollViewBase {
6
- static ɵfac: i0.ɵɵFactoryDeclaration<ScrollView, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<ScrollView, "ScrollView", never, { "style": { "alias": "style"; "required": false; }; "contentContainerStyle": { "alias": "contentContainerStyle"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "scrollEnabled": { "alias": "scrollEnabled"; "required": false; }; "showsVerticalScrollIndicator": { "alias": "showsVerticalScrollIndicator"; "required": false; }; "showsHorizontalScrollIndicator": { "alias": "showsHorizontalScrollIndicator"; "required": false; }; "pagingEnabled": { "alias": "pagingEnabled"; "required": false; }; "bounces": { "alias": "bounces"; "required": false; }; "decelerationRate": { "alias": "decelerationRate"; "required": false; }; "scrollEventThrottle": { "alias": "scrollEventThrottle"; "required": false; }; "contentInset": { "alias": "contentInset"; "required": false; }; "contentOffset": { "alias": "contentOffset"; "required": false; }; "removeClippedSubviews": { "alias": "removeClippedSubviews"; "required": false; }; "snapToInterval": { "alias": "snapToInterval"; "required": false; }; "snapToOffsets": { "alias": "snapToOffsets"; "required": false; }; "snapToAlignment": { "alias": "snapToAlignment"; "required": false; }; "snapToStart": { "alias": "snapToStart"; "required": false; }; "snapToEnd": { "alias": "snapToEnd"; "required": false; }; "disableIntervalMomentum": { "alias": "disableIntervalMomentum"; "required": false; }; "stickyHeaderIndices": { "alias": "stickyHeaderIndices"; "required": false; }; "invertStickyHeaders": { "alias": "invertStickyHeaders"; "required": false; }; "StickyHeaderComponent": { "alias": "StickyHeaderComponent"; "required": false; }; "keyboardDismissMode": { "alias": "keyboardDismissMode"; "required": false; }; "keyboardShouldPersistTaps": { "alias": "keyboardShouldPersistTaps"; "required": false; }; "maintainVisibleContentPosition": { "alias": "maintainVisibleContentPosition"; "required": false; }; "alwaysBounceHorizontal": { "alias": "alwaysBounceHorizontal"; "required": false; }; "alwaysBounceVertical": { "alias": "alwaysBounceVertical"; "required": false; }; "centerContent": { "alias": "centerContent"; "required": false; }; "scrollIndicatorInsets": { "alias": "scrollIndicatorInsets"; "required": false; }; "indicatorStyle": { "alias": "indicatorStyle"; "required": false; }; "directionalLockEnabled": { "alias": "directionalLockEnabled"; "required": false; }; "automaticallyAdjustKeyboardInsets": { "alias": "automaticallyAdjustKeyboardInsets"; "required": false; }; "contentInsetAdjustmentBehavior": { "alias": "contentInsetAdjustmentBehavior"; "required": false; }; "minimumZoomScale": { "alias": "minimumZoomScale"; "required": false; }; "maximumZoomScale": { "alias": "maximumZoomScale"; "required": false; }; "zoomScale": { "alias": "zoomScale"; "required": false; }; "bouncesZoom": { "alias": "bouncesZoom"; "required": false; }; "pinchGestureEnabled": { "alias": "pinchGestureEnabled"; "required": false; }; "nestedScrollEnabled": { "alias": "nestedScrollEnabled"; "required": false; }; "overScrollMode": { "alias": "overScrollMode"; "required": false; }; "fadingEdgeLength": { "alias": "fadingEdgeLength"; "required": false; }; "persistentScrollbar": { "alias": "persistentScrollbar"; "required": false; }; "endFillColor": { "alias": "endFillColor"; "required": false; }; "onScroll": { "alias": "onScroll"; "required": false; }; "onScrollBeginDrag": { "alias": "onScrollBeginDrag"; "required": false; }; "onScrollEndDrag": { "alias": "onScrollEndDrag"; "required": false; }; "onMomentumScrollBegin": { "alias": "onMomentumScrollBegin"; "required": false; }; "onMomentumScrollEnd": { "alias": "onMomentumScrollEnd"; "required": false; }; "testID": { "alias": "testID"; "required": false; }; "nativeID": { "alias": "nativeID"; "required": false; }; "accessible": { "alias": "accessible"; "required": false; }; "accessibilityLabel": { "alias": "accessibilityLabel"; "required": false; }; "accessibilityHint": { "alias": "accessibilityHint"; "required": false; }; "accessibilityRole": { "alias": "accessibilityRole"; "required": false; }; "accessibilityState": { "alias": "accessibilityState"; "required": false; }; "accessibilityValue": { "alias": "accessibilityValue"; "required": false; }; "accessibilityActions": { "alias": "accessibilityActions"; "required": false; }; "accessibilityLabelledBy": { "alias": "accessibilityLabelledBy"; "required": false; }; "importantForAccessibility": { "alias": "importantForAccessibility"; "required": false; }; "accessibilityLiveRegion": { "alias": "accessibilityLiveRegion"; "required": false; }; "screenReaderFocusable": { "alias": "screenReaderFocusable"; "required": false; }; "accessibilityViewIsModal": { "alias": "accessibilityViewIsModal"; "required": false; }; "accessibilityElementsHidden": { "alias": "accessibilityElementsHidden"; "required": false; }; "accessibilityIgnoresInvertColors": { "alias": "accessibilityIgnoresInvertColors"; "required": false; }; "accessibilityLanguage": { "alias": "accessibilityLanguage"; "required": false; }; "accessibilityRespondsToUserInteraction": { "alias": "accessibilityRespondsToUserInteraction"; "required": false; }; "accessibilityShowsLargeContentViewer": { "alias": "accessibilityShowsLargeContentViewer"; "required": false; }; "accessibilityLargeContentTitle": { "alias": "accessibilityLargeContentTitle"; "required": false; }; "role": { "alias": "role"; "required": false; }; "aria-label": { "alias": "aria-label"; "required": false; }; "aria-labelledby": { "alias": "aria-labelledby"; "required": false; }; "aria-live": { "alias": "aria-live"; "required": false; }; "aria-hidden": { "alias": "aria-hidden"; "required": false; }; "aria-busy": { "alias": "aria-busy"; "required": false; }; "aria-checked": { "alias": "aria-checked"; "required": false; }; "aria-disabled": { "alias": "aria-disabled"; "required": false; }; "aria-expanded": { "alias": "aria-expanded"; "required": false; }; "aria-selected": { "alias": "aria-selected"; "required": false; }; "aria-modal": { "alias": "aria-modal"; "required": false; }; "aria-valuemax": { "alias": "aria-valuemax"; "required": false; }; "aria-valuemin": { "alias": "aria-valuemin"; "required": false; }; "aria-valuenow": { "alias": "aria-valuenow"; "required": false; }; "aria-valuetext": { "alias": "aria-valuetext"; "required": false; }; }, {}, never, ["*"], true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
8
- }
@@ -1,92 +0,0 @@
1
- // ScrollView on iOS. The RefreshControl is a CHILD of the scroll view, rendered
2
- // as a SIBLING BEFORE the content container (RN ScrollView.js: {refreshControl}{contentContainer}).
3
- // The developer composes it as a projected child of <ScrollView>; this template selects it into the
4
- // sibling slot before the scroll-content. Also the base (index.ts re-exports it) for headless /
5
- // web. Metro picks this on an iOS host; no Platform.OS read. Mirrors the React/Vue iOS binding.
6
- //
7
- // UNLIKE Android, iOS has only ONE host intrinsic pair regardless of axis (both horizontal and
8
- // vertical map to RCTScrollView / RCTScrollContentView) — `shared.ts`'s `scrollProps` already
9
- // forwards `horizontal` as a plain prop ("iOS needs `horizontal` to flip RCTScrollView's axis").
10
- // So, unlike `index.android.ts`, this file does NOT branch the host tag on `isHorizontal` — doing
11
- // so anyway (mirroring Android's shape for symmetry) used to declare `<ng-content>` once per
12
- // `@if`/`@else` branch, which trips a documented Angular limitation: content projected into the
13
- // FIRST (`@if`) branch never receives Angular's native catch-up placement, only the SECOND
14
- // (`@else`) branch does (angular/angular#53310, #54840 — Angular's own docs: "You should not
15
- // conditionally include <ng-content> with @if, @for, or @switch"). Symptom here was axis-specific:
16
- // a horizontal FlatList's cells landed outside the ScrollView entirely. Fix: single unconditional
17
- // `<ng-content>` call site.
18
- import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, } from '@angular/core';
19
- import { RefreshControlHost, ScrollContentView, ScrollViewHost, SymbioteHostPropsDirective, SymbioteStyleInputDirective, } from '../../primitives';
20
- import { ScrollViewBase, ScrollViewProjectionDirective, SCROLL_VIEW_INPUTS, } from './shared';
21
- import * as i0 from "@angular/core";
22
- import * as i1 from "../../primitives/shared";
23
- // The symbiote-* host elements are imported as standalone components; the props directive is
24
- // applied as a template directive and the projection directive manages sticky-header wrapping.
25
- // Behavior lives entirely in ScrollViewBase; this class exists for the decorator + iOS template.
26
- // The anchor-style merge that used to be a `scrollProps` override here moved into the base's
27
- // `scrollProps` computed - a subclass getter cannot override a field, and both platforms merged it
28
- // identically anyway (see that computed's comment).
29
- export class ScrollView extends ScrollViewBase {
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollView, deps: null, target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: ScrollView, isStandalone: true, selector: "ScrollView", inputs: { style: "style", contentContainerStyle: "contentContainerStyle", horizontal: "horizontal", scrollEnabled: "scrollEnabled", showsVerticalScrollIndicator: "showsVerticalScrollIndicator", showsHorizontalScrollIndicator: "showsHorizontalScrollIndicator", pagingEnabled: "pagingEnabled", bounces: "bounces", decelerationRate: "decelerationRate", scrollEventThrottle: "scrollEventThrottle", contentInset: "contentInset", contentOffset: "contentOffset", removeClippedSubviews: "removeClippedSubviews", snapToInterval: "snapToInterval", snapToOffsets: "snapToOffsets", snapToAlignment: "snapToAlignment", snapToStart: "snapToStart", snapToEnd: "snapToEnd", disableIntervalMomentum: "disableIntervalMomentum", stickyHeaderIndices: "stickyHeaderIndices", invertStickyHeaders: "invertStickyHeaders", StickyHeaderComponent: "StickyHeaderComponent", keyboardDismissMode: "keyboardDismissMode", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", maintainVisibleContentPosition: "maintainVisibleContentPosition", alwaysBounceHorizontal: "alwaysBounceHorizontal", alwaysBounceVertical: "alwaysBounceVertical", centerContent: "centerContent", scrollIndicatorInsets: "scrollIndicatorInsets", indicatorStyle: "indicatorStyle", directionalLockEnabled: "directionalLockEnabled", automaticallyAdjustKeyboardInsets: "automaticallyAdjustKeyboardInsets", contentInsetAdjustmentBehavior: "contentInsetAdjustmentBehavior", minimumZoomScale: "minimumZoomScale", maximumZoomScale: "maximumZoomScale", zoomScale: "zoomScale", bouncesZoom: "bouncesZoom", pinchGestureEnabled: "pinchGestureEnabled", nestedScrollEnabled: "nestedScrollEnabled", overScrollMode: "overScrollMode", fadingEdgeLength: "fadingEdgeLength", persistentScrollbar: "persistentScrollbar", endFillColor: "endFillColor", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", testID: "testID", nativeID: "nativeID", accessible: "accessible", accessibilityLabel: "accessibilityLabel", accessibilityHint: "accessibilityHint", accessibilityRole: "accessibilityRole", accessibilityState: "accessibilityState", accessibilityValue: "accessibilityValue", accessibilityActions: "accessibilityActions", accessibilityLabelledBy: "accessibilityLabelledBy", importantForAccessibility: "importantForAccessibility", accessibilityLiveRegion: "accessibilityLiveRegion", screenReaderFocusable: "screenReaderFocusable", accessibilityViewIsModal: "accessibilityViewIsModal", accessibilityElementsHidden: "accessibilityElementsHidden", accessibilityIgnoresInvertColors: "accessibilityIgnoresInvertColors", accessibilityLanguage: "accessibilityLanguage", accessibilityRespondsToUserInteraction: "accessibilityRespondsToUserInteraction", accessibilityShowsLargeContentViewer: "accessibilityShowsLargeContentViewer", accessibilityLargeContentTitle: "accessibilityLargeContentTitle", role: "role", "aria-label": "aria-label", "aria-labelledby": "aria-labelledby", "aria-live": "aria-live", "aria-hidden": "aria-hidden", "aria-busy": "aria-busy", "aria-checked": "aria-checked", "aria-disabled": "aria-disabled", "aria-expanded": "aria-expanded", "aria-selected": "aria-selected", "aria-modal": "aria-modal", "aria-valuemax": "aria-valuemax", "aria-valuemin": "aria-valuemin", "aria-valuenow": "aria-valuenow", "aria-valuetext": "aria-valuetext" }, usesInheritance: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `
32
- <symbiote-scroll-view
33
- #host="symbioteHost"
34
- [symbioteHostProps]="scrollProps()"
35
- >
36
- @if (hasProjectedRefreshControl) {
37
- <symbiote-refresh-control
38
- #refreshHost="symbioteHost"
39
- [symbioteHostProps]="iosRefreshControlProps"
40
- (refresh)="handleProjectedRefresh(refreshHost.node)"
41
- ></symbiote-refresh-control>
42
- }
43
- <symbiote-scroll-content
44
- [symbioteHostProps]="contentProps()"
45
- [symbioteScrollViewProjection]="projectionController"
46
- >
47
- <ng-content></ng-content>
48
- </symbiote-scroll-content>
49
- </symbiote-scroll-view>
50
- `, isInline: true, dependencies: [{ kind: "component", type: ScrollViewHost, selector: "symbiote-scroll-view" }, { kind: "component", type: ScrollContentView, selector: "symbiote-scroll-content" }, { kind: "component", type: RefreshControlHost, selector: "symbiote-refresh-control" }, { kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "directive", type: ScrollViewProjectionDirective, selector: "[symbioteScrollViewProjection]", inputs: ["symbioteScrollViewProjection"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
- }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ScrollView, decorators: [{
53
- type: Component,
54
- args: [{
55
- selector: 'ScrollView',
56
- standalone: true,
57
- hostDirectives: [
58
- { directive: SymbioteStyleInputDirective, inputs: ['style'] },
59
- ],
60
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
61
- imports: [
62
- ScrollViewHost,
63
- ScrollContentView,
64
- RefreshControlHost,
65
- SymbioteHostPropsDirective,
66
- ScrollViewProjectionDirective,
67
- ],
68
- changeDetection: ChangeDetectionStrategy.OnPush,
69
- inputs: SCROLL_VIEW_INPUTS,
70
- template: `
71
- <symbiote-scroll-view
72
- #host="symbioteHost"
73
- [symbioteHostProps]="scrollProps()"
74
- >
75
- @if (hasProjectedRefreshControl) {
76
- <symbiote-refresh-control
77
- #refreshHost="symbioteHost"
78
- [symbioteHostProps]="iosRefreshControlProps"
79
- (refresh)="handleProjectedRefresh(refreshHost.node)"
80
- ></symbiote-refresh-control>
81
- }
82
- <symbiote-scroll-content
83
- [symbioteHostProps]="contentProps()"
84
- [symbioteScrollViewProjection]="projectionController"
85
- >
86
- <ng-content></ng-content>
87
- </symbiote-scroll-content>
88
- </symbiote-scroll-view>
89
- `,
90
- }]
91
- }] });
92
- //# sourceMappingURL=index.ios.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.ios.js","sourceRoot":"","sources":["../../../../src/components/scroll-view/index.ios.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oGAAoG;AACpG,oGAAoG;AACpG,gGAAgG;AAChG,gGAAgG;AAChG,EAAE;AACF,+FAA+F;AAC/F,8FAA8F;AAC9F,iGAAiG;AACjG,kGAAkG;AAClG,6FAA6F;AAC7F,gGAAgG;AAChG,2FAA2F;AAC3F,6FAA6F;AAC7F,mGAAmG;AACnG,kGAAkG;AAClG,4BAA4B;AAE5B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,UAAU,CAAC;;;AAGlB,6FAA6F;AAC7F,+FAA+F;AAsC/F,iGAAiG;AACjG,6FAA6F;AAC7F,mGAAmG;AACnG,oDAAoD;AACpD,MAAM,OAAO,UAAW,SAAQ,cAAc;uGAAjC,UAAU;2FAAV,UAAU,4gHAzBX;;;;;;;;;;;;;;;;;;;GAmBT,4DA3BC,cAAc,iEACd,iBAAiB,oEACjB,kBAAkB,qEAClB,0BAA0B,2HAC1B,6BAA6B;;2FA6BpB,UAAU;kBAzCtB,SAAS;mBAAC;oBACT,QAAQ,EAAE,YAAY;oBACtB,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE;wBACd,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;qBAC9D;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE;wBACP,cAAc;wBACd,iBAAiB;wBACjB,kBAAkB;wBAClB,0BAA0B;wBAC1B,6BAA6B;qBAC9B;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,MAAM,EAAE,kBAAkB;oBAC1B,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;GAmBT;iBACF"}
@@ -1,6 +0,0 @@
1
- // Base / default ScrollView. Re-exports the iOS build. Metro overrides this with index.ios.ts /
2
- // index.android.ts on a real host; under tsx / tsc / web the host resolves here. Filename is the
3
- // selector, no Platform.OS read.
4
- export * from './index.ios';
5
- export { ScrollViewStickyHeader } from './sticky-header';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/scroll-view/index.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,iGAAiG;AACjG,iCAAiC;AAEjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,67 +0,0 @@
1
- import { type AnimatedValue, type ISymbioteNode } from '@symbiote-native/engine';
2
- type IInsert = (parent: ISymbioteNode, child: ISymbioteNode, beforeChild?: ISymbioteNode) => void;
3
- type IRemove = (parent: ISymbioteNode, child: ISymbioteNode) => void;
4
- /**
5
- * Run every sticky reconcile owed by this change-detection pass. Wired to the renderer factory's
6
- * `end()`, which Angular calls at the end of `ApplicationRef.tick` — after both channels that feed
7
- * a projection controller have written (children through the renderer, `stickyHeaderIndices` through
8
- * an `@Input`), and before the surface's microtask-coalesced commit runs.
9
- */
10
- export declare function flushScrollViewProjections(): void;
11
- export interface IScrollViewProjectionConfig {
12
- stickyHeaderIndices: readonly number[] | undefined;
13
- invertStickyHeaders: boolean | undefined;
14
- scrollViewHeight: number | undefined;
15
- scrollAnimatedValue: AnimatedValue;
16
- customStickyHeaderComponent: unknown;
17
- excludeRefreshControl: boolean;
18
- }
19
- export declare class ScrollViewProjectionController {
20
- config: IScrollViewProjectionConfig;
21
- private contentNode;
22
- private readonly records;
23
- private readonly headerLayoutYs;
24
- private readonly instanceId;
25
- private reconcileSeq;
26
- private isReconcilePending;
27
- private shouldNotifyAll;
28
- constructor(config: IScrollViewProjectionConfig);
29
- update(config: IScrollViewProjectionConfig): void;
30
- /**
31
- * Coalesce every reconcile request of one change-detection pass into a SINGLE walk.
32
- *
33
- * Cost is half the reason: the walk is O(records), so running it per projected mutation makes
34
- * mounting M children O(M^2) - 801 children on the benchmark screen's PATH A. Correctness is the
35
- * worse half. A windowed list feeds the controller through TWO channels that land at different
36
- * moments in the same pass: children arrive through the renderer (insert/remove), while
37
- * `stickyHeaderIndices` arrive as an ordinary `@Input` via `update()` from ngOnChanges. Reconciling
38
- * on each mutation therefore guarantees at least one walk matching the NEW children against the
39
- * OLD indices - and those indices are positions in the rendered child array
40
- * (`stickyChildPositions`), which shift by 1-3 the moment VirtualizedList grows a leading spacer or
41
- * a forced sticky cell. Every mismatch re-labels a header and re-parents engine nodes for nothing.
42
- *
43
- * The flush point is `RendererFactory2.end()`: the end of the pass, still SYNCHRONOUS. It must not
44
- * be a microtask - engine mutations only `markDirty`, the commit is microtask-coalesced by the
45
- * surface, and a reconcile queued after that commit mutates a tree nobody commits again. Headless
46
- * the sticky wrapper then never reaches Fabric at all (six tests caught exactly this); on device it
47
- * lands a frame late or not at all. `end()` runs inside `ApplicationRef.tick`, so it precedes every
48
- * microtask queued during the pass.
49
- */
50
- private scheduleReconcile;
51
- flushReconcile(): void;
52
- bindContentNode(node: ISymbioteNode): void;
53
- appendProjectedChild(parent: ISymbioteNode, child: ISymbioteNode, insert: IInsert): void;
54
- insertProjectedChild(parent: ISymbioteNode, child: ISymbioteNode, beforeChild: ISymbioteNode | null, insert: IInsert): void;
55
- removeProjectedChild(child: ISymbioteNode, remove: IRemove): boolean;
56
- nextStickyHeaderY(index: number): number | undefined;
57
- recordHeaderLayoutY(index: number, y: number): void;
58
- private insertRecord;
59
- private reconcileStickyRecords;
60
- private dropRecord;
61
- private wrapRecord;
62
- private nextDirectAfter;
63
- private unwrapRecord;
64
- }
65
- export declare function getScrollViewProjection(node: ISymbioteNode): ScrollViewProjectionController | undefined;
66
- export declare function removeScrollViewProjectedChild(child: ISymbioteNode, remove: IRemove): boolean;
67
- export {};