@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.
Files changed (179) hide show
  1. package/babel-register-composed.cjs +1 -0
  2. package/build/angular/accessibility-inputs.d.ts +2 -1
  3. package/build/angular/accessibility-inputs.js +4 -1
  4. package/build/angular/accessibility-inputs.js.map +1 -1
  5. package/build/angular/callback-host.d.ts +1 -1
  6. package/build/angular/callback-host.js +57 -9
  7. package/build/angular/callback-host.js.map +1 -1
  8. package/build/angular/components/flat-list/flat-list-handle.d.ts +35 -0
  9. package/build/angular/components/flat-list/flat-list-handle.js +48 -0
  10. package/build/angular/components/flat-list/flat-list-handle.js.map +1 -0
  11. package/build/angular/components/flat-list/flat-list-template.d.ts +1 -1
  12. package/build/angular/components/flat-list/flat-list-template.js +16 -0
  13. package/build/angular/components/flat-list/flat-list-template.js.map +1 -1
  14. package/build/angular/components/flat-list/index.d.ts +6 -30
  15. package/build/angular/components/flat-list/index.js +6 -36
  16. package/build/angular/components/flat-list/index.js.map +1 -1
  17. package/build/angular/components/image-inputs.d.ts +4 -0
  18. package/build/angular/components/image-inputs.js +81 -0
  19. package/build/angular/components/image-inputs.js.map +1 -0
  20. package/build/angular/components/image-props-resolve.d.ts +3 -0
  21. package/build/angular/components/image-props-resolve.js +133 -0
  22. package/build/angular/components/image-props-resolve.js.map +1 -0
  23. package/build/angular/components/image-shared.d.ts +8 -6
  24. package/build/angular/components/image-shared.js +23 -212
  25. package/build/angular/components/image-shared.js.map +1 -1
  26. package/build/angular/components/input-accessory-view-props.d.ts +4 -4
  27. package/build/angular/components/keyboard-avoiding-view/index.d.ts +3 -6
  28. package/build/angular/components/keyboard-avoiding-view/index.js +29 -56
  29. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
  30. package/build/angular/components/layout-conformance-props.d.ts +4 -0
  31. package/build/angular/components/layout-conformance-props.js +2 -0
  32. package/build/angular/components/layout-conformance-props.js.map +1 -0
  33. package/build/angular/components/modal/index.d.ts +6 -5
  34. package/build/angular/components/modal/index.js +17 -2
  35. package/build/angular/components/modal/index.js.map +1 -1
  36. package/build/angular/components/refresh-control-props.d.ts +7 -7
  37. package/build/angular/components/scroll-view-props.d.ts +8 -5
  38. package/build/angular/components/section-list/index.d.ts +17 -8
  39. package/build/angular/components/section-list/index.js +37 -28
  40. package/build/angular/components/section-list/index.js.map +1 -1
  41. package/build/angular/components/touchable-props.d.ts +2 -2
  42. package/build/angular/components/virtualized-list/cell-renderer-context.d.ts +12 -0
  43. package/build/angular/components/virtualized-list/cell-renderer-context.js +16 -0
  44. package/build/angular/components/virtualized-list/cell-renderer-context.js.map +1 -0
  45. package/build/angular/components/virtualized-list/directives.d.ts +26 -6
  46. package/build/angular/components/virtualized-list/directives.js +59 -5
  47. package/build/angular/components/virtualized-list/directives.js.map +1 -1
  48. package/build/angular/components/virtualized-list/index.d.ts +19 -15
  49. package/build/angular/components/virtualized-list/index.js +91 -61
  50. package/build/angular/components/virtualized-list/index.js.map +1 -1
  51. package/build/angular/components/virtualized-list/list-bags.d.ts +5 -1
  52. package/build/angular/components/virtualized-list/list-bags.js +31 -19
  53. package/build/angular/components/virtualized-list/list-bags.js.map +1 -1
  54. package/build/angular/components/virtualized-list/list-effects.d.ts +2 -2
  55. package/build/angular/components/virtualized-list/list-effects.js +17 -27
  56. package/build/angular/components/virtualized-list/list-effects.js.map +1 -1
  57. package/build/angular/components/virtualized-list/list-handle.d.ts +4 -1
  58. package/build/angular/components/virtualized-list/list-handle.js +13 -3
  59. package/build/angular/components/virtualized-list/list-handle.js.map +1 -1
  60. package/build/angular/components/virtualized-list/list-inputs.d.ts +19 -5
  61. package/build/angular/components/virtualized-list/list-inputs.js +47 -4
  62. package/build/angular/components/virtualized-list/list-inputs.js.map +1 -1
  63. package/build/angular/components/virtualized-list/list-props.d.ts +9 -3
  64. package/build/angular/components/virtualized-list/list-rows.d.ts +25 -0
  65. package/build/angular/components/virtualized-list/list-rows.js +25 -0
  66. package/build/angular/components/virtualized-list/list-rows.js.map +1 -0
  67. package/build/angular/components/virtualized-list/list-styles.d.ts +4 -0
  68. package/build/angular/components/virtualized-list/list-styles.js +10 -2
  69. package/build/angular/components/virtualized-list/list-styles.js.map +1 -1
  70. package/build/angular/components/virtualized-list/list-template.d.ts +1 -1
  71. package/build/angular/components/virtualized-list/list-template.js +159 -73
  72. package/build/angular/components/virtualized-list/list-template.js.map +1 -1
  73. package/build/angular/components/virtualized-list/nested-scope.d.ts +6 -0
  74. package/build/angular/components/virtualized-list/nested-scope.js +17 -0
  75. package/build/angular/components/virtualized-list/nested-scope.js.map +1 -0
  76. package/build/angular/components/virtualized-section-list/directives.d.ts +21 -9
  77. package/build/angular/components/virtualized-section-list/directives.js +8 -28
  78. package/build/angular/components/virtualized-section-list/directives.js.map +1 -1
  79. package/build/angular/components/virtualized-section-list/index.d.ts +39 -60
  80. package/build/angular/components/virtualized-section-list/index.js +67 -33
  81. package/build/angular/components/virtualized-section-list/index.js.map +1 -1
  82. package/build/angular/components/virtualized-section-list/section-cell.d.ts +29 -0
  83. package/build/angular/components/virtualized-section-list/section-cell.js +82 -0
  84. package/build/angular/components/virtualized-section-list/section-cell.js.map +1 -0
  85. package/build/angular/components/virtualized-section-list/section-list-props.d.ts +56 -0
  86. package/build/angular/components/virtualized-section-list/section-list-props.js +3 -0
  87. package/build/angular/components/virtualized-section-list/section-list-props.js.map +1 -0
  88. package/build/angular/components/virtualized-section-list/section-list-template.d.ts +1 -1
  89. package/build/angular/components/virtualized-section-list/section-list-template.js +34 -26
  90. package/build/angular/components/virtualized-section-list/section-list-template.js.map +1 -1
  91. package/build/angular/components.d.ts +7 -3
  92. package/build/angular/components.js +2 -1
  93. package/build/angular/components.js.map +1 -1
  94. package/build/angular/element-base.d.ts +17 -1
  95. package/build/angular/element-base.js +33 -1
  96. package/build/angular/element-base.js.map +1 -1
  97. package/build/angular/element-props.d.ts +7 -7
  98. package/build/angular/element-text-input-native.d.ts +27 -0
  99. package/build/angular/element-text-input-native.js +52 -0
  100. package/build/angular/element-text-input-native.js.map +1 -0
  101. package/build/angular/elements-controls.d.ts +8 -2
  102. package/build/angular/elements-controls.js +13 -1
  103. package/build/angular/elements-controls.js.map +1 -1
  104. package/build/angular/elements-layout.d.ts +20 -3
  105. package/build/angular/elements-layout.js +37 -3
  106. package/build/angular/elements-layout.js.map +1 -1
  107. package/build/angular/elements-press.d.ts +10 -3
  108. package/build/angular/elements-press.js +13 -1
  109. package/build/angular/elements-press.js.map +1 -1
  110. package/build/angular/elements.d.ts +3 -3
  111. package/build/angular/elements.js +3 -2
  112. package/build/angular/elements.js.map +1 -1
  113. package/build/angular/index.d.ts +14 -7
  114. package/build/angular/index.js +21 -25
  115. package/build/angular/index.js.map +1 -1
  116. package/build/angular/modules/animated/create-animated-component.d.ts +1 -1
  117. package/build/angular/modules/animated/create-animated-component.js +1 -1
  118. package/build/angular/modules/animated/create-animated-component.js.map +1 -1
  119. package/build/angular/modules/animated/index.d.ts +54 -41
  120. package/build/angular/modules/animated/index.js +2 -26
  121. package/build/angular/modules/animated/index.js.map +1 -1
  122. package/build/angular/modules/app-registry/index.d.ts +3 -3
  123. package/build/angular/modules/app-registry/index.js +2 -2
  124. package/build/angular/modules/app-registry/index.js.map +1 -1
  125. package/build/angular/modules/status-bar/index.d.ts +9 -5
  126. package/build/angular/modules/status-bar/index.js +21 -10
  127. package/build/angular/modules/status-bar/index.js.map +1 -1
  128. package/build/angular/primitives/index.d.ts +4 -0
  129. package/build/angular/primitives/index.js +12 -0
  130. package/build/angular/primitives/index.js.map +1 -1
  131. package/build/angular/services/color-scheme.service.d.ts +1 -1
  132. package/package.json +6 -6
  133. package/src/accessibility-inputs.ts +3 -0
  134. package/src/callback-host.ts +56 -8
  135. package/src/components/flat-list/flat-list-handle.ts +64 -0
  136. package/src/components/flat-list/flat-list-template.ts +16 -0
  137. package/src/components/flat-list/index.ts +6 -48
  138. package/src/components/image-inputs.ts +94 -0
  139. package/src/components/image-props-resolve.ts +172 -0
  140. package/src/components/image-shared.ts +26 -291
  141. package/src/components/input-accessory-view-props.ts +12 -8
  142. package/src/components/keyboard-avoiding-view/index.ts +39 -79
  143. package/src/components/layout-conformance-props.ts +8 -0
  144. package/src/components/modal/index.ts +42 -20
  145. package/src/components/refresh-control-props.ts +29 -25
  146. package/src/components/scroll-view-props.ts +84 -76
  147. package/src/components/section-list/index.ts +34 -37
  148. package/src/components/touchable-props.ts +6 -2
  149. package/src/components/virtualized-list/cell-renderer-context.ts +36 -0
  150. package/src/components/virtualized-list/directives.ts +84 -8
  151. package/src/components/virtualized-list/index.ts +118 -85
  152. package/src/components/virtualized-list/list-bags.ts +38 -19
  153. package/src/components/virtualized-list/list-effects.ts +20 -32
  154. package/src/components/virtualized-list/list-handle.ts +17 -4
  155. package/src/components/virtualized-list/list-inputs.ts +47 -0
  156. package/src/components/virtualized-list/list-props.ts +57 -50
  157. package/src/components/virtualized-list/list-rows.ts +66 -0
  158. package/src/components/virtualized-list/list-styles.ts +30 -1
  159. package/src/components/virtualized-list/list-template.ts +159 -73
  160. package/src/components/virtualized-list/nested-scope.ts +22 -0
  161. package/src/components/virtualized-section-list/directives.ts +41 -40
  162. package/src/components/virtualized-section-list/index.ts +114 -118
  163. package/src/components/virtualized-section-list/section-cell.ts +109 -0
  164. package/src/components/virtualized-section-list/section-list-props.ts +79 -0
  165. package/src/components/virtualized-section-list/section-list-template.ts +34 -26
  166. package/src/components.ts +8 -0
  167. package/src/element-base.ts +17 -0
  168. package/src/element-props.ts +35 -33
  169. package/src/element-text-input-native.ts +31 -0
  170. package/src/elements-controls.ts +9 -1
  171. package/src/elements-layout.ts +27 -0
  172. package/src/elements-press.ts +10 -2
  173. package/src/elements.ts +3 -0
  174. package/src/index.ts +72 -22
  175. package/src/modules/animated/index.ts +2 -47
  176. package/src/modules/app-registry/index.ts +3 -1
  177. package/src/modules/status-bar/index.ts +24 -11
  178. package/src/primitives/index.ts +7 -0
  179. 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 { LIST_ACTION_KIND, readLayoutLength, readScrollOffset, resolveAccessibilityProps, } from '@symbiote-native/components';
5
- import { dlog, } from '@symbiote-native/engine';
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
- const offset = readScrollOffset(event, this.isHorizontal);
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
- const length = readLayoutLength(event, this.isHorizontal);
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":"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"}
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 viewableTimer;
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 fireViewable;
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 { EMPTY_OFFSET, LIST_ACTION_KIND, LIST_EFFECT_KIND, } from '@symbiote-native/components';
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
- this.viewableTimer = null;
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
- if (this.viewableTimer !== null)
16
- clearTimeout(this.viewableTimer);
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
- this.fireViewable(effect, inputs);
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
- fireViewable(effect, inputs) {
57
- const fire = () => {
58
- for (const pair of inputs.viewabilityPairs) {
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.viewableFired,
66
- map: effect.map,
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":"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"}
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
- getNativeScrollRef(): IScrollViewHandle | null;
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.scrollNode !== null ? this.scrollHandle : null;
45
+ return this.scrollHandle.getScrollNode();
42
46
  }
43
47
  getScrollableNode() {
44
- return this.scrollNode !== null ? this.scrollHandle : null;
48
+ return this.handleOrNull();
45
49
  }
46
50
  getScrollResponder() {
47
- return this.scrollNode !== null ? this.scrollHandle : null;
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,kBAAkB;QAChB,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IAED,aAAa;QACX,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;8GA3EmB,yBAAyB;kGAAzB,yBAAyB;;2FAAzB,yBAAyB;kBAD9C,SAAS"}
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":"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"}
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 interface IVirtualizedListProps<ItemT> extends IAccessibilityProps, IAriaProps {
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"}