@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,304 @@
1
+ import { ChangeDetectorRef, Directive, ElementRef, ErrorHandler, Input, Renderer2, inject, } from '@angular/core';
2
+ import { VALUE_CHANGE_EVENT } from './renderer/value-change';
3
+ import { registerViewFlush, unregisterViewFlush, } from './change-detection-flush';
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 class SymbioteElement {
17
+ constructor() {
18
+ this.renderer = inject(Renderer2);
19
+ this.host = inject(ElementRef);
20
+ }
21
+ ngOnChanges(changes) {
22
+ for (const name of Object.keys(changes)) {
23
+ this.renderer.setProperty(this.host.nativeElement, name,
24
+ // Unwrapped on purpose: `SymbioteRenderer.setProperty` is where an `on*` value is wrapped
25
+ // now, and it is the call this line makes.
26
+ changes[name]?.currentValue);
27
+ }
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteElement, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SymbioteElement, isStandalone: true, inputs: { testID: "testID", nativeID: "nativeID", id: "id", accessible: "accessible", accessibilityLabel: "accessibilityLabel", accessibilityHint: "accessibilityHint", accessibilityRole: "accessibilityRole", accessibilityState: "accessibilityState", accessibilityValue: "accessibilityValue", accessibilityActions: "accessibilityActions", experimental_accessibilityOrder: "experimental_accessibilityOrder", accessibilityLabelledBy: "accessibilityLabelledBy", importantForAccessibility: "importantForAccessibility", accessibilityLiveRegion: "accessibilityLiveRegion", screenReaderFocusable: "screenReaderFocusable", accessibilityViewIsModal: "accessibilityViewIsModal", accessibilityElementsHidden: "accessibilityElementsHidden", accessibilityIgnoresInvertColors: "accessibilityIgnoresInvertColors", accessibilityLanguage: "accessibilityLanguage", accessibilityRespondsToUserInteraction: "accessibilityRespondsToUserInteraction", accessibilityShowsLargeContentViewer: "accessibilityShowsLargeContentViewer", accessibilityLargeContentTitle: "accessibilityLargeContentTitle", onAccessibilityAction: "onAccessibilityAction", onAccessibilityTap: "onAccessibilityTap", onMagicTap: "onMagicTap", onAccessibilityEscape: "onAccessibilityEscape", role: "role", "aria-label": "aria-label", "aria-labelledby": "aria-labelledby", "aria-live": "aria-live", "aria-hidden": "aria-hidden", "aria-busy": "aria-busy", "aria-checked": "aria-checked", "aria-disabled": "aria-disabled", "aria-expanded": "aria-expanded", "aria-selected": "aria-selected", "aria-modal": "aria-modal", "aria-valuemax": "aria-valuemax", "aria-valuemin": "aria-valuemin", "aria-valuenow": "aria-valuenow", "aria-valuetext": "aria-valuetext", onStartShouldSetResponder: "onStartShouldSetResponder", onStartShouldSetResponderCapture: "onStartShouldSetResponderCapture", onMoveShouldSetResponder: "onMoveShouldSetResponder", onMoveShouldSetResponderCapture: "onMoveShouldSetResponderCapture", onResponderGrant: "onResponderGrant", onResponderReject: "onResponderReject", onResponderStart: "onResponderStart", onResponderMove: "onResponderMove", onResponderEnd: "onResponderEnd", onResponderRelease: "onResponderRelease", onResponderTerminate: "onResponderTerminate", onResponderTerminationRequest: "onResponderTerminationRequest", onTouchStart: "onTouchStart", onTouchStartCapture: "onTouchStartCapture", onTouchMove: "onTouchMove", onTouchMoveCapture: "onTouchMoveCapture", onTouchEnd: "onTouchEnd", onTouchEndCapture: "onTouchEndCapture", onTouchCancel: "onTouchCancel", onTouchCancelCapture: "onTouchCancelCapture", onFocusCapture: "onFocusCapture", onBlurCapture: "onBlurCapture", onClickCapture: "onClickCapture", onKeyDown: "onKeyDown", onKeyDownCapture: "onKeyDownCapture", onKeyUp: "onKeyUp", onKeyUpCapture: "onKeyUpCapture", pointerEvents: "pointerEvents", hitSlop: "hitSlop", focusable: "focusable", collapsable: "collapsable", removeClippedSubviews: "removeClippedSubviews", renderToHardwareTextureAndroid: "renderToHardwareTextureAndroid", shouldRasterizeIOS: "shouldRasterizeIOS", needsOffscreenAlphaCompositing: "needsOffscreenAlphaCompositing", style: "style", styleProp: "styleProp", class: "class", onPress: "onPress", onPressIn: "onPressIn", onPressOut: "onPressOut", onPressMove: "onPressMove", onLongPress: "onLongPress", onLayout: "onLayout", onFocus: "onFocus", onBlur: "onBlur" }, usesOnChanges: true, ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteElement, decorators: [{
33
+ type: Directive
34
+ }], propDecorators: { testID: [{
35
+ type: Input
36
+ }], nativeID: [{
37
+ type: Input
38
+ }], id: [{
39
+ type: Input
40
+ }], accessible: [{
41
+ type: Input
42
+ }], accessibilityLabel: [{
43
+ type: Input
44
+ }], accessibilityHint: [{
45
+ type: Input
46
+ }], accessibilityRole: [{
47
+ type: Input
48
+ }], accessibilityState: [{
49
+ type: Input
50
+ }], accessibilityValue: [{
51
+ type: Input
52
+ }], accessibilityActions: [{
53
+ type: Input
54
+ }], experimental_accessibilityOrder: [{
55
+ type: Input
56
+ }], accessibilityLabelledBy: [{
57
+ type: Input
58
+ }], importantForAccessibility: [{
59
+ type: Input
60
+ }], accessibilityLiveRegion: [{
61
+ type: Input
62
+ }], screenReaderFocusable: [{
63
+ type: Input
64
+ }], accessibilityViewIsModal: [{
65
+ type: Input
66
+ }], accessibilityElementsHidden: [{
67
+ type: Input
68
+ }], accessibilityIgnoresInvertColors: [{
69
+ type: Input
70
+ }], accessibilityLanguage: [{
71
+ type: Input
72
+ }], accessibilityRespondsToUserInteraction: [{
73
+ type: Input
74
+ }], accessibilityShowsLargeContentViewer: [{
75
+ type: Input
76
+ }], accessibilityLargeContentTitle: [{
77
+ type: Input
78
+ }], onAccessibilityAction: [{
79
+ type: Input
80
+ }], onAccessibilityTap: [{
81
+ type: Input
82
+ }], onMagicTap: [{
83
+ type: Input
84
+ }], onAccessibilityEscape: [{
85
+ type: Input
86
+ }], role: [{
87
+ type: Input
88
+ }], "aria-label": [{
89
+ type: Input
90
+ }], "aria-labelledby": [{
91
+ type: Input
92
+ }], "aria-live": [{
93
+ type: Input
94
+ }], "aria-hidden": [{
95
+ type: Input
96
+ }], "aria-busy": [{
97
+ type: Input
98
+ }], "aria-checked": [{
99
+ type: Input
100
+ }], "aria-disabled": [{
101
+ type: Input
102
+ }], "aria-expanded": [{
103
+ type: Input
104
+ }], "aria-selected": [{
105
+ type: Input
106
+ }], "aria-modal": [{
107
+ type: Input
108
+ }], "aria-valuemax": [{
109
+ type: Input
110
+ }], "aria-valuemin": [{
111
+ type: Input
112
+ }], "aria-valuenow": [{
113
+ type: Input
114
+ }], "aria-valuetext": [{
115
+ type: Input
116
+ }], onStartShouldSetResponder: [{
117
+ type: Input
118
+ }], onStartShouldSetResponderCapture: [{
119
+ type: Input
120
+ }], onMoveShouldSetResponder: [{
121
+ type: Input
122
+ }], onMoveShouldSetResponderCapture: [{
123
+ type: Input
124
+ }], onResponderGrant: [{
125
+ type: Input
126
+ }], onResponderReject: [{
127
+ type: Input
128
+ }], onResponderStart: [{
129
+ type: Input
130
+ }], onResponderMove: [{
131
+ type: Input
132
+ }], onResponderEnd: [{
133
+ type: Input
134
+ }], onResponderRelease: [{
135
+ type: Input
136
+ }], onResponderTerminate: [{
137
+ type: Input
138
+ }], onResponderTerminationRequest: [{
139
+ type: Input
140
+ }], onTouchStart: [{
141
+ type: Input
142
+ }], onTouchStartCapture: [{
143
+ type: Input
144
+ }], onTouchMove: [{
145
+ type: Input
146
+ }], onTouchMoveCapture: [{
147
+ type: Input
148
+ }], onTouchEnd: [{
149
+ type: Input
150
+ }], onTouchEndCapture: [{
151
+ type: Input
152
+ }], onTouchCancel: [{
153
+ type: Input
154
+ }], onTouchCancelCapture: [{
155
+ type: Input
156
+ }], onFocusCapture: [{
157
+ type: Input
158
+ }], onBlurCapture: [{
159
+ type: Input
160
+ }], onClickCapture: [{
161
+ type: Input
162
+ }], onKeyDown: [{
163
+ type: Input
164
+ }], onKeyDownCapture: [{
165
+ type: Input
166
+ }], onKeyUp: [{
167
+ type: Input
168
+ }], onKeyUpCapture: [{
169
+ type: Input
170
+ }], pointerEvents: [{
171
+ type: Input
172
+ }], hitSlop: [{
173
+ type: Input
174
+ }], focusable: [{
175
+ type: Input
176
+ }], collapsable: [{
177
+ type: Input
178
+ }], removeClippedSubviews: [{
179
+ type: Input
180
+ }], renderToHardwareTextureAndroid: [{
181
+ type: Input
182
+ }], shouldRasterizeIOS: [{
183
+ type: Input
184
+ }], needsOffscreenAlphaCompositing: [{
185
+ type: Input
186
+ }], style: [{
187
+ type: Input
188
+ }], styleProp: [{
189
+ type: Input
190
+ }], class: [{
191
+ type: Input
192
+ }], onPress: [{
193
+ type: Input
194
+ }], onPressIn: [{
195
+ type: Input
196
+ }], onPressOut: [{
197
+ type: Input
198
+ }], onPressMove: [{
199
+ type: Input
200
+ }], onLongPress: [{
201
+ type: Input
202
+ }], onLayout: [{
203
+ type: Input
204
+ }], onFocus: [{
205
+ type: Input
206
+ }], onBlur: [{
207
+ type: Input
208
+ }] } });
209
+ /**
210
+ * The base for a tag whose app callback an engine behavior READS BACK inside the same microtask
211
+ * turn — `<text-input>`, `<switch>`, `<refresh-control>`. Zoneless change detection is a macrotask,
212
+ * so without this the behavior sees the PRE-event value and undoes the user; the full mechanism,
213
+ * and why this is `detectChanges()` on one view rather than `ApplicationRef.tick()`, is in
214
+ * `./change-detection-flush`.
215
+ *
216
+ * The directive is the only thing in the adapter that owns a `ChangeDetectorRef` for the view
217
+ * holding the binding, so it hands one to the renderer keyed on its own node.
218
+ */
219
+ export class ReadBackElement extends SymbioteElement {
220
+ constructor() {
221
+ super();
222
+ // ITS OWN, now that the base has none. Three tags reach this class, so the injection is paid where
223
+ // it is read instead of on every element of a screen.
224
+ this.detector = inject(ChangeDetectorRef);
225
+ this.errorHandler = inject(ErrorHandler);
226
+ const node = this.host.nativeElement;
227
+ if (typeof node === 'object' && node !== null) {
228
+ registerViewFlush(node, () => this.flush());
229
+ }
230
+ }
231
+ // REPORTED, NOT RETHROWN — Angular's own contract. Every other change detection runs inside
232
+ // `ApplicationRef.tick()`, caught by `ErrorHandler` (`SymbioteErrorHandler`); this flush instead
233
+ // runs from a native event dispatch, where an uncaught throw has nowhere to go but `RCTFatal`.
234
+ flush() {
235
+ try {
236
+ this.detector.detectChanges();
237
+ }
238
+ catch (error) {
239
+ this.errorHandler.handleError(error);
240
+ }
241
+ }
242
+ ngOnDestroy() {
243
+ const node = this.host.nativeElement;
244
+ if (typeof node === 'object' && node !== null)
245
+ unregisterViewFlush(node);
246
+ }
247
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReadBackElement, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
248
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ReadBackElement, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
249
+ }
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ReadBackElement, decorators: [{
251
+ type: Directive
252
+ }], ctorParameters: () => [] });
253
+ /**
254
+ * The `[(value)]` half of a controlled tag — `<switch>` and `<text-input>`.
255
+ *
256
+ * The one `@Output` in this file, and it is FORCED rather than chosen. `[(value)]` desugars to
257
+ * `[value]` + `(valueChange)`, and ngtsc requires both halves to resolve to the SAME target: a
258
+ * declared `value` input beside an event no directive claims is NG8007, "the property and event
259
+ * halves are not bound to the same target". So the sugar this adapter documents cannot work without
260
+ * the output existing, whatever the file header says about events in general.
261
+ *
262
+ * The bridge below is NOT what makes the binding work today, and the comment says so because the
263
+ * obvious reading is wrong: the file header's "an `@Output` CONSUMES the binding" holds for a
264
+ * COMPONENT, and an element is the other case — Angular attaches the renderer listener for the
265
+ * event as well, so `Renderer2.listen` still runs and the engine still hears the change. Measured
266
+ * under JIT by deleting this whole hook: every case in `renderer/two-way-value.test.ts` stayed
267
+ * green, delivery included, and exactly ONCE (nothing double-fires when both paths exist).
268
+ *
269
+ * It is kept because the measurement is JIT-only and this adapter has a recorded case of JIT and
270
+ * AOT resolving a binding differently (`test-harness-false-greens.md` §21). If AOT routes the event
271
+ * exclusively to the output, this hook is the only thing keeping `[(value)]` alive; if it routes to
272
+ * both, it is one extra listener on a control an app explicitly bound. Delete it once something
273
+ * executes the LINKED artifact and shows the renderer listener is attached there too.
274
+ *
275
+ * Opened only when something is SUBSCRIBED: the prop's PRESENCE is what a behavior reads to decide
276
+ * it is controlled, so a `<switch>` given a handler nobody asked for changes how it snaps back.
277
+ * `.observed` is readable from `ngOnInit` because Angular subscribes outputs in the creation pass,
278
+ * before the update pass runs the hook — observed directly (true for the two bound tags, false for
279
+ * an unbound one), not assumed.
280
+ */
281
+ export class ValueChangeElement extends ReadBackElement {
282
+ constructor() {
283
+ super(...arguments);
284
+ this.valueRenderer = inject(Renderer2);
285
+ this.valueHost = inject(ElementRef);
286
+ }
287
+ ngOnInit() {
288
+ if (!this.hasValueSubscriber())
289
+ return;
290
+ this.unlistenValue = this.valueRenderer.listen(this.valueHost.nativeElement, VALUE_CHANGE_EVENT, (value) => {
291
+ this.emitValue(value);
292
+ });
293
+ }
294
+ ngOnDestroy() {
295
+ super.ngOnDestroy();
296
+ this.unlistenValue?.();
297
+ }
298
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ValueChangeElement, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
299
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ValueChangeElement, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
300
+ }
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ValueChangeElement, decorators: [{
302
+ type: Directive
303
+ }] });
304
+ //# sourceMappingURL=element-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-base.js","sourceRoot":"","sources":["../../src/element-base.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,KAAK,EACL,SAAS,EACT,MAAM,GACP,MAAM,eAAe,CAAC;AAOvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;;AAGlC;;;;;;;;;;GAUG;AAEH,MAAM,OAAgB,eAAe;IADrC;QAEmB,aAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,SAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;KAmJ9C;IAXC,WAAW,CAAC,OAAsB;QAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,IAAI,CAAC,aAAa,EACvB,IAAI;YACJ,0FAA0F;YAC1F,2CAA2C;YAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,CAC5B,CAAC;QACJ,CAAC;IACH,CAAC;8GApJmB,eAAe;kGAAf,eAAe;;2FAAf,eAAe;kBADpC,SAAS;;sBAgBP,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBAEL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAGL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAIL,KAAK;;sBAEL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBAYL,KAAK;;sBACL,KAAK;;sBAIL,KAAK;;sBAIL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;AAeR;;;;;;;;;GASG;AAEH,MAAM,OAAgB,eACpB,SAAQ,eAAe;IAQvB;QACE,KAAK,EAAE,CAAC;QANV,mGAAmG;QACnG,sDAAsD;QACrC,aAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACrC,iBAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAInD,MAAM,IAAI,GAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,iGAAiG;IACjG,+FAA+F;IACvF,KAAK;QACX,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;YAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;8GA/BmB,eAAe;kGAAf,eAAe;;2FAAf,eAAe;kBADpC,SAAS;;AAmCV;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,OAAgB,kBACpB,SAAQ,eAAe;IAFzB;;QAKmB,kBAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,cAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;KAwBjD;IAfC,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAAE,OAAO;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAC5C,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,kBAAkB,EAClB,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CACF,CAAC;IACJ,CAAC;IAEQ,WAAW;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;IACzB,CAAC;8GA5BmB,kBAAkB;kGAAlB,kBAAkB;;2FAAlB,kBAAkB;kBADvC,SAAS"}
@@ -1,4 +1,4 @@
1
- import type { IAccessibilityProps, IAriaProps, IPressState, IRectOffset, IResponderProps } from '@symbiote-native/components';
1
+ import type { IAccessibilityProps, IAriaProps, IPressState, IRectOffset, IResponderProps, ITextNativeOnlyProps } from '@symbiote-native/components';
2
2
  import type { ISymbioteEvent, IStyleProp, ITextStyle, IViewStyle } from '@symbiote-native/engine';
3
3
  type IEventHandler = (event: ISymbioteEvent) => void;
4
4
  /**
@@ -9,7 +9,7 @@ type IEventHandler = (event: ISymbioteEvent) => void;
9
9
  export type IAngularStyleBinding<TStyle> = TStyle | string | null | undefined;
10
10
  /** RN's full StyleProp, press-state callback included: the `[styleProp]` binding. */
11
11
  export type IElementStyleProp = IStyleProp<IViewStyle> | ((state: IPressState) => IStyleProp<IViewStyle>);
12
- export interface IElementProps extends IAccessibilityProps, IAriaProps, IResponderProps {
12
+ export type IElementProps = IAccessibilityProps & IAriaProps & IResponderProps & {
13
13
  /** RN's modern W3C-named alias for `nativeID`; the renderer folds it (`PROP_ALIASES`). */
14
14
  id?: string;
15
15
  pointerEvents?: 'auto' | 'none' | 'box-none' | 'box-only';
@@ -36,9 +36,9 @@ export interface IElementProps extends IAccessibilityProps, IAriaProps, IRespond
36
36
  onLayout?: IEventHandler;
37
37
  onFocus?: IEventHandler;
38
38
  onBlur?: IEventHandler;
39
- }
39
+ };
40
40
  /** Text's own surface on top of the shared one. `onTextLayout` is an event, so it is not here. */
41
- export interface ITextElementProps {
41
+ export type ITextElementProps = ITextNativeOnlyProps & {
42
42
  /** Narrows the shared `style` so `fontSize` / `fontWeight` type-check on a `<text>`. */
43
43
  style?: IAngularStyleBinding<ITextStyle>;
44
44
  styleProp?: IStyleProp<ITextStyle>;
@@ -51,12 +51,12 @@ export interface ITextElementProps {
51
51
  maxFontSizeMultiplier?: number | null;
52
52
  selectionColor?: string;
53
53
  disabled?: boolean;
54
- }
54
+ };
55
55
  /** The sticky-header wrapper RN builds in JS (ScrollViewStickyHeader.js). */
56
- export interface IStickyHeaderElementProps {
56
+ export type IStickyHeaderElementProps = {
57
57
  inverted?: boolean;
58
58
  nextHeaderLayoutY?: number | null;
59
59
  scrollAnimatedValue?: unknown;
60
60
  scrollViewHeight?: number | null;
61
- }
61
+ };
62
62
  export {};
@@ -0,0 +1,27 @@
1
+ import type { ITextInputProps } from '@symbiote-native/components';
2
+ import { ValueChangeElement } from './element-base';
3
+ import * as i0 from "@angular/core";
4
+ export declare abstract class TextInputNativeInputs extends ValueChangeElement {
5
+ caretHidden?: ITextInputProps['caretHidden'];
6
+ clearButtonMode?: ITextInputProps['clearButtonMode'];
7
+ clearTextOnFocus?: ITextInputProps['clearTextOnFocus'];
8
+ contextMenuHidden?: ITextInputProps['contextMenuHidden'];
9
+ dataDetectorTypes?: ITextInputProps['dataDetectorTypes'];
10
+ disableFullscreenUI?: ITextInputProps['disableFullscreenUI'];
11
+ disableKeyboardShortcuts?: ITextInputProps['disableKeyboardShortcuts'];
12
+ enablesReturnKeyAutomatically?: ITextInputProps['enablesReturnKeyAutomatically'];
13
+ importantForAutofill?: ITextInputProps['importantForAutofill'];
14
+ inlineImageLeft?: ITextInputProps['inlineImageLeft'];
15
+ inlineImagePadding?: ITextInputProps['inlineImagePadding'];
16
+ inputAccessoryViewButtonLabel?: ITextInputProps['inputAccessoryViewButtonLabel'];
17
+ keyboardAppearance?: ITextInputProps['keyboardAppearance'];
18
+ lineBreakModeIOS?: ITextInputProps['lineBreakModeIOS'];
19
+ lineBreakStrategyIOS?: ITextInputProps['lineBreakStrategyIOS'];
20
+ passwordRules?: ITextInputProps['passwordRules'];
21
+ returnKeyLabel?: ITextInputProps['returnKeyLabel'];
22
+ smartInsertDelete?: ITextInputProps['smartInsertDelete'];
23
+ spellCheck?: ITextInputProps['spellCheck'];
24
+ textBreakStrategy?: ITextInputProps['textBreakStrategy'];
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextInputNativeInputs, never>;
26
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TextInputNativeInputs, never, never, { "caretHidden": { "alias": "caretHidden"; "required": false; }; "clearButtonMode": { "alias": "clearButtonMode"; "required": false; }; "clearTextOnFocus": { "alias": "clearTextOnFocus"; "required": false; }; "contextMenuHidden": { "alias": "contextMenuHidden"; "required": false; }; "dataDetectorTypes": { "alias": "dataDetectorTypes"; "required": false; }; "disableFullscreenUI": { "alias": "disableFullscreenUI"; "required": false; }; "disableKeyboardShortcuts": { "alias": "disableKeyboardShortcuts"; "required": false; }; "enablesReturnKeyAutomatically": { "alias": "enablesReturnKeyAutomatically"; "required": false; }; "importantForAutofill": { "alias": "importantForAutofill"; "required": false; }; "inlineImageLeft": { "alias": "inlineImageLeft"; "required": false; }; "inlineImagePadding": { "alias": "inlineImagePadding"; "required": false; }; "inputAccessoryViewButtonLabel": { "alias": "inputAccessoryViewButtonLabel"; "required": false; }; "keyboardAppearance": { "alias": "keyboardAppearance"; "required": false; }; "lineBreakModeIOS": { "alias": "lineBreakModeIOS"; "required": false; }; "lineBreakStrategyIOS": { "alias": "lineBreakStrategyIOS"; "required": false; }; "passwordRules": { "alias": "passwordRules"; "required": false; }; "returnKeyLabel": { "alias": "returnKeyLabel"; "required": false; }; "smartInsertDelete": { "alias": "smartInsertDelete"; "required": false; }; "spellCheck": { "alias": "spellCheck"; "required": false; }; "textBreakStrategy": { "alias": "textBreakStrategy"; "required": false; }; }, {}, never, never, true, never>;
27
+ }
@@ -0,0 +1,52 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { ValueChangeElement } from './element-base';
3
+ import * as i0 from "@angular/core";
4
+ // The inputs only one platform's native view reads, split from `TextInputElement` for file size
5
+ export class TextInputNativeInputs extends ValueChangeElement {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputNativeInputs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
7
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: TextInputNativeInputs, isStandalone: true, inputs: { caretHidden: "caretHidden", clearButtonMode: "clearButtonMode", clearTextOnFocus: "clearTextOnFocus", contextMenuHidden: "contextMenuHidden", dataDetectorTypes: "dataDetectorTypes", disableFullscreenUI: "disableFullscreenUI", disableKeyboardShortcuts: "disableKeyboardShortcuts", enablesReturnKeyAutomatically: "enablesReturnKeyAutomatically", importantForAutofill: "importantForAutofill", inlineImageLeft: "inlineImageLeft", inlineImagePadding: "inlineImagePadding", inputAccessoryViewButtonLabel: "inputAccessoryViewButtonLabel", keyboardAppearance: "keyboardAppearance", lineBreakModeIOS: "lineBreakModeIOS", lineBreakStrategyIOS: "lineBreakStrategyIOS", passwordRules: "passwordRules", returnKeyLabel: "returnKeyLabel", smartInsertDelete: "smartInsertDelete", spellCheck: "spellCheck", textBreakStrategy: "textBreakStrategy" }, usesInheritance: true, ngImport: i0 }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TextInputNativeInputs, decorators: [{
10
+ type: Directive
11
+ }], propDecorators: { caretHidden: [{
12
+ type: Input
13
+ }], clearButtonMode: [{
14
+ type: Input
15
+ }], clearTextOnFocus: [{
16
+ type: Input
17
+ }], contextMenuHidden: [{
18
+ type: Input
19
+ }], dataDetectorTypes: [{
20
+ type: Input
21
+ }], disableFullscreenUI: [{
22
+ type: Input
23
+ }], disableKeyboardShortcuts: [{
24
+ type: Input
25
+ }], enablesReturnKeyAutomatically: [{
26
+ type: Input
27
+ }], importantForAutofill: [{
28
+ type: Input
29
+ }], inlineImageLeft: [{
30
+ type: Input
31
+ }], inlineImagePadding: [{
32
+ type: Input
33
+ }], inputAccessoryViewButtonLabel: [{
34
+ type: Input
35
+ }], keyboardAppearance: [{
36
+ type: Input
37
+ }], lineBreakModeIOS: [{
38
+ type: Input
39
+ }], lineBreakStrategyIOS: [{
40
+ type: Input
41
+ }], passwordRules: [{
42
+ type: Input
43
+ }], returnKeyLabel: [{
44
+ type: Input
45
+ }], smartInsertDelete: [{
46
+ type: Input
47
+ }], spellCheck: [{
48
+ type: Input
49
+ }], textBreakStrategy: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=element-text-input-native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-text-input-native.js","sourceRoot":"","sources":["../../src/element-text-input-native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;;AAEpD,gGAAgG;AAEhG,MAAM,OAAgB,qBAAsB,SAAQ,kBAAkB;8GAAhD,qBAAqB;kGAArB,qBAAqB;;2FAArB,qBAAqB;kBAD1C,SAAS;;sBAEP,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK"}
@@ -0,0 +1,171 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import type { OnDestroy } from '@angular/core';
3
+ import { type ControlValueAccessor } from '@angular/forms';
4
+ import type { IActivityIndicatorProps, IInputAccessoryViewViewProps, ILayoutConformanceMode, IModalViewProps, ISwitchProps, ITextInputProps } from '@symbiote-native/components';
5
+ import type { IStickyHeaderElementProps } from './element-props';
6
+ import type { IAngularRefreshControlProps } from './components/refresh-control-props';
7
+ import { TextInputNativeInputs } from './element-text-input-native';
8
+ import { ReadBackElement, SymbioteElement, ValueChangeElement } from './element-base';
9
+ import * as i0 from "@angular/core";
10
+ export declare class TextInputElement extends TextInputNativeInputs {
11
+ value?: ITextInputProps['value'];
12
+ defaultValue?: ITextInputProps['defaultValue'];
13
+ placeholder?: ITextInputProps['placeholder'];
14
+ placeholderTextColor?: ITextInputProps['placeholderTextColor'];
15
+ multiline?: ITextInputProps['multiline'];
16
+ numberOfLines?: ITextInputProps['numberOfLines'];
17
+ maxLength?: ITextInputProps['maxLength'];
18
+ editable?: ITextInputProps['editable'];
19
+ readOnly?: ITextInputProps['readOnly'];
20
+ autoFocus?: ITextInputProps['autoFocus'];
21
+ autoCapitalize?: ITextInputProps['autoCapitalize'];
22
+ autoComplete?: ITextInputProps['autoComplete'];
23
+ autoCorrect?: ITextInputProps['autoCorrect'];
24
+ blurOnSubmit?: ITextInputProps['blurOnSubmit'];
25
+ submitBehavior?: ITextInputProps['submitBehavior'];
26
+ cursorColor?: ITextInputProps['cursorColor'];
27
+ enterKeyHint?: ITextInputProps['enterKeyHint'];
28
+ returnKeyType?: ITextInputProps['returnKeyType'];
29
+ inputMode?: ITextInputProps['inputMode'];
30
+ keyboardType?: ITextInputProps['keyboardType'];
31
+ inputAccessoryViewID?: ITextInputProps['inputAccessoryViewID'];
32
+ scrollEnabled?: ITextInputProps['scrollEnabled'];
33
+ secureTextEntry?: ITextInputProps['secureTextEntry'];
34
+ selectTextOnFocus?: ITextInputProps['selectTextOnFocus'];
35
+ selection?: ITextInputProps['selection'];
36
+ selectionColor?: ITextInputProps['selectionColor'];
37
+ selectionHandleColor?: ITextInputProps['selectionHandleColor'];
38
+ showSoftInputOnFocus?: ITextInputProps['showSoftInputOnFocus'];
39
+ textAlign?: ITextInputProps['textAlign'];
40
+ textContentType?: ITextInputProps['textContentType'];
41
+ underlineColorAndroid?: ITextInputProps['underlineColorAndroid'];
42
+ onValueChange?: ITextInputProps['onValueChange'];
43
+ onChangeText?: ITextInputProps['onChangeText'];
44
+ onContentSizeChange?: ITextInputProps['onContentSizeChange'];
45
+ onEndEditing?: ITextInputProps['onEndEditing'];
46
+ onKeyPress?: ITextInputProps['onKeyPress'];
47
+ onSelectionChange?: ITextInputProps['onSelectionChange'];
48
+ onSubmitEditing?: ITextInputProps['onSubmitEditing'];
49
+ readonly valueChange: EventEmitter<string>;
50
+ protected hasValueSubscriber(): boolean;
51
+ protected emitValue(value: unknown): void;
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextInputElement, never>;
53
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TextInputElement, "text-input", never, { "value": { "alias": "value"; "required": false; }; "defaultValue": { "alias": "defaultValue"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "placeholderTextColor": { "alias": "placeholderTextColor"; "required": false; }; "multiline": { "alias": "multiline"; "required": false; }; "numberOfLines": { "alias": "numberOfLines"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "autoCapitalize": { "alias": "autoCapitalize"; "required": false; }; "autoComplete": { "alias": "autoComplete"; "required": false; }; "autoCorrect": { "alias": "autoCorrect"; "required": false; }; "blurOnSubmit": { "alias": "blurOnSubmit"; "required": false; }; "submitBehavior": { "alias": "submitBehavior"; "required": false; }; "cursorColor": { "alias": "cursorColor"; "required": false; }; "enterKeyHint": { "alias": "enterKeyHint"; "required": false; }; "returnKeyType": { "alias": "returnKeyType"; "required": false; }; "inputMode": { "alias": "inputMode"; "required": false; }; "keyboardType": { "alias": "keyboardType"; "required": false; }; "inputAccessoryViewID": { "alias": "inputAccessoryViewID"; "required": false; }; "scrollEnabled": { "alias": "scrollEnabled"; "required": false; }; "secureTextEntry": { "alias": "secureTextEntry"; "required": false; }; "selectTextOnFocus": { "alias": "selectTextOnFocus"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "selectionColor": { "alias": "selectionColor"; "required": false; }; "selectionHandleColor": { "alias": "selectionHandleColor"; "required": false; }; "showSoftInputOnFocus": { "alias": "showSoftInputOnFocus"; "required": false; }; "textAlign": { "alias": "textAlign"; "required": false; }; "textContentType": { "alias": "textContentType"; "required": false; }; "underlineColorAndroid": { "alias": "underlineColorAndroid"; "required": false; }; "onValueChange": { "alias": "onValueChange"; "required": false; }; "onChangeText": { "alias": "onChangeText"; "required": false; }; "onContentSizeChange": { "alias": "onContentSizeChange"; "required": false; }; "onEndEditing": { "alias": "onEndEditing"; "required": false; }; "onKeyPress": { "alias": "onKeyPress"; "required": false; }; "onSelectionChange": { "alias": "onSelectionChange"; "required": false; }; "onSubmitEditing": { "alias": "onSubmitEditing"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
54
+ }
55
+ export declare class MultilineTextInputElement extends TextInputElement {
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<MultilineTextInputElement, never>;
57
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MultilineTextInputElement, "text-input-multiline", never, {}, {}, never, never, true, never>;
58
+ }
59
+ export declare class SwitchElement extends ValueChangeElement {
60
+ value?: ISwitchProps['value'];
61
+ disabled?: ISwitchProps['disabled'];
62
+ trackColor?: ISwitchProps['trackColor'];
63
+ thumbColor?: ISwitchProps['thumbColor'];
64
+ ios_backgroundColor?: ISwitchProps['ios_backgroundColor'];
65
+ onValueChange?: ISwitchProps['onValueChange'];
66
+ readonly valueChange: EventEmitter<NonNullable<boolean | undefined>>;
67
+ protected hasValueSubscriber(): boolean;
68
+ protected emitValue(value: unknown): void;
69
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwitchElement, never>;
70
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SwitchElement, "switch, symbiote-switch", never, { "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "trackColor": { "alias": "trackColor"; "required": false; }; "thumbColor": { "alias": "thumbColor"; "required": false; }; "ios_backgroundColor": { "alias": "ios_backgroundColor"; "required": false; }; "onValueChange": { "alias": "onValueChange"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
71
+ }
72
+ /**
73
+ * `[(ngModel)]` / `formControlName` on a `<text-input>` or a `<switch>`.
74
+ *
75
+ * The wrappers provided `NG_VALUE_ACCESSOR` themselves; a tag has no class for @angular/forms to
76
+ * call into, so the accessor moves onto a directive of its own rather than being dropped — the
77
+ * shape Angular's own `DefaultValueAccessor` takes for `<input>`. Providing it unconditionally is
78
+ * safe: @angular/forms looks the accessor up only when an `ngModel` / `formControl*` directive sits
79
+ * on the SAME element, so a plain `<switch [(value)]>` never reaches it.
80
+ *
81
+ * Everything below goes through `Renderer2`, which is the adapter's own — `setProperty` lands in
82
+ * `routeProp` and `listen('valueChange')` is already unwrapped to a bare value there, so this
83
+ * directive holds no fold of its own.
84
+ */
85
+ declare abstract class SymbioteValueAccessor implements ControlValueAccessor, OnDestroy {
86
+ private readonly renderer;
87
+ private readonly host;
88
+ private unlisten?;
89
+ protected abstract writeDisabled(isDisabled: boolean): void;
90
+ protected setProp(name: string, value: unknown): void;
91
+ writeValue(value: unknown): void;
92
+ registerOnChange(fn: (value: unknown) => void): void;
93
+ registerOnTouched(fn: () => void): void;
94
+ setDisabledState(isDisabled: boolean): void;
95
+ ngOnDestroy(): void;
96
+ static ɵfac: i0.ɵɵFactoryDeclaration<SymbioteValueAccessor, never>;
97
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SymbioteValueAccessor, never, never, {}, {}, never, never, true, never>;
98
+ }
99
+ export declare class TextInputValueAccessor extends SymbioteValueAccessor {
100
+ protected writeDisabled(isDisabled: boolean): void;
101
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextInputValueAccessor, never>;
102
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TextInputValueAccessor, "text-input[ngModel], text-input[formControl], text-input[formControlName], text-input-multiline[ngModel], text-input-multiline[formControl], text-input-multiline[formControlName]", never, {}, {}, never, never, true, never>;
103
+ }
104
+ export declare class SwitchValueAccessor extends SymbioteValueAccessor {
105
+ protected writeDisabled(isDisabled: boolean): void;
106
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwitchValueAccessor, never>;
107
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SwitchValueAccessor, "switch[ngModel], switch[formControl], switch[formControlName]", never, {}, {}, never, never, true, never>;
108
+ }
109
+ export declare class ActivityIndicatorElement extends SymbioteElement {
110
+ animating?: IActivityIndicatorProps['animating'];
111
+ color?: IActivityIndicatorProps['color'];
112
+ size?: IActivityIndicatorProps['size'];
113
+ hidesWhenStopped?: IActivityIndicatorProps['hidesWhenStopped'];
114
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIndicatorElement, never>;
115
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ActivityIndicatorElement, "activity-indicator", never, { "animating": { "alias": "animating"; "required": false; }; "color": { "alias": "color"; "required": false; }; "size": { "alias": "size"; "required": false; }; "hidesWhenStopped": { "alias": "hidesWhenStopped"; "required": false; }; }, {}, never, never, true, never>;
116
+ }
117
+ export declare class ActivityIndicatorSpinnerElement extends ActivityIndicatorElement {
118
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIndicatorSpinnerElement, never>;
119
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ActivityIndicatorSpinnerElement, "activity-indicator-spinner", never, {}, {}, never, never, true, never>;
120
+ }
121
+ export declare class SafeAreaViewElement extends SymbioteElement {
122
+ static ɵfac: i0.ɵɵFactoryDeclaration<SafeAreaViewElement, never>;
123
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SafeAreaViewElement, "safe-area-view", never, {}, {}, never, never, true, never>;
124
+ }
125
+ export declare class LayoutConformanceElement extends SymbioteElement {
126
+ mode?: ILayoutConformanceMode;
127
+ static ɵfac: i0.ɵɵFactoryDeclaration<LayoutConformanceElement, never>;
128
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LayoutConformanceElement, "layout-conformance", never, { "mode": { "alias": "mode"; "required": false; }; }, {}, never, never, true, never>;
129
+ }
130
+ export declare class ModalElement extends SymbioteElement {
131
+ visible?: IModalViewProps['visible'];
132
+ transparent?: IModalViewProps['transparent'];
133
+ animationType?: IModalViewProps['animationType'];
134
+ presentationStyle?: IModalViewProps['presentationStyle'];
135
+ supportedOrientations?: IModalViewProps['supportedOrientations'];
136
+ hardwareAccelerated?: IModalViewProps['hardwareAccelerated'];
137
+ statusBarTranslucent?: IModalViewProps['statusBarTranslucent'];
138
+ navigationBarTranslucent?: IModalViewProps['navigationBarTranslucent'];
139
+ allowSwipeDismissal?: IModalViewProps['allowSwipeDismissal'];
140
+ backdropColor?: IModalViewProps['backdropColor'];
141
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModalElement, never>;
142
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ModalElement, "modal, symbiote-modal", never, { "visible": { "alias": "visible"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; "animationType": { "alias": "animationType"; "required": false; }; "presentationStyle": { "alias": "presentationStyle"; "required": false; }; "supportedOrientations": { "alias": "supportedOrientations"; "required": false; }; "hardwareAccelerated": { "alias": "hardwareAccelerated"; "required": false; }; "statusBarTranslucent": { "alias": "statusBarTranslucent"; "required": false; }; "navigationBarTranslucent": { "alias": "navigationBarTranslucent"; "required": false; }; "allowSwipeDismissal": { "alias": "allowSwipeDismissal"; "required": false; }; "backdropColor": { "alias": "backdropColor"; "required": false; }; }, {}, never, never, true, never>;
143
+ }
144
+ export declare class RefreshControlElement extends ReadBackElement {
145
+ refreshing?: IAngularRefreshControlProps['refreshing'];
146
+ enabled?: IAngularRefreshControlProps['enabled'];
147
+ colors?: IAngularRefreshControlProps['colors'];
148
+ tintColor?: IAngularRefreshControlProps['tintColor'];
149
+ title?: IAngularRefreshControlProps['title'];
150
+ titleColor?: IAngularRefreshControlProps['titleColor'];
151
+ size?: IAngularRefreshControlProps['size'];
152
+ progressBackgroundColor?: IAngularRefreshControlProps['progressBackgroundColor'];
153
+ progressViewOffset?: IAngularRefreshControlProps['progressViewOffset'];
154
+ onRefresh?: IAngularRefreshControlProps['onRefresh'];
155
+ static ɵfac: i0.ɵɵFactoryDeclaration<RefreshControlElement, never>;
156
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RefreshControlElement, "refresh-control", never, { "refreshing": { "alias": "refreshing"; "required": false; }; "enabled": { "alias": "enabled"; "required": false; }; "colors": { "alias": "colors"; "required": false; }; "tintColor": { "alias": "tintColor"; "required": false; }; "title": { "alias": "title"; "required": false; }; "titleColor": { "alias": "titleColor"; "required": false; }; "size": { "alias": "size"; "required": false; }; "progressBackgroundColor": { "alias": "progressBackgroundColor"; "required": false; }; "progressViewOffset": { "alias": "progressViewOffset"; "required": false; }; "onRefresh": { "alias": "onRefresh"; "required": false; }; }, {}, never, never, true, never>;
157
+ }
158
+ export declare class StickyHeaderElement extends SymbioteElement {
159
+ inverted?: IStickyHeaderElementProps['inverted'];
160
+ nextHeaderLayoutY?: IStickyHeaderElementProps['nextHeaderLayoutY'];
161
+ scrollAnimatedValue?: IStickyHeaderElementProps['scrollAnimatedValue'];
162
+ scrollViewHeight?: IStickyHeaderElementProps['scrollViewHeight'];
163
+ static ɵfac: i0.ɵɵFactoryDeclaration<StickyHeaderElement, never>;
164
+ static ɵdir: i0.ɵɵDirectiveDeclaration<StickyHeaderElement, "sticky-header", never, { "inverted": { "alias": "inverted"; "required": false; }; "nextHeaderLayoutY": { "alias": "nextHeaderLayoutY"; "required": false; }; "scrollAnimatedValue": { "alias": "scrollAnimatedValue"; "required": false; }; "scrollViewHeight": { "alias": "scrollViewHeight"; "required": false; }; }, {}, never, never, true, never>;
165
+ }
166
+ export declare class InputAccessoryViewElement extends SymbioteElement {
167
+ backgroundColor?: IInputAccessoryViewViewProps['backgroundColor'];
168
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputAccessoryViewElement, never>;
169
+ static ɵdir: i0.ɵɵDirectiveDeclaration<InputAccessoryViewElement, "input-accessory-view", never, { "backgroundColor": { "alias": "backgroundColor"; "required": false; }; }, {}, never, never, true, never>;
170
+ }
171
+ export {};