@symbiote-native/angular 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/babel-register-composed.cjs +2 -0
  2. package/build/angular/accessibility-inputs.d.ts +2 -1
  3. package/build/angular/accessibility-inputs.js +4 -1
  4. package/build/angular/accessibility-inputs.js.map +1 -1
  5. package/build/angular/callback-host.d.ts +1 -1
  6. package/build/angular/callback-host.js +57 -9
  7. package/build/angular/callback-host.js.map +1 -1
  8. package/build/angular/components/checkbox-props.d.ts +2 -0
  9. package/build/angular/components/checkbox-props.js +2 -0
  10. package/build/angular/components/checkbox-props.js.map +1 -0
  11. package/build/angular/components/flat-list/flat-list-handle.d.ts +35 -0
  12. package/build/angular/components/flat-list/flat-list-handle.js +48 -0
  13. package/build/angular/components/flat-list/flat-list-handle.js.map +1 -0
  14. package/build/angular/components/flat-list/flat-list-template.d.ts +1 -1
  15. package/build/angular/components/flat-list/flat-list-template.js +16 -0
  16. package/build/angular/components/flat-list/flat-list-template.js.map +1 -1
  17. package/build/angular/components/flat-list/index.d.ts +6 -30
  18. package/build/angular/components/flat-list/index.js +6 -36
  19. package/build/angular/components/flat-list/index.js.map +1 -1
  20. package/build/angular/components/image-inputs.d.ts +4 -0
  21. package/build/angular/components/image-inputs.js +81 -0
  22. package/build/angular/components/image-inputs.js.map +1 -0
  23. package/build/angular/components/image-props-resolve.d.ts +3 -0
  24. package/build/angular/components/image-props-resolve.js +133 -0
  25. package/build/angular/components/image-props-resolve.js.map +1 -0
  26. package/build/angular/components/image-shared.d.ts +8 -6
  27. package/build/angular/components/image-shared.js +23 -212
  28. package/build/angular/components/image-shared.js.map +1 -1
  29. package/build/angular/components/input-accessory-view-props.d.ts +4 -4
  30. package/build/angular/components/keyboard-avoiding-view/index.d.ts +3 -6
  31. package/build/angular/components/keyboard-avoiding-view/index.js +29 -56
  32. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
  33. package/build/angular/components/layout-conformance-props.d.ts +4 -0
  34. package/build/angular/components/layout-conformance-props.js +2 -0
  35. package/build/angular/components/layout-conformance-props.js.map +1 -0
  36. package/build/angular/components/modal/index.d.ts +6 -5
  37. package/build/angular/components/modal/index.js +17 -2
  38. package/build/angular/components/modal/index.js.map +1 -1
  39. package/build/angular/components/refresh-control-props.d.ts +7 -7
  40. package/build/angular/components/scroll-view-props.d.ts +8 -5
  41. package/build/angular/components/section-list/index.d.ts +17 -8
  42. package/build/angular/components/section-list/index.js +37 -28
  43. package/build/angular/components/section-list/index.js.map +1 -1
  44. package/build/angular/components/touchable-props.d.ts +2 -2
  45. package/build/angular/components/virtualized-list/cell-renderer-context.d.ts +12 -0
  46. package/build/angular/components/virtualized-list/cell-renderer-context.js +16 -0
  47. package/build/angular/components/virtualized-list/cell-renderer-context.js.map +1 -0
  48. package/build/angular/components/virtualized-list/directives.d.ts +26 -6
  49. package/build/angular/components/virtualized-list/directives.js +59 -5
  50. package/build/angular/components/virtualized-list/directives.js.map +1 -1
  51. package/build/angular/components/virtualized-list/index.d.ts +19 -15
  52. package/build/angular/components/virtualized-list/index.js +91 -61
  53. package/build/angular/components/virtualized-list/index.js.map +1 -1
  54. package/build/angular/components/virtualized-list/list-bags.d.ts +5 -1
  55. package/build/angular/components/virtualized-list/list-bags.js +31 -19
  56. package/build/angular/components/virtualized-list/list-bags.js.map +1 -1
  57. package/build/angular/components/virtualized-list/list-effects.d.ts +2 -2
  58. package/build/angular/components/virtualized-list/list-effects.js +17 -27
  59. package/build/angular/components/virtualized-list/list-effects.js.map +1 -1
  60. package/build/angular/components/virtualized-list/list-handle.d.ts +4 -1
  61. package/build/angular/components/virtualized-list/list-handle.js +13 -3
  62. package/build/angular/components/virtualized-list/list-handle.js.map +1 -1
  63. package/build/angular/components/virtualized-list/list-inputs.d.ts +19 -5
  64. package/build/angular/components/virtualized-list/list-inputs.js +47 -4
  65. package/build/angular/components/virtualized-list/list-inputs.js.map +1 -1
  66. package/build/angular/components/virtualized-list/list-props.d.ts +9 -3
  67. package/build/angular/components/virtualized-list/list-rows.d.ts +25 -0
  68. package/build/angular/components/virtualized-list/list-rows.js +25 -0
  69. package/build/angular/components/virtualized-list/list-rows.js.map +1 -0
  70. package/build/angular/components/virtualized-list/list-styles.d.ts +4 -0
  71. package/build/angular/components/virtualized-list/list-styles.js +10 -2
  72. package/build/angular/components/virtualized-list/list-styles.js.map +1 -1
  73. package/build/angular/components/virtualized-list/list-template.d.ts +1 -1
  74. package/build/angular/components/virtualized-list/list-template.js +159 -73
  75. package/build/angular/components/virtualized-list/list-template.js.map +1 -1
  76. package/build/angular/components/virtualized-list/nested-scope.d.ts +6 -0
  77. package/build/angular/components/virtualized-list/nested-scope.js +17 -0
  78. package/build/angular/components/virtualized-list/nested-scope.js.map +1 -0
  79. package/build/angular/components/virtualized-section-list/directives.d.ts +21 -9
  80. package/build/angular/components/virtualized-section-list/directives.js +8 -28
  81. package/build/angular/components/virtualized-section-list/directives.js.map +1 -1
  82. package/build/angular/components/virtualized-section-list/index.d.ts +39 -60
  83. package/build/angular/components/virtualized-section-list/index.js +67 -33
  84. package/build/angular/components/virtualized-section-list/index.js.map +1 -1
  85. package/build/angular/components/virtualized-section-list/section-cell.d.ts +29 -0
  86. package/build/angular/components/virtualized-section-list/section-cell.js +82 -0
  87. package/build/angular/components/virtualized-section-list/section-cell.js.map +1 -0
  88. package/build/angular/components/virtualized-section-list/section-list-props.d.ts +56 -0
  89. package/build/angular/components/virtualized-section-list/section-list-props.js +3 -0
  90. package/build/angular/components/virtualized-section-list/section-list-props.js.map +1 -0
  91. package/build/angular/components/virtualized-section-list/section-list-template.d.ts +1 -1
  92. package/build/angular/components/virtualized-section-list/section-list-template.js +34 -26
  93. package/build/angular/components/virtualized-section-list/section-list-template.js.map +1 -1
  94. package/build/angular/components.d.ts +8 -3
  95. package/build/angular/components.js +2 -1
  96. package/build/angular/components.js.map +1 -1
  97. package/build/angular/descriptor-to-angular/descriptor-host.d.ts +8 -0
  98. package/build/angular/descriptor-to-angular/descriptor-host.js +38 -0
  99. package/build/angular/descriptor-to-angular/descriptor-host.js.map +1 -0
  100. package/build/angular/descriptor-to-angular/index.d.ts +1 -0
  101. package/build/angular/descriptor-to-angular/index.js +4 -0
  102. package/build/angular/descriptor-to-angular/index.js.map +1 -1
  103. package/build/angular/element-base.d.ts +169 -0
  104. package/build/angular/element-base.js +304 -0
  105. package/build/angular/element-base.js.map +1 -0
  106. package/build/angular/element-props.d.ts +7 -7
  107. package/build/angular/element-text-input-native.d.ts +27 -0
  108. package/build/angular/element-text-input-native.js +52 -0
  109. package/build/angular/element-text-input-native.js.map +1 -0
  110. package/build/angular/elements-controls.d.ts +171 -0
  111. package/build/angular/elements-controls.js +394 -0
  112. package/build/angular/elements-controls.js.map +1 -0
  113. package/build/angular/elements-layout.d.ts +139 -0
  114. package/build/angular/elements-layout.js +276 -0
  115. package/build/angular/elements-layout.js.map +1 -0
  116. package/build/angular/elements-press.d.ts +103 -0
  117. package/build/angular/elements-press.js +239 -0
  118. package/build/angular/elements-press.js.map +1 -0
  119. package/build/angular/elements.d.ts +6 -516
  120. package/build/angular/elements.js +9 -1091
  121. package/build/angular/elements.js.map +1 -1
  122. package/build/angular/host-instance/index.d.ts +2 -0
  123. package/build/angular/host-instance/index.js +4 -4
  124. package/build/angular/host-instance/index.js.map +1 -1
  125. package/build/angular/index.d.ts +17 -9
  126. package/build/angular/index.js +24 -27
  127. package/build/angular/index.js.map +1 -1
  128. package/build/angular/modules/animated/create-animated-component.d.ts +1 -1
  129. package/build/angular/modules/animated/create-animated-component.js +1 -1
  130. package/build/angular/modules/animated/create-animated-component.js.map +1 -1
  131. package/build/angular/modules/animated/index.d.ts +54 -41
  132. package/build/angular/modules/animated/index.js +2 -26
  133. package/build/angular/modules/animated/index.js.map +1 -1
  134. package/build/angular/modules/app-registry/index.d.ts +3 -3
  135. package/build/angular/modules/app-registry/index.js +2 -2
  136. package/build/angular/modules/app-registry/index.js.map +1 -1
  137. package/build/angular/modules/status-bar/index.d.ts +9 -5
  138. package/build/angular/modules/status-bar/index.js +21 -10
  139. package/build/angular/modules/status-bar/index.js.map +1 -1
  140. package/build/angular/native-view-base.d.ts +10 -2
  141. package/build/angular/native-view-base.js +23 -2
  142. package/build/angular/native-view-base.js.map +1 -1
  143. package/build/angular/primitives/index.d.ts +4 -0
  144. package/build/angular/primitives/index.js +12 -0
  145. package/build/angular/primitives/index.js.map +1 -1
  146. package/build/angular/services/color-scheme.service.d.ts +1 -1
  147. package/build/angular/services/index.d.ts +1 -0
  148. package/build/angular/services/index.js +1 -0
  149. package/build/angular/services/index.js.map +1 -1
  150. package/build/angular/services/inject-event.d.ts +6 -0
  151. package/build/angular/services/inject-event.js +24 -0
  152. package/build/angular/services/inject-event.js.map +1 -0
  153. package/package.json +6 -6
  154. package/src/accessibility-inputs.ts +3 -0
  155. package/src/callback-host.ts +56 -8
  156. package/src/components/checkbox-props.ts +12 -0
  157. package/src/components/flat-list/flat-list-handle.ts +64 -0
  158. package/src/components/flat-list/flat-list-template.ts +16 -0
  159. package/src/components/flat-list/index.ts +6 -48
  160. package/src/components/image-inputs.ts +94 -0
  161. package/src/components/image-props-resolve.ts +172 -0
  162. package/src/components/image-shared.ts +26 -291
  163. package/src/components/input-accessory-view-props.ts +12 -8
  164. package/src/components/keyboard-avoiding-view/index.ts +39 -79
  165. package/src/components/layout-conformance-props.ts +8 -0
  166. package/src/components/modal/index.ts +42 -20
  167. package/src/components/refresh-control-props.ts +29 -25
  168. package/src/components/scroll-view-props.ts +84 -76
  169. package/src/components/section-list/index.ts +34 -37
  170. package/src/components/touchable-props.ts +6 -2
  171. package/src/components/virtualized-list/cell-renderer-context.ts +36 -0
  172. package/src/components/virtualized-list/directives.ts +84 -8
  173. package/src/components/virtualized-list/index.ts +118 -85
  174. package/src/components/virtualized-list/list-bags.ts +38 -19
  175. package/src/components/virtualized-list/list-effects.ts +20 -32
  176. package/src/components/virtualized-list/list-handle.ts +17 -4
  177. package/src/components/virtualized-list/list-inputs.ts +47 -0
  178. package/src/components/virtualized-list/list-props.ts +57 -50
  179. package/src/components/virtualized-list/list-rows.ts +66 -0
  180. package/src/components/virtualized-list/list-styles.ts +30 -1
  181. package/src/components/virtualized-list/list-template.ts +159 -73
  182. package/src/components/virtualized-list/nested-scope.ts +22 -0
  183. package/src/components/virtualized-section-list/directives.ts +41 -40
  184. package/src/components/virtualized-section-list/index.ts +114 -118
  185. package/src/components/virtualized-section-list/section-cell.ts +109 -0
  186. package/src/components/virtualized-section-list/section-list-props.ts +79 -0
  187. package/src/components/virtualized-section-list/section-list-template.ts +34 -26
  188. package/src/components.ts +9 -0
  189. package/src/descriptor-to-angular/descriptor-host.ts +27 -0
  190. package/src/descriptor-to-angular/index.ts +5 -0
  191. package/src/element-base.ts +289 -0
  192. package/src/element-props.ts +35 -33
  193. package/src/element-text-input-native.ts +31 -0
  194. package/src/elements-controls.ts +290 -0
  195. package/src/elements-layout.ts +168 -0
  196. package/src/elements-press.ts +153 -0
  197. package/src/elements.ts +76 -788
  198. package/src/host-instance/index.ts +4 -4
  199. package/src/index.ts +78 -23
  200. package/src/modules/animated/index.ts +2 -47
  201. package/src/modules/app-registry/index.ts +3 -1
  202. package/src/modules/status-bar/index.ts +24 -11
  203. package/src/native-view-base.ts +37 -2
  204. package/src/primitives/index.ts +7 -0
  205. package/src/services/color-scheme.service.ts +1 -1
  206. package/src/services/index.ts +1 -0
  207. package/src/services/inject-event.ts +52 -0
@@ -0,0 +1,56 @@
1
+ import type { IAccessibilityProps, IAriaProps, IInnerViewRef } from '@symbiote-native/components';
2
+ import type { IStyleProp, ISymbioteEvent, IViewStyle } from '@symbiote-native/engine';
3
+ import type { ISection } from './directives';
4
+ export type IItemLayout = {
5
+ length: number;
6
+ offset: number;
7
+ index: number;
8
+ };
9
+ export type IVirtualizedSectionListProps<ItemT> = IAccessibilityProps & IAriaProps & {
10
+ sections: ReadonlyArray<ISection<ItemT>>;
11
+ keyExtractor?: (item: ItemT, index: number) => string;
12
+ getItemLayout?: (data: ReadonlyArray<ISection<ItemT>> | null, index: number) => IItemLayout;
13
+ stickySectionHeadersEnabled?: boolean;
14
+ extraData?: unknown;
15
+ onEndReached?: (info: {
16
+ distanceFromEnd: number;
17
+ }) => void;
18
+ onEndReachedThreshold?: number;
19
+ onStartReached?: (info: {
20
+ distanceFromStart: number;
21
+ }) => void;
22
+ onStartReachedThreshold?: number;
23
+ onRefresh?: () => void;
24
+ refreshing?: boolean | null;
25
+ progressViewOffset?: number;
26
+ initialNumToRender?: number;
27
+ initialScrollIndex?: number;
28
+ maxToRenderPerBatch?: number;
29
+ updateCellsBatchingPeriod?: number;
30
+ windowSize?: number;
31
+ disableVirtualization?: boolean;
32
+ inverted?: boolean;
33
+ horizontal?: boolean;
34
+ maintainVisibleContentPosition?: {
35
+ minIndexForVisible: number;
36
+ autoscrollToTopThreshold?: number;
37
+ };
38
+ onScroll?: (event: ISymbioteEvent) => void;
39
+ onScrollBeginDrag?: (event: ISymbioteEvent) => void;
40
+ onScrollEndDrag?: (event: ISymbioteEvent) => void;
41
+ onMomentumScrollBegin?: (event: ISymbioteEvent) => void;
42
+ onMomentumScrollEnd?: (event: ISymbioteEvent) => void;
43
+ onContentSizeChange?: (width: number, height: number) => void;
44
+ scrollEventThrottle?: number;
45
+ keyboardShouldPersistTaps?: boolean | 'always' | 'never' | 'handled';
46
+ keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';
47
+ removeClippedSubviews?: boolean;
48
+ nestedScrollEnabled?: boolean;
49
+ stickyHeaderHiddenOnScroll?: boolean;
50
+ innerViewRef?: IInnerViewRef;
51
+ style?: IStyleProp<IViewStyle>;
52
+ contentContainerStyle?: IStyleProp<IViewStyle>;
53
+ listHeaderComponentStyle?: IStyleProp<IViewStyle>;
54
+ listFooterComponentStyle?: IStyleProp<IViewStyle>;
55
+ };
56
+ export type IVirtualizedSectionListInputs<ItemT> = Omit<IVirtualizedSectionListProps<ItemT>, 'onEndReached' | 'onStartReached' | 'onRefresh' | 'onAccessibilityAction' | 'onAccessibilityTap' | 'onMagicTap' | 'onAccessibilityEscape'>;
@@ -0,0 +1,3 @@
1
+ // The public prop surface of the Angular VirtualizedSectionList, apart from the class
2
+ export {};
3
+ //# sourceMappingURL=section-list-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-list-props.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/section-list-props.ts"],"names":[],"mappings":"AAAA,sFAAsF"}
@@ -1 +1 @@
1
- export declare const VIRTUALIZED_SECTION_LIST_TEMPLATE = "\n <VirtualizedList\n [data]=\"flatEntries\"\n [getItem]=\"getEntry\"\n [getItemCount]=\"getEntryCount\"\n [keyExtractor]=\"entryKeyExtractor\"\n [getItemLayout]=\"entryItemLayout\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\n [extraData]=\"extraData\"\n [inverted]=\"inverted\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n [refreshRequested]=\"refreshRequested ?? refresh.observed\"\n (refresh)=\"resolvedOnRefresh?.()\"\n (endReached)=\"resolvedOnEndReached?.($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"resolvedOnStartReached?.($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [maintainVisibleContentPosition]=\"maintainVisibleContentPosition\"\n [onScroll]=\"onScroll\"\n [onScrollBeginDrag]=\"onScrollBeginDrag\"\n [onScrollEndDrag]=\"onScrollEndDrag\"\n [onMomentumScrollBegin]=\"onMomentumScrollBegin\"\n [onMomentumScrollEnd]=\"onMomentumScrollEnd\"\n [scrollEventThrottle]=\"scrollEventThrottle\"\n [keyboardShouldPersistTaps]=\"keyboardShouldPersistTaps\"\n [keyboardDismissMode]=\"keyboardDismissMode\"\n [removeClippedSubviews]=\"removeClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n \n [accessible]=\"accessible\"\n [accessibilityLabel]=\"accessibilityLabel\"\n [accessibilityHint]=\"accessibilityHint\"\n [accessibilityRole]=\"accessibilityRole\"\n [accessibilityState]=\"accessibilityState\"\n [accessibilityValue]=\"accessibilityValue\"\n [accessibilityActions]=\"accessibilityActions\"\n [accessibilityLabelledBy]=\"accessibilityLabelledBy\"\n [importantForAccessibility]=\"importantForAccessibility\"\n [accessibilityLiveRegion]=\"accessibilityLiveRegion\"\n [screenReaderFocusable]=\"screenReaderFocusable\"\n [accessibilityViewIsModal]=\"accessibilityViewIsModal\"\n [accessibilityElementsHidden]=\"accessibilityElementsHidden\"\n [accessibilityIgnoresInvertColors]=\"accessibilityIgnoresInvertColors\"\n [accessibilityLanguage]=\"accessibilityLanguage\"\n [accessibilityRespondsToUserInteraction]=\"accessibilityRespondsToUserInteraction\"\n [accessibilityShowsLargeContentViewer]=\"accessibilityShowsLargeContentViewer\"\n [accessibilityLargeContentTitle]=\"accessibilityLargeContentTitle\"\n (accessibilityAction)=\"accessibilityAction.emit($event)\"\n (accessibilityTap)=\"accessibilityTap.emit($event)\"\n (magicTap)=\"magicTap.emit($event)\"\n (accessibilityEscape)=\"accessibilityEscape.emit($event)\"\n [role]=\"role\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledBy\"\n [aria-live]=\"ariaLive\"\n [aria-hidden]=\"ariaHidden\"\n [aria-busy]=\"ariaBusy\"\n [aria-checked]=\"ariaChecked\"\n [aria-disabled]=\"ariaDisabled\"\n [aria-expanded]=\"ariaExpanded\"\n [aria-selected]=\"ariaSelected\"\n [aria-modal]=\"ariaModal\"\n [aria-valuemax]=\"ariaValueMax\"\n [aria-valuemin]=\"ariaValueMin\"\n [aria-valuenow]=\"ariaValueNow\"\n [aria-valuetext]=\"ariaValueText\"\n\n >\n <!-- The single synthesized cell template: dispatch per flattened entry tag -->\n <ng-template vListItem let-entry let-separators=\"separators\">\n @switch (entryKind(entry)) {\n @case ('header') {\n <ng-container\n [vListOutlet]=\"sectionHeaderDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('footer') {\n <ng-container\n [vListOutlet]=\"sectionFooterDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('section-separator') {\n <ng-container\n [vListOutlet]=\"sectionSeparatorDir?.templateRef\"\n ></ng-container>\n }\n @case ('item') {\n <ng-container\n [vListOutlet]=\"sectionItemDir?.templateRef\"\n [vListOutletContext]=\"itemContextOf(entry, separators)\"\n ></ng-container>\n }\n }\n </ng-template>\n\n <!-- List-level slots: forward the app's directives to the inner list -->\n @if (listHeaderDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"listHeaderDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listFooterDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"listFooterDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listEmptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"listEmptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n <!-- Item separator: unwrap each flattened entry back to its item -->\n @if (itemSeparatorDir !== undefined) {\n <ng-template\n vListSeparator\n let-highlighted\n let-leadingItem=\"leadingItem\"\n let-trailingItem=\"trailingItem\"\n >\n <ng-container\n [vListOutlet]=\"itemSeparatorDir.templateRef\"\n [vListOutletContext]=\"\n itemSeparatorContextOf(highlighted, leadingItem, trailingItem)\n \"\n ></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n";
1
+ export declare const VIRTUALIZED_SECTION_LIST_TEMPLATE = "\n <VirtualizedList\n [data]=\"flatEntries\"\n [getItem]=\"getEntry\"\n [getItemCount]=\"getEntryCount\"\n [keyExtractor]=\"entryKeyExtractor\"\n [getItemLayout]=\"entryItemLayout\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\n [extraData]=\"extraData\"\n [inverted]=\"inverted\"\n [horizontal]=\"horizontal\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n [refreshRequested]=\"refreshRequested ?? refresh.observed\"\n (refresh)=\"resolvedOnRefresh?.()\"\n (endReached)=\"resolvedOnEndReached?.($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"resolvedOnStartReached?.($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [disableVirtualization]=\"disableVirtualization\"\n [maintainVisibleContentPosition]=\"maintainVisibleContentPosition\"\n [onScroll]=\"onScroll\"\n [onScrollBeginDrag]=\"onScrollBeginDrag\"\n [onScrollEndDrag]=\"onScrollEndDrag\"\n [onMomentumScrollBegin]=\"onMomentumScrollBegin\"\n [onMomentumScrollEnd]=\"onMomentumScrollEnd\"\n [onContentSizeChange]=\"onContentSizeChange\"\n [scrollEventThrottle]=\"scrollEventThrottle\"\n [keyboardShouldPersistTaps]=\"keyboardShouldPersistTaps\"\n [keyboardDismissMode]=\"keyboardDismissMode\"\n [removeClippedSubviews]=\"removeClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [stickyHeaderHiddenOnScroll]=\"stickyHeaderHiddenOnScroll\"\n [innerViewRef]=\"innerViewRef\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\n [listHeaderComponentStyle]=\"listHeaderComponentStyle\"\n [listFooterComponentStyle]=\"listFooterComponentStyle\"\n [cellRendererTemplate]=\"cellRendererTpl\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n \n [accessible]=\"accessible\"\n [accessibilityLabel]=\"accessibilityLabel\"\n [accessibilityHint]=\"accessibilityHint\"\n [accessibilityRole]=\"accessibilityRole\"\n [accessibilityState]=\"accessibilityState\"\n [accessibilityValue]=\"accessibilityValue\"\n [accessibilityActions]=\"accessibilityActions\"\n [accessibilityLabelledBy]=\"accessibilityLabelledBy\"\n [importantForAccessibility]=\"importantForAccessibility\"\n [accessibilityLiveRegion]=\"accessibilityLiveRegion\"\n [screenReaderFocusable]=\"screenReaderFocusable\"\n [accessibilityViewIsModal]=\"accessibilityViewIsModal\"\n [accessibilityElementsHidden]=\"accessibilityElementsHidden\"\n [accessibilityIgnoresInvertColors]=\"accessibilityIgnoresInvertColors\"\n [accessibilityLanguage]=\"accessibilityLanguage\"\n [accessibilityRespondsToUserInteraction]=\"accessibilityRespondsToUserInteraction\"\n [accessibilityShowsLargeContentViewer]=\"accessibilityShowsLargeContentViewer\"\n [accessibilityLargeContentTitle]=\"accessibilityLargeContentTitle\"\n (accessibilityAction)=\"accessibilityAction.emit($event)\"\n (accessibilityTap)=\"accessibilityTap.emit($event)\"\n (magicTap)=\"magicTap.emit($event)\"\n (accessibilityEscape)=\"accessibilityEscape.emit($event)\"\n [role]=\"role\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledBy\"\n [aria-live]=\"ariaLive\"\n [aria-hidden]=\"ariaHidden\"\n [aria-busy]=\"ariaBusy\"\n [aria-checked]=\"ariaChecked\"\n [aria-disabled]=\"ariaDisabled\"\n [aria-expanded]=\"ariaExpanded\"\n [aria-selected]=\"ariaSelected\"\n [aria-modal]=\"ariaModal\"\n [aria-valuemax]=\"ariaValueMax\"\n [aria-valuemin]=\"ariaValueMin\"\n [aria-valuenow]=\"ariaValueNow\"\n [aria-valuetext]=\"ariaValueText\"\n\n >\n <!-- The single synthesized cell template: dispatch per flattened entry tag -->\n <ng-template vListItem let-entry let-index=\"index\">\n @switch (entryKind(entry)) {\n @case ('header') {\n <ng-container\n [vListOutlet]=\"sectionHeaderDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('footer') {\n <ng-container\n [vListOutlet]=\"sectionFooterDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('item') {\n @let plan = cellPlanOf(entry, index);\n @if (plan !== undefined) {\n <ng-container\n vSectionCell\n #cell=\"vSectionCell\"\n [board]=\"board\"\n [cellKey]=\"plan.cellKey\"\n [prevCellKey]=\"plan.prevCellKey\"\n [hasLeading]=\"plan.hasLeading\"\n [hasTrailing]=\"plan.hasTrailing\"\n >\n <ng-container\n [vListOutlet]=\"plan.first.template\"\n [vListOutletContext]=\"cell.contextOf(plan.first)\"\n ></ng-container>\n <ng-container\n [vListOutlet]=\"plan.itemTemplate\"\n [vListOutletContext]=\"itemContextOf(entry, cell.separators)\"\n ></ng-container>\n <ng-container\n [vListOutlet]=\"plan.second.template\"\n [vListOutletContext]=\"cell.contextOf(plan.second)\"\n ></ng-container>\n </ng-container>\n }\n }\n }\n </ng-template>\n\n <!-- List-level slots: forward the app's directives to the inner list -->\n @if (listHeaderDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"listHeaderDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listFooterDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"listFooterDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listEmptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"listEmptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n";
@@ -11,6 +11,7 @@ export const VIRTUALIZED_SECTION_LIST_TEMPLATE = `
11
11
  [stickyHeaderIndices]="stickyHeaderIndices"
12
12
  [extraData]="extraData"
13
13
  [inverted]="inverted"
14
+ [horizontal]="horizontal"
14
15
  [refreshing]="refreshing"
15
16
  [progressViewOffset]="progressViewOffset"
16
17
  [refreshRequested]="refreshRequested ?? refresh.observed"
@@ -24,25 +25,32 @@ export const VIRTUALIZED_SECTION_LIST_TEMPLATE = `
24
25
  [maxToRenderPerBatch]="maxToRenderPerBatch"
25
26
  [updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
26
27
  [windowSize]="windowSize"
28
+ [disableVirtualization]="disableVirtualization"
27
29
  [maintainVisibleContentPosition]="maintainVisibleContentPosition"
28
30
  [onScroll]="onScroll"
29
31
  [onScrollBeginDrag]="onScrollBeginDrag"
30
32
  [onScrollEndDrag]="onScrollEndDrag"
31
33
  [onMomentumScrollBegin]="onMomentumScrollBegin"
32
34
  [onMomentumScrollEnd]="onMomentumScrollEnd"
35
+ [onContentSizeChange]="onContentSizeChange"
33
36
  [scrollEventThrottle]="scrollEventThrottle"
34
37
  [keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
35
38
  [keyboardDismissMode]="keyboardDismissMode"
36
39
  [removeClippedSubviews]="removeClippedSubviews"
37
40
  [nestedScrollEnabled]="nestedScrollEnabled"
41
+ [stickyHeaderHiddenOnScroll]="stickyHeaderHiddenOnScroll"
42
+ [innerViewRef]="innerViewRef"
38
43
  [style]="resolvedStyle"
39
44
  [contentContainerStyle]="contentContainerStyle"
45
+ [listHeaderComponentStyle]="listHeaderComponentStyle"
46
+ [listFooterComponentStyle]="listFooterComponentStyle"
47
+ [cellRendererTemplate]="cellRendererTpl"
40
48
  [testID]="testID"
41
49
  [nativeID]="nativeID"
42
50
  ${LIST_ACCESSIBILITY_FORWARD}
43
51
  >
44
52
  <!-- The single synthesized cell template: dispatch per flattened entry tag -->
45
- <ng-template vListItem let-entry let-separators="separators">
53
+ <ng-template vListItem let-entry let-index="index">
46
54
  @switch (entryKind(entry)) {
47
55
  @case ('header') {
48
56
  <ng-container
@@ -56,16 +64,32 @@ export const VIRTUALIZED_SECTION_LIST_TEMPLATE = `
56
64
  [vListOutletContext]="sectionContextOf(entry)"
57
65
  ></ng-container>
58
66
  }
59
- @case ('section-separator') {
60
- <ng-container
61
- [vListOutlet]="sectionSeparatorDir?.templateRef"
62
- ></ng-container>
63
- }
64
67
  @case ('item') {
65
- <ng-container
66
- [vListOutlet]="sectionItemDir?.templateRef"
67
- [vListOutletContext]="itemContextOf(entry, separators)"
68
- ></ng-container>
68
+ @let plan = cellPlanOf(entry, index);
69
+ @if (plan !== undefined) {
70
+ <ng-container
71
+ vSectionCell
72
+ #cell="vSectionCell"
73
+ [board]="board"
74
+ [cellKey]="plan.cellKey"
75
+ [prevCellKey]="plan.prevCellKey"
76
+ [hasLeading]="plan.hasLeading"
77
+ [hasTrailing]="plan.hasTrailing"
78
+ >
79
+ <ng-container
80
+ [vListOutlet]="plan.first.template"
81
+ [vListOutletContext]="cell.contextOf(plan.first)"
82
+ ></ng-container>
83
+ <ng-container
84
+ [vListOutlet]="plan.itemTemplate"
85
+ [vListOutletContext]="itemContextOf(entry, cell.separators)"
86
+ ></ng-container>
87
+ <ng-container
88
+ [vListOutlet]="plan.second.template"
89
+ [vListOutletContext]="cell.contextOf(plan.second)"
90
+ ></ng-container>
91
+ </ng-container>
92
+ }
69
93
  }
70
94
  }
71
95
  </ng-template>
@@ -86,22 +110,6 @@ export const VIRTUALIZED_SECTION_LIST_TEMPLATE = `
86
110
  <ng-container [vListOutlet]="listEmptyDir.templateRef"></ng-container>
87
111
  </ng-template>
88
112
  }
89
- <!-- Item separator: unwrap each flattened entry back to its item -->
90
- @if (itemSeparatorDir !== undefined) {
91
- <ng-template
92
- vListSeparator
93
- let-highlighted
94
- let-leadingItem="leadingItem"
95
- let-trailingItem="trailingItem"
96
- >
97
- <ng-container
98
- [vListOutlet]="itemSeparatorDir.templateRef"
99
- [vListOutletContext]="
100
- itemSeparatorContextOf(highlighted, leadingItem, trailingItem)
101
- "
102
- ></ng-container>
103
- </ng-template>
104
- }
105
113
  </VirtualizedList>
106
114
  `;
107
115
  //# sourceMappingURL=section-list-template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"section-list-template.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/section-list-template.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,6EAA6E;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEnF,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsC3C,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgE/B,CAAC"}
1
+ {"version":3,"file":"section-list-template.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/section-list-template.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,6EAA6E;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEnF,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA8C3C,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgE/B,CAAC"}
@@ -8,6 +8,8 @@ export type { IAngularModalProps, IModalAnimationType, IModalOrientation, IModal
8
8
  export type { IImageProps, IImageSource, IImageSourceProp, IResizeMode, IImageSize, IImageCacheStatus, } from '@symbiote-native/components';
9
9
  export type { IAngularPressableProps, IAngularPressableInputs, } from './components/pressable-props';
10
10
  export type { IAngularSafeAreaViewProps } from './components/safe-area-view-props';
11
+ export type { IAngularLayoutConformanceProps } from './components/layout-conformance-props';
12
+ export type { ILayoutConformanceMode } from '@symbiote-native/components';
11
13
  export type { ISwitchProps, ISwitchTrackColor, ISwitchChangeEvent, } from '@symbiote-native/components';
12
14
  export type { IAngularImageBackgroundProps } from './components/image-background-props';
13
15
  export { KeyboardAvoidingView } from './components/keyboard-avoiding-view';
@@ -22,12 +24,15 @@ export type { IAngularTouchableHighlightProps, IAngularTouchableOpacityProps, }
22
24
  export type { IAngularTouchableWithoutFeedbackProps } from './components/touchable-without-feedback/touchable-without-feedback-props';
23
25
  export type { IAngularScrollViewProps, IScrollViewHandle, } from './components/scroll-view-props';
24
26
  export type { IButtonProps } from './components/button-props';
25
- export { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from './components/virtualized-list';
26
- export type { ICellLayout, ISeparatorProps, ISeparators, IViewabilityConfig, IViewabilityConfigCallbackPair, IViewableItemsChangedInfo, IViewToken, IVirtualizedListHandle, IVirtualizedListProps, IVListItemContext, IVListSeparatorContext, } from './components/virtualized-list';
27
+ export type { ICheckboxProps } from './components/checkbox-props';
28
+ export { VirtualizedList, VListCellDirective, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListOutletDirective, VListSeparatorDirective, } from './components/virtualized-list';
29
+ export { injectVirtualizedListScope } from './components/virtualized-list/nested-scope';
30
+ export type { IListScope } from '@symbiote-native/components';
31
+ export type { ICellLayout, ISeparatorProps, ISeparators, IViewabilityConfig, IViewabilityConfigCallbackPair, IViewableItemsChangedInfo, IViewToken, IVirtualizedListHandle, IVirtualizedListProps, IVListCellContext, IVListItemContext, IVListSeparatorContext, } from './components/virtualized-list';
27
32
  export { FlatList } from './components/flat-list';
28
33
  export type { IFlatListHandle, IFlatListProps } from './components/flat-list';
29
34
  export { VirtualizedSectionList, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components/virtualized-section-list';
30
- export type { ISection, IVirtualizedSectionListHandle, IVirtualizedSectionListProps, IVSectionContext, IVSectionItemContext, } from './components/virtualized-section-list';
35
+ export type { ISection, IVirtualizedSectionListHandle, IVirtualizedSectionListProps, IVSectionContext, IVSectionItemContext, IVSectionSeparatorContext, } from './components/virtualized-section-list';
31
36
  export { SectionList } from './components/section-list';
32
37
  export type { ISectionListHandle, ISectionListProps, } from './components/section-list';
33
38
  export { ViewHost, ViewHost as View, TextHost, TextHost as Text, ImageHost, ScrollViewHost, ScrollContentView, HorizontalScrollView, HorizontalScrollContentView, TextInputHost, MultilineTextInputHost, SwitchHost, ActivityIndicatorHost, SafeAreaViewHost, ModalHost, RefreshControlHost, InputAccessoryViewHost, SymbioteHostPropsDirective, SymbioteStyleInputDirective, anchorHostStyle, stableAnchorStyle, } from './primitives/index';
@@ -16,7 +16,8 @@ export { KeyboardAvoidingView } from './components/keyboard-avoiding-view';
16
16
  // `.SelectableBackground(…)` are unchanged; an app's `imports: [TouchableNativeFeedback]` becomes
17
17
  // `imports: [TouchableNativeFeedbackElement]`.
18
18
  export { TouchableNativeFeedback } from '@symbiote-native/components';
19
- export { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from './components/virtualized-list';
19
+ export { VirtualizedList, VListCellDirective, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListOutletDirective, VListSeparatorDirective, } from './components/virtualized-list';
20
+ export { injectVirtualizedListScope } from './components/virtualized-list/nested-scope';
20
21
  export { FlatList } from './components/flat-list';
21
22
  export { VirtualizedSectionList, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components/virtualized-section-list';
22
23
  export { SectionList } from './components/section-list';
@@ -1 +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;AAMlF,gGAAgG;AAChG,gGAAgG;AAChG,sFAAsF;AACtF,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA0C3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAuB3E,kGAAkG;AAClG,kGAAkG;AAClG,8EAA8E;AAC9E,kGAAkG;AAClG,+CAA+C;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAkCtE,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;AAMxD,+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,+FAA+F;AAC/F,8FAA8F;AAC9F,iGAAiG;AACjG,MAAM;AACN,2BAA2B;AAC3B,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"}
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;AAMlF,gGAAgG;AAChG,gGAAgG;AAChG,sFAAsF;AACtF,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA4C3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAuB3E,kGAAkG;AAClG,kGAAkG;AAClG,8EAA8E;AAC9E,kGAAkG;AAClG,+CAA+C;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAmCtE,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAgBxF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,uCAAuC,CAAC;AAS/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,+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,+FAA+F;AAC/F,8FAA8F;AAC9F,iGAAiG;AACjG,MAAM;AACN,2BAA2B;AAC3B,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,8 @@
1
+ import type { IDescriptor } from '@symbiote-native/components';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DescriptorHost {
4
+ node: IDescriptor;
5
+ leafOf(descriptor: IDescriptor): IDescriptor | undefined;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<DescriptorHost, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<DescriptorHost, "symbiote-descriptor-host", never, { "node": { "alias": "node"; "required": true; }; }, {}, never, ["*"], true, never>;
8
+ }
@@ -0,0 +1,38 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { SymbioteHostPropsDirective, ViewHost } from '../primitives';
3
+ import { DescriptorOutlet } from './index';
4
+ import * as i0 from "@angular/core";
5
+ // Angular cannot project content into a node a Renderer2 loop built, so the root is a template
6
+ // `<view>` that takes the descriptor's props, and only the native leaf goes through the outlet
7
+ export class DescriptorHost {
8
+ // A native wrapper descriptor carries one own child at most, its absolute-fill native leaf
9
+ leafOf(descriptor) {
10
+ return descriptor.children.find(child => typeof child !== 'string');
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: DescriptorHost, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: DescriptorHost, isStandalone: true, selector: "symbiote-descriptor-host", inputs: { node: "node" }, ngImport: i0, template: `<view [symbioteHostProps]="node.props">
14
+ @if (leafOf(node); as leaf) {
15
+ <symbiote-descriptor-outlet [node]="leaf" />
16
+ }
17
+ <ng-content />
18
+ </view>`, isInline: true, dependencies: [{ kind: "component", type: DescriptorOutlet, selector: "symbiote-descriptor-outlet", inputs: ["node"] }, { kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }, { kind: "component", type: ViewHost, selector: "view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: DescriptorHost, decorators: [{
21
+ type: Component,
22
+ args: [{
23
+ selector: 'symbiote-descriptor-host',
24
+ standalone: true,
25
+ imports: [DescriptorOutlet, SymbioteHostPropsDirective, ViewHost],
26
+ changeDetection: ChangeDetectionStrategy.OnPush,
27
+ template: `<view [symbioteHostProps]="node.props">
28
+ @if (leafOf(node); as leaf) {
29
+ <symbiote-descriptor-outlet [node]="leaf" />
30
+ }
31
+ <ng-content />
32
+ </view>`,
33
+ }]
34
+ }], propDecorators: { node: [{
35
+ type: Input,
36
+ args: [{ required: true }]
37
+ }] } });
38
+ //# sourceMappingURL=descriptor-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptor-host.js","sourceRoot":"","sources":["../../../src/descriptor-to-angular/descriptor-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;;AAE3C,+FAA+F;AAC/F,+FAA+F;AAa/F,MAAM,OAAO,cAAc;IAGzB,2FAA2F;IAC3F,MAAM,CAAC,UAAuB;QAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IACtE,CAAC;8GANU,cAAc;kGAAd,cAAc,8GAPf;;;;;UAKF,4DAPE,gBAAgB,yFAAE,0BAA0B,2HAAE,QAAQ;;2FASrD,cAAc;kBAZ1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,QAAQ,CAAC;oBACjE,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE;;;;;UAKF;iBACT;;sBAEE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE"}
@@ -6,6 +6,7 @@ export declare class DescriptorOutlet implements OnChanges, OnDestroy {
6
6
  private readonly renderer;
7
7
  private readonly hostNode;
8
8
  private rendered;
9
+ get rootNode(): unknown;
9
10
  ngOnChanges(changes: SimpleChanges): void;
10
11
  ngOnDestroy(): void;
11
12
  private patchRoot;
@@ -10,6 +10,10 @@ export class DescriptorOutlet {
10
10
  this.renderer = inject(Renderer2);
11
11
  this.hostNode = inject(ElementRef).nativeElement;
12
12
  }
13
+ // The host node of the root element, for a component that calls a function of its native view
14
+ get rootNode() {
15
+ return this.rendered?.node ?? null;
16
+ }
13
17
  ngOnChanges(changes) {
14
18
  if (!('node' in changes) || this.node === undefined)
15
19
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/descriptor-to-angular/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/descriptor-to-angular/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import type { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
3
+ import type { IElementProps } from './element-props';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * The shared half of every element directive: the prop surface all tags accept, and the ONE
7
+ * generic forward that puts a claimed binding back on the engine node.
8
+ *
9
+ * The forward is the deciding fact of this whole route. A binding claimed by a directive input
10
+ * never reaches `Renderer2.setProperty` on its own — Angular writes it to the directive instance
11
+ * — so without this loop a bare tag commits nothing at all. It stays generic on purpose: per-prop
12
+ * forwarding code is a component wrapper by another name, which is what this migration removes.
13
+ * `renderer.setProperty` lands in the adapter's own renderer, which routes the value through the
14
+ * engine's `routeProp` and applies the `id` -> `nativeID` alias.
15
+ */
16
+ export declare abstract class SymbioteElement implements OnChanges {
17
+ private readonly renderer;
18
+ protected readonly host: ElementRef<any>;
19
+ testID?: IElementProps['testID'];
20
+ nativeID?: IElementProps['nativeID'];
21
+ id?: IElementProps['id'];
22
+ accessible?: IElementProps['accessible'];
23
+ accessibilityLabel?: IElementProps['accessibilityLabel'];
24
+ accessibilityHint?: IElementProps['accessibilityHint'];
25
+ accessibilityRole?: IElementProps['accessibilityRole'];
26
+ accessibilityState?: IElementProps['accessibilityState'];
27
+ accessibilityValue?: IElementProps['accessibilityValue'];
28
+ accessibilityActions?: IElementProps['accessibilityActions'];
29
+ experimental_accessibilityOrder?: IElementProps['experimental_accessibilityOrder'];
30
+ accessibilityLabelledBy?: IElementProps['accessibilityLabelledBy'];
31
+ importantForAccessibility?: IElementProps['importantForAccessibility'];
32
+ accessibilityLiveRegion?: IElementProps['accessibilityLiveRegion'];
33
+ screenReaderFocusable?: IElementProps['screenReaderFocusable'];
34
+ accessibilityViewIsModal?: IElementProps['accessibilityViewIsModal'];
35
+ accessibilityElementsHidden?: IElementProps['accessibilityElementsHidden'];
36
+ accessibilityIgnoresInvertColors?: IElementProps['accessibilityIgnoresInvertColors'];
37
+ accessibilityLanguage?: IElementProps['accessibilityLanguage'];
38
+ accessibilityRespondsToUserInteraction?: IElementProps['accessibilityRespondsToUserInteraction'];
39
+ accessibilityShowsLargeContentViewer?: IElementProps['accessibilityShowsLargeContentViewer'];
40
+ accessibilityLargeContentTitle?: IElementProps['accessibilityLargeContentTitle'];
41
+ onAccessibilityAction?: IElementProps['onAccessibilityAction'];
42
+ onAccessibilityTap?: IElementProps['onAccessibilityTap'];
43
+ onMagicTap?: IElementProps['onMagicTap'];
44
+ onAccessibilityEscape?: IElementProps['onAccessibilityEscape'];
45
+ role?: IElementProps['role'];
46
+ 'aria-label'?: IElementProps['aria-label'];
47
+ 'aria-labelledby'?: IElementProps['aria-labelledby'];
48
+ 'aria-live'?: IElementProps['aria-live'];
49
+ 'aria-hidden'?: IElementProps['aria-hidden'];
50
+ 'aria-busy'?: IElementProps['aria-busy'];
51
+ 'aria-checked'?: IElementProps['aria-checked'];
52
+ 'aria-disabled'?: IElementProps['aria-disabled'];
53
+ 'aria-expanded'?: IElementProps['aria-expanded'];
54
+ 'aria-selected'?: IElementProps['aria-selected'];
55
+ 'aria-modal'?: IElementProps['aria-modal'];
56
+ 'aria-valuemax'?: IElementProps['aria-valuemax'];
57
+ 'aria-valuemin'?: IElementProps['aria-valuemin'];
58
+ 'aria-valuenow'?: IElementProps['aria-valuenow'];
59
+ 'aria-valuetext'?: IElementProps['aria-valuetext'];
60
+ onStartShouldSetResponder?: IElementProps['onStartShouldSetResponder'];
61
+ onStartShouldSetResponderCapture?: IElementProps['onStartShouldSetResponderCapture'];
62
+ onMoveShouldSetResponder?: IElementProps['onMoveShouldSetResponder'];
63
+ onMoveShouldSetResponderCapture?: IElementProps['onMoveShouldSetResponderCapture'];
64
+ onResponderGrant?: IElementProps['onResponderGrant'];
65
+ onResponderReject?: IElementProps['onResponderReject'];
66
+ onResponderStart?: IElementProps['onResponderStart'];
67
+ onResponderMove?: IElementProps['onResponderMove'];
68
+ onResponderEnd?: IElementProps['onResponderEnd'];
69
+ onResponderRelease?: IElementProps['onResponderRelease'];
70
+ onResponderTerminate?: IElementProps['onResponderTerminate'];
71
+ onResponderTerminationRequest?: IElementProps['onResponderTerminationRequest'];
72
+ onTouchStart?: IElementProps['onTouchStart'];
73
+ onTouchStartCapture?: IElementProps['onTouchStartCapture'];
74
+ onTouchMove?: IElementProps['onTouchMove'];
75
+ onTouchMoveCapture?: IElementProps['onTouchMoveCapture'];
76
+ onTouchEnd?: IElementProps['onTouchEnd'];
77
+ onTouchEndCapture?: IElementProps['onTouchEndCapture'];
78
+ onTouchCancel?: IElementProps['onTouchCancel'];
79
+ onTouchCancelCapture?: IElementProps['onTouchCancelCapture'];
80
+ onFocusCapture?: IElementProps['onFocusCapture'];
81
+ onBlurCapture?: IElementProps['onBlurCapture'];
82
+ onClickCapture?: IElementProps['onClickCapture'];
83
+ onKeyDown?: IElementProps['onKeyDown'];
84
+ onKeyDownCapture?: IElementProps['onKeyDownCapture'];
85
+ onKeyUp?: IElementProps['onKeyUp'];
86
+ onKeyUpCapture?: IElementProps['onKeyUpCapture'];
87
+ pointerEvents?: IElementProps['pointerEvents'];
88
+ hitSlop?: IElementProps['hitSlop'];
89
+ focusable?: IElementProps['focusable'];
90
+ collapsable?: IElementProps['collapsable'];
91
+ removeClippedSubviews?: IElementProps['removeClippedSubviews'];
92
+ renderToHardwareTextureAndroid?: IElementProps['renderToHardwareTextureAndroid'];
93
+ shouldRasterizeIOS?: IElementProps['shouldRasterizeIOS'];
94
+ needsOffscreenAlphaCompositing?: IElementProps['needsOffscreenAlphaCompositing'];
95
+ style?: IElementProps['style'];
96
+ styleProp?: IElementProps['styleProp'];
97
+ class?: string;
98
+ onPress?: IElementProps['onPress'];
99
+ onPressIn?: IElementProps['onPressIn'];
100
+ onPressOut?: IElementProps['onPressOut'];
101
+ onPressMove?: IElementProps['onPressMove'];
102
+ onLongPress?: IElementProps['onLongPress'];
103
+ onLayout?: IElementProps['onLayout'];
104
+ onFocus?: IElementProps['onFocus'];
105
+ onBlur?: IElementProps['onBlur'];
106
+ ngOnChanges(changes: SimpleChanges): void;
107
+ static ɵfac: i0.ɵɵFactoryDeclaration<SymbioteElement, never>;
108
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SymbioteElement, never, never, { "testID": { "alias": "testID"; "required": false; }; "nativeID": { "alias": "nativeID"; "required": false; }; "id": { "alias": "id"; "required": false; }; "accessible": { "alias": "accessible"; "required": false; }; "accessibilityLabel": { "alias": "accessibilityLabel"; "required": false; }; "accessibilityHint": { "alias": "accessibilityHint"; "required": false; }; "accessibilityRole": { "alias": "accessibilityRole"; "required": false; }; "accessibilityState": { "alias": "accessibilityState"; "required": false; }; "accessibilityValue": { "alias": "accessibilityValue"; "required": false; }; "accessibilityActions": { "alias": "accessibilityActions"; "required": false; }; "experimental_accessibilityOrder": { "alias": "experimental_accessibilityOrder"; "required": false; }; "accessibilityLabelledBy": { "alias": "accessibilityLabelledBy"; "required": false; }; "importantForAccessibility": { "alias": "importantForAccessibility"; "required": false; }; "accessibilityLiveRegion": { "alias": "accessibilityLiveRegion"; "required": false; }; "screenReaderFocusable": { "alias": "screenReaderFocusable"; "required": false; }; "accessibilityViewIsModal": { "alias": "accessibilityViewIsModal"; "required": false; }; "accessibilityElementsHidden": { "alias": "accessibilityElementsHidden"; "required": false; }; "accessibilityIgnoresInvertColors": { "alias": "accessibilityIgnoresInvertColors"; "required": false; }; "accessibilityLanguage": { "alias": "accessibilityLanguage"; "required": false; }; "accessibilityRespondsToUserInteraction": { "alias": "accessibilityRespondsToUserInteraction"; "required": false; }; "accessibilityShowsLargeContentViewer": { "alias": "accessibilityShowsLargeContentViewer"; "required": false; }; "accessibilityLargeContentTitle": { "alias": "accessibilityLargeContentTitle"; "required": false; }; "onAccessibilityAction": { "alias": "onAccessibilityAction"; "required": false; }; "onAccessibilityTap": { "alias": "onAccessibilityTap"; "required": false; }; "onMagicTap": { "alias": "onMagicTap"; "required": false; }; "onAccessibilityEscape": { "alias": "onAccessibilityEscape"; "required": false; }; "role": { "alias": "role"; "required": false; }; "aria-label": { "alias": "aria-label"; "required": false; }; "aria-labelledby": { "alias": "aria-labelledby"; "required": false; }; "aria-live": { "alias": "aria-live"; "required": false; }; "aria-hidden": { "alias": "aria-hidden"; "required": false; }; "aria-busy": { "alias": "aria-busy"; "required": false; }; "aria-checked": { "alias": "aria-checked"; "required": false; }; "aria-disabled": { "alias": "aria-disabled"; "required": false; }; "aria-expanded": { "alias": "aria-expanded"; "required": false; }; "aria-selected": { "alias": "aria-selected"; "required": false; }; "aria-modal": { "alias": "aria-modal"; "required": false; }; "aria-valuemax": { "alias": "aria-valuemax"; "required": false; }; "aria-valuemin": { "alias": "aria-valuemin"; "required": false; }; "aria-valuenow": { "alias": "aria-valuenow"; "required": false; }; "aria-valuetext": { "alias": "aria-valuetext"; "required": false; }; "onStartShouldSetResponder": { "alias": "onStartShouldSetResponder"; "required": false; }; "onStartShouldSetResponderCapture": { "alias": "onStartShouldSetResponderCapture"; "required": false; }; "onMoveShouldSetResponder": { "alias": "onMoveShouldSetResponder"; "required": false; }; "onMoveShouldSetResponderCapture": { "alias": "onMoveShouldSetResponderCapture"; "required": false; }; "onResponderGrant": { "alias": "onResponderGrant"; "required": false; }; "onResponderReject": { "alias": "onResponderReject"; "required": false; }; "onResponderStart": { "alias": "onResponderStart"; "required": false; }; "onResponderMove": { "alias": "onResponderMove"; "required": false; }; "onResponderEnd": { "alias": "onResponderEnd"; "required": false; }; "onResponderRelease": { "alias": "onResponderRelease"; "required": false; }; "onResponderTerminate": { "alias": "onResponderTerminate"; "required": false; }; "onResponderTerminationRequest": { "alias": "onResponderTerminationRequest"; "required": false; }; "onTouchStart": { "alias": "onTouchStart"; "required": false; }; "onTouchStartCapture": { "alias": "onTouchStartCapture"; "required": false; }; "onTouchMove": { "alias": "onTouchMove"; "required": false; }; "onTouchMoveCapture": { "alias": "onTouchMoveCapture"; "required": false; }; "onTouchEnd": { "alias": "onTouchEnd"; "required": false; }; "onTouchEndCapture": { "alias": "onTouchEndCapture"; "required": false; }; "onTouchCancel": { "alias": "onTouchCancel"; "required": false; }; "onTouchCancelCapture": { "alias": "onTouchCancelCapture"; "required": false; }; "onFocusCapture": { "alias": "onFocusCapture"; "required": false; }; "onBlurCapture": { "alias": "onBlurCapture"; "required": false; }; "onClickCapture": { "alias": "onClickCapture"; "required": false; }; "onKeyDown": { "alias": "onKeyDown"; "required": false; }; "onKeyDownCapture": { "alias": "onKeyDownCapture"; "required": false; }; "onKeyUp": { "alias": "onKeyUp"; "required": false; }; "onKeyUpCapture": { "alias": "onKeyUpCapture"; "required": false; }; "pointerEvents": { "alias": "pointerEvents"; "required": false; }; "hitSlop": { "alias": "hitSlop"; "required": false; }; "focusable": { "alias": "focusable"; "required": false; }; "collapsable": { "alias": "collapsable"; "required": false; }; "removeClippedSubviews": { "alias": "removeClippedSubviews"; "required": false; }; "renderToHardwareTextureAndroid": { "alias": "renderToHardwareTextureAndroid"; "required": false; }; "shouldRasterizeIOS": { "alias": "shouldRasterizeIOS"; "required": false; }; "needsOffscreenAlphaCompositing": { "alias": "needsOffscreenAlphaCompositing"; "required": false; }; "style": { "alias": "style"; "required": false; }; "styleProp": { "alias": "styleProp"; "required": false; }; "class": { "alias": "class"; "required": false; }; "onPress": { "alias": "onPress"; "required": false; }; "onPressIn": { "alias": "onPressIn"; "required": false; }; "onPressOut": { "alias": "onPressOut"; "required": false; }; "onPressMove": { "alias": "onPressMove"; "required": false; }; "onLongPress": { "alias": "onLongPress"; "required": false; }; "onLayout": { "alias": "onLayout"; "required": false; }; "onFocus": { "alias": "onFocus"; "required": false; }; "onBlur": { "alias": "onBlur"; "required": false; }; }, {}, never, never, true, never>;
109
+ }
110
+ /**
111
+ * The base for a tag whose app callback an engine behavior READS BACK inside the same microtask
112
+ * turn — `<text-input>`, `<switch>`, `<refresh-control>`. Zoneless change detection is a macrotask,
113
+ * so without this the behavior sees the PRE-event value and undoes the user; the full mechanism,
114
+ * and why this is `detectChanges()` on one view rather than `ApplicationRef.tick()`, is in
115
+ * `./change-detection-flush`.
116
+ *
117
+ * The directive is the only thing in the adapter that owns a `ChangeDetectorRef` for the view
118
+ * holding the binding, so it hands one to the renderer keyed on its own node.
119
+ */
120
+ export declare abstract class ReadBackElement extends SymbioteElement implements OnDestroy {
121
+ private readonly detector;
122
+ private readonly errorHandler;
123
+ constructor();
124
+ private flush;
125
+ ngOnDestroy(): void;
126
+ static ɵfac: i0.ɵɵFactoryDeclaration<ReadBackElement, never>;
127
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ReadBackElement, never, never, {}, {}, never, never, true, never>;
128
+ }
129
+ /**
130
+ * The `[(value)]` half of a controlled tag — `<switch>` and `<text-input>`.
131
+ *
132
+ * The one `@Output` in this file, and it is FORCED rather than chosen. `[(value)]` desugars to
133
+ * `[value]` + `(valueChange)`, and ngtsc requires both halves to resolve to the SAME target: a
134
+ * declared `value` input beside an event no directive claims is NG8007, "the property and event
135
+ * halves are not bound to the same target". So the sugar this adapter documents cannot work without
136
+ * the output existing, whatever the file header says about events in general.
137
+ *
138
+ * The bridge below is NOT what makes the binding work today, and the comment says so because the
139
+ * obvious reading is wrong: the file header's "an `@Output` CONSUMES the binding" holds for a
140
+ * COMPONENT, and an element is the other case — Angular attaches the renderer listener for the
141
+ * event as well, so `Renderer2.listen` still runs and the engine still hears the change. Measured
142
+ * under JIT by deleting this whole hook: every case in `renderer/two-way-value.test.ts` stayed
143
+ * green, delivery included, and exactly ONCE (nothing double-fires when both paths exist).
144
+ *
145
+ * It is kept because the measurement is JIT-only and this adapter has a recorded case of JIT and
146
+ * AOT resolving a binding differently (`test-harness-false-greens.md` §21). If AOT routes the event
147
+ * exclusively to the output, this hook is the only thing keeping `[(value)]` alive; if it routes to
148
+ * both, it is one extra listener on a control an app explicitly bound. Delete it once something
149
+ * executes the LINKED artifact and shows the renderer listener is attached there too.
150
+ *
151
+ * Opened only when something is SUBSCRIBED: the prop's PRESENCE is what a behavior reads to decide
152
+ * it is controlled, so a `<switch>` given a handler nobody asked for changes how it snaps back.
153
+ * `.observed` is readable from `ngOnInit` because Angular subscribes outputs in the creation pass,
154
+ * before the update pass runs the hook — observed directly (true for the two bound tags, false for
155
+ * an unbound one), not assumed.
156
+ */
157
+ export declare abstract class ValueChangeElement extends ReadBackElement implements OnInit, OnDestroy {
158
+ private readonly valueRenderer;
159
+ private readonly valueHost;
160
+ private unlistenValue?;
161
+ /** `this.valueChange.observed` — the subclass owns the emitter so its payload type stays exact. */
162
+ protected abstract hasValueSubscriber(): boolean;
163
+ /** Narrows the engine's unwrapped value to the type THIS tag emits, then emits it. */
164
+ protected abstract emitValue(value: unknown): void;
165
+ ngOnInit(): void;
166
+ ngOnDestroy(): void;
167
+ static ɵfac: i0.ɵɵFactoryDeclaration<ValueChangeElement, never>;
168
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ValueChangeElement, never, never, {}, {}, never, never, true, never>;
169
+ }