@symbiote-native/angular 0.7.0 → 1.0.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 (188) hide show
  1. package/README.md +3 -3
  2. package/babel-lower-host-primitives.cjs +636 -0
  3. package/babel-register-composed.cjs +21 -3
  4. package/build/angular/anchor-host-registry.js +3 -1
  5. package/build/angular/anchor-host-registry.js.map +1 -1
  6. package/build/angular/bootstrap.js +1 -1
  7. package/build/angular/bootstrap.js.map +1 -1
  8. package/build/angular/components/activity-indicator/index.android.js +7 -2
  9. package/build/angular/components/activity-indicator/index.android.js.map +1 -1
  10. package/build/angular/components/activity-indicator/index.ios.js +3 -1
  11. package/build/angular/components/activity-indicator/index.ios.js.map +1 -1
  12. package/build/angular/components/activity-indicator/shared.d.ts +1 -1
  13. package/build/angular/components/activity-indicator/shared.js +1 -1
  14. package/build/angular/components/activity-indicator/shared.js.map +1 -1
  15. package/build/angular/components/button.d.ts +3 -0
  16. package/build/angular/components/button.js +22 -5
  17. package/build/angular/components/button.js.map +1 -1
  18. package/build/angular/components/flat-list/index.d.ts +1 -1
  19. package/build/angular/components/flat-list/index.js +47 -14
  20. package/build/angular/components/flat-list/index.js.map +1 -1
  21. package/build/angular/components/image/index.android.js +4 -10
  22. package/build/angular/components/image/index.android.js.map +1 -1
  23. package/build/angular/components/image/index.ios.js +4 -10
  24. package/build/angular/components/image/index.ios.js.map +1 -1
  25. package/build/angular/components/image/shared.d.ts +4 -4
  26. package/build/angular/components/image/shared.js +51 -33
  27. package/build/angular/components/image/shared.js.map +1 -1
  28. package/build/angular/components/image-background.d.ts +3 -0
  29. package/build/angular/components/image-background.js +32 -9
  30. package/build/angular/components/image-background.js.map +1 -1
  31. package/build/angular/components/input-accessory-view/index.d.ts +2 -1
  32. package/build/angular/components/input-accessory-view/index.js +18 -16
  33. package/build/angular/components/input-accessory-view/index.js.map +1 -1
  34. package/build/angular/components/keyboard-avoiding-view/index.d.ts +3 -1
  35. package/build/angular/components/keyboard-avoiding-view/index.js +56 -19
  36. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
  37. package/build/angular/components/modal/index.d.ts +1 -0
  38. package/build/angular/components/modal/index.js +21 -10
  39. package/build/angular/components/modal/index.js.map +1 -1
  40. package/build/angular/components/pressable/index.d.ts +10 -5
  41. package/build/angular/components/pressable/index.js +61 -16
  42. package/build/angular/components/pressable/index.js.map +1 -1
  43. package/build/angular/components/refresh-control/index.d.ts +2 -1
  44. package/build/angular/components/refresh-control/index.js +13 -9
  45. package/build/angular/components/refresh-control/index.js.map +1 -1
  46. package/build/angular/components/safe-area-view/index.d.ts +3 -1
  47. package/build/angular/components/safe-area-view/index.js +22 -20
  48. package/build/angular/components/safe-area-view/index.js.map +1 -1
  49. package/build/angular/components/scroll-view/index.android.js +44 -14
  50. package/build/angular/components/scroll-view/index.android.js.map +1 -1
  51. package/build/angular/components/scroll-view/index.ios.js +13 -5
  52. package/build/angular/components/scroll-view/index.ios.js.map +1 -1
  53. package/build/angular/components/scroll-view/projection.d.ts +32 -0
  54. package/build/angular/components/scroll-view/projection.js +212 -47
  55. package/build/angular/components/scroll-view/projection.js.map +1 -1
  56. package/build/angular/components/scroll-view/shared.d.ts +2 -0
  57. package/build/angular/components/scroll-view/shared.js +48 -11
  58. package/build/angular/components/scroll-view/shared.js.map +1 -1
  59. package/build/angular/components/scroll-view/sticky-header.js +7 -3
  60. package/build/angular/components/scroll-view/sticky-header.js.map +1 -1
  61. package/build/angular/components/section-list/index.d.ts +9 -1
  62. package/build/angular/components/section-list/index.js +72 -18
  63. package/build/angular/components/section-list/index.js.map +1 -1
  64. package/build/angular/components/switch/index.android.js +23 -9
  65. package/build/angular/components/switch/index.android.js.map +1 -1
  66. package/build/angular/components/switch/index.ios.js +23 -9
  67. package/build/angular/components/switch/index.ios.js.map +1 -1
  68. package/build/angular/components/switch/shared.d.ts +1 -1
  69. package/build/angular/components/switch/shared.js +5 -2
  70. package/build/angular/components/switch/shared.js.map +1 -1
  71. package/build/angular/components/text-input.d.ts +8 -2
  72. package/build/angular/components/text-input.js +79 -34
  73. package/build/angular/components/text-input.js.map +1 -1
  74. package/build/angular/components/touchable/index.d.ts +36 -7
  75. package/build/angular/components/touchable/index.js +280 -72
  76. package/build/angular/components/touchable/index.js.map +1 -1
  77. package/build/angular/components/touchable-native-feedback/index.d.ts +2 -1
  78. package/build/angular/components/touchable-native-feedback/index.js +19 -17
  79. package/build/angular/components/touchable-native-feedback/index.js.map +1 -1
  80. package/build/angular/components/virtualized-list/directives.js +4 -0
  81. package/build/angular/components/virtualized-list/directives.js.map +1 -1
  82. package/build/angular/components/virtualized-list/index.d.ts +8 -2
  83. package/build/angular/components/virtualized-list/index.js +207 -61
  84. package/build/angular/components/virtualized-list/index.js.map +1 -1
  85. package/build/angular/components/virtualized-section-list/directives.js.map +1 -1
  86. package/build/angular/components/virtualized-section-list/index.d.ts +21 -1
  87. package/build/angular/components/virtualized-section-list/index.js +100 -22
  88. package/build/angular/components/virtualized-section-list/index.js.map +1 -1
  89. package/build/angular/components.d.ts +2 -2
  90. package/build/angular/components.js +1 -1
  91. package/build/angular/components.js.map +1 -1
  92. package/build/angular/create-portal/index.d.ts +11 -2
  93. package/build/angular/create-portal/index.js +42 -12
  94. package/build/angular/create-portal/index.js.map +1 -1
  95. package/build/angular/create-tunnel/index.js.map +1 -1
  96. package/build/angular/descriptor-to-angular/index.js +3 -1
  97. package/build/angular/descriptor-to-angular/index.js.map +1 -1
  98. package/build/angular/diagnostics.d.ts +33 -0
  99. package/build/angular/diagnostics.js +82 -0
  100. package/build/angular/diagnostics.js.map +1 -0
  101. package/build/angular/gate-demand.d.ts +37 -0
  102. package/build/angular/gate-demand.js +84 -0
  103. package/build/angular/gate-demand.js.map +1 -0
  104. package/build/angular/host-instance/index.js +1 -1
  105. package/build/angular/host-instance/index.js.map +1 -1
  106. package/build/angular/index.d.ts +6 -2
  107. package/build/angular/index.js +16 -1
  108. package/build/angular/index.js.map +1 -1
  109. package/build/angular/modules/animated/create-animated-component.d.ts +1 -0
  110. package/build/angular/modules/animated/create-animated-component.js +41 -18
  111. package/build/angular/modules/animated/create-animated-component.js.map +1 -1
  112. package/build/angular/modules/app-registry/index.js.map +1 -1
  113. package/build/angular/modules/status-bar/index.js +1 -1
  114. package/build/angular/modules/status-bar/index.js.map +1 -1
  115. package/build/angular/primitives/index.d.ts +31 -2
  116. package/build/angular/primitives/index.js +81 -3
  117. package/build/angular/primitives/index.js.map +1 -1
  118. package/build/angular/primitives/shared.d.ts +9 -1
  119. package/build/angular/primitives/shared.js +49 -3
  120. package/build/angular/primitives/shared.js.map +1 -1
  121. package/build/angular/register.d.ts +1 -0
  122. package/build/angular/register.js +35 -0
  123. package/build/angular/register.js.map +1 -0
  124. package/build/angular/render/index.js +51 -6
  125. package/build/angular/render/index.js.map +1 -1
  126. package/build/angular/renderer/index.d.ts +1 -0
  127. package/build/angular/renderer/index.js +157 -21
  128. package/build/angular/renderer/index.js.map +1 -1
  129. package/build/angular/services/color-scheme.service.js.map +1 -1
  130. package/build/angular/services/window-dimensions.service.js +1 -1
  131. package/build/angular/services/window-dimensions.service.js.map +1 -1
  132. package/build/angular/state-style.d.ts +9 -0
  133. package/build/angular/state-style.js +39 -0
  134. package/build/angular/state-style.js.map +1 -0
  135. package/metro-transformer.cjs +69 -0
  136. package/package.json +27 -8
  137. package/src/anchor-host-registry.ts +3 -1
  138. package/src/bootstrap.ts +4 -1
  139. package/src/components/activity-indicator/index.android.ts +7 -2
  140. package/src/components/activity-indicator/index.ios.ts +3 -1
  141. package/src/components/activity-indicator/shared.ts +32 -13
  142. package/src/components/button.ts +36 -6
  143. package/src/components/flat-list/index.ts +91 -29
  144. package/src/components/image/index.android.ts +9 -6
  145. package/src/components/image/index.ios.ts +9 -6
  146. package/src/components/image/shared.ts +110 -45
  147. package/src/components/image-background.ts +47 -10
  148. package/src/components/input-accessory-view/index.ts +41 -18
  149. package/src/components/keyboard-avoiding-view/index.ts +76 -22
  150. package/src/components/modal/index.ts +39 -12
  151. package/src/components/pressable/index.ts +121 -31
  152. package/src/components/refresh-control/index.ts +36 -13
  153. package/src/components/safe-area-view/index.ts +44 -19
  154. package/src/components/scroll-view/index.android.ts +31 -9
  155. package/src/components/scroll-view/index.ios.ts +17 -4
  156. package/src/components/scroll-view/projection.ts +290 -63
  157. package/src/components/scroll-view/shared.ts +124 -30
  158. package/src/components/scroll-view/sticky-header.ts +25 -8
  159. package/src/components/section-list/index.ts +79 -19
  160. package/src/components/switch/index.android.ts +18 -7
  161. package/src/components/switch/index.ios.ts +18 -7
  162. package/src/components/switch/shared.ts +15 -4
  163. package/src/components/text-input.ts +119 -31
  164. package/src/components/touchable/index.ts +339 -72
  165. package/src/components/touchable-native-feedback/index.ts +50 -18
  166. package/src/components/virtualized-list/directives.ts +19 -5
  167. package/src/components/virtualized-list/index.ts +292 -72
  168. package/src/components/virtualized-section-list/directives.ts +6 -3
  169. package/src/components/virtualized-section-list/index.ts +164 -34
  170. package/src/components.ts +6 -1
  171. package/src/create-portal/index.ts +47 -11
  172. package/src/create-tunnel/index.ts +3 -1
  173. package/src/descriptor-to-angular/index.ts +29 -8
  174. package/src/diagnostics.ts +138 -0
  175. package/src/gate-demand.ts +109 -0
  176. package/src/host-instance/index.ts +9 -3
  177. package/src/index.ts +33 -2
  178. package/src/modules/animated/create-animated-component.ts +67 -19
  179. package/src/modules/app-registry/index.ts +3 -1
  180. package/src/modules/status-bar/index.ts +13 -4
  181. package/src/primitives/index.ts +73 -2
  182. package/src/primitives/shared.ts +70 -9
  183. package/src/register.ts +43 -0
  184. package/src/render/index.ts +59 -7
  185. package/src/renderer/index.ts +209 -37
  186. package/src/services/color-scheme.service.ts +3 -1
  187. package/src/services/window-dimensions.service.ts +11 -4
  188. package/src/state-style.ts +39 -0
@@ -42,8 +42,15 @@ import {
42
42
  // Mirrors React's ISafeAreaViewProps minus children (Angular takes children via <ng-content>),
43
43
  // declared per-adapter over the shared accessibility base since the framework-specific children
44
44
  // slot keeps it from being fully shared across adapters.
45
- export interface IAngularSafeAreaViewProps extends IAccessibilityProps, IAriaProps {
45
+ export interface IAngularSafeAreaViewProps
46
+ extends IAccessibilityProps, IAriaProps {
46
47
  style?: IStyleProp<IViewStyle>;
48
+ // `id` — accepted here and folded to `nativeID` by the shared plan, matching upstream, whose
49
+ // SafeAreaView takes the full ViewProps surface. Added 2026-09-01 with `ID_ALIAS` on the spec
50
+ // entry, deliberately as ONE change: the alias without this prop would make lowering fold a key
51
+ // no spelling of the component accepts, and this prop without the alias would send a raw `id` to
52
+ // Fabric, which declares no such key on any of these views.
53
+ id?: string;
47
54
  onLayout?: (event: ISymbioteEvent) => void;
48
55
  }
49
56
 
@@ -62,28 +69,30 @@ export type IAngularSafeAreaViewInputs = Omit<
62
69
  @Component({
63
70
  selector: 'SafeAreaView',
64
71
  standalone: true,
65
- hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }],
72
+ hostDirectives: [
73
+ { directive: SymbioteStyleInputDirective, inputs: ['style'] },
74
+ ],
66
75
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
67
76
  imports: [SafeAreaViewHost, SymbioteHostPropsDirective],
68
77
  changeDetection: ChangeDetectionStrategy.OnPush,
69
78
  template: `
70
- <symbiote-safe-area-view
71
- [symbioteHostProps]="hostProps()"
72
- (accessibilityAction)="emit(accessibilityAction, $event)"
73
- (accessibilityTap)="emit(accessibilityTap, $event)"
74
- (magicTap)="emit(magicTap, $event)"
75
- (accessibilityEscape)="emit(accessibilityEscape, $event)"
76
- (layout)="emit(layout, $event)"
77
- >
79
+ <symbiote-safe-area-view [symbioteHostProps]="hostProps()">
78
80
  <ng-content></ng-content>
79
81
  </symbiote-safe-area-view>
80
82
  `,
81
83
  })
82
- export class SafeAreaView implements IAngularSafeAreaViewInputs, OnChanges, DoCheck {
84
+ export class SafeAreaView
85
+ implements IAngularSafeAreaViewInputs, OnChanges, DoCheck
86
+ {
83
87
  @Input() style?: IStyleProp<IViewStyle>;
84
88
  // Real @Output()s, not `[onX]="…"` callbacks. Safe to name `layout` the same as the native
85
89
  // `layout` event fired inside this component's own template — the engine's bubble() treats
86
90
  // ANCHOR_HOST_COMPONENTS as transparent to listener lookup, so there is no double-fire.
91
+ // `layout` plus the four accessibility events are all boolean-GATED Fabric events
92
+ // (`.claude/rules/fabric-boolean-event-gates.md`): native fires them only when the committed
93
+ // payload carries a FUNCTION at that key, so a template binding here lit the gate on every
94
+ // instance whether or not an app ever subscribed. Moved into `hostProps()`'s flat bag below,
95
+ // `.observed`-gated — the shape `Pressable`'s `accessibilityEmitterHandler` already uses.
87
96
  @Output() readonly layout = new EventEmitter<ISymbioteEvent>();
88
97
  @Output() readonly accessibilityAction = new EventEmitter<ISymbioteEvent>();
89
98
  @Output() readonly accessibilityTap = new EventEmitter<ISymbioteEvent>();
@@ -99,8 +108,10 @@ export class SafeAreaView implements IAngularSafeAreaViewInputs, OnChanges, DoCh
99
108
  @Input() accessibilityValue?: IAccessibilityProps['accessibilityValue'];
100
109
  @Input() accessibilityActions?: IAccessibilityProps['accessibilityActions'];
101
110
  @Input() accessibilityLabelledBy?: string | string[];
102
- @Input() importantForAccessibility?: IAccessibilityProps['importantForAccessibility'];
103
- @Input() accessibilityLiveRegion?: IAccessibilityProps['accessibilityLiveRegion'];
111
+ @Input()
112
+ importantForAccessibility?: IAccessibilityProps['importantForAccessibility'];
113
+ @Input()
114
+ accessibilityLiveRegion?: IAccessibilityProps['accessibilityLiveRegion'];
104
115
  @Input() screenReaderFocusable?: boolean;
105
116
  @Input() accessibilityViewIsModal?: boolean;
106
117
  @Input() accessibilityElementsHidden?: boolean;
@@ -130,13 +141,20 @@ export class SafeAreaView implements IAngularSafeAreaViewInputs, OnChanges, DoCh
130
141
  // the only ElementRef in the class.
131
142
  private readonly elementRef = inject(ElementRef);
132
143
 
133
- // Forward an engine event to the matching @Output(), narrowing the template's untyped
134
- // $event first. layout / accessibility* arrive on the engine's structural event channel
135
- // (Angular blocks [onX] property bindings; events flow through (event) only).
136
- emit(emitter: EventEmitter<ISymbioteEvent>, event: unknown): void {
144
+ // Forward an engine event to the matching @Output(), narrowing the untyped event first.
145
+ private emit(emitter: EventEmitter<ISymbioteEvent>, event: unknown): void {
137
146
  if (isSymbioteEvent(event)) emitter.emit(event);
138
147
  }
139
148
 
149
+ // `.observed`-gated, mirroring Pressable's `accessibilityEmitterHandler`: `undefined` here
150
+ // means `setEventListener` never sees a function, so the gated prop's flag never lights
151
+ // (`fabric-boolean-event-gates.md`, "The flag follows the VALUE, not the key").
152
+ private eventEmitterHandler(
153
+ emitter: EventEmitter<ISymbioteEvent>,
154
+ ): ((event: unknown) => void) | undefined {
155
+ return emitter.observed ? event => this.emit(emitter, event) : undefined;
156
+ }
157
+
140
158
  // Bridges the non-reactive fields `hostProps` reads into the reactive graph, so it can memoize.
141
159
  // Plain fields read inside a computed() are UNTRACKED - something must signal "a dependency
142
160
  // changed" or the bag goes stale. Signal inputs would do this natively, but `input()` is visible
@@ -199,8 +217,10 @@ export class SafeAreaView implements IAngularSafeAreaViewInputs, OnChanges, DoCh
199
217
  accessibilityElementsHidden: this.accessibilityElementsHidden,
200
218
  accessibilityIgnoresInvertColors: this.accessibilityIgnoresInvertColors,
201
219
  accessibilityLanguage: this.accessibilityLanguage,
202
- accessibilityRespondsToUserInteraction: this.accessibilityRespondsToUserInteraction,
203
- accessibilityShowsLargeContentViewer: this.accessibilityShowsLargeContentViewer,
220
+ accessibilityRespondsToUserInteraction:
221
+ this.accessibilityRespondsToUserInteraction,
222
+ accessibilityShowsLargeContentViewer:
223
+ this.accessibilityShowsLargeContentViewer,
204
224
  accessibilityLargeContentTitle: this.accessibilityLargeContentTitle,
205
225
  role: this.role,
206
226
  'aria-label': this.ariaLabel,
@@ -217,6 +237,11 @@ export class SafeAreaView implements IAngularSafeAreaViewInputs, OnChanges, DoCh
217
237
  'aria-valuemin': this.ariaValueMin,
218
238
  'aria-valuenow': this.ariaValueNow,
219
239
  'aria-valuetext': this.ariaValueText,
240
+ onLayout: this.eventEmitterHandler(this.layout),
241
+ onAccessibilityAction: this.eventEmitterHandler(this.accessibilityAction),
242
+ onAccessibilityTap: this.eventEmitterHandler(this.accessibilityTap),
243
+ onMagicTap: this.eventEmitterHandler(this.magicTap),
244
+ onAccessibilityEscape: this.eventEmitterHandler(this.accessibilityEscape),
220
245
  });
221
246
  });
222
247
  }
@@ -43,7 +43,11 @@ import {
43
43
  SymbioteHostPropsDirective,
44
44
  SymbioteStyleInputDirective,
45
45
  } from '../../primitives';
46
- import { ScrollViewBase, ScrollViewProjectionDirective, SCROLL_VIEW_INPUTS } from './shared';
46
+ import {
47
+ ScrollViewBase,
48
+ ScrollViewProjectionDirective,
49
+ SCROLL_VIEW_INPUTS,
50
+ } from './shared';
47
51
  export type { IAngularScrollViewProps, IScrollViewHandle } from './shared';
48
52
 
49
53
  // Minimal local twin of `@angular/common`'s NgTemplateOutlet (this adapter deliberately has no
@@ -66,7 +70,9 @@ export class SymbioteTemplateOutletDirective implements OnChanges, OnDestroy {
66
70
  this.viewRef = undefined;
67
71
  }
68
72
  if (this.symbioteTemplateOutlet !== null) {
69
- this.viewRef = this.viewContainerRef.createEmbeddedView(this.symbioteTemplateOutlet);
73
+ this.viewRef = this.viewContainerRef.createEmbeddedView(
74
+ this.symbioteTemplateOutlet,
75
+ );
70
76
  }
71
77
  }
72
78
 
@@ -87,7 +93,9 @@ function asStyle(value: unknown): IStyleProp<IViewStyle> | undefined {
87
93
  @Component({
88
94
  selector: 'ScrollView',
89
95
  standalone: true,
90
- hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }],
96
+ hostDirectives: [
97
+ { directive: SymbioteStyleInputDirective, inputs: ['style'] },
98
+ ],
91
99
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
92
100
  imports: [
93
101
  ScrollViewHost,
@@ -120,17 +128,24 @@ function asStyle(value: unknown): IStyleProp<IViewStyle> | undefined {
120
128
  [symbioteHostProps]="contentProps()"
121
129
  [symbioteScrollViewProjection]="projectionController"
122
130
  >
123
- <ng-container [symbioteTemplateOutlet]="sharedContent"></ng-container>
131
+ <ng-container
132
+ [symbioteTemplateOutlet]="sharedContent"
133
+ ></ng-container>
124
134
  </symbiote-horizontal-scroll-content>
125
135
  </symbiote-horizontal-scroll-view>
126
136
  </symbiote-refresh-control>
127
137
  } @else {
128
- <symbiote-horizontal-scroll-view #host="symbioteHost" [symbioteHostProps]="scrollProps()">
138
+ <symbiote-horizontal-scroll-view
139
+ #host="symbioteHost"
140
+ [symbioteHostProps]="scrollProps()"
141
+ >
129
142
  <symbiote-horizontal-scroll-content
130
143
  [symbioteHostProps]="contentProps()"
131
144
  [symbioteScrollViewProjection]="projectionController"
132
145
  >
133
- <ng-container [symbioteTemplateOutlet]="sharedContent"></ng-container>
146
+ <ng-container
147
+ [symbioteTemplateOutlet]="sharedContent"
148
+ ></ng-container>
134
149
  </symbiote-horizontal-scroll-content>
135
150
  </symbiote-horizontal-scroll-view>
136
151
  }
@@ -149,17 +164,24 @@ function asStyle(value: unknown): IStyleProp<IViewStyle> | undefined {
149
164
  [symbioteHostProps]="contentProps()"
150
165
  [symbioteScrollViewProjection]="projectionController"
151
166
  >
152
- <ng-container [symbioteTemplateOutlet]="sharedContent"></ng-container>
167
+ <ng-container
168
+ [symbioteTemplateOutlet]="sharedContent"
169
+ ></ng-container>
153
170
  </symbiote-scroll-content>
154
171
  </symbiote-scroll-view>
155
172
  </symbiote-refresh-control>
156
173
  } @else {
157
- <symbiote-scroll-view #host="symbioteHost" [symbioteHostProps]="scrollProps()">
174
+ <symbiote-scroll-view
175
+ #host="symbioteHost"
176
+ [symbioteHostProps]="scrollProps()"
177
+ >
158
178
  <symbiote-scroll-content
159
179
  [symbioteHostProps]="contentProps()"
160
180
  [symbioteScrollViewProjection]="projectionController"
161
181
  >
162
- <ng-container [symbioteTemplateOutlet]="sharedContent"></ng-container>
182
+ <ng-container
183
+ [symbioteTemplateOutlet]="sharedContent"
184
+ ></ng-container>
163
185
  </symbiote-scroll-content>
164
186
  </symbiote-scroll-view>
165
187
  }
@@ -16,7 +16,11 @@
16
16
  // a horizontal FlatList's cells landed outside the ScrollView entirely. Fix: single unconditional
17
17
  // `<ng-content>` call site.
18
18
 
19
- import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component } from '@angular/core';
19
+ import {
20
+ CUSTOM_ELEMENTS_SCHEMA,
21
+ ChangeDetectionStrategy,
22
+ Component,
23
+ } from '@angular/core';
20
24
  import {
21
25
  RefreshControlHost,
22
26
  ScrollContentView,
@@ -24,7 +28,11 @@ import {
24
28
  SymbioteHostPropsDirective,
25
29
  SymbioteStyleInputDirective,
26
30
  } from '../../primitives';
27
- import { ScrollViewBase, ScrollViewProjectionDirective, SCROLL_VIEW_INPUTS } from './shared';
31
+ import {
32
+ ScrollViewBase,
33
+ ScrollViewProjectionDirective,
34
+ SCROLL_VIEW_INPUTS,
35
+ } from './shared';
28
36
  export type { IAngularScrollViewProps, IScrollViewHandle } from './shared';
29
37
 
30
38
  // The symbiote-* host elements are imported as standalone components; the props directive is
@@ -32,7 +40,9 @@ export type { IAngularScrollViewProps, IScrollViewHandle } from './shared';
32
40
  @Component({
33
41
  selector: 'ScrollView',
34
42
  standalone: true,
35
- hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }],
43
+ hostDirectives: [
44
+ { directive: SymbioteStyleInputDirective, inputs: ['style'] },
45
+ ],
36
46
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
37
47
  imports: [
38
48
  ScrollViewHost,
@@ -44,7 +54,10 @@ export type { IAngularScrollViewProps, IScrollViewHandle } from './shared';
44
54
  changeDetection: ChangeDetectionStrategy.OnPush,
45
55
  inputs: SCROLL_VIEW_INPUTS,
46
56
  template: `
47
- <symbiote-scroll-view #host="symbioteHost" [symbioteHostProps]="scrollProps()">
57
+ <symbiote-scroll-view
58
+ #host="symbioteHost"
59
+ [symbioteHostProps]="scrollProps()"
60
+ >
48
61
  @if (hasProjectedRefreshControl) {
49
62
  <symbiote-refresh-control
50
63
  #refreshHost="symbioteHost"