@symbiote-native/angular 0.5.0 → 0.6.1
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.
- package/babel-register-composed.cjs +11 -3
- package/build/angular/anchor-host-registry.d.ts +2 -0
- package/build/angular/anchor-host-registry.js +84 -0
- package/build/angular/anchor-host-registry.js.map +1 -0
- package/build/angular/components/input-accessory-view/index.d.ts +2 -1
- package/build/angular/components/input-accessory-view/index.js +28 -39
- package/build/angular/components/input-accessory-view/index.js.map +1 -1
- package/build/angular/components/scroll-view/projection.js +70 -48
- package/build/angular/components/scroll-view/projection.js.map +1 -1
- package/build/angular/components/scroll-view/shared.js +28 -25
- package/build/angular/components/scroll-view/shared.js.map +1 -1
- package/build/angular/components/scroll-view/sticky-header.d.ts +6 -7
- package/build/angular/components/scroll-view/sticky-header.js +82 -65
- package/build/angular/components/scroll-view/sticky-header.js.map +1 -1
- package/build/angular/components/touchable/index.d.ts +2 -5
- package/build/angular/components/touchable/index.js +36 -56
- package/build/angular/components/touchable/index.js.map +1 -1
- package/build/angular/components/virtualized-list/index.d.ts +5 -20
- package/build/angular/components/virtualized-list/index.js +145 -275
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/index.js +2 -4
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/index.d.ts +2 -1
- package/build/angular/index.js +6 -1
- package/build/angular/index.js.map +1 -1
- package/build/angular/renderer/index.d.ts +0 -1
- package/build/angular/renderer/index.js +5 -60
- package/build/angular/renderer/index.js.map +1 -1
- package/package.json +9 -7
- package/src/__tests__/responder-nested-cd.test.ts +1 -1
- package/src/anchor-host-registry.ts +88 -0
- package/src/components/input-accessory-view/index.ts +30 -39
- package/src/components/scroll-view/projection.ts +76 -46
- package/src/components/scroll-view/shared.ts +27 -19
- package/src/components/scroll-view/sticky-header.ts +89 -64
- package/src/components/touchable/index.ts +52 -66
- package/src/components/virtualized-list/index.ts +157 -368
- package/src/components/virtualized-section-list/index.ts +6 -3
- package/src/index.ts +6 -1
- package/src/renderer/index.ts +5 -63
- package/src/renderer/renderer.test.ts +2 -1
- package/build/bootstrap.d.ts +0 -7
- package/build/bootstrap.js +0 -14
- package/build/components/activity-indicator/index.android.d.ts +0 -9
- package/build/components/activity-indicator/index.android.js +0 -64
- package/build/components/activity-indicator/index.d.ts +0 -1
- package/build/components/activity-indicator/index.ios.d.ts +0 -5
- package/build/components/activity-indicator/index.ios.js +0 -64
- package/build/components/activity-indicator/index.js +0 -3
- package/build/components/activity-indicator/shared.d.ts +0 -64
- package/build/components/activity-indicator/shared.js +0 -424
- package/build/components/button.d.ts +0 -60
- package/build/components/button.js +0 -456
- package/build/components/flat-list/index.d.ts +0 -119
- package/build/components/flat-list/index.js +0 -691
- package/build/components/image/index.android.d.ts +0 -7
- package/build/components/image/index.android.js +0 -88
- package/build/components/image/index.d.ts +0 -1
- package/build/components/image/index.ios.d.ts +0 -7
- package/build/components/image/index.ios.js +0 -88
- package/build/components/image/index.js +0 -2
- package/build/components/image/shared.d.ts +0 -101
- package/build/components/image/shared.js +0 -405
- package/build/components/image-background.d.ts +0 -78
- package/build/components/image-background.js +0 -583
- package/build/components/input-accessory-view/index.d.ts +0 -56
- package/build/components/input-accessory-view/index.js +0 -403
- package/build/components/keyboard-avoiding-view/index.d.ts +0 -79
- package/build/components/keyboard-avoiding-view/index.js +0 -504
- package/build/components/modal/index.d.ts +0 -89
- package/build/components/modal/index.js +0 -529
- package/build/components/pressable/index.d.ts +0 -120
- package/build/components/pressable/index.js +0 -639
- package/build/components/refresh-control/index.d.ts +0 -83
- package/build/components/refresh-control/index.js +0 -509
- package/build/components/safe-area-view/index.d.ts +0 -54
- package/build/components/safe-area-view/index.js +0 -388
- package/build/components/scroll-view/index.android.d.ts +0 -16
- package/build/components/scroll-view/index.android.js +0 -228
- package/build/components/scroll-view/index.d.ts +0 -3
- package/build/components/scroll-view/index.ios.d.ts +0 -6
- package/build/components/scroll-view/index.ios.js +0 -113
- package/build/components/scroll-view/index.js +0 -5
- package/build/components/scroll-view/projection.d.ts +0 -32
- package/build/components/scroll-view/projection.js +0 -311
- package/build/components/scroll-view/shared.d.ts +0 -225
- package/build/components/scroll-view/shared.js +0 -757
- package/build/components/scroll-view/sticky-header.d.ts +0 -38
- package/build/components/scroll-view/sticky-header.js +0 -257
- package/build/components/section-list/index.d.ts +0 -113
- package/build/components/section-list/index.js +0 -768
- package/build/components/switch/index.android.d.ts +0 -17
- package/build/components/switch/index.android.js +0 -107
- package/build/components/switch/index.d.ts +0 -1
- package/build/components/switch/index.ios.d.ts +0 -16
- package/build/components/switch/index.ios.js +0 -106
- package/build/components/switch/index.js +0 -3
- package/build/components/switch/shared.d.ts +0 -37
- package/build/components/switch/shared.js +0 -176
- package/build/components/text-input.d.ts +0 -150
- package/build/components/text-input.js +0 -821
- package/build/components/touchable/index.d.ts +0 -241
- package/build/components/touchable/index.js +0 -1672
- package/build/components/touchable-native-feedback/index.d.ts +0 -80
- package/build/components/touchable-native-feedback/index.js +0 -545
- package/build/components/virtualized-list/directives.d.ts +0 -41
- package/build/components/virtualized-list/directives.js +0 -249
- package/build/components/virtualized-list/index.d.ts +0 -265
- package/build/components/virtualized-list/index.js +0 -1343
- package/build/components/virtualized-section-list/directives.d.ts +0 -28
- package/build/components/virtualized-section-list/directives.js +0 -148
- package/build/components/virtualized-section-list/index.d.ts +0 -175
- package/build/components/virtualized-section-list/index.js +0 -854
- package/build/components.d.ts +0 -39
- package/build/components.js +0 -37
- package/build/create-portal/index.d.ts +0 -17
- package/build/create-portal/index.js +0 -128
- package/build/create-tunnel/index.d.ts +0 -29
- package/build/create-tunnel/index.js +0 -181
- package/build/descriptor-to-angular/index.d.ts +0 -19
- package/build/descriptor-to-angular/index.js +0 -186
- package/build/host-instance/index.d.ts +0 -2
- package/build/host-instance/index.js +0 -36
- package/build/index.d.ts +0 -21
- package/build/index.js +0 -40
- package/build/modules/animated/animated-leaf-binder/index.d.ts +0 -14
- package/build/modules/animated/animated-leaf-binder/index.js +0 -90
- package/build/modules/animated/animated-leaf-binder.d.ts +0 -14
- package/build/modules/animated/animated-leaf-binder.js +0 -90
- package/build/modules/animated/create-animated-component.d.ts +0 -48
- package/build/modules/animated/create-animated-component.js +0 -425
- package/build/modules/animated/index.d.ts +0 -51
- package/build/modules/animated/index.js +0 -58
- package/build/modules/app-registry/index.d.ts +0 -7
- package/build/modules/app-registry/index.js +0 -22
- package/build/modules/status-bar/index.d.ts +0 -17
- package/build/modules/status-bar/index.js +0 -121
- package/build/primitives/index.d.ts +0 -32
- package/build/primitives/index.js +0 -386
- package/build/primitives/shared.d.ts +0 -83
- package/build/primitives/shared.js +0 -230
- package/build/render/index.d.ts +0 -11
- package/build/render/index.js +0 -170
- package/build/renderer/index.d.ts +0 -38
- package/build/renderer/index.js +0 -355
- package/build/services/color-scheme.service.d.ts +0 -13
- package/build/services/color-scheme.service.js +0 -72
- package/build/services/index.d.ts +0 -2
- package/build/services/index.js +0 -2
- package/build/services/window-dimensions.service.d.ts +0 -13
- package/build/services/window-dimensions.service.js +0 -83
|
@@ -1,1343 +0,0 @@
|
|
|
1
|
-
// VirtualizedList, the Angular lifecycle half. The windowing engine (offset table, window
|
|
2
|
-
// compute, batch throttle, viewability, edge-reached, the child PLAN, the imperative-handle
|
|
3
|
-
// geometry) lives in @symbiote-native/components/state, shared verbatim with the React and Vue adapters
|
|
4
|
-
// so every adapter keeps the same feature surface. Here Angular supplies only the lifecycle: plain fields
|
|
5
|
-
// for scroll offset / viewport / measurement bumps, a once-per-CD metrics + view recompute in
|
|
6
|
-
// ngDoCheck (the Angular twin of React render / Vue `computed` — it owns the controlled
|
|
7
|
-
// committedWindow throttle and assembles the windowed cells before the template bindings are read),
|
|
8
|
-
// and the after-commit work (batch fill, onEndReached/onStartReached, viewability, initialScroll, MVCP)
|
|
9
|
-
// in ngAfterViewChecked. OnPush + ChangeDetectorRef.markForCheck() drives re-render off the native
|
|
10
|
-
// scroll/layout/measure callbacks (they fire outside Angular's own event bindings, so they must
|
|
11
|
-
// mark the view dirty). This is the Angular twin of the React useReducer/useEffect and Vue
|
|
12
|
-
// ref/computed/watch over the same shared functions. It composes the Angular ScrollView, exactly
|
|
13
|
-
// as the React/Vue lists drive their ScrollView.
|
|
14
|
-
//
|
|
15
|
-
// Per-item rendering is TEMPLATES, not a callback: React/Vue `renderItem: (info) => element` does
|
|
16
|
-
// not translate to Angular. The app supplies the cell via `<ng-template vListItem>` (and the
|
|
17
|
-
// header/footer/empty/separator slots via vListHeader/vListFooter/vListEmpty/vListSeparator); the
|
|
18
|
-
// list captures them with @ContentChild and stamps the WINDOWED slice through VListOutletDirective
|
|
19
|
-
// (a core-only NgTemplateOutlet twin — @angular/common is not a dependency). See ./directives.ts.
|
|
20
|
-
// Every React/Vue behavior is present (windowing, onEndReached, viewability, headers/footers/empty/
|
|
21
|
-
// separators, refresh, imperative scroll, horizontal, inverted, MVCP); only the cell AUTHORING
|
|
22
|
-
// shape differs, since a callback prop returning an element has no Angular equivalent.
|
|
23
|
-
//
|
|
24
|
-
// Lists have no Descriptor render fn — the cell content is the framework's own children.
|
|
25
|
-
// Cells/spacers are plain symbiote-view host elements.
|
|
26
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
27
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
28
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
29
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
30
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
31
|
-
var _, done = false;
|
|
32
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
33
|
-
var context = {};
|
|
34
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
35
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
36
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
37
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
38
|
-
if (kind === "accessor") {
|
|
39
|
-
if (result === void 0) continue;
|
|
40
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
41
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
42
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
43
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
44
|
-
}
|
|
45
|
-
else if (_ = accept(result)) {
|
|
46
|
-
if (kind === "field") initializers.unshift(_);
|
|
47
|
-
else descriptor[key] = _;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
51
|
-
done = true;
|
|
52
|
-
};
|
|
53
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
54
|
-
var useValue = arguments.length > 2;
|
|
55
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
56
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
57
|
-
}
|
|
58
|
-
return useValue ? value : void 0;
|
|
59
|
-
};
|
|
60
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild, inject, } from '@angular/core';
|
|
61
|
-
import { DEFAULT_END_REACHED_THRESHOLD, DEFAULT_INITIAL_NUM_TO_RENDER, DEFAULT_MAX_TO_RENDER_PER_BATCH, DEFAULT_START_REACHED_THRESHOLD, DEFAULT_UPDATE_CELLS_BATCHING_PERIOD, DEFAULT_WINDOW_SIZE, EMPTY_OFFSET, FIRST_INDEX, INVERTED_X_STYLE, INVERTED_Y_STYLE, NO_CONTENT_LENGTH_SENT, averageMeasuredLength, buildListPlan, buildOffsets, buildViewabilityPairs, computeEndReached, computeStartReached, computeViewableSet, computeWindow, diffViewable, highestMeasuredIndex, maxMinimumViewTime, offsetForIndex, readLayoutLength, readScrollOffset, resolveAccessibilityProps, throttleWindow, } from '@symbiote-native/components';
|
|
62
|
-
import { dlog, flattenStyle, } from '@symbiote-native/engine';
|
|
63
|
-
import { ScrollView } from '../scroll-view';
|
|
64
|
-
import { RefreshControl } from '../refresh-control';
|
|
65
|
-
import { anchorHostStyle, ViewHost } from '../../primitives';
|
|
66
|
-
import { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListOutletDirective, VListSeparatorDirective, } from './directives';
|
|
67
|
-
export { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from './directives';
|
|
68
|
-
let VirtualizedList = (() => {
|
|
69
|
-
let _classDecorators = [Component({
|
|
70
|
-
selector: 'VirtualizedList',
|
|
71
|
-
standalone: true,
|
|
72
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
73
|
-
imports: [ScrollView, RefreshControl, VListOutletDirective, ViewHost],
|
|
74
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
75
|
-
template: `
|
|
76
|
-
<ScrollView
|
|
77
|
-
[horizontal]="isHorizontal"
|
|
78
|
-
[style]="resolvedStyle"
|
|
79
|
-
[contentContainerStyle]="resolvedContentContainerStyle"
|
|
80
|
-
[testID]="foldedAccessibility.testID"
|
|
81
|
-
[nativeID]="foldedAccessibility.nativeID"
|
|
82
|
-
[accessible]="foldedAccessibility.accessible"
|
|
83
|
-
[accessibilityLabel]="foldedAccessibility.accessibilityLabel"
|
|
84
|
-
[accessibilityHint]="foldedAccessibility.accessibilityHint"
|
|
85
|
-
[accessibilityRole]="foldedAccessibility.accessibilityRole"
|
|
86
|
-
[accessibilityState]="foldedAccessibility.accessibilityState"
|
|
87
|
-
[accessibilityValue]="foldedAccessibility.accessibilityValue"
|
|
88
|
-
[accessibilityActions]="foldedAccessibility.accessibilityActions"
|
|
89
|
-
[accessibilityLabelledBy]="foldedAccessibility.accessibilityLabelledBy"
|
|
90
|
-
[importantForAccessibility]="foldedAccessibility.importantForAccessibility"
|
|
91
|
-
[accessibilityLiveRegion]="foldedAccessibility.accessibilityLiveRegion"
|
|
92
|
-
[screenReaderFocusable]="foldedAccessibility.screenReaderFocusable"
|
|
93
|
-
[accessibilityViewIsModal]="foldedAccessibility.accessibilityViewIsModal"
|
|
94
|
-
[accessibilityElementsHidden]="foldedAccessibility.accessibilityElementsHidden"
|
|
95
|
-
[accessibilityIgnoresInvertColors]="foldedAccessibility.accessibilityIgnoresInvertColors"
|
|
96
|
-
[accessibilityLanguage]="foldedAccessibility.accessibilityLanguage"
|
|
97
|
-
[accessibilityRespondsToUserInteraction]="
|
|
98
|
-
foldedAccessibility.accessibilityRespondsToUserInteraction
|
|
99
|
-
"
|
|
100
|
-
[accessibilityShowsLargeContentViewer]="
|
|
101
|
-
foldedAccessibility.accessibilityShowsLargeContentViewer
|
|
102
|
-
"
|
|
103
|
-
[accessibilityLargeContentTitle]="foldedAccessibility.accessibilityLargeContentTitle"
|
|
104
|
-
(accessibilityAction)="accessibilityActionTick($event)"
|
|
105
|
-
(accessibilityTap)="accessibilityTapTick($event)"
|
|
106
|
-
(magicTap)="magicTapTick($event)"
|
|
107
|
-
(accessibilityEscape)="accessibilityEscapeTick($event)"
|
|
108
|
-
[onScroll]="onScrollTick"
|
|
109
|
-
(layout)="onLayoutTick($event)"
|
|
110
|
-
[onScrollBeginDrag]="onScrollBeginDrag"
|
|
111
|
-
[onScrollEndDrag]="onScrollEndDrag"
|
|
112
|
-
[onMomentumScrollBegin]="onMomentumScrollBegin"
|
|
113
|
-
[onMomentumScrollEnd]="onMomentumScrollEnd"
|
|
114
|
-
[scrollEventThrottle]="scrollEventThrottle"
|
|
115
|
-
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
116
|
-
[keyboardDismissMode]="keyboardDismissMode"
|
|
117
|
-
[contentOffset]="commandedOffset"
|
|
118
|
-
[stickyHeaderIndices]="renderedStickyIndices"
|
|
119
|
-
[maintainVisibleContentPosition]="resolvedMaintainVisibleContentPosition"
|
|
120
|
-
>
|
|
121
|
-
@if (shouldRenderRefreshControl) {
|
|
122
|
-
<RefreshControl
|
|
123
|
-
[refreshing]="refreshing ?? false"
|
|
124
|
-
(refresh)="handleRefresh()"
|
|
125
|
-
[progressViewOffset]="progressViewOffset"
|
|
126
|
-
/>
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
@if (headerDir !== undefined) {
|
|
130
|
-
<symbiote-view>
|
|
131
|
-
<ng-container [vListOutlet]="headerDir.templateRef"></ng-container>
|
|
132
|
-
</symbiote-view>
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
@if (itemCount === 0) {
|
|
136
|
-
@if (emptyDir !== undefined) {
|
|
137
|
-
<symbiote-view>
|
|
138
|
-
<ng-container [vListOutlet]="emptyDir.templateRef"></ng-container>
|
|
139
|
-
</symbiote-view>
|
|
140
|
-
}
|
|
141
|
-
} @else {
|
|
142
|
-
@if (leadingSpacerStyle !== null) {
|
|
143
|
-
<symbiote-view [style]="leadingSpacerStyle"></symbiote-view>
|
|
144
|
-
}
|
|
145
|
-
@for (cell of windowCells; track cell.key) {
|
|
146
|
-
<symbiote-view (layout)="handleCellLayout(cell.measure, $event)" [style]="cellStyle">
|
|
147
|
-
<ng-container
|
|
148
|
-
[vListOutlet]="itemDir?.templateRef"
|
|
149
|
-
[vListOutletContext]="cell.context"
|
|
150
|
-
></ng-container>
|
|
151
|
-
</symbiote-view>
|
|
152
|
-
@if (cell.separatorContext !== undefined) {
|
|
153
|
-
<symbiote-view>
|
|
154
|
-
<ng-container
|
|
155
|
-
[vListOutlet]="separatorDir?.templateRef"
|
|
156
|
-
[vListOutletContext]="cell.separatorContext"
|
|
157
|
-
></ng-container>
|
|
158
|
-
</symbiote-view>
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
@if (trailingSpacerStyle !== null) {
|
|
162
|
-
<symbiote-view [style]="trailingSpacerStyle"></symbiote-view>
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
@if (footerDir !== undefined) {
|
|
167
|
-
<symbiote-view>
|
|
168
|
-
<ng-container [vListOutlet]="footerDir.templateRef"></ng-container>
|
|
169
|
-
</symbiote-view>
|
|
170
|
-
}
|
|
171
|
-
</ScrollView>
|
|
172
|
-
`,
|
|
173
|
-
})];
|
|
174
|
-
let _classDescriptor;
|
|
175
|
-
let _classExtraInitializers = [];
|
|
176
|
-
let _classThis;
|
|
177
|
-
let _endReached_decorators;
|
|
178
|
-
let _endReached_initializers = [];
|
|
179
|
-
let _endReached_extraInitializers = [];
|
|
180
|
-
let _startReached_decorators;
|
|
181
|
-
let _startReached_initializers = [];
|
|
182
|
-
let _startReached_extraInitializers = [];
|
|
183
|
-
let _refresh_decorators;
|
|
184
|
-
let _refresh_initializers = [];
|
|
185
|
-
let _refresh_extraInitializers = [];
|
|
186
|
-
let _viewableItemsChanged_decorators;
|
|
187
|
-
let _viewableItemsChanged_initializers = [];
|
|
188
|
-
let _viewableItemsChanged_extraInitializers = [];
|
|
189
|
-
let _scrollToIndexFailed_decorators;
|
|
190
|
-
let _scrollToIndexFailed_initializers = [];
|
|
191
|
-
let _scrollToIndexFailed_extraInitializers = [];
|
|
192
|
-
let _accessibilityAction_decorators;
|
|
193
|
-
let _accessibilityAction_initializers = [];
|
|
194
|
-
let _accessibilityAction_extraInitializers = [];
|
|
195
|
-
let _accessibilityTap_decorators;
|
|
196
|
-
let _accessibilityTap_initializers = [];
|
|
197
|
-
let _accessibilityTap_extraInitializers = [];
|
|
198
|
-
let _magicTap_decorators;
|
|
199
|
-
let _magicTap_initializers = [];
|
|
200
|
-
let _magicTap_extraInitializers = [];
|
|
201
|
-
let _accessibilityEscape_decorators;
|
|
202
|
-
let _accessibilityEscape_initializers = [];
|
|
203
|
-
let _accessibilityEscape_extraInitializers = [];
|
|
204
|
-
let _data_decorators;
|
|
205
|
-
let _data_initializers = [];
|
|
206
|
-
let _data_extraInitializers = [];
|
|
207
|
-
let _getItem_decorators;
|
|
208
|
-
let _getItem_initializers = [];
|
|
209
|
-
let _getItem_extraInitializers = [];
|
|
210
|
-
let _getItemCount_decorators;
|
|
211
|
-
let _getItemCount_initializers = [];
|
|
212
|
-
let _getItemCount_extraInitializers = [];
|
|
213
|
-
let _keyExtractor_decorators;
|
|
214
|
-
let _keyExtractor_initializers = [];
|
|
215
|
-
let _keyExtractor_extraInitializers = [];
|
|
216
|
-
let _getItemLayout_decorators;
|
|
217
|
-
let _getItemLayout_initializers = [];
|
|
218
|
-
let _getItemLayout_extraInitializers = [];
|
|
219
|
-
let _horizontal_decorators;
|
|
220
|
-
let _horizontal_initializers = [];
|
|
221
|
-
let _horizontal_extraInitializers = [];
|
|
222
|
-
let _inverted_decorators;
|
|
223
|
-
let _inverted_initializers = [];
|
|
224
|
-
let _inverted_extraInitializers = [];
|
|
225
|
-
let _extraData_decorators;
|
|
226
|
-
let _extraData_initializers = [];
|
|
227
|
-
let _extraData_extraInitializers = [];
|
|
228
|
-
let _onEndReachedThreshold_decorators;
|
|
229
|
-
let _onEndReachedThreshold_initializers = [];
|
|
230
|
-
let _onEndReachedThreshold_extraInitializers = [];
|
|
231
|
-
let _onStartReachedThreshold_decorators;
|
|
232
|
-
let _onStartReachedThreshold_initializers = [];
|
|
233
|
-
let _onStartReachedThreshold_extraInitializers = [];
|
|
234
|
-
let _refreshing_decorators;
|
|
235
|
-
let _refreshing_initializers = [];
|
|
236
|
-
let _refreshing_extraInitializers = [];
|
|
237
|
-
let _progressViewOffset_decorators;
|
|
238
|
-
let _progressViewOffset_initializers = [];
|
|
239
|
-
let _progressViewOffset_extraInitializers = [];
|
|
240
|
-
let _refreshRequested_decorators;
|
|
241
|
-
let _refreshRequested_initializers = [];
|
|
242
|
-
let _refreshRequested_extraInitializers = [];
|
|
243
|
-
let _viewabilityConfig_decorators;
|
|
244
|
-
let _viewabilityConfig_initializers = [];
|
|
245
|
-
let _viewabilityConfig_extraInitializers = [];
|
|
246
|
-
let _viewabilityConfigCallbackPairs_decorators;
|
|
247
|
-
let _viewabilityConfigCallbackPairs_initializers = [];
|
|
248
|
-
let _viewabilityConfigCallbackPairs_extraInitializers = [];
|
|
249
|
-
let _initialNumToRender_decorators;
|
|
250
|
-
let _initialNumToRender_initializers = [];
|
|
251
|
-
let _initialNumToRender_extraInitializers = [];
|
|
252
|
-
let _initialScrollIndex_decorators;
|
|
253
|
-
let _initialScrollIndex_initializers = [];
|
|
254
|
-
let _initialScrollIndex_extraInitializers = [];
|
|
255
|
-
let _maxToRenderPerBatch_decorators;
|
|
256
|
-
let _maxToRenderPerBatch_initializers = [];
|
|
257
|
-
let _maxToRenderPerBatch_extraInitializers = [];
|
|
258
|
-
let _updateCellsBatchingPeriod_decorators;
|
|
259
|
-
let _updateCellsBatchingPeriod_initializers = [];
|
|
260
|
-
let _updateCellsBatchingPeriod_extraInitializers = [];
|
|
261
|
-
let _windowSize_decorators;
|
|
262
|
-
let _windowSize_initializers = [];
|
|
263
|
-
let _windowSize_extraInitializers = [];
|
|
264
|
-
let _stickyHeaderIndices_decorators;
|
|
265
|
-
let _stickyHeaderIndices_initializers = [];
|
|
266
|
-
let _stickyHeaderIndices_extraInitializers = [];
|
|
267
|
-
let _maintainVisibleContentPosition_decorators;
|
|
268
|
-
let _maintainVisibleContentPosition_initializers = [];
|
|
269
|
-
let _maintainVisibleContentPosition_extraInitializers = [];
|
|
270
|
-
let _onScroll_decorators;
|
|
271
|
-
let _onScroll_initializers = [];
|
|
272
|
-
let _onScroll_extraInitializers = [];
|
|
273
|
-
let _onScrollBeginDrag_decorators;
|
|
274
|
-
let _onScrollBeginDrag_initializers = [];
|
|
275
|
-
let _onScrollBeginDrag_extraInitializers = [];
|
|
276
|
-
let _onScrollEndDrag_decorators;
|
|
277
|
-
let _onScrollEndDrag_initializers = [];
|
|
278
|
-
let _onScrollEndDrag_extraInitializers = [];
|
|
279
|
-
let _onMomentumScrollBegin_decorators;
|
|
280
|
-
let _onMomentumScrollBegin_initializers = [];
|
|
281
|
-
let _onMomentumScrollBegin_extraInitializers = [];
|
|
282
|
-
let _onMomentumScrollEnd_decorators;
|
|
283
|
-
let _onMomentumScrollEnd_initializers = [];
|
|
284
|
-
let _onMomentumScrollEnd_extraInitializers = [];
|
|
285
|
-
let _scrollEventThrottle_decorators;
|
|
286
|
-
let _scrollEventThrottle_initializers = [];
|
|
287
|
-
let _scrollEventThrottle_extraInitializers = [];
|
|
288
|
-
let _keyboardShouldPersistTaps_decorators;
|
|
289
|
-
let _keyboardShouldPersistTaps_initializers = [];
|
|
290
|
-
let _keyboardShouldPersistTaps_extraInitializers = [];
|
|
291
|
-
let _keyboardDismissMode_decorators;
|
|
292
|
-
let _keyboardDismissMode_initializers = [];
|
|
293
|
-
let _keyboardDismissMode_extraInitializers = [];
|
|
294
|
-
let _style_decorators;
|
|
295
|
-
let _style_initializers = [];
|
|
296
|
-
let _style_extraInitializers = [];
|
|
297
|
-
let _contentContainerStyle_decorators;
|
|
298
|
-
let _contentContainerStyle_initializers = [];
|
|
299
|
-
let _contentContainerStyle_extraInitializers = [];
|
|
300
|
-
let _testID_decorators;
|
|
301
|
-
let _testID_initializers = [];
|
|
302
|
-
let _testID_extraInitializers = [];
|
|
303
|
-
let _nativeID_decorators;
|
|
304
|
-
let _nativeID_initializers = [];
|
|
305
|
-
let _nativeID_extraInitializers = [];
|
|
306
|
-
let _accessible_decorators;
|
|
307
|
-
let _accessible_initializers = [];
|
|
308
|
-
let _accessible_extraInitializers = [];
|
|
309
|
-
let _accessibilityLabel_decorators;
|
|
310
|
-
let _accessibilityLabel_initializers = [];
|
|
311
|
-
let _accessibilityLabel_extraInitializers = [];
|
|
312
|
-
let _accessibilityHint_decorators;
|
|
313
|
-
let _accessibilityHint_initializers = [];
|
|
314
|
-
let _accessibilityHint_extraInitializers = [];
|
|
315
|
-
let _accessibilityRole_decorators;
|
|
316
|
-
let _accessibilityRole_initializers = [];
|
|
317
|
-
let _accessibilityRole_extraInitializers = [];
|
|
318
|
-
let _accessibilityState_decorators;
|
|
319
|
-
let _accessibilityState_initializers = [];
|
|
320
|
-
let _accessibilityState_extraInitializers = [];
|
|
321
|
-
let _accessibilityValue_decorators;
|
|
322
|
-
let _accessibilityValue_initializers = [];
|
|
323
|
-
let _accessibilityValue_extraInitializers = [];
|
|
324
|
-
let _accessibilityActions_decorators;
|
|
325
|
-
let _accessibilityActions_initializers = [];
|
|
326
|
-
let _accessibilityActions_extraInitializers = [];
|
|
327
|
-
let _accessibilityLabelledBy_decorators;
|
|
328
|
-
let _accessibilityLabelledBy_initializers = [];
|
|
329
|
-
let _accessibilityLabelledBy_extraInitializers = [];
|
|
330
|
-
let _importantForAccessibility_decorators;
|
|
331
|
-
let _importantForAccessibility_initializers = [];
|
|
332
|
-
let _importantForAccessibility_extraInitializers = [];
|
|
333
|
-
let _accessibilityLiveRegion_decorators;
|
|
334
|
-
let _accessibilityLiveRegion_initializers = [];
|
|
335
|
-
let _accessibilityLiveRegion_extraInitializers = [];
|
|
336
|
-
let _screenReaderFocusable_decorators;
|
|
337
|
-
let _screenReaderFocusable_initializers = [];
|
|
338
|
-
let _screenReaderFocusable_extraInitializers = [];
|
|
339
|
-
let _accessibilityViewIsModal_decorators;
|
|
340
|
-
let _accessibilityViewIsModal_initializers = [];
|
|
341
|
-
let _accessibilityViewIsModal_extraInitializers = [];
|
|
342
|
-
let _accessibilityElementsHidden_decorators;
|
|
343
|
-
let _accessibilityElementsHidden_initializers = [];
|
|
344
|
-
let _accessibilityElementsHidden_extraInitializers = [];
|
|
345
|
-
let _accessibilityIgnoresInvertColors_decorators;
|
|
346
|
-
let _accessibilityIgnoresInvertColors_initializers = [];
|
|
347
|
-
let _accessibilityIgnoresInvertColors_extraInitializers = [];
|
|
348
|
-
let _accessibilityLanguage_decorators;
|
|
349
|
-
let _accessibilityLanguage_initializers = [];
|
|
350
|
-
let _accessibilityLanguage_extraInitializers = [];
|
|
351
|
-
let _accessibilityRespondsToUserInteraction_decorators;
|
|
352
|
-
let _accessibilityRespondsToUserInteraction_initializers = [];
|
|
353
|
-
let _accessibilityRespondsToUserInteraction_extraInitializers = [];
|
|
354
|
-
let _accessibilityShowsLargeContentViewer_decorators;
|
|
355
|
-
let _accessibilityShowsLargeContentViewer_initializers = [];
|
|
356
|
-
let _accessibilityShowsLargeContentViewer_extraInitializers = [];
|
|
357
|
-
let _accessibilityLargeContentTitle_decorators;
|
|
358
|
-
let _accessibilityLargeContentTitle_initializers = [];
|
|
359
|
-
let _accessibilityLargeContentTitle_extraInitializers = [];
|
|
360
|
-
let _role_decorators;
|
|
361
|
-
let _role_initializers = [];
|
|
362
|
-
let _role_extraInitializers = [];
|
|
363
|
-
let _ariaLabel_decorators;
|
|
364
|
-
let _ariaLabel_initializers = [];
|
|
365
|
-
let _ariaLabel_extraInitializers = [];
|
|
366
|
-
let _ariaLabelledBy_decorators;
|
|
367
|
-
let _ariaLabelledBy_initializers = [];
|
|
368
|
-
let _ariaLabelledBy_extraInitializers = [];
|
|
369
|
-
let _ariaLive_decorators;
|
|
370
|
-
let _ariaLive_initializers = [];
|
|
371
|
-
let _ariaLive_extraInitializers = [];
|
|
372
|
-
let _ariaHidden_decorators;
|
|
373
|
-
let _ariaHidden_initializers = [];
|
|
374
|
-
let _ariaHidden_extraInitializers = [];
|
|
375
|
-
let _ariaBusy_decorators;
|
|
376
|
-
let _ariaBusy_initializers = [];
|
|
377
|
-
let _ariaBusy_extraInitializers = [];
|
|
378
|
-
let _ariaChecked_decorators;
|
|
379
|
-
let _ariaChecked_initializers = [];
|
|
380
|
-
let _ariaChecked_extraInitializers = [];
|
|
381
|
-
let _ariaDisabled_decorators;
|
|
382
|
-
let _ariaDisabled_initializers = [];
|
|
383
|
-
let _ariaDisabled_extraInitializers = [];
|
|
384
|
-
let _ariaExpanded_decorators;
|
|
385
|
-
let _ariaExpanded_initializers = [];
|
|
386
|
-
let _ariaExpanded_extraInitializers = [];
|
|
387
|
-
let _ariaSelected_decorators;
|
|
388
|
-
let _ariaSelected_initializers = [];
|
|
389
|
-
let _ariaSelected_extraInitializers = [];
|
|
390
|
-
let _ariaModal_decorators;
|
|
391
|
-
let _ariaModal_initializers = [];
|
|
392
|
-
let _ariaModal_extraInitializers = [];
|
|
393
|
-
let _ariaValueMax_decorators;
|
|
394
|
-
let _ariaValueMax_initializers = [];
|
|
395
|
-
let _ariaValueMax_extraInitializers = [];
|
|
396
|
-
let _ariaValueMin_decorators;
|
|
397
|
-
let _ariaValueMin_initializers = [];
|
|
398
|
-
let _ariaValueMin_extraInitializers = [];
|
|
399
|
-
let _ariaValueNow_decorators;
|
|
400
|
-
let _ariaValueNow_initializers = [];
|
|
401
|
-
let _ariaValueNow_extraInitializers = [];
|
|
402
|
-
let _ariaValueText_decorators;
|
|
403
|
-
let _ariaValueText_initializers = [];
|
|
404
|
-
let _ariaValueText_extraInitializers = [];
|
|
405
|
-
let _itemDir_decorators;
|
|
406
|
-
let _itemDir_initializers = [];
|
|
407
|
-
let _itemDir_extraInitializers = [];
|
|
408
|
-
let _headerDir_decorators;
|
|
409
|
-
let _headerDir_initializers = [];
|
|
410
|
-
let _headerDir_extraInitializers = [];
|
|
411
|
-
let _footerDir_decorators;
|
|
412
|
-
let _footerDir_initializers = [];
|
|
413
|
-
let _footerDir_extraInitializers = [];
|
|
414
|
-
let _emptyDir_decorators;
|
|
415
|
-
let _emptyDir_initializers = [];
|
|
416
|
-
let _emptyDir_extraInitializers = [];
|
|
417
|
-
let _separatorDir_decorators;
|
|
418
|
-
let _separatorDir_initializers = [];
|
|
419
|
-
let _separatorDir_extraInitializers = [];
|
|
420
|
-
let _scrollView_decorators;
|
|
421
|
-
let _scrollView_initializers = [];
|
|
422
|
-
let _scrollView_extraInitializers = [];
|
|
423
|
-
var VirtualizedList = class {
|
|
424
|
-
static { _classThis = this; }
|
|
425
|
-
static {
|
|
426
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
427
|
-
_endReached_decorators = [Output()];
|
|
428
|
-
_startReached_decorators = [Output()];
|
|
429
|
-
_refresh_decorators = [Output()];
|
|
430
|
-
_viewableItemsChanged_decorators = [Output()];
|
|
431
|
-
_scrollToIndexFailed_decorators = [Output()];
|
|
432
|
-
_accessibilityAction_decorators = [Output()];
|
|
433
|
-
_accessibilityTap_decorators = [Output()];
|
|
434
|
-
_magicTap_decorators = [Output()];
|
|
435
|
-
_accessibilityEscape_decorators = [Output()];
|
|
436
|
-
_data_decorators = [Input({ required: true })];
|
|
437
|
-
_getItem_decorators = [Input({ required: true })];
|
|
438
|
-
_getItemCount_decorators = [Input({ required: true })];
|
|
439
|
-
_keyExtractor_decorators = [Input()];
|
|
440
|
-
_getItemLayout_decorators = [Input()];
|
|
441
|
-
_horizontal_decorators = [Input()];
|
|
442
|
-
_inverted_decorators = [Input()];
|
|
443
|
-
_extraData_decorators = [Input()];
|
|
444
|
-
_onEndReachedThreshold_decorators = [Input()];
|
|
445
|
-
_onStartReachedThreshold_decorators = [Input()];
|
|
446
|
-
_refreshing_decorators = [Input()];
|
|
447
|
-
_progressViewOffset_decorators = [Input()];
|
|
448
|
-
_refreshRequested_decorators = [Input()];
|
|
449
|
-
_viewabilityConfig_decorators = [Input()];
|
|
450
|
-
_viewabilityConfigCallbackPairs_decorators = [Input()];
|
|
451
|
-
_initialNumToRender_decorators = [Input()];
|
|
452
|
-
_initialScrollIndex_decorators = [Input()];
|
|
453
|
-
_maxToRenderPerBatch_decorators = [Input()];
|
|
454
|
-
_updateCellsBatchingPeriod_decorators = [Input()];
|
|
455
|
-
_windowSize_decorators = [Input()];
|
|
456
|
-
_stickyHeaderIndices_decorators = [Input()];
|
|
457
|
-
_maintainVisibleContentPosition_decorators = [Input()];
|
|
458
|
-
_onScroll_decorators = [Input()];
|
|
459
|
-
_onScrollBeginDrag_decorators = [Input()];
|
|
460
|
-
_onScrollEndDrag_decorators = [Input()];
|
|
461
|
-
_onMomentumScrollBegin_decorators = [Input()];
|
|
462
|
-
_onMomentumScrollEnd_decorators = [Input()];
|
|
463
|
-
_scrollEventThrottle_decorators = [Input()];
|
|
464
|
-
_keyboardShouldPersistTaps_decorators = [Input()];
|
|
465
|
-
_keyboardDismissMode_decorators = [Input()];
|
|
466
|
-
_style_decorators = [Input()];
|
|
467
|
-
_contentContainerStyle_decorators = [Input()];
|
|
468
|
-
_testID_decorators = [Input()];
|
|
469
|
-
_nativeID_decorators = [Input()];
|
|
470
|
-
_accessible_decorators = [Input()];
|
|
471
|
-
_accessibilityLabel_decorators = [Input()];
|
|
472
|
-
_accessibilityHint_decorators = [Input()];
|
|
473
|
-
_accessibilityRole_decorators = [Input()];
|
|
474
|
-
_accessibilityState_decorators = [Input()];
|
|
475
|
-
_accessibilityValue_decorators = [Input()];
|
|
476
|
-
_accessibilityActions_decorators = [Input()];
|
|
477
|
-
_accessibilityLabelledBy_decorators = [Input()];
|
|
478
|
-
_importantForAccessibility_decorators = [Input()];
|
|
479
|
-
_accessibilityLiveRegion_decorators = [Input()];
|
|
480
|
-
_screenReaderFocusable_decorators = [Input()];
|
|
481
|
-
_accessibilityViewIsModal_decorators = [Input()];
|
|
482
|
-
_accessibilityElementsHidden_decorators = [Input()];
|
|
483
|
-
_accessibilityIgnoresInvertColors_decorators = [Input()];
|
|
484
|
-
_accessibilityLanguage_decorators = [Input()];
|
|
485
|
-
_accessibilityRespondsToUserInteraction_decorators = [Input()];
|
|
486
|
-
_accessibilityShowsLargeContentViewer_decorators = [Input()];
|
|
487
|
-
_accessibilityLargeContentTitle_decorators = [Input()];
|
|
488
|
-
_role_decorators = [Input()];
|
|
489
|
-
_ariaLabel_decorators = [Input()];
|
|
490
|
-
_ariaLabelledBy_decorators = [Input()];
|
|
491
|
-
_ariaLive_decorators = [Input()];
|
|
492
|
-
_ariaHidden_decorators = [Input()];
|
|
493
|
-
_ariaBusy_decorators = [Input()];
|
|
494
|
-
_ariaChecked_decorators = [Input()];
|
|
495
|
-
_ariaDisabled_decorators = [Input()];
|
|
496
|
-
_ariaExpanded_decorators = [Input()];
|
|
497
|
-
_ariaSelected_decorators = [Input()];
|
|
498
|
-
_ariaModal_decorators = [Input()];
|
|
499
|
-
_ariaValueMax_decorators = [Input()];
|
|
500
|
-
_ariaValueMin_decorators = [Input()];
|
|
501
|
-
_ariaValueNow_decorators = [Input()];
|
|
502
|
-
_ariaValueText_decorators = [Input()];
|
|
503
|
-
_itemDir_decorators = [ContentChild(VListItemDirective)];
|
|
504
|
-
_headerDir_decorators = [ContentChild(VListHeaderDirective)];
|
|
505
|
-
_footerDir_decorators = [ContentChild(VListFooterDirective)];
|
|
506
|
-
_emptyDir_decorators = [ContentChild(VListEmptyDirective)];
|
|
507
|
-
_separatorDir_decorators = [ContentChild(VListSeparatorDirective)];
|
|
508
|
-
_scrollView_decorators = [ViewChild(ScrollView)];
|
|
509
|
-
__esDecorate(null, null, _endReached_decorators, { kind: "field", name: "endReached", static: false, private: false, access: { has: obj => "endReached" in obj, get: obj => obj.endReached, set: (obj, value) => { obj.endReached = value; } }, metadata: _metadata }, _endReached_initializers, _endReached_extraInitializers);
|
|
510
|
-
__esDecorate(null, null, _startReached_decorators, { kind: "field", name: "startReached", static: false, private: false, access: { has: obj => "startReached" in obj, get: obj => obj.startReached, set: (obj, value) => { obj.startReached = value; } }, metadata: _metadata }, _startReached_initializers, _startReached_extraInitializers);
|
|
511
|
-
__esDecorate(null, null, _refresh_decorators, { kind: "field", name: "refresh", static: false, private: false, access: { has: obj => "refresh" in obj, get: obj => obj.refresh, set: (obj, value) => { obj.refresh = value; } }, metadata: _metadata }, _refresh_initializers, _refresh_extraInitializers);
|
|
512
|
-
__esDecorate(null, null, _viewableItemsChanged_decorators, { kind: "field", name: "viewableItemsChanged", static: false, private: false, access: { has: obj => "viewableItemsChanged" in obj, get: obj => obj.viewableItemsChanged, set: (obj, value) => { obj.viewableItemsChanged = value; } }, metadata: _metadata }, _viewableItemsChanged_initializers, _viewableItemsChanged_extraInitializers);
|
|
513
|
-
__esDecorate(null, null, _scrollToIndexFailed_decorators, { kind: "field", name: "scrollToIndexFailed", static: false, private: false, access: { has: obj => "scrollToIndexFailed" in obj, get: obj => obj.scrollToIndexFailed, set: (obj, value) => { obj.scrollToIndexFailed = value; } }, metadata: _metadata }, _scrollToIndexFailed_initializers, _scrollToIndexFailed_extraInitializers);
|
|
514
|
-
__esDecorate(null, null, _accessibilityAction_decorators, { kind: "field", name: "accessibilityAction", static: false, private: false, access: { has: obj => "accessibilityAction" in obj, get: obj => obj.accessibilityAction, set: (obj, value) => { obj.accessibilityAction = value; } }, metadata: _metadata }, _accessibilityAction_initializers, _accessibilityAction_extraInitializers);
|
|
515
|
-
__esDecorate(null, null, _accessibilityTap_decorators, { kind: "field", name: "accessibilityTap", static: false, private: false, access: { has: obj => "accessibilityTap" in obj, get: obj => obj.accessibilityTap, set: (obj, value) => { obj.accessibilityTap = value; } }, metadata: _metadata }, _accessibilityTap_initializers, _accessibilityTap_extraInitializers);
|
|
516
|
-
__esDecorate(null, null, _magicTap_decorators, { kind: "field", name: "magicTap", static: false, private: false, access: { has: obj => "magicTap" in obj, get: obj => obj.magicTap, set: (obj, value) => { obj.magicTap = value; } }, metadata: _metadata }, _magicTap_initializers, _magicTap_extraInitializers);
|
|
517
|
-
__esDecorate(null, null, _accessibilityEscape_decorators, { kind: "field", name: "accessibilityEscape", static: false, private: false, access: { has: obj => "accessibilityEscape" in obj, get: obj => obj.accessibilityEscape, set: (obj, value) => { obj.accessibilityEscape = value; } }, metadata: _metadata }, _accessibilityEscape_initializers, _accessibilityEscape_extraInitializers);
|
|
518
|
-
__esDecorate(null, null, _data_decorators, { kind: "field", name: "data", static: false, private: false, access: { has: obj => "data" in obj, get: obj => obj.data, set: (obj, value) => { obj.data = value; } }, metadata: _metadata }, _data_initializers, _data_extraInitializers);
|
|
519
|
-
__esDecorate(null, null, _getItem_decorators, { kind: "field", name: "getItem", static: false, private: false, access: { has: obj => "getItem" in obj, get: obj => obj.getItem, set: (obj, value) => { obj.getItem = value; } }, metadata: _metadata }, _getItem_initializers, _getItem_extraInitializers);
|
|
520
|
-
__esDecorate(null, null, _getItemCount_decorators, { kind: "field", name: "getItemCount", static: false, private: false, access: { has: obj => "getItemCount" in obj, get: obj => obj.getItemCount, set: (obj, value) => { obj.getItemCount = value; } }, metadata: _metadata }, _getItemCount_initializers, _getItemCount_extraInitializers);
|
|
521
|
-
__esDecorate(null, null, _keyExtractor_decorators, { kind: "field", name: "keyExtractor", static: false, private: false, access: { has: obj => "keyExtractor" in obj, get: obj => obj.keyExtractor, set: (obj, value) => { obj.keyExtractor = value; } }, metadata: _metadata }, _keyExtractor_initializers, _keyExtractor_extraInitializers);
|
|
522
|
-
__esDecorate(null, null, _getItemLayout_decorators, { kind: "field", name: "getItemLayout", static: false, private: false, access: { has: obj => "getItemLayout" in obj, get: obj => obj.getItemLayout, set: (obj, value) => { obj.getItemLayout = value; } }, metadata: _metadata }, _getItemLayout_initializers, _getItemLayout_extraInitializers);
|
|
523
|
-
__esDecorate(null, null, _horizontal_decorators, { kind: "field", name: "horizontal", static: false, private: false, access: { has: obj => "horizontal" in obj, get: obj => obj.horizontal, set: (obj, value) => { obj.horizontal = value; } }, metadata: _metadata }, _horizontal_initializers, _horizontal_extraInitializers);
|
|
524
|
-
__esDecorate(null, null, _inverted_decorators, { kind: "field", name: "inverted", static: false, private: false, access: { has: obj => "inverted" in obj, get: obj => obj.inverted, set: (obj, value) => { obj.inverted = value; } }, metadata: _metadata }, _inverted_initializers, _inverted_extraInitializers);
|
|
525
|
-
__esDecorate(null, null, _extraData_decorators, { kind: "field", name: "extraData", static: false, private: false, access: { has: obj => "extraData" in obj, get: obj => obj.extraData, set: (obj, value) => { obj.extraData = value; } }, metadata: _metadata }, _extraData_initializers, _extraData_extraInitializers);
|
|
526
|
-
__esDecorate(null, null, _onEndReachedThreshold_decorators, { kind: "field", name: "onEndReachedThreshold", static: false, private: false, access: { has: obj => "onEndReachedThreshold" in obj, get: obj => obj.onEndReachedThreshold, set: (obj, value) => { obj.onEndReachedThreshold = value; } }, metadata: _metadata }, _onEndReachedThreshold_initializers, _onEndReachedThreshold_extraInitializers);
|
|
527
|
-
__esDecorate(null, null, _onStartReachedThreshold_decorators, { kind: "field", name: "onStartReachedThreshold", static: false, private: false, access: { has: obj => "onStartReachedThreshold" in obj, get: obj => obj.onStartReachedThreshold, set: (obj, value) => { obj.onStartReachedThreshold = value; } }, metadata: _metadata }, _onStartReachedThreshold_initializers, _onStartReachedThreshold_extraInitializers);
|
|
528
|
-
__esDecorate(null, null, _refreshing_decorators, { kind: "field", name: "refreshing", static: false, private: false, access: { has: obj => "refreshing" in obj, get: obj => obj.refreshing, set: (obj, value) => { obj.refreshing = value; } }, metadata: _metadata }, _refreshing_initializers, _refreshing_extraInitializers);
|
|
529
|
-
__esDecorate(null, null, _progressViewOffset_decorators, { kind: "field", name: "progressViewOffset", static: false, private: false, access: { has: obj => "progressViewOffset" in obj, get: obj => obj.progressViewOffset, set: (obj, value) => { obj.progressViewOffset = value; } }, metadata: _metadata }, _progressViewOffset_initializers, _progressViewOffset_extraInitializers);
|
|
530
|
-
__esDecorate(null, null, _refreshRequested_decorators, { kind: "field", name: "refreshRequested", static: false, private: false, access: { has: obj => "refreshRequested" in obj, get: obj => obj.refreshRequested, set: (obj, value) => { obj.refreshRequested = value; } }, metadata: _metadata }, _refreshRequested_initializers, _refreshRequested_extraInitializers);
|
|
531
|
-
__esDecorate(null, null, _viewabilityConfig_decorators, { kind: "field", name: "viewabilityConfig", static: false, private: false, access: { has: obj => "viewabilityConfig" in obj, get: obj => obj.viewabilityConfig, set: (obj, value) => { obj.viewabilityConfig = value; } }, metadata: _metadata }, _viewabilityConfig_initializers, _viewabilityConfig_extraInitializers);
|
|
532
|
-
__esDecorate(null, null, _viewabilityConfigCallbackPairs_decorators, { kind: "field", name: "viewabilityConfigCallbackPairs", static: false, private: false, access: { has: obj => "viewabilityConfigCallbackPairs" in obj, get: obj => obj.viewabilityConfigCallbackPairs, set: (obj, value) => { obj.viewabilityConfigCallbackPairs = value; } }, metadata: _metadata }, _viewabilityConfigCallbackPairs_initializers, _viewabilityConfigCallbackPairs_extraInitializers);
|
|
533
|
-
__esDecorate(null, null, _initialNumToRender_decorators, { kind: "field", name: "initialNumToRender", static: false, private: false, access: { has: obj => "initialNumToRender" in obj, get: obj => obj.initialNumToRender, set: (obj, value) => { obj.initialNumToRender = value; } }, metadata: _metadata }, _initialNumToRender_initializers, _initialNumToRender_extraInitializers);
|
|
534
|
-
__esDecorate(null, null, _initialScrollIndex_decorators, { kind: "field", name: "initialScrollIndex", static: false, private: false, access: { has: obj => "initialScrollIndex" in obj, get: obj => obj.initialScrollIndex, set: (obj, value) => { obj.initialScrollIndex = value; } }, metadata: _metadata }, _initialScrollIndex_initializers, _initialScrollIndex_extraInitializers);
|
|
535
|
-
__esDecorate(null, null, _maxToRenderPerBatch_decorators, { kind: "field", name: "maxToRenderPerBatch", static: false, private: false, access: { has: obj => "maxToRenderPerBatch" in obj, get: obj => obj.maxToRenderPerBatch, set: (obj, value) => { obj.maxToRenderPerBatch = value; } }, metadata: _metadata }, _maxToRenderPerBatch_initializers, _maxToRenderPerBatch_extraInitializers);
|
|
536
|
-
__esDecorate(null, null, _updateCellsBatchingPeriod_decorators, { kind: "field", name: "updateCellsBatchingPeriod", static: false, private: false, access: { has: obj => "updateCellsBatchingPeriod" in obj, get: obj => obj.updateCellsBatchingPeriod, set: (obj, value) => { obj.updateCellsBatchingPeriod = value; } }, metadata: _metadata }, _updateCellsBatchingPeriod_initializers, _updateCellsBatchingPeriod_extraInitializers);
|
|
537
|
-
__esDecorate(null, null, _windowSize_decorators, { kind: "field", name: "windowSize", static: false, private: false, access: { has: obj => "windowSize" in obj, get: obj => obj.windowSize, set: (obj, value) => { obj.windowSize = value; } }, metadata: _metadata }, _windowSize_initializers, _windowSize_extraInitializers);
|
|
538
|
-
__esDecorate(null, null, _stickyHeaderIndices_decorators, { kind: "field", name: "stickyHeaderIndices", static: false, private: false, access: { has: obj => "stickyHeaderIndices" in obj, get: obj => obj.stickyHeaderIndices, set: (obj, value) => { obj.stickyHeaderIndices = value; } }, metadata: _metadata }, _stickyHeaderIndices_initializers, _stickyHeaderIndices_extraInitializers);
|
|
539
|
-
__esDecorate(null, null, _maintainVisibleContentPosition_decorators, { kind: "field", name: "maintainVisibleContentPosition", static: false, private: false, access: { has: obj => "maintainVisibleContentPosition" in obj, get: obj => obj.maintainVisibleContentPosition, set: (obj, value) => { obj.maintainVisibleContentPosition = value; } }, metadata: _metadata }, _maintainVisibleContentPosition_initializers, _maintainVisibleContentPosition_extraInitializers);
|
|
540
|
-
__esDecorate(null, null, _onScroll_decorators, { kind: "field", name: "onScroll", static: false, private: false, access: { has: obj => "onScroll" in obj, get: obj => obj.onScroll, set: (obj, value) => { obj.onScroll = value; } }, metadata: _metadata }, _onScroll_initializers, _onScroll_extraInitializers);
|
|
541
|
-
__esDecorate(null, null, _onScrollBeginDrag_decorators, { kind: "field", name: "onScrollBeginDrag", static: false, private: false, access: { has: obj => "onScrollBeginDrag" in obj, get: obj => obj.onScrollBeginDrag, set: (obj, value) => { obj.onScrollBeginDrag = value; } }, metadata: _metadata }, _onScrollBeginDrag_initializers, _onScrollBeginDrag_extraInitializers);
|
|
542
|
-
__esDecorate(null, null, _onScrollEndDrag_decorators, { kind: "field", name: "onScrollEndDrag", static: false, private: false, access: { has: obj => "onScrollEndDrag" in obj, get: obj => obj.onScrollEndDrag, set: (obj, value) => { obj.onScrollEndDrag = value; } }, metadata: _metadata }, _onScrollEndDrag_initializers, _onScrollEndDrag_extraInitializers);
|
|
543
|
-
__esDecorate(null, null, _onMomentumScrollBegin_decorators, { kind: "field", name: "onMomentumScrollBegin", static: false, private: false, access: { has: obj => "onMomentumScrollBegin" in obj, get: obj => obj.onMomentumScrollBegin, set: (obj, value) => { obj.onMomentumScrollBegin = value; } }, metadata: _metadata }, _onMomentumScrollBegin_initializers, _onMomentumScrollBegin_extraInitializers);
|
|
544
|
-
__esDecorate(null, null, _onMomentumScrollEnd_decorators, { kind: "field", name: "onMomentumScrollEnd", static: false, private: false, access: { has: obj => "onMomentumScrollEnd" in obj, get: obj => obj.onMomentumScrollEnd, set: (obj, value) => { obj.onMomentumScrollEnd = value; } }, metadata: _metadata }, _onMomentumScrollEnd_initializers, _onMomentumScrollEnd_extraInitializers);
|
|
545
|
-
__esDecorate(null, null, _scrollEventThrottle_decorators, { kind: "field", name: "scrollEventThrottle", static: false, private: false, access: { has: obj => "scrollEventThrottle" in obj, get: obj => obj.scrollEventThrottle, set: (obj, value) => { obj.scrollEventThrottle = value; } }, metadata: _metadata }, _scrollEventThrottle_initializers, _scrollEventThrottle_extraInitializers);
|
|
546
|
-
__esDecorate(null, null, _keyboardShouldPersistTaps_decorators, { kind: "field", name: "keyboardShouldPersistTaps", static: false, private: false, access: { has: obj => "keyboardShouldPersistTaps" in obj, get: obj => obj.keyboardShouldPersistTaps, set: (obj, value) => { obj.keyboardShouldPersistTaps = value; } }, metadata: _metadata }, _keyboardShouldPersistTaps_initializers, _keyboardShouldPersistTaps_extraInitializers);
|
|
547
|
-
__esDecorate(null, null, _keyboardDismissMode_decorators, { kind: "field", name: "keyboardDismissMode", static: false, private: false, access: { has: obj => "keyboardDismissMode" in obj, get: obj => obj.keyboardDismissMode, set: (obj, value) => { obj.keyboardDismissMode = value; } }, metadata: _metadata }, _keyboardDismissMode_initializers, _keyboardDismissMode_extraInitializers);
|
|
548
|
-
__esDecorate(null, null, _style_decorators, { kind: "field", name: "style", static: false, private: false, access: { has: obj => "style" in obj, get: obj => obj.style, set: (obj, value) => { obj.style = value; } }, metadata: _metadata }, _style_initializers, _style_extraInitializers);
|
|
549
|
-
__esDecorate(null, null, _contentContainerStyle_decorators, { kind: "field", name: "contentContainerStyle", static: false, private: false, access: { has: obj => "contentContainerStyle" in obj, get: obj => obj.contentContainerStyle, set: (obj, value) => { obj.contentContainerStyle = value; } }, metadata: _metadata }, _contentContainerStyle_initializers, _contentContainerStyle_extraInitializers);
|
|
550
|
-
__esDecorate(null, null, _testID_decorators, { kind: "field", name: "testID", static: false, private: false, access: { has: obj => "testID" in obj, get: obj => obj.testID, set: (obj, value) => { obj.testID = value; } }, metadata: _metadata }, _testID_initializers, _testID_extraInitializers);
|
|
551
|
-
__esDecorate(null, null, _nativeID_decorators, { kind: "field", name: "nativeID", static: false, private: false, access: { has: obj => "nativeID" in obj, get: obj => obj.nativeID, set: (obj, value) => { obj.nativeID = value; } }, metadata: _metadata }, _nativeID_initializers, _nativeID_extraInitializers);
|
|
552
|
-
__esDecorate(null, null, _accessible_decorators, { kind: "field", name: "accessible", static: false, private: false, access: { has: obj => "accessible" in obj, get: obj => obj.accessible, set: (obj, value) => { obj.accessible = value; } }, metadata: _metadata }, _accessible_initializers, _accessible_extraInitializers);
|
|
553
|
-
__esDecorate(null, null, _accessibilityLabel_decorators, { kind: "field", name: "accessibilityLabel", static: false, private: false, access: { has: obj => "accessibilityLabel" in obj, get: obj => obj.accessibilityLabel, set: (obj, value) => { obj.accessibilityLabel = value; } }, metadata: _metadata }, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
|
|
554
|
-
__esDecorate(null, null, _accessibilityHint_decorators, { kind: "field", name: "accessibilityHint", static: false, private: false, access: { has: obj => "accessibilityHint" in obj, get: obj => obj.accessibilityHint, set: (obj, value) => { obj.accessibilityHint = value; } }, metadata: _metadata }, _accessibilityHint_initializers, _accessibilityHint_extraInitializers);
|
|
555
|
-
__esDecorate(null, null, _accessibilityRole_decorators, { kind: "field", name: "accessibilityRole", static: false, private: false, access: { has: obj => "accessibilityRole" in obj, get: obj => obj.accessibilityRole, set: (obj, value) => { obj.accessibilityRole = value; } }, metadata: _metadata }, _accessibilityRole_initializers, _accessibilityRole_extraInitializers);
|
|
556
|
-
__esDecorate(null, null, _accessibilityState_decorators, { kind: "field", name: "accessibilityState", static: false, private: false, access: { has: obj => "accessibilityState" in obj, get: obj => obj.accessibilityState, set: (obj, value) => { obj.accessibilityState = value; } }, metadata: _metadata }, _accessibilityState_initializers, _accessibilityState_extraInitializers);
|
|
557
|
-
__esDecorate(null, null, _accessibilityValue_decorators, { kind: "field", name: "accessibilityValue", static: false, private: false, access: { has: obj => "accessibilityValue" in obj, get: obj => obj.accessibilityValue, set: (obj, value) => { obj.accessibilityValue = value; } }, metadata: _metadata }, _accessibilityValue_initializers, _accessibilityValue_extraInitializers);
|
|
558
|
-
__esDecorate(null, null, _accessibilityActions_decorators, { kind: "field", name: "accessibilityActions", static: false, private: false, access: { has: obj => "accessibilityActions" in obj, get: obj => obj.accessibilityActions, set: (obj, value) => { obj.accessibilityActions = value; } }, metadata: _metadata }, _accessibilityActions_initializers, _accessibilityActions_extraInitializers);
|
|
559
|
-
__esDecorate(null, null, _accessibilityLabelledBy_decorators, { kind: "field", name: "accessibilityLabelledBy", static: false, private: false, access: { has: obj => "accessibilityLabelledBy" in obj, get: obj => obj.accessibilityLabelledBy, set: (obj, value) => { obj.accessibilityLabelledBy = value; } }, metadata: _metadata }, _accessibilityLabelledBy_initializers, _accessibilityLabelledBy_extraInitializers);
|
|
560
|
-
__esDecorate(null, null, _importantForAccessibility_decorators, { kind: "field", name: "importantForAccessibility", static: false, private: false, access: { has: obj => "importantForAccessibility" in obj, get: obj => obj.importantForAccessibility, set: (obj, value) => { obj.importantForAccessibility = value; } }, metadata: _metadata }, _importantForAccessibility_initializers, _importantForAccessibility_extraInitializers);
|
|
561
|
-
__esDecorate(null, null, _accessibilityLiveRegion_decorators, { kind: "field", name: "accessibilityLiveRegion", static: false, private: false, access: { has: obj => "accessibilityLiveRegion" in obj, get: obj => obj.accessibilityLiveRegion, set: (obj, value) => { obj.accessibilityLiveRegion = value; } }, metadata: _metadata }, _accessibilityLiveRegion_initializers, _accessibilityLiveRegion_extraInitializers);
|
|
562
|
-
__esDecorate(null, null, _screenReaderFocusable_decorators, { kind: "field", name: "screenReaderFocusable", static: false, private: false, access: { has: obj => "screenReaderFocusable" in obj, get: obj => obj.screenReaderFocusable, set: (obj, value) => { obj.screenReaderFocusable = value; } }, metadata: _metadata }, _screenReaderFocusable_initializers, _screenReaderFocusable_extraInitializers);
|
|
563
|
-
__esDecorate(null, null, _accessibilityViewIsModal_decorators, { kind: "field", name: "accessibilityViewIsModal", static: false, private: false, access: { has: obj => "accessibilityViewIsModal" in obj, get: obj => obj.accessibilityViewIsModal, set: (obj, value) => { obj.accessibilityViewIsModal = value; } }, metadata: _metadata }, _accessibilityViewIsModal_initializers, _accessibilityViewIsModal_extraInitializers);
|
|
564
|
-
__esDecorate(null, null, _accessibilityElementsHidden_decorators, { kind: "field", name: "accessibilityElementsHidden", static: false, private: false, access: { has: obj => "accessibilityElementsHidden" in obj, get: obj => obj.accessibilityElementsHidden, set: (obj, value) => { obj.accessibilityElementsHidden = value; } }, metadata: _metadata }, _accessibilityElementsHidden_initializers, _accessibilityElementsHidden_extraInitializers);
|
|
565
|
-
__esDecorate(null, null, _accessibilityIgnoresInvertColors_decorators, { kind: "field", name: "accessibilityIgnoresInvertColors", static: false, private: false, access: { has: obj => "accessibilityIgnoresInvertColors" in obj, get: obj => obj.accessibilityIgnoresInvertColors, set: (obj, value) => { obj.accessibilityIgnoresInvertColors = value; } }, metadata: _metadata }, _accessibilityIgnoresInvertColors_initializers, _accessibilityIgnoresInvertColors_extraInitializers);
|
|
566
|
-
__esDecorate(null, null, _accessibilityLanguage_decorators, { kind: "field", name: "accessibilityLanguage", static: false, private: false, access: { has: obj => "accessibilityLanguage" in obj, get: obj => obj.accessibilityLanguage, set: (obj, value) => { obj.accessibilityLanguage = value; } }, metadata: _metadata }, _accessibilityLanguage_initializers, _accessibilityLanguage_extraInitializers);
|
|
567
|
-
__esDecorate(null, null, _accessibilityRespondsToUserInteraction_decorators, { kind: "field", name: "accessibilityRespondsToUserInteraction", static: false, private: false, access: { has: obj => "accessibilityRespondsToUserInteraction" in obj, get: obj => obj.accessibilityRespondsToUserInteraction, set: (obj, value) => { obj.accessibilityRespondsToUserInteraction = value; } }, metadata: _metadata }, _accessibilityRespondsToUserInteraction_initializers, _accessibilityRespondsToUserInteraction_extraInitializers);
|
|
568
|
-
__esDecorate(null, null, _accessibilityShowsLargeContentViewer_decorators, { kind: "field", name: "accessibilityShowsLargeContentViewer", static: false, private: false, access: { has: obj => "accessibilityShowsLargeContentViewer" in obj, get: obj => obj.accessibilityShowsLargeContentViewer, set: (obj, value) => { obj.accessibilityShowsLargeContentViewer = value; } }, metadata: _metadata }, _accessibilityShowsLargeContentViewer_initializers, _accessibilityShowsLargeContentViewer_extraInitializers);
|
|
569
|
-
__esDecorate(null, null, _accessibilityLargeContentTitle_decorators, { kind: "field", name: "accessibilityLargeContentTitle", static: false, private: false, access: { has: obj => "accessibilityLargeContentTitle" in obj, get: obj => obj.accessibilityLargeContentTitle, set: (obj, value) => { obj.accessibilityLargeContentTitle = value; } }, metadata: _metadata }, _accessibilityLargeContentTitle_initializers, _accessibilityLargeContentTitle_extraInitializers);
|
|
570
|
-
__esDecorate(null, null, _role_decorators, { kind: "field", name: "role", static: false, private: false, access: { has: obj => "role" in obj, get: obj => obj.role, set: (obj, value) => { obj.role = value; } }, metadata: _metadata }, _role_initializers, _role_extraInitializers);
|
|
571
|
-
__esDecorate(null, null, _ariaLabel_decorators, { kind: "field", name: "ariaLabel", static: false, private: false, access: { has: obj => "ariaLabel" in obj, get: obj => obj.ariaLabel, set: (obj, value) => { obj.ariaLabel = value; } }, metadata: _metadata }, _ariaLabel_initializers, _ariaLabel_extraInitializers);
|
|
572
|
-
__esDecorate(null, null, _ariaLabelledBy_decorators, { kind: "field", name: "ariaLabelledBy", static: false, private: false, access: { has: obj => "ariaLabelledBy" in obj, get: obj => obj.ariaLabelledBy, set: (obj, value) => { obj.ariaLabelledBy = value; } }, metadata: _metadata }, _ariaLabelledBy_initializers, _ariaLabelledBy_extraInitializers);
|
|
573
|
-
__esDecorate(null, null, _ariaLive_decorators, { kind: "field", name: "ariaLive", static: false, private: false, access: { has: obj => "ariaLive" in obj, get: obj => obj.ariaLive, set: (obj, value) => { obj.ariaLive = value; } }, metadata: _metadata }, _ariaLive_initializers, _ariaLive_extraInitializers);
|
|
574
|
-
__esDecorate(null, null, _ariaHidden_decorators, { kind: "field", name: "ariaHidden", static: false, private: false, access: { has: obj => "ariaHidden" in obj, get: obj => obj.ariaHidden, set: (obj, value) => { obj.ariaHidden = value; } }, metadata: _metadata }, _ariaHidden_initializers, _ariaHidden_extraInitializers);
|
|
575
|
-
__esDecorate(null, null, _ariaBusy_decorators, { kind: "field", name: "ariaBusy", static: false, private: false, access: { has: obj => "ariaBusy" in obj, get: obj => obj.ariaBusy, set: (obj, value) => { obj.ariaBusy = value; } }, metadata: _metadata }, _ariaBusy_initializers, _ariaBusy_extraInitializers);
|
|
576
|
-
__esDecorate(null, null, _ariaChecked_decorators, { kind: "field", name: "ariaChecked", static: false, private: false, access: { has: obj => "ariaChecked" in obj, get: obj => obj.ariaChecked, set: (obj, value) => { obj.ariaChecked = value; } }, metadata: _metadata }, _ariaChecked_initializers, _ariaChecked_extraInitializers);
|
|
577
|
-
__esDecorate(null, null, _ariaDisabled_decorators, { kind: "field", name: "ariaDisabled", static: false, private: false, access: { has: obj => "ariaDisabled" in obj, get: obj => obj.ariaDisabled, set: (obj, value) => { obj.ariaDisabled = value; } }, metadata: _metadata }, _ariaDisabled_initializers, _ariaDisabled_extraInitializers);
|
|
578
|
-
__esDecorate(null, null, _ariaExpanded_decorators, { kind: "field", name: "ariaExpanded", static: false, private: false, access: { has: obj => "ariaExpanded" in obj, get: obj => obj.ariaExpanded, set: (obj, value) => { obj.ariaExpanded = value; } }, metadata: _metadata }, _ariaExpanded_initializers, _ariaExpanded_extraInitializers);
|
|
579
|
-
__esDecorate(null, null, _ariaSelected_decorators, { kind: "field", name: "ariaSelected", static: false, private: false, access: { has: obj => "ariaSelected" in obj, get: obj => obj.ariaSelected, set: (obj, value) => { obj.ariaSelected = value; } }, metadata: _metadata }, _ariaSelected_initializers, _ariaSelected_extraInitializers);
|
|
580
|
-
__esDecorate(null, null, _ariaModal_decorators, { kind: "field", name: "ariaModal", static: false, private: false, access: { has: obj => "ariaModal" in obj, get: obj => obj.ariaModal, set: (obj, value) => { obj.ariaModal = value; } }, metadata: _metadata }, _ariaModal_initializers, _ariaModal_extraInitializers);
|
|
581
|
-
__esDecorate(null, null, _ariaValueMax_decorators, { kind: "field", name: "ariaValueMax", static: false, private: false, access: { has: obj => "ariaValueMax" in obj, get: obj => obj.ariaValueMax, set: (obj, value) => { obj.ariaValueMax = value; } }, metadata: _metadata }, _ariaValueMax_initializers, _ariaValueMax_extraInitializers);
|
|
582
|
-
__esDecorate(null, null, _ariaValueMin_decorators, { kind: "field", name: "ariaValueMin", static: false, private: false, access: { has: obj => "ariaValueMin" in obj, get: obj => obj.ariaValueMin, set: (obj, value) => { obj.ariaValueMin = value; } }, metadata: _metadata }, _ariaValueMin_initializers, _ariaValueMin_extraInitializers);
|
|
583
|
-
__esDecorate(null, null, _ariaValueNow_decorators, { kind: "field", name: "ariaValueNow", static: false, private: false, access: { has: obj => "ariaValueNow" in obj, get: obj => obj.ariaValueNow, set: (obj, value) => { obj.ariaValueNow = value; } }, metadata: _metadata }, _ariaValueNow_initializers, _ariaValueNow_extraInitializers);
|
|
584
|
-
__esDecorate(null, null, _ariaValueText_decorators, { kind: "field", name: "ariaValueText", static: false, private: false, access: { has: obj => "ariaValueText" in obj, get: obj => obj.ariaValueText, set: (obj, value) => { obj.ariaValueText = value; } }, metadata: _metadata }, _ariaValueText_initializers, _ariaValueText_extraInitializers);
|
|
585
|
-
__esDecorate(null, null, _itemDir_decorators, { kind: "field", name: "itemDir", static: false, private: false, access: { has: obj => "itemDir" in obj, get: obj => obj.itemDir, set: (obj, value) => { obj.itemDir = value; } }, metadata: _metadata }, _itemDir_initializers, _itemDir_extraInitializers);
|
|
586
|
-
__esDecorate(null, null, _headerDir_decorators, { kind: "field", name: "headerDir", static: false, private: false, access: { has: obj => "headerDir" in obj, get: obj => obj.headerDir, set: (obj, value) => { obj.headerDir = value; } }, metadata: _metadata }, _headerDir_initializers, _headerDir_extraInitializers);
|
|
587
|
-
__esDecorate(null, null, _footerDir_decorators, { kind: "field", name: "footerDir", static: false, private: false, access: { has: obj => "footerDir" in obj, get: obj => obj.footerDir, set: (obj, value) => { obj.footerDir = value; } }, metadata: _metadata }, _footerDir_initializers, _footerDir_extraInitializers);
|
|
588
|
-
__esDecorate(null, null, _emptyDir_decorators, { kind: "field", name: "emptyDir", static: false, private: false, access: { has: obj => "emptyDir" in obj, get: obj => obj.emptyDir, set: (obj, value) => { obj.emptyDir = value; } }, metadata: _metadata }, _emptyDir_initializers, _emptyDir_extraInitializers);
|
|
589
|
-
__esDecorate(null, null, _separatorDir_decorators, { kind: "field", name: "separatorDir", static: false, private: false, access: { has: obj => "separatorDir" in obj, get: obj => obj.separatorDir, set: (obj, value) => { obj.separatorDir = value; } }, metadata: _metadata }, _separatorDir_initializers, _separatorDir_extraInitializers);
|
|
590
|
-
__esDecorate(null, null, _scrollView_decorators, { kind: "field", name: "scrollView", static: false, private: false, access: { has: obj => "scrollView" in obj, get: obj => obj.scrollView, set: (obj, value) => { obj.scrollView = value; } }, metadata: _metadata }, _scrollView_initializers, _scrollView_extraInitializers);
|
|
591
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
592
|
-
VirtualizedList = _classThis = _classDescriptor.value;
|
|
593
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
594
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
595
|
-
}
|
|
596
|
-
// The list's edge/viewability/failure events as real Angular events: `(endReached)="…"`, not
|
|
597
|
-
// `[onEndReached]="…"`. See handleRefresh/accessibility*Tick below for how the still-callback-
|
|
598
|
-
// shaped ScrollView/RefreshControl @Input()s are fed from these.
|
|
599
|
-
endReached = __runInitializers(this, _endReached_initializers, new EventEmitter());
|
|
600
|
-
startReached = (__runInitializers(this, _endReached_extraInitializers), __runInitializers(this, _startReached_initializers, new EventEmitter()));
|
|
601
|
-
refresh = (__runInitializers(this, _startReached_extraInitializers), __runInitializers(this, _refresh_initializers, new EventEmitter()));
|
|
602
|
-
viewableItemsChanged = (__runInitializers(this, _refresh_extraInitializers), __runInitializers(this, _viewableItemsChanged_initializers, new EventEmitter()));
|
|
603
|
-
scrollToIndexFailed = (__runInitializers(this, _viewableItemsChanged_extraInitializers), __runInitializers(this, _scrollToIndexFailed_initializers, new EventEmitter()));
|
|
604
|
-
accessibilityAction = (__runInitializers(this, _scrollToIndexFailed_extraInitializers), __runInitializers(this, _accessibilityAction_initializers, new EventEmitter()));
|
|
605
|
-
accessibilityTap = (__runInitializers(this, _accessibilityAction_extraInitializers), __runInitializers(this, _accessibilityTap_initializers, new EventEmitter()));
|
|
606
|
-
magicTap = (__runInitializers(this, _accessibilityTap_extraInitializers), __runInitializers(this, _magicTap_initializers, new EventEmitter()));
|
|
607
|
-
accessibilityEscape = (__runInitializers(this, _magicTap_extraInitializers), __runInitializers(this, _accessibilityEscape_initializers, new EventEmitter()));
|
|
608
|
-
data = (__runInitializers(this, _accessibilityEscape_extraInitializers), __runInitializers(this, _data_initializers, void 0));
|
|
609
|
-
getItem = (__runInitializers(this, _data_extraInitializers), __runInitializers(this, _getItem_initializers, void 0));
|
|
610
|
-
getItemCount = (__runInitializers(this, _getItem_extraInitializers), __runInitializers(this, _getItemCount_initializers, void 0));
|
|
611
|
-
keyExtractor = (__runInitializers(this, _getItemCount_extraInitializers), __runInitializers(this, _keyExtractor_initializers, void 0));
|
|
612
|
-
getItemLayout = (__runInitializers(this, _keyExtractor_extraInitializers), __runInitializers(this, _getItemLayout_initializers, void 0));
|
|
613
|
-
horizontal = (__runInitializers(this, _getItemLayout_extraInitializers), __runInitializers(this, _horizontal_initializers, void 0));
|
|
614
|
-
inverted = (__runInitializers(this, _horizontal_extraInitializers), __runInitializers(this, _inverted_initializers, void 0));
|
|
615
|
-
extraData = (__runInitializers(this, _inverted_extraInitializers), __runInitializers(this, _extraData_initializers, void 0));
|
|
616
|
-
onEndReachedThreshold = (__runInitializers(this, _extraData_extraInitializers), __runInitializers(this, _onEndReachedThreshold_initializers, void 0));
|
|
617
|
-
onStartReachedThreshold = (__runInitializers(this, _onEndReachedThreshold_extraInitializers), __runInitializers(this, _onStartReachedThreshold_initializers, void 0));
|
|
618
|
-
refreshing = (__runInitializers(this, _onStartReachedThreshold_extraInitializers), __runInitializers(this, _refreshing_initializers, void 0));
|
|
619
|
-
progressViewOffset = (__runInitializers(this, _refreshing_extraInitializers), __runInitializers(this, _progressViewOffset_initializers, void 0));
|
|
620
|
-
// Set explicitly by a wrapper (FlatList/VirtualizedSectionList) that ALWAYS binds
|
|
621
|
-
// `(refresh)="refresh.emit()"` on this component to re-forward the event outward — that binding
|
|
622
|
-
// itself makes `this.refresh.observed` permanently true (Angular subscribes unconditionally the
|
|
623
|
-
// moment a template writes `(refresh)="…"`, regardless of what the handler does), so `.observed`
|
|
624
|
-
// can no longer tell "the app actually wants pull-to-refresh" from "a wrapper is just forwarding
|
|
625
|
-
// the event". A wrapper passes its OWN public `refresh.observed` here instead; direct usage
|
|
626
|
-
// (no wrapper) falls back to this component's own `.observed`, unchanged from before.
|
|
627
|
-
refreshRequested = (__runInitializers(this, _progressViewOffset_extraInitializers), __runInitializers(this, _refreshRequested_initializers, void 0));
|
|
628
|
-
viewabilityConfig = (__runInitializers(this, _refreshRequested_extraInitializers), __runInitializers(this, _viewabilityConfig_initializers, void 0));
|
|
629
|
-
viewabilityConfigCallbackPairs = (__runInitializers(this, _viewabilityConfig_extraInitializers), __runInitializers(this, _viewabilityConfigCallbackPairs_initializers, void 0));
|
|
630
|
-
initialNumToRender = (__runInitializers(this, _viewabilityConfigCallbackPairs_extraInitializers), __runInitializers(this, _initialNumToRender_initializers, void 0));
|
|
631
|
-
initialScrollIndex = (__runInitializers(this, _initialNumToRender_extraInitializers), __runInitializers(this, _initialScrollIndex_initializers, void 0));
|
|
632
|
-
maxToRenderPerBatch = (__runInitializers(this, _initialScrollIndex_extraInitializers), __runInitializers(this, _maxToRenderPerBatch_initializers, void 0));
|
|
633
|
-
updateCellsBatchingPeriod = (__runInitializers(this, _maxToRenderPerBatch_extraInitializers), __runInitializers(this, _updateCellsBatchingPeriod_initializers, void 0));
|
|
634
|
-
windowSize = (__runInitializers(this, _updateCellsBatchingPeriod_extraInitializers), __runInitializers(this, _windowSize_initializers, void 0));
|
|
635
|
-
stickyHeaderIndices = (__runInitializers(this, _windowSize_extraInitializers), __runInitializers(this, _stickyHeaderIndices_initializers, void 0));
|
|
636
|
-
maintainVisibleContentPosition = (__runInitializers(this, _stickyHeaderIndices_extraInitializers), __runInitializers(this, _maintainVisibleContentPosition_initializers, void 0));
|
|
637
|
-
onScroll = (__runInitializers(this, _maintainVisibleContentPosition_extraInitializers), __runInitializers(this, _onScroll_initializers, void 0));
|
|
638
|
-
onScrollBeginDrag = (__runInitializers(this, _onScroll_extraInitializers), __runInitializers(this, _onScrollBeginDrag_initializers, void 0));
|
|
639
|
-
onScrollEndDrag = (__runInitializers(this, _onScrollBeginDrag_extraInitializers), __runInitializers(this, _onScrollEndDrag_initializers, void 0));
|
|
640
|
-
onMomentumScrollBegin = (__runInitializers(this, _onScrollEndDrag_extraInitializers), __runInitializers(this, _onMomentumScrollBegin_initializers, void 0));
|
|
641
|
-
onMomentumScrollEnd = (__runInitializers(this, _onMomentumScrollBegin_extraInitializers), __runInitializers(this, _onMomentumScrollEnd_initializers, void 0));
|
|
642
|
-
scrollEventThrottle = (__runInitializers(this, _onMomentumScrollEnd_extraInitializers), __runInitializers(this, _scrollEventThrottle_initializers, void 0));
|
|
643
|
-
keyboardShouldPersistTaps = (__runInitializers(this, _scrollEventThrottle_extraInitializers), __runInitializers(this, _keyboardShouldPersistTaps_initializers, void 0));
|
|
644
|
-
keyboardDismissMode = (__runInitializers(this, _keyboardShouldPersistTaps_extraInitializers), __runInitializers(this, _keyboardDismissMode_initializers, void 0));
|
|
645
|
-
style = (__runInitializers(this, _keyboardDismissMode_extraInitializers), __runInitializers(this, _style_initializers, void 0));
|
|
646
|
-
contentContainerStyle = (__runInitializers(this, _style_extraInitializers), __runInitializers(this, _contentContainerStyle_initializers, void 0));
|
|
647
|
-
testID = (__runInitializers(this, _contentContainerStyle_extraInitializers), __runInitializers(this, _testID_initializers, void 0));
|
|
648
|
-
nativeID = (__runInitializers(this, _testID_extraInitializers), __runInitializers(this, _nativeID_initializers, void 0));
|
|
649
|
-
accessible = (__runInitializers(this, _nativeID_extraInitializers), __runInitializers(this, _accessible_initializers, void 0));
|
|
650
|
-
accessibilityLabel = (__runInitializers(this, _accessible_extraInitializers), __runInitializers(this, _accessibilityLabel_initializers, void 0));
|
|
651
|
-
accessibilityHint = (__runInitializers(this, _accessibilityLabel_extraInitializers), __runInitializers(this, _accessibilityHint_initializers, void 0));
|
|
652
|
-
accessibilityRole = (__runInitializers(this, _accessibilityHint_extraInitializers), __runInitializers(this, _accessibilityRole_initializers, void 0));
|
|
653
|
-
accessibilityState = (__runInitializers(this, _accessibilityRole_extraInitializers), __runInitializers(this, _accessibilityState_initializers, void 0));
|
|
654
|
-
accessibilityValue = (__runInitializers(this, _accessibilityState_extraInitializers), __runInitializers(this, _accessibilityValue_initializers, void 0));
|
|
655
|
-
accessibilityActions = (__runInitializers(this, _accessibilityValue_extraInitializers), __runInitializers(this, _accessibilityActions_initializers, void 0));
|
|
656
|
-
accessibilityLabelledBy = (__runInitializers(this, _accessibilityActions_extraInitializers), __runInitializers(this, _accessibilityLabelledBy_initializers, void 0));
|
|
657
|
-
importantForAccessibility = (__runInitializers(this, _accessibilityLabelledBy_extraInitializers), __runInitializers(this, _importantForAccessibility_initializers, void 0));
|
|
658
|
-
accessibilityLiveRegion = (__runInitializers(this, _importantForAccessibility_extraInitializers), __runInitializers(this, _accessibilityLiveRegion_initializers, void 0));
|
|
659
|
-
screenReaderFocusable = (__runInitializers(this, _accessibilityLiveRegion_extraInitializers), __runInitializers(this, _screenReaderFocusable_initializers, void 0));
|
|
660
|
-
accessibilityViewIsModal = (__runInitializers(this, _screenReaderFocusable_extraInitializers), __runInitializers(this, _accessibilityViewIsModal_initializers, void 0));
|
|
661
|
-
accessibilityElementsHidden = (__runInitializers(this, _accessibilityViewIsModal_extraInitializers), __runInitializers(this, _accessibilityElementsHidden_initializers, void 0));
|
|
662
|
-
accessibilityIgnoresInvertColors = (__runInitializers(this, _accessibilityElementsHidden_extraInitializers), __runInitializers(this, _accessibilityIgnoresInvertColors_initializers, void 0));
|
|
663
|
-
accessibilityLanguage = (__runInitializers(this, _accessibilityIgnoresInvertColors_extraInitializers), __runInitializers(this, _accessibilityLanguage_initializers, void 0));
|
|
664
|
-
accessibilityRespondsToUserInteraction = (__runInitializers(this, _accessibilityLanguage_extraInitializers), __runInitializers(this, _accessibilityRespondsToUserInteraction_initializers, void 0));
|
|
665
|
-
accessibilityShowsLargeContentViewer = (__runInitializers(this, _accessibilityRespondsToUserInteraction_extraInitializers), __runInitializers(this, _accessibilityShowsLargeContentViewer_initializers, void 0));
|
|
666
|
-
accessibilityLargeContentTitle = (__runInitializers(this, _accessibilityShowsLargeContentViewer_extraInitializers), __runInitializers(this, _accessibilityLargeContentTitle_initializers, void 0));
|
|
667
|
-
role = (__runInitializers(this, _accessibilityLargeContentTitle_extraInitializers), __runInitializers(this, _role_initializers, void 0));
|
|
668
|
-
ariaLabel = (__runInitializers(this, _role_extraInitializers), __runInitializers(this, _ariaLabel_initializers, void 0));
|
|
669
|
-
ariaLabelledBy = (__runInitializers(this, _ariaLabel_extraInitializers), __runInitializers(this, _ariaLabelledBy_initializers, void 0));
|
|
670
|
-
ariaLive = (__runInitializers(this, _ariaLabelledBy_extraInitializers), __runInitializers(this, _ariaLive_initializers, void 0));
|
|
671
|
-
ariaHidden = (__runInitializers(this, _ariaLive_extraInitializers), __runInitializers(this, _ariaHidden_initializers, void 0));
|
|
672
|
-
ariaBusy = (__runInitializers(this, _ariaHidden_extraInitializers), __runInitializers(this, _ariaBusy_initializers, void 0));
|
|
673
|
-
ariaChecked = (__runInitializers(this, _ariaBusy_extraInitializers), __runInitializers(this, _ariaChecked_initializers, void 0));
|
|
674
|
-
ariaDisabled = (__runInitializers(this, _ariaChecked_extraInitializers), __runInitializers(this, _ariaDisabled_initializers, void 0));
|
|
675
|
-
ariaExpanded = (__runInitializers(this, _ariaDisabled_extraInitializers), __runInitializers(this, _ariaExpanded_initializers, void 0));
|
|
676
|
-
ariaSelected = (__runInitializers(this, _ariaExpanded_extraInitializers), __runInitializers(this, _ariaSelected_initializers, void 0));
|
|
677
|
-
ariaModal = (__runInitializers(this, _ariaSelected_extraInitializers), __runInitializers(this, _ariaModal_initializers, void 0));
|
|
678
|
-
ariaValueMax = (__runInitializers(this, _ariaModal_extraInitializers), __runInitializers(this, _ariaValueMax_initializers, void 0));
|
|
679
|
-
ariaValueMin = (__runInitializers(this, _ariaValueMax_extraInitializers), __runInitializers(this, _ariaValueMin_initializers, void 0));
|
|
680
|
-
ariaValueNow = (__runInitializers(this, _ariaValueMin_extraInitializers), __runInitializers(this, _ariaValueNow_initializers, void 0));
|
|
681
|
-
ariaValueText = (__runInitializers(this, _ariaValueNow_extraInitializers), __runInitializers(this, _ariaValueText_initializers, void 0));
|
|
682
|
-
// The cell + slot templates the app authors (the Angular twin of renderItem / ListHeaderComponent
|
|
683
|
-
// / ListFooterComponent / ListEmptyComponent / ItemSeparatorComponent), captured from projected
|
|
684
|
-
// <ng-template> content. Resolved by ngAfterContentInit, read each ngDoCheck (from the 2nd CD on).
|
|
685
|
-
itemDir = (__runInitializers(this, _ariaValueText_extraInitializers), __runInitializers(this, _itemDir_initializers, void 0));
|
|
686
|
-
headerDir = (__runInitializers(this, _itemDir_extraInitializers), __runInitializers(this, _headerDir_initializers, void 0));
|
|
687
|
-
footerDir = (__runInitializers(this, _headerDir_extraInitializers), __runInitializers(this, _footerDir_initializers, void 0));
|
|
688
|
-
emptyDir = (__runInitializers(this, _footerDir_extraInitializers), __runInitializers(this, _emptyDir_initializers, void 0));
|
|
689
|
-
separatorDir = (__runInitializers(this, _emptyDir_extraInitializers), __runInitializers(this, _separatorDir_initializers, void 0));
|
|
690
|
-
// The composed inner scroll view. Its instance IS an IScrollViewHandle (scrollTo / scrollToEnd /
|
|
691
|
-
// flashScrollIndicators / getScrollNode), so the imperative handle delegates straight to it.
|
|
692
|
-
// Available from ngAfterViewInit on; the handle reads the node lazily and no-ops before commit.
|
|
693
|
-
scrollView = (__runInitializers(this, _separatorDir_extraInitializers), __runInitializers(this, _scrollView_initializers, void 0));
|
|
694
|
-
// --- template-bound view state, assembled in ngDoCheck (recomputeView) ---
|
|
695
|
-
itemCount = (__runInitializers(this, _scrollView_extraInitializers), EMPTY_OFFSET);
|
|
696
|
-
windowCells = [];
|
|
697
|
-
leadingSpacerStyle = null;
|
|
698
|
-
trailingSpacerStyle = null;
|
|
699
|
-
cellStyle = undefined;
|
|
700
|
-
renderedStickyIndices = undefined;
|
|
701
|
-
// Bound to the template's `[style]="resolvedStyle"`, which Angular compiles to the built-in
|
|
702
|
-
// ɵɵstyleMap instruction — it only understands a flat object, never an array (RN's own
|
|
703
|
-
// `style={[a, b]}` composition idiom crashes deep inside Angular's styling engine), so this
|
|
704
|
-
// is always pre-flattened via the engine's own flattenStyle, never left as an array.
|
|
705
|
-
resolvedStyle = undefined;
|
|
706
|
-
resolvedContentContainerStyle = undefined;
|
|
707
|
-
resolvedMaintainVisibleContentPosition = undefined;
|
|
708
|
-
// The offset we are imperatively driving native to before the scroll handle attaches (rides down
|
|
709
|
-
// as contentOffset). A fresh object identity each push so the commit re-applies a repeated value.
|
|
710
|
-
commandedOffset = undefined;
|
|
711
|
-
// --- reactive scalars (mutated by the native callbacks; markForCheck re-runs the CD) ---
|
|
712
|
-
scrollOffset = EMPTY_OFFSET;
|
|
713
|
-
viewportLength = EMPTY_OFFSET;
|
|
714
|
-
measureVersion = EMPTY_OFFSET;
|
|
715
|
-
// --- non-render state (the Angular twin of refs that never trigger a render) ---
|
|
716
|
-
metricsCore = {
|
|
717
|
-
count: EMPTY_OFFSET,
|
|
718
|
-
offsets: [],
|
|
719
|
-
lengths: [],
|
|
720
|
-
total: EMPTY_OFFSET,
|
|
721
|
-
first: FIRST_INDEX,
|
|
722
|
-
last: -1,
|
|
723
|
-
target: { first: FIRST_INDEX, last: -1 },
|
|
724
|
-
averageLength: EMPTY_OFFSET,
|
|
725
|
-
};
|
|
726
|
-
measured = new Map();
|
|
727
|
-
cellMeasures = new Map();
|
|
728
|
-
separatorOverrides = new Map();
|
|
729
|
-
// The previously committed window, grown by at most maxToRenderPerBatch per tick (no snap).
|
|
730
|
-
committedWindow = { first: FIRST_INDEX, last: -1 };
|
|
731
|
-
sentEndForContentLength = NO_CONTENT_LENGTH_SENT;
|
|
732
|
-
sentStartForContentLength = NO_CONTENT_LENGTH_SENT;
|
|
733
|
-
lastViewable = new Map();
|
|
734
|
-
viewableTimer = null;
|
|
735
|
-
batchTimer = null;
|
|
736
|
-
hasInteracted = false;
|
|
737
|
-
appliedInitialScroll = false;
|
|
738
|
-
firstVisibleKey = null;
|
|
739
|
-
// Dedupes the after-commit effects: they run only when the windowing signature changed.
|
|
740
|
-
lastEffectSignature = '';
|
|
741
|
-
// Dedupes ngDoCheck's own recompute. WITHOUT this, recomputeView() unconditionally rebuilds
|
|
742
|
-
// windowCells (and each cell's `separators` handle — fresh closures every call) on EVERY CD pass,
|
|
743
|
-
// including ones triggered by something else entirely in the app. A fresh context object flows
|
|
744
|
-
// into VListOutletDirective, which (correctly) sees its `context` @Input() change and calls
|
|
745
|
-
// `viewRef.markForCheck()` — which reschedules ANOTHER change-detection tick via the zoneless
|
|
746
|
-
// scheduler (adapters/angular/src/render.ts). Recomputing unconditionally therefore free-runs
|
|
747
|
-
// forever the moment a list actually has cells to stamp (a real, previously-dormant bug only
|
|
748
|
-
// exposed once flat-list.test.ts's projection fix let cells render for the first time — see that
|
|
749
|
-
// test's comment). Guarding recompute behind "did anything relevant actually change" breaks the
|
|
750
|
-
// cycle: unrelated CD passes reuse the same windowCells/context identities, so
|
|
751
|
-
// VListOutletDirective's ngOnChanges sees no change and never reschedules.
|
|
752
|
-
lastRecompute = undefined;
|
|
753
|
-
cdr = inject(ChangeDetectorRef);
|
|
754
|
-
// This component's OWN host — the non-painting anchor `class="..."` at the use site resolves
|
|
755
|
-
// onto (see anchorHostStyle's doc comment) — NOT `scrollView` above, which targets the real
|
|
756
|
-
// inner `<ScrollView>` one level down (itself its own separate anchor host).
|
|
757
|
-
elementRef = inject(ElementRef);
|
|
758
|
-
get foldedAccessibility() {
|
|
759
|
-
return resolveAccessibilityProps({
|
|
760
|
-
testID: this.testID,
|
|
761
|
-
nativeID: this.nativeID,
|
|
762
|
-
accessible: this.accessible,
|
|
763
|
-
accessibilityLabel: this.accessibilityLabel,
|
|
764
|
-
accessibilityHint: this.accessibilityHint,
|
|
765
|
-
accessibilityRole: this.accessibilityRole,
|
|
766
|
-
accessibilityState: this.accessibilityState,
|
|
767
|
-
accessibilityValue: this.accessibilityValue,
|
|
768
|
-
accessibilityActions: this.accessibilityActions,
|
|
769
|
-
accessibilityLabelledBy: this.accessibilityLabelledBy,
|
|
770
|
-
importantForAccessibility: this.importantForAccessibility,
|
|
771
|
-
accessibilityLiveRegion: this.accessibilityLiveRegion,
|
|
772
|
-
screenReaderFocusable: this.screenReaderFocusable,
|
|
773
|
-
accessibilityViewIsModal: this.accessibilityViewIsModal,
|
|
774
|
-
accessibilityElementsHidden: this.accessibilityElementsHidden,
|
|
775
|
-
accessibilityIgnoresInvertColors: this.accessibilityIgnoresInvertColors,
|
|
776
|
-
accessibilityLanguage: this.accessibilityLanguage,
|
|
777
|
-
accessibilityRespondsToUserInteraction: this.accessibilityRespondsToUserInteraction,
|
|
778
|
-
accessibilityShowsLargeContentViewer: this.accessibilityShowsLargeContentViewer,
|
|
779
|
-
accessibilityLargeContentTitle: this.accessibilityLargeContentTitle,
|
|
780
|
-
role: this.role,
|
|
781
|
-
'aria-label': this.ariaLabel,
|
|
782
|
-
'aria-labelledby': this.ariaLabelledBy,
|
|
783
|
-
'aria-live': this.ariaLive,
|
|
784
|
-
'aria-hidden': this.ariaHidden,
|
|
785
|
-
'aria-busy': this.ariaBusy,
|
|
786
|
-
'aria-checked': this.ariaChecked,
|
|
787
|
-
'aria-disabled': this.ariaDisabled,
|
|
788
|
-
'aria-expanded': this.ariaExpanded,
|
|
789
|
-
'aria-selected': this.ariaSelected,
|
|
790
|
-
'aria-modal': this.ariaModal,
|
|
791
|
-
'aria-valuemax': this.ariaValueMax,
|
|
792
|
-
'aria-valuemin': this.ariaValueMin,
|
|
793
|
-
'aria-valuenow': this.ariaValueNow,
|
|
794
|
-
'aria-valuetext': this.ariaValueText,
|
|
795
|
-
});
|
|
796
|
-
}
|
|
797
|
-
get shouldRenderRefreshControl() {
|
|
798
|
-
return this.refreshRequested ?? this.refresh.observed;
|
|
799
|
-
}
|
|
800
|
-
get isHorizontal() {
|
|
801
|
-
return this.horizontal === true;
|
|
802
|
-
}
|
|
803
|
-
get isInverted() {
|
|
804
|
-
return this.inverted === true;
|
|
805
|
-
}
|
|
806
|
-
get windowSizeValue() {
|
|
807
|
-
return this.windowSize ?? DEFAULT_WINDOW_SIZE;
|
|
808
|
-
}
|
|
809
|
-
get initialNumToRenderValue() {
|
|
810
|
-
return this.initialNumToRender ?? DEFAULT_INITIAL_NUM_TO_RENDER;
|
|
811
|
-
}
|
|
812
|
-
get maxToRenderPerBatchValue() {
|
|
813
|
-
return this.maxToRenderPerBatch ?? DEFAULT_MAX_TO_RENDER_PER_BATCH;
|
|
814
|
-
}
|
|
815
|
-
get updateCellsBatchingPeriodValue() {
|
|
816
|
-
return this.updateCellsBatchingPeriod ?? DEFAULT_UPDATE_CELLS_BATCHING_PERIOD;
|
|
817
|
-
}
|
|
818
|
-
get onEndReachedThresholdValue() {
|
|
819
|
-
return this.onEndReachedThreshold ?? DEFAULT_END_REACHED_THRESHOLD;
|
|
820
|
-
}
|
|
821
|
-
get onStartReachedThresholdValue() {
|
|
822
|
-
return this.onStartReachedThreshold ?? DEFAULT_START_REACHED_THRESHOLD;
|
|
823
|
-
}
|
|
824
|
-
// ScrollView's onScroll stays an @Input() callback (an Animated.event(...) target must be able to
|
|
825
|
-
// flow through it, which an @Output() can't carry), so this is a stable arrow field passed
|
|
826
|
-
// straight to [onScroll]. onLayout is a real @Output() now, bound via (layout)="onLayoutTick($event)".
|
|
827
|
-
onScrollTick = (event) => {
|
|
828
|
-
const offset = readScrollOffset(event, this.isHorizontal);
|
|
829
|
-
if (offset === undefined)
|
|
830
|
-
return;
|
|
831
|
-
dlog(`Angular VirtualizedList onScroll offset=${offset}`);
|
|
832
|
-
// First scroll is the interaction that ungates waitForInteraction configs.
|
|
833
|
-
this.hasInteracted = true;
|
|
834
|
-
this.scrollOffset = offset;
|
|
835
|
-
// A real native scroll supersedes any pending commanded offset.
|
|
836
|
-
this.commandedOffset = undefined;
|
|
837
|
-
// Compose, don't clobber: internal windowing ran first, now the user's onScroll.
|
|
838
|
-
this.onScroll?.(event);
|
|
839
|
-
this.cdr.markForCheck();
|
|
840
|
-
};
|
|
841
|
-
onLayoutTick = (event) => {
|
|
842
|
-
const length = readLayoutLength(event, this.isHorizontal);
|
|
843
|
-
if (length === undefined)
|
|
844
|
-
return;
|
|
845
|
-
dlog(`Angular VirtualizedList onLayout viewport=${length}`);
|
|
846
|
-
this.viewportLength = length;
|
|
847
|
-
this.cdr.markForCheck();
|
|
848
|
-
};
|
|
849
|
-
// RefreshControl's refresh and ScrollView's accessibility events are real @Output()s now, bound
|
|
850
|
-
// via (refresh)="handleRefresh()" / (accessibilityAction)="accessibilityActionTick($event)" etc.
|
|
851
|
-
// — these fields just adapt VirtualizedList's own @Output() into a plain re-emit callback.
|
|
852
|
-
handleRefresh = () => {
|
|
853
|
-
this.refresh.emit();
|
|
854
|
-
};
|
|
855
|
-
accessibilityActionTick = (event) => {
|
|
856
|
-
this.accessibilityAction.emit(event);
|
|
857
|
-
};
|
|
858
|
-
accessibilityTapTick = (event) => {
|
|
859
|
-
this.accessibilityTap.emit(event);
|
|
860
|
-
};
|
|
861
|
-
magicTapTick = (event) => {
|
|
862
|
-
this.magicTap.emit(event);
|
|
863
|
-
};
|
|
864
|
-
accessibilityEscapeTick = (event) => {
|
|
865
|
-
this.accessibilityEscape.emit(event);
|
|
866
|
-
};
|
|
867
|
-
keyFor = (index) => {
|
|
868
|
-
const item = this.getItem(this.data, index);
|
|
869
|
-
return this.keyExtractor ? this.keyExtractor(item, index) : String(index);
|
|
870
|
-
};
|
|
871
|
-
// Once-per-CD recompute, BEFORE the template bindings are read (so the freshly computed
|
|
872
|
-
// template-bound fields render this pass — computing them in ngAfterContentChecked instead would
|
|
873
|
-
// trip ExpressionChangedAfterItHasBeenChecked). recomputeMetrics owns the controlled committedWindow
|
|
874
|
-
// throttle (the side effect React runs during render); ngDoCheck is its single evaluation point, so
|
|
875
|
-
// the window grows exactly one step per CD. The projected templates (ContentChild) are resolved
|
|
876
|
-
// from the second CD on; the first paint (count/viewport still 0) corrects on the layout-driven CD.
|
|
877
|
-
ngDoCheck() {
|
|
878
|
-
const recomputeInputs = [
|
|
879
|
-
this.data,
|
|
880
|
-
this.extraData,
|
|
881
|
-
this.getItemLayout,
|
|
882
|
-
this.keyExtractor,
|
|
883
|
-
this.isHorizontal,
|
|
884
|
-
this.isInverted,
|
|
885
|
-
this.windowSizeValue,
|
|
886
|
-
this.initialNumToRenderValue,
|
|
887
|
-
this.maxToRenderPerBatchValue,
|
|
888
|
-
this.stickyHeaderIndices,
|
|
889
|
-
this.maintainVisibleContentPosition,
|
|
890
|
-
this.style,
|
|
891
|
-
this.contentContainerStyle,
|
|
892
|
-
this.scrollOffset,
|
|
893
|
-
this.viewportLength,
|
|
894
|
-
this.measureVersion,
|
|
895
|
-
this.headerDir !== undefined,
|
|
896
|
-
this.footerDir !== undefined,
|
|
897
|
-
this.emptyDir !== undefined,
|
|
898
|
-
this.separatorDir !== undefined,
|
|
899
|
-
];
|
|
900
|
-
const previous = this.lastRecompute;
|
|
901
|
-
this.lastRecompute = recomputeInputs;
|
|
902
|
-
if (previous !== undefined &&
|
|
903
|
-
previous.length === recomputeInputs.length &&
|
|
904
|
-
previous.every((value, index) => value === recomputeInputs[index])) {
|
|
905
|
-
return;
|
|
906
|
-
}
|
|
907
|
-
this.recomputeMetrics();
|
|
908
|
-
this.recomputeView();
|
|
909
|
-
}
|
|
910
|
-
ngAfterViewChecked() {
|
|
911
|
-
const m = this.metricsCore;
|
|
912
|
-
const signature = `${this.scrollOffset}|${this.viewportLength}|${m.first}|${m.last}|${m.count}|${m.total}|${this.measureVersion}`;
|
|
913
|
-
if (signature === this.lastEffectSignature)
|
|
914
|
-
return;
|
|
915
|
-
this.lastEffectSignature = signature;
|
|
916
|
-
this.effectBatchFill();
|
|
917
|
-
this.effectEndReached();
|
|
918
|
-
this.effectStartReached();
|
|
919
|
-
this.effectViewability();
|
|
920
|
-
this.effectInitialScroll();
|
|
921
|
-
this.effectMaintainVisibleContentPosition();
|
|
922
|
-
}
|
|
923
|
-
ngOnDestroy() {
|
|
924
|
-
if (this.viewableTimer !== null)
|
|
925
|
-
clearTimeout(this.viewableTimer);
|
|
926
|
-
if (this.batchTimer !== null)
|
|
927
|
-
clearTimeout(this.batchTimer);
|
|
928
|
-
}
|
|
929
|
-
recomputeMetrics() {
|
|
930
|
-
const count = this.getItemCount(this.data);
|
|
931
|
-
const gil = this.getItemLayout;
|
|
932
|
-
const data = this.data;
|
|
933
|
-
const fixedLayout = gil !== undefined
|
|
934
|
-
? (index) => {
|
|
935
|
-
const layout = gil(data, index);
|
|
936
|
-
return { length: layout.length, offset: layout.offset };
|
|
937
|
-
}
|
|
938
|
-
: undefined;
|
|
939
|
-
const averageLength = fixedLayout !== undefined
|
|
940
|
-
? count > FIRST_INDEX
|
|
941
|
-
? fixedLayout(FIRST_INDEX).length
|
|
942
|
-
: EMPTY_OFFSET
|
|
943
|
-
: averageMeasuredLength(this.measured);
|
|
944
|
-
const { offsets, lengths, total } = buildOffsets(count, this.measured, fixedLayout, averageLength);
|
|
945
|
-
const target = computeWindow(count, offsets, lengths, this.scrollOffset, this.viewportLength, this.windowSizeValue, this.initialNumToRenderValue);
|
|
946
|
-
const throttled = throttleWindow(target, this.committedWindow, this.maxToRenderPerBatchValue);
|
|
947
|
-
this.committedWindow = throttled;
|
|
948
|
-
this.metricsCore = {
|
|
949
|
-
count,
|
|
950
|
-
offsets,
|
|
951
|
-
lengths,
|
|
952
|
-
total,
|
|
953
|
-
first: throttled.first,
|
|
954
|
-
last: throttled.last,
|
|
955
|
-
target,
|
|
956
|
-
averageLength,
|
|
957
|
-
};
|
|
958
|
-
}
|
|
959
|
-
recomputeView() {
|
|
960
|
-
const m = this.metricsCore;
|
|
961
|
-
this.itemCount = m.count;
|
|
962
|
-
const hasHeader = this.headerDir !== undefined;
|
|
963
|
-
const hasSeparators = this.separatorDir !== undefined;
|
|
964
|
-
const stickySet = this.stickyHeaderIndices !== undefined ? new Set(this.stickyHeaderIndices) : undefined;
|
|
965
|
-
this.resolvedContentContainerStyle = this.isHorizontal
|
|
966
|
-
? [this.contentContainerStyle, { width: m.total }]
|
|
967
|
-
: this.contentContainerStyle;
|
|
968
|
-
this.resolvedStyle = flattenStyle([
|
|
969
|
-
anchorHostStyle(this.elementRef),
|
|
970
|
-
this.isInverted
|
|
971
|
-
? [this.style, this.isHorizontal ? INVERTED_X_STYLE : INVERTED_Y_STYLE]
|
|
972
|
-
: this.style,
|
|
973
|
-
]);
|
|
974
|
-
this.cellStyle = this.isInverted
|
|
975
|
-
? this.isHorizontal
|
|
976
|
-
? INVERTED_X_STYLE
|
|
977
|
-
: INVERTED_Y_STYLE
|
|
978
|
-
: undefined;
|
|
979
|
-
this.resolvedMaintainVisibleContentPosition =
|
|
980
|
-
this.maintainVisibleContentPosition === undefined
|
|
981
|
-
? undefined
|
|
982
|
-
: {
|
|
983
|
-
...this.maintainVisibleContentPosition,
|
|
984
|
-
minIndexForVisible: this.maintainVisibleContentPosition.minIndexForVisible + (hasHeader ? 1 : 0),
|
|
985
|
-
};
|
|
986
|
-
if (m.count === FIRST_INDEX) {
|
|
987
|
-
this.windowCells = [];
|
|
988
|
-
this.leadingSpacerStyle = null;
|
|
989
|
-
this.trailingSpacerStyle = null;
|
|
990
|
-
this.renderedStickyIndices = undefined;
|
|
991
|
-
dlog(`Angular VirtualizedList empty (viewport=${this.viewportLength})`);
|
|
992
|
-
return;
|
|
993
|
-
}
|
|
994
|
-
const plan = buildListPlan({
|
|
995
|
-
count: m.count,
|
|
996
|
-
first: m.first,
|
|
997
|
-
last: m.last,
|
|
998
|
-
offsets: m.offsets,
|
|
999
|
-
lengths: m.lengths,
|
|
1000
|
-
total: m.total,
|
|
1001
|
-
keyFor: this.keyFor,
|
|
1002
|
-
stickyIndices: stickySet,
|
|
1003
|
-
hasHeader,
|
|
1004
|
-
hasSeparators,
|
|
1005
|
-
});
|
|
1006
|
-
this.leadingSpacerStyle =
|
|
1007
|
-
plan.leadingExtent > EMPTY_OFFSET ? this.spacerStyle(plan.leadingExtent) : null;
|
|
1008
|
-
this.trailingSpacerStyle =
|
|
1009
|
-
plan.trailingExtent > EMPTY_OFFSET ? this.spacerStyle(plan.trailingExtent) : null;
|
|
1010
|
-
this.renderedStickyIndices =
|
|
1011
|
-
stickySet !== undefined && plan.stickyChildPositions.length > 0
|
|
1012
|
-
? plan.stickyChildPositions
|
|
1013
|
-
: undefined;
|
|
1014
|
-
const cells = [];
|
|
1015
|
-
for (const planned of plan.cells) {
|
|
1016
|
-
const item = this.getItem(this.data, planned.index);
|
|
1017
|
-
const context = {
|
|
1018
|
-
$implicit: item,
|
|
1019
|
-
index: planned.index,
|
|
1020
|
-
separators: this.makeSeparators(planned.index),
|
|
1021
|
-
};
|
|
1022
|
-
let separatorContext;
|
|
1023
|
-
if (hasSeparators && planned.index < m.last) {
|
|
1024
|
-
separatorContext = this.buildSeparatorContext(planned.index, item);
|
|
1025
|
-
}
|
|
1026
|
-
cells.push({
|
|
1027
|
-
key: planned.key,
|
|
1028
|
-
index: planned.index,
|
|
1029
|
-
context,
|
|
1030
|
-
measure: this.cellMeasure(planned.index),
|
|
1031
|
-
separatorContext,
|
|
1032
|
-
});
|
|
1033
|
-
}
|
|
1034
|
-
this.windowCells = cells;
|
|
1035
|
-
dlog(`Angular VirtualizedList window [${m.first}, ${m.last}] of ${m.count} ` +
|
|
1036
|
-
`(offset=${this.scrollOffset}, viewport=${this.viewportLength}, rendered=${cells.length})`);
|
|
1037
|
-
}
|
|
1038
|
-
buildSeparatorContext(index, item) {
|
|
1039
|
-
const overrides = this.separatorOverrides.get(index);
|
|
1040
|
-
const highlighted = overrides?.highlighted ?? false;
|
|
1041
|
-
const context = {
|
|
1042
|
-
$implicit: highlighted,
|
|
1043
|
-
highlighted,
|
|
1044
|
-
leadingItem: item,
|
|
1045
|
-
trailingItem: this.getItem(this.data, index + 1),
|
|
1046
|
-
};
|
|
1047
|
-
// Fold any custom updateProps keys through the context's index signature (RN lets a row drive
|
|
1048
|
-
// arbitrary separator props); the typed fields above stay authoritative.
|
|
1049
|
-
if (overrides !== undefined) {
|
|
1050
|
-
for (const key of Object.keys(overrides)) {
|
|
1051
|
-
if (key === 'highlighted' || key === 'leadingItem' || key === 'trailingItem')
|
|
1052
|
-
continue;
|
|
1053
|
-
context[key] = overrides[key];
|
|
1054
|
-
}
|
|
1055
|
-
}
|
|
1056
|
-
return context;
|
|
1057
|
-
}
|
|
1058
|
-
spacerStyle(extent) {
|
|
1059
|
-
return this.isHorizontal ? { width: extent } : { height: extent };
|
|
1060
|
-
}
|
|
1061
|
-
cellMeasure(index) {
|
|
1062
|
-
const existing = this.cellMeasures.get(index);
|
|
1063
|
-
if (existing !== undefined)
|
|
1064
|
-
return existing;
|
|
1065
|
-
const measure = (event) => {
|
|
1066
|
-
if (this.getItemLayout !== undefined)
|
|
1067
|
-
return;
|
|
1068
|
-
const length = readLayoutLength(event, this.isHorizontal);
|
|
1069
|
-
if (length === undefined)
|
|
1070
|
-
return;
|
|
1071
|
-
if (this.measured.get(index) === length)
|
|
1072
|
-
return;
|
|
1073
|
-
this.measured.set(index, length);
|
|
1074
|
-
dlog(`Angular VirtualizedList cell ${index} measured length=${length}`);
|
|
1075
|
-
this.measureVersion += 1;
|
|
1076
|
-
this.cdr.markForCheck();
|
|
1077
|
-
};
|
|
1078
|
-
this.cellMeasures.set(index, measure);
|
|
1079
|
-
return measure;
|
|
1080
|
-
}
|
|
1081
|
-
// Per-cell onLayout rides the engine's structural (layout) event channel — Angular forbids an
|
|
1082
|
-
// [onLayout] property binding (NG8002). $event arrives untyped, narrowed before reaching measure.
|
|
1083
|
-
handleCellLayout(measure, event) {
|
|
1084
|
-
if (this.isSymbioteEvent(event))
|
|
1085
|
-
measure(event);
|
|
1086
|
-
}
|
|
1087
|
-
isSymbioteEvent(value) {
|
|
1088
|
-
return typeof value === 'object' && value !== null && 'nativeEvent' in value;
|
|
1089
|
-
}
|
|
1090
|
-
mergeSeparator(gapIndex, patch) {
|
|
1091
|
-
const count = this.metricsCore.count;
|
|
1092
|
-
if (gapIndex < FIRST_INDEX || gapIndex > count - 2)
|
|
1093
|
-
return;
|
|
1094
|
-
this.separatorOverrides.set(gapIndex, { ...this.separatorOverrides.get(gapIndex), ...patch });
|
|
1095
|
-
this.cdr.markForCheck();
|
|
1096
|
-
}
|
|
1097
|
-
makeSeparators(index) {
|
|
1098
|
-
return {
|
|
1099
|
-
highlight: () => {
|
|
1100
|
-
dlog(`Angular VirtualizedList separator highlight cell=${index}`);
|
|
1101
|
-
this.mergeSeparator(index - 1, { highlighted: true });
|
|
1102
|
-
this.mergeSeparator(index, { highlighted: true });
|
|
1103
|
-
},
|
|
1104
|
-
unhighlight: () => {
|
|
1105
|
-
dlog(`Angular VirtualizedList separator unhighlight cell=${index}`);
|
|
1106
|
-
this.mergeSeparator(index - 1, { highlighted: false });
|
|
1107
|
-
this.mergeSeparator(index, { highlighted: false });
|
|
1108
|
-
},
|
|
1109
|
-
updateProps: (select, newProps) => {
|
|
1110
|
-
this.mergeSeparator(select === 'leading' ? index - 1 : index, newProps);
|
|
1111
|
-
},
|
|
1112
|
-
};
|
|
1113
|
-
}
|
|
1114
|
-
// ---- imperative handle (the shared IVirtualizedListHandle surface) ----
|
|
1115
|
-
scrollToOffset(params) {
|
|
1116
|
-
this.scrollToPixel(params.offset, params.animated ?? true);
|
|
1117
|
-
}
|
|
1118
|
-
scrollToIndex(params) {
|
|
1119
|
-
const m = this.metricsCore;
|
|
1120
|
-
// No getItemLayout AND the target is past the last measured cell: report the failure instead of
|
|
1121
|
-
// scrolling to a fabricated estimate (RN VirtualizedList.js).
|
|
1122
|
-
if (this.getItemLayout === undefined && params.index > highestMeasuredIndex(this.measured)) {
|
|
1123
|
-
dlog(`Angular VirtualizedList onScrollToIndexFailed index=${params.index} ` +
|
|
1124
|
-
`highestMeasured=${highestMeasuredIndex(this.measured)} (no getItemLayout)`);
|
|
1125
|
-
this.scrollToIndexFailed.emit({
|
|
1126
|
-
index: params.index,
|
|
1127
|
-
highestMeasuredFrameIndex: highestMeasuredIndex(this.measured),
|
|
1128
|
-
averageItemLength: m.averageLength,
|
|
1129
|
-
});
|
|
1130
|
-
return;
|
|
1131
|
-
}
|
|
1132
|
-
this.scrollToPixel(this.offsetForIndexLocal(params.index, params.viewPosition ?? FIRST_INDEX, params.viewOffset ?? EMPTY_OFFSET), params.animated ?? true);
|
|
1133
|
-
}
|
|
1134
|
-
scrollToItem(params) {
|
|
1135
|
-
const count = this.metricsCore.count;
|
|
1136
|
-
for (let index = FIRST_INDEX; index < count; index += 1) {
|
|
1137
|
-
if (this.getItem(this.data, index) === params.item) {
|
|
1138
|
-
this.scrollToPixel(this.offsetForIndexLocal(index, params.viewPosition ?? FIRST_INDEX, EMPTY_OFFSET), params.animated ?? true);
|
|
1139
|
-
return;
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
dlog('Angular VirtualizedList scrollToItem: item not found');
|
|
1143
|
-
}
|
|
1144
|
-
scrollToEnd(params) {
|
|
1145
|
-
this.scrollToPixel(Math.max(EMPTY_OFFSET, this.metricsCore.total - this.viewportLength), params?.animated ?? true);
|
|
1146
|
-
}
|
|
1147
|
-
flashScrollIndicators() {
|
|
1148
|
-
this.scrollView?.flashScrollIndicators();
|
|
1149
|
-
}
|
|
1150
|
-
getNativeScrollRef() {
|
|
1151
|
-
return this.scrollView ?? null;
|
|
1152
|
-
}
|
|
1153
|
-
getScrollableNode() {
|
|
1154
|
-
return this.scrollView ?? null;
|
|
1155
|
-
}
|
|
1156
|
-
getScrollResponder() {
|
|
1157
|
-
return this.scrollView ?? null;
|
|
1158
|
-
}
|
|
1159
|
-
getScrollNode() {
|
|
1160
|
-
return this.scrollView?.getScrollNode() ?? null;
|
|
1161
|
-
}
|
|
1162
|
-
recordInteraction() {
|
|
1163
|
-
this.hasInteracted = true;
|
|
1164
|
-
}
|
|
1165
|
-
scrollToPixel(offset, animated) {
|
|
1166
|
-
const clamped = Math.max(EMPTY_OFFSET, offset);
|
|
1167
|
-
const target = this.isHorizontal
|
|
1168
|
-
? { x: clamped, y: EMPTY_OFFSET }
|
|
1169
|
-
: { x: EMPTY_OFFSET, y: clamped };
|
|
1170
|
-
if (this.scrollView !== undefined) {
|
|
1171
|
-
dlog(`Angular VirtualizedList scrollTo offset=${clamped} animated=${animated} (horizontal=${this.isHorizontal})`);
|
|
1172
|
-
this.scrollView.scrollTo({ x: target.x, y: target.y, animated });
|
|
1173
|
-
return;
|
|
1174
|
-
}
|
|
1175
|
-
dlog(`Angular VirtualizedList scrollTo offset=${clamped} pending-ref`);
|
|
1176
|
-
this.commandedOffset = target;
|
|
1177
|
-
this.cdr.markForCheck();
|
|
1178
|
-
}
|
|
1179
|
-
offsetForIndexLocal(index, viewPosition, viewOffset) {
|
|
1180
|
-
const m = this.metricsCore;
|
|
1181
|
-
return offsetForIndex(index, viewPosition, viewOffset, m.count, m.offsets, m.lengths, this.viewportLength);
|
|
1182
|
-
}
|
|
1183
|
-
// ---- after-commit effects (run in ngAfterViewChecked, the post-render seam) ----
|
|
1184
|
-
// Batch fill: when the throttled window has not reached the target, schedule a re-render so the
|
|
1185
|
-
// window keeps filling toward target over successive ticks (RN's incremental fill).
|
|
1186
|
-
effectBatchFill() {
|
|
1187
|
-
const m = this.metricsCore;
|
|
1188
|
-
if (this.batchTimer !== null) {
|
|
1189
|
-
clearTimeout(this.batchTimer);
|
|
1190
|
-
this.batchTimer = null;
|
|
1191
|
-
}
|
|
1192
|
-
if (m.first <= m.target.first && m.last >= m.target.last)
|
|
1193
|
-
return;
|
|
1194
|
-
this.batchTimer = setTimeout(() => {
|
|
1195
|
-
this.batchTimer = null;
|
|
1196
|
-
this.measureVersion += 1;
|
|
1197
|
-
this.cdr.markForCheck();
|
|
1198
|
-
}, this.updateCellsBatchingPeriodValue);
|
|
1199
|
-
}
|
|
1200
|
-
// onEndReached: fire only when the actual last cell is rendered AND within threshold; dedup by
|
|
1201
|
-
// content length; re-arm on scroll away from the end (RN _maybeCallOnEdgeReached).
|
|
1202
|
-
effectEndReached() {
|
|
1203
|
-
if (!this.endReached.observed || this.viewportLength <= EMPTY_OFFSET)
|
|
1204
|
-
return;
|
|
1205
|
-
const m = this.metricsCore;
|
|
1206
|
-
const { distanceFromEnd, withinThreshold } = computeEndReached(m.total, this.scrollOffset, this.viewportLength, this.onEndReachedThresholdValue);
|
|
1207
|
-
const lastCellRendered = m.last === m.count - 1;
|
|
1208
|
-
if (withinThreshold && lastCellRendered && this.sentEndForContentLength !== m.total) {
|
|
1209
|
-
this.sentEndForContentLength = m.total;
|
|
1210
|
-
dlog(`Angular VirtualizedList endReached distanceFromEnd=${distanceFromEnd} ` +
|
|
1211
|
-
`(last=${m.last} of ${m.count}, contentLength=${m.total})`);
|
|
1212
|
-
this.endReached.emit({ distanceFromEnd });
|
|
1213
|
-
}
|
|
1214
|
-
if (!withinThreshold)
|
|
1215
|
-
this.sentEndForContentLength = NO_CONTENT_LENGTH_SENT;
|
|
1216
|
-
}
|
|
1217
|
-
// startReached: the top-edge twin of endReached.
|
|
1218
|
-
effectStartReached() {
|
|
1219
|
-
if (!this.startReached.observed || this.viewportLength <= EMPTY_OFFSET)
|
|
1220
|
-
return;
|
|
1221
|
-
const m = this.metricsCore;
|
|
1222
|
-
const { distanceFromStart, withinThreshold } = computeStartReached(this.scrollOffset, this.viewportLength, this.onStartReachedThresholdValue);
|
|
1223
|
-
const firstCellRendered = m.first === FIRST_INDEX;
|
|
1224
|
-
if (withinThreshold && firstCellRendered && this.sentStartForContentLength !== m.total) {
|
|
1225
|
-
this.sentStartForContentLength = m.total;
|
|
1226
|
-
dlog(`Angular VirtualizedList startReached distanceFromStart=${distanceFromStart} ` +
|
|
1227
|
-
`(first=${m.first}, contentLength=${m.total})`);
|
|
1228
|
-
this.startReached.emit({ distanceFromStart });
|
|
1229
|
-
}
|
|
1230
|
-
if (!withinThreshold)
|
|
1231
|
-
this.sentStartForContentLength = NO_CONTENT_LENGTH_SENT;
|
|
1232
|
-
}
|
|
1233
|
-
// Viewability: recompute which rendered cells clear the threshold and, if the viewable set
|
|
1234
|
-
// changed, fire viewableItemsChanged + every config/callback pair, honoring minimumViewTime.
|
|
1235
|
-
effectViewability() {
|
|
1236
|
-
const m = this.metricsCore;
|
|
1237
|
-
const pairs = buildViewabilityPairs(this.viewableItemsChanged.observed
|
|
1238
|
-
? (info) => this.viewableItemsChanged.emit(info)
|
|
1239
|
-
: undefined, this.viewabilityConfig, this.viewabilityConfigCallbackPairs);
|
|
1240
|
-
if (pairs.length === EMPTY_OFFSET || this.viewportLength <= EMPTY_OFFSET)
|
|
1241
|
-
return;
|
|
1242
|
-
if (m.count === FIRST_INDEX)
|
|
1243
|
-
return;
|
|
1244
|
-
const { tokens, map } = computeViewableSet({
|
|
1245
|
-
first: m.first,
|
|
1246
|
-
last: m.last,
|
|
1247
|
-
count: m.count,
|
|
1248
|
-
offsets: m.offsets,
|
|
1249
|
-
lengths: m.lengths,
|
|
1250
|
-
scrollOffset: this.scrollOffset,
|
|
1251
|
-
viewportLength: this.viewportLength,
|
|
1252
|
-
data: this.data,
|
|
1253
|
-
getItem: this.getItem,
|
|
1254
|
-
keyExtractor: this.keyExtractor,
|
|
1255
|
-
pairs,
|
|
1256
|
-
hasInteracted: this.hasInteracted,
|
|
1257
|
-
});
|
|
1258
|
-
const diff = diffViewable(this.lastViewable, map, tokens);
|
|
1259
|
-
if (!diff.hasChanged)
|
|
1260
|
-
return;
|
|
1261
|
-
const commitAndFire = () => {
|
|
1262
|
-
this.lastViewable = map;
|
|
1263
|
-
dlog(`Angular VirtualizedList viewable=${tokens.length} changed=${diff.changed.length} ` +
|
|
1264
|
-
`(window [${m.first}, ${m.last}])`);
|
|
1265
|
-
const info = {
|
|
1266
|
-
viewableItems: tokens,
|
|
1267
|
-
changed: diff.changed,
|
|
1268
|
-
};
|
|
1269
|
-
for (const pair of pairs)
|
|
1270
|
-
pair.onViewableItemsChanged(info);
|
|
1271
|
-
};
|
|
1272
|
-
const minimumViewTime = maxMinimumViewTime(pairs);
|
|
1273
|
-
if (this.viewableTimer !== null) {
|
|
1274
|
-
clearTimeout(this.viewableTimer);
|
|
1275
|
-
this.viewableTimer = null;
|
|
1276
|
-
}
|
|
1277
|
-
if (minimumViewTime > EMPTY_OFFSET) {
|
|
1278
|
-
dlog(`Angular VirtualizedList viewability debounce ${minimumViewTime}ms (window [${m.first}, ${m.last}])`);
|
|
1279
|
-
this.viewableTimer = setTimeout(() => {
|
|
1280
|
-
this.viewableTimer = null;
|
|
1281
|
-
commitAndFire();
|
|
1282
|
-
}, minimumViewTime);
|
|
1283
|
-
return;
|
|
1284
|
-
}
|
|
1285
|
-
commitAndFire();
|
|
1286
|
-
}
|
|
1287
|
-
// initialScrollIndex: once the first viewport is known, jump to that index a single time.
|
|
1288
|
-
effectInitialScroll() {
|
|
1289
|
-
if (this.initialScrollIndex === undefined || this.appliedInitialScroll)
|
|
1290
|
-
return;
|
|
1291
|
-
if (this.viewportLength <= EMPTY_OFFSET || this.metricsCore.count === FIRST_INDEX)
|
|
1292
|
-
return;
|
|
1293
|
-
this.appliedInitialScroll = true;
|
|
1294
|
-
// The initial jump is instant (RN does not animate initialScrollIndex).
|
|
1295
|
-
this.scrollToPixel(this.offsetForIndexLocal(this.initialScrollIndex, FIRST_INDEX, EMPTY_OFFSET), false);
|
|
1296
|
-
}
|
|
1297
|
-
// maintainVisibleContentPosition JS anchor adjustment: track the key of the item at
|
|
1298
|
-
// minIndexForVisible; when a prepend moves it down, add the inserted extent in the leading SPACER
|
|
1299
|
-
// (the off-window items native MVCP cannot see) to scrollOffset so the anchored item does not jump
|
|
1300
|
-
// (RN getDerivedStateFromProps).
|
|
1301
|
-
effectMaintainVisibleContentPosition() {
|
|
1302
|
-
const m = this.metricsCore;
|
|
1303
|
-
if (this.maintainVisibleContentPosition === undefined || m.count === FIRST_INDEX) {
|
|
1304
|
-
this.firstVisibleKey = null;
|
|
1305
|
-
return;
|
|
1306
|
-
}
|
|
1307
|
-
const minIndexForVisible = this.maintainVisibleContentPosition.minIndexForVisible;
|
|
1308
|
-
const newFirstVisibleKey = m.count > minIndexForVisible ? this.keyFor(minIndexForVisible) : null;
|
|
1309
|
-
const prevKey = this.firstVisibleKey;
|
|
1310
|
-
if (prevKey !== null && newFirstVisibleKey !== null && prevKey !== newFirstVisibleKey) {
|
|
1311
|
-
let anchorIndex = -1;
|
|
1312
|
-
for (let index = minIndexForVisible; index < m.count; index += 1) {
|
|
1313
|
-
if (this.keyFor(index) === prevKey) {
|
|
1314
|
-
anchorIndex = index;
|
|
1315
|
-
break;
|
|
1316
|
-
}
|
|
1317
|
-
}
|
|
1318
|
-
if (anchorIndex > minIndexForVisible) {
|
|
1319
|
-
const spacerEnd = Math.min(anchorIndex, this.committedWindow.first);
|
|
1320
|
-
const insertedExtent = spacerEnd > minIndexForVisible
|
|
1321
|
-
? m.offsets[spacerEnd] - m.offsets[minIndexForVisible]
|
|
1322
|
-
: EMPTY_OFFSET;
|
|
1323
|
-
if (insertedExtent > EMPTY_OFFSET) {
|
|
1324
|
-
const autoThreshold = this.maintainVisibleContentPosition.autoscrollToTopThreshold;
|
|
1325
|
-
const anchoredNearTop = autoThreshold !== undefined && this.scrollOffset <= autoThreshold;
|
|
1326
|
-
if (anchoredNearTop) {
|
|
1327
|
-
dlog(`Angular VirtualizedList MVCP autoscroll-to-top (offset=${this.scrollOffset} <= ${autoThreshold})`);
|
|
1328
|
-
this.scrollToPixel(EMPTY_OFFSET, true);
|
|
1329
|
-
}
|
|
1330
|
-
else {
|
|
1331
|
-
dlog(`Angular VirtualizedList MVCP adjust +${insertedExtent}px ` +
|
|
1332
|
-
`(anchor "${prevKey}" moved ${minIndexForVisible}->${anchorIndex})`);
|
|
1333
|
-
this.scrollToPixel(this.scrollOffset + insertedExtent, false);
|
|
1334
|
-
}
|
|
1335
|
-
}
|
|
1336
|
-
}
|
|
1337
|
-
}
|
|
1338
|
-
this.firstVisibleKey = newFirstVisibleKey;
|
|
1339
|
-
}
|
|
1340
|
-
};
|
|
1341
|
-
return VirtualizedList = _classThis;
|
|
1342
|
-
})();
|
|
1343
|
-
export { VirtualizedList };
|