@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,364 @@
1
+ // createAnimatedComponent for @symbiote-native/angular: the Angular twin of the React/Vue
2
+ // wrapper. React/Vue have a runtime HOC (`createAnimatedComponent(Component)` builds a
3
+ // fresh wrapped component on the fly). Angular has NO such idiom AND it cannot have one:
4
+ // the AOT-under-Metro build compiles every @Component at build
5
+ // time and ships NO JIT compiler to Hermes, so a runtime `Component({...})(class)` would
6
+ // throw. The idiomatic, AOT-safe equivalent is therefore an EXPLICIT set of standalone
7
+ // components — AnimatedView / AnimatedText / AnimatedImage / AnimatedScrollView — each a
8
+ // thin @Component over the matching host primitive, all sharing one abstract lifecycle
9
+ // base. The mechanism (build an AnimatedProps leaf, reduce animated props to current
10
+ // values for the first paint, bind the leaf to the committed host node, swap leaves on
11
+ // re-render, tear down on destroy) lives once in AnimatedComponentBase; only the per-host
12
+ // template differs.
13
+ //
14
+ // The framework-agnostic half (reduceProps / readPassthroughStyle / resolveHostNode /
15
+ // AnimatedProps / attachNativeEventHandler / isNativeAnimatedAvailable) comes from
16
+ // @symbiote-native/engine, shared verbatim with React and Vue. Angular supplies
17
+ // only the lifecycle wiring. The per-frame path NEVER goes through Angular change
18
+ // detection: value.setValue / animation -> flushValue -> AnimatedProps.update() ->
19
+ // setNativeProps(node), exactly as on the other adapters.
20
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, Directive, ElementRef, inject, ViewChild, } from '@angular/core';
21
+ import { isNativeAnimatedAvailable, isSymbioteNode, reduceProps, readPassthroughStyle, resolveHostNode, } from '@symbiote-native/engine';
22
+ import { selectScrollIntrinsics } from '@symbiote-native/components';
23
+ import { Image, ScrollView, Text, View } from '../../components';
24
+ import { anchorHostStyle, ViewHost, TextHost, ImageHost, ScrollViewHost, SymbioteHostPropsDirective, } from '../../primitives';
25
+ import { FlatList } from '../../components/flat-list';
26
+ import { IMAGE_INPUTS, IMAGE_OUTPUTS, ImageBase, resolveImageProps, } from '../../components/image/shared';
27
+ import { SectionList } from '../../components/section-list';
28
+ import { AnimatedLeafBinder } from './animated-leaf-binder';
29
+ import * as i0 from "@angular/core";
30
+ // RN's prop carrying explicit (already-rasterized) values that override the animated prop in
31
+ // the COMMITTED props (sticky-header passthrough). Named once so the directive input and the
32
+ // reconcile agree.
33
+ const PASSTHROUGH_PROP = 'passthroughAnimatedPropExplicitValues';
34
+ // The inputs every animated wrapper accepts. `style` is the (possibly animated) style — the
35
+ // common path (TouchableOpacity passes `[style, { opacity }]`). `animatedProps` is the generic
36
+ // escape hatch for any OTHER prop that may hold an AnimatedNode or an Animated.event handler,
37
+ // plus static host props to forward (the React/Vue `rest`). The passthrough drives native.
38
+ // Each concrete @Component re-lists these (Angular's inputs-on-base convention, mirroring
39
+ // Switch/Image), so they are inherited consistently.
40
+ export const ANIMATED_INPUTS = ['style', 'animatedProps', PASSTHROUGH_PROP];
41
+ export const ANIMATED_IMAGE_INPUTS = [...IMAGE_INPUTS, 'animatedProps', PASSTHROUGH_PROP];
42
+ // The shared lifecycle for every animated wrapper. Concrete subclasses add ONLY a @Component
43
+ // decorator (selector + the host-primitive template) — no behavior. Plain fields (no @Input
44
+ // here): the inputs are declared on each concrete via ANIMATED_INPUTS, the adapter convention.
45
+ // @Directive() (no selector) is the Angular-sanctioned decorator for an abstract base that
46
+ // declares lifecycle hooks — without it ngtsc rejects the inherited hooks (NG2007).
47
+ export class AnimatedComponentBase {
48
+ style;
49
+ animatedProps;
50
+ passthroughAnimatedPropExplicitValues;
51
+ // This component's OWN host — every Animated* wrapper is a non-painting ANCHOR
52
+ // (ANCHOR_HOST_COMPONENTS in renderer.ts), so a `class="..."` at the use site resolves onto
53
+ // THIS element, never the real inner host primitive one level down (see anchorHostStyle's doc
54
+ // comment in primitives/shared.ts — the same reason ScrollView's own scrollProps merges it in).
55
+ elementRef = inject(ElementRef);
56
+ // The directive sitting on the inner host primitive; its `node` is the committed SymbioteNode
57
+ // the leaf binds to. Inherited by the decorated subclass (Angular collects base-class queries).
58
+ hostDirective;
59
+ // The leaf-lifecycle orchestration (build/attach/swap/bind/detach an AnimatedProps leaf) is a
60
+ // Pure Fabrication shared with AnimatedImage, which cannot extend this class (it must extend
61
+ // ImageBase — see the file header). `resolveNode` stays a resolver, not a captured node: the
62
+ // committed node only exists after `hostDirective` is populated post-view-init.
63
+ leafBinder = new AnimatedLeafBinder(() => this.hostNode(), this.constructor.name);
64
+ // Set once the view (and the inner host directive) exists; ngOnChanges before then is a no-op.
65
+ viewReady = false;
66
+ // The concrete props for the host element each change-detection pass: animated entries reduced
67
+ // to their current value, then the passthrough style layered on top (last wins via the style
68
+ // array, which the commit layer flattens) so the ShadowTree carries the current transform.
69
+ get reducedProps() {
70
+ const reduced = reduceProps(this.mergedProps());
71
+ const passthroughStyle = readPassthroughStyle(this.passthroughAnimatedPropExplicitValues);
72
+ if (passthroughStyle !== undefined) {
73
+ reduced['style'] =
74
+ reduced['style'] === undefined ? passthroughStyle : [reduced['style'], passthroughStyle];
75
+ }
76
+ reduced['style'] = [anchorHostStyle(this.elementRef), reduced['style']];
77
+ return reduced;
78
+ }
79
+ ngAfterViewInit() {
80
+ this.viewReady = true;
81
+ this.reconcile();
82
+ }
83
+ ngOnChanges() {
84
+ this.reconcile();
85
+ }
86
+ ngOnDestroy() {
87
+ this.leafBinder.destroy();
88
+ }
89
+ // A non-stable [animatedProps]/[style] input (a fresh object literal in the template) pushes
90
+ // a new reference on every change-detection pass of the HOST view, re-triggering this on every
91
+ // unrelated interaction elsewhere in the app — DEBUG=1 turns this into a visible tick count in
92
+ // AnimatedLeafBinder.reconcile, so an unexpectedly high rate for a component nobody is
93
+ // animating is the tell (see AnimatedScrollView's stable-reference fix in examples/angular/App.ts).
94
+ reconcile() {
95
+ if (!this.viewReady)
96
+ return;
97
+ const props = this.mergedProps();
98
+ const hasPassthroughAnimatedValues = this.passthroughAnimatedPropExplicitValues !== null &&
99
+ this.passthroughAnimatedPropExplicitValues !== undefined;
100
+ const wantsNative = hasPassthroughAnimatedValues && isNativeAnimatedAvailable();
101
+ this.leafBinder.reconcile(props, wantsNative);
102
+ }
103
+ // Merge the dedicated `style` input over the generic `animatedProps` bag into one props map —
104
+ // the equivalent of React/Vue `rest`. `style` wins so `[style]` and `[animatedProps].style`
105
+ // never disagree.
106
+ mergedProps() {
107
+ const base = this.animatedProps ?? {};
108
+ return this.style === undefined ? { ...base } : { ...base, style: this.style };
109
+ }
110
+ // The committed host node held by IDENTITY. resolveHostNode unwraps an imperative scroll
111
+ // handle to the underlying SymbioteNode (View / Text already hand back the node directly);
112
+ // the isSymbioteNode guard keeps us off a cast.
113
+ hostNode() {
114
+ const resolved = resolveHostNode(this.hostDirective?.node);
115
+ return isSymbioteNode(resolved) ? resolved : null;
116
+ }
117
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedComponentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
118
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: AnimatedComponentBase, isStandalone: true, viewQueries: [{ propertyName: "hostDirective", first: true, predicate: SymbioteHostPropsDirective, descendants: true }], usesOnChanges: true, ngImport: i0 });
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedComponentBase, decorators: [{
121
+ type: Directive
122
+ }], propDecorators: { hostDirective: [{
123
+ type: ViewChild,
124
+ args: [SymbioteHostPropsDirective]
125
+ }] } });
126
+ export class AnimatedView extends AnimatedComponentBase {
127
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedView, deps: null, target: i0.ɵɵFactoryTarget.Component });
128
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: AnimatedView, isStandalone: true, selector: "AnimatedView, symbiote-animated-view", inputs: { style: "style", animatedProps: "animatedProps", passthroughAnimatedPropExplicitValues: "passthroughAnimatedPropExplicitValues" }, usesInheritance: true, ngImport: i0, template: `
129
+ <symbiote-view [symbioteHostProps]="reducedProps">
130
+ <ng-content></ng-content>
131
+ </symbiote-view>
132
+ `, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: ViewHost, selector: "symbiote-view, View" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
133
+ }
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedView, decorators: [{
135
+ type: Component,
136
+ args: [{
137
+ selector: 'AnimatedView, symbiote-animated-view',
138
+ standalone: true,
139
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
140
+ imports: [SymbioteHostPropsDirective, ViewHost],
141
+ inputs: ANIMATED_INPUTS,
142
+ template: `
143
+ <symbiote-view [symbioteHostProps]="reducedProps">
144
+ <ng-content></ng-content>
145
+ </symbiote-view>
146
+ `,
147
+ changeDetection: ChangeDetectionStrategy.OnPush,
148
+ }]
149
+ }] });
150
+ export class AnimatedText extends AnimatedComponentBase {
151
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedText, deps: null, target: i0.ɵɵFactoryTarget.Component });
152
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: AnimatedText, isStandalone: true, selector: "AnimatedText, symbiote-animated-text", inputs: { style: "style", animatedProps: "animatedProps", passthroughAnimatedPropExplicitValues: "passthroughAnimatedPropExplicitValues" }, usesInheritance: true, ngImport: i0, template: `
153
+ <symbiote-text [symbioteHostProps]="reducedProps">
154
+ <ng-content></ng-content>
155
+ </symbiote-text>
156
+ `, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: TextHost, selector: "symbiote-text, Text" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedText, decorators: [{
159
+ type: Component,
160
+ args: [{
161
+ selector: 'AnimatedText, symbiote-animated-text',
162
+ standalone: true,
163
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
164
+ imports: [SymbioteHostPropsDirective, TextHost],
165
+ inputs: ANIMATED_INPUTS,
166
+ template: `
167
+ <symbiote-text [symbioteHostProps]="reducedProps">
168
+ <ng-content></ng-content>
169
+ </symbiote-text>
170
+ `,
171
+ changeDetection: ChangeDetectionStrategy.OnPush,
172
+ }]
173
+ }] });
174
+ export class AnimatedImage extends ImageBase {
175
+ animatedProps;
176
+ passthroughAnimatedPropExplicitValues;
177
+ // AnimatedImage is a non-painting ANCHOR too (ANCHOR_HOST_COMPONENTS) — see the matching
178
+ // comment on AnimatedComponentBase.elementRef.
179
+ elementRef = inject(ElementRef);
180
+ hostDirective;
181
+ // Same Pure Fabrication AnimatedComponentBase holds — see its matching comment. AnimatedImage
182
+ // can't extend AnimatedComponentBase (it must extend ImageBase, see the file header), so it
183
+ // gets the leaf-lifecycle via composition instead of duplicating it.
184
+ leafBinder = new AnimatedLeafBinder(() => this.hostNode(), this.constructor.name);
185
+ viewReady = false;
186
+ get animatedImageProps() {
187
+ const reduced = reduceProps(this.mergedProps());
188
+ const passthroughStyle = readPassthroughStyle(this.passthroughAnimatedPropExplicitValues);
189
+ if (passthroughStyle !== undefined) {
190
+ reduced['style'] =
191
+ reduced['style'] === undefined ? passthroughStyle : [reduced['style'], passthroughStyle];
192
+ }
193
+ const resolved = resolveImageProps(reduced);
194
+ resolved['style'] = [anchorHostStyle(this.elementRef), resolved['style']];
195
+ return resolved;
196
+ }
197
+ ngAfterViewInit() {
198
+ this.viewReady = true;
199
+ this.reconcile();
200
+ }
201
+ ngOnChanges() {
202
+ this.reconcile();
203
+ }
204
+ ngOnDestroy() {
205
+ this.leafBinder.destroy();
206
+ }
207
+ reconcile() {
208
+ if (!this.viewReady)
209
+ return;
210
+ const props = this.mergedProps();
211
+ const hasPassthroughAnimatedValues = this.passthroughAnimatedPropExplicitValues !== null &&
212
+ this.passthroughAnimatedPropExplicitValues !== undefined;
213
+ const wantsNative = hasPassthroughAnimatedValues && isNativeAnimatedAvailable();
214
+ this.leafBinder.reconcile(props, wantsNative);
215
+ }
216
+ mergedProps() {
217
+ const props = { ...(this.animatedProps ?? {}) };
218
+ for (const [key, value] of Object.entries(this.imageInputProps)) {
219
+ if (value !== undefined)
220
+ props[key] = value;
221
+ }
222
+ return props;
223
+ }
224
+ hostNode() {
225
+ const resolved = resolveHostNode(this.hostDirective?.node);
226
+ return isSymbioteNode(resolved) ? resolved : null;
227
+ }
228
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedImage, deps: null, target: i0.ɵɵFactoryTarget.Component });
229
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: AnimatedImage, isStandalone: true, selector: "AnimatedImage, symbiote-animated-image", inputs: { source: "source", defaultSource: "defaultSource", loadingIndicatorSource: "loadingIndicatorSource", style: "style", resizeMode: "resizeMode", resizeMethod: "resizeMethod", tintColor: "tintColor", blurRadius: "blurRadius", capInsets: "capInsets", fadeDuration: "fadeDuration", progressiveRenderingEnabled: "progressiveRenderingEnabled", src: "src", srcSet: "srcSet", alt: "alt", width: "width", height: "height", crossOrigin: "crossOrigin", referrerPolicy: "referrerPolicy", 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", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLive: ["aria-live", "ariaLive"], ariaHidden: ["aria-hidden", "ariaHidden"], ariaBusy: ["aria-busy", "ariaBusy"], ariaChecked: ["aria-checked", "ariaChecked"], ariaDisabled: ["aria-disabled", "ariaDisabled"], ariaExpanded: ["aria-expanded", "ariaExpanded"], ariaSelected: ["aria-selected", "ariaSelected"], ariaModal: ["aria-modal", "ariaModal"], ariaValueMax: ["aria-valuemax", "ariaValueMax"], ariaValueMin: ["aria-valuemin", "ariaValueMin"], ariaValueNow: ["aria-valuenow", "ariaValueNow"], ariaValueText: ["aria-valuetext", "ariaValueText"], onAccessibilityAction: "onAccessibilityAction", onAccessibilityTap: "onAccessibilityTap", onMagicTap: "onMagicTap", onAccessibilityEscape: "onAccessibilityEscape", onLoadStart: "onLoadStart", onLoad: "onLoad", onLoadEnd: "onLoadEnd", onError: "onError", onProgress: "onProgress", onPartialLoad: "onPartialLoad", animatedProps: "animatedProps", passthroughAnimatedPropExplicitValues: "passthroughAnimatedPropExplicitValues" }, outputs: { accessibilityAction: "accessibilityAction", accessibilityTap: "accessibilityTap", magicTap: "magicTap", accessibilityEscape: "accessibilityEscape", loadStart: "loadStart", load: "load", loadEnd: "loadEnd", error: "error", progress: "progress", partialLoad: "partialLoad" }, viewQueries: [{ propertyName: "hostDirective", first: true, predicate: SymbioteHostPropsDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
230
+ <symbiote-image
231
+ [symbioteHostProps]="animatedImageProps"
232
+ (accessibilityAction)="handleAccessibilityAction($event)"
233
+ (accessibilityTap)="handleAccessibilityTap($event)"
234
+ (magicTap)="handleMagicTap($event)"
235
+ (accessibilityEscape)="handleAccessibilityEscape($event)"
236
+ (loadStart)="handleLoadStart($event)"
237
+ (load)="handleLoad($event)"
238
+ (loadEnd)="handleLoadEnd($event)"
239
+ (error)="handleError($event)"
240
+ (progress)="handleProgress($event)"
241
+ (partialLoad)="handlePartialLoad($event)"
242
+ >
243
+ <ng-content></ng-content>
244
+ </symbiote-image>
245
+ `, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: ImageHost, selector: "symbiote-image" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
246
+ }
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedImage, decorators: [{
248
+ type: Component,
249
+ args: [{
250
+ selector: 'AnimatedImage, symbiote-animated-image',
251
+ standalone: true,
252
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
253
+ imports: [SymbioteHostPropsDirective, ImageHost],
254
+ inputs: ANIMATED_IMAGE_INPUTS,
255
+ outputs: IMAGE_OUTPUTS,
256
+ template: `
257
+ <symbiote-image
258
+ [symbioteHostProps]="animatedImageProps"
259
+ (accessibilityAction)="handleAccessibilityAction($event)"
260
+ (accessibilityTap)="handleAccessibilityTap($event)"
261
+ (magicTap)="handleMagicTap($event)"
262
+ (accessibilityEscape)="handleAccessibilityEscape($event)"
263
+ (loadStart)="handleLoadStart($event)"
264
+ (load)="handleLoad($event)"
265
+ (loadEnd)="handleLoadEnd($event)"
266
+ (error)="handleError($event)"
267
+ (progress)="handleProgress($event)"
268
+ (partialLoad)="handlePartialLoad($event)"
269
+ >
270
+ <ng-content></ng-content>
271
+ </symbiote-image>
272
+ `,
273
+ changeDetection: ChangeDetectionStrategy.OnPush,
274
+ }]
275
+ }], propDecorators: { hostDirective: [{
276
+ type: ViewChild,
277
+ args: [SymbioteHostPropsDirective]
278
+ }] } });
279
+ export class AnimatedScrollView extends AnimatedComponentBase {
280
+ // RN defaults nested scrolling ON (ScrollView.js `nestedScrollEnabled ?? true`) — Android
281
+ // needs it explicit or a ScrollView nested inside another scrollable container never
282
+ // receives touch (swallowed by the outer scroll view; iOS doesn't gate on this). The real
283
+ // ScrollView component already defaults this (scroll-view/shared.ts), but AnimatedScrollView
284
+ // talks to the raw primitive directly and has no such defaulting, so it must apply it too.
285
+ //
286
+ // scrollViewBaseStyle (overflow: 'scroll' + the per-axis flexDirection) is the OTHER thing
287
+ // the real ScrollView applies that this bespoke template used to skip entirely — without it,
288
+ // iOS Fabric never clips the scroll view's content to its own frame (Android's native
289
+ // ViewGroup clips regardless of the style prop, which is why this was invisible there). This
290
+ // wrapper has no dedicated `horizontal` input (only the generic `animatedProps`/`style`
291
+ // surface), and its template is hardcoded to the vertical intrinsics
292
+ // (symbiote-scroll-view/symbiote-scroll-content, not the horizontal variants), so
293
+ // selectScrollIntrinsics is always called with isHorizontal=false here — matching what the
294
+ // template can actually render.
295
+ get reducedProps() {
296
+ const reduced = super.reducedProps;
297
+ const { scrollViewBaseStyle } = selectScrollIntrinsics(false, undefined);
298
+ const withScrollBase = {
299
+ ...reduced,
300
+ style: [scrollViewBaseStyle, reduced.style],
301
+ };
302
+ return withScrollBase.nestedScrollEnabled === undefined
303
+ ? { ...withScrollBase, nestedScrollEnabled: true }
304
+ : withScrollBase;
305
+ }
306
+ // The content (inner) view's props: contentStyle from the same intrinsics selection, plus
307
+ // `collapsable: false` (the Android multi-child fix this file's tests already cover) — mirrors
308
+ // the real ScrollView's own `contentProps` getter (scroll-view/shared.ts).
309
+ get contentProps() {
310
+ const { contentStyle } = selectScrollIntrinsics(false, undefined);
311
+ return { style: contentStyle, collapsable: false };
312
+ }
313
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedScrollView, deps: null, target: i0.ɵɵFactoryTarget.Component });
314
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: AnimatedScrollView, isStandalone: true, selector: "AnimatedScrollView, symbiote-animated-scroll-view", inputs: { style: "style", animatedProps: "animatedProps", passthroughAnimatedPropExplicitValues: "passthroughAnimatedPropExplicitValues" }, usesInheritance: true, ngImport: i0, template: `
315
+ <symbiote-scroll-view [symbioteHostProps]="reducedProps">
316
+ <symbiote-scroll-content [symbioteHostProps]="contentProps">
317
+ <ng-content></ng-content>
318
+ </symbiote-scroll-content>
319
+ </symbiote-scroll-view>
320
+ `, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: ScrollViewHost, selector: "symbiote-scroll-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
321
+ }
322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: AnimatedScrollView, decorators: [{
323
+ type: Component,
324
+ args: [{
325
+ selector: 'AnimatedScrollView, symbiote-animated-scroll-view',
326
+ standalone: true,
327
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
328
+ imports: [SymbioteHostPropsDirective, ScrollViewHost],
329
+ inputs: ANIMATED_INPUTS,
330
+ template: `
331
+ <symbiote-scroll-view [symbioteHostProps]="reducedProps">
332
+ <symbiote-scroll-content [symbioteHostProps]="contentProps">
333
+ <ng-content></ng-content>
334
+ </symbiote-scroll-content>
335
+ </symbiote-scroll-view>
336
+ `,
337
+ changeDetection: ChangeDetectionStrategy.OnPush,
338
+ }]
339
+ }] });
340
+ // List components are already explicit AOT-compiled Angular components with their own full input
341
+ // surface and inner ScrollView composition. Expose them in the Animated namespace without runtime
342
+ // synthesis; app code passes animated style/onScroll through the existing list inputs.
343
+ export const AnimatedFlatList = FlatList;
344
+ export const AnimatedSectionList = SectionList;
345
+ // Surface-parity shim for the React/Vue `createAnimatedComponent(Component)`. Angular cannot
346
+ // synthesize a component at runtime (no JIT under AOT/Metro — see the file header), so this maps
347
+ // the built-in primitives to their pre-authored wrappers and refuses anything else with a
348
+ // pointer to the real Angular idiom: author a standalone @Component extending
349
+ // AnimatedComponentBase.
350
+ export function createAnimatedComponent(base) {
351
+ if (base === View)
352
+ return AnimatedView;
353
+ if (base === Text)
354
+ return AnimatedText;
355
+ if (base === Image)
356
+ return AnimatedImage;
357
+ if (base === ScrollView)
358
+ return AnimatedScrollView;
359
+ throw new Error('createAnimatedComponent: Angular cannot synthesize a component at runtime (no JIT compiler ' +
360
+ 'under AOT/Metro). Author an explicit standalone @Component extending AnimatedComponentBase ' +
361
+ 'instead. The built-in primitives View / Text / Image / ScrollView map to ' +
362
+ 'AnimatedView / AnimatedText / AnimatedImage / AnimatedScrollView.');
363
+ }
364
+ //# sourceMappingURL=create-animated-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-animated-component.js","sourceRoot":"","sources":["../../../../src/modules/animated/create-animated-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { AnimatedValue, AnimatedValueXY, AnimatedColor, timing, spring, decay, parallel, sequence, stagger, loop, delay, add, subtract, multiply, divide, modulo, diffClamp, event, forkEvent, unforkEvent } from '@symbiote-native/engine';
2
+ import { AnimatedImage, AnimatedScrollView, AnimatedText, AnimatedView, createAnimatedComponent } from './create-animated-component';
3
+ export { AnimatedComponentBase, AnimatedFlatList, AnimatedImage, AnimatedScrollView, AnimatedSectionList, AnimatedText, AnimatedView, createAnimatedComponent, } from './create-animated-component';
4
+ export declare const Animated: {
5
+ Value: typeof AnimatedValue;
6
+ ValueXY: typeof AnimatedValueXY;
7
+ Color: typeof AnimatedColor;
8
+ Easing: {
9
+ step0(n: number): number;
10
+ step1(n: number): number;
11
+ linear(t: number): number;
12
+ ease(t: number): number;
13
+ quad(t: number): number;
14
+ cubic(t: number): number;
15
+ poly(n: number): import("@symbiote-native/engine").IEasingFunction;
16
+ sin(t: number): number;
17
+ circle(t: number): number;
18
+ exp(t: number): number;
19
+ elastic(bounciness?: number): import("@symbiote-native/engine").IEasingFunction;
20
+ back(s?: number): import("@symbiote-native/engine").IEasingFunction;
21
+ bounce(t: number): number;
22
+ bezier(x1: number, y1: number, x2: number, y2: number): import("@symbiote-native/engine").IEasingFunction;
23
+ in(easing: import("@symbiote-native/engine").IEasingFunction): import("@symbiote-native/engine").IEasingFunction;
24
+ out(easing: import("@symbiote-native/engine").IEasingFunction): import("@symbiote-native/engine").IEasingFunction;
25
+ inOut(easing: import("@symbiote-native/engine").IEasingFunction): import("@symbiote-native/engine").IEasingFunction;
26
+ };
27
+ timing: typeof timing;
28
+ spring: typeof spring;
29
+ decay: typeof decay;
30
+ parallel: typeof parallel;
31
+ sequence: typeof sequence;
32
+ stagger: typeof stagger;
33
+ loop: typeof loop;
34
+ delay: typeof delay;
35
+ add: typeof add;
36
+ subtract: typeof subtract;
37
+ multiply: typeof multiply;
38
+ divide: typeof divide;
39
+ modulo: typeof modulo;
40
+ diffClamp: typeof diffClamp;
41
+ event: typeof event;
42
+ forkEvent: typeof forkEvent;
43
+ unforkEvent: typeof unforkEvent;
44
+ View: typeof AnimatedView;
45
+ Text: typeof AnimatedText;
46
+ Image: typeof AnimatedImage;
47
+ ScrollView: typeof AnimatedScrollView;
48
+ FlatList: typeof import("../..").FlatList;
49
+ SectionList: typeof import("../..").SectionList;
50
+ createAnimatedComponent: typeof createAnimatedComponent;
51
+ };
@@ -0,0 +1,59 @@
1
+ // The Animated namespace for @symbiote-native/angular: the Angular twin of adapters/vue/src/modules/
2
+ // animated/index.ts. The animated COMPONENTS (View / Text / Image / ScrollView) are explicit
3
+ // standalone components (Angular has no runtime HOC — see create-animated-component.ts); the
4
+ // value graph, easing and imperative drivers come from @symbiote-native/engine (framework-agnostic,
5
+ // JS-driven), spread in verbatim. Both halves meet here so the familiar surface,
6
+ // `Animated.timing(new Animated.Value(0), …).start()`, works against the Angular-driven engine.
7
+ import { AnimatedValue, AnimatedValueXY, AnimatedColor, AnimatedMock, Easing, Platform, timing, spring, decay, parallel, sequence, stagger, loop, delay, add, subtract, multiply, divide, modulo, diffClamp, event, forkEvent, unforkEvent, } from '@symbiote-native/engine';
8
+ import { AnimatedFlatList, AnimatedImage, AnimatedScrollView, AnimatedSectionList, AnimatedText, AnimatedView, createAnimatedComponent, } from './create-animated-component';
9
+ export { AnimatedComponentBase, AnimatedFlatList, AnimatedImage, AnimatedScrollView, AnimatedSectionList, AnimatedText, AnimatedView, createAnimatedComponent, } from './create-animated-component';
10
+ // ScrollView is exposed DIRECTLY, not behind the lazy getter the React/Vue modules use: that
11
+ // getter only exists to defer a RUNTIME createAnimatedComponent(ScrollView) past module init so
12
+ // it cannot read ScrollView inside its own TDZ during an import cycle. AnimatedScrollView here is
13
+ // a statically-declared component that never reads the ScrollView class at init (it targets the
14
+ // `symbiote-scroll-view` host by string), so there is no cycle to defer.
15
+ //
16
+ // FlatList / SectionList are exposed as explicit AOT-safe list entries now that the Angular list
17
+ // components exist. Angular still cannot synthesize arbitrary animated wrappers at runtime; custom
18
+ // animated components remain explicit standalone components over AnimatedComponentBase.
19
+ // The live, JS-driven driver namespace (real frames). RN's AnimatedImplementation.
20
+ const liveDrivers = {
21
+ Value: AnimatedValue,
22
+ ValueXY: AnimatedValueXY,
23
+ Color: AnimatedColor,
24
+ Easing,
25
+ timing,
26
+ spring,
27
+ decay,
28
+ parallel,
29
+ sequence,
30
+ stagger,
31
+ loop,
32
+ delay,
33
+ add,
34
+ subtract,
35
+ multiply,
36
+ divide,
37
+ modulo,
38
+ diffClamp,
39
+ event,
40
+ forkEvent,
41
+ unforkEvent,
42
+ };
43
+ // RN swaps the WHOLE driver namespace for the mock when the host reports isDisableAnimations
44
+ // (reduced motion / test env): the mock keeps the same surface but jumps each animation to its
45
+ // final value synchronously, no frames. The animated COMPONENTS are live in both branches; only
46
+ // the drivers/value/operators/events half is swapped, exactly like RN spreading `...Animated`
47
+ // (impl or mock) over the same components.
48
+ const drivers = Platform.isDisableAnimations ? AnimatedMock : liveDrivers;
49
+ export const Animated = {
50
+ View: AnimatedView,
51
+ Text: AnimatedText,
52
+ Image: AnimatedImage,
53
+ ScrollView: AnimatedScrollView,
54
+ FlatList: AnimatedFlatList,
55
+ SectionList: AnimatedSectionList,
56
+ createAnimatedComponent,
57
+ ...drivers,
58
+ };
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/animated/index.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,6FAA6F;AAC7F,6FAA6F;AAC7F,oGAAoG;AACpG,iFAAiF;AACjF,gGAAgG;AAEhG,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,KAAK,EACL,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,EACT,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,6FAA6F;AAC7F,gGAAgG;AAChG,kGAAkG;AAClG,gGAAgG;AAChG,yEAAyE;AACzE,EAAE;AACF,iGAAiG;AACjG,mGAAmG;AACnG,wFAAwF;AAExF,mFAAmF;AACnF,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;IACpB,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,IAAI;IACJ,KAAK;IACL,GAAG;IACH,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,KAAK;IACL,SAAS;IACT,WAAW;CACZ,CAAC;AAEF,6FAA6F;AAC7F,+FAA+F;AAC/F,gGAAgG;AAChG,8FAA8F;AAC9F,2CAA2C;AAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;AAE1E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,UAAU,EAAE,kBAAkB;IAC9B,QAAQ,EAAE,gBAAgB;IAC1B,WAAW,EAAE,mBAAmB;IAChC,uBAAuB;IACvB,GAAG,OAAO;CACX,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Type } from '@angular/core';
2
+ import { type IAppParameters } from '@symbiote-native/engine';
3
+ export type IComponentProvider = () => Type<unknown>;
4
+ export type IWrapperComponentProvider = (appParameters: IAppParameters) => Type<unknown>;
5
+ declare const AppRegistry: import("@symbiote-native/engine").IAppRegistry<IComponentProvider, IWrapperComponentProvider>, setHostRegistrar: (registrar: import("@symbiote-native/engine").IHostRegistrar) => void;
6
+ export { AppRegistry, setHostRegistrar };
7
+ export type { IAppParameters, IRunnable, IHostRegistrar, IRegistry, IHeadlessTask, ITaskProvider, ITaskCanceller, ITaskCancelProvider, } from '@symbiote-native/engine';
@@ -0,0 +1,23 @@
1
+ // AppRegistry: the JS entry point RN apps already use:
2
+ // AppRegistry.registerComponent(appKey, () => App)
3
+ // The registry bookkeeping (sections, host-registrar bridge, headless tasks) is
4
+ // framework-agnostic and lives in @symbiote-native/engine's createAppRegistry; this file supplies
5
+ // only the one Angular-specific seam — building a runnable from a component provider via
6
+ // `mount`'s wrapper/initialProps support (render.ts) — so examples/angular's own
7
+ // registerRunnable + mount call can move onto the same entry point React/Vue already have.
8
+ import { createAppRegistry, dlog, } from '@symbiote-native/engine';
9
+ import { mount } from '../../render';
10
+ function runnableFor(componentProvider, getWrapperComponentProvider) {
11
+ return appParameters => {
12
+ dlog(`AppRegistry: mounting on rootTag ${String(appParameters.rootTag)}`);
13
+ // Read live (not at registration time) so setWrapperComponentProvider affects every
14
+ // runnable's next run, not just future ones.
15
+ mount(appParameters.rootTag, componentProvider(), {
16
+ initialProps: appParameters.initialProps,
17
+ wrapperComponent: getWrapperComponentProvider()?.(appParameters),
18
+ });
19
+ };
20
+ }
21
+ const { AppRegistry, setHostRegistrar } = createAppRegistry(runnableFor);
22
+ export { AppRegistry, setHostRegistrar };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/app-registry/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,qDAAqD;AACrD,gFAAgF;AAChF,kGAAkG;AAClG,yFAAyF;AACzF,iFAAiF;AACjF,2FAA2F;AAG3F,OAAO,EACL,iBAAiB,EACjB,IAAI,GAGL,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAcrC,SAAS,WAAW,CAClB,iBAAqC,EACrC,2BAAwE;IAExE,OAAO,aAAa,CAAC,EAAE;QACrB,IAAI,CAAC,oCAAoC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,oFAAoF;QACpF,6CAA6C;QAC7C,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE;YAChD,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,gBAAgB,EAAE,2BAA2B,EAAE,EAAE,CAAC,aAAa,CAAC;SACjE,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,iBAAiB,CAGzD,WAAW,CAAC,CAAC;AAEf,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type OnChanges, type SimpleChanges } from '@angular/core';
2
+ import { type IColorValue, type IStatusBarStyle } from '@symbiote-native/engine';
3
+ import * as i0 from "@angular/core";
4
+ export type { IStatusBarProps, IStatusBarStyle } from '@symbiote-native/engine';
5
+ declare class StatusBarComponent implements OnChanges {
6
+ barStyle?: IStatusBarStyle;
7
+ hidden?: boolean;
8
+ animated?: boolean;
9
+ networkActivityIndicatorVisible?: boolean;
10
+ backgroundColor?: IColorValue;
11
+ translucent?: boolean;
12
+ ngOnChanges(_changes: SimpleChanges): void;
13
+ private buildProps;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<StatusBarComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<StatusBarComponent, "StatusBar", never, { "barStyle": { "alias": "barStyle"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "animated": { "alias": "animated"; "required": false; }; "networkActivityIndicatorVisible": { "alias": "networkActivityIndicatorVisible"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "translucent": { "alias": "translucent"; "required": false; }; }, {}, never, never, true, never>;
16
+ }
17
+ declare const StatusBarWithStatics: typeof StatusBarComponent & import("@symbiote-native/engine").IStatusBarImperative;
18
+ export declare const StatusBar: typeof StatusBarWithStatics & {
19
+ readonly currentHeight?: number;
20
+ };
@@ -0,0 +1,59 @@
1
+ // StatusBar, the Angular lifecycle half. The native StatusBarManager driving, the imperative
2
+ // statics, and the Android bar-height constant all live in @symbiote-native/engine, shared verbatim with
3
+ // React and Vue; Metro selects the engine's platform variant. Angular supplies only the
4
+ // declarative shape: a component that renders nothing and re-applies the props through
5
+ // ngOnChanges on mount + every prop change. Imperative statics are attached to the component
6
+ // object the same way RN does.
7
+ import { Component, Input } from '@angular/core';
8
+ import { applyStatusBarProps, statusBarImperative, statusBarCurrentHeight, } from '@symbiote-native/engine';
9
+ import * as i0 from "@angular/core";
10
+ class StatusBarComponent {
11
+ barStyle;
12
+ hidden;
13
+ animated;
14
+ networkActivityIndicatorVisible;
15
+ backgroundColor;
16
+ translucent;
17
+ ngOnChanges(_changes) {
18
+ applyStatusBarProps(this.buildProps());
19
+ }
20
+ buildProps() {
21
+ return {
22
+ barStyle: this.barStyle,
23
+ hidden: this.hidden,
24
+ animated: this.animated,
25
+ networkActivityIndicatorVisible: this.networkActivityIndicatorVisible,
26
+ backgroundColor: this.backgroundColor,
27
+ translucent: this.translucent,
28
+ };
29
+ }
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: StatusBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: StatusBarComponent, isStandalone: true, selector: "StatusBar", inputs: { barStyle: "barStyle", hidden: "hidden", animated: "animated", networkActivityIndicatorVisible: "networkActivityIndicatorVisible", backgroundColor: "backgroundColor", translucent: "translucent" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: StatusBarComponent, decorators: [{
34
+ type: Component,
35
+ args: [{
36
+ selector: 'StatusBar',
37
+ standalone: true,
38
+ template: '',
39
+ }]
40
+ }], propDecorators: { barStyle: [{
41
+ type: Input
42
+ }], hidden: [{
43
+ type: Input
44
+ }], animated: [{
45
+ type: Input
46
+ }], networkActivityIndicatorVisible: [{
47
+ type: Input
48
+ }], backgroundColor: [{
49
+ type: Input
50
+ }], translucent: [{
51
+ type: Input
52
+ }] } });
53
+ const StatusBarWithStatics = Object.assign(StatusBarComponent, statusBarImperative);
54
+ Object.defineProperty(StatusBarWithStatics, 'currentHeight', {
55
+ get: statusBarCurrentHeight,
56
+ enumerable: true,
57
+ });
58
+ export const StatusBar = StatusBarWithStatics;
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/status-bar/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,yGAAyG;AACzG,wFAAwF;AACxF,uFAAuF;AACvF,6FAA6F;AAC7F,+BAA+B;AAE/B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAsC,MAAM,eAAe,CAAC;AACrF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GAIvB,MAAM,yBAAyB,CAAC;;AAIjC,MAKM,kBAAkB;IACb,QAAQ,CAAmB;IAC3B,MAAM,CAAW;IACjB,QAAQ,CAAW;IACnB,+BAA+B,CAAW;IAC1C,eAAe,CAAe;IAC9B,WAAW,CAAW;IAE/B,WAAW,CAAC,QAAuB;QACjC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,UAAU;QAChB,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,+BAA+B,EAAE,IAAI,CAAC,+BAA+B;YACrE,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;uGArBG,kBAAkB;2FAAlB,kBAAkB,wSAFZ,EAAE;;2FAER,kBAAkB;kBALvB,SAAS;mBAAC;oBACT,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,EAAE;iBACb;;sBAEE,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;AAkBR,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;AAEpF,MAAM,CAAC,cAAc,CAAC,oBAAoB,EAAE,eAAe,EAAE;IAC3D,GAAG,EAAE,sBAAsB;IAC3B,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GACpB,oBAAoB,CAAC"}