@symbiote-native/angular 3.1.2 → 3.2.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 (121) hide show
  1. package/build/angular/accessibility-events.d.ts +12 -0
  2. package/build/angular/accessibility-events.js +28 -0
  3. package/build/angular/accessibility-events.js.map +1 -0
  4. package/build/angular/accessibility-inputs.d.ts +40 -0
  5. package/build/angular/accessibility-inputs.js +130 -0
  6. package/build/angular/accessibility-inputs.js.map +1 -0
  7. package/build/angular/bootstrap.d.ts +3 -1
  8. package/build/angular/bootstrap.js +4 -1
  9. package/build/angular/bootstrap.js.map +1 -1
  10. package/build/angular/components/flat-list/flat-list-template.d.ts +1 -0
  11. package/build/angular/components/flat-list/flat-list-template.js +158 -0
  12. package/build/angular/components/flat-list/flat-list-template.js.map +1 -0
  13. package/build/angular/components/flat-list/index.d.ts +6 -61
  14. package/build/angular/components/flat-list/index.js +26 -463
  15. package/build/angular/components/flat-list/index.js.map +1 -1
  16. package/build/angular/components/keyboard-avoiding-view/index.d.ts +4 -40
  17. package/build/angular/components/keyboard-avoiding-view/index.js +7 -131
  18. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
  19. package/build/angular/components/modal/index.d.ts +5 -41
  20. package/build/angular/components/modal/index.js +8 -133
  21. package/build/angular/components/modal/index.js.map +1 -1
  22. package/build/angular/components/section-list/index.d.ts +4 -51
  23. package/build/angular/components/section-list/index.js +18 -335
  24. package/build/angular/components/section-list/index.js.map +1 -1
  25. package/build/angular/components/virtualized-list/cell-registry.d.ts +35 -0
  26. package/build/angular/components/virtualized-list/cell-registry.js +133 -0
  27. package/build/angular/components/virtualized-list/cell-registry.js.map +1 -0
  28. package/build/angular/components/virtualized-list/index.d.ts +18 -253
  29. package/build/angular/components/virtualized-list/index.js +112 -1178
  30. package/build/angular/components/virtualized-list/index.js.map +1 -1
  31. package/build/angular/components/virtualized-list/list-a11y-forward.d.ts +1 -0
  32. package/build/angular/components/virtualized-list/list-a11y-forward.js +42 -0
  33. package/build/angular/components/virtualized-list/list-a11y-forward.js.map +1 -0
  34. package/build/angular/components/virtualized-list/list-bags.d.ts +32 -0
  35. package/build/angular/components/virtualized-list/list-bags.js +120 -0
  36. package/build/angular/components/virtualized-list/list-bags.js.map +1 -0
  37. package/build/angular/components/virtualized-list/list-effects.d.ts +31 -0
  38. package/build/angular/components/virtualized-list/list-effects.js +83 -0
  39. package/build/angular/components/virtualized-list/list-effects.js.map +1 -0
  40. package/build/angular/components/virtualized-list/list-events.d.ts +17 -0
  41. package/build/angular/components/virtualized-list/list-events.js +34 -0
  42. package/build/angular/components/virtualized-list/list-events.js.map +1 -0
  43. package/build/angular/components/virtualized-list/list-handle.d.ts +35 -0
  44. package/build/angular/components/virtualized-list/list-handle.js +61 -0
  45. package/build/angular/components/virtualized-list/list-handle.js.map +1 -0
  46. package/build/angular/components/virtualized-list/list-inputs.d.ts +78 -0
  47. package/build/angular/components/virtualized-list/list-inputs.js +150 -0
  48. package/build/angular/components/virtualized-list/list-inputs.js.map +1 -0
  49. package/build/angular/components/virtualized-list/list-props.d.ts +58 -0
  50. package/build/angular/components/virtualized-list/list-props.js +3 -0
  51. package/build/angular/components/virtualized-list/list-props.js.map +1 -0
  52. package/build/angular/components/virtualized-list/list-styles.d.ts +23 -0
  53. package/build/angular/components/virtualized-list/list-styles.js +26 -0
  54. package/build/angular/components/virtualized-list/list-styles.js.map +1 -0
  55. package/build/angular/components/virtualized-list/list-template.d.ts +1 -0
  56. package/build/angular/components/virtualized-list/list-template.js +176 -0
  57. package/build/angular/components/virtualized-list/list-template.js.map +1 -0
  58. package/build/angular/components/virtualized-section-list/index.d.ts +13 -70
  59. package/build/angular/components/virtualized-section-list/index.js +22 -455
  60. package/build/angular/components/virtualized-section-list/index.js.map +1 -1
  61. package/build/angular/components/virtualized-section-list/section-list-template.d.ts +1 -0
  62. package/build/angular/components/virtualized-section-list/section-list-template.js +107 -0
  63. package/build/angular/components/virtualized-section-list/section-list-template.js.map +1 -0
  64. package/build/angular/finalization-registry.d.ts +4 -0
  65. package/build/angular/finalization-registry.js +17 -0
  66. package/build/angular/finalization-registry.js.map +1 -0
  67. package/build/angular/index.d.ts +5 -1
  68. package/build/angular/index.js +5 -1
  69. package/build/angular/index.js.map +1 -1
  70. package/build/angular/native-view-base.d.ts +19 -0
  71. package/build/angular/native-view-base.js +48 -0
  72. package/build/angular/native-view-base.js.map +1 -0
  73. package/build/angular/render/index.d.ts +2 -1
  74. package/build/angular/render/index.js +46 -73
  75. package/build/angular/render/index.js.map +1 -1
  76. package/build/angular/services/connect-watched-signal.d.ts +2 -0
  77. package/build/angular/services/connect-watched-signal.js +9 -0
  78. package/build/angular/services/connect-watched-signal.js.map +1 -0
  79. package/build/angular/services/create-event-value-hook.d.ts +3 -0
  80. package/build/angular/services/create-event-value-hook.js +17 -0
  81. package/build/angular/services/create-event-value-hook.js.map +1 -0
  82. package/build/angular/services/create-resource-hook.d.ts +7 -0
  83. package/build/angular/services/create-resource-hook.js +20 -0
  84. package/build/angular/services/create-resource-hook.js.map +1 -0
  85. package/build/angular/services/index.d.ts +4 -0
  86. package/build/angular/services/index.js +4 -0
  87. package/build/angular/services/index.js.map +1 -1
  88. package/build/angular/services/permissions-service-base.d.ts +14 -0
  89. package/build/angular/services/permissions-service-base.js +38 -0
  90. package/build/angular/services/permissions-service-base.js.map +1 -0
  91. package/package.json +6 -6
  92. package/src/accessibility-events.ts +13 -0
  93. package/src/accessibility-inputs.ts +89 -0
  94. package/src/bootstrap.ts +6 -2
  95. package/src/components/flat-list/flat-list-template.ts +159 -0
  96. package/src/components/flat-list/index.ts +30 -307
  97. package/src/components/keyboard-avoiding-view/index.ts +4 -78
  98. package/src/components/modal/index.ts +7 -80
  99. package/src/components/section-list/index.ts +21 -172
  100. package/src/components/virtualized-list/cell-registry.ts +199 -0
  101. package/src/components/virtualized-list/index.ts +145 -1181
  102. package/src/components/virtualized-list/list-a11y-forward.ts +42 -0
  103. package/src/components/virtualized-list/list-bags.ts +142 -0
  104. package/src/components/virtualized-list/list-effects.ts +116 -0
  105. package/src/components/virtualized-list/list-events.ts +31 -0
  106. package/src/components/virtualized-list/list-handle.ts +92 -0
  107. package/src/components/virtualized-list/list-inputs.ts +149 -0
  108. package/src/components/virtualized-list/list-props.ts +81 -0
  109. package/src/components/virtualized-list/list-styles.ts +62 -0
  110. package/src/components/virtualized-list/list-template.ts +175 -0
  111. package/src/components/virtualized-section-list/index.ts +40 -351
  112. package/src/components/virtualized-section-list/section-list-template.ts +108 -0
  113. package/src/finalization-registry.ts +18 -0
  114. package/src/index.ts +12 -1
  115. package/src/native-view-base.ts +51 -0
  116. package/src/render/index.ts +76 -77
  117. package/src/services/connect-watched-signal.ts +15 -0
  118. package/src/services/create-event-value-hook.ts +24 -0
  119. package/src/services/create-resource-hook.ts +32 -0
  120. package/src/services/index.ts +4 -0
  121. package/src/services/permissions-service-base.ts +46 -0
@@ -1,42 +1,15 @@
1
- // FlatList, the Angular convenience surface over VirtualizedList. It takes a plain `data` array
2
- // and derives getItem/getItemCount; numColumns packs items into rows (each row a flex-row of N
3
- // columns), so the virtualized stream is rows, not items (RN's FlatList). Windowing / viewability /
4
- // batching / imperative scrolling are inherited from VirtualizedList; the data shaping
5
- // (chunkIntoRows / rowKeyExtractor / expandRowViewability / row-separator unwrap) is shared
6
- // verbatim from @symbiote-native/components, same as React/Vue's FlatLists.
7
- //
8
- // TEMPLATE FORWARDING — both column paths RE-STAMP; neither uses a bare `<ng-content>` passthrough.
9
- // Angular's @ContentChild does NOT resolve a directive across a SECOND `<ng-content>` re-projection
10
- // hop (only what's projected directly onto the querying component's own tag) — a bare
11
- // `<VirtualizedList ...><ng-content></ng-content></VirtualizedList>` left VirtualizedList's own
12
- // itemDir/headerDir/etc. undefined, rendering every cell empty (confirmed device bug, see
13
- // flat-list.test.ts). Fixed for both column modes:
14
- // * Single column (numColumns <= 1): FlatList captures the app's `<ng-template vListItem>` (and
15
- // vListHeader/vListFooter/vListEmpty/vListSeparator) with its OWN @ContentChild — a single,
16
- // direct projection hop, which always resolves. The per-cell item and separator templates go
17
- // straight in through VirtualizedList's `[itemTemplate]`/`[itemSeparatorTemplate]`, so a cell
18
- // is ONE outlet deep (a re-stamp doubled every cell's embedded views); the once-per-list
19
- // header/footer/empty slots are still re-stamped.
20
- // * Multi column (numColumns > 1): same re-stamp, but the app's vListItem is typed for ItemT
21
- // while the virtualized stream is rows (IRow<ItemT>), so a plain passthrough couldn't work
22
- // regardless. The row vListItem lays out the N columns side by side (each cell stamps the
23
- // app's item template via VListOutletDirective with context {item, index: row.startIndex +
24
- // column, separators}), the row vListSeparator unwraps the flanking rows to their last/first
25
- // item, and onViewableItemsChanged is wrapped with expandRowViewability so the caller still
26
- // sees per-item visibility — mirrors how Vue's FlatList intercepts renderItem with renderRow.
27
- //
28
- // The imperative handle (scrollToIndex / scrollToOffset / scrollToEnd / scrollToItem /
29
- // recordInteraction / flashScrollIndicators / getScroll* / getNativeScrollRef) is RN's FlatList
30
- // surface, delegated straight to the inner VirtualizedList (@ViewChild). The element-returning
31
- // props (renderItem / ItemSeparatorComponent / List{Header,Footer,Empty}Component) are templates
32
- // in Angular, so they're absent from IFlatListProps per the per-adapter children/render split;
33
- // everything else mirrors IVirtualizedListProps.
34
- import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild, inject, } from '@angular/core';
1
+ // FlatList, the convenience surface over VirtualizedList: a plain `data` array, and `numColumns`
2
+ // packing items into rows so the virtualized stream is rows, not items. The row shaping is shared
3
+ // with the React and Vue FlatLists, windowing and the scroll handle come from VirtualizedList
4
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, inject, } from '@angular/core';
35
5
  import { SINGLE_COLUMN, chunkIntoRows, expandRowViewability, firstItemOfRow, lastItemOfRow, removeClippedSubviewsOrDefault, rowKeyExtractor, } from '@symbiote-native/components';
36
6
  import { Platform, dlog, flattenStyle, resolveClassName, } from '@symbiote-native/engine';
37
7
  import { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
38
8
  import { VListOutletDirective } from '../virtualized-list/directives';
9
+ import { ListInputsBase } from '../virtualized-list/list-inputs';
10
+ import { provideGateDemand } from '../../gate-demand';
39
11
  import { stableAnchorStyle, SymbioteStyleInputDirective, ViewHost, } from '../../primitives';
12
+ import { FLAT_LIST_TEMPLATE } from './flat-list-template';
40
13
  import * as i0 from "@angular/core";
41
14
  import * as i1 from "../../primitives/shared";
42
15
  function isRecord(value) {
@@ -52,52 +25,35 @@ function isSeparators(value) {
52
25
  typeof value['highlight'] === 'function' &&
53
26
  typeof value['unhighlight'] === 'function');
54
27
  }
55
- // Used only as a type-safe fallback if a row's separators handle is ever absent; VirtualizedList
56
- // always supplies a real one, so in practice the live handle flows through.
28
+ // A fallback for a row whose separators handle is absent, `VirtualizedList` always supplies one
57
29
  const NOOP_SEPARATORS = {
58
30
  highlight: () => undefined,
59
31
  unhighlight: () => undefined,
60
32
  updateProps: () => undefined,
61
33
  };
62
34
  export { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
63
- export class FlatList {
35
+ export class FlatList extends ListInputsBase {
64
36
  constructor() {
65
- // The list's edge/viewability/failure events as real Angular events: `(endReached)="…"`, not
66
- // `[onEndReached]="…"` — re-emitted straight from the inner VirtualizedList's own @Output()s (see
67
- // the template's `(endReached)="endReached.emit($event)"` style forwarding above).
68
- this.endReached = new EventEmitter();
69
- this.startReached = new EventEmitter();
70
- this.refresh = new EventEmitter();
71
- this.viewableItemsChanged = new EventEmitter();
72
- this.scrollToIndexFailed = new EventEmitter();
73
- // This component's OWN host — the non-painting anchor `class="..."` at the use site resolves
74
- // onto (see anchorHostStyle's doc comment) — NOT `listRef` above, which targets the real inner
75
- // `<VirtualizedList>` one level down (itself its own separate anchor host).
37
+ super(...arguments);
38
+ // This component's own host, the anchor `class="..."` resolves onto, not the inner list's
76
39
  this.elementRef = inject(ElementRef);
77
- // --- derived view state (recomputed in ngOnChanges, stable identity across CD) ---
78
40
  this.rows = [];
79
- // Angular's [style]="…" binding compiles to the built-in ɵɵstyleMap instruction (NOT a
80
- // regular @Input() property write), which only understands a flat object — an array (RN's
81
- // own `style={[a, b]}` composition idiom) crashes deep inside Angular's styling engine. So
82
- // every style value this component stamps onto a template `[style]=` binding is flattened
83
- // via the engine's own flattenStyle first, here at the source rather than at each call site.
41
+ // `[style]` compiles to an instruction that takes a flat object only, so styles are flattened
84
42
  this.rowStyle = flattenStyle([{ flexDirection: 'row' }]);
85
43
  this.columnCellStyle = { flex: 1 };
86
44
  this.resolvedStyle = undefined;
87
- // ---- single-column data adaptation (plain array -> getItem/getItemCount) ----
88
45
  this.getFlatItem = (_data, index) => this.data[index];
89
46
  this.getFlatCount = (_data) => this.data.length;
90
- // ---- multi-column data adaptation (the virtualized stream is rows) ----
47
+ // With several columns the virtualized stream is rows
91
48
  this.getRow = (_data, index) => this.rows[index];
92
49
  this.getRowCount = (_data) => this.rows.length;
93
50
  this.rowKey = (row, _index) => rowKeyExtractor(row, this.keyExtractor);
94
- // Viewability over rows expands back to per-item tokens, so the caller sees item-level
95
- // visibility, not row-level (shared expandRowViewability), matching Vue.
51
+ // Row viewability expands back to per-item tokens, so the caller sees items, not rows
96
52
  this.rowViewableItemsChanged = (info) => {
97
53
  this.viewableItemsChanged.emit(expandRowViewability(info, this.keyExtractor));
98
54
  };
99
55
  }
100
- // FlatList.js always sends it, defaulted per platform.
56
+ // The list always gets a value here, defaulted per platform
101
57
  get resolvedRemoveClippedSubviews() {
102
58
  return removeClippedSubviewsOrDefault(this.removeClippedSubviews, Platform.OS);
103
59
  }
@@ -107,18 +63,14 @@ export class FlatList {
107
63
  get isMultiColumn() {
108
64
  return this.columns > SINGLE_COLUMN;
109
65
  }
110
- // ngDoCheck, NOT ngOnChanges: a bare `class=` never becomes an @Input, so ngOnChanges does not
111
- // RUN for it and the merge froze at its creation value (a stranded tile on the ReactiveStyle
112
- // canary). stableAnchorStyle, not a bare flattenStyle, keeps `resolvedStyle`'s reference stable
113
- // across ticks that changed nothing - a fresh object every tick defeats VirtualizedList's own
114
- // dedup gate and free-runs CD (see stableAnchorStyle's doc comment).
66
+ // `ngDoCheck`, not `ngOnChanges`: a bare `class=` never becomes an input and would freeze the
67
+ // merge. `stableAnchorStyle` keeps the reference steady so the inner list's dedup gate holds
115
68
  ngDoCheck() {
116
69
  this.resolvedStyle = stableAnchorStyle(this.elementRef, this.style, this.resolvedStyle);
117
70
  }
118
71
  ngOnChanges(changes) {
119
72
  if (changes['columnWrapperStyle'] !== undefined) {
120
- // A class-name string resolves through the shared registry before flattenStyle, which
121
- // only understands style objects/arrays.
73
+ // A class-name string resolves through the shared registry before `flattenStyle`
122
74
  const resolvedColumnWrapperStyle = typeof this.columnWrapperStyle === 'string'
123
75
  ? resolveClassName(this.columnWrapperStyle)
124
76
  : this.columnWrapperStyle;
@@ -146,10 +98,8 @@ export class FlatList {
146
98
  },
147
99
  }));
148
100
  }
149
- // Lay out one row's N columns: every item shares the row's separators handle (the divider sits
150
- // between rows, not columns) and carries its absolute index (row.startIndex + column), like RN's
151
- // multi-column FlatList. Args arrive `unknown` from the template's `let` bindings (Angular cannot
152
- // type a generic structural directive's context), narrowed here — no `as`.
101
+ // Every item shares the row's separators handle and carries its absolute index. The arguments
102
+ // arrive `unknown` from the template's `let` bindings and are narrowed here
153
103
  rowCells(row, separators) {
154
104
  if (!isRow(row))
155
105
  return [];
@@ -162,9 +112,7 @@ export class FlatList {
162
112
  return { key, context: { $implicit: item, index, separators: handle } };
163
113
  });
164
114
  }
165
- // The divider between rows shows real items (last of the row above, first of the row below), so the
166
- // app's separator template, typed on ItemT, sees items rather than the IRow wrapper. Args arrive
167
- // `unknown` from the template's `let` bindings, narrowed here.
115
+ // The divider between rows shows real items, so the app's separator template sees items
168
116
  rowSeparatorContext(highlighted, leadingRow, trailingRow) {
169
117
  const isHighlighted = highlighted === true;
170
118
  return {
@@ -178,7 +126,6 @@ export class FlatList {
178
126
  : undefined,
179
127
  };
180
128
  }
181
- // ---- imperative handle (RN FlatList surface) — delegates to the inner VirtualizedList ----
182
129
  scrollToOffset(params) {
183
130
  this.listRef?.scrollToOffset(params);
184
131
  }
@@ -209,163 +156,15 @@ export class FlatList {
209
156
  recordInteraction() {
210
157
  this.listRef?.recordInteraction();
211
158
  }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FlatList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: FlatList, isStandalone: true, selector: "FlatList", inputs: { data: "data", testID: "testID", numColumns: "numColumns", columnWrapperStyle: "columnWrapperStyle", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", horizontal: "horizontal", inverted: "inverted", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", viewabilityConfig: "viewabilityConfig", viewabilityConfigCallbackPairs: "viewabilityConfigCallbackPairs", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", stickyHeaderIndices: "stickyHeaderIndices", maintainVisibleContentPosition: "maintainVisibleContentPosition", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", scrollEventThrottle: "scrollEventThrottle", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", keyboardDismissMode: "keyboardDismissMode", removeClippedSubviews: "removeClippedSubviews", nestedScrollEnabled: "nestedScrollEnabled", style: "style", contentContainerStyle: "contentContainerStyle" }, outputs: { endReached: "endReached", startReached: "startReached", refresh: "refresh", viewableItemsChanged: "viewableItemsChanged", scrollToIndexFailed: "scrollToIndexFailed" }, queries: [{ propertyName: "itemDir", first: true, predicate: VListItemDirective, descendants: true }, { propertyName: "headerDir", first: true, predicate: VListHeaderDirective, descendants: true }, { propertyName: "footerDir", first: true, predicate: VListFooterDirective, descendants: true }, { propertyName: "emptyDir", first: true, predicate: VListEmptyDirective, descendants: true }, { propertyName: "separatorDir", first: true, predicate: VListSeparatorDirective, descendants: true }], viewQueries: [{ propertyName: "listRef", first: true, predicate: VirtualizedList, descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `
214
- @if (isMultiColumn) {
215
- <VirtualizedList
216
- [data]="rows"
217
- [getItem]="getRow"
218
- [getItemCount]="getRowCount"
219
- [keyExtractor]="rowKey"
220
- [getItemLayout]="getItemLayout"
221
- [horizontal]="horizontal"
222
- [inverted]="inverted"
223
- [extraData]="extraData"
224
- (endReached)="endReached.emit($event)"
225
- [onEndReachedThreshold]="onEndReachedThreshold"
226
- (startReached)="startReached.emit($event)"
227
- [onStartReachedThreshold]="onStartReachedThreshold"
228
- (refresh)="refresh.emit()"
229
- [refreshRequested]="refresh.observed"
230
- [refreshing]="refreshing"
231
- [progressViewOffset]="progressViewOffset"
232
- (viewableItemsChanged)="rowViewableItemsChanged($event)"
233
- [viewabilityConfig]="viewabilityConfig"
234
- [viewabilityConfigCallbackPairs]="rowViewabilityPairs"
235
- (scrollToIndexFailed)="scrollToIndexFailed.emit($event)"
236
- [initialNumToRender]="initialNumToRender"
237
- [initialScrollIndex]="initialScrollIndex"
238
- [maxToRenderPerBatch]="maxToRenderPerBatch"
239
- [updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
240
- [windowSize]="windowSize"
241
- [stickyHeaderIndices]="stickyHeaderIndices"
242
- [maintainVisibleContentPosition]="maintainVisibleContentPosition"
243
- [onScroll]="onScroll"
244
- [onScrollBeginDrag]="onScrollBeginDrag"
245
- [onScrollEndDrag]="onScrollEndDrag"
246
- [onMomentumScrollBegin]="onMomentumScrollBegin"
247
- [onMomentumScrollEnd]="onMomentumScrollEnd"
248
- [scrollEventThrottle]="scrollEventThrottle"
249
- [keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
250
- [keyboardDismissMode]="keyboardDismissMode"
251
- [removeClippedSubviews]="resolvedRemoveClippedSubviews"
252
- [nestedScrollEnabled]="nestedScrollEnabled"
253
- [testID]="testID"
254
- [style]="resolvedStyle"
255
- [contentContainerStyle]="contentContainerStyle"
256
- >
257
- <ng-template vListItem let-row let-separators="separators">
258
- <view [style]="rowStyle">
259
- @for (cell of rowCells(row, separators); track cell.key) {
260
- <view [style]="columnCellStyle">
261
- <ng-container
262
- [vListOutlet]="itemDir?.templateRef"
263
- [vListOutletContext]="cell.context"
264
- ></ng-container>
265
- </view>
266
- }
267
- </view>
268
- </ng-template>
269
- @if (headerDir !== undefined) {
270
- <ng-template vListHeader>
271
- <ng-container [vListOutlet]="headerDir.templateRef"></ng-container>
272
- </ng-template>
273
- }
274
- @if (footerDir !== undefined) {
275
- <ng-template vListFooter>
276
- <ng-container [vListOutlet]="footerDir.templateRef"></ng-container>
277
- </ng-template>
278
- }
279
- @if (emptyDir !== undefined) {
280
- <ng-template vListEmpty>
281
- <ng-container [vListOutlet]="emptyDir.templateRef"></ng-container>
282
- </ng-template>
283
- }
284
- @if (separatorDir !== undefined) {
285
- <ng-template
286
- vListSeparator
287
- let-highlighted="highlighted"
288
- let-leadingItem="leadingItem"
289
- let-trailingItem="trailingItem"
290
- >
291
- <ng-container
292
- [vListOutlet]="separatorDir.templateRef"
293
- [vListOutletContext]="
294
- rowSeparatorContext(highlighted, leadingItem, trailingItem)
295
- "
296
- ></ng-container>
297
- </ng-template>
298
- }
299
- </VirtualizedList>
300
- } @else {
301
- <VirtualizedList
302
- [data]="data"
303
- [getItem]="getFlatItem"
304
- [getItemCount]="getFlatCount"
305
- [keyExtractor]="keyExtractor"
306
- [getItemLayout]="getItemLayout"
307
- [horizontal]="horizontal"
308
- [inverted]="inverted"
309
- [extraData]="extraData"
310
- (endReached)="endReached.emit($event)"
311
- [onEndReachedThreshold]="onEndReachedThreshold"
312
- (startReached)="startReached.emit($event)"
313
- [onStartReachedThreshold]="onStartReachedThreshold"
314
- (refresh)="refresh.emit()"
315
- [refreshRequested]="refresh.observed"
316
- [refreshing]="refreshing"
317
- [progressViewOffset]="progressViewOffset"
318
- (viewableItemsChanged)="viewableItemsChanged.emit($event)"
319
- [viewabilityConfig]="viewabilityConfig"
320
- [viewabilityConfigCallbackPairs]="viewabilityConfigCallbackPairs"
321
- (scrollToIndexFailed)="scrollToIndexFailed.emit($event)"
322
- [initialNumToRender]="initialNumToRender"
323
- [initialScrollIndex]="initialScrollIndex"
324
- [maxToRenderPerBatch]="maxToRenderPerBatch"
325
- [updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
326
- [windowSize]="windowSize"
327
- [stickyHeaderIndices]="stickyHeaderIndices"
328
- [maintainVisibleContentPosition]="maintainVisibleContentPosition"
329
- [onScroll]="onScroll"
330
- [onScrollBeginDrag]="onScrollBeginDrag"
331
- [onScrollEndDrag]="onScrollEndDrag"
332
- [onMomentumScrollBegin]="onMomentumScrollBegin"
333
- [onMomentumScrollEnd]="onMomentumScrollEnd"
334
- [scrollEventThrottle]="scrollEventThrottle"
335
- [keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
336
- [keyboardDismissMode]="keyboardDismissMode"
337
- [removeClippedSubviews]="resolvedRemoveClippedSubviews"
338
- [nestedScrollEnabled]="nestedScrollEnabled"
339
- [testID]="testID"
340
- [style]="resolvedStyle"
341
- [contentContainerStyle]="contentContainerStyle"
342
- [itemTemplate]="itemDir?.templateRef"
343
- [itemSeparatorTemplate]="separatorDir?.templateRef"
344
- >
345
- @if (headerDir !== undefined) {
346
- <ng-template vListHeader>
347
- <ng-container [vListOutlet]="headerDir.templateRef"></ng-container>
348
- </ng-template>
349
- }
350
- @if (footerDir !== undefined) {
351
- <ng-template vListFooter>
352
- <ng-container [vListOutlet]="footerDir.templateRef"></ng-container>
353
- </ng-template>
354
- }
355
- @if (emptyDir !== undefined) {
356
- <ng-template vListEmpty>
357
- <ng-container [vListOutlet]="emptyDir.templateRef"></ng-container>
358
- </ng-template>
359
- }
360
- </VirtualizedList>
361
- }
362
- `, isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList", inputs: ["data", "getItem", "getItemCount", "keyExtractor", "getItemLayout", "horizontal", "inverted", "extraData", "onEndReachedThreshold", "onStartReachedThreshold", "refreshing", "progressViewOffset", "refreshRequested", "viewabilityConfig", "viewabilityConfigCallbackPairs", "initialNumToRender", "initialScrollIndex", "maxToRenderPerBatch", "updateCellsBatchingPeriod", "windowSize", "stickyHeaderIndices", "maintainVisibleContentPosition", "onScroll", "onScrollBeginDrag", "onScrollEndDrag", "onMomentumScrollBegin", "onMomentumScrollEnd", "scrollEventThrottle", "keyboardShouldPersistTaps", "keyboardDismissMode", "removeClippedSubviews", "nestedScrollEnabled", "style", "contentContainerStyle", "testID", "nativeID", "accessible", "accessibilityLabel", "accessibilityHint", "accessibilityRole", "accessibilityState", "accessibilityValue", "accessibilityActions", "accessibilityLabelledBy", "importantForAccessibility", "accessibilityLiveRegion", "screenReaderFocusable", "accessibilityViewIsModal", "accessibilityElementsHidden", "accessibilityIgnoresInvertColors", "accessibilityLanguage", "accessibilityRespondsToUserInteraction", "accessibilityShowsLargeContentViewer", "accessibilityLargeContentTitle", "role", "ariaLabel", "ariaLabelledBy", "ariaLive", "ariaHidden", "ariaBusy", "ariaChecked", "ariaDisabled", "ariaExpanded", "ariaSelected", "ariaModal", "ariaValueMax", "ariaValueMin", "ariaValueNow", "ariaValueText", "itemTemplate", "itemSeparatorTemplate"], outputs: ["endReached", "startReached", "refresh", "viewableItemsChanged", "scrollToIndexFailed", "accessibilityAction", "accessibilityTap", "magicTap", "accessibilityEscape"] }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }, { kind: "component", type: ViewHost, selector: "view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FlatList, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: FlatList, isStandalone: true, selector: "FlatList", inputs: { data: "data", numColumns: "numColumns", columnWrapperStyle: "columnWrapperStyle" }, viewQueries: [{ propertyName: "listRef", first: true, predicate: VirtualizedList, descendants: true }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: "\n @if (isMultiColumn) {\n <VirtualizedList\n [data]=\"rows\"\n [getItem]=\"getRow\"\n [getItemCount]=\"getRowCount\"\n [keyExtractor]=\"rowKey\"\n [getItemLayout]=\"getItemLayout\"\n [horizontal]=\"horizontal\"\n [inverted]=\"inverted\"\n [extraData]=\"extraData\"\n (endReached)=\"endReached.emit($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"startReached.emit($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n (refresh)=\"refresh.emit()\"\n [refreshRequested]=\"refresh.observed\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n (viewableItemsChanged)=\"rowViewableItemsChanged($event)\"\n [viewabilityConfig]=\"viewabilityConfig\"\n [viewabilityConfigCallbackPairs]=\"rowViewabilityPairs\"\n (scrollToIndexFailed)=\"scrollToIndexFailed.emit($event)\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\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]=\"resolvedRemoveClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\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 <ng-template vListItem let-row let-separators=\"separators\">\n <view [style]=\"rowStyle\">\n @for (cell of rowCells(row, separators); track cell.key) {\n <view [style]=\"columnCellStyle\">\n <ng-container\n [vListOutlet]=\"itemDir?.templateRef\"\n [vListOutletContext]=\"cell.context\"\n ></ng-container>\n </view>\n }\n </view>\n </ng-template>\n @if (headerDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"headerDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (footerDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"footerDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (emptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"emptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (separatorDir !== undefined) {\n <ng-template\n vListSeparator\n let-highlighted=\"highlighted\"\n let-leadingItem=\"leadingItem\"\n let-trailingItem=\"trailingItem\"\n >\n <ng-container\n [vListOutlet]=\"separatorDir.templateRef\"\n [vListOutletContext]=\"\n rowSeparatorContext(highlighted, leadingItem, trailingItem)\n \"\n ></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n } @else {\n <VirtualizedList\n [data]=\"data\"\n [getItem]=\"getFlatItem\"\n [getItemCount]=\"getFlatCount\"\n [keyExtractor]=\"keyExtractor\"\n [getItemLayout]=\"getItemLayout\"\n [horizontal]=\"horizontal\"\n [inverted]=\"inverted\"\n [extraData]=\"extraData\"\n (endReached)=\"endReached.emit($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"startReached.emit($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n (refresh)=\"refresh.emit()\"\n [refreshRequested]=\"refresh.observed\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n (viewableItemsChanged)=\"viewableItemsChanged.emit($event)\"\n [viewabilityConfig]=\"viewabilityConfig\"\n [viewabilityConfigCallbackPairs]=\"viewabilityConfigCallbackPairs\"\n (scrollToIndexFailed)=\"scrollToIndexFailed.emit($event)\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\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]=\"resolvedRemoveClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\n [itemTemplate]=\"itemDir?.templateRef\"\n [itemSeparatorTemplate]=\"separatorDir?.templateRef\"\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 @if (headerDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"headerDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (footerDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"footerDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (emptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"emptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n }\n", isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList" }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }, { kind: "component", type: ViewHost, selector: "view" }], viewProviders: [provideGateDemand(() => FlatList)], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
363
161
  }
364
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FlatList, decorators: [{
365
163
  type: Component,
366
164
  args: [{
367
165
  selector: 'FlatList',
368
166
  standalone: true,
167
+ viewProviders: [provideGateDemand(() => FlatList)],
369
168
  hostDirectives: [
370
169
  { directive: SymbioteStyleInputDirective, inputs: ['style'] },
371
170
  ],
@@ -381,251 +180,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
381
180
  ViewHost,
382
181
  ],
383
182
  changeDetection: ChangeDetectionStrategy.OnPush,
384
- template: `
385
- @if (isMultiColumn) {
386
- <VirtualizedList
387
- [data]="rows"
388
- [getItem]="getRow"
389
- [getItemCount]="getRowCount"
390
- [keyExtractor]="rowKey"
391
- [getItemLayout]="getItemLayout"
392
- [horizontal]="horizontal"
393
- [inverted]="inverted"
394
- [extraData]="extraData"
395
- (endReached)="endReached.emit($event)"
396
- [onEndReachedThreshold]="onEndReachedThreshold"
397
- (startReached)="startReached.emit($event)"
398
- [onStartReachedThreshold]="onStartReachedThreshold"
399
- (refresh)="refresh.emit()"
400
- [refreshRequested]="refresh.observed"
401
- [refreshing]="refreshing"
402
- [progressViewOffset]="progressViewOffset"
403
- (viewableItemsChanged)="rowViewableItemsChanged($event)"
404
- [viewabilityConfig]="viewabilityConfig"
405
- [viewabilityConfigCallbackPairs]="rowViewabilityPairs"
406
- (scrollToIndexFailed)="scrollToIndexFailed.emit($event)"
407
- [initialNumToRender]="initialNumToRender"
408
- [initialScrollIndex]="initialScrollIndex"
409
- [maxToRenderPerBatch]="maxToRenderPerBatch"
410
- [updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
411
- [windowSize]="windowSize"
412
- [stickyHeaderIndices]="stickyHeaderIndices"
413
- [maintainVisibleContentPosition]="maintainVisibleContentPosition"
414
- [onScroll]="onScroll"
415
- [onScrollBeginDrag]="onScrollBeginDrag"
416
- [onScrollEndDrag]="onScrollEndDrag"
417
- [onMomentumScrollBegin]="onMomentumScrollBegin"
418
- [onMomentumScrollEnd]="onMomentumScrollEnd"
419
- [scrollEventThrottle]="scrollEventThrottle"
420
- [keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
421
- [keyboardDismissMode]="keyboardDismissMode"
422
- [removeClippedSubviews]="resolvedRemoveClippedSubviews"
423
- [nestedScrollEnabled]="nestedScrollEnabled"
424
- [testID]="testID"
425
- [style]="resolvedStyle"
426
- [contentContainerStyle]="contentContainerStyle"
427
- >
428
- <ng-template vListItem let-row let-separators="separators">
429
- <view [style]="rowStyle">
430
- @for (cell of rowCells(row, separators); track cell.key) {
431
- <view [style]="columnCellStyle">
432
- <ng-container
433
- [vListOutlet]="itemDir?.templateRef"
434
- [vListOutletContext]="cell.context"
435
- ></ng-container>
436
- </view>
437
- }
438
- </view>
439
- </ng-template>
440
- @if (headerDir !== undefined) {
441
- <ng-template vListHeader>
442
- <ng-container [vListOutlet]="headerDir.templateRef"></ng-container>
443
- </ng-template>
444
- }
445
- @if (footerDir !== undefined) {
446
- <ng-template vListFooter>
447
- <ng-container [vListOutlet]="footerDir.templateRef"></ng-container>
448
- </ng-template>
449
- }
450
- @if (emptyDir !== undefined) {
451
- <ng-template vListEmpty>
452
- <ng-container [vListOutlet]="emptyDir.templateRef"></ng-container>
453
- </ng-template>
454
- }
455
- @if (separatorDir !== undefined) {
456
- <ng-template
457
- vListSeparator
458
- let-highlighted="highlighted"
459
- let-leadingItem="leadingItem"
460
- let-trailingItem="trailingItem"
461
- >
462
- <ng-container
463
- [vListOutlet]="separatorDir.templateRef"
464
- [vListOutletContext]="
465
- rowSeparatorContext(highlighted, leadingItem, trailingItem)
466
- "
467
- ></ng-container>
468
- </ng-template>
469
- }
470
- </VirtualizedList>
471
- } @else {
472
- <VirtualizedList
473
- [data]="data"
474
- [getItem]="getFlatItem"
475
- [getItemCount]="getFlatCount"
476
- [keyExtractor]="keyExtractor"
477
- [getItemLayout]="getItemLayout"
478
- [horizontal]="horizontal"
479
- [inverted]="inverted"
480
- [extraData]="extraData"
481
- (endReached)="endReached.emit($event)"
482
- [onEndReachedThreshold]="onEndReachedThreshold"
483
- (startReached)="startReached.emit($event)"
484
- [onStartReachedThreshold]="onStartReachedThreshold"
485
- (refresh)="refresh.emit()"
486
- [refreshRequested]="refresh.observed"
487
- [refreshing]="refreshing"
488
- [progressViewOffset]="progressViewOffset"
489
- (viewableItemsChanged)="viewableItemsChanged.emit($event)"
490
- [viewabilityConfig]="viewabilityConfig"
491
- [viewabilityConfigCallbackPairs]="viewabilityConfigCallbackPairs"
492
- (scrollToIndexFailed)="scrollToIndexFailed.emit($event)"
493
- [initialNumToRender]="initialNumToRender"
494
- [initialScrollIndex]="initialScrollIndex"
495
- [maxToRenderPerBatch]="maxToRenderPerBatch"
496
- [updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
497
- [windowSize]="windowSize"
498
- [stickyHeaderIndices]="stickyHeaderIndices"
499
- [maintainVisibleContentPosition]="maintainVisibleContentPosition"
500
- [onScroll]="onScroll"
501
- [onScrollBeginDrag]="onScrollBeginDrag"
502
- [onScrollEndDrag]="onScrollEndDrag"
503
- [onMomentumScrollBegin]="onMomentumScrollBegin"
504
- [onMomentumScrollEnd]="onMomentumScrollEnd"
505
- [scrollEventThrottle]="scrollEventThrottle"
506
- [keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
507
- [keyboardDismissMode]="keyboardDismissMode"
508
- [removeClippedSubviews]="resolvedRemoveClippedSubviews"
509
- [nestedScrollEnabled]="nestedScrollEnabled"
510
- [testID]="testID"
511
- [style]="resolvedStyle"
512
- [contentContainerStyle]="contentContainerStyle"
513
- [itemTemplate]="itemDir?.templateRef"
514
- [itemSeparatorTemplate]="separatorDir?.templateRef"
515
- >
516
- @if (headerDir !== undefined) {
517
- <ng-template vListHeader>
518
- <ng-container [vListOutlet]="headerDir.templateRef"></ng-container>
519
- </ng-template>
520
- }
521
- @if (footerDir !== undefined) {
522
- <ng-template vListFooter>
523
- <ng-container [vListOutlet]="footerDir.templateRef"></ng-container>
524
- </ng-template>
525
- }
526
- @if (emptyDir !== undefined) {
527
- <ng-template vListEmpty>
528
- <ng-container [vListOutlet]="emptyDir.templateRef"></ng-container>
529
- </ng-template>
530
- }
531
- </VirtualizedList>
532
- }
533
- `,
183
+ template: FLAT_LIST_TEMPLATE,
534
184
  }]
535
- }], propDecorators: { endReached: [{
536
- type: Output
537
- }], startReached: [{
538
- type: Output
539
- }], refresh: [{
540
- type: Output
541
- }], viewableItemsChanged: [{
542
- type: Output
543
- }], scrollToIndexFailed: [{
544
- type: Output
545
- }], data: [{
185
+ }], propDecorators: { data: [{
546
186
  type: Input,
547
187
  args: [{ required: true }]
548
- }], testID: [{
549
- type: Input
550
188
  }], numColumns: [{
551
189
  type: Input
552
190
  }], columnWrapperStyle: [{
553
191
  type: Input
554
- }], keyExtractor: [{
555
- type: Input
556
- }], getItemLayout: [{
557
- type: Input
558
- }], horizontal: [{
559
- type: Input
560
- }], inverted: [{
561
- type: Input
562
- }], extraData: [{
563
- type: Input
564
- }], onEndReachedThreshold: [{
565
- type: Input
566
- }], onStartReachedThreshold: [{
567
- type: Input
568
- }], refreshing: [{
569
- type: Input
570
- }], progressViewOffset: [{
571
- type: Input
572
- }], viewabilityConfig: [{
573
- type: Input
574
- }], viewabilityConfigCallbackPairs: [{
575
- type: Input
576
- }], initialNumToRender: [{
577
- type: Input
578
- }], initialScrollIndex: [{
579
- type: Input
580
- }], maxToRenderPerBatch: [{
581
- type: Input
582
- }], updateCellsBatchingPeriod: [{
583
- type: Input
584
- }], windowSize: [{
585
- type: Input
586
- }], stickyHeaderIndices: [{
587
- type: Input
588
- }], maintainVisibleContentPosition: [{
589
- type: Input
590
- }], onScroll: [{
591
- type: Input
592
- }], onScrollBeginDrag: [{
593
- type: Input
594
- }], onScrollEndDrag: [{
595
- type: Input
596
- }], onMomentumScrollBegin: [{
597
- type: Input
598
- }], onMomentumScrollEnd: [{
599
- type: Input
600
- }], scrollEventThrottle: [{
601
- type: Input
602
- }], keyboardShouldPersistTaps: [{
603
- type: Input
604
- }], keyboardDismissMode: [{
605
- type: Input
606
- }], removeClippedSubviews: [{
607
- type: Input
608
- }], nestedScrollEnabled: [{
609
- type: Input
610
- }], style: [{
611
- type: Input
612
- }], contentContainerStyle: [{
613
- type: Input
614
- }], itemDir: [{
615
- type: ContentChild,
616
- args: [VListItemDirective]
617
- }], headerDir: [{
618
- type: ContentChild,
619
- args: [VListHeaderDirective]
620
- }], footerDir: [{
621
- type: ContentChild,
622
- args: [VListFooterDirective]
623
- }], emptyDir: [{
624
- type: ContentChild,
625
- args: [VListEmptyDirective]
626
- }], separatorDir: [{
627
- type: ContentChild,
628
- args: [VListSeparatorDirective]
629
192
  }], listRef: [{
630
193
  type: ViewChild,
631
194
  args: [VirtualizedList]