@symbiote-native/angular 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/angular/callback-host.d.ts +2 -5
- package/build/angular/callback-host.js +11 -36
- package/build/angular/callback-host.js.map +1 -1
- package/build/angular/change-detection-flush.d.ts +1 -0
- package/build/angular/change-detection-flush.js +58 -14
- package/build/angular/change-detection-flush.js.map +1 -1
- package/build/angular/components/flat-list/index.d.ts +4 -2
- package/build/angular/components/flat-list/index.js +28 -78
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/image-shared.d.ts +8 -2
- package/build/angular/components/modal/index.d.ts +1 -0
- package/build/angular/components/modal/index.js +23 -16
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/section-list/index.d.ts +3 -1
- package/build/angular/components/section-list/index.js +10 -2
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/virtualized-list/directives.js +7 -4
- package/build/angular/components/virtualized-list/directives.js.map +1 -1
- package/build/angular/components/virtualized-list/index.d.ts +10 -2
- package/build/angular/components/virtualized-list/index.js +45 -25
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/index.d.ts +5 -1
- package/build/angular/components/virtualized-section-list/index.js +10 -2
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/descriptor-to-angular/index.js +6 -3
- package/build/angular/descriptor-to-angular/index.js.map +1 -1
- package/build/angular/element-props.d.ts +16 -5
- package/build/angular/elements.d.ts +5 -21
- package/build/angular/elements.js +18 -26
- package/build/angular/elements.js.map +1 -1
- package/build/angular/index.d.ts +0 -1
- package/build/angular/index.js +5 -7
- package/build/angular/index.js.map +1 -1
- package/build/angular/primitives/shared.js +5 -1
- package/build/angular/primitives/shared.js.map +1 -1
- package/build/angular/renderer/index.d.ts +11 -0
- package/build/angular/renderer/index.js +97 -12
- package/build/angular/renderer/index.js.map +1 -1
- package/build/angular/runtime-matching.d.ts +0 -1
- package/build/angular/runtime-matching.js +6 -29
- package/build/angular/runtime-matching.js.map +1 -1
- package/package.json +6 -6
- package/src/callback-host.ts +10 -43
- package/src/change-detection-flush.ts +67 -14
- package/src/components/flat-list/index.ts +22 -54
- package/src/components/modal/index.ts +22 -16
- package/src/components/section-list/index.ts +4 -0
- package/src/components/virtualized-list/directives.ts +10 -8
- package/src/components/virtualized-list/index.ts +38 -13
- package/src/components/virtualized-section-list/index.ts +6 -0
- package/src/descriptor-to-angular/index.ts +6 -3
- package/src/element-props.ts +22 -13
- package/src/elements.ts +21 -56
- package/src/index.ts +5 -7
- package/src/primitives/shared.ts +5 -1
- package/src/renderer/index.ts +107 -11
- package/src/runtime-matching.ts +6 -30
- package/build/angular/style-host.d.ts +0 -11
- package/build/angular/style-host.js +0 -86
- package/build/angular/style-host.js.map +0 -1
- package/src/style-host.ts +0 -94
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type OnChanges, type
|
|
1
|
+
import { type OnChanges, type SimpleChanges } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
/**
|
|
4
4
|
* THE SAME NAMES AS A LITERAL, and the duplication is forced rather than chosen.
|
|
@@ -13,13 +13,10 @@ import * as i0 from "@angular/core";
|
|
|
13
13
|
export declare const CALLBACK_ATTRIBUTE_SELECTOR: string;
|
|
14
14
|
/** Exported for the guard alone — the decorator below must spell its own list for ngtsc. */
|
|
15
15
|
export declare const CALLBACK_INPUT_NAMES: readonly string[];
|
|
16
|
-
export declare class SymbioteCallbackHost implements OnChanges
|
|
16
|
+
export declare class SymbioteCallbackHost implements OnChanges {
|
|
17
17
|
private readonly renderer;
|
|
18
18
|
private readonly host;
|
|
19
|
-
private readonly detector;
|
|
20
|
-
constructor();
|
|
21
19
|
ngOnChanges(changes: SimpleChanges): void;
|
|
22
|
-
ngOnDestroy(): void;
|
|
23
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<SymbioteCallbackHost, never>;
|
|
24
21
|
static ɵdir: i0.ɵɵDirectiveDeclaration<SymbioteCallbackHost, "[onAccessibilityAction],[onAccessibilityEscape],[onAccessibilityTap],[onBlur],[onContentSizeChange],[onEndEditing],[onError],[onFocus],[onHoverIn],[onHoverOut],[onKeyPress],[onLayout],[onLoad],[onLoadEnd],[onLoadStart],[onLongPress],[onMagicTap],[onMomentumScrollBegin],[onMomentumScrollEnd],[onMoveShouldSetResponder],[onMoveShouldSetResponderCapture],[onPartialLoad],[onPress],[onPressIn],[onPressMove],[onPressOut],[onProgress],[onRefresh],[onResponderEnd],[onResponderGrant],[onResponderMove],[onResponderReject],[onResponderRelease],[onResponderStart],[onResponderTerminate],[onResponderTerminationRequest],[onScrollBeginDrag],[onScrollEndDrag],[onScrollToTop],[onSelectionChange],[onStartShouldSetResponder],[onStartShouldSetResponderCapture],[onSubmitEditing],[onValueChange]", never, { "onAccessibilityAction": { "alias": "onAccessibilityAction"; "required": false; }; "onAccessibilityEscape": { "alias": "onAccessibilityEscape"; "required": false; }; "onAccessibilityTap": { "alias": "onAccessibilityTap"; "required": false; }; "onBlur": { "alias": "onBlur"; "required": false; }; "onContentSizeChange": { "alias": "onContentSizeChange"; "required": false; }; "onEndEditing": { "alias": "onEndEditing"; "required": false; }; "onError": { "alias": "onError"; "required": false; }; "onFocus": { "alias": "onFocus"; "required": false; }; "onHoverIn": { "alias": "onHoverIn"; "required": false; }; "onHoverOut": { "alias": "onHoverOut"; "required": false; }; "onKeyPress": { "alias": "onKeyPress"; "required": false; }; "onLayout": { "alias": "onLayout"; "required": false; }; "onLoad": { "alias": "onLoad"; "required": false; }; "onLoadEnd": { "alias": "onLoadEnd"; "required": false; }; "onLoadStart": { "alias": "onLoadStart"; "required": false; }; "onLongPress": { "alias": "onLongPress"; "required": false; }; "onMagicTap": { "alias": "onMagicTap"; "required": false; }; "onMomentumScrollBegin": { "alias": "onMomentumScrollBegin"; "required": false; }; "onMomentumScrollEnd": { "alias": "onMomentumScrollEnd"; "required": false; }; "onMoveShouldSetResponder": { "alias": "onMoveShouldSetResponder"; "required": false; }; "onMoveShouldSetResponderCapture": { "alias": "onMoveShouldSetResponderCapture"; "required": false; }; "onPartialLoad": { "alias": "onPartialLoad"; "required": false; }; "onPress": { "alias": "onPress"; "required": false; }; "onPressIn": { "alias": "onPressIn"; "required": false; }; "onPressMove": { "alias": "onPressMove"; "required": false; }; "onPressOut": { "alias": "onPressOut"; "required": false; }; "onProgress": { "alias": "onProgress"; "required": false; }; "onRefresh": { "alias": "onRefresh"; "required": false; }; "onResponderEnd": { "alias": "onResponderEnd"; "required": false; }; "onResponderGrant": { "alias": "onResponderGrant"; "required": false; }; "onResponderMove": { "alias": "onResponderMove"; "required": false; }; "onResponderReject": { "alias": "onResponderReject"; "required": false; }; "onResponderRelease": { "alias": "onResponderRelease"; "required": false; }; "onResponderStart": { "alias": "onResponderStart"; "required": false; }; "onResponderTerminate": { "alias": "onResponderTerminate"; "required": false; }; "onResponderTerminationRequest": { "alias": "onResponderTerminationRequest"; "required": false; }; "onScrollBeginDrag": { "alias": "onScrollBeginDrag"; "required": false; }; "onScrollEndDrag": { "alias": "onScrollEndDrag"; "required": false; }; "onScrollToTop": { "alias": "onScrollToTop"; "required": false; }; "onSelectionChange": { "alias": "onSelectionChange"; "required": false; }; "onStartShouldSetResponder": { "alias": "onStartShouldSetResponder"; "required": false; }; "onStartShouldSetResponderCapture": { "alias": "onStartShouldSetResponderCapture"; "required": false; }; "onSubmitEditing": { "alias": "onSubmitEditing"; "required": false; }; "onValueChange": { "alias": "onValueChange"; "required": false; }; }, {}, never, never, true, never>;
|
|
25
22
|
}
|
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
// The directive that
|
|
1
|
+
// The directive that CLAIMS an `on*` prop binding on a tag, and nothing more.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
3
|
+
// Unclaimed, `[onPress]="fn"` on an element is NG0306 in dev mode (`setDomProperty` refuses `on*`
|
|
4
|
+
// DOM properties, `render3/instructions/shared.ts:296-298`), so something has to own the name. The
|
|
5
|
+
// renderer wraps the value on its way through and marks the view with `markForCheck` when the engine
|
|
6
|
+
// calls it. That view is found from the node when the callback FIRES (`change-detection-flush.ts`),
|
|
7
|
+
// so this directive injects no `ChangeDetectorRef`.
|
|
7
8
|
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
// (`core/engine/cpp/tests/js/angular-directive-cost.itest.ts
|
|
11
|
-
//
|
|
12
|
-
// MATCHING IS THE CHEAPER QUESTION THAN INJECTING, and that had to be measured rather than assumed,
|
|
13
|
-
// because the selector below is dozens of alternatives and Angular tries a component's whole
|
|
14
|
-
// directive list against every element it creates. The ladder's `cb-probe` arm carries this exact
|
|
15
|
-
// string WITHOUT matching anything — the state of every element on the benchmark row — so the two
|
|
16
|
-
// halves are priced against each other in one process, rotated, with a resolution bar:
|
|
17
|
-
//
|
|
18
|
-
// carrying the selector 4.3 5.9 -2.0 5.7 -1.5 ms inside the bar in four of five
|
|
19
|
-
// the ChangeDetectorRef 9.7 23.5 13.6 31.3 23.8 ms
|
|
20
|
-
// the CALLBACK HOST -3.9 -9.3 -25.5 -25.6 -25.3 ms all five negative, three outside
|
|
21
|
-
//
|
|
22
|
-
// WHAT IS NOT VERIFIED, said plainly: the ladder's arm carries ONE element directive beside this one,
|
|
23
|
-
// where a real screen carries two dozen, and the `ng-elements` bench arm could not confirm the change
|
|
24
|
-
// at app scale — the machine it was measured on swung its untouched CONTROL from 229 to 566 ms, so
|
|
25
|
-
// nothing quoted off it would have carried a verdict either way. The controlled A/B is the evidence
|
|
26
|
-
// here; the bench-arm confirmation is owed.
|
|
9
|
+
// Carrying the selector is free: Angular tries it against every element it creates, and the
|
|
10
|
+
// ladder's `cb-probe` arm priced that inside the resolution bar in four runs of five
|
|
11
|
+
// (`core/engine/cpp/tests/js/angular-directive-cost.itest.ts`).
|
|
27
12
|
//
|
|
28
13
|
// IT HOLDS NO INPUTS, which is what keeps the change off the public surface. The `on*` props stay
|
|
29
14
|
// declared on `SymbioteElement` and its subclasses, so every type and every forward is unchanged;
|
|
@@ -33,8 +18,7 @@
|
|
|
33
18
|
//
|
|
34
19
|
// A LEAF, like `change-detection-flush` and `renderer/value-change`: importing `elements.ts` from
|
|
35
20
|
// here would close a cycle, since that file is what puts this directive in `SYMBIOTE_ELEMENTS`.
|
|
36
|
-
import {
|
|
37
|
-
import { registerViewMarker, unregisterViewMarker, } from './change-detection-flush';
|
|
21
|
+
import { Directive, ElementRef, Renderer2, inject, } from '@angular/core';
|
|
38
22
|
import * as i0 from "@angular/core";
|
|
39
23
|
/**
|
|
40
24
|
* Every `on*` input any element directive declares, except the one that fires per FRAME.
|
|
@@ -116,10 +100,6 @@ export class SymbioteCallbackHost {
|
|
|
116
100
|
constructor() {
|
|
117
101
|
this.renderer = inject(Renderer2);
|
|
118
102
|
this.host = inject(ElementRef);
|
|
119
|
-
this.detector = inject(ChangeDetectorRef);
|
|
120
|
-
const node = this.host.nativeElement;
|
|
121
|
-
if (typeof node === 'object' && node !== null)
|
|
122
|
-
registerViewMarker(node, this.detector);
|
|
123
103
|
}
|
|
124
104
|
ngOnChanges(changes) {
|
|
125
105
|
// The renderer wraps the value on its way through, so this forwards it raw — same shape as the
|
|
@@ -127,11 +107,6 @@ export class SymbioteCallbackHost {
|
|
|
127
107
|
for (const name of Object.keys(changes))
|
|
128
108
|
this.renderer.setProperty(this.host.nativeElement, name, changes[name]?.currentValue);
|
|
129
109
|
}
|
|
130
|
-
ngOnDestroy() {
|
|
131
|
-
const node = this.host.nativeElement;
|
|
132
|
-
if (typeof node === 'object' && node !== null)
|
|
133
|
-
unregisterViewMarker(node);
|
|
134
|
-
}
|
|
135
110
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: SymbioteCallbackHost, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
136
111
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: SymbioteCallbackHost, isStandalone: true, selector: "[onAccessibilityAction],[onAccessibilityEscape],[onAccessibilityTap],[onBlur],[onContentSizeChange],[onEndEditing],[onError],[onFocus],[onHoverIn],[onHoverOut],[onKeyPress],[onLayout],[onLoad],[onLoadEnd],[onLoadStart],[onLongPress],[onMagicTap],[onMomentumScrollBegin],[onMomentumScrollEnd],[onMoveShouldSetResponder],[onMoveShouldSetResponderCapture],[onPartialLoad],[onPress],[onPressIn],[onPressMove],[onPressOut],[onProgress],[onRefresh],[onResponderEnd],[onResponderGrant],[onResponderMove],[onResponderReject],[onResponderRelease],[onResponderStart],[onResponderTerminate],[onResponderTerminationRequest],[onScrollBeginDrag],[onScrollEndDrag],[onScrollToTop],[onSelectionChange],[onStartShouldSetResponder],[onStartShouldSetResponderCapture],[onSubmitEditing],[onValueChange]", inputs: { onAccessibilityAction: "onAccessibilityAction", onAccessibilityEscape: "onAccessibilityEscape", onAccessibilityTap: "onAccessibilityTap", onBlur: "onBlur", onContentSizeChange: "onContentSizeChange", onEndEditing: "onEndEditing", onError: "onError", onFocus: "onFocus", onHoverIn: "onHoverIn", onHoverOut: "onHoverOut", onKeyPress: "onKeyPress", onLayout: "onLayout", onLoad: "onLoad", onLoadEnd: "onLoadEnd", onLoadStart: "onLoadStart", onLongPress: "onLongPress", onMagicTap: "onMagicTap", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", onMoveShouldSetResponder: "onMoveShouldSetResponder", onMoveShouldSetResponderCapture: "onMoveShouldSetResponderCapture", onPartialLoad: "onPartialLoad", onPress: "onPress", onPressIn: "onPressIn", onPressMove: "onPressMove", onPressOut: "onPressOut", onProgress: "onProgress", onRefresh: "onRefresh", onResponderEnd: "onResponderEnd", onResponderGrant: "onResponderGrant", onResponderMove: "onResponderMove", onResponderReject: "onResponderReject", onResponderRelease: "onResponderRelease", onResponderStart: "onResponderStart", onResponderTerminate: "onResponderTerminate", onResponderTerminationRequest: "onResponderTerminationRequest", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onScrollToTop: "onScrollToTop", onSelectionChange: "onSelectionChange", onStartShouldSetResponder: "onStartShouldSetResponder", onStartShouldSetResponderCapture: "onStartShouldSetResponderCapture", onSubmitEditing: "onSubmitEditing", onValueChange: "onValueChange" }, usesOnChanges: true, ngImport: i0 }); }
|
|
137
112
|
}
|
|
@@ -207,5 +182,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
207
182
|
],
|
|
208
183
|
standalone: true,
|
|
209
184
|
}]
|
|
210
|
-
}]
|
|
185
|
+
}] });
|
|
211
186
|
//# sourceMappingURL=callback-host.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-host.js","sourceRoot":"","sources":["../../src/callback-host.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"callback-host.js","sourceRoot":"","sources":["../../src/callback-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,16 +32,50 @@
|
|
|
32
32
|
// notification, so it cannot open that window at all. It is also the narrower answer — the only
|
|
33
33
|
// view that has to be re-checked is the one holding the binding.
|
|
34
34
|
//
|
|
35
|
-
//
|
|
36
|
-
// `
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
35
|
+
// THE VIEW IS FOUND FROM THE NODE, at the moment an event needs it, not injected per element. Ivy
|
|
36
|
+
// patches `__ngContext__` onto every view's root elements and every directive host, so the nearest
|
|
37
|
+
// patched ancestor names the LView that declares the element - the one holding its `[value]`. A
|
|
38
|
+
// `ViewRef` over that LView is what `inject(ChangeDetectorRef)` would have handed out, built only
|
|
39
|
+
// for the element that fired, which is what let the read-back tags drop their directive instance
|
|
40
|
+
// (`element-directive-free.test.ts`). Projected content resolves to the view it is PROJECTED into,
|
|
41
|
+
// Angular's own discovery limit; the listener's `markForCheck` still reaches the declaring view.
|
|
40
42
|
//
|
|
41
43
|
// When a fourth behavior starts reading an app value back, it needs a name in the renderer's
|
|
42
44
|
// `READ_BACK_*` sets — the census is `queueMicrotask` / `afterCommit` in
|
|
43
45
|
// `core/components/src/behaviors`.
|
|
46
|
+
import { ɵViewRef as ViewRef, ɵgetLContext as getLContext, } from '@angular/core';
|
|
47
|
+
import { isSymbioteNode, parentOf, reportUncaughtError, } from '@symbiote-native/engine';
|
|
44
48
|
const viewFlushes = new WeakMap();
|
|
49
|
+
// Nodes whose view is found lazily when they flush. Anything else keeps the no-op an unregistered
|
|
50
|
+
// node always had - `flushViewFor` also runs after every wrapped `on*` prop, and a press must not
|
|
51
|
+
// start paying a synchronous re-check it never needed.
|
|
52
|
+
const readBackNodes = new WeakSet();
|
|
53
|
+
export function markReadBackNode(node) {
|
|
54
|
+
readBackNodes.add(node);
|
|
55
|
+
}
|
|
56
|
+
// Ivy's monkey-patch key (`render3/interfaces/context.ts`, `MONKEY_PATCH_KEY_NAME`).
|
|
57
|
+
const NG_CONTEXT = '__ngContext__';
|
|
58
|
+
/** The LView-backed ref for the view that declares `node`, or undefined outside any view. */
|
|
59
|
+
function viewRefOf(node) {
|
|
60
|
+
let patched = node;
|
|
61
|
+
while (patched !== undefined && !(NG_CONTEXT in patched))
|
|
62
|
+
patched = isSymbioteNode(patched) ? parentOf(patched) : undefined;
|
|
63
|
+
if (patched === undefined)
|
|
64
|
+
return undefined;
|
|
65
|
+
const lView = getLContext(patched)?.lView;
|
|
66
|
+
return lView === undefined || lView === null ? undefined : new ViewRef(lView);
|
|
67
|
+
}
|
|
68
|
+
// REPORTED, NOT RETHROWN: this is the one change detection outside `ApplicationRef.tick()`'s error
|
|
69
|
+
// boundary, called from inside a native event dispatch where a throw becomes `RCTFatal`. Same
|
|
70
|
+
// channel `SymbioteErrorHandler` reports through.
|
|
71
|
+
function detectChangesReported(view) {
|
|
72
|
+
try {
|
|
73
|
+
view.detectChanges();
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
reportUncaughtError(error, { origin: 'angular flush' });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
45
79
|
const ON_PREFIX = /^on[A-Z]/;
|
|
46
80
|
// The one `onX` that fires per FRAME rather than per gesture — with sticky headers RN pins
|
|
47
81
|
// `scrollEventThrottle` to 1, i.e. 60 times a second. `markForCheck` walks to the ROOT, so wrapping
|
|
@@ -123,14 +157,12 @@ export function createCallbackWrapper(node) {
|
|
|
123
157
|
* element on JavaScriptCore (`core/engine/cpp/tests/js/angular-directive-cost.itest.ts`), so a
|
|
124
158
|
* thousand-row screen paid for ten thousand `ViewRef`s to serve none.
|
|
125
159
|
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
160
|
+
* Only a composed component's host directive registers here (`primitives/shared.ts`); a TAG's
|
|
161
|
+
* view is found from the node when its callback fires (`markViewFor`), so no element pays an
|
|
162
|
+
* injection for a callback it may never carry.
|
|
129
163
|
*
|
|
130
|
-
* Separate from `viewFlushes` deliberately
|
|
131
|
-
*
|
|
132
|
-
* ancestor, that one re-checks ONE view synchronously. Collapsing them into a single entry would make
|
|
133
|
-
* whichever directive registered last decide which of the two an element gets.
|
|
164
|
+
* Separate from `viewFlushes` deliberately: this one SCHEDULES and reaches every ancestor, that one
|
|
165
|
+
* re-checks ONE view synchronously.
|
|
134
166
|
*/
|
|
135
167
|
const viewMarkers = new WeakMap();
|
|
136
168
|
export function registerViewMarker(node, marker) {
|
|
@@ -142,7 +174,10 @@ export function unregisterViewMarker(node) {
|
|
|
142
174
|
export function markViewFor(node) {
|
|
143
175
|
if (typeof node !== 'object' || node === null)
|
|
144
176
|
return;
|
|
145
|
-
|
|
177
|
+
// A composed component's host directive registers its own ref; a TAG registers nothing and has its
|
|
178
|
+
// view found here, only when a callback actually fires (see the header).
|
|
179
|
+
const marker = viewMarkers.get(node) ?? viewRefOf(node);
|
|
180
|
+
marker?.markForCheck();
|
|
146
181
|
}
|
|
147
182
|
export function registerViewFlush(node, flush) {
|
|
148
183
|
viewFlushes.set(node, flush);
|
|
@@ -153,6 +188,15 @@ export function unregisterViewFlush(node) {
|
|
|
153
188
|
export function flushViewFor(node) {
|
|
154
189
|
if (typeof node !== 'object' || node === null)
|
|
155
190
|
return;
|
|
156
|
-
viewFlushes.get(node)
|
|
191
|
+
const registered = viewFlushes.get(node);
|
|
192
|
+
if (registered !== undefined) {
|
|
193
|
+
registered();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (!readBackNodes.has(node))
|
|
197
|
+
return;
|
|
198
|
+
const view = viewRefOf(node);
|
|
199
|
+
if (view !== undefined)
|
|
200
|
+
detectChangesReported(view);
|
|
157
201
|
}
|
|
158
202
|
//# sourceMappingURL=change-detection-flush.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-detection-flush.js","sourceRoot":"","sources":["../../src/change-detection-flush.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,kGAAkG;AAClG,kCAAkC;AAClC,EAAE;AACF,sEAAsE;AACtE,kFAAkF;AAClF,6FAA6F;AAC7F,iGAAiG;AACjG,oGAAoG;AACpG,6DAA6D;AAC7D,EAAE;AACF,+FAA+F;AAC/F,iFAAiF;AACjF,sFAAsF;AACtF,EAAE;AACF,mGAAmG;AACnG,2FAA2F;AAC3F,qGAAqG;AACrG,0DAA0D;AAC1D,EAAE;AACF,gGAAgG;AAChG,4FAA4F;AAC5F,kGAAkG;AAClG,mGAAmG;AACnG,oGAAoG;AACpG,iGAAiG;AACjG,6FAA6F;AAC7F,oGAAoG;AACpG,oGAAoG;AACpG,kFAAkF;AAClF,yFAAyF;AACzF,gGAAgG;AAChG,iEAAiE;AACjE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"change-detection-flush.js","sourceRoot":"","sources":["../../src/change-detection-flush.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,kGAAkG;AAClG,kCAAkC;AAClC,EAAE;AACF,sEAAsE;AACtE,kFAAkF;AAClF,6FAA6F;AAC7F,iGAAiG;AACjG,oGAAoG;AACpG,6DAA6D;AAC7D,EAAE;AACF,+FAA+F;AAC/F,iFAAiF;AACjF,sFAAsF;AACtF,EAAE;AACF,mGAAmG;AACnG,2FAA2F;AAC3F,qGAAqG;AACrG,0DAA0D;AAC1D,EAAE;AACF,gGAAgG;AAChG,4FAA4F;AAC5F,kGAAkG;AAClG,mGAAmG;AACnG,oGAAoG;AACpG,iGAAiG;AACjG,6FAA6F;AAC7F,oGAAoG;AACpG,oGAAoG;AACpG,kFAAkF;AAClF,yFAAyF;AACzF,gGAAgG;AAChG,iEAAiE;AACjE,EAAE;AACF,kGAAkG;AAClG,mGAAmG;AACnG,gGAAgG;AAChG,kGAAkG;AAClG,iGAAiG;AACjG,mGAAmG;AACnG,iGAAiG;AACjG,EAAE;AACF,6FAA6F;AAC7F,yEAAyE;AACzE,mCAAmC;AACnC,OAAO,EACL,QAAQ,IAAI,OAAO,EACnB,YAAY,IAAI,WAAW,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,GAAG,IAAI,OAAO,EAAsB,CAAC;AAEtD,kGAAkG;AAClG,kGAAkG;AAClG,uDAAuD;AACvD,MAAM,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;AAE5C,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,GAAG,eAAe,CAAC;AAEnC,6FAA6F;AAC7F,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,OAAO,GAAuB,IAAI,CAAC;IACvC,OAAO,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC;QACtD,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAC1C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,mGAAmG;AACnG,8FAA8F;AAC9F,kDAAkD;AAClD,SAAS,qBAAqB,CAAC,IAAsB;IACnD,IAAI,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B,2FAA2F;AAC3F,oGAAoG;AACpG,gGAAgG;AAChG,mGAAmG;AACnG,oGAAoG;AACpG,mGAAmG;AACnG,sCAAsC;AACtC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAQtC;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,KAAc;IAC7D,OAAO,CACL,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,OAAO,KAAK,KAAK,UAAU;QAC3B,GAAG,KAAK,kBAAkB,CAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,kGAAkG;IAClG,+FAA+F;IAC/F,8DAA8D;IAC9D,IAAI,QAAsE,CAAC;IAC3E,OAAO,CAAC,GAAW,EAAE,KAAc,EAAW,EAAE;QAC9C,+FAA+F;QAC/F,gGAAgG;QAChG,+DAA+D;QAC/D,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,UAAU;YACjE,OAAO,KAAK,CAAC;QACf,QAAQ,KAAK,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,gGAAgG;QAChG,iGAAiG;QACjG,mEAAmE;QACnE,MAAM,OAAO,GAAG,CAAC,GAAG,IAAe,EAAW,EAAE;YAC9C,MAAM,MAAM,GAAY,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9D,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QACF,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,GAAG,IAAI,OAAO,EAAuB,CAAC;AAEvD,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAAmB;IAClE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IACtD,mGAAmG;IACnG,yEAAyE;IACzE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,YAAY,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAiB;IAC/D,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IACtD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO;IACrC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,SAAS;QAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -65,8 +65,11 @@ export declare class FlatList<ItemT = unknown> implements IFlatListInputs<ItemT>
|
|
|
65
65
|
scrollEventThrottle?: number;
|
|
66
66
|
keyboardShouldPersistTaps?: boolean | 'always' | 'never' | 'handled';
|
|
67
67
|
keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';
|
|
68
|
+
removeClippedSubviews?: boolean;
|
|
69
|
+
nestedScrollEnabled?: boolean;
|
|
68
70
|
style?: IStyleProp<IViewStyle>;
|
|
69
71
|
contentContainerStyle?: IStyleProp<IViewStyle>;
|
|
72
|
+
get resolvedRemoveClippedSubviews(): boolean;
|
|
70
73
|
itemDir?: VListItemDirective<ItemT>;
|
|
71
74
|
headerDir?: VListHeaderDirective;
|
|
72
75
|
footerDir?: VListFooterDirective;
|
|
@@ -95,7 +98,6 @@ export declare class FlatList<ItemT = unknown> implements IFlatListInputs<ItemT>
|
|
|
95
98
|
context: IVListItemContext<ItemT>;
|
|
96
99
|
}[];
|
|
97
100
|
rowSeparatorContext(highlighted: unknown, leadingRow: unknown, trailingRow: unknown): IVListSeparatorContext<ItemT>;
|
|
98
|
-
itemSeparatorContext(highlighted: unknown, leadingItem: unknown, trailingItem: unknown): IVListSeparatorContext<ItemT>;
|
|
99
101
|
scrollToOffset(params: {
|
|
100
102
|
offset: number;
|
|
101
103
|
animated?: boolean;
|
|
@@ -121,5 +123,5 @@ export declare class FlatList<ItemT = unknown> implements IFlatListInputs<ItemT>
|
|
|
121
123
|
getScrollNode(): ISymbioteNode | null;
|
|
122
124
|
recordInteraction(): void;
|
|
123
125
|
static ɵfac: i0.ɵɵFactoryDeclaration<FlatList<any>, never>;
|
|
124
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FlatList<any>, "FlatList", never, { "data": { "alias": "data"; "required": true; }; "testID": { "alias": "testID"; "required": false; }; "numColumns": { "alias": "numColumns"; "required": false; }; "columnWrapperStyle": { "alias": "columnWrapperStyle"; "required": false; }; "keyExtractor": { "alias": "keyExtractor"; "required": false; }; "getItemLayout": { "alias": "getItemLayout"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "inverted": { "alias": "inverted"; "required": false; }; "extraData": { "alias": "extraData"; "required": false; }; "onEndReachedThreshold": { "alias": "onEndReachedThreshold"; "required": false; }; "onStartReachedThreshold": { "alias": "onStartReachedThreshold"; "required": false; }; "refreshing": { "alias": "refreshing"; "required": false; }; "progressViewOffset": { "alias": "progressViewOffset"; "required": false; }; "viewabilityConfig": { "alias": "viewabilityConfig"; "required": false; }; "viewabilityConfigCallbackPairs": { "alias": "viewabilityConfigCallbackPairs"; "required": false; }; "initialNumToRender": { "alias": "initialNumToRender"; "required": false; }; "initialScrollIndex": { "alias": "initialScrollIndex"; "required": false; }; "maxToRenderPerBatch": { "alias": "maxToRenderPerBatch"; "required": false; }; "updateCellsBatchingPeriod": { "alias": "updateCellsBatchingPeriod"; "required": false; }; "windowSize": { "alias": "windowSize"; "required": false; }; "stickyHeaderIndices": { "alias": "stickyHeaderIndices"; "required": false; }; "maintainVisibleContentPosition": { "alias": "maintainVisibleContentPosition"; "required": false; }; "onScroll": { "alias": "onScroll"; "required": false; }; "onScrollBeginDrag": { "alias": "onScrollBeginDrag"; "required": false; }; "onScrollEndDrag": { "alias": "onScrollEndDrag"; "required": false; }; "onMomentumScrollBegin": { "alias": "onMomentumScrollBegin"; "required": false; }; "onMomentumScrollEnd": { "alias": "onMomentumScrollEnd"; "required": false; }; "scrollEventThrottle": { "alias": "scrollEventThrottle"; "required": false; }; "keyboardShouldPersistTaps": { "alias": "keyboardShouldPersistTaps"; "required": false; }; "keyboardDismissMode": { "alias": "keyboardDismissMode"; "required": false; }; "style": { "alias": "style"; "required": false; }; "contentContainerStyle": { "alias": "contentContainerStyle"; "required": false; }; }, { "endReached": "endReached"; "startReached": "startReached"; "refresh": "refresh"; "viewableItemsChanged": "viewableItemsChanged"; "scrollToIndexFailed": "scrollToIndexFailed"; }, ["itemDir", "headerDir", "footerDir", "emptyDir", "separatorDir"], never, true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
|
|
126
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FlatList<any>, "FlatList", never, { "data": { "alias": "data"; "required": true; }; "testID": { "alias": "testID"; "required": false; }; "numColumns": { "alias": "numColumns"; "required": false; }; "columnWrapperStyle": { "alias": "columnWrapperStyle"; "required": false; }; "keyExtractor": { "alias": "keyExtractor"; "required": false; }; "getItemLayout": { "alias": "getItemLayout"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "inverted": { "alias": "inverted"; "required": false; }; "extraData": { "alias": "extraData"; "required": false; }; "onEndReachedThreshold": { "alias": "onEndReachedThreshold"; "required": false; }; "onStartReachedThreshold": { "alias": "onStartReachedThreshold"; "required": false; }; "refreshing": { "alias": "refreshing"; "required": false; }; "progressViewOffset": { "alias": "progressViewOffset"; "required": false; }; "viewabilityConfig": { "alias": "viewabilityConfig"; "required": false; }; "viewabilityConfigCallbackPairs": { "alias": "viewabilityConfigCallbackPairs"; "required": false; }; "initialNumToRender": { "alias": "initialNumToRender"; "required": false; }; "initialScrollIndex": { "alias": "initialScrollIndex"; "required": false; }; "maxToRenderPerBatch": { "alias": "maxToRenderPerBatch"; "required": false; }; "updateCellsBatchingPeriod": { "alias": "updateCellsBatchingPeriod"; "required": false; }; "windowSize": { "alias": "windowSize"; "required": false; }; "stickyHeaderIndices": { "alias": "stickyHeaderIndices"; "required": false; }; "maintainVisibleContentPosition": { "alias": "maintainVisibleContentPosition"; "required": false; }; "onScroll": { "alias": "onScroll"; "required": false; }; "onScrollBeginDrag": { "alias": "onScrollBeginDrag"; "required": false; }; "onScrollEndDrag": { "alias": "onScrollEndDrag"; "required": false; }; "onMomentumScrollBegin": { "alias": "onMomentumScrollBegin"; "required": false; }; "onMomentumScrollEnd": { "alias": "onMomentumScrollEnd"; "required": false; }; "scrollEventThrottle": { "alias": "scrollEventThrottle"; "required": false; }; "keyboardShouldPersistTaps": { "alias": "keyboardShouldPersistTaps"; "required": false; }; "keyboardDismissMode": { "alias": "keyboardDismissMode"; "required": false; }; "removeClippedSubviews": { "alias": "removeClippedSubviews"; "required": false; }; "nestedScrollEnabled": { "alias": "nestedScrollEnabled"; "required": false; }; "style": { "alias": "style"; "required": false; }; "contentContainerStyle": { "alias": "contentContainerStyle"; "required": false; }; }, { "endReached": "endReached"; "startReached": "startReached"; "refresh": "refresh"; "viewableItemsChanged": "viewableItemsChanged"; "scrollToIndexFailed": "scrollToIndexFailed"; }, ["itemDir", "headerDir", "footerDir", "emptyDir", "separatorDir"], never, true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
|
|
125
127
|
}
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
// flat-list.test.ts). Fixed for both column modes:
|
|
14
14
|
// * Single column (numColumns <= 1): FlatList captures the app's `<ng-template vListItem>` (and
|
|
15
15
|
// vListHeader/vListFooter/vListEmpty/vListSeparator) with its OWN @ContentChild — a single,
|
|
16
|
-
// direct projection hop, which always resolves
|
|
17
|
-
//
|
|
18
|
-
//
|
|
16
|
+
// direct projection hop, which always resolves. The per-cell item and separator templates go
|
|
17
|
+
// straight in through VirtualizedList's `[itemTemplate]`/`[itemSeparatorTemplate]`, so a cell
|
|
18
|
+
// is ONE outlet deep (a re-stamp doubled every cell's embedded views); the once-per-list
|
|
19
|
+
// header/footer/empty slots are still re-stamped.
|
|
19
20
|
// * Multi column (numColumns > 1): same re-stamp, but the app's vListItem is typed for ItemT
|
|
20
21
|
// while the virtualized stream is rows (IRow<ItemT>), so a plain passthrough couldn't work
|
|
21
22
|
// regardless. The row vListItem lays out the N columns side by side (each cell stamps the
|
|
@@ -31,8 +32,8 @@
|
|
|
31
32
|
// in Angular, so they're absent from IFlatListProps per the per-adapter children/render split;
|
|
32
33
|
// everything else mirrors IVirtualizedListProps.
|
|
33
34
|
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild, inject, } from '@angular/core';
|
|
34
|
-
import { SINGLE_COLUMN, chunkIntoRows, expandRowViewability, firstItemOfRow, lastItemOfRow, rowKeyExtractor, } from '@symbiote-native/components';
|
|
35
|
-
import { dlog, flattenStyle, resolveClassName, } from '@symbiote-native/engine';
|
|
35
|
+
import { SINGLE_COLUMN, chunkIntoRows, expandRowViewability, firstItemOfRow, lastItemOfRow, removeClippedSubviewsOrDefault, rowKeyExtractor, } from '@symbiote-native/components';
|
|
36
|
+
import { Platform, dlog, flattenStyle, resolveClassName, } from '@symbiote-native/engine';
|
|
36
37
|
import { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
|
|
37
38
|
import { VListOutletDirective } from '../virtualized-list/directives';
|
|
38
39
|
import { stableAnchorStyle, SymbioteStyleInputDirective, ViewHost, } from '../../primitives';
|
|
@@ -58,14 +59,6 @@ const NOOP_SEPARATORS = {
|
|
|
58
59
|
unhighlight: () => undefined,
|
|
59
60
|
updateProps: () => undefined,
|
|
60
61
|
};
|
|
61
|
-
// Angular cannot preserve VListSeparatorDirective<ItemT>'s type parameter across this re-stamp
|
|
62
|
-
// reuse (the directive is matched structurally in FlatList's own template with no explicit type
|
|
63
|
-
// argument to pin ItemT to, so `let-leadingItem`/`let-trailingItem` arrive typed `unknown`) — even
|
|
64
|
-
// though VirtualizedList's own buildSeparatorContext always supplies a real ItemT value. The
|
|
65
|
-
// narrowest possible I/O-boundary cast for that gap; not a general-purpose unknown-to-T narrowing.
|
|
66
|
-
function asItem(value) {
|
|
67
|
-
return value;
|
|
68
|
-
}
|
|
69
62
|
export { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
|
|
70
63
|
export class FlatList {
|
|
71
64
|
constructor() {
|
|
@@ -104,6 +97,10 @@ export class FlatList {
|
|
|
104
97
|
this.viewableItemsChanged.emit(expandRowViewability(info, this.keyExtractor));
|
|
105
98
|
};
|
|
106
99
|
}
|
|
100
|
+
// FlatList.js always sends it, defaulted per platform.
|
|
101
|
+
get resolvedRemoveClippedSubviews() {
|
|
102
|
+
return removeClippedSubviewsOrDefault(this.removeClippedSubviews, Platform.OS);
|
|
103
|
+
}
|
|
107
104
|
get columns() {
|
|
108
105
|
return this.numColumns ?? SINGLE_COLUMN;
|
|
109
106
|
}
|
|
@@ -181,17 +178,6 @@ export class FlatList {
|
|
|
181
178
|
: undefined,
|
|
182
179
|
};
|
|
183
180
|
}
|
|
184
|
-
// Single-column separator context: leadingItem/trailingItem are already real items (no row
|
|
185
|
-
// wrapper to narrow through — see the asItem boundary comment above).
|
|
186
|
-
itemSeparatorContext(highlighted, leadingItem, trailingItem) {
|
|
187
|
-
const isHighlighted = highlighted === true;
|
|
188
|
-
return {
|
|
189
|
-
$implicit: isHighlighted,
|
|
190
|
-
highlighted: isHighlighted,
|
|
191
|
-
leadingItem: asItem(leadingItem),
|
|
192
|
-
trailingItem: asItem(trailingItem),
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
181
|
// ---- imperative handle (RN FlatList surface) — delegates to the inner VirtualizedList ----
|
|
196
182
|
scrollToOffset(params) {
|
|
197
183
|
this.listRef?.scrollToOffset(params);
|
|
@@ -224,7 +210,7 @@ export class FlatList {
|
|
|
224
210
|
this.listRef?.recordInteraction();
|
|
225
211
|
}
|
|
226
212
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FlatList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
227
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: FlatList, isStandalone: true, selector: "FlatList", inputs: { data: "data", testID: "testID", numColumns: "numColumns", columnWrapperStyle: "columnWrapperStyle", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", horizontal: "horizontal", inverted: "inverted", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", viewabilityConfig: "viewabilityConfig", viewabilityConfigCallbackPairs: "viewabilityConfigCallbackPairs", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", stickyHeaderIndices: "stickyHeaderIndices", maintainVisibleContentPosition: "maintainVisibleContentPosition", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", scrollEventThrottle: "scrollEventThrottle", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", keyboardDismissMode: "keyboardDismissMode", style: "style", contentContainerStyle: "contentContainerStyle" }, outputs: { endReached: "endReached", startReached: "startReached", refresh: "refresh", viewableItemsChanged: "viewableItemsChanged", scrollToIndexFailed: "scrollToIndexFailed" }, queries: [{ propertyName: "itemDir", first: true, predicate: VListItemDirective, descendants: true }, { propertyName: "headerDir", first: true, predicate: VListHeaderDirective, descendants: true }, { propertyName: "footerDir", first: true, predicate: VListFooterDirective, descendants: true }, { propertyName: "emptyDir", first: true, predicate: VListEmptyDirective, descendants: true }, { propertyName: "separatorDir", first: true, predicate: VListSeparatorDirective, descendants: true }], viewQueries: [{ propertyName: "listRef", first: true, predicate: VirtualizedList, descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `
|
|
213
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: FlatList, isStandalone: true, selector: "FlatList", inputs: { data: "data", testID: "testID", numColumns: "numColumns", columnWrapperStyle: "columnWrapperStyle", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", horizontal: "horizontal", inverted: "inverted", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", viewabilityConfig: "viewabilityConfig", viewabilityConfigCallbackPairs: "viewabilityConfigCallbackPairs", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", stickyHeaderIndices: "stickyHeaderIndices", maintainVisibleContentPosition: "maintainVisibleContentPosition", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", scrollEventThrottle: "scrollEventThrottle", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", keyboardDismissMode: "keyboardDismissMode", removeClippedSubviews: "removeClippedSubviews", nestedScrollEnabled: "nestedScrollEnabled", style: "style", contentContainerStyle: "contentContainerStyle" }, outputs: { endReached: "endReached", startReached: "startReached", refresh: "refresh", viewableItemsChanged: "viewableItemsChanged", scrollToIndexFailed: "scrollToIndexFailed" }, queries: [{ propertyName: "itemDir", first: true, predicate: VListItemDirective, descendants: true }, { propertyName: "headerDir", first: true, predicate: VListHeaderDirective, descendants: true }, { propertyName: "footerDir", first: true, predicate: VListFooterDirective, descendants: true }, { propertyName: "emptyDir", first: true, predicate: VListEmptyDirective, descendants: true }, { propertyName: "separatorDir", first: true, predicate: VListSeparatorDirective, descendants: true }], viewQueries: [{ propertyName: "listRef", first: true, predicate: VirtualizedList, descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `
|
|
228
214
|
@if (isMultiColumn) {
|
|
229
215
|
<VirtualizedList
|
|
230
216
|
[data]="rows"
|
|
@@ -262,6 +248,8 @@ export class FlatList {
|
|
|
262
248
|
[scrollEventThrottle]="scrollEventThrottle"
|
|
263
249
|
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
264
250
|
[keyboardDismissMode]="keyboardDismissMode"
|
|
251
|
+
[removeClippedSubviews]="resolvedRemoveClippedSubviews"
|
|
252
|
+
[nestedScrollEnabled]="nestedScrollEnabled"
|
|
265
253
|
[testID]="testID"
|
|
266
254
|
[style]="resolvedStyle"
|
|
267
255
|
[contentContainerStyle]="contentContainerStyle"
|
|
@@ -346,21 +334,14 @@ export class FlatList {
|
|
|
346
334
|
[scrollEventThrottle]="scrollEventThrottle"
|
|
347
335
|
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
348
336
|
[keyboardDismissMode]="keyboardDismissMode"
|
|
337
|
+
[removeClippedSubviews]="resolvedRemoveClippedSubviews"
|
|
338
|
+
[nestedScrollEnabled]="nestedScrollEnabled"
|
|
349
339
|
[testID]="testID"
|
|
350
340
|
[style]="resolvedStyle"
|
|
351
341
|
[contentContainerStyle]="contentContainerStyle"
|
|
342
|
+
[itemTemplate]="itemDir?.templateRef"
|
|
343
|
+
[itemSeparatorTemplate]="separatorDir?.templateRef"
|
|
352
344
|
>
|
|
353
|
-
<ng-template
|
|
354
|
-
vListItem
|
|
355
|
-
let-item
|
|
356
|
-
let-index="index"
|
|
357
|
-
let-separators="separators"
|
|
358
|
-
>
|
|
359
|
-
<ng-container
|
|
360
|
-
[vListOutlet]="itemDir?.templateRef"
|
|
361
|
-
[vListOutletContext]="{ $implicit: item, index, separators }"
|
|
362
|
-
></ng-container>
|
|
363
|
-
</ng-template>
|
|
364
345
|
@if (headerDir !== undefined) {
|
|
365
346
|
<ng-template vListHeader>
|
|
366
347
|
<ng-container [vListOutlet]="headerDir.templateRef"></ng-container>
|
|
@@ -376,24 +357,9 @@ export class FlatList {
|
|
|
376
357
|
<ng-container [vListOutlet]="emptyDir.templateRef"></ng-container>
|
|
377
358
|
</ng-template>
|
|
378
359
|
}
|
|
379
|
-
@if (separatorDir !== undefined) {
|
|
380
|
-
<ng-template
|
|
381
|
-
vListSeparator
|
|
382
|
-
let-highlighted="highlighted"
|
|
383
|
-
let-leadingItem="leadingItem"
|
|
384
|
-
let-trailingItem="trailingItem"
|
|
385
|
-
>
|
|
386
|
-
<ng-container
|
|
387
|
-
[vListOutlet]="separatorDir.templateRef"
|
|
388
|
-
[vListOutletContext]="
|
|
389
|
-
itemSeparatorContext(highlighted, leadingItem, trailingItem)
|
|
390
|
-
"
|
|
391
|
-
></ng-container>
|
|
392
|
-
</ng-template>
|
|
393
|
-
}
|
|
394
360
|
</VirtualizedList>
|
|
395
361
|
}
|
|
396
|
-
`, isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList", inputs: ["data", "getItem", "getItemCount", "keyExtractor", "getItemLayout", "horizontal", "inverted", "extraData", "onEndReachedThreshold", "onStartReachedThreshold", "refreshing", "progressViewOffset", "refreshRequested", "viewabilityConfig", "viewabilityConfigCallbackPairs", "initialNumToRender", "initialScrollIndex", "maxToRenderPerBatch", "updateCellsBatchingPeriod", "windowSize", "stickyHeaderIndices", "maintainVisibleContentPosition", "onScroll", "onScrollBeginDrag", "onScrollEndDrag", "onMomentumScrollBegin", "onMomentumScrollEnd", "scrollEventThrottle", "keyboardShouldPersistTaps", "keyboardDismissMode", "style", "contentContainerStyle", "testID", "nativeID", "accessible", "accessibilityLabel", "accessibilityHint", "accessibilityRole", "accessibilityState", "accessibilityValue", "accessibilityActions", "accessibilityLabelledBy", "importantForAccessibility", "accessibilityLiveRegion", "screenReaderFocusable", "accessibilityViewIsModal", "accessibilityElementsHidden", "accessibilityIgnoresInvertColors", "accessibilityLanguage", "accessibilityRespondsToUserInteraction", "accessibilityShowsLargeContentViewer", "accessibilityLargeContentTitle", "role", "ariaLabel", "ariaLabelledBy", "ariaLive", "ariaHidden", "ariaBusy", "ariaChecked", "ariaDisabled", "ariaExpanded", "ariaSelected", "ariaModal", "ariaValueMax", "ariaValueMin", "ariaValueNow", "ariaValueText"], outputs: ["endReached", "startReached", "refresh", "viewableItemsChanged", "scrollToIndexFailed", "accessibilityAction", "accessibilityTap", "magicTap", "accessibilityEscape"] }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }, { kind: "component", type: ViewHost, selector: "view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
362
|
+
`, isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList", inputs: ["data", "getItem", "getItemCount", "keyExtractor", "getItemLayout", "horizontal", "inverted", "extraData", "onEndReachedThreshold", "onStartReachedThreshold", "refreshing", "progressViewOffset", "refreshRequested", "viewabilityConfig", "viewabilityConfigCallbackPairs", "initialNumToRender", "initialScrollIndex", "maxToRenderPerBatch", "updateCellsBatchingPeriod", "windowSize", "stickyHeaderIndices", "maintainVisibleContentPosition", "onScroll", "onScrollBeginDrag", "onScrollEndDrag", "onMomentumScrollBegin", "onMomentumScrollEnd", "scrollEventThrottle", "keyboardShouldPersistTaps", "keyboardDismissMode", "removeClippedSubviews", "nestedScrollEnabled", "style", "contentContainerStyle", "testID", "nativeID", "accessible", "accessibilityLabel", "accessibilityHint", "accessibilityRole", "accessibilityState", "accessibilityValue", "accessibilityActions", "accessibilityLabelledBy", "importantForAccessibility", "accessibilityLiveRegion", "screenReaderFocusable", "accessibilityViewIsModal", "accessibilityElementsHidden", "accessibilityIgnoresInvertColors", "accessibilityLanguage", "accessibilityRespondsToUserInteraction", "accessibilityShowsLargeContentViewer", "accessibilityLargeContentTitle", "role", "ariaLabel", "ariaLabelledBy", "ariaLive", "ariaHidden", "ariaBusy", "ariaChecked", "ariaDisabled", "ariaExpanded", "ariaSelected", "ariaModal", "ariaValueMax", "ariaValueMin", "ariaValueNow", "ariaValueText", "itemTemplate", "itemSeparatorTemplate"], outputs: ["endReached", "startReached", "refresh", "viewableItemsChanged", "scrollToIndexFailed", "accessibilityAction", "accessibilityTap", "magicTap", "accessibilityEscape"] }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }, { kind: "component", type: ViewHost, selector: "view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
397
363
|
}
|
|
398
364
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FlatList, decorators: [{
|
|
399
365
|
type: Component,
|
|
@@ -453,6 +419,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
453
419
|
[scrollEventThrottle]="scrollEventThrottle"
|
|
454
420
|
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
455
421
|
[keyboardDismissMode]="keyboardDismissMode"
|
|
422
|
+
[removeClippedSubviews]="resolvedRemoveClippedSubviews"
|
|
423
|
+
[nestedScrollEnabled]="nestedScrollEnabled"
|
|
456
424
|
[testID]="testID"
|
|
457
425
|
[style]="resolvedStyle"
|
|
458
426
|
[contentContainerStyle]="contentContainerStyle"
|
|
@@ -537,21 +505,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
537
505
|
[scrollEventThrottle]="scrollEventThrottle"
|
|
538
506
|
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
539
507
|
[keyboardDismissMode]="keyboardDismissMode"
|
|
508
|
+
[removeClippedSubviews]="resolvedRemoveClippedSubviews"
|
|
509
|
+
[nestedScrollEnabled]="nestedScrollEnabled"
|
|
540
510
|
[testID]="testID"
|
|
541
511
|
[style]="resolvedStyle"
|
|
542
512
|
[contentContainerStyle]="contentContainerStyle"
|
|
513
|
+
[itemTemplate]="itemDir?.templateRef"
|
|
514
|
+
[itemSeparatorTemplate]="separatorDir?.templateRef"
|
|
543
515
|
>
|
|
544
|
-
<ng-template
|
|
545
|
-
vListItem
|
|
546
|
-
let-item
|
|
547
|
-
let-index="index"
|
|
548
|
-
let-separators="separators"
|
|
549
|
-
>
|
|
550
|
-
<ng-container
|
|
551
|
-
[vListOutlet]="itemDir?.templateRef"
|
|
552
|
-
[vListOutletContext]="{ $implicit: item, index, separators }"
|
|
553
|
-
></ng-container>
|
|
554
|
-
</ng-template>
|
|
555
516
|
@if (headerDir !== undefined) {
|
|
556
517
|
<ng-template vListHeader>
|
|
557
518
|
<ng-container [vListOutlet]="headerDir.templateRef"></ng-container>
|
|
@@ -567,21 +528,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
567
528
|
<ng-container [vListOutlet]="emptyDir.templateRef"></ng-container>
|
|
568
529
|
</ng-template>
|
|
569
530
|
}
|
|
570
|
-
@if (separatorDir !== undefined) {
|
|
571
|
-
<ng-template
|
|
572
|
-
vListSeparator
|
|
573
|
-
let-highlighted="highlighted"
|
|
574
|
-
let-leadingItem="leadingItem"
|
|
575
|
-
let-trailingItem="trailingItem"
|
|
576
|
-
>
|
|
577
|
-
<ng-container
|
|
578
|
-
[vListOutlet]="separatorDir.templateRef"
|
|
579
|
-
[vListOutletContext]="
|
|
580
|
-
itemSeparatorContext(highlighted, leadingItem, trailingItem)
|
|
581
|
-
"
|
|
582
|
-
></ng-container>
|
|
583
|
-
</ng-template>
|
|
584
|
-
}
|
|
585
531
|
</VirtualizedList>
|
|
586
532
|
}
|
|
587
533
|
`,
|
|
@@ -657,6 +603,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
657
603
|
type: Input
|
|
658
604
|
}], keyboardDismissMode: [{
|
|
659
605
|
type: Input
|
|
606
|
+
}], removeClippedSubviews: [{
|
|
607
|
+
type: Input
|
|
608
|
+
}], nestedScrollEnabled: [{
|
|
609
|
+
type: Input
|
|
660
610
|
}], style: [{
|
|
661
611
|
type: Input
|
|
662
612
|
}], contentContainerStyle: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/flat-list/index.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,+FAA+F;AAC/F,oGAAoG;AACpG,uFAAuF;AACvF,4FAA4F;AAC5F,4EAA4E;AAC5E,EAAE;AACF,oGAAoG;AACpG,oGAAoG;AACpG,sFAAsF;AACtF,gGAAgG;AAChG,0FAA0F;AAC1F,mDAAmD;AACnD,kGAAkG;AAClG,gGAAgG;AAChG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/flat-list/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,14 @@ export declare const IMAGE_OUTPUTS: string[];
|
|
|
9
9
|
export declare function isImageEventCallback(value: unknown): value is (event: ISymbioteEvent) => void;
|
|
10
10
|
export declare function resolveImageProps(input: Record<string, unknown>): Record<string, unknown>;
|
|
11
11
|
export declare abstract class ImageBase {
|
|
12
|
-
static readonly getSize:
|
|
13
|
-
|
|
12
|
+
static readonly getSize: {
|
|
13
|
+
(uri: string): Promise<import("@symbiote-native/engine").IImageSize>;
|
|
14
|
+
(uri: string, success: (width: number, height: number) => void, failure?: (error: unknown) => void): undefined;
|
|
15
|
+
};
|
|
16
|
+
static readonly getSizeWithHeaders: {
|
|
17
|
+
(uri: string, headers: Record<string, string>): Promise<import("@symbiote-native/engine").IImageSize>;
|
|
18
|
+
(uri: string, headers: Record<string, string>, success: (width: number, height: number) => void, failure?: (error: unknown) => void): undefined;
|
|
19
|
+
};
|
|
14
20
|
static readonly prefetch: (uri: string, callback?: (requestId: number) => void) => Promise<boolean>;
|
|
15
21
|
static readonly abortPrefetch: (requestId: number) => void;
|
|
16
22
|
static readonly queryCache: (uris: string[]) => Promise<Record<string, import("@symbiote-native/engine").IImageCacheStatus>>;
|
|
@@ -83,6 +83,7 @@ export declare class Modal implements IAngularModalInputs, OnInit, OnChanges, Do
|
|
|
83
83
|
private readonly hostPropsRevision;
|
|
84
84
|
private lastAnchorStyle;
|
|
85
85
|
ngOnChanges(changes: SimpleChanges): void;
|
|
86
|
+
handleDismiss(): void;
|
|
86
87
|
get shouldRender(): boolean;
|
|
87
88
|
private get descriptor();
|
|
88
89
|
ngDoCheck(): void;
|