@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export { ActivityIndicator } from './components/activity-indicator';
2
+ export type { IActivityIndicatorProps } from './components/activity-indicator';
3
+ export { Image, setImageSourceResolver } from './components/image';
4
+ export { InputAccessoryView } from './components/input-accessory-view';
5
+ export type { IAngularInputAccessoryViewProps } from './components/input-accessory-view';
6
+ export { Modal } from './components/modal';
7
+ export type { IAngularModalProps, IModalAnimationType, IModalOrientation, IModalOrientationChangeEvent, IModalPresentationStyle, } from './components/modal';
8
+ export type { IImageProps, IImageSource, IImageSourceProp, IResizeMode, IImageSize, IImageCacheStatus, } from './components/image';
9
+ export { Pressable } from './components/pressable';
10
+ export type { IAngularPressableProps } from './components/pressable';
11
+ export { SafeAreaView } from './components/safe-area-view';
12
+ export type { IAngularSafeAreaViewProps } from './components/safe-area-view';
13
+ export { Switch } from './components/switch';
14
+ export type { ISwitchProps, ISwitchTrackColor } from './components/switch';
15
+ export { ImageBackground } from './components/image-background';
16
+ export type { IAngularImageBackgroundProps } from './components/image-background';
17
+ export { KeyboardAvoidingView } from './components/keyboard-avoiding-view';
18
+ export type { IAngularKeyboardAvoidingViewProps, IKeyboardAvoidingBehavior, } from './components/keyboard-avoiding-view';
19
+ export { RefreshControl } from './components/refresh-control';
20
+ export type { IAngularRefreshControlProps } from './components/refresh-control';
21
+ export { TextInput } from './components/text-input';
22
+ export type { IAngularTextInputProps, IEnterKeyHint, IInputMode, ISubmitBehavior, ITextInputHandle, ITextInputSelection, } from './components/text-input';
23
+ export { TouchableNativeFeedback } from './components/touchable-native-feedback';
24
+ export type { IAngularTouchableNativeFeedbackProps, INativeFeedbackBackground, IRippleBackground, IThemeAttrBackground, } from './components/touchable-native-feedback';
25
+ export { TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, } from './components/touchable';
26
+ export type { IAngularTouchableHighlightProps, IAngularTouchableOpacityProps, IAngularTouchableWithoutFeedbackProps, } from './components/touchable';
27
+ export { ScrollView, ScrollViewStickyHeader } from './components/scroll-view';
28
+ export type { IAngularScrollViewProps, IScrollViewHandle, IStickyHeaderComponentType, } from './components/scroll-view';
29
+ export { Button } from './components/button';
30
+ export type { IButtonProps } from './components/button';
31
+ export { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from './components/virtualized-list';
32
+ export type { ICellLayout, ISeparatorProps, ISeparators, IViewabilityConfig, IViewabilityConfigCallbackPair, IViewableItemsChangedInfo, IViewToken, IVirtualizedListHandle, IVirtualizedListProps, IVListItemContext, IVListSeparatorContext, } from './components/virtualized-list';
33
+ export { FlatList } from './components/flat-list';
34
+ export type { IFlatListHandle, IFlatListProps } from './components/flat-list';
35
+ export { VirtualizedSectionList, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components/virtualized-section-list';
36
+ export type { ISection, IVirtualizedSectionListHandle, IVirtualizedSectionListProps, IVSectionContext, IVSectionItemContext, } from './components/virtualized-section-list';
37
+ export { SectionList } from './components/section-list';
38
+ export type { ISectionListHandle, ISectionListProps } from './components/section-list';
39
+ export { ViewHost, ViewHost as View, TextHost, TextHost as Text, ImageHost, ScrollViewHost, ScrollContentView, HorizontalScrollView, HorizontalScrollContentView, TextInputHost, MultilineTextInputHost, SwitchHost, ActivityIndicatorHost, SafeAreaViewHost, ModalHost, RefreshControlHost, InputAccessoryViewHost, SymbioteHostPropsDirective, anchorHostStyle, stableAnchorStyle, } from './primitives/index';
@@ -0,0 +1,38 @@
1
+ // Angular component surface over Symbiote intrinsics. Public tags (`View`, `Text`) are
2
+ // ergonomic aliases of the primitive hosts in `../primitives`; engine intrinsics (`symbiote-*`)
3
+ // are the actual Angular primitive host components. Every primitive host declares `style` as a
4
+ // real Angular input so RN `StyleProp` arrays/objects are flattened and forwarded through the
5
+ // custom renderer, instead of being misinterpreted by Angular's CSS style engine.
6
+ export { ActivityIndicator } from './components/activity-indicator';
7
+ export { Image, setImageSourceResolver } from './components/image';
8
+ export { InputAccessoryView } from './components/input-accessory-view';
9
+ export { Modal } from './components/modal';
10
+ export { Pressable } from './components/pressable';
11
+ export { SafeAreaView } from './components/safe-area-view';
12
+ export { Switch } from './components/switch';
13
+ export { ImageBackground } from './components/image-background';
14
+ export { KeyboardAvoidingView } from './components/keyboard-avoiding-view';
15
+ export { RefreshControl } from './components/refresh-control';
16
+ export { TextInput } from './components/text-input';
17
+ export { TouchableNativeFeedback } from './components/touchable-native-feedback';
18
+ export { TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, } from './components/touchable';
19
+ export { ScrollView, ScrollViewStickyHeader } from './components/scroll-view';
20
+ export { Button } from './components/button';
21
+ export { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from './components/virtualized-list';
22
+ export { FlatList } from './components/flat-list';
23
+ export { VirtualizedSectionList, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components/virtualized-section-list';
24
+ export { SectionList } from './components/section-list';
25
+ // Re-export primitive hosts so composed components can import them from the public barrel too.
26
+ export { ViewHost, ViewHost as View, TextHost, TextHost as Text, ImageHost, ScrollViewHost, ScrollContentView, HorizontalScrollView, HorizontalScrollContentView, TextInputHost, MultilineTextInputHost, SwitchHost, ActivityIndicatorHost, SafeAreaViewHost, ModalHost, RefreshControlHost, InputAccessoryViewHost, SymbioteHostPropsDirective,
27
+ // Exported so an OUT-OF-PACKAGE composed component (e.g. @symbiote-native/slider's Angular wrapper,
28
+ // itself listed in ANCHOR_HOST_COMPONENTS) can merge its own anchor host's class-derived style
29
+ // the same way every in-package composed component does — see anchorHostStyle's doc comment.
30
+ anchorHostStyle,
31
+ // Same reasoning, for a component whose merged style is reassigned unconditionally every CD
32
+ // tick (rather than read once inside a props-object getter) — see stableAnchorStyle's doc
33
+ // comment for the free-running-CD-loop it prevents.
34
+ stableAnchorStyle, } from './primitives/index';
35
+ // Public ergonomic aliases: <View> and <Text> resolve directly to the primitive hosts
36
+ // (no extra Angular bookkeeping anchor), while the internal symbiote-* selectors remain
37
+ // available for composed adapter templates.
38
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/components.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,gGAAgG;AAChG,+FAA+F;AAC/F,8FAA8F;AAC9F,kFAAkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAgB3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAK3E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AASpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAOjF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAM9E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAcvC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,uCAAuC,CAAC;AAQ/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,+FAA+F;AAC/F,OAAO,EACL,QAAQ,EACR,QAAQ,IAAI,IAAI,EAChB,QAAQ,EACR,QAAQ,IAAI,IAAI,EAChB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B;AAC1B,oGAAoG;AACpG,+FAA+F;AAC/F,6FAA6F;AAC7F,eAAe;AACf,4FAA4F;AAC5F,0FAA0F;AAC1F,oDAAoD;AACpD,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,sFAAsF;AACtF,wFAAwF;AACxF,4CAA4C"}
@@ -0,0 +1,22 @@
1
+ import { ViewContainerRef, type OnChanges, type OnDestroy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** Marks the destination for `*portal` — place it on whichever already-mounted host should
4
+ * paint the portaled content (e.g. a persistent overlay-host View near the app root), then
5
+ * export it to a template variable and pass that variable as `*portal`'s target. */
6
+ export declare class PortalOutletDirective {
7
+ readonly viewContainerRef: ViewContainerRef;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<PortalOutletDirective, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PortalOutletDirective, "[portalOutlet]", ["portalOutlet"], {}, {}, never, never, true, never>;
10
+ }
11
+ /** `*portal="overlayHost"` — renders the host element into whichever `PortalOutletDirective`
12
+ * `overlayHost` refers to, same surface only (see the file header). Combine with `@if` for
13
+ * conditional visibility, exactly like `*ngIf`. */
14
+ export declare class PortalDirective implements OnChanges, OnDestroy {
15
+ portal: PortalOutletDirective;
16
+ private readonly templateRef;
17
+ private viewRef;
18
+ ngOnChanges(): void;
19
+ ngOnDestroy(): void;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<PortalDirective, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PortalDirective, "[portal]", never, { "portal": { "alias": "portal"; "required": true; }; }, {}, never, never, true, never>;
22
+ }
@@ -0,0 +1,74 @@
1
+ // createPortal for @symbiote-native/angular — the Angular twin of the React/Vue same-surface portal
2
+ // (create-portal.ts / Teleport in runtime-helpers.ts). Scope is identical: the target must be
3
+ // an already-mounted location WITHIN THE SAME SURFACE as the portal's call site — moving content
4
+ // across independently-mounted surfaces has no safe host-level primitive to hook into, so
5
+ // createTunnel (create-tunnel.ts) covers that cross-surface case instead.
6
+ //
7
+ // React/Vue implement this as a thin validating wrapper around a mechanism the FRAMEWORK
8
+ // ITSELF already has (react-reconciler's Fiber-level HostPortal, Vue's own <Teleport>) — all
9
+ // the actual node-moving is handled generically by the engine's insert/remove, which those
10
+ // frameworks already call. Angular has no such built-in: there is no `@angular/cdk` dependency
11
+ // here (core-only, see package.json), and physically moving an EmbeddedView's already-created
12
+ // root nodes via Renderer2 after the fact is NOT safe — Angular's own view-destroy path removes
13
+ // a view's nodes from wherever ITS OWN bookkeeping thinks they live (the container's insertion
14
+ // point), not from wherever a node was manually moved to afterwards, so a raw Renderer2 move
15
+ // would desync Angular's internals from the retained tree.
16
+ //
17
+ // PortalDirective is a STRUCTURAL directive (`*portal="overlayHost"`), not a component that
18
+ // takes a separate `<ng-template>` + `[content]` binding — that two-step reads as foreign to
19
+ // anyone used to `*ngIf`/`*ngFor`/`*ngTemplateOutlet`, where the directive sits directly on the
20
+ // content and its TemplateRef comes from injection, not a passed-in reference. `*portal="x"`
21
+ // desugars the same way `*ngIf` does: Angular wraps the host element in an `<ng-template>` and
22
+ // injects that template's own TemplateRef into the directive automatically.
23
+ //
24
+ // The safe, fully-public-API mechanism: create the embedded view DIRECTLY inside a
25
+ // ViewContainerRef anchored at the destination, so there is nothing to move at all. That
26
+ // ViewContainerRef has to come from somewhere in the destination's own template — hence
27
+ // `PortalOutletDirective`, a marker placed on the target host (`<View portalOutlet
28
+ // #overlayHost="portalOutlet">`) purely to expose its ViewContainerRef, the same
29
+ // export-as-template-variable idiom `#form="ngForm"` uses. This also replaces the
30
+ // `isSymbioteNode` runtime guard React/Vue need: there `to` is an arbitrary JS value at
31
+ // runtime (a wrong ref, a string, a plain object all type-check as `any`/`unknown` until
32
+ // validated), but here `to` is typed as `PortalOutletDirective` — the only way to construct
33
+ // one is Angular's own template compiler resolving a template reference variable, so
34
+ // `strictTemplates` rejects anything else at compile time and there is nothing left to guard
35
+ // against at runtime.
36
+ import { Directive, inject, Input, TemplateRef, ViewContainerRef, } from '@angular/core';
37
+ import * as i0 from "@angular/core";
38
+ /** Marks the destination for `*portal` — place it on whichever already-mounted host should
39
+ * paint the portaled content (e.g. a persistent overlay-host View near the app root), then
40
+ * export it to a template variable and pass that variable as `*portal`'s target. */
41
+ export class PortalOutletDirective {
42
+ viewContainerRef = inject(ViewContainerRef);
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PortalOutletDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
44
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: PortalOutletDirective, isStandalone: true, selector: "[portalOutlet]", exportAs: ["portalOutlet"], ngImport: i0 });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PortalOutletDirective, decorators: [{
47
+ type: Directive,
48
+ args: [{ selector: '[portalOutlet]', standalone: true, exportAs: 'portalOutlet' }]
49
+ }] });
50
+ /** `*portal="overlayHost"` — renders the host element into whichever `PortalOutletDirective`
51
+ * `overlayHost` refers to, same surface only (see the file header). Combine with `@if` for
52
+ * conditional visibility, exactly like `*ngIf`. */
53
+ export class PortalDirective {
54
+ portal;
55
+ templateRef = inject(TemplateRef);
56
+ viewRef = null;
57
+ ngOnChanges() {
58
+ this.viewRef?.destroy();
59
+ this.viewRef = this.portal.viewContainerRef.createEmbeddedView(this.templateRef);
60
+ }
61
+ ngOnDestroy() {
62
+ this.viewRef?.destroy();
63
+ }
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PortalDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
65
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: PortalDirective, isStandalone: true, selector: "[portal]", inputs: { portal: "portal" }, usesOnChanges: true, ngImport: i0 });
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PortalDirective, decorators: [{
68
+ type: Directive,
69
+ args: [{ selector: '[portal]', standalone: true }]
70
+ }], propDecorators: { portal: [{
71
+ type: Input,
72
+ args: [{ required: true }]
73
+ }] } });
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/create-portal/index.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,8FAA8F;AAC9F,iGAAiG;AACjG,0FAA0F;AAC1F,0EAA0E;AAC1E,EAAE;AACF,yFAAyF;AACzF,6FAA6F;AAC7F,2FAA2F;AAC3F,+FAA+F;AAC/F,8FAA8F;AAC9F,gGAAgG;AAChG,+FAA+F;AAC/F,6FAA6F;AAC7F,2DAA2D;AAC3D,EAAE;AACF,4FAA4F;AAC5F,6FAA6F;AAC7F,gGAAgG;AAChG,6FAA6F;AAC7F,+FAA+F;AAC/F,4EAA4E;AAC5E,EAAE;AACF,mFAAmF;AACnF,yFAAyF;AACzF,wFAAwF;AACxF,mFAAmF;AACnF,iFAAiF;AACjF,kFAAkF;AAClF,wFAAwF;AACxF,yFAAyF;AACzF,4FAA4F;AAC5F,qFAAqF;AACrF,6FAA6F;AAC7F,sBAAsB;AAEtB,OAAO,EACL,SAAS,EACT,MAAM,EACN,KAAK,EACL,WAAW,EACX,gBAAgB,GAIjB,MAAM,eAAe,CAAC;;AAEvB;;qFAEqF;AAErF,MAAM,OAAO,qBAAqB;IACvB,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;uGAD1C,qBAAqB;2FAArB,qBAAqB;;2FAArB,qBAAqB;kBADjC,SAAS;mBAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE;;AAKrF;;oDAEoD;AAEpD,MAAM,OAAO,eAAe;IACC,MAAM,CAAyB;IAEzC,WAAW,GAAG,MAAM,CAAuB,WAAW,CAAC,CAAC;IACjE,OAAO,GAAoC,IAAI,CAAC;IAExD,WAAW;QACT,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnF,CAAC;IAED,WAAW;QACT,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IAC1B,CAAC;uGAbU,eAAe;2FAAf,eAAe;;2FAAf,eAAe;kBAD3B,SAAS;mBAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;;sBAElD,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE"}
@@ -0,0 +1,34 @@
1
+ import { TemplateRef, type OnDestroy, type OnInit, type Signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export interface ITunnelStore {
4
+ readonly entries: Signal<ReadonlyMap<number, TemplateRef<unknown>>>;
5
+ register(id: number, templateRef: TemplateRef<unknown>): void;
6
+ unregister(id: number): void;
7
+ }
8
+ export declare function createTunnel(): ITunnelStore;
9
+ /** `*tunnelIn="overlayTunnel"` — registers the host element under `overlayTunnel` from
10
+ * wherever it's mounted, any surface. Combine with `@if` for conditional visibility, exactly
11
+ * like `*ngIf`. */
12
+ export declare class TunnelInDirective implements OnInit, OnDestroy {
13
+ tunnelIn: ITunnelStore;
14
+ private readonly templateRef;
15
+ private readonly id;
16
+ ngOnInit(): void;
17
+ ngOnDestroy(): void;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<TunnelInDirective, never>;
19
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TunnelInDirective, "[tunnelIn]", never, { "tunnelIn": { "alias": "tunnelIn"; "required": true; }; }, {}, never, never, true, never>;
20
+ }
21
+ /** Renders everything currently registered on `tunnel`, in registration order. Mount this in
22
+ * the component that should actually paint the content — the tunnel's own `<router-outlet>`. */
23
+ export declare class TunnelOut implements OnInit, OnDestroy {
24
+ tunnel: ITunnelStore;
25
+ private readonly viewContainerRef;
26
+ private readonly injector;
27
+ private readonly views;
28
+ private stopEffect;
29
+ ngOnInit(): void;
30
+ ngOnDestroy(): void;
31
+ private sync;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<TunnelOut, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<TunnelOut, "tunnel-out", never, { "tunnel": { "alias": "tunnel"; "required": true; }; }, {}, never, never, true, never>;
34
+ }
@@ -0,0 +1,126 @@
1
+ // createTunnel for @symbiote-native/angular — the Angular twin of the React/Vue cross-surface tunnel
2
+ // (adapters/react/src/create-tunnel.tsx, adapters/vue/src/create-tunnel.ts — read their
3
+ // headers for the full "why not just extend the portal across surfaces" rationale; same prior
4
+ // art: pmndrs/tunnel-rat, facebook/react#17147). `TunnelOut` lives in whichever component should
5
+ // PAINT the content; its OWN read of the shared store drives that surface's own normal render
6
+ // cycle — no cross-surface reach-in, no rootTag lookup, works whether TunnelIn and TunnelOut
7
+ // share a surface or not.
8
+ //
9
+ // Angular cannot mirror React's/Vue's shape verbatim: both of those build a FRESH `In`/`Out`
10
+ // pair per `createTunnel()` call (a closure-scoped class in Vue, closure-scoped functions in
11
+ // React). Angular components can't be synthesized at runtime — there is no JIT compiler under
12
+ // Metro/Hermes (see modules/animated/create-animated-component.ts's header for the same
13
+ // constraint). So here `createTunnel()` returns only a plain reactive STORE (a signal);
14
+ // `TunnelInDirective` and `TunnelOut` are ONE static, pre-authored, AOT-compilable pair,
15
+ // parameterized by that store through an input — same relationship `VListOutletDirective` has
16
+ // to the per-cell template it stamps, generalized to an open-ended, changing SET of templates.
17
+ //
18
+ // TunnelInDirective is a STRUCTURAL directive (`*tunnelIn="overlayTunnel"`), not a component
19
+ // that takes a separate `<ng-template>` + `[content]` binding — matching `*portal` (see
20
+ // create-portal.ts's header for why that reads as native Angular and the two-step form
21
+ // doesn't). `TunnelOut` stays a plain component (`<tunnel-out>`) — it's a rendering SLOT, the
22
+ // same shape as Angular's own `<router-outlet>`, not content that needs a structural directive.
23
+ //
24
+ // App code stays fully declarative — no ViewContainerRef/imperative rendering — by putting
25
+ // `*tunnelIn` directly on the portable content, the same way `*ngIf` sits directly on an
26
+ // element instead of wrapping it in a named `<ng-template>`:
27
+ // @if (toastVisible) {
28
+ // <View *tunnelIn="overlayTunnel"><Text>…</Text></View>
29
+ // }
30
+ // …
31
+ // <tunnel-out [tunnel]="overlayTunnel" />
32
+ // No `context` param: unlike a `*ngFor` cell template, tunneled content needs no per-registration
33
+ // data — it already closes over whatever signals/fields its OWN declaring component exposes, and
34
+ // Angular's own change detection keeps that live once the embedded view exists, the same way any
35
+ // other template does.
36
+ import { Component, Directive, effect, inject, Injector, Input, signal, TemplateRef, ViewContainerRef, } from '@angular/core';
37
+ import * as i0 from "@angular/core";
38
+ export function createTunnel() {
39
+ const store = signal(new Map(), /* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "store" }] : /* istanbul ignore next */ []));
41
+ return {
42
+ entries: store.asReadonly(),
43
+ register(id, templateRef) {
44
+ store.update(map => new Map(map).set(id, templateRef));
45
+ },
46
+ unregister(id) {
47
+ store.update(map => {
48
+ if (!map.has(id))
49
+ return map;
50
+ const next = new Map(map);
51
+ next.delete(id);
52
+ return next;
53
+ });
54
+ },
55
+ };
56
+ }
57
+ let nextTunnelEntryId = 0;
58
+ /** `*tunnelIn="overlayTunnel"` — registers the host element under `overlayTunnel` from
59
+ * wherever it's mounted, any surface. Combine with `@if` for conditional visibility, exactly
60
+ * like `*ngIf`. */
61
+ export class TunnelInDirective {
62
+ tunnelIn;
63
+ templateRef = inject(TemplateRef);
64
+ id = nextTunnelEntryId++;
65
+ ngOnInit() {
66
+ this.tunnelIn.register(this.id, this.templateRef);
67
+ }
68
+ ngOnDestroy() {
69
+ this.tunnelIn.unregister(this.id);
70
+ }
71
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TunnelInDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
72
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: TunnelInDirective, isStandalone: true, selector: "[tunnelIn]", inputs: { tunnelIn: "tunnelIn" }, ngImport: i0 });
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TunnelInDirective, decorators: [{
75
+ type: Directive,
76
+ args: [{ selector: '[tunnelIn]', standalone: true }]
77
+ }], propDecorators: { tunnelIn: [{
78
+ type: Input,
79
+ args: [{ required: true }]
80
+ }] } });
81
+ /** Renders everything currently registered on `tunnel`, in registration order. Mount this in
82
+ * the component that should actually paint the content — the tunnel's own `<router-outlet>`. */
83
+ export class TunnelOut {
84
+ tunnel;
85
+ viewContainerRef = inject(ViewContainerRef);
86
+ injector = inject(Injector);
87
+ views = new Map();
88
+ stopEffect;
89
+ ngOnInit() {
90
+ const ref = effect(() => this.sync(this.tunnel.entries()), { ...(ngDevMode ? { debugName: "ref" } : /* istanbul ignore next */ {}), injector: this.injector });
91
+ this.stopEffect = () => ref.destroy();
92
+ }
93
+ ngOnDestroy() {
94
+ this.stopEffect?.();
95
+ for (const view of this.views.values())
96
+ view.destroy();
97
+ this.views.clear();
98
+ }
99
+ sync(entries) {
100
+ for (const [id, view] of this.views) {
101
+ if (entries.has(id))
102
+ continue;
103
+ view.destroy();
104
+ this.views.delete(id);
105
+ }
106
+ for (const [id, templateRef] of entries) {
107
+ if (this.views.has(id))
108
+ continue;
109
+ this.views.set(id, this.viewContainerRef.createEmbeddedView(templateRef));
110
+ }
111
+ }
112
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TunnelOut, deps: [], target: i0.ɵɵFactoryTarget.Component });
113
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: TunnelOut, isStandalone: true, selector: "tunnel-out", inputs: { tunnel: "tunnel" }, ngImport: i0, template: '', isInline: true });
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TunnelOut, decorators: [{
116
+ type: Component,
117
+ args: [{
118
+ selector: 'tunnel-out',
119
+ standalone: true,
120
+ template: '',
121
+ }]
122
+ }], propDecorators: { tunnel: [{
123
+ type: Input,
124
+ args: [{ required: true }]
125
+ }] } });
126
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/create-tunnel/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type OnChanges, type OnDestroy, type SimpleChanges } from '@angular/core';
2
+ import type { IDescriptor } from '@symbiote-native/components';
3
+ import * as i0 from "@angular/core";
4
+ export declare class DescriptorOutlet implements OnChanges, OnDestroy {
5
+ node: IDescriptor;
6
+ private readonly renderer;
7
+ private readonly hostNode;
8
+ private rendered;
9
+ ngOnChanges(changes: SimpleChanges): void;
10
+ ngOnDestroy(): void;
11
+ private patchRoot;
12
+ private createChild;
13
+ private createText;
14
+ private createElement;
15
+ private patchChild;
16
+ private patchElement;
17
+ private patchProps;
18
+ private patchChildren;
19
+ private replaceChild;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<DescriptorOutlet, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<DescriptorOutlet, "symbiote-descriptor-outlet", never, { "node": { "alias": "node"; "required": true; }; }, {}, never, never, true, never>;
22
+ }
@@ -0,0 +1,142 @@
1
+ // Angular descriptor outlet. The React/Vue bridges can return framework elements directly
2
+ // (`descriptorToReact` / `descriptorToVue`); Angular needs a tiny standalone component that
3
+ // consumes a Descriptor tree and drives Renderer2 imperatively, patching same type/key nodes
4
+ // instead of clearing and recreating the subtree so it keeps retained-node identity and Fabric
5
+ // stays on the clone-on-write path.
6
+ import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, Renderer2, } from '@angular/core';
7
+ import * as i0 from "@angular/core";
8
+ export class DescriptorOutlet {
9
+ node;
10
+ renderer = inject(Renderer2);
11
+ hostNode = inject(ElementRef).nativeElement;
12
+ rendered;
13
+ ngOnChanges(changes) {
14
+ if (!('node' in changes) || this.node === undefined)
15
+ return;
16
+ this.rendered = this.patchRoot(this.rendered, this.node);
17
+ }
18
+ ngOnDestroy() {
19
+ if (this.rendered === undefined)
20
+ return;
21
+ this.renderer.removeChild(this.hostNode, this.rendered.node);
22
+ this.rendered = undefined;
23
+ }
24
+ patchRoot(rendered, next) {
25
+ if (rendered === undefined) {
26
+ const created = this.createElement(next);
27
+ this.renderer.appendChild(this.hostNode, created.node);
28
+ return created;
29
+ }
30
+ return this.patchElement(this.hostNode, rendered, next);
31
+ }
32
+ createChild(child) {
33
+ return typeof child === 'string' ? this.createText(child) : this.createElement(child);
34
+ }
35
+ createText(value) {
36
+ return { kind: 'text', node: this.renderer.createText(value), value };
37
+ }
38
+ createElement(descriptor) {
39
+ const node = this.renderer.createElement(descriptor.type);
40
+ const props = { ...descriptor.props };
41
+ for (const [key, value] of Object.entries(props)) {
42
+ this.renderer.setProperty(node, key, value);
43
+ }
44
+ const children = descriptor.children.map(child => this.createChild(child));
45
+ for (const child of children) {
46
+ this.renderer.appendChild(node, child.node);
47
+ }
48
+ return { kind: 'element', node, descriptor, props, children };
49
+ }
50
+ patchChild(parent, rendered, next) {
51
+ if (typeof next === 'string') {
52
+ if (rendered.kind === 'text') {
53
+ if (rendered.value !== next) {
54
+ this.renderer.setValue(rendered.node, next);
55
+ rendered.value = next;
56
+ }
57
+ return rendered;
58
+ }
59
+ const replacement = this.createText(next);
60
+ this.replaceChild(parent, rendered.node, replacement.node);
61
+ return replacement;
62
+ }
63
+ if (rendered.kind === 'element') {
64
+ return this.patchElement(parent, rendered, next);
65
+ }
66
+ const replacement = this.createElement(next);
67
+ this.replaceChild(parent, rendered.node, replacement.node);
68
+ return replacement;
69
+ }
70
+ patchElement(parent, rendered, next) {
71
+ if (!sameElement(rendered.descriptor, next)) {
72
+ const replacement = this.createElement(next);
73
+ this.replaceChild(parent, rendered.node, replacement.node);
74
+ return replacement;
75
+ }
76
+ this.patchProps(rendered, next.props);
77
+ rendered.children = this.patchChildren(rendered.node, rendered.children, next.children);
78
+ rendered.descriptor = next;
79
+ return rendered;
80
+ }
81
+ patchProps(rendered, nextProps) {
82
+ const prevProps = rendered.props;
83
+ for (const key of Object.keys(prevProps)) {
84
+ if (!(key in nextProps)) {
85
+ this.renderer.setProperty(rendered.node, key, undefined);
86
+ }
87
+ }
88
+ for (const [key, value] of Object.entries(nextProps)) {
89
+ if (!Object.is(prevProps[key], value)) {
90
+ this.renderer.setProperty(rendered.node, key, value);
91
+ }
92
+ }
93
+ rendered.props = { ...nextProps };
94
+ }
95
+ patchChildren(parent, renderedChildren, nextChildren) {
96
+ const nextRendered = [];
97
+ const common = Math.min(renderedChildren.length, nextChildren.length);
98
+ for (let i = 0; i < common; i++) {
99
+ const rendered = renderedChildren[i];
100
+ const next = nextChildren[i];
101
+ if (rendered !== undefined && next !== undefined) {
102
+ nextRendered.push(this.patchChild(parent, rendered, next));
103
+ }
104
+ }
105
+ for (let i = common; i < nextChildren.length; i++) {
106
+ const next = nextChildren[i];
107
+ if (next === undefined)
108
+ continue;
109
+ const child = this.createChild(next);
110
+ this.renderer.appendChild(parent, child.node);
111
+ nextRendered.push(child);
112
+ }
113
+ for (let i = common; i < renderedChildren.length; i++) {
114
+ const rendered = renderedChildren[i];
115
+ if (rendered !== undefined)
116
+ this.renderer.removeChild(parent, rendered.node);
117
+ }
118
+ return nextRendered;
119
+ }
120
+ replaceChild(parent, oldChild, newChild) {
121
+ this.renderer.insertBefore(parent, newChild, oldChild);
122
+ this.renderer.removeChild(parent, oldChild);
123
+ }
124
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DescriptorOutlet, deps: [], target: i0.ɵɵFactoryTarget.Component });
125
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: DescriptorOutlet, isStandalone: true, selector: "symbiote-descriptor-outlet", inputs: { node: "node" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DescriptorOutlet, decorators: [{
128
+ type: Component,
129
+ args: [{
130
+ selector: 'symbiote-descriptor-outlet',
131
+ standalone: true,
132
+ template: '',
133
+ changeDetection: ChangeDetectionStrategy.OnPush,
134
+ }]
135
+ }], propDecorators: { node: [{
136
+ type: Input,
137
+ args: [{ required: true }]
138
+ }] } });
139
+ function sameElement(prev, next) {
140
+ return prev.type === next.type && prev.key === next.key;
141
+ }
142
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/descriptor-to-angular/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type { IHostInstance } from '@symbiote-native/engine';
2
+ export declare function findNodeHandle(componentOrHandle: unknown): number | null;
@@ -0,0 +1,37 @@
1
+ // findNodeHandle, the Angular twin of adapters/react/src/host-instance.ts and
2
+ // adapters/vue/src/host-instance/index.ts. RN's "ref/instance -> native reactTag" lookup,
3
+ // the seam imperative-interop libraries reach through.
4
+ //
5
+ // Angular template refs on a primitive host (`<View #myView>`) receive the component instance,
6
+ // not the raw engine node. SymbiotePrimitiveHost exposes `nativeElement`, which holds the
7
+ // engine host node that `getNativeTag` is keyed on. This adapter accepts:
8
+ // - a bare number (idempotent)
9
+ // - an engine host node / public instance
10
+ // - an Angular ElementRef wrapping the host node
11
+ // - a SymbiotePrimitiveHost component instance (via its public `nativeElement` getter)
12
+ // - null/undefined -> null
13
+ // An uncommitted or unknown input surfaces as null.
14
+ import { ElementRef } from '@angular/core';
15
+ import { getNativeTag, isSymbioteNode } from '@symbiote-native/engine';
16
+ function resolveHostNode(candidate) {
17
+ if (candidate === null || candidate === undefined)
18
+ return null;
19
+ if (isSymbioteNode(candidate))
20
+ return candidate;
21
+ if (candidate instanceof ElementRef)
22
+ return resolveHostNode(candidate.nativeElement);
23
+ const maybeHost = candidate;
24
+ if (typeof maybeHost.nativeElement !== 'undefined') {
25
+ return resolveHostNode(maybeHost.nativeElement);
26
+ }
27
+ return null;
28
+ }
29
+ export function findNodeHandle(componentOrHandle) {
30
+ if (componentOrHandle === null || componentOrHandle === undefined)
31
+ return null;
32
+ if (typeof componentOrHandle === 'number')
33
+ return componentOrHandle;
34
+ const node = resolveHostNode(componentOrHandle);
35
+ return node ? (getNativeTag(node) ?? null) : null;
36
+ }
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/host-instance/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0FAA0F;AAC1F,uDAAuD;AACvD,EAAE;AACF,+FAA+F;AAC/F,0FAA0F;AAC1F,0EAA0E;AAC1E,iCAAiC;AACjC,4CAA4C;AAC5C,mDAAmD;AACnD,yFAAyF;AACzF,6BAA6B;AAC7B,oDAAoD;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAsB,MAAM,yBAAyB,CAAC;AAI3F,SAAS,eAAe,CAAC,SAAkB;IACzC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,cAAc,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,SAAS,YAAY,UAAU;QAAE,OAAO,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,SAAwC,CAAC;IAC3D,IAAI,OAAO,SAAS,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;QACnD,OAAO,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,iBAA0B;IACvD,IAAI,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/E,IAAI,OAAO,iBAAiB,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC;IACpE,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC"}