@symbiote-native/angular 0.0.0-canary-20260724081123

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 (276) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/babel-linker.cjs +7 -0
  4. package/babel-register-composed.cjs +127 -0
  5. package/bin/symbiote-angular-dev.cjs +93 -0
  6. package/build/angular/anchor-host-registry.d.ts +2 -0
  7. package/build/angular/anchor-host-registry.js +84 -0
  8. package/build/angular/anchor-host-registry.js.map +1 -0
  9. package/build/angular/bootstrap.d.ts +7 -0
  10. package/build/angular/bootstrap.js +15 -0
  11. package/build/angular/bootstrap.js.map +1 -0
  12. package/build/angular/components/activity-indicator/index.android.d.ts +12 -0
  13. package/build/angular/components/activity-indicator/index.android.js +21 -0
  14. package/build/angular/components/activity-indicator/index.android.js.map +1 -0
  15. package/build/angular/components/activity-indicator/index.d.ts +1 -0
  16. package/build/angular/components/activity-indicator/index.ios.d.ts +8 -0
  17. package/build/angular/components/activity-indicator/index.ios.js +21 -0
  18. package/build/angular/components/activity-indicator/index.ios.js.map +1 -0
  19. package/build/angular/components/activity-indicator/index.js +4 -0
  20. package/build/angular/components/activity-indicator/index.js.map +1 -0
  21. package/build/angular/components/activity-indicator/shared.d.ts +67 -0
  22. package/build/angular/components/activity-indicator/shared.js +260 -0
  23. package/build/angular/components/activity-indicator/shared.js.map +1 -0
  24. package/build/angular/components/button.d.ts +63 -0
  25. package/build/angular/components/button.js +332 -0
  26. package/build/angular/components/button.js.map +1 -0
  27. package/build/angular/components/flat-list/index.d.ts +122 -0
  28. package/build/angular/components/flat-list/index.js +688 -0
  29. package/build/angular/components/flat-list/index.js.map +1 -0
  30. package/build/angular/components/image/index.android.d.ts +10 -0
  31. package/build/angular/components/image/index.android.js +59 -0
  32. package/build/angular/components/image/index.android.js.map +1 -0
  33. package/build/angular/components/image/index.d.ts +1 -0
  34. package/build/angular/components/image/index.ios.d.ts +10 -0
  35. package/build/angular/components/image/index.ios.js +59 -0
  36. package/build/angular/components/image/index.ios.js.map +1 -0
  37. package/build/angular/components/image/index.js +3 -0
  38. package/build/angular/components/image/index.js.map +1 -0
  39. package/build/angular/components/image/shared.d.ts +101 -0
  40. package/build/angular/components/image/shared.js +406 -0
  41. package/build/angular/components/image/shared.js.map +1 -0
  42. package/build/angular/components/image-background.d.ts +81 -0
  43. package/build/angular/components/image-background.js +418 -0
  44. package/build/angular/components/image-background.js.map +1 -0
  45. package/build/angular/components/input-accessory-view/index.d.ts +60 -0
  46. package/build/angular/components/input-accessory-view/index.js +251 -0
  47. package/build/angular/components/input-accessory-view/index.js.map +1 -0
  48. package/build/angular/components/keyboard-avoiding-view/index.d.ts +82 -0
  49. package/build/angular/components/keyboard-avoiding-view/index.js +358 -0
  50. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -0
  51. package/build/angular/components/modal/index.d.ts +92 -0
  52. package/build/angular/components/modal/index.js +360 -0
  53. package/build/angular/components/modal/index.js.map +1 -0
  54. package/build/angular/components/pressable/index.d.ts +123 -0
  55. package/build/angular/components/pressable/index.js +420 -0
  56. package/build/angular/components/pressable/index.js.map +1 -0
  57. package/build/angular/components/refresh-control/index.d.ts +86 -0
  58. package/build/angular/components/refresh-control/index.js +342 -0
  59. package/build/angular/components/refresh-control/index.js.map +1 -0
  60. package/build/angular/components/safe-area-view/index.d.ts +57 -0
  61. package/build/angular/components/safe-area-view/index.js +248 -0
  62. package/build/angular/components/safe-area-view/index.js.map +1 -0
  63. package/build/angular/components/scroll-view/index.android.d.ts +21 -0
  64. package/build/angular/components/scroll-view/index.android.js +235 -0
  65. package/build/angular/components/scroll-view/index.android.js.map +1 -0
  66. package/build/angular/components/scroll-view/index.d.ts +3 -0
  67. package/build/angular/components/scroll-view/index.ios.d.ts +9 -0
  68. package/build/angular/components/scroll-view/index.ios.js +86 -0
  69. package/build/angular/components/scroll-view/index.ios.js.map +1 -0
  70. package/build/angular/components/scroll-view/index.js +6 -0
  71. package/build/angular/components/scroll-view/index.js.map +1 -0
  72. package/build/angular/components/scroll-view/projection.d.ts +32 -0
  73. package/build/angular/components/scroll-view/projection.js +334 -0
  74. package/build/angular/components/scroll-view/projection.js.map +1 -0
  75. package/build/angular/components/scroll-view/shared.d.ts +230 -0
  76. package/build/angular/components/scroll-view/shared.js +682 -0
  77. package/build/angular/components/scroll-view/shared.js.map +1 -0
  78. package/build/angular/components/scroll-view/sticky-header.d.ts +40 -0
  79. package/build/angular/components/scroll-view/sticky-header.js +225 -0
  80. package/build/angular/components/scroll-view/sticky-header.js.map +1 -0
  81. package/build/angular/components/section-list/index.d.ts +116 -0
  82. package/build/angular/components/section-list/index.js +641 -0
  83. package/build/angular/components/section-list/index.js.map +1 -0
  84. package/build/angular/components/switch/index.android.d.ts +20 -0
  85. package/build/angular/components/switch/index.android.js +70 -0
  86. package/build/angular/components/switch/index.android.js.map +1 -0
  87. package/build/angular/components/switch/index.d.ts +1 -0
  88. package/build/angular/components/switch/index.ios.d.ts +19 -0
  89. package/build/angular/components/switch/index.ios.js +69 -0
  90. package/build/angular/components/switch/index.ios.js.map +1 -0
  91. package/build/angular/components/switch/index.js +4 -0
  92. package/build/angular/components/switch/index.js.map +1 -0
  93. package/build/angular/components/switch/shared.d.ts +40 -0
  94. package/build/angular/components/switch/shared.js +127 -0
  95. package/build/angular/components/switch/shared.js.map +1 -0
  96. package/build/angular/components/text-input.d.ts +153 -0
  97. package/build/angular/components/text-input.js +599 -0
  98. package/build/angular/components/text-input.js.map +1 -0
  99. package/build/angular/components/touchable/index.d.ts +245 -0
  100. package/build/angular/components/touchable/index.js +1186 -0
  101. package/build/angular/components/touchable/index.js.map +1 -0
  102. package/build/angular/components/touchable-native-feedback/index.d.ts +83 -0
  103. package/build/angular/components/touchable-native-feedback/index.js +371 -0
  104. package/build/angular/components/touchable-native-feedback/index.js.map +1 -0
  105. package/build/angular/components/virtualized-list/directives.d.ts +54 -0
  106. package/build/angular/components/virtualized-list/directives.js +153 -0
  107. package/build/angular/components/virtualized-list/directives.js.map +1 -0
  108. package/build/angular/components/virtualized-list/index.d.ts +253 -0
  109. package/build/angular/components/virtualized-list/index.js +1031 -0
  110. package/build/angular/components/virtualized-list/index.js.map +1 -0
  111. package/build/angular/components/virtualized-section-list/directives.d.ts +37 -0
  112. package/build/angular/components/virtualized-section-list/directives.js +76 -0
  113. package/build/angular/components/virtualized-section-list/directives.js.map +1 -0
  114. package/build/angular/components/virtualized-section-list/index.d.ts +178 -0
  115. package/build/angular/components/virtualized-section-list/index.js +720 -0
  116. package/build/angular/components/virtualized-section-list/index.js.map +1 -0
  117. package/build/angular/components.d.ts +39 -0
  118. package/build/angular/components.js +38 -0
  119. package/build/angular/components.js.map +1 -0
  120. package/build/angular/create-portal/index.d.ts +22 -0
  121. package/build/angular/create-portal/index.js +74 -0
  122. package/build/angular/create-portal/index.js.map +1 -0
  123. package/build/angular/create-tunnel/index.d.ts +34 -0
  124. package/build/angular/create-tunnel/index.js +126 -0
  125. package/build/angular/create-tunnel/index.js.map +1 -0
  126. package/build/angular/descriptor-to-angular/index.d.ts +22 -0
  127. package/build/angular/descriptor-to-angular/index.js +142 -0
  128. package/build/angular/descriptor-to-angular/index.js.map +1 -0
  129. package/build/angular/host-instance/index.d.ts +2 -0
  130. package/build/angular/host-instance/index.js +37 -0
  131. package/build/angular/host-instance/index.js.map +1 -0
  132. package/build/angular/index.d.ts +22 -0
  133. package/build/angular/index.js +46 -0
  134. package/build/angular/index.js.map +1 -0
  135. package/build/angular/modules/animated/animated-leaf-binder/index.d.ts +14 -0
  136. package/build/angular/modules/animated/animated-leaf-binder/index.js +91 -0
  137. package/build/angular/modules/animated/animated-leaf-binder/index.js.map +1 -0
  138. package/build/angular/modules/animated/animated-leaf-binder.d.ts +14 -0
  139. package/build/angular/modules/animated/animated-leaf-binder.js +91 -0
  140. package/build/angular/modules/animated/animated-leaf-binder.js.map +1 -0
  141. package/build/angular/modules/animated/create-animated-component.d.ts +59 -0
  142. package/build/angular/modules/animated/create-animated-component.js +364 -0
  143. package/build/angular/modules/animated/create-animated-component.js.map +1 -0
  144. package/build/angular/modules/animated/index.d.ts +51 -0
  145. package/build/angular/modules/animated/index.js +59 -0
  146. package/build/angular/modules/animated/index.js.map +1 -0
  147. package/build/angular/modules/app-registry/index.d.ts +7 -0
  148. package/build/angular/modules/app-registry/index.js +23 -0
  149. package/build/angular/modules/app-registry/index.js.map +1 -0
  150. package/build/angular/modules/status-bar/index.d.ts +20 -0
  151. package/build/angular/modules/status-bar/index.js +59 -0
  152. package/build/angular/modules/status-bar/index.js.map +1 -0
  153. package/build/angular/primitives/index.d.ts +63 -0
  154. package/build/angular/primitives/index.js +189 -0
  155. package/build/angular/primitives/index.js.map +1 -0
  156. package/build/angular/primitives/shared.d.ts +88 -0
  157. package/build/angular/primitives/shared.js +171 -0
  158. package/build/angular/primitives/shared.js.map +1 -0
  159. package/build/angular/render/index.d.ts +11 -0
  160. package/build/angular/render/index.js +171 -0
  161. package/build/angular/render/index.js.map +1 -0
  162. package/build/angular/renderer/index.d.ts +37 -0
  163. package/build/angular/renderer/index.js +301 -0
  164. package/build/angular/renderer/index.js.map +1 -0
  165. package/build/angular/services/color-scheme.service.d.ts +16 -0
  166. package/build/angular/services/color-scheme.service.js +31 -0
  167. package/build/angular/services/color-scheme.service.js.map +1 -0
  168. package/build/angular/services/index.d.ts +2 -0
  169. package/build/angular/services/index.js +3 -0
  170. package/build/angular/services/index.js.map +1 -0
  171. package/build/angular/services/window-dimensions.service.d.ts +16 -0
  172. package/build/angular/services/window-dimensions.service.js +42 -0
  173. package/build/angular/services/window-dimensions.service.js.map +1 -0
  174. package/metro-config.cjs +48 -0
  175. package/metro-css-parser.cjs +13 -0
  176. package/package.json +80 -0
  177. package/src/__tests__/responder-change-detection.test.ts +102 -0
  178. package/src/__tests__/responder-nested-cd.test.ts +113 -0
  179. package/src/anchor-host-registry.ts +88 -0
  180. package/src/angular-gaps.test.ts +142 -0
  181. package/src/angular-imports.test.ts +100 -0
  182. package/src/bootstrap.ts +26 -0
  183. package/src/components/activity-indicator/activity-indicator-class-style.test.ts +44 -0
  184. package/src/components/activity-indicator/activity-indicator.test.ts +131 -0
  185. package/src/components/activity-indicator/index.android.ts +16 -0
  186. package/src/components/activity-indicator/index.ios.ts +17 -0
  187. package/src/components/activity-indicator/index.ts +4 -0
  188. package/src/components/activity-indicator/shared.ts +206 -0
  189. package/src/components/button.ts +193 -0
  190. package/src/components/flat-list/column-wrapper-style-class.test.ts +116 -0
  191. package/src/components/flat-list/flat-list-array-style.test.ts +131 -0
  192. package/src/components/flat-list/flat-list-class-style.test.ts +74 -0
  193. package/src/components/flat-list/flat-list-scroll-containment.test.ts +107 -0
  194. package/src/components/flat-list/flat-list.test.ts +99 -0
  195. package/src/components/flat-list/index.ts +574 -0
  196. package/src/components/image/image-class-style.test.ts +46 -0
  197. package/src/components/image/index.android.ts +48 -0
  198. package/src/components/image/index.ios.ts +48 -0
  199. package/src/components/image/index.ts +3 -0
  200. package/src/components/image/shared.ts +479 -0
  201. package/src/components/image-background-class-style.test.ts +48 -0
  202. package/src/components/image-background-style-class.test.ts +79 -0
  203. package/src/components/image-background.ts +270 -0
  204. package/src/components/input-accessory-view/index.ts +185 -0
  205. package/src/components/input-accessory-view/input-accessory-view.test.ts +43 -0
  206. package/src/components/keyboard-avoiding-view/index.ts +303 -0
  207. package/src/components/keyboard-avoiding-view/keyboard-avoiding-view.test.ts +54 -0
  208. package/src/components/modal/index.ts +299 -0
  209. package/src/components/modal/modal.test.ts +43 -0
  210. package/src/components/pressable/index.ts +373 -0
  211. package/src/components/pressable/pressable.test.ts +85 -0
  212. package/src/components/refresh-control/index.ts +284 -0
  213. package/src/components/refresh-control/refresh-control.test.ts +41 -0
  214. package/src/components/safe-area-view/index.ts +177 -0
  215. package/src/components/safe-area-view/safe-area-view.test.ts +43 -0
  216. package/src/components/scroll-view/android-scroll-view-axis-projection.test.ts +123 -0
  217. package/src/components/scroll-view/content-container-style-class.test.ts +75 -0
  218. package/src/components/scroll-view/index.android.ts +190 -0
  219. package/src/components/scroll-view/index.ios.ts +79 -0
  220. package/src/components/scroll-view/index.ts +7 -0
  221. package/src/components/scroll-view/projection.ts +414 -0
  222. package/src/components/scroll-view/scroll-view-class-style.test.ts +134 -0
  223. package/src/components/scroll-view/scroll-view-projection.test.ts +194 -0
  224. package/src/components/scroll-view/shared.ts +844 -0
  225. package/src/components/scroll-view/sticky-header.ts +255 -0
  226. package/src/components/section-list/index.ts +445 -0
  227. package/src/components/switch/android-switch-class.test.ts +42 -0
  228. package/src/components/switch/index.android.ts +61 -0
  229. package/src/components/switch/index.ios.ts +60 -0
  230. package/src/components/switch/index.ts +4 -0
  231. package/src/components/switch/shared.ts +197 -0
  232. package/src/components/switch/switch.test.ts +92 -0
  233. package/src/components/text-input-class-style.test.ts +54 -0
  234. package/src/components/text-input.ts +531 -0
  235. package/src/components/touchable/index.ts +629 -0
  236. package/src/components/touchable/touchable.test.ts +102 -0
  237. package/src/components/touchable-native-feedback/index.ts +254 -0
  238. package/src/components/touchable-native-feedback/touchable-native-feedback.test.ts +49 -0
  239. package/src/components/virtualized-list/directives.ts +168 -0
  240. package/src/components/virtualized-list/index.ts +992 -0
  241. package/src/components/virtualized-list/virtualized-list-class-style.test.ts +76 -0
  242. package/src/components/virtualized-section-list/directives.ts +90 -0
  243. package/src/components/virtualized-section-list/index.ts +601 -0
  244. package/src/components/virtualized-section-list/virtualized-section-list-class-style.test.ts +60 -0
  245. package/src/components.ts +149 -0
  246. package/src/create-portal/create-portal.test.ts +90 -0
  247. package/src/create-portal/index.ts +74 -0
  248. package/src/create-tunnel/create-tunnel.test.ts +120 -0
  249. package/src/create-tunnel/index.ts +136 -0
  250. package/src/descriptor-to-angular/descriptor-outlet.test.ts +94 -0
  251. package/src/descriptor-to-angular/index.ts +190 -0
  252. package/src/host-instance/host-instance.test.ts +49 -0
  253. package/src/host-instance/index.ts +36 -0
  254. package/src/index.ts +261 -0
  255. package/src/modules/animated/animated-leaf-binder/animated-leaf-binder.test.ts +116 -0
  256. package/src/modules/animated/animated-leaf-binder/index.ts +101 -0
  257. package/src/modules/animated/animated-leaf-binder.test.ts +116 -0
  258. package/src/modules/animated/animated-leaf-binder.ts +101 -0
  259. package/src/modules/animated/animated-scroll-view.test.ts +102 -0
  260. package/src/modules/animated/create-animated-component.ts +365 -0
  261. package/src/modules/animated/index.ts +105 -0
  262. package/src/modules/app-registry/app-registry.test.ts +106 -0
  263. package/src/modules/app-registry/index.ts +60 -0
  264. package/src/modules/status-bar/index.ts +57 -0
  265. package/src/modules/status-bar/status-bar.test.ts +50 -0
  266. package/src/primitives/index.ts +119 -0
  267. package/src/primitives/shared.ts +190 -0
  268. package/src/render/index.ts +235 -0
  269. package/src/render/render.test.ts +147 -0
  270. package/src/renderer/index.ts +347 -0
  271. package/src/renderer/renderer.test.ts +203 -0
  272. package/src/services/color-scheme.service.ts +27 -0
  273. package/src/services/index.ts +2 -0
  274. package/src/services/services.test.ts +163 -0
  275. package/src/services/window-dimensions.service.ts +41 -0
  276. package/tsconfig.angular.base.json +30 -0
@@ -0,0 +1,63 @@
1
+ import { SymbiotePrimitiveHost } from './shared';
2
+ import * as i0 from "@angular/core";
3
+ export { anchorHostStyle, anchorStyleProp, stableAnchorStyle, SymbioteHostPropsDirective, } from './shared';
4
+ export declare class ViewHost extends SymbiotePrimitiveHost {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<ViewHost, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<ViewHost, "symbiote-view, View", never, {}, {}, never, ["*"], true, never>;
7
+ }
8
+ export declare class TextHost extends SymbiotePrimitiveHost {
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextHost, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextHost, "symbiote-text, Text", never, {}, {}, never, ["*"], true, never>;
11
+ }
12
+ export declare class ImageHost extends SymbiotePrimitiveHost {
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ImageHost, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ImageHost, "symbiote-image", never, {}, {}, never, ["*"], true, never>;
15
+ }
16
+ export declare class ScrollViewHost extends SymbiotePrimitiveHost {
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScrollViewHost, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScrollViewHost, "symbiote-scroll-view", never, {}, {}, never, ["*"], true, never>;
19
+ }
20
+ export declare class ScrollContentView extends SymbiotePrimitiveHost {
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScrollContentView, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScrollContentView, "symbiote-scroll-content", never, {}, {}, never, ["*"], true, never>;
23
+ }
24
+ export declare class HorizontalScrollView extends SymbiotePrimitiveHost {
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<HorizontalScrollView, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<HorizontalScrollView, "symbiote-horizontal-scroll-view", never, {}, {}, never, ["*"], true, never>;
27
+ }
28
+ export declare class HorizontalScrollContentView extends SymbiotePrimitiveHost {
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<HorizontalScrollContentView, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<HorizontalScrollContentView, "symbiote-horizontal-scroll-content", never, {}, {}, never, ["*"], true, never>;
31
+ }
32
+ export declare class TextInputHost extends SymbiotePrimitiveHost {
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextInputHost, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextInputHost, "symbiote-text-input", never, {}, {}, never, ["*"], true, never>;
35
+ }
36
+ export declare class MultilineTextInputHost extends SymbiotePrimitiveHost {
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultilineTextInputHost, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<MultilineTextInputHost, "symbiote-text-input-multiline", never, {}, {}, never, ["*"], true, never>;
39
+ }
40
+ export declare class SwitchHost extends SymbiotePrimitiveHost {
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwitchHost, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<SwitchHost, "symbiote-switch", never, {}, {}, never, ["*"], true, never>;
43
+ }
44
+ export declare class ActivityIndicatorHost extends SymbiotePrimitiveHost {
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIndicatorHost, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActivityIndicatorHost, "symbiote-activity-indicator", never, {}, {}, never, ["*"], true, never>;
47
+ }
48
+ export declare class SafeAreaViewHost extends SymbiotePrimitiveHost {
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<SafeAreaViewHost, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<SafeAreaViewHost, "symbiote-safe-area-view", never, {}, {}, never, ["*"], true, never>;
51
+ }
52
+ export declare class ModalHost extends SymbiotePrimitiveHost {
53
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalHost, never>;
54
+ static ɵcmp: i0.ɵɵComponentDeclaration<ModalHost, "symbiote-modal", never, {}, {}, never, ["*"], true, never>;
55
+ }
56
+ export declare class RefreshControlHost extends SymbiotePrimitiveHost {
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<RefreshControlHost, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<RefreshControlHost, "symbiote-refresh-control", never, {}, {}, never, ["*"], true, never>;
59
+ }
60
+ export declare class InputAccessoryViewHost extends SymbiotePrimitiveHost {
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputAccessoryViewHost, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputAccessoryViewHost, "symbiote-input-accessory-view", never, {}, {}, never, ["*"], true, never>;
63
+ }
@@ -0,0 +1,189 @@
1
+ // Angular primitive host components over Symbiote engine intrinsics. These are the only
2
+ // components that directly own the `symbiote-*` selectors; every composed adapter
3
+ // component imports them and renders them in its template. Declaring `style` as a real
4
+ // Angular input prevents Angular's CSS style engine from decomposing RN `StyleProp` arrays.
5
+ import { Component } from '@angular/core';
6
+ import { SymbiotePrimitiveHost } from './shared';
7
+ import * as i0 from "@angular/core";
8
+ export { anchorHostStyle, anchorStyleProp, stableAnchorStyle, SymbioteHostPropsDirective, } from './shared';
9
+ export class ViewHost extends SymbiotePrimitiveHost {
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
11
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ViewHost, isStandalone: true, selector: "symbiote-view, View", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ViewHost, decorators: [{
14
+ type: Component,
15
+ args: [{
16
+ selector: 'symbiote-view, View',
17
+ standalone: true,
18
+ template: '<ng-content></ng-content>',
19
+ }]
20
+ }] });
21
+ export class TextHost extends SymbiotePrimitiveHost {
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TextHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: TextHost, isStandalone: true, selector: "symbiote-text, Text", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TextHost, decorators: [{
26
+ type: Component,
27
+ args: [{
28
+ selector: 'symbiote-text, Text',
29
+ standalone: true,
30
+ template: '<ng-content></ng-content>',
31
+ }]
32
+ }] });
33
+ export class ImageHost extends SymbiotePrimitiveHost {
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ImageHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ImageHost, isStandalone: true, selector: "symbiote-image", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ImageHost, decorators: [{
38
+ type: Component,
39
+ args: [{
40
+ selector: 'symbiote-image',
41
+ standalone: true,
42
+ template: '<ng-content></ng-content>',
43
+ }]
44
+ }] });
45
+ export class ScrollViewHost extends SymbiotePrimitiveHost {
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ScrollViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ScrollViewHost, isStandalone: true, selector: "symbiote-scroll-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ScrollViewHost, decorators: [{
50
+ type: Component,
51
+ args: [{
52
+ selector: 'symbiote-scroll-view',
53
+ standalone: true,
54
+ template: '<ng-content></ng-content>',
55
+ }]
56
+ }] });
57
+ export class ScrollContentView extends SymbiotePrimitiveHost {
58
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ScrollContentView, deps: null, target: i0.ɵɵFactoryTarget.Component });
59
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ScrollContentView, isStandalone: true, selector: "symbiote-scroll-content", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ScrollContentView, decorators: [{
62
+ type: Component,
63
+ args: [{
64
+ selector: 'symbiote-scroll-content',
65
+ standalone: true,
66
+ template: '<ng-content></ng-content>',
67
+ }]
68
+ }] });
69
+ export class HorizontalScrollView extends SymbiotePrimitiveHost {
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: HorizontalScrollView, deps: null, target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: HorizontalScrollView, isStandalone: true, selector: "symbiote-horizontal-scroll-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: HorizontalScrollView, decorators: [{
74
+ type: Component,
75
+ args: [{
76
+ selector: 'symbiote-horizontal-scroll-view',
77
+ standalone: true,
78
+ template: '<ng-content></ng-content>',
79
+ }]
80
+ }] });
81
+ export class HorizontalScrollContentView extends SymbiotePrimitiveHost {
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: HorizontalScrollContentView, deps: null, target: i0.ɵɵFactoryTarget.Component });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: HorizontalScrollContentView, isStandalone: true, selector: "symbiote-horizontal-scroll-content", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: HorizontalScrollContentView, decorators: [{
86
+ type: Component,
87
+ args: [{
88
+ selector: 'symbiote-horizontal-scroll-content',
89
+ standalone: true,
90
+ template: '<ng-content></ng-content>',
91
+ }]
92
+ }] });
93
+ export class TextInputHost extends SymbiotePrimitiveHost {
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TextInputHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
95
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: TextInputHost, isStandalone: true, selector: "symbiote-text-input", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TextInputHost, decorators: [{
98
+ type: Component,
99
+ args: [{
100
+ selector: 'symbiote-text-input',
101
+ standalone: true,
102
+ template: '<ng-content></ng-content>',
103
+ }]
104
+ }] });
105
+ export class MultilineTextInputHost extends SymbiotePrimitiveHost {
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: MultilineTextInputHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
107
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: MultilineTextInputHost, isStandalone: true, selector: "symbiote-text-input-multiline", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: MultilineTextInputHost, decorators: [{
110
+ type: Component,
111
+ args: [{
112
+ selector: 'symbiote-text-input-multiline',
113
+ standalone: true,
114
+ template: '<ng-content></ng-content>',
115
+ }]
116
+ }] });
117
+ export class SwitchHost extends SymbiotePrimitiveHost {
118
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SwitchHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
119
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: SwitchHost, isStandalone: true, selector: "symbiote-switch", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
120
+ }
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SwitchHost, decorators: [{
122
+ type: Component,
123
+ args: [{
124
+ selector: 'symbiote-switch',
125
+ standalone: true,
126
+ template: '<ng-content></ng-content>',
127
+ }]
128
+ }] });
129
+ export class ActivityIndicatorHost extends SymbiotePrimitiveHost {
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActivityIndicatorHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ActivityIndicatorHost, isStandalone: true, selector: "symbiote-activity-indicator", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActivityIndicatorHost, decorators: [{
134
+ type: Component,
135
+ args: [{
136
+ selector: 'symbiote-activity-indicator',
137
+ standalone: true,
138
+ template: '<ng-content></ng-content>',
139
+ }]
140
+ }] });
141
+ export class SafeAreaViewHost extends SymbiotePrimitiveHost {
142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SafeAreaViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: SafeAreaViewHost, isStandalone: true, selector: "symbiote-safe-area-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
144
+ }
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SafeAreaViewHost, decorators: [{
146
+ type: Component,
147
+ args: [{
148
+ selector: 'symbiote-safe-area-view',
149
+ standalone: true,
150
+ template: '<ng-content></ng-content>',
151
+ }]
152
+ }] });
153
+ export class ModalHost extends SymbiotePrimitiveHost {
154
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ModalHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
155
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ModalHost, isStandalone: true, selector: "symbiote-modal", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
156
+ }
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ModalHost, decorators: [{
158
+ type: Component,
159
+ args: [{
160
+ selector: 'symbiote-modal',
161
+ standalone: true,
162
+ template: '<ng-content></ng-content>',
163
+ }]
164
+ }] });
165
+ export class RefreshControlHost extends SymbiotePrimitiveHost {
166
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RefreshControlHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
167
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: RefreshControlHost, isStandalone: true, selector: "symbiote-refresh-control", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
168
+ }
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RefreshControlHost, decorators: [{
170
+ type: Component,
171
+ args: [{
172
+ selector: 'symbiote-refresh-control',
173
+ standalone: true,
174
+ template: '<ng-content></ng-content>',
175
+ }]
176
+ }] });
177
+ export class InputAccessoryViewHost extends SymbiotePrimitiveHost {
178
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: InputAccessoryViewHost, deps: null, target: i0.ɵɵFactoryTarget.Component });
179
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: InputAccessoryViewHost, isStandalone: true, selector: "symbiote-input-accessory-view", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
180
+ }
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: InputAccessoryViewHost, decorators: [{
182
+ type: Component,
183
+ args: [{
184
+ selector: 'symbiote-input-accessory-view',
185
+ standalone: true,
186
+ template: '<ng-content></ng-content>',
187
+ }]
188
+ }] });
189
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/primitives/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { ElementRef, type OnChanges, type SimpleChanges } from '@angular/core';
2
+ import { type IHostInstance, type IStyleProp } from '@symbiote-native/engine';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * A composed Angular component (Pressable, SafeAreaView, ScrollView, ...) is created as a
6
+ * non-painting ANCHOR host (`ANCHOR_HOST_COMPONENTS` in renderer.ts) so it doesn't paint an
7
+ * extra native view over its own template's real content. `class="..."`/`[class.x]`/`[ngClass]`
8
+ * at the component's use site ALWAYS resolves through the renderer's addClass/removeClass onto
9
+ * that anchor — Angular gives no `@Input()` interception hook for `class` the way it does for
10
+ * `[style]` (which is why `style` alone was declared as an `@Input()` in the first place, see
11
+ * `SymbiotePrimitiveHost` above) — so the anchor ends up holding the fully-resolved class-derived
12
+ * style (`routeProp`'s `commitClassStyle` already wrote it to `anchor.props.style`) while the
13
+ * REAL native node the component's own template creates never sees it.
14
+ *
15
+ * Call this from a composed component's own `hostProps`/style getter and merge the result AHEAD
16
+ * of its own explicit `style` @Input, e.g. `style: [anchorHostStyle(this.elementRef),
17
+ * this.resolvedStyle]` — array order matters: `flattenStyle`'s later-wins collapse is what makes
18
+ * an explicit `[style]` on the component still beat its ambient class, mirroring the
19
+ * class-loses-to-explicit-style cascade `commitClassStyle` already enforces for a direct
20
+ * primitive. `this.elementRef` must be this component's OWN injected `ElementRef` (its anchor
21
+ * host), not a `@ViewChild` into its template's inner primitive.
22
+ *
23
+ * Skipping this call for a new `ANCHOR_HOST_COMPONENTS` entry compiles clean under `tsc` AND a
24
+ * real `ngc` AOT build — no type error, no template error — it just silently drops `class="..."`
25
+ * forever; only a device/simulator render (or a committed-node style assertion) catches it.
26
+ */
27
+ export declare function anchorHostStyle(elementRef: ElementRef<unknown>): unknown;
28
+ export declare function anchorStyleProp<T>(elementRef: ElementRef<unknown>): IStyleProp<T> | undefined;
29
+ /**
30
+ * `anchorHostStyle` must be re-read on every check (a bare `class="x"` with no matching
31
+ * `[style]` binding never appears in Angular's `SimpleChanges`/dirty-check inputs, so nothing
32
+ * else signals "the anchor's class-derived style may have changed"). But `flattenStyle([...])`
33
+ * always allocates a FRESH object, even when its content is byte-for-byte identical to last
34
+ * time — and a windowed list component (FlatList/VirtualizedList/SectionList/
35
+ * VirtualizedSectionList) binds its resolved style into a structural-directive-bound `@Input()`
36
+ * chain where a fresh reference on an UNRELATED CD pass is mistaken for a real change, which
37
+ * reschedules ANOTHER CD tick (`VListOutletDirective`'s `context` `@Input()` calling
38
+ * `markForCheck()`) — free-running forever. See the `flat-list-array-style.test.ts` regression
39
+ * this fixes (and the near-identical `lastRecompute` dedup guard in `virtualized-list/index.ts`,
40
+ * which this mirrors at the style-merge call site instead of a whole recompute step). Returns
41
+ * `previous` unchanged when the freshly-flattened merge is shallow-equal to it, so a downstream
42
+ * `@Input() style` binding sees NO change and skips its own update on an unrelated tick.
43
+ */
44
+ export declare function stableAnchorStyle(elementRef: ElementRef<unknown>, explicitStyle: unknown, previous: unknown): Record<string, unknown>;
45
+ /**
46
+ * Base for all Angular primitive host components (`symbiote-view`, `symbiote-text`, ...).
47
+ * RN's `StyleProp` can be an object, an array, nested arrays, falsy entries, and Animated
48
+ * values. Angular's raw `[style]` binding on a custom element routes through the CSS style
49
+ * engine (`setStyle` per key), which crashes on numeric array keys. By declaring `style` as
50
+ * an Angular `@Input()` on a known component, we intercept it here and forward a flattened
51
+ * style object through `Renderer2.setProperty`, bypassing Angular's CSS styling path.
52
+ *
53
+ * Other props (source, pointerEvents, ...) are intentionally *not* declared as inputs.
54
+ * Angular then treats them as host property bindings and still dispatches them through the
55
+ * custom renderer's `setProperty`, so the engine's `routeProp` handles them as usual.
56
+ */
57
+ export declare abstract class SymbiotePrimitiveHost implements OnChanges {
58
+ private readonly renderer;
59
+ private readonly elementRef;
60
+ style?: IStyleProp<unknown>;
61
+ /**
62
+ * The underlying engine host node (public instance). Exposed so `findNodeHandle` can resolve
63
+ * an Angular template ref (`#ref`) on a primitive host to its native reactTag.
64
+ */
65
+ get nativeElement(): IHostInstance;
66
+ ngOnChanges(changes: SimpleChanges): void;
67
+ static ɵfac: i0.ɵɵFactoryDeclaration<SymbiotePrimitiveHost, never>;
68
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SymbiotePrimitiveHost, never, never, { "style": { "alias": "style"; "required": false; }; }, {}, never, never, true, never>;
69
+ }
70
+ /**
71
+ * Applies a whole resolved props record (a shared `renderX(...).props` bag) onto a host
72
+ * element via `Renderer2.setProperty`, one call per key. Angular templates compile bindings
73
+ * ahead of time — there is no `v-bind="obj"` equivalent for a custom element — so a component
74
+ * whose props come from a shared render function would otherwise have to declare every key as
75
+ * its own static `[prop]="hostProps['x']"` binding. This generalizes the pattern
76
+ * `SwitchHostPropsDirective` proved first: `<symbiote-x [symbioteHostProps]="hostProps" #ref="symbioteHost">`,
77
+ * with `ref.node` exposing the native element for any imperative follow-up call.
78
+ */
79
+ export declare class SymbioteHostPropsDirective {
80
+ private readonly renderer;
81
+ private readonly elementRef;
82
+ private readonly cdr;
83
+ get node(): unknown;
84
+ set symbioteHostProps(props: Record<string, unknown>);
85
+ private wrapCallback;
86
+ static ɵfac: i0.ɵɵFactoryDeclaration<SymbioteHostPropsDirective, never>;
87
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SymbioteHostPropsDirective, "[symbioteHostProps]", ["symbioteHost"], { "symbioteHostProps": { "alias": "symbioteHostProps"; "required": false; }; }, {}, never, never, true, never>;
88
+ }
@@ -0,0 +1,171 @@
1
+ import { ChangeDetectorRef, Directive, ElementRef, inject, Input, Renderer2, } from '@angular/core';
2
+ import { flattenStyle, isSymbioteNode, } from '@symbiote-native/engine';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * A composed Angular component (Pressable, SafeAreaView, ScrollView, ...) is created as a
6
+ * non-painting ANCHOR host (`ANCHOR_HOST_COMPONENTS` in renderer.ts) so it doesn't paint an
7
+ * extra native view over its own template's real content. `class="..."`/`[class.x]`/`[ngClass]`
8
+ * at the component's use site ALWAYS resolves through the renderer's addClass/removeClass onto
9
+ * that anchor — Angular gives no `@Input()` interception hook for `class` the way it does for
10
+ * `[style]` (which is why `style` alone was declared as an `@Input()` in the first place, see
11
+ * `SymbiotePrimitiveHost` above) — so the anchor ends up holding the fully-resolved class-derived
12
+ * style (`routeProp`'s `commitClassStyle` already wrote it to `anchor.props.style`) while the
13
+ * REAL native node the component's own template creates never sees it.
14
+ *
15
+ * Call this from a composed component's own `hostProps`/style getter and merge the result AHEAD
16
+ * of its own explicit `style` @Input, e.g. `style: [anchorHostStyle(this.elementRef),
17
+ * this.resolvedStyle]` — array order matters: `flattenStyle`'s later-wins collapse is what makes
18
+ * an explicit `[style]` on the component still beat its ambient class, mirroring the
19
+ * class-loses-to-explicit-style cascade `commitClassStyle` already enforces for a direct
20
+ * primitive. `this.elementRef` must be this component's OWN injected `ElementRef` (its anchor
21
+ * host), not a `@ViewChild` into its template's inner primitive.
22
+ *
23
+ * Skipping this call for a new `ANCHOR_HOST_COMPONENTS` entry compiles clean under `tsc` AND a
24
+ * real `ngc` AOT build — no type error, no template error — it just silently drops `class="..."`
25
+ * forever; only a device/simulator render (or a committed-node style assertion) catches it.
26
+ */
27
+ export function anchorHostStyle(elementRef) {
28
+ const node = elementRef.nativeElement;
29
+ return isSymbioteNode(node) ? node.props.style : undefined;
30
+ }
31
+ // anchorHostStyle returns `unknown` (it reads whatever already resolved onto the anchor node's
32
+ // props bag); a style prop's fields are all optional so any object structurally satisfies it —
33
+ // this narrows just enough (falsy-per-IStyleProp, or an object/array) to fold it into a
34
+ // strictly-typed IStyleProp<T> array without an `as` cast, for a composed component whose own
35
+ // inner primitive declares a real `@Input() style: IStyleProp<SomeConcreteStyle>` (e.g.
36
+ // TouchableOpacity's Pressable, Button's TouchableOpacity) rather than the loosely-typed
37
+ // `symbioteHostProps` bag most composed components merge anchorHostStyle into directly.
38
+ function isStyleValue(value) {
39
+ return (value === undefined ||
40
+ value === null ||
41
+ value === false ||
42
+ value === '' ||
43
+ typeof value === 'object');
44
+ }
45
+ export function anchorStyleProp(elementRef) {
46
+ const value = anchorHostStyle(elementRef);
47
+ return isStyleValue(value) ? value : undefined;
48
+ }
49
+ function isRecord(value) {
50
+ return typeof value === 'object' && value !== null;
51
+ }
52
+ function shallowStyleEqual(a, b) {
53
+ const aKeys = Object.keys(a);
54
+ if (aKeys.length !== Object.keys(b).length)
55
+ return false;
56
+ return aKeys.every(key => a[key] === b[key]);
57
+ }
58
+ /**
59
+ * `anchorHostStyle` must be re-read on every check (a bare `class="x"` with no matching
60
+ * `[style]` binding never appears in Angular's `SimpleChanges`/dirty-check inputs, so nothing
61
+ * else signals "the anchor's class-derived style may have changed"). But `flattenStyle([...])`
62
+ * always allocates a FRESH object, even when its content is byte-for-byte identical to last
63
+ * time — and a windowed list component (FlatList/VirtualizedList/SectionList/
64
+ * VirtualizedSectionList) binds its resolved style into a structural-directive-bound `@Input()`
65
+ * chain where a fresh reference on an UNRELATED CD pass is mistaken for a real change, which
66
+ * reschedules ANOTHER CD tick (`VListOutletDirective`'s `context` `@Input()` calling
67
+ * `markForCheck()`) — free-running forever. See the `flat-list-array-style.test.ts` regression
68
+ * this fixes (and the near-identical `lastRecompute` dedup guard in `virtualized-list/index.ts`,
69
+ * which this mirrors at the style-merge call site instead of a whole recompute step). Returns
70
+ * `previous` unchanged when the freshly-flattened merge is shallow-equal to it, so a downstream
71
+ * `@Input() style` binding sees NO change and skips its own update on an unrelated tick.
72
+ */
73
+ export function stableAnchorStyle(elementRef, explicitStyle, previous) {
74
+ const next = flattenStyle([anchorHostStyle(elementRef), explicitStyle]);
75
+ return isRecord(previous) && shallowStyleEqual(previous, next) ? previous : next;
76
+ }
77
+ const ON_PREFIX = /^on[A-Z]/;
78
+ /**
79
+ * Base for all Angular primitive host components (`symbiote-view`, `symbiote-text`, ...).
80
+ * RN's `StyleProp` can be an object, an array, nested arrays, falsy entries, and Animated
81
+ * values. Angular's raw `[style]` binding on a custom element routes through the CSS style
82
+ * engine (`setStyle` per key), which crashes on numeric array keys. By declaring `style` as
83
+ * an Angular `@Input()` on a known component, we intercept it here and forward a flattened
84
+ * style object through `Renderer2.setProperty`, bypassing Angular's CSS styling path.
85
+ *
86
+ * Other props (source, pointerEvents, ...) are intentionally *not* declared as inputs.
87
+ * Angular then treats them as host property bindings and still dispatches them through the
88
+ * custom renderer's `setProperty`, so the engine's `routeProp` handles them as usual.
89
+ */
90
+ export class SymbiotePrimitiveHost {
91
+ renderer = inject(Renderer2);
92
+ elementRef = inject(ElementRef);
93
+ style;
94
+ /**
95
+ * The underlying engine host node (public instance). Exposed so `findNodeHandle` can resolve
96
+ * an Angular template ref (`#ref`) on a primitive host to its native reactTag.
97
+ */
98
+ get nativeElement() {
99
+ return this.elementRef.nativeElement;
100
+ }
101
+ ngOnChanges(changes) {
102
+ if (!('style' in changes))
103
+ return;
104
+ const value = this.style === undefined ? undefined : flattenStyle(this.style);
105
+ this.renderer.setProperty(this.elementRef.nativeElement, 'style', value);
106
+ }
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SymbiotePrimitiveHost, deps: [], target: i0.ɵɵFactoryTarget.Directive });
108
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: SymbiotePrimitiveHost, isStandalone: true, inputs: { style: "style" }, usesOnChanges: true, ngImport: i0 });
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SymbiotePrimitiveHost, decorators: [{
111
+ type: Directive
112
+ }], propDecorators: { style: [{
113
+ type: Input
114
+ }] } });
115
+ /**
116
+ * Applies a whole resolved props record (a shared `renderX(...).props` bag) onto a host
117
+ * element via `Renderer2.setProperty`, one call per key. Angular templates compile bindings
118
+ * ahead of time — there is no `v-bind="obj"` equivalent for a custom element — so a component
119
+ * whose props come from a shared render function would otherwise have to declare every key as
120
+ * its own static `[prop]="hostProps['x']"` binding. This generalizes the pattern
121
+ * `SwitchHostPropsDirective` proved first: `<symbiote-x [symbioteHostProps]="hostProps" #ref="symbioteHost">`,
122
+ * with `ref.node` exposing the native element for any imperative follow-up call.
123
+ */
124
+ export class SymbioteHostPropsDirective {
125
+ renderer = inject(Renderer2);
126
+ elementRef = inject(ElementRef);
127
+ // The directive lives in its HOST component's template, so its injected ChangeDetectorRef IS
128
+ // that component's own view detector — the one thing that can refresh it (see wrapCallback).
129
+ cdr = inject(ChangeDetectorRef);
130
+ get node() {
131
+ return this.elementRef.nativeElement;
132
+ }
133
+ set symbioteHostProps(props) {
134
+ for (const [key, value] of Object.entries(props)) {
135
+ this.renderer.setProperty(this.elementRef.nativeElement, key, this.wrapCallback(key, value));
136
+ }
137
+ }
138
+ // A flat-bag `onX` callback (responder negotiation, onLongPress, …) is invoked by the engine's
139
+ // event dispatch — a plain JS call, entirely outside Angular. In Angular 20 a component compiles
140
+ // as a SignalView (not CheckAlways), so a plain (non-signal) state mutation inside such a callback
141
+ // does NOT dirty the view's reactive consumer, and the scheduler's root detectChanges() will NOT
142
+ // descend into it (a Global pass only refreshes CheckAlways / Dirty / RefreshView views) — the
143
+ // "pan does nothing" bug on a nested component. `markForCheck()` flags THIS component's view AND
144
+ // all its ancestors with RefreshView (which survives the descent) and notifies the CD scheduler,
145
+ // so the next root tick repaints the mutation. It targets the directive's injecting view
146
+ // (`_cdRefInjectingView`, i.e. the host component), unlike `detectChanges()` which acts on a
147
+ // resolved `_lView` that is NOT the host component here. The Angular twin of what React/Vue get
148
+ // for free (setState / proxy reactivity).
149
+ wrapCallback(key, value) {
150
+ if (!ON_PREFIX.test(key) || typeof value !== 'function')
151
+ return value;
152
+ const handler = value;
153
+ return (...args) => {
154
+ const result = handler(...args);
155
+ this.cdr.markForCheck();
156
+ return result;
157
+ };
158
+ }
159
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SymbioteHostPropsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
160
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: SymbioteHostPropsDirective, isStandalone: true, selector: "[symbioteHostProps]", inputs: { symbioteHostProps: "symbioteHostProps" }, exportAs: ["symbioteHost"], ngImport: i0 });
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SymbioteHostPropsDirective, decorators: [{
163
+ type: Directive,
164
+ args: [{
165
+ selector: '[symbioteHostProps]',
166
+ standalone: true,
167
+ exportAs: 'symbioteHost',
168
+ inputs: ['symbioteHostProps'],
169
+ }]
170
+ }] });
171
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/primitives/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type IRootTag, type SymbioteSurface } from '@symbiote-native/engine';
2
+ import { type Type } from '@angular/core';
3
+ export interface IMountOptions {
4
+ initialProps?: object;
5
+ wrapperComponent?: Type<unknown>;
6
+ }
7
+ export declare function mount(rootTag: IRootTag, rootComponent: Type<unknown>, options?: IMountOptions): SymbioteSurface;
8
+ export declare function unmount(rootTag: IRootTag): void;
9
+ declare global {
10
+ var RN$stopSurface: ((surfaceId: number) => void) | undefined;
11
+ }