@symbiote-native/angular 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/babel-register-composed.cjs +1 -0
- package/build/angular/accessibility-inputs.d.ts +2 -1
- package/build/angular/accessibility-inputs.js +4 -1
- package/build/angular/accessibility-inputs.js.map +1 -1
- package/build/angular/callback-host.d.ts +1 -1
- package/build/angular/callback-host.js +57 -9
- package/build/angular/callback-host.js.map +1 -1
- package/build/angular/components/flat-list/flat-list-handle.d.ts +35 -0
- package/build/angular/components/flat-list/flat-list-handle.js +48 -0
- package/build/angular/components/flat-list/flat-list-handle.js.map +1 -0
- package/build/angular/components/flat-list/flat-list-template.d.ts +1 -1
- package/build/angular/components/flat-list/flat-list-template.js +16 -0
- package/build/angular/components/flat-list/flat-list-template.js.map +1 -1
- package/build/angular/components/flat-list/index.d.ts +6 -30
- package/build/angular/components/flat-list/index.js +6 -36
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/image-inputs.d.ts +4 -0
- package/build/angular/components/image-inputs.js +81 -0
- package/build/angular/components/image-inputs.js.map +1 -0
- package/build/angular/components/image-props-resolve.d.ts +3 -0
- package/build/angular/components/image-props-resolve.js +133 -0
- package/build/angular/components/image-props-resolve.js.map +1 -0
- package/build/angular/components/image-shared.d.ts +8 -6
- package/build/angular/components/image-shared.js +23 -212
- package/build/angular/components/image-shared.js.map +1 -1
- package/build/angular/components/input-accessory-view-props.d.ts +4 -4
- package/build/angular/components/keyboard-avoiding-view/index.d.ts +3 -6
- package/build/angular/components/keyboard-avoiding-view/index.js +29 -56
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/layout-conformance-props.d.ts +4 -0
- package/build/angular/components/layout-conformance-props.js +2 -0
- package/build/angular/components/layout-conformance-props.js.map +1 -0
- package/build/angular/components/modal/index.d.ts +6 -5
- package/build/angular/components/modal/index.js +17 -2
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/refresh-control-props.d.ts +7 -7
- package/build/angular/components/scroll-view-props.d.ts +8 -5
- package/build/angular/components/section-list/index.d.ts +17 -8
- package/build/angular/components/section-list/index.js +37 -28
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/touchable-props.d.ts +2 -2
- package/build/angular/components/virtualized-list/cell-renderer-context.d.ts +12 -0
- package/build/angular/components/virtualized-list/cell-renderer-context.js +16 -0
- package/build/angular/components/virtualized-list/cell-renderer-context.js.map +1 -0
- package/build/angular/components/virtualized-list/directives.d.ts +26 -6
- package/build/angular/components/virtualized-list/directives.js +59 -5
- package/build/angular/components/virtualized-list/directives.js.map +1 -1
- package/build/angular/components/virtualized-list/index.d.ts +19 -15
- package/build/angular/components/virtualized-list/index.js +91 -61
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-list/list-bags.d.ts +5 -1
- package/build/angular/components/virtualized-list/list-bags.js +31 -19
- package/build/angular/components/virtualized-list/list-bags.js.map +1 -1
- package/build/angular/components/virtualized-list/list-effects.d.ts +2 -2
- package/build/angular/components/virtualized-list/list-effects.js +17 -27
- package/build/angular/components/virtualized-list/list-effects.js.map +1 -1
- package/build/angular/components/virtualized-list/list-handle.d.ts +4 -1
- package/build/angular/components/virtualized-list/list-handle.js +13 -3
- package/build/angular/components/virtualized-list/list-handle.js.map +1 -1
- package/build/angular/components/virtualized-list/list-inputs.d.ts +19 -5
- package/build/angular/components/virtualized-list/list-inputs.js +47 -4
- package/build/angular/components/virtualized-list/list-inputs.js.map +1 -1
- package/build/angular/components/virtualized-list/list-props.d.ts +9 -3
- package/build/angular/components/virtualized-list/list-rows.d.ts +25 -0
- package/build/angular/components/virtualized-list/list-rows.js +25 -0
- package/build/angular/components/virtualized-list/list-rows.js.map +1 -0
- package/build/angular/components/virtualized-list/list-styles.d.ts +4 -0
- package/build/angular/components/virtualized-list/list-styles.js +10 -2
- package/build/angular/components/virtualized-list/list-styles.js.map +1 -1
- package/build/angular/components/virtualized-list/list-template.d.ts +1 -1
- package/build/angular/components/virtualized-list/list-template.js +159 -73
- package/build/angular/components/virtualized-list/list-template.js.map +1 -1
- package/build/angular/components/virtualized-list/nested-scope.d.ts +6 -0
- package/build/angular/components/virtualized-list/nested-scope.js +17 -0
- package/build/angular/components/virtualized-list/nested-scope.js.map +1 -0
- package/build/angular/components/virtualized-section-list/directives.d.ts +21 -9
- package/build/angular/components/virtualized-section-list/directives.js +8 -28
- package/build/angular/components/virtualized-section-list/directives.js.map +1 -1
- package/build/angular/components/virtualized-section-list/index.d.ts +39 -60
- package/build/angular/components/virtualized-section-list/index.js +67 -33
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/section-cell.d.ts +29 -0
- package/build/angular/components/virtualized-section-list/section-cell.js +82 -0
- package/build/angular/components/virtualized-section-list/section-cell.js.map +1 -0
- package/build/angular/components/virtualized-section-list/section-list-props.d.ts +56 -0
- package/build/angular/components/virtualized-section-list/section-list-props.js +3 -0
- package/build/angular/components/virtualized-section-list/section-list-props.js.map +1 -0
- package/build/angular/components/virtualized-section-list/section-list-template.d.ts +1 -1
- package/build/angular/components/virtualized-section-list/section-list-template.js +34 -26
- package/build/angular/components/virtualized-section-list/section-list-template.js.map +1 -1
- package/build/angular/components.d.ts +7 -3
- package/build/angular/components.js +2 -1
- package/build/angular/components.js.map +1 -1
- package/build/angular/element-base.d.ts +17 -1
- package/build/angular/element-base.js +33 -1
- package/build/angular/element-base.js.map +1 -1
- package/build/angular/element-props.d.ts +7 -7
- package/build/angular/element-text-input-native.d.ts +27 -0
- package/build/angular/element-text-input-native.js +52 -0
- package/build/angular/element-text-input-native.js.map +1 -0
- package/build/angular/elements-controls.d.ts +8 -2
- package/build/angular/elements-controls.js +13 -1
- package/build/angular/elements-controls.js.map +1 -1
- package/build/angular/elements-layout.d.ts +20 -3
- package/build/angular/elements-layout.js +37 -3
- package/build/angular/elements-layout.js.map +1 -1
- package/build/angular/elements-press.d.ts +10 -3
- package/build/angular/elements-press.js +13 -1
- package/build/angular/elements-press.js.map +1 -1
- package/build/angular/elements.d.ts +3 -3
- package/build/angular/elements.js +3 -2
- package/build/angular/elements.js.map +1 -1
- package/build/angular/index.d.ts +14 -7
- package/build/angular/index.js +21 -25
- package/build/angular/index.js.map +1 -1
- package/build/angular/modules/animated/create-animated-component.d.ts +1 -1
- package/build/angular/modules/animated/create-animated-component.js +1 -1
- package/build/angular/modules/animated/create-animated-component.js.map +1 -1
- package/build/angular/modules/animated/index.d.ts +54 -41
- package/build/angular/modules/animated/index.js +2 -26
- package/build/angular/modules/animated/index.js.map +1 -1
- package/build/angular/modules/app-registry/index.d.ts +3 -3
- package/build/angular/modules/app-registry/index.js +2 -2
- package/build/angular/modules/app-registry/index.js.map +1 -1
- package/build/angular/modules/status-bar/index.d.ts +9 -5
- package/build/angular/modules/status-bar/index.js +21 -10
- package/build/angular/modules/status-bar/index.js.map +1 -1
- package/build/angular/primitives/index.d.ts +4 -0
- package/build/angular/primitives/index.js +12 -0
- package/build/angular/primitives/index.js.map +1 -1
- package/build/angular/services/color-scheme.service.d.ts +1 -1
- package/package.json +6 -6
- package/src/accessibility-inputs.ts +3 -0
- package/src/callback-host.ts +56 -8
- package/src/components/flat-list/flat-list-handle.ts +64 -0
- package/src/components/flat-list/flat-list-template.ts +16 -0
- package/src/components/flat-list/index.ts +6 -48
- package/src/components/image-inputs.ts +94 -0
- package/src/components/image-props-resolve.ts +172 -0
- package/src/components/image-shared.ts +26 -291
- package/src/components/input-accessory-view-props.ts +12 -8
- package/src/components/keyboard-avoiding-view/index.ts +39 -79
- package/src/components/layout-conformance-props.ts +8 -0
- package/src/components/modal/index.ts +42 -20
- package/src/components/refresh-control-props.ts +29 -25
- package/src/components/scroll-view-props.ts +84 -76
- package/src/components/section-list/index.ts +34 -37
- package/src/components/touchable-props.ts +6 -2
- package/src/components/virtualized-list/cell-renderer-context.ts +36 -0
- package/src/components/virtualized-list/directives.ts +84 -8
- package/src/components/virtualized-list/index.ts +118 -85
- package/src/components/virtualized-list/list-bags.ts +38 -19
- package/src/components/virtualized-list/list-effects.ts +20 -32
- package/src/components/virtualized-list/list-handle.ts +17 -4
- package/src/components/virtualized-list/list-inputs.ts +47 -0
- package/src/components/virtualized-list/list-props.ts +57 -50
- package/src/components/virtualized-list/list-rows.ts +66 -0
- package/src/components/virtualized-list/list-styles.ts +30 -1
- package/src/components/virtualized-list/list-template.ts +159 -73
- package/src/components/virtualized-list/nested-scope.ts +22 -0
- package/src/components/virtualized-section-list/directives.ts +41 -40
- package/src/components/virtualized-section-list/index.ts +114 -118
- package/src/components/virtualized-section-list/section-cell.ts +109 -0
- package/src/components/virtualized-section-list/section-list-props.ts +79 -0
- package/src/components/virtualized-section-list/section-list-template.ts +34 -26
- package/src/components.ts +8 -0
- package/src/element-base.ts +17 -0
- package/src/element-props.ts +35 -33
- package/src/element-text-input-native.ts +31 -0
- package/src/elements-controls.ts +9 -1
- package/src/elements-layout.ts +27 -0
- package/src/elements-press.ts +10 -2
- package/src/elements.ts +3 -0
- package/src/index.ts +72 -22
- package/src/modules/animated/index.ts +2 -47
- package/src/modules/app-registry/index.ts +3 -1
- package/src/modules/status-bar/index.ts +24 -11
- package/src/primitives/index.ts +7 -0
- package/src/services/color-scheme.service.ts +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// The prop bags the list writes onto its scroll tag and refresh control, with the native callbacks
|
|
2
2
|
// that feed them, kept apart from the windowing lifecycle of the component
|
|
3
3
|
import { Directive, computed, signal } from '@angular/core';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { createListHandlers, resolveAccessibilityProps, } from '@symbiote-native/components';
|
|
5
|
+
import {} from '@symbiote-native/engine';
|
|
6
6
|
import { countAngular } from '../../diagnostics';
|
|
7
7
|
import { VirtualizedListHandleBase } from './list-handle';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
@@ -14,6 +14,18 @@ export class VirtualizedListBagsBase extends VirtualizedListHandleBase {
|
|
|
14
14
|
this.resolvedMaintainVisibleContentPosition = undefined;
|
|
15
15
|
// A fresh object per push, so the commit re-applies a repeated offset
|
|
16
16
|
this.commandedOffset = undefined;
|
|
17
|
+
// Reads of `this` are deferred to the event, so the inputs are set by the time they run
|
|
18
|
+
this.listHandlers = createListHandlers({
|
|
19
|
+
isHorizontal: () => this.isHorizontal,
|
|
20
|
+
user: () => this,
|
|
21
|
+
nesting: () => this.nesting,
|
|
22
|
+
dispatch: action => this.dispatch(action),
|
|
23
|
+
clearCommandedOffset: () => {
|
|
24
|
+
this.commandedOffset = undefined;
|
|
25
|
+
},
|
|
26
|
+
getNode: () => this.scrollNode,
|
|
27
|
+
keyFor: index => this.keyFor(index),
|
|
28
|
+
});
|
|
17
29
|
// Only inputs may feed this signal, window state changes skip `ngOnChanges`
|
|
18
30
|
this.inputsRevision = signal(0, /* @ts-ignore */
|
|
19
31
|
...(ngDevMode ? [{ debugName: "inputsRevision" }] : /* istanbul ignore next */ []));
|
|
@@ -30,21 +42,10 @@ export class VirtualizedListBagsBase extends VirtualizedListHandleBase {
|
|
|
30
42
|
// `onScroll` stays a callback so an `Animated.event` target can flow through it
|
|
31
43
|
this.onScrollTick = (event) => {
|
|
32
44
|
countAngular('scrollTicks');
|
|
33
|
-
|
|
34
|
-
if (offset === undefined)
|
|
35
|
-
return;
|
|
36
|
-
dlog(`Angular VirtualizedList onScroll offset=${offset}`);
|
|
37
|
-
// A real native scroll supersedes any pending commanded offset
|
|
38
|
-
this.commandedOffset = undefined;
|
|
39
|
-
this.dispatch({ kind: LIST_ACTION_KIND.scroll, offset });
|
|
40
|
-
this.onScroll?.(event);
|
|
45
|
+
this.listHandlers.onScroll(event);
|
|
41
46
|
};
|
|
42
47
|
this.onLayoutTick = (event) => {
|
|
43
|
-
|
|
44
|
-
if (length === undefined)
|
|
45
|
-
return;
|
|
46
|
-
dlog(`Angular VirtualizedList onLayout viewport=${length}`);
|
|
47
|
-
this.dispatch({ kind: LIST_ACTION_KIND.layout, length });
|
|
48
|
+
this.listHandlers.onViewportLayout(event);
|
|
48
49
|
};
|
|
49
50
|
this.handleRefresh = () => {
|
|
50
51
|
this.refresh.emit();
|
|
@@ -77,15 +78,18 @@ export class VirtualizedListBagsBase extends VirtualizedListHandleBase {
|
|
|
77
78
|
contentContainerStyle: this.resolvedContentContainerStyle,
|
|
78
79
|
onScroll: this.onScrollTick,
|
|
79
80
|
onLayout: this.onLayoutTick,
|
|
80
|
-
onScrollBeginDrag: this.onScrollBeginDrag,
|
|
81
|
-
onScrollEndDrag: this.onScrollEndDrag,
|
|
82
|
-
onMomentumScrollBegin: this.onMomentumScrollBegin,
|
|
83
|
-
onMomentumScrollEnd: this.onMomentumScrollEnd,
|
|
81
|
+
onScrollBeginDrag: this.listHandlers.onScrollBeginDrag,
|
|
82
|
+
onScrollEndDrag: this.listHandlers.onScrollEndDrag,
|
|
83
|
+
onMomentumScrollBegin: this.listHandlers.onMomentumScrollBegin,
|
|
84
|
+
onMomentumScrollEnd: this.listHandlers.onMomentumScrollEnd,
|
|
85
|
+
onContentSizeChange: this.listHandlers.onContentSizeChange,
|
|
84
86
|
scrollEventThrottle: this.scrollEventThrottle,
|
|
85
87
|
keyboardShouldPersistTaps: this.keyboardShouldPersistTaps,
|
|
86
88
|
keyboardDismissMode: this.keyboardDismissMode,
|
|
87
89
|
removeClippedSubviews: this.removeClippedSubviews,
|
|
88
90
|
nestedScrollEnabled: this.nestedScrollEnabled,
|
|
91
|
+
stickyHeaderHiddenOnScroll: this.stickyHeaderHiddenOnScroll,
|
|
92
|
+
innerViewRef: this.innerViewRef,
|
|
89
93
|
// Android moves the scrollbar back after the `scale: -1` flip
|
|
90
94
|
isInvertedVirtualizedList: this.isInverted ? true : undefined,
|
|
91
95
|
contentOffset: this.commandedOffset,
|
|
@@ -111,6 +115,14 @@ export class VirtualizedListBagsBase extends VirtualizedListHandleBase {
|
|
|
111
115
|
onRefresh: this.handleRefresh,
|
|
112
116
|
};
|
|
113
117
|
}
|
|
118
|
+
// The list above scrolls, so RN renders a `View` with no content container
|
|
119
|
+
nestedViewBag() {
|
|
120
|
+
return {
|
|
121
|
+
...this.foldedAccessibility(),
|
|
122
|
+
style: this.resolvedStyle,
|
|
123
|
+
onLayout: this.onLayoutTick,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
114
126
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedListBagsBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
115
127
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: VirtualizedListBagsBase, isStandalone: true, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
116
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-bags.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-bags.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,2EAA2E;AAE3E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAkB,MAAM,eAAe,CAAC;AAC5E,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"list-bags.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-bags.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,13 +19,13 @@ export type IEffectHost<ItemT> = {
|
|
|
19
19
|
};
|
|
20
20
|
export declare class ListEffectRunner<ItemT> {
|
|
21
21
|
private readonly host;
|
|
22
|
-
private
|
|
22
|
+
private readonly viewableTimers;
|
|
23
23
|
private batchTimer;
|
|
24
24
|
constructor(host: IEffectHost<ItemT>);
|
|
25
25
|
run(effects: IListEffect<ItemT>[], inputs: IListReducerInputs<ItemT>): void;
|
|
26
26
|
dispose(): void;
|
|
27
27
|
private runOne;
|
|
28
28
|
private scheduleRefill;
|
|
29
|
-
private
|
|
29
|
+
private scheduleViewable;
|
|
30
30
|
}
|
|
31
31
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// Runs the effects the shared list reducer hands back: scrolls, edge events and the two timers the
|
|
2
2
|
// reducer only knows a delay for (the incremental fill and the viewability debounce)
|
|
3
|
-
import {
|
|
3
|
+
import { LIST_ACTION_KIND, LIST_EFFECT_KIND, } from '@symbiote-native/components';
|
|
4
4
|
export class ListEffectRunner {
|
|
5
5
|
constructor(host) {
|
|
6
6
|
this.host = host;
|
|
7
|
-
|
|
7
|
+
// RN never cancels a `minimumViewTime` timer, each one comes due and the reducer filters it
|
|
8
|
+
this.viewableTimers = new Set();
|
|
8
9
|
this.batchTimer = null;
|
|
9
10
|
}
|
|
10
11
|
run(effects, inputs) {
|
|
@@ -12,8 +13,9 @@ export class ListEffectRunner {
|
|
|
12
13
|
this.runOne(effect, inputs);
|
|
13
14
|
}
|
|
14
15
|
dispose() {
|
|
15
|
-
|
|
16
|
-
clearTimeout(
|
|
16
|
+
for (const timer of this.viewableTimers)
|
|
17
|
+
clearTimeout(timer);
|
|
18
|
+
this.viewableTimers.clear();
|
|
17
19
|
if (this.batchTimer !== null)
|
|
18
20
|
clearTimeout(this.batchTimer);
|
|
19
21
|
}
|
|
@@ -41,7 +43,10 @@ export class ListEffectRunner {
|
|
|
41
43
|
this.scheduleRefill(effect.delay);
|
|
42
44
|
break;
|
|
43
45
|
case LIST_EFFECT_KIND.fireViewable:
|
|
44
|
-
|
|
46
|
+
inputs.viewabilityPairs[effect.pairIndex]?.onViewableItemsChanged(effect.info);
|
|
47
|
+
break;
|
|
48
|
+
case LIST_EFFECT_KIND.scheduleViewable:
|
|
49
|
+
this.scheduleViewable(effect);
|
|
45
50
|
break;
|
|
46
51
|
}
|
|
47
52
|
}
|
|
@@ -53,31 +58,16 @@ export class ListEffectRunner {
|
|
|
53
58
|
this.host.dispatch({ kind: LIST_ACTION_KIND.batchTick });
|
|
54
59
|
}, delay);
|
|
55
60
|
}
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
pair.onViewableItemsChanged({
|
|
60
|
-
...effect.info,
|
|
61
|
-
viewabilityConfig: pair.viewabilityConfig,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
61
|
+
scheduleViewable(effect) {
|
|
62
|
+
const timer = setTimeout(() => {
|
|
63
|
+
this.viewableTimers.delete(timer);
|
|
64
64
|
this.host.dispatch({
|
|
65
|
-
kind: LIST_ACTION_KIND.
|
|
66
|
-
|
|
65
|
+
kind: LIST_ACTION_KIND.viewableDue,
|
|
66
|
+
pairIndex: effect.pairIndex,
|
|
67
|
+
indices: effect.indices,
|
|
67
68
|
});
|
|
68
|
-
};
|
|
69
|
-
if (this.viewableTimer !== null) {
|
|
70
|
-
clearTimeout(this.viewableTimer);
|
|
71
|
-
this.viewableTimer = null;
|
|
72
|
-
}
|
|
73
|
-
if (effect.delay <= EMPTY_OFFSET) {
|
|
74
|
-
fire();
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
this.viewableTimer = setTimeout(() => {
|
|
78
|
-
this.viewableTimer = null;
|
|
79
|
-
fire();
|
|
80
69
|
}, effect.delay);
|
|
70
|
+
this.viewableTimers.add(timer);
|
|
81
71
|
}
|
|
82
72
|
}
|
|
83
73
|
//# sourceMappingURL=list-effects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-effects.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-effects.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,qFAAqF;AAErF,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"list-effects.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,11 +25,14 @@ export declare abstract class VirtualizedListHandleBase<ItemT> extends Virtualiz
|
|
|
25
25
|
animated?: boolean;
|
|
26
26
|
}): void;
|
|
27
27
|
flashScrollIndicators(): void;
|
|
28
|
-
|
|
28
|
+
private handleOrNull;
|
|
29
|
+
getNativeScrollRef(): ISymbioteNode | null;
|
|
29
30
|
getScrollableNode(): IScrollViewHandle | null;
|
|
30
31
|
getScrollResponder(): IScrollViewHandle | null;
|
|
31
32
|
getScrollNode(): ISymbioteNode | null;
|
|
33
|
+
getScrollRef(): ISymbioteNode | null;
|
|
32
34
|
recordInteraction(): void;
|
|
35
|
+
setNativeProps(props: Record<string, unknown>): void;
|
|
33
36
|
static ɵfac: i0.ɵɵFactoryDeclaration<VirtualizedListHandleBase<any>, never>;
|
|
34
37
|
static ɵdir: i0.ɵɵDirectiveDeclaration<VirtualizedListHandleBase<any>, never, never, {}, {}, never, never, true, never>;
|
|
35
38
|
}
|
|
@@ -37,21 +37,31 @@ export class VirtualizedListHandleBase extends VirtualizedListInputs {
|
|
|
37
37
|
flashScrollIndicators() {
|
|
38
38
|
this.scrollHandle.flashScrollIndicators();
|
|
39
39
|
}
|
|
40
|
+
// Null until the scroll tag commits, RN's "no scroll view yet" answer
|
|
41
|
+
handleOrNull() {
|
|
42
|
+
return this.scrollNode === null ? null : this.scrollHandle;
|
|
43
|
+
}
|
|
40
44
|
getNativeScrollRef() {
|
|
41
|
-
return this.
|
|
45
|
+
return this.scrollHandle.getScrollNode();
|
|
42
46
|
}
|
|
43
47
|
getScrollableNode() {
|
|
44
|
-
return this.
|
|
48
|
+
return this.handleOrNull();
|
|
45
49
|
}
|
|
46
50
|
getScrollResponder() {
|
|
47
|
-
return this.
|
|
51
|
+
return this.handleOrNull();
|
|
48
52
|
}
|
|
49
53
|
getScrollNode() {
|
|
50
54
|
return this.scrollHandle.getScrollNode();
|
|
51
55
|
}
|
|
56
|
+
getScrollRef() {
|
|
57
|
+
return this.scrollHandle.getScrollNode();
|
|
58
|
+
}
|
|
52
59
|
recordInteraction() {
|
|
53
60
|
this.dispatch({ kind: LIST_ACTION_KIND.recordInteraction });
|
|
54
61
|
}
|
|
62
|
+
setNativeProps(props) {
|
|
63
|
+
this.scrollNode?.setNativeProps(props);
|
|
64
|
+
}
|
|
55
65
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedListHandleBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
56
66
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: VirtualizedListHandleBase, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
|
|
57
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-handle.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-handle.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,WAAW,EACX,gBAAgB,GAIjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;;AAGtD,MAAM,OAAgB,yBACpB,SAAQ,qBAA4B;IASpC,cAAc,CAAC,MAA8C;QAC3D,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,cAAc;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;SAClC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,MAKb;QACC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,WAAW;YAChD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,YAAY;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,MAIZ;QACC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,YAAY;YACnC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,WAAW;SACjD,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAA+B;QACzC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,WAAW;YAClC,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI;SACnC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;IAC5C,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"list-handle.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-handle.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,WAAW,EACX,gBAAgB,GAIjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;;AAGtD,MAAM,OAAgB,yBACpB,SAAQ,qBAA4B;IASpC,cAAc,CAAC,MAA8C;QAC3D,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,cAAc;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;SAClC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,MAKb;QACC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,aAAa;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,WAAW;YAChD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,YAAY;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,MAIZ;QACC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,YAAY;YACnC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;YACjC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,WAAW;SACjD,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAA+B;QACzC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gBAAgB,CAAC,WAAW;YAClC,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI;SACnC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;IAC5C,CAAC;IAED,sEAAsE;IAC9D,YAAY;QAClB,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC7D,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,cAAc,CAAC,KAA8B;QAC3C,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;8GAxFmB,yBAAyB;kGAAzB,yBAAyB;;2FAAzB,yBAAyB;kBAD9C,SAAS"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EventEmitter, TemplateRef } from '@angular/core';
|
|
2
|
-
import { type IViewabilityConfig, type IViewabilityConfigCallbackPair, type IViewableItemsChangedInfo } from '@symbiote-native/components';
|
|
1
|
+
import { EventEmitter, TemplateRef, type Type } from '@angular/core';
|
|
2
|
+
import { type IInnerViewRef, type IViewabilityConfig, type IViewabilityConfigCallbackPair, type IViewableItemsChangedInfo } from '@symbiote-native/components';
|
|
3
3
|
import type { IStyleProp, ISymbioteEvent, IViewStyle } from '@symbiote-native/engine';
|
|
4
|
-
import { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, type IVListItemContext, type IVListSeparatorContext } from './directives';
|
|
4
|
+
import { VListCellDirective, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, type IVListCellContext, type IVListItemContext, type IVListSeparatorContext } from './directives';
|
|
5
5
|
import { ListEventsBase } from './list-events';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare abstract class ListInputsBase<ItemT> extends ListEventsBase {
|
|
@@ -31,6 +31,7 @@ export declare abstract class ListInputsBase<ItemT> extends ListEventsBase {
|
|
|
31
31
|
maxToRenderPerBatch?: number;
|
|
32
32
|
updateCellsBatchingPeriod?: number;
|
|
33
33
|
windowSize?: number;
|
|
34
|
+
disableVirtualization?: boolean;
|
|
34
35
|
stickyHeaderIndices?: number[];
|
|
35
36
|
maintainVisibleContentPosition?: {
|
|
36
37
|
minIndexForVisible: number;
|
|
@@ -41,28 +42,38 @@ export declare abstract class ListInputsBase<ItemT> extends ListEventsBase {
|
|
|
41
42
|
onScrollEndDrag?: (event: ISymbioteEvent) => void;
|
|
42
43
|
onMomentumScrollBegin?: (event: ISymbioteEvent) => void;
|
|
43
44
|
onMomentumScrollEnd?: (event: ISymbioteEvent) => void;
|
|
45
|
+
onContentSizeChange?: (width: number, height: number) => void;
|
|
44
46
|
scrollEventThrottle?: number;
|
|
45
47
|
keyboardShouldPersistTaps?: boolean | 'always' | 'never' | 'handled';
|
|
46
48
|
keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';
|
|
47
49
|
removeClippedSubviews?: boolean;
|
|
48
50
|
nestedScrollEnabled?: boolean;
|
|
51
|
+
stickyHeaderHiddenOnScroll?: boolean;
|
|
52
|
+
innerViewRef?: IInnerViewRef;
|
|
49
53
|
style?: IStyleProp<IViewStyle>;
|
|
50
54
|
contentContainerStyle?: IStyleProp<IViewStyle>;
|
|
55
|
+
listHeaderComponentStyle?: IStyleProp<IViewStyle>;
|
|
56
|
+
listFooterComponentStyle?: IStyleProp<IViewStyle>;
|
|
51
57
|
testID?: string;
|
|
52
58
|
nativeID?: string;
|
|
59
|
+
listItemComponent?: Type<unknown>;
|
|
53
60
|
itemDir?: VListItemDirective<ItemT>;
|
|
54
61
|
headerDir?: VListHeaderDirective;
|
|
55
62
|
footerDir?: VListFooterDirective;
|
|
56
63
|
emptyDir?: VListEmptyDirective;
|
|
57
64
|
separatorDir?: VListSeparatorDirective<ItemT>;
|
|
65
|
+
cellDir?: VListCellDirective;
|
|
58
66
|
get isHorizontal(): boolean;
|
|
67
|
+
get cellRendererTpl(): TemplateRef<IVListCellContext> | undefined;
|
|
68
|
+
get itemComponent(): Type<unknown> | undefined;
|
|
69
|
+
protected get hasItemTemplate(): boolean;
|
|
59
70
|
protected get isInverted(): boolean;
|
|
60
71
|
protected get windowSizeValue(): number;
|
|
61
72
|
protected get initialNumToRenderValue(): number;
|
|
62
73
|
protected get maxToRenderPerBatchValue(): number;
|
|
63
74
|
protected get updateCellsBatchingPeriodValue(): number;
|
|
64
75
|
static ɵfac: i0.ɵɵFactoryDeclaration<ListInputsBase<any>, never>;
|
|
65
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ListInputsBase<any>, never, never, { "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; }; "testID": { "alias": "testID"; "required": false; }; "nativeID": { "alias": "nativeID"; "required": false; }; }, { "viewableItemsChanged": "viewableItemsChanged"; "scrollToIndexFailed": "scrollToIndexFailed"; }, ["itemDir", "headerDir", "footerDir", "emptyDir", "separatorDir"], never, true, never>;
|
|
76
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ListInputsBase<any>, never, never, { "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; }; "disableVirtualization": { "alias": "disableVirtualization"; "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; }; "onContentSizeChange": { "alias": "onContentSizeChange"; "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; }; "stickyHeaderHiddenOnScroll": { "alias": "stickyHeaderHiddenOnScroll"; "required": false; }; "innerViewRef": { "alias": "innerViewRef"; "required": false; }; "style": { "alias": "style"; "required": false; }; "contentContainerStyle": { "alias": "contentContainerStyle"; "required": false; }; "listHeaderComponentStyle": { "alias": "listHeaderComponentStyle"; "required": false; }; "listFooterComponentStyle": { "alias": "listFooterComponentStyle"; "required": false; }; "testID": { "alias": "testID"; "required": false; }; "nativeID": { "alias": "nativeID"; "required": false; }; "listItemComponent": { "alias": "listItemComponent"; "required": false; }; }, { "viewableItemsChanged": "viewableItemsChanged"; "scrollToIndexFailed": "scrollToIndexFailed"; }, ["itemDir", "headerDir", "footerDir", "emptyDir", "separatorDir", "cellDir"], never, true, never>;
|
|
66
77
|
}
|
|
67
78
|
export declare abstract class VirtualizedListInputs<ItemT> extends ListInputsBase<ItemT> {
|
|
68
79
|
data: unknown;
|
|
@@ -71,8 +82,11 @@ export declare abstract class VirtualizedListInputs<ItemT> extends ListInputsBas
|
|
|
71
82
|
refreshRequested?: boolean;
|
|
72
83
|
itemTemplate?: TemplateRef<IVListItemContext<ItemT>>;
|
|
73
84
|
itemSeparatorTemplate?: TemplateRef<IVListSeparatorContext<ItemT>>;
|
|
85
|
+
cellRendererTemplate?: TemplateRef<IVListCellContext>;
|
|
86
|
+
get cellRendererTpl(): TemplateRef<IVListCellContext> | undefined;
|
|
74
87
|
get cellTemplate(): TemplateRef<IVListItemContext<ItemT>> | undefined;
|
|
88
|
+
protected get hasItemTemplate(): boolean;
|
|
75
89
|
get separatorTemplate(): TemplateRef<IVListSeparatorContext<ItemT>> | undefined;
|
|
76
90
|
static ɵfac: i0.ɵɵFactoryDeclaration<VirtualizedListInputs<any>, never>;
|
|
77
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<VirtualizedListInputs<any>, never, never, { "data": { "alias": "data"; "required": true; }; "getItem": { "alias": "getItem"; "required": true; }; "getItemCount": { "alias": "getItemCount"; "required": true; }; "refreshRequested": { "alias": "refreshRequested"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "itemSeparatorTemplate": { "alias": "itemSeparatorTemplate"; "required": false; }; }, {}, never, never, true, never>;
|
|
91
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VirtualizedListInputs<any>, never, never, { "data": { "alias": "data"; "required": true; }; "getItem": { "alias": "getItem"; "required": true; }; "getItemCount": { "alias": "getItemCount"; "required": true; }; "refreshRequested": { "alias": "refreshRequested"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "itemSeparatorTemplate": { "alias": "itemSeparatorTemplate"; "required": false; }; "cellRendererTemplate": { "alias": "cellRendererTemplate"; "required": false; }; }, {}, never, never, true, never>;
|
|
78
92
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// The list surface Angular binds statically: inputs, outputs and projected templates. Kept apart
|
|
2
2
|
// from the components so the windowing lifecycle reads on its own
|
|
3
3
|
import { ContentChild, Directive, EventEmitter, Input, Output, TemplateRef, } from '@angular/core';
|
|
4
|
-
import { DEFAULT_INITIAL_NUM_TO_RENDER, DEFAULT_MAX_TO_RENDER_PER_BATCH, DEFAULT_UPDATE_CELLS_BATCHING_PERIOD, DEFAULT_WINDOW_SIZE, } from '@symbiote-native/components';
|
|
5
|
-
import { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from './directives';
|
|
4
|
+
import { DEFAULT_INITIAL_NUM_TO_RENDER, DEFAULT_MAX_TO_RENDER_PER_BATCH, DEFAULT_UPDATE_CELLS_BATCHING_PERIOD, DEFAULT_WINDOW_SIZE, ITEM_RENDERER, pickItemRenderer, } from '@symbiote-native/components';
|
|
5
|
+
import { VListCellDirective, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from './directives';
|
|
6
6
|
import { ListEventsBase } from './list-events';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
// What `VirtualizedList` and `FlatList` share: the windowing inputs and the slot templates
|
|
@@ -15,6 +15,24 @@ export class ListInputsBase extends ListEventsBase {
|
|
|
15
15
|
get isHorizontal() {
|
|
16
16
|
return this.horizontal === true;
|
|
17
17
|
}
|
|
18
|
+
// The app's `vListCell`, which a list built on this one may replace with its own
|
|
19
|
+
get cellRendererTpl() {
|
|
20
|
+
return this.cellDir?.templateRef;
|
|
21
|
+
}
|
|
22
|
+
// The component to stamp per cell, RN's `_renderElement`: it wins over the item template, and a
|
|
23
|
+
// cell with neither throws
|
|
24
|
+
get itemComponent() {
|
|
25
|
+
const kind = pickItemRenderer({
|
|
26
|
+
hasRenderItem: this.hasItemTemplate,
|
|
27
|
+
hasComponent: this.listItemComponent !== undefined,
|
|
28
|
+
});
|
|
29
|
+
return kind === ITEM_RENDERER.component
|
|
30
|
+
? this.listItemComponent
|
|
31
|
+
: undefined;
|
|
32
|
+
}
|
|
33
|
+
get hasItemTemplate() {
|
|
34
|
+
return this.itemDir !== undefined;
|
|
35
|
+
}
|
|
18
36
|
get isInverted() {
|
|
19
37
|
return this.inverted === true;
|
|
20
38
|
}
|
|
@@ -31,7 +49,7 @@ export class ListInputsBase extends ListEventsBase {
|
|
|
31
49
|
return (this.updateCellsBatchingPeriod ?? DEFAULT_UPDATE_CELLS_BATCHING_PERIOD);
|
|
32
50
|
}
|
|
33
51
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ListInputsBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ListInputsBase, isStandalone: true, inputs: { 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", testID: "testID", nativeID: "nativeID" }, outputs: { 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 }], usesInheritance: true, ngImport: i0 }); }
|
|
52
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ListInputsBase, isStandalone: true, inputs: { 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", disableVirtualization: "disableVirtualization", stickyHeaderIndices: "stickyHeaderIndices", maintainVisibleContentPosition: "maintainVisibleContentPosition", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", onContentSizeChange: "onContentSizeChange", scrollEventThrottle: "scrollEventThrottle", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", keyboardDismissMode: "keyboardDismissMode", removeClippedSubviews: "removeClippedSubviews", nestedScrollEnabled: "nestedScrollEnabled", stickyHeaderHiddenOnScroll: "stickyHeaderHiddenOnScroll", innerViewRef: "innerViewRef", style: "style", contentContainerStyle: "contentContainerStyle", listHeaderComponentStyle: "listHeaderComponentStyle", listFooterComponentStyle: "listFooterComponentStyle", testID: "testID", nativeID: "nativeID", listItemComponent: "listItemComponent" }, outputs: { 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 }, { propertyName: "cellDir", first: true, predicate: VListCellDirective, descendants: true }], usesInheritance: true, ngImport: i0 }); }
|
|
35
53
|
}
|
|
36
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ListInputsBase, decorators: [{
|
|
37
55
|
type: Directive
|
|
@@ -71,6 +89,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
71
89
|
type: Input
|
|
72
90
|
}], windowSize: [{
|
|
73
91
|
type: Input
|
|
92
|
+
}], disableVirtualization: [{
|
|
93
|
+
type: Input
|
|
74
94
|
}], stickyHeaderIndices: [{
|
|
75
95
|
type: Input
|
|
76
96
|
}], maintainVisibleContentPosition: [{
|
|
@@ -85,6 +105,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
85
105
|
type: Input
|
|
86
106
|
}], onMomentumScrollEnd: [{
|
|
87
107
|
type: Input
|
|
108
|
+
}], onContentSizeChange: [{
|
|
109
|
+
type: Input
|
|
88
110
|
}], scrollEventThrottle: [{
|
|
89
111
|
type: Input
|
|
90
112
|
}], keyboardShouldPersistTaps: [{
|
|
@@ -95,14 +117,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
95
117
|
type: Input
|
|
96
118
|
}], nestedScrollEnabled: [{
|
|
97
119
|
type: Input
|
|
120
|
+
}], stickyHeaderHiddenOnScroll: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], innerViewRef: [{
|
|
123
|
+
type: Input
|
|
98
124
|
}], style: [{
|
|
99
125
|
type: Input
|
|
100
126
|
}], contentContainerStyle: [{
|
|
101
127
|
type: Input
|
|
128
|
+
}], listHeaderComponentStyle: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], listFooterComponentStyle: [{
|
|
131
|
+
type: Input
|
|
102
132
|
}], testID: [{
|
|
103
133
|
type: Input
|
|
104
134
|
}], nativeID: [{
|
|
105
135
|
type: Input
|
|
136
|
+
}], listItemComponent: [{
|
|
137
|
+
type: Input
|
|
106
138
|
}], itemDir: [{
|
|
107
139
|
type: ContentChild,
|
|
108
140
|
args: [VListItemDirective]
|
|
@@ -118,16 +150,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
118
150
|
}], separatorDir: [{
|
|
119
151
|
type: ContentChild,
|
|
120
152
|
args: [VListSeparatorDirective]
|
|
153
|
+
}], cellDir: [{
|
|
154
|
+
type: ContentChild,
|
|
155
|
+
args: [VListCellDirective]
|
|
121
156
|
}] } });
|
|
122
157
|
export class VirtualizedListInputs extends ListInputsBase {
|
|
158
|
+
get cellRendererTpl() {
|
|
159
|
+
return this.cellRendererTemplate ?? this.cellDir?.templateRef;
|
|
160
|
+
}
|
|
123
161
|
get cellTemplate() {
|
|
124
162
|
return this.itemTemplate ?? this.itemDir?.templateRef;
|
|
125
163
|
}
|
|
164
|
+
get hasItemTemplate() {
|
|
165
|
+
return this.cellTemplate !== undefined;
|
|
166
|
+
}
|
|
126
167
|
get separatorTemplate() {
|
|
127
168
|
return this.itemSeparatorTemplate ?? this.separatorDir?.templateRef;
|
|
128
169
|
}
|
|
129
170
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedListInputs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
130
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: VirtualizedListInputs, isStandalone: true, inputs: { data: "data", getItem: "getItem", getItemCount: "getItemCount", refreshRequested: "refreshRequested", itemTemplate: "itemTemplate", itemSeparatorTemplate: "itemSeparatorTemplate" }, usesInheritance: true, ngImport: i0 }); }
|
|
171
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: VirtualizedListInputs, isStandalone: true, inputs: { data: "data", getItem: "getItem", getItemCount: "getItemCount", refreshRequested: "refreshRequested", itemTemplate: "itemTemplate", itemSeparatorTemplate: "itemSeparatorTemplate", cellRendererTemplate: "cellRendererTemplate" }, usesInheritance: true, ngImport: i0 }); }
|
|
131
172
|
}
|
|
132
173
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedListInputs, decorators: [{
|
|
133
174
|
type: Directive
|
|
@@ -146,5 +187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
146
187
|
type: Input
|
|
147
188
|
}], itemSeparatorTemplate: [{
|
|
148
189
|
type: Input
|
|
190
|
+
}], cellRendererTemplate: [{
|
|
191
|
+
type: Input
|
|
149
192
|
}] } });
|
|
150
193
|
//# sourceMappingURL=list-inputs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-inputs.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-inputs.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,kEAAkE;AAElE,OAAO,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,KAAK,EACL,MAAM,EACN,WAAW,
|
|
1
|
+
{"version":3,"file":"list-inputs.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-inputs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { IAccessibilityProps, IAriaProps, IViewabilityConfig, IViewabilityConfigCallbackPair, IViewableItemsChangedInfo } from '@symbiote-native/components';
|
|
1
|
+
import type { IAccessibilityProps, IAriaProps, IInnerViewRef, IViewabilityConfig, IViewabilityConfigCallbackPair, IViewableItemsChangedInfo } from '@symbiote-native/components';
|
|
2
2
|
import type { IStyleProp, ISymbioteEvent, IViewStyle } from '@symbiote-native/engine';
|
|
3
|
-
export
|
|
3
|
+
export type IVirtualizedListProps<ItemT> = IAccessibilityProps & IAriaProps & {
|
|
4
4
|
data: unknown;
|
|
5
5
|
getItem: (data: unknown, index: number) => ItemT;
|
|
6
6
|
getItemCount: (data: unknown) => number;
|
|
@@ -37,6 +37,7 @@ export interface IVirtualizedListProps<ItemT> extends IAccessibilityProps, IAria
|
|
|
37
37
|
maxToRenderPerBatch?: number;
|
|
38
38
|
updateCellsBatchingPeriod?: number;
|
|
39
39
|
windowSize?: number;
|
|
40
|
+
disableVirtualization?: boolean;
|
|
40
41
|
stickyHeaderIndices?: number[];
|
|
41
42
|
maintainVisibleContentPosition?: {
|
|
42
43
|
minIndexForVisible: number;
|
|
@@ -47,12 +48,17 @@ export interface IVirtualizedListProps<ItemT> extends IAccessibilityProps, IAria
|
|
|
47
48
|
onScrollEndDrag?: (event: ISymbioteEvent) => void;
|
|
48
49
|
onMomentumScrollBegin?: (event: ISymbioteEvent) => void;
|
|
49
50
|
onMomentumScrollEnd?: (event: ISymbioteEvent) => void;
|
|
51
|
+
onContentSizeChange?: (width: number, height: number) => void;
|
|
50
52
|
scrollEventThrottle?: number;
|
|
51
53
|
keyboardShouldPersistTaps?: boolean | 'always' | 'never' | 'handled';
|
|
52
54
|
keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';
|
|
53
55
|
removeClippedSubviews?: boolean;
|
|
54
56
|
nestedScrollEnabled?: boolean;
|
|
57
|
+
stickyHeaderHiddenOnScroll?: boolean;
|
|
58
|
+
innerViewRef?: IInnerViewRef;
|
|
55
59
|
style?: IStyleProp<IViewStyle>;
|
|
56
60
|
contentContainerStyle?: IStyleProp<IViewStyle>;
|
|
57
|
-
|
|
61
|
+
listHeaderComponentStyle?: IStyleProp<IViewStyle>;
|
|
62
|
+
listFooterComponentStyle?: IStyleProp<IViewStyle>;
|
|
63
|
+
};
|
|
58
64
|
export type IVirtualizedListInputs<ItemT> = Omit<IVirtualizedListProps<ItemT>, 'onEndReached' | 'onStartReached' | 'onRefresh' | 'onViewableItemsChanged' | 'onScrollToIndexFailed' | 'onAccessibilityAction' | 'onAccessibilityTap' | 'onMagicTap' | 'onAccessibilityEscape'>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { LIST_SEGMENT_KIND, type IWindowPlan } from '@symbiote-native/components';
|
|
2
|
+
import type { IViewStyle } from '@symbiote-native/engine';
|
|
3
|
+
import type { CellRegistry, IWindowCell } from './cell-registry';
|
|
4
|
+
import type { IVListCellContext } from './directives';
|
|
5
|
+
export type ISpacerRow = {
|
|
6
|
+
kind: typeof LIST_SEGMENT_KIND.spacer;
|
|
7
|
+
key: string;
|
|
8
|
+
style: IViewStyle;
|
|
9
|
+
};
|
|
10
|
+
export type ICellRow<ItemT> = {
|
|
11
|
+
kind: typeof LIST_SEGMENT_KIND.cell;
|
|
12
|
+
key: string;
|
|
13
|
+
cell: IWindowCell<ItemT>;
|
|
14
|
+
renderer: IVListCellContext | undefined;
|
|
15
|
+
};
|
|
16
|
+
export type IListRow<ItemT> = ISpacerRow | ICellRow<ItemT>;
|
|
17
|
+
export type IRowsParams<ItemT> = {
|
|
18
|
+
windowPlan: IWindowPlan;
|
|
19
|
+
cells: CellRegistry<ItemT>;
|
|
20
|
+
count: number;
|
|
21
|
+
isHorizontal: boolean;
|
|
22
|
+
hasSeparators: boolean;
|
|
23
|
+
rendererFor: ((cell: IWindowCell<ItemT>) => IVListCellContext) | undefined;
|
|
24
|
+
};
|
|
25
|
+
export declare function stampPlanRows<ItemT>(params: IRowsParams<ItemT>): IListRow<ItemT>[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// The rows the template stamps: the plan's spacers and cells, keyed so a window slide moves them
|
|
2
|
+
import { LIST_SEGMENT_KIND, spacerStyleOf, } from '@symbiote-native/components';
|
|
3
|
+
// A cell and a spacer never share a row key, an item key cannot start with `spacer-`
|
|
4
|
+
export function stampPlanRows(params) {
|
|
5
|
+
const { windowPlan, cells, count, isHorizontal, hasSeparators, rendererFor } = params;
|
|
6
|
+
return windowPlan.plan.segments.map((segment) => {
|
|
7
|
+
if (segment.kind === LIST_SEGMENT_KIND.spacer) {
|
|
8
|
+
return {
|
|
9
|
+
kind: segment.kind,
|
|
10
|
+
key: segment.key,
|
|
11
|
+
style: spacerStyleOf(segment.extent, isHorizontal),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
// The separator gates on the last index of the data, not of the window, or a cell's height
|
|
15
|
+
// would shift as it slides past
|
|
16
|
+
const cell = cells.windowCell(segment.index, segment.key, hasSeparators && segment.index < count - 1, windowPlan.stickySet?.has(segment.index) === true);
|
|
17
|
+
return {
|
|
18
|
+
kind: segment.kind,
|
|
19
|
+
key: `cell-${segment.key}`,
|
|
20
|
+
cell,
|
|
21
|
+
renderer: rendererFor?.(cell),
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=list-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-rows.js","sourceRoot":"","sources":["../../../../src/components/virtualized-list/list-rows.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAEjG,OAAO,EACL,iBAAiB,EACjB,aAAa,GAEd,MAAM,6BAA6B,CAAC;AA8BrC,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAC3B,MAA0B;IAE1B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAC1E,MAAM,CAAC;IACT,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAmB,EAAE;QAC/D,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC9C,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;aACnD,CAAC;QACJ,CAAC;QACD,2FAA2F;QAC3F,gCAAgC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAC3B,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,GAAG,EACX,aAAa,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,EAC1C,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAClD,CAAC;QACF,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,QAAQ,OAAO,CAAC,GAAG,EAAE;YAC1B,IAAI;YACJ,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|