@symbiote-native/angular 3.2.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 +2 -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/checkbox-props.d.ts +2 -0
- package/build/angular/components/checkbox-props.js +2 -0
- package/build/angular/components/checkbox-props.js.map +1 -0
- 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 +8 -3
- package/build/angular/components.js +2 -1
- package/build/angular/components.js.map +1 -1
- package/build/angular/descriptor-to-angular/descriptor-host.d.ts +8 -0
- package/build/angular/descriptor-to-angular/descriptor-host.js +38 -0
- package/build/angular/descriptor-to-angular/descriptor-host.js.map +1 -0
- package/build/angular/descriptor-to-angular/index.d.ts +1 -0
- package/build/angular/descriptor-to-angular/index.js +4 -0
- package/build/angular/descriptor-to-angular/index.js.map +1 -1
- package/build/angular/element-base.d.ts +169 -0
- package/build/angular/element-base.js +304 -0
- package/build/angular/element-base.js.map +1 -0
- 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 +171 -0
- package/build/angular/elements-controls.js +394 -0
- package/build/angular/elements-controls.js.map +1 -0
- package/build/angular/elements-layout.d.ts +139 -0
- package/build/angular/elements-layout.js +276 -0
- package/build/angular/elements-layout.js.map +1 -0
- package/build/angular/elements-press.d.ts +103 -0
- package/build/angular/elements-press.js +239 -0
- package/build/angular/elements-press.js.map +1 -0
- package/build/angular/elements.d.ts +6 -516
- package/build/angular/elements.js +9 -1091
- package/build/angular/elements.js.map +1 -1
- package/build/angular/host-instance/index.d.ts +2 -0
- package/build/angular/host-instance/index.js +4 -4
- package/build/angular/host-instance/index.js.map +1 -1
- package/build/angular/index.d.ts +17 -9
- package/build/angular/index.js +24 -27
- 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/native-view-base.d.ts +10 -2
- package/build/angular/native-view-base.js +23 -2
- package/build/angular/native-view-base.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/build/angular/services/index.d.ts +1 -0
- package/build/angular/services/index.js +1 -0
- package/build/angular/services/index.js.map +1 -1
- package/build/angular/services/inject-event.d.ts +6 -0
- package/build/angular/services/inject-event.js +24 -0
- package/build/angular/services/inject-event.js.map +1 -0
- package/package.json +6 -6
- package/src/accessibility-inputs.ts +3 -0
- package/src/callback-host.ts +56 -8
- package/src/components/checkbox-props.ts +12 -0
- 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 +9 -0
- package/src/descriptor-to-angular/descriptor-host.ts +27 -0
- package/src/descriptor-to-angular/index.ts +5 -0
- package/src/element-base.ts +289 -0
- package/src/element-props.ts +35 -33
- package/src/element-text-input-native.ts +31 -0
- package/src/elements-controls.ts +290 -0
- package/src/elements-layout.ts +168 -0
- package/src/elements-press.ts +153 -0
- package/src/elements.ts +76 -788
- package/src/host-instance/index.ts +4 -4
- package/src/index.ts +78 -23
- 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/native-view-base.ts +37 -2
- package/src/primitives/index.ts +7 -0
- package/src/services/color-scheme.service.ts +1 -1
- package/src/services/index.ts +1 -0
- package/src/services/inject-event.ts +52 -0
|
@@ -1,61 +1,27 @@
|
|
|
1
|
-
import { type DoCheck } from '@angular/core';
|
|
2
|
-
import { type
|
|
1
|
+
import { type DoCheck, type TemplateRef } from '@angular/core';
|
|
2
|
+
import { type IInnerViewRef, type ISectionEntry, type ISeparators, type IScrollViewHandle, type IVirtualizedSectionListHandle } from '@symbiote-native/components';
|
|
3
3
|
import { type IStyleProp, type ISymbioteEvent, type ISymbioteNode, type IViewStyle } from '@symbiote-native/engine';
|
|
4
|
-
import { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListSeparatorDirective, type
|
|
4
|
+
import { VListCellDirective, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListSeparatorDirective, type IVListCellContext } from '../virtualized-list';
|
|
5
5
|
import { ListEventsBase } from '../virtualized-list/list-events';
|
|
6
|
-
import { VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, type IVSectionContext, type IVSectionItemContext } from './directives';
|
|
6
|
+
import { VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, type ISection, type IVSectionContext, type IVSectionItemContext } from './directives';
|
|
7
|
+
import { type ISeparatorSlot } from './section-cell';
|
|
8
|
+
import type { IItemLayout, IVirtualizedSectionListInputs } from './section-list-props';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
import * as i1 from "../../primitives/shared";
|
|
9
|
-
export type { ISection } from '@symbiote-native/components';
|
|
10
11
|
export type { IVirtualizedSectionListHandle } from '@symbiote-native/components';
|
|
11
12
|
export { VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './directives';
|
|
12
|
-
export type { IVSectionContext, IVSectionItemContext } from './directives';
|
|
13
|
-
type
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
export type { ISection, IVSectionContext, IVSectionItemContext, IVSectionSeparatorContext, } from './directives';
|
|
14
|
+
type IEntry<ItemT> = ISectionEntry<ItemT, ISection<ItemT>>;
|
|
15
|
+
export type ICellPlan<ItemT> = {
|
|
16
|
+
cellKey: string;
|
|
17
|
+
prevCellKey: string | undefined;
|
|
18
|
+
hasLeading: boolean;
|
|
19
|
+
hasTrailing: boolean;
|
|
20
|
+
itemTemplate: TemplateRef<IVSectionItemContext<ItemT>> | undefined;
|
|
21
|
+
first: ISeparatorSlot<ItemT>;
|
|
22
|
+
second: ISeparatorSlot<ItemT>;
|
|
17
23
|
};
|
|
18
|
-
export
|
|
19
|
-
sections: ReadonlyArray<ISection<ItemT>>;
|
|
20
|
-
keyExtractor?: (item: ItemT, index: number) => string;
|
|
21
|
-
getItemLayout?: (data: ReadonlyArray<ISection<ItemT>> | null, index: number) => IItemLayout;
|
|
22
|
-
stickySectionHeadersEnabled?: boolean;
|
|
23
|
-
extraData?: unknown;
|
|
24
|
-
onEndReached?: (info: {
|
|
25
|
-
distanceFromEnd: number;
|
|
26
|
-
}) => void;
|
|
27
|
-
onEndReachedThreshold?: number;
|
|
28
|
-
onStartReached?: (info: {
|
|
29
|
-
distanceFromStart: number;
|
|
30
|
-
}) => void;
|
|
31
|
-
onStartReachedThreshold?: number;
|
|
32
|
-
onRefresh?: () => void;
|
|
33
|
-
refreshing?: boolean | null;
|
|
34
|
-
progressViewOffset?: number;
|
|
35
|
-
initialNumToRender?: number;
|
|
36
|
-
initialScrollIndex?: number;
|
|
37
|
-
maxToRenderPerBatch?: number;
|
|
38
|
-
updateCellsBatchingPeriod?: number;
|
|
39
|
-
windowSize?: number;
|
|
40
|
-
inverted?: boolean;
|
|
41
|
-
maintainVisibleContentPosition?: {
|
|
42
|
-
minIndexForVisible: number;
|
|
43
|
-
autoscrollToTopThreshold?: number;
|
|
44
|
-
};
|
|
45
|
-
onScroll?: (event: ISymbioteEvent) => void;
|
|
46
|
-
onScrollBeginDrag?: (event: ISymbioteEvent) => void;
|
|
47
|
-
onScrollEndDrag?: (event: ISymbioteEvent) => void;
|
|
48
|
-
onMomentumScrollBegin?: (event: ISymbioteEvent) => void;
|
|
49
|
-
onMomentumScrollEnd?: (event: ISymbioteEvent) => void;
|
|
50
|
-
scrollEventThrottle?: number;
|
|
51
|
-
keyboardShouldPersistTaps?: boolean | 'always' | 'never' | 'handled';
|
|
52
|
-
keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';
|
|
53
|
-
removeClippedSubviews?: boolean;
|
|
54
|
-
nestedScrollEnabled?: boolean;
|
|
55
|
-
style?: IStyleProp<IViewStyle>;
|
|
56
|
-
contentContainerStyle?: IStyleProp<IViewStyle>;
|
|
57
|
-
}
|
|
58
|
-
export type IVirtualizedSectionListInputs<ItemT> = Omit<IVirtualizedSectionListProps<ItemT>, 'onEndReached' | 'onStartReached' | 'onRefresh' | 'onAccessibilityAction' | 'onAccessibilityTap' | 'onMagicTap' | 'onAccessibilityEscape'>;
|
|
24
|
+
export type { IVirtualizedSectionListInputs, IVirtualizedSectionListProps, } from './section-list-props';
|
|
59
25
|
export declare class VirtualizedSectionList<ItemT = unknown> extends ListEventsBase implements IVirtualizedSectionListInputs<ItemT>, IVirtualizedSectionListHandle, DoCheck {
|
|
60
26
|
sections: ReadonlyArray<ISection<ItemT>>;
|
|
61
27
|
keyExtractor?: (item: ItemT, index: number) => string;
|
|
@@ -72,7 +38,9 @@ export declare class VirtualizedSectionList<ItemT = unknown> extends ListEventsB
|
|
|
72
38
|
maxToRenderPerBatch?: number;
|
|
73
39
|
updateCellsBatchingPeriod?: number;
|
|
74
40
|
windowSize?: number;
|
|
41
|
+
disableVirtualization?: boolean;
|
|
75
42
|
inverted?: boolean;
|
|
43
|
+
horizontal?: boolean;
|
|
76
44
|
maintainVisibleContentPosition?: {
|
|
77
45
|
minIndexForVisible: number;
|
|
78
46
|
autoscrollToTopThreshold?: number;
|
|
@@ -82,13 +50,18 @@ export declare class VirtualizedSectionList<ItemT = unknown> extends ListEventsB
|
|
|
82
50
|
onScrollEndDrag?: (event: ISymbioteEvent) => void;
|
|
83
51
|
onMomentumScrollBegin?: (event: ISymbioteEvent) => void;
|
|
84
52
|
onMomentumScrollEnd?: (event: ISymbioteEvent) => void;
|
|
53
|
+
onContentSizeChange?: (width: number, height: number) => void;
|
|
85
54
|
scrollEventThrottle?: number;
|
|
86
55
|
keyboardShouldPersistTaps?: boolean | 'always' | 'never' | 'handled';
|
|
87
56
|
keyboardDismissMode?: 'none' | 'on-drag' | 'interactive';
|
|
88
57
|
removeClippedSubviews?: boolean;
|
|
89
58
|
nestedScrollEnabled?: boolean;
|
|
59
|
+
stickyHeaderHiddenOnScroll?: boolean;
|
|
60
|
+
innerViewRef?: IInnerViewRef;
|
|
90
61
|
style?: IStyleProp<IViewStyle>;
|
|
91
62
|
contentContainerStyle?: IStyleProp<IViewStyle>;
|
|
63
|
+
listHeaderComponentStyle?: IStyleProp<IViewStyle>;
|
|
64
|
+
listFooterComponentStyle?: IStyleProp<IViewStyle>;
|
|
92
65
|
testID?: string;
|
|
93
66
|
nativeID?: string;
|
|
94
67
|
private cachedResolvedStyle;
|
|
@@ -96,23 +69,26 @@ export declare class VirtualizedSectionList<ItemT = unknown> extends ListEventsB
|
|
|
96
69
|
sectionItemDir?: VSectionItemDirective<ItemT>;
|
|
97
70
|
sectionHeaderDir?: VSectionHeaderDirective<ItemT>;
|
|
98
71
|
sectionFooterDir?: VSectionFooterDirective<ItemT>;
|
|
99
|
-
sectionSeparatorDir?: VSectionSeparatorDirective
|
|
72
|
+
sectionSeparatorDir?: VSectionSeparatorDirective<ItemT>;
|
|
100
73
|
listHeaderDir?: VListHeaderDirective;
|
|
101
74
|
listFooterDir?: VListFooterDirective;
|
|
102
75
|
listEmptyDir?: VListEmptyDirective;
|
|
103
76
|
itemSeparatorDir?: VListSeparatorDirective<ItemT>;
|
|
77
|
+
cellDir?: VListCellDirective;
|
|
78
|
+
cellRendererTemplate?: TemplateRef<IVListCellContext>;
|
|
79
|
+
get cellRendererTpl(): TemplateRef<IVListCellContext> | undefined;
|
|
104
80
|
private list?;
|
|
105
81
|
private readonly elementRef;
|
|
106
|
-
flatEntries:
|
|
82
|
+
flatEntries: IEntry<ItemT>[];
|
|
107
83
|
stickyHeaderIndices: number[] | undefined;
|
|
84
|
+
readonly board: import("@symbiote-native/components").ISeparatorBoard<Record<string, unknown>>;
|
|
108
85
|
private headerIndices;
|
|
109
86
|
private lastSectionsRef;
|
|
110
|
-
private lastHasSectionSeparator;
|
|
111
87
|
private readonly cdr;
|
|
112
88
|
ngDoCheck(): void;
|
|
113
|
-
getEntry: (_source: unknown, index: number) =>
|
|
89
|
+
getEntry: (_source: unknown, index: number) => IEntry<ItemT>;
|
|
114
90
|
getEntryCount: () => number;
|
|
115
|
-
entryKeyExtractor: (entry:
|
|
91
|
+
entryKeyExtractor: (entry: IEntry<ItemT>) => string;
|
|
116
92
|
private cachedEntryItemLayout?;
|
|
117
93
|
private lastGetItemLayout?;
|
|
118
94
|
get entryItemLayout(): ((data: unknown, index: number) => IItemLayout) | undefined;
|
|
@@ -124,10 +100,11 @@ export declare class VirtualizedSectionList<ItemT = unknown> extends ListEventsB
|
|
|
124
100
|
}) => void) | undefined;
|
|
125
101
|
get resolvedOnRefresh(): (() => void) | undefined;
|
|
126
102
|
private isEntry;
|
|
127
|
-
entryKind(value: unknown):
|
|
103
|
+
entryKind(value: unknown): IEntry<ItemT>['kind'] | 'unknown';
|
|
128
104
|
sectionContextOf(value: unknown): IVSectionContext<ItemT> | undefined;
|
|
129
105
|
itemContextOf(value: unknown, separators: ISeparators): IVSectionItemContext<ItemT> | undefined;
|
|
130
|
-
|
|
106
|
+
private slotFor;
|
|
107
|
+
cellPlanOf(value: unknown, index: number): ICellPlan<ItemT> | undefined;
|
|
131
108
|
scrollToLocation(params: {
|
|
132
109
|
sectionIndex: number;
|
|
133
110
|
itemIndex: number;
|
|
@@ -136,11 +113,13 @@ export declare class VirtualizedSectionList<ItemT = unknown> extends ListEventsB
|
|
|
136
113
|
animated?: boolean;
|
|
137
114
|
}): void;
|
|
138
115
|
flashScrollIndicators(): void;
|
|
139
|
-
getNativeScrollRef():
|
|
116
|
+
getNativeScrollRef(): ISymbioteNode | null;
|
|
140
117
|
getScrollableNode(): IScrollViewHandle | null;
|
|
141
118
|
getScrollResponder(): IScrollViewHandle | null;
|
|
142
119
|
getScrollNode(): ISymbioteNode | null;
|
|
120
|
+
getScrollRef(): ISymbioteNode | null;
|
|
143
121
|
recordInteraction(): void;
|
|
122
|
+
setNativeProps(props: Record<string, unknown>): void;
|
|
144
123
|
static ɵfac: i0.ɵɵFactoryDeclaration<VirtualizedSectionList<any>, never>;
|
|
145
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<VirtualizedSectionList<any>, "VirtualizedSectionList", never, { "sections": { "alias": "sections"; "required": true; }; "keyExtractor": { "alias": "keyExtractor"; "required": false; }; "getItemLayout": { "alias": "getItemLayout"; "required": false; }; "stickySectionHeadersEnabled": { "alias": "stickySectionHeadersEnabled"; "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; }; "refreshRequested": { "alias": "refreshRequested"; "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; }; "inverted": { "alias": "inverted"; "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; }; }, {}, ["sectionItemDir", "sectionHeaderDir", "sectionFooterDir", "sectionSeparatorDir", "listHeaderDir", "listFooterDir", "listEmptyDir", "itemSeparatorDir"], never, true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
|
|
124
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VirtualizedSectionList<any>, "VirtualizedSectionList", never, { "sections": { "alias": "sections"; "required": true; }; "keyExtractor": { "alias": "keyExtractor"; "required": false; }; "getItemLayout": { "alias": "getItemLayout"; "required": false; }; "stickySectionHeadersEnabled": { "alias": "stickySectionHeadersEnabled"; "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; }; "refreshRequested": { "alias": "refreshRequested"; "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; }; "inverted": { "alias": "inverted"; "required": false; }; "horizontal": { "alias": "horizontal"; "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; }; "cellRendererTemplate": { "alias": "cellRendererTemplate"; "required": false; }; }, {}, ["sectionItemDir", "sectionHeaderDir", "sectionFooterDir", "sectionSeparatorDir", "listHeaderDir", "listFooterDir", "listEmptyDir", "itemSeparatorDir", "cellDir"], never, true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
|
|
146
125
|
}
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
// Flattening, entry keying and `scrollToLocation` are shared from `@symbiote-native/components`
|
|
3
3
|
// This file is the Angular lifecycle and the per-entry template dispatch
|
|
4
4
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, Input, ViewChild, inject, } from '@angular/core';
|
|
5
|
-
import { flattenSections, resolveStickySectionHeaders,
|
|
5
|
+
import { cellGapsFor, createSeparatorBoard, flattenSections, resolveStickySectionHeaders, resolveScrollLocation, SECTION_ENTRY_KIND, SEPARATOR_GAP_KIND, SEPARATOR_SIDE, sectionEntryKey, } from '@symbiote-native/components';
|
|
6
6
|
import { Platform, dlog, } from '@symbiote-native/engine';
|
|
7
|
-
import { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
|
|
7
|
+
import { VirtualizedList, VListCellDirective, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
|
|
8
8
|
import { VListOutletDirective } from '../virtualized-list/directives';
|
|
9
9
|
import { ListEventsBase } from '../virtualized-list/list-events';
|
|
10
10
|
import { provideGateDemand } from '../../gate-demand';
|
|
11
11
|
import { stableAnchorStyle, SymbioteStyleInputDirective, } from '../../primitives';
|
|
12
12
|
import { VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './directives';
|
|
13
|
+
import { VSectionCellDirective } from './section-cell';
|
|
13
14
|
import { VIRTUALIZED_SECTION_LIST_TEMPLATE } from './section-list-template';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "../../primitives/shared";
|
|
@@ -21,31 +22,30 @@ export class VirtualizedSectionList extends ListEventsBase {
|
|
|
21
22
|
this.elementRef = inject(ElementRef);
|
|
22
23
|
this.flatEntries = [];
|
|
23
24
|
this.stickyHeaderIndices = undefined;
|
|
25
|
+
this.board = createSeparatorBoard();
|
|
24
26
|
// Flat positions of every section header, so `scrollToLocation` skips re-deriving the layout
|
|
25
27
|
this.headerIndices = [];
|
|
26
|
-
// Memo
|
|
28
|
+
// Memo guard, the inner list marks for check on every scroll tick and re-runs `ngDoCheck`
|
|
27
29
|
this.lastSectionsRef = null;
|
|
28
|
-
this.lastHasSectionSeparator = false;
|
|
29
30
|
this.cdr = inject(ChangeDetectorRef);
|
|
30
31
|
// Stable arrow fields, so the bindings to the inner list keep a constant identity
|
|
31
32
|
this.getEntry = (_source, index) => this.flatEntries[index];
|
|
32
33
|
this.getEntryCount = () => this.flatEntries.length;
|
|
33
|
-
this.entryKeyExtractor = (entry
|
|
34
|
+
this.entryKeyExtractor = (entry) => sectionEntryKey(entry, this.keyExtractor);
|
|
34
35
|
}
|
|
35
36
|
get resolvedStyle() {
|
|
36
37
|
this.cachedResolvedStyle = stableAnchorStyle(this.elementRef, this.style, this.cachedResolvedStyle);
|
|
37
38
|
return this.cachedResolvedStyle;
|
|
38
39
|
}
|
|
40
|
+
get cellRendererTpl() {
|
|
41
|
+
return this.cellRendererTemplate ?? this.cellDir?.templateRef;
|
|
42
|
+
}
|
|
39
43
|
ngDoCheck() {
|
|
40
|
-
|
|
41
|
-
if (this.sections === this.lastSectionsRef &&
|
|
42
|
-
hasSectionSeparator === this.lastHasSectionSeparator) {
|
|
44
|
+
if (this.sections === this.lastSectionsRef)
|
|
43
45
|
return;
|
|
44
|
-
}
|
|
45
46
|
this.lastSectionsRef = this.sections;
|
|
46
|
-
this.lastHasSectionSeparator = hasSectionSeparator;
|
|
47
47
|
const sections = this.sections ?? [];
|
|
48
|
-
const { entries, headerIndices } = flattenSections(sections
|
|
48
|
+
const { entries, headerIndices } = flattenSections(sections);
|
|
49
49
|
this.flatEntries = entries;
|
|
50
50
|
this.headerIndices = headerIndices;
|
|
51
51
|
// RN sticks section headers by default only on iOS
|
|
@@ -104,34 +104,43 @@ export class VirtualizedSectionList extends ListEventsBase {
|
|
|
104
104
|
separators,
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
|
-
// The
|
|
108
|
-
//
|
|
109
|
-
|
|
107
|
+
// The separator template for a gap: the section one, or the item one where a section's own
|
|
108
|
+
// template beats the list's
|
|
109
|
+
slotFor(gap, side) {
|
|
110
|
+
if (gap.props === undefined)
|
|
111
|
+
return { template: undefined, gap, side };
|
|
112
|
+
const template = gap.kind === SEPARATOR_GAP_KIND.section
|
|
113
|
+
? this.sectionSeparatorDir?.templateRef
|
|
114
|
+
: (gap.props.section.separator ?? this.itemSeparatorDir?.templateRef);
|
|
115
|
+
return { template, gap, side };
|
|
116
|
+
}
|
|
117
|
+
cellPlanOf(value, index) {
|
|
118
|
+
if (!this.isEntry(value) || value.kind !== SECTION_ENTRY_KIND.item)
|
|
119
|
+
return undefined;
|
|
120
|
+
const gaps = cellGapsFor(this.flatEntries, index);
|
|
121
|
+
const leading = this.slotFor(gaps.leading, SEPARATOR_SIDE.leading);
|
|
122
|
+
const trailing = this.slotFor(gaps.trailing, SEPARATOR_SIDE.trailing);
|
|
123
|
+
const previous = this.flatEntries[index - 1];
|
|
124
|
+
const isInverted = this.inverted === true;
|
|
110
125
|
return {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
: undefined,
|
|
126
|
+
cellKey: this.entryKeyExtractor(value),
|
|
127
|
+
prevCellKey: previous === undefined ? undefined : this.entryKeyExtractor(previous),
|
|
128
|
+
hasLeading: leading.template !== undefined,
|
|
129
|
+
hasTrailing: trailing.template !== undefined,
|
|
130
|
+
itemTemplate: value.section.item ?? this.sectionItemDir?.templateRef,
|
|
131
|
+
first: isInverted ? trailing : leading,
|
|
132
|
+
second: isInverted ? leading : trailing,
|
|
119
133
|
};
|
|
120
134
|
}
|
|
121
135
|
scrollToLocation(params) {
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
136
|
+
const target = resolveScrollLocation(this.headerIndices, this.stickyHeaderIndices, params);
|
|
137
|
+
if (target === undefined) {
|
|
124
138
|
dlog(`Angular VirtualizedSectionList scrollToLocation: section ${params.sectionIndex} out of range`);
|
|
125
139
|
return;
|
|
126
140
|
}
|
|
127
141
|
dlog(`Angular VirtualizedSectionList scrollToLocation section=${params.sectionIndex} ` +
|
|
128
|
-
`item=${params.itemIndex} -> flat ${
|
|
129
|
-
this.list?.scrollToIndex(
|
|
130
|
-
index: flatIndex,
|
|
131
|
-
viewOffset: params.viewOffset,
|
|
132
|
-
viewPosition: params.viewPosition,
|
|
133
|
-
animated: params.animated,
|
|
134
|
-
});
|
|
142
|
+
`item=${params.itemIndex} -> flat ${target.index}`);
|
|
143
|
+
this.list?.scrollToIndex(target);
|
|
135
144
|
}
|
|
136
145
|
flashScrollIndicators() {
|
|
137
146
|
this.list?.flashScrollIndicators();
|
|
@@ -148,11 +157,17 @@ export class VirtualizedSectionList extends ListEventsBase {
|
|
|
148
157
|
getScrollNode() {
|
|
149
158
|
return this.list?.getScrollNode() ?? null;
|
|
150
159
|
}
|
|
160
|
+
getScrollRef() {
|
|
161
|
+
return this.list?.getScrollRef() ?? null;
|
|
162
|
+
}
|
|
151
163
|
recordInteraction() {
|
|
152
164
|
this.list?.recordInteraction();
|
|
153
165
|
}
|
|
166
|
+
setNativeProps(props) {
|
|
167
|
+
this.list?.setNativeProps(props);
|
|
168
|
+
}
|
|
154
169
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedSectionList, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
155
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: VirtualizedSectionList, isStandalone: true, selector: "VirtualizedSectionList", inputs: { sections: "sections", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", stickySectionHeadersEnabled: "stickySectionHeadersEnabled", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", refreshRequested: "refreshRequested", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", inverted: "inverted", 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" }, queries: [{ propertyName: "sectionItemDir", first: true, predicate: VSectionItemDirective, descendants: true }, { propertyName: "sectionHeaderDir", first: true, predicate: VSectionHeaderDirective, descendants: true }, { propertyName: "sectionFooterDir", first: true, predicate: VSectionFooterDirective, descendants: true }, { propertyName: "sectionSeparatorDir", first: true, predicate: VSectionSeparatorDirective, descendants: true }, { propertyName: "listHeaderDir", first: true, predicate: VListHeaderDirective, descendants: true }, { propertyName: "listFooterDir", first: true, predicate: VListFooterDirective, descendants: true }, { propertyName: "listEmptyDir", first: true, predicate: VListEmptyDirective, descendants: true }, { propertyName: "itemSeparatorDir", first: true, predicate: VListSeparatorDirective, descendants: true }], viewQueries: [{ propertyName: "list", first: true, predicate: VirtualizedList, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: "\n <VirtualizedList\n [data]=\"flatEntries\"\n [getItem]=\"getEntry\"\n [getItemCount]=\"getEntryCount\"\n [keyExtractor]=\"entryKeyExtractor\"\n [getItemLayout]=\"entryItemLayout\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\n [extraData]=\"extraData\"\n [inverted]=\"inverted\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n [refreshRequested]=\"refreshRequested ?? refresh.observed\"\n (refresh)=\"resolvedOnRefresh?.()\"\n (endReached)=\"resolvedOnEndReached?.($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"resolvedOnStartReached?.($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [maintainVisibleContentPosition]=\"maintainVisibleContentPosition\"\n [onScroll]=\"onScroll\"\n [onScrollBeginDrag]=\"onScrollBeginDrag\"\n [onScrollEndDrag]=\"onScrollEndDrag\"\n [onMomentumScrollBegin]=\"onMomentumScrollBegin\"\n [onMomentumScrollEnd]=\"onMomentumScrollEnd\"\n [scrollEventThrottle]=\"scrollEventThrottle\"\n [keyboardShouldPersistTaps]=\"keyboardShouldPersistTaps\"\n [keyboardDismissMode]=\"keyboardDismissMode\"\n [removeClippedSubviews]=\"removeClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n \n [accessible]=\"accessible\"\n [accessibilityLabel]=\"accessibilityLabel\"\n [accessibilityHint]=\"accessibilityHint\"\n [accessibilityRole]=\"accessibilityRole\"\n [accessibilityState]=\"accessibilityState\"\n [accessibilityValue]=\"accessibilityValue\"\n [accessibilityActions]=\"accessibilityActions\"\n [accessibilityLabelledBy]=\"accessibilityLabelledBy\"\n [importantForAccessibility]=\"importantForAccessibility\"\n [accessibilityLiveRegion]=\"accessibilityLiveRegion\"\n [screenReaderFocusable]=\"screenReaderFocusable\"\n [accessibilityViewIsModal]=\"accessibilityViewIsModal\"\n [accessibilityElementsHidden]=\"accessibilityElementsHidden\"\n [accessibilityIgnoresInvertColors]=\"accessibilityIgnoresInvertColors\"\n [accessibilityLanguage]=\"accessibilityLanguage\"\n [accessibilityRespondsToUserInteraction]=\"accessibilityRespondsToUserInteraction\"\n [accessibilityShowsLargeContentViewer]=\"accessibilityShowsLargeContentViewer\"\n [accessibilityLargeContentTitle]=\"accessibilityLargeContentTitle\"\n (accessibilityAction)=\"accessibilityAction.emit($event)\"\n (accessibilityTap)=\"accessibilityTap.emit($event)\"\n (magicTap)=\"magicTap.emit($event)\"\n (accessibilityEscape)=\"accessibilityEscape.emit($event)\"\n [role]=\"role\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledBy\"\n [aria-live]=\"ariaLive\"\n [aria-hidden]=\"ariaHidden\"\n [aria-busy]=\"ariaBusy\"\n [aria-checked]=\"ariaChecked\"\n [aria-disabled]=\"ariaDisabled\"\n [aria-expanded]=\"ariaExpanded\"\n [aria-selected]=\"ariaSelected\"\n [aria-modal]=\"ariaModal\"\n [aria-valuemax]=\"ariaValueMax\"\n [aria-valuemin]=\"ariaValueMin\"\n [aria-valuenow]=\"ariaValueNow\"\n [aria-valuetext]=\"ariaValueText\"\n\n >\n <!-- The single synthesized cell template: dispatch per flattened entry tag -->\n <ng-template vListItem let-entry let-separators=\"separators\">\n @switch (entryKind(entry)) {\n @case ('header') {\n <ng-container\n [vListOutlet]=\"sectionHeaderDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('footer') {\n <ng-container\n [vListOutlet]=\"sectionFooterDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('section-separator') {\n <ng-container\n [vListOutlet]=\"sectionSeparatorDir?.templateRef\"\n ></ng-container>\n }\n @case ('item') {\n <ng-container\n [vListOutlet]=\"sectionItemDir?.templateRef\"\n [vListOutletContext]=\"itemContextOf(entry, separators)\"\n ></ng-container>\n }\n }\n </ng-template>\n\n <!-- List-level slots: forward the app's directives to the inner list -->\n @if (listHeaderDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"listHeaderDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listFooterDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"listFooterDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listEmptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"listEmptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n <!-- Item separator: unwrap each flattened entry back to its item -->\n @if (itemSeparatorDir !== undefined) {\n <ng-template\n vListSeparator\n let-highlighted\n let-leadingItem=\"leadingItem\"\n let-trailingItem=\"trailingItem\"\n >\n <ng-container\n [vListOutlet]=\"itemSeparatorDir.templateRef\"\n [vListOutletContext]=\"\n itemSeparatorContextOf(highlighted, leadingItem, trailingItem)\n \"\n ></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n", isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList" }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }], viewProviders: [provideGateDemand(() => VirtualizedSectionList)], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
170
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: VirtualizedSectionList, isStandalone: true, selector: "VirtualizedSectionList", inputs: { sections: "sections", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", stickySectionHeadersEnabled: "stickySectionHeadersEnabled", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", refreshRequested: "refreshRequested", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", disableVirtualization: "disableVirtualization", inverted: "inverted", horizontal: "horizontal", 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", cellRendererTemplate: "cellRendererTemplate" }, queries: [{ propertyName: "sectionItemDir", first: true, predicate: VSectionItemDirective, descendants: true }, { propertyName: "sectionHeaderDir", first: true, predicate: VSectionHeaderDirective, descendants: true }, { propertyName: "sectionFooterDir", first: true, predicate: VSectionFooterDirective, descendants: true }, { propertyName: "sectionSeparatorDir", first: true, predicate: VSectionSeparatorDirective, descendants: true }, { propertyName: "listHeaderDir", first: true, predicate: VListHeaderDirective, descendants: true }, { propertyName: "listFooterDir", first: true, predicate: VListFooterDirective, descendants: true }, { propertyName: "listEmptyDir", first: true, predicate: VListEmptyDirective, descendants: true }, { propertyName: "itemSeparatorDir", first: true, predicate: VListSeparatorDirective, descendants: true }, { propertyName: "cellDir", first: true, predicate: VListCellDirective, descendants: true }], viewQueries: [{ propertyName: "list", first: true, predicate: VirtualizedList, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: "\n <VirtualizedList\n [data]=\"flatEntries\"\n [getItem]=\"getEntry\"\n [getItemCount]=\"getEntryCount\"\n [keyExtractor]=\"entryKeyExtractor\"\n [getItemLayout]=\"entryItemLayout\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\n [extraData]=\"extraData\"\n [inverted]=\"inverted\"\n [horizontal]=\"horizontal\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n [refreshRequested]=\"refreshRequested ?? refresh.observed\"\n (refresh)=\"resolvedOnRefresh?.()\"\n (endReached)=\"resolvedOnEndReached?.($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"resolvedOnStartReached?.($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [disableVirtualization]=\"disableVirtualization\"\n [maintainVisibleContentPosition]=\"maintainVisibleContentPosition\"\n [onScroll]=\"onScroll\"\n [onScrollBeginDrag]=\"onScrollBeginDrag\"\n [onScrollEndDrag]=\"onScrollEndDrag\"\n [onMomentumScrollBegin]=\"onMomentumScrollBegin\"\n [onMomentumScrollEnd]=\"onMomentumScrollEnd\"\n [onContentSizeChange]=\"onContentSizeChange\"\n [scrollEventThrottle]=\"scrollEventThrottle\"\n [keyboardShouldPersistTaps]=\"keyboardShouldPersistTaps\"\n [keyboardDismissMode]=\"keyboardDismissMode\"\n [removeClippedSubviews]=\"removeClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [stickyHeaderHiddenOnScroll]=\"stickyHeaderHiddenOnScroll\"\n [innerViewRef]=\"innerViewRef\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\n [listHeaderComponentStyle]=\"listHeaderComponentStyle\"\n [listFooterComponentStyle]=\"listFooterComponentStyle\"\n [cellRendererTemplate]=\"cellRendererTpl\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n \n [accessible]=\"accessible\"\n [accessibilityLabel]=\"accessibilityLabel\"\n [accessibilityHint]=\"accessibilityHint\"\n [accessibilityRole]=\"accessibilityRole\"\n [accessibilityState]=\"accessibilityState\"\n [accessibilityValue]=\"accessibilityValue\"\n [accessibilityActions]=\"accessibilityActions\"\n [accessibilityLabelledBy]=\"accessibilityLabelledBy\"\n [importantForAccessibility]=\"importantForAccessibility\"\n [accessibilityLiveRegion]=\"accessibilityLiveRegion\"\n [screenReaderFocusable]=\"screenReaderFocusable\"\n [accessibilityViewIsModal]=\"accessibilityViewIsModal\"\n [accessibilityElementsHidden]=\"accessibilityElementsHidden\"\n [accessibilityIgnoresInvertColors]=\"accessibilityIgnoresInvertColors\"\n [accessibilityLanguage]=\"accessibilityLanguage\"\n [accessibilityRespondsToUserInteraction]=\"accessibilityRespondsToUserInteraction\"\n [accessibilityShowsLargeContentViewer]=\"accessibilityShowsLargeContentViewer\"\n [accessibilityLargeContentTitle]=\"accessibilityLargeContentTitle\"\n (accessibilityAction)=\"accessibilityAction.emit($event)\"\n (accessibilityTap)=\"accessibilityTap.emit($event)\"\n (magicTap)=\"magicTap.emit($event)\"\n (accessibilityEscape)=\"accessibilityEscape.emit($event)\"\n [role]=\"role\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledBy\"\n [aria-live]=\"ariaLive\"\n [aria-hidden]=\"ariaHidden\"\n [aria-busy]=\"ariaBusy\"\n [aria-checked]=\"ariaChecked\"\n [aria-disabled]=\"ariaDisabled\"\n [aria-expanded]=\"ariaExpanded\"\n [aria-selected]=\"ariaSelected\"\n [aria-modal]=\"ariaModal\"\n [aria-valuemax]=\"ariaValueMax\"\n [aria-valuemin]=\"ariaValueMin\"\n [aria-valuenow]=\"ariaValueNow\"\n [aria-valuetext]=\"ariaValueText\"\n\n >\n <!-- The single synthesized cell template: dispatch per flattened entry tag -->\n <ng-template vListItem let-entry let-index=\"index\">\n @switch (entryKind(entry)) {\n @case ('header') {\n <ng-container\n [vListOutlet]=\"sectionHeaderDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('footer') {\n <ng-container\n [vListOutlet]=\"sectionFooterDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('item') {\n @let plan = cellPlanOf(entry, index);\n @if (plan !== undefined) {\n <ng-container\n vSectionCell\n #cell=\"vSectionCell\"\n [board]=\"board\"\n [cellKey]=\"plan.cellKey\"\n [prevCellKey]=\"plan.prevCellKey\"\n [hasLeading]=\"plan.hasLeading\"\n [hasTrailing]=\"plan.hasTrailing\"\n >\n <ng-container\n [vListOutlet]=\"plan.first.template\"\n [vListOutletContext]=\"cell.contextOf(plan.first)\"\n ></ng-container>\n <ng-container\n [vListOutlet]=\"plan.itemTemplate\"\n [vListOutletContext]=\"itemContextOf(entry, cell.separators)\"\n ></ng-container>\n <ng-container\n [vListOutlet]=\"plan.second.template\"\n [vListOutletContext]=\"cell.contextOf(plan.second)\"\n ></ng-container>\n </ng-container>\n }\n }\n }\n </ng-template>\n\n <!-- List-level slots: forward the app's directives to the inner list -->\n @if (listHeaderDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"listHeaderDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listFooterDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"listFooterDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listEmptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"listEmptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n", isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList" }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext", "vListOutletComponent"] }, { kind: "directive", type: VSectionCellDirective, selector: "[vSectionCell]", inputs: ["board", "cellKey", "prevCellKey", "hasLeading", "hasTrailing"], exportAs: ["vSectionCell"] }], viewProviders: [provideGateDemand(() => VirtualizedSectionList)], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
156
171
|
}
|
|
157
172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedSectionList, decorators: [{
|
|
158
173
|
type: Component,
|
|
@@ -169,8 +184,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
169
184
|
VListHeaderDirective,
|
|
170
185
|
VListFooterDirective,
|
|
171
186
|
VListEmptyDirective,
|
|
172
|
-
VListSeparatorDirective,
|
|
173
187
|
VListOutletDirective,
|
|
188
|
+
VSectionCellDirective,
|
|
174
189
|
],
|
|
175
190
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
176
191
|
template: VIRTUALIZED_SECTION_LIST_TEMPLATE,
|
|
@@ -206,8 +221,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
206
221
|
type: Input
|
|
207
222
|
}], windowSize: [{
|
|
208
223
|
type: Input
|
|
224
|
+
}], disableVirtualization: [{
|
|
225
|
+
type: Input
|
|
209
226
|
}], inverted: [{
|
|
210
227
|
type: Input
|
|
228
|
+
}], horizontal: [{
|
|
229
|
+
type: Input
|
|
211
230
|
}], maintainVisibleContentPosition: [{
|
|
212
231
|
type: Input
|
|
213
232
|
}], onScroll: [{
|
|
@@ -220,6 +239,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
220
239
|
type: Input
|
|
221
240
|
}], onMomentumScrollEnd: [{
|
|
222
241
|
type: Input
|
|
242
|
+
}], onContentSizeChange: [{
|
|
243
|
+
type: Input
|
|
223
244
|
}], scrollEventThrottle: [{
|
|
224
245
|
type: Input
|
|
225
246
|
}], keyboardShouldPersistTaps: [{
|
|
@@ -230,10 +251,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
230
251
|
type: Input
|
|
231
252
|
}], nestedScrollEnabled: [{
|
|
232
253
|
type: Input
|
|
254
|
+
}], stickyHeaderHiddenOnScroll: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], innerViewRef: [{
|
|
257
|
+
type: Input
|
|
233
258
|
}], style: [{
|
|
234
259
|
type: Input
|
|
235
260
|
}], contentContainerStyle: [{
|
|
236
261
|
type: Input
|
|
262
|
+
}], listHeaderComponentStyle: [{
|
|
263
|
+
type: Input
|
|
264
|
+
}], listFooterComponentStyle: [{
|
|
265
|
+
type: Input
|
|
237
266
|
}], testID: [{
|
|
238
267
|
type: Input
|
|
239
268
|
}], nativeID: [{
|
|
@@ -262,6 +291,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
262
291
|
}], itemSeparatorDir: [{
|
|
263
292
|
type: ContentChild,
|
|
264
293
|
args: [VListSeparatorDirective]
|
|
294
|
+
}], cellDir: [{
|
|
295
|
+
type: ContentChild,
|
|
296
|
+
args: [VListCellDirective]
|
|
297
|
+
}], cellRendererTemplate: [{
|
|
298
|
+
type: Input
|
|
265
299
|
}], list: [{
|
|
266
300
|
type: ViewChild,
|
|
267
301
|
args: [VirtualizedList]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,gGAAgG;AAChG,yEAAyE;AAEzE,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,KAAK,EACL,SAAS,EACT,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type OnChanges, type OnDestroy, type SimpleChanges, type TemplateRef } from '@angular/core';
|
|
2
|
+
import { type ICellSeparatorState, type ISeparatorBoard, type ISeparatorGap, type ISeparators, type ISeparatorSide } from '@symbiote-native/components';
|
|
3
|
+
import type { IVListSeparatorContext } from '../virtualized-list';
|
|
4
|
+
import type { ISection } from './directives';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export type ISeparatorSlot<ItemT> = {
|
|
7
|
+
template: TemplateRef<IVListSeparatorContext<ItemT>> | undefined;
|
|
8
|
+
gap: ISeparatorGap<ItemT, ISection<ItemT>>;
|
|
9
|
+
side: ISeparatorSide;
|
|
10
|
+
};
|
|
11
|
+
export declare function separatorContextOf<ItemT>(slot: ISeparatorSlot<ItemT>, state: ICellSeparatorState<Record<string, unknown>>): IVListSeparatorContext<ItemT> | undefined;
|
|
12
|
+
export declare class VSectionCellDirective implements OnChanges, OnDestroy {
|
|
13
|
+
board: ISeparatorBoard<Record<string, unknown>>;
|
|
14
|
+
cellKey: string;
|
|
15
|
+
prevCellKey?: string;
|
|
16
|
+
hasLeading: boolean;
|
|
17
|
+
hasTrailing: boolean;
|
|
18
|
+
private readonly cdr;
|
|
19
|
+
private unsubscribe;
|
|
20
|
+
private subscribedKey;
|
|
21
|
+
private cachedSeparators;
|
|
22
|
+
get separators(): ISeparators;
|
|
23
|
+
contextOf<ItemT>(slot: ISeparatorSlot<ItemT>): IVListSeparatorContext<ItemT> | undefined;
|
|
24
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
25
|
+
ngOnDestroy(): void;
|
|
26
|
+
private detach;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VSectionCellDirective, never>;
|
|
28
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<VSectionCellDirective, "[vSectionCell]", ["vSectionCell"], { "board": { "alias": "board"; "required": true; }; "cellKey": { "alias": "cellKey"; "required": true; }; "prevCellKey": { "alias": "prevCellKey"; "required": false; }; "hasLeading": { "alias": "hasLeading"; "required": false; }; "hasTrailing": { "alias": "hasTrailing"; "required": false; }; }, {}, never, never, true, never>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// An item cell with its separators around it, as in RN's `ItemWithSeparator`
|
|
2
|
+
// The state of those separators lives in a board shared by all cells, т.к. `highlight()` also
|
|
3
|
+
// lights the previous cell's one, this directive ties one cell to its key in that board
|
|
4
|
+
import { ChangeDetectorRef, Directive, Input, inject, } from '@angular/core';
|
|
5
|
+
import { createCellSeparators, SEPARATOR_SIDE, } from '@symbiote-native/components';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
// The separator props RN passes, the app's `updateProps` overrides laid over them
|
|
8
|
+
export function separatorContextOf(slot, state) {
|
|
9
|
+
if (slot.template === undefined || slot.gap.props === undefined)
|
|
10
|
+
return undefined;
|
|
11
|
+
const isLeading = slot.side === SEPARATOR_SIDE.leading;
|
|
12
|
+
const override = isLeading ? state.leadingOverride : state.trailingOverride;
|
|
13
|
+
const isHighlighted = isLeading
|
|
14
|
+
? state.leadingHighlighted
|
|
15
|
+
: state.trailingHighlighted;
|
|
16
|
+
const bag = {
|
|
17
|
+
$implicit: isHighlighted,
|
|
18
|
+
highlighted: isHighlighted,
|
|
19
|
+
...slot.gap.props,
|
|
20
|
+
...override,
|
|
21
|
+
};
|
|
22
|
+
return { ...bag, props: bag };
|
|
23
|
+
}
|
|
24
|
+
export class VSectionCellDirective {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.hasLeading = false;
|
|
27
|
+
this.hasTrailing = false;
|
|
28
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
29
|
+
}
|
|
30
|
+
get separators() {
|
|
31
|
+
this.cachedSeparators ??= createCellSeparators(this.board, () => ({
|
|
32
|
+
cellKey: this.cellKey,
|
|
33
|
+
prevCellKey: this.prevCellKey,
|
|
34
|
+
has: { leading: this.hasLeading, trailing: this.hasTrailing },
|
|
35
|
+
}));
|
|
36
|
+
return this.cachedSeparators;
|
|
37
|
+
}
|
|
38
|
+
contextOf(slot) {
|
|
39
|
+
return separatorContextOf(slot, this.board.read(this.cellKey));
|
|
40
|
+
}
|
|
41
|
+
ngOnChanges(changes) {
|
|
42
|
+
if (changes['cellKey'] === undefined && changes['board'] === undefined)
|
|
43
|
+
return;
|
|
44
|
+
this.detach();
|
|
45
|
+
this.subscribedKey = this.cellKey;
|
|
46
|
+
this.unsubscribe = this.board.subscribe(this.cellKey, () => this.cdr.markForCheck());
|
|
47
|
+
}
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
this.detach();
|
|
50
|
+
}
|
|
51
|
+
// A recycled cell starts clean, as a remounted RN cell does
|
|
52
|
+
detach() {
|
|
53
|
+
this.unsubscribe?.();
|
|
54
|
+
if (this.subscribedKey !== undefined)
|
|
55
|
+
this.board.release(this.subscribedKey);
|
|
56
|
+
this.unsubscribe = undefined;
|
|
57
|
+
this.subscribedKey = undefined;
|
|
58
|
+
}
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VSectionCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
60
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: VSectionCellDirective, isStandalone: true, selector: "[vSectionCell]", inputs: { board: "board", cellKey: "cellKey", prevCellKey: "prevCellKey", hasLeading: "hasLeading", hasTrailing: "hasTrailing" }, exportAs: ["vSectionCell"], usesOnChanges: true, ngImport: i0 }); }
|
|
61
|
+
}
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VSectionCellDirective, decorators: [{
|
|
63
|
+
type: Directive,
|
|
64
|
+
args: [{
|
|
65
|
+
selector: '[vSectionCell]',
|
|
66
|
+
exportAs: 'vSectionCell',
|
|
67
|
+
standalone: true,
|
|
68
|
+
}]
|
|
69
|
+
}], propDecorators: { board: [{
|
|
70
|
+
type: Input,
|
|
71
|
+
args: [{ required: true }]
|
|
72
|
+
}], cellKey: [{
|
|
73
|
+
type: Input,
|
|
74
|
+
args: [{ required: true }]
|
|
75
|
+
}], prevCellKey: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], hasLeading: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], hasTrailing: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=section-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-cell.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/section-cell.ts"],"names":[],"mappings":"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"}
|