ng-virtual-list 16.11.0 → 16.11.2

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 (137) hide show
  1. package/README.md +5 -1
  2. package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +213 -0
  3. package/esm2022/lib/components/ng-list-item/base/index.mjs +3 -0
  4. package/esm2022/lib/components/ng-list-item/const/index.mjs +30 -0
  5. package/esm2022/lib/components/ng-list-item/interfaces/index.mjs +2 -0
  6. package/esm2022/lib/components/ng-list-item/interfaces/template-context.mjs +2 -0
  7. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +207 -0
  8. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +20 -0
  9. package/esm2022/lib/components/ng-list-item/utils/create-display-id.mjs +4 -0
  10. package/esm2022/lib/components/ng-list-item/utils/get-element-by-index.mjs +6 -0
  11. package/esm2022/lib/components/ng-list-item/utils/index.mjs +4 -0
  12. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +269 -0
  13. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.mjs +21 -0
  14. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +78 -0
  15. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +20 -0
  16. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +140 -0
  17. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +20 -0
  18. package/esm2022/lib/components/ng-prerender-container/core/index.mjs +3 -0
  19. package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +168 -0
  20. package/esm2022/lib/components/ng-prerender-container/events/index.mjs +6 -0
  21. package/esm2022/lib/components/ng-prerender-container/interfaces/index.mjs +2 -0
  22. package/esm2022/lib/components/ng-prerender-container/interfaces/refresh-params.mjs +2 -0
  23. package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +92 -0
  24. package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.module.mjs +20 -0
  25. package/esm2022/lib/components/ng-prerender-container/types/cache.mjs +2 -0
  26. package/esm2022/lib/components/ng-prerender-container/types/index.mjs +2 -0
  27. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +18 -19
  28. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.module.mjs +3 -3
  29. package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +8 -8
  30. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +33 -22
  31. package/esm2022/lib/components/ng-scroller/const/index.mjs +2 -0
  32. package/esm2022/lib/components/ng-scroller/enums/index.mjs +3 -0
  33. package/esm2022/lib/components/ng-scroller/enums/scroller-direction.mjs +6 -0
  34. package/esm2022/lib/components/ng-scroller/enums/scroller-directions.mjs +2 -0
  35. package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +449 -0
  36. package/esm2022/lib/components/ng-scroller/ng-scroller.module.mjs +22 -0
  37. package/esm2022/lib/components/ng-scroller/utils/index.mjs +3 -0
  38. package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +52 -0
  39. package/esm2022/lib/const/index.mjs +9 -1
  40. package/esm2022/lib/core/track-box.mjs +10 -8
  41. package/esm2022/lib/core/tracker.mjs +1 -1
  42. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +2 -2
  43. package/esm2022/lib/interfaces/index.mjs +1 -1
  44. package/esm2022/lib/interfaces/scrolling-settings.mjs +2 -0
  45. package/esm2022/lib/ng-virtual-list.component.mjs +215 -122
  46. package/esm2022/lib/ng-virtual-list.module.mjs +7 -7
  47. package/esm2022/lib/ng-virtual-list.service.mjs +11 -5
  48. package/esm2022/lib/utils/disposable-component.mjs +27 -0
  49. package/esm2022/public-api.mjs +2 -2
  50. package/fesm2022/ng-virtual-list.mjs +441 -284
  51. package/fesm2022/ng-virtual-list.mjs.map +1 -1
  52. package/lib/components/{list-item → ng-list-item}/base/base-virtual-list-item-component.d.ts +5 -3
  53. package/lib/components/{list-item → ng-list-item}/ng-virtual-list-item.component.d.ts +2 -3
  54. package/lib/components/{prerender-container/components/prerender-list/prerender-list.component.d.ts → ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.d.ts} +8 -8
  55. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.d.ts +10 -0
  56. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.d.ts +17 -0
  57. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.d.ts +9 -0
  58. package/lib/components/{prerender-container/components/prerender-scroller/prerender-scroller.component.d.ts → ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts} +5 -5
  59. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.d.ts +9 -0
  60. package/lib/components/{prerender-container → ng-prerender-container}/core/prerender-track-box.d.ts +2 -2
  61. package/lib/components/{prerender-container → ng-prerender-container}/interfaces/refresh-params.d.ts +1 -1
  62. package/lib/components/ng-prerender-container/ng-prerender-container.component.d.ts +39 -0
  63. package/lib/components/ng-prerender-container/ng-prerender-container.module.d.ts +9 -0
  64. package/lib/components/{prerender-container → ng-prerender-container}/types/cache.d.ts +1 -1
  65. package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +3 -3
  66. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +6 -1
  67. package/lib/components/{scroller → ng-scroller}/ng-scroller.component.d.ts +1 -1
  68. package/lib/components/{scroller → ng-scroller}/utils/scroll-box.d.ts +1 -1
  69. package/lib/const/index.d.ts +2 -1
  70. package/lib/core/track-box.d.ts +5 -4
  71. package/lib/core/tracker.d.ts +1 -1
  72. package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +1 -1
  73. package/lib/interfaces/index.d.ts +2 -1
  74. package/lib/interfaces/scrolling-settings.d.ts +38 -0
  75. package/lib/ng-virtual-list.component.d.ts +19 -5
  76. package/lib/ng-virtual-list.module.d.ts +4 -4
  77. package/lib/ng-virtual-list.service.d.ts +3 -0
  78. package/lib/utils/disposable-component.d.ts +15 -0
  79. package/package.json +1 -1
  80. package/public-api.d.ts +1 -1
  81. package/esm2022/lib/components/list-item/base/base-virtual-list-item-component.mjs +0 -207
  82. package/esm2022/lib/components/list-item/base/index.mjs +0 -3
  83. package/esm2022/lib/components/list-item/const/index.mjs +0 -30
  84. package/esm2022/lib/components/list-item/interfaces/index.mjs +0 -2
  85. package/esm2022/lib/components/list-item/interfaces/template-context.mjs +0 -2
  86. package/esm2022/lib/components/list-item/ng-virtual-list-item.component.mjs +0 -202
  87. package/esm2022/lib/components/list-item/ng-virtual-list-item.module.mjs +0 -20
  88. package/esm2022/lib/components/list-item/utils/create-display-id.mjs +0 -4
  89. package/esm2022/lib/components/list-item/utils/get-element-by-index.mjs +0 -6
  90. package/esm2022/lib/components/list-item/utils/index.mjs +0 -4
  91. package/esm2022/lib/components/prerender-container/components/prerender-list/prerender-list.component.mjs +0 -268
  92. package/esm2022/lib/components/prerender-container/components/prerender-list/prerender-list.module.mjs +0 -21
  93. package/esm2022/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.component.mjs +0 -78
  94. package/esm2022/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.module.mjs +0 -20
  95. package/esm2022/lib/components/prerender-container/components/prerender-scroller/prerender-scroller.component.mjs +0 -141
  96. package/esm2022/lib/components/prerender-container/components/prerender-scroller/prerender-scroller.module.mjs +0 -20
  97. package/esm2022/lib/components/prerender-container/core/index.mjs +0 -3
  98. package/esm2022/lib/components/prerender-container/core/prerender-track-box.mjs +0 -168
  99. package/esm2022/lib/components/prerender-container/events/index.mjs +0 -6
  100. package/esm2022/lib/components/prerender-container/interfaces/index.mjs +0 -2
  101. package/esm2022/lib/components/prerender-container/interfaces/refresh-params.mjs +0 -2
  102. package/esm2022/lib/components/prerender-container/prerender-container.component.mjs +0 -91
  103. package/esm2022/lib/components/prerender-container/prerender-container.module.mjs +0 -20
  104. package/esm2022/lib/components/prerender-container/types/cache.mjs +0 -2
  105. package/esm2022/lib/components/prerender-container/types/index.mjs +0 -2
  106. package/esm2022/lib/components/scroller/const/index.mjs +0 -2
  107. package/esm2022/lib/components/scroller/enums/index.mjs +0 -3
  108. package/esm2022/lib/components/scroller/enums/scroller-direction.mjs +0 -6
  109. package/esm2022/lib/components/scroller/enums/scroller-directions.mjs +0 -2
  110. package/esm2022/lib/components/scroller/ng-scroller.component.mjs +0 -450
  111. package/esm2022/lib/components/scroller/ng-scroller.module.mjs +0 -22
  112. package/esm2022/lib/components/scroller/utils/index.mjs +0 -3
  113. package/esm2022/lib/components/scroller/utils/scroll-box.mjs +0 -52
  114. package/lib/components/prerender-container/components/prerender-list/prerender-list.module.d.ts +0 -10
  115. package/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.component.d.ts +0 -17
  116. package/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.module.d.ts +0 -9
  117. package/lib/components/prerender-container/components/prerender-scroller/prerender-scroller.module.d.ts +0 -9
  118. package/lib/components/prerender-container/prerender-container.component.d.ts +0 -39
  119. package/lib/components/prerender-container/prerender-container.module.d.ts +0 -9
  120. /package/lib/components/{list-item → ng-list-item}/base/index.d.ts +0 -0
  121. /package/lib/components/{list-item → ng-list-item}/const/index.d.ts +0 -0
  122. /package/lib/components/{list-item → ng-list-item}/interfaces/index.d.ts +0 -0
  123. /package/lib/components/{list-item → ng-list-item}/interfaces/template-context.d.ts +0 -0
  124. /package/lib/components/{list-item → ng-list-item}/ng-virtual-list-item.module.d.ts +0 -0
  125. /package/lib/components/{list-item → ng-list-item}/utils/create-display-id.d.ts +0 -0
  126. /package/lib/components/{list-item → ng-list-item}/utils/get-element-by-index.d.ts +0 -0
  127. /package/lib/components/{list-item → ng-list-item}/utils/index.d.ts +0 -0
  128. /package/lib/components/{prerender-container → ng-prerender-container}/core/index.d.ts +0 -0
  129. /package/lib/components/{prerender-container → ng-prerender-container}/events/index.d.ts +0 -0
  130. /package/lib/components/{prerender-container → ng-prerender-container}/interfaces/index.d.ts +0 -0
  131. /package/lib/components/{prerender-container → ng-prerender-container}/types/index.d.ts +0 -0
  132. /package/lib/components/{scroller → ng-scroller}/const/index.d.ts +0 -0
  133. /package/lib/components/{scroller → ng-scroller}/enums/index.d.ts +0 -0
  134. /package/lib/components/{scroller → ng-scroller}/enums/scroller-direction.d.ts +0 -0
  135. /package/lib/components/{scroller → ng-scroller}/enums/scroller-directions.d.ts +0 -0
  136. /package/lib/components/{scroller → ng-scroller}/ng-scroller.module.d.ts +0 -0
  137. /package/lib/components/{scroller → ng-scroller}/utils/index.d.ts +0 -0
@@ -0,0 +1,4 @@
1
+ export const createDisplayId = (listId, id) => {
2
+ return `${listId}-${id}`;
3
+ };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRpc3BsYXktaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9jcmVhdGUtZGlzcGxheS1pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBVSxFQUFFLEVBQUU7SUFDMUQsT0FBTyxHQUFHLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUM3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY3JlYXRlRGlzcGxheUlkID0gKGxpc3RJZDogbnVtYmVyLCBpZDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gYCR7bGlzdElkfS0ke2lkfWA7XHJcbn07XHJcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export const NGVL_INDEX = 'ngvl-index', getListElementByIndex = (index) => {
2
+ return `[${NGVL_INDEX}="${index}"]`;
3
+ }, getListElements = () => {
4
+ return `[${NGVL_INDEX}]`;
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVsZW1lbnQtYnktaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9nZXQtZWxlbWVudC1ieS1pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxFQUNsQyxxQkFBcUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQ3RDLE9BQU8sSUFBSSxVQUFVLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDeEMsQ0FBQyxFQUNELGVBQWUsR0FBRyxHQUFHLEVBQUU7SUFDbkIsT0FBTyxJQUFJLFVBQVUsR0FBRyxDQUFDO0FBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBOR1ZMX0lOREVYID0gJ25ndmwtaW5kZXgnLFxyXG4gICAgZ2V0TGlzdEVsZW1lbnRCeUluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICByZXR1cm4gYFske05HVkxfSU5ERVh9PVwiJHtpbmRleH1cIl1gO1xyXG4gICAgfSxcclxuICAgIGdldExpc3RFbGVtZW50cyA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gYFske05HVkxfSU5ERVh9XWA7XHJcbiAgICB9O1xyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { getListElementByIndex, getListElements, NGVL_INDEX } from './get-element-by-index';
2
+ import { createDisplayId } from './create-display-id';
3
+ export { createDisplayId, getListElementByIndex, getListElements, NGVL_INDEX, };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0gsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixlQUFlLEVBQ2YsVUFBVSxHQUNiLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMaXN0RWxlbWVudEJ5SW5kZXgsIGdldExpc3RFbGVtZW50cywgTkdWTF9JTkRFWCB9IGZyb20gJy4vZ2V0LWVsZW1lbnQtYnktaW5kZXgnO1xyXG5pbXBvcnQgeyBjcmVhdGVEaXNwbGF5SWQgfSBmcm9tICcuL2NyZWF0ZS1kaXNwbGF5LWlkJztcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBjcmVhdGVEaXNwbGF5SWQsXHJcbiAgICBnZXRMaXN0RWxlbWVudEJ5SW5kZXgsXHJcbiAgICBnZXRMaXN0RWxlbWVudHMsXHJcbiAgICBOR1ZMX0lOREVYLFxyXG59Il19
@@ -0,0 +1,269 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, ViewChild, ViewContainerRef, ViewEncapsulation, } from "@angular/core";
2
+ import { toggleClassName } from "../../../../utils";
3
+ import { BehaviorSubject, combineLatest, filter, Subject, takeUntil, tap } from "rxjs";
4
+ import { CLASS_LIST_HORIZONTAL, CLASS_LIST_VERTICAL, DEFAULT_DIRECTION, DEFAULT_DYNAMIC_SIZE, DEFAULT_ITEM_SIZE, DEFAULT_SCROLLBAR_ENABLED, PX, TRACK_BY_PROPERTY_NAME, } from "../../../../const";
5
+ import { PrerenderTrackBox } from "../../core";
6
+ import { PrerenderTrackBoxEvents } from "../../events";
7
+ import { NgPrerenderVirtualListItemComponent } from "../ng-prerender-list-item/ng-prerender-list-item.component";
8
+ import { DisposableComponent } from "../../../../utils/disposable-component";
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../ng-prerender-scroller/ng-prerender-scroller.component";
11
+ import * as i2 from "@angular/common";
12
+ /**
13
+ * NgPrerenderList.
14
+ * Maximum performance for extremely large lists.
15
+ * It is based on algorithms for virtualization of screen objects.
16
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.ts
17
+ * @author Evgenii Alexandrovich Grebennikov
18
+ * @email djonnyx@gmail.com
19
+ */
20
+ export class NgPrerenderList extends DisposableComponent {
21
+ _listContainerRef;
22
+ _$enabled = new BehaviorSubject(false);
23
+ $enabled = this._$enabled.asObservable();
24
+ set enabled(v) {
25
+ if (this._$enabled.getValue() !== v) {
26
+ this._$enabled.next(v);
27
+ }
28
+ }
29
+ get enabled() { return this._$enabled.getValue(); }
30
+ _$direction = new BehaviorSubject(DEFAULT_DIRECTION);
31
+ $direction = this._$direction.asObservable();
32
+ set direction(v) {
33
+ if (this._$direction.getValue() !== v) {
34
+ this._$direction.next(v);
35
+ }
36
+ }
37
+ get direction() { return this._$direction.getValue(); }
38
+ _$isVertical = new BehaviorSubject(true);
39
+ $isVertical = this._$isVertical.asObservable();
40
+ set isVertical(v) {
41
+ if (this._$isVertical.getValue() !== v) {
42
+ this._$isVertical.next(v);
43
+ }
44
+ }
45
+ get isVertical() { return this._$isVertical.getValue(); }
46
+ _$items = new BehaviorSubject([]);
47
+ $items = this._$items.asObservable();
48
+ set items(v) {
49
+ if (this._$items.getValue() !== v) {
50
+ this._$items.next(v);
51
+ }
52
+ }
53
+ get items() { return this._$items.getValue(); }
54
+ _$scrollbarEnabled = new BehaviorSubject(DEFAULT_SCROLLBAR_ENABLED);
55
+ $scrollbarEnabled = this._$scrollbarEnabled.asObservable();
56
+ set scrollbarEnabled(v) {
57
+ if (this._$scrollbarEnabled.getValue() !== v) {
58
+ this._$scrollbarEnabled.next(v);
59
+ }
60
+ }
61
+ get scrollbarEnabled() { return this._$scrollbarEnabled.getValue(); }
62
+ _$startOffset = new BehaviorSubject(0);
63
+ $startOffset = this._$startOffset.asObservable();
64
+ set startOffset(v) {
65
+ if (this._$startOffset.getValue() !== v) {
66
+ this._$startOffset.next(v);
67
+ }
68
+ }
69
+ get startOffset() { return this._$startOffset.getValue(); }
70
+ _$endOffset = new BehaviorSubject(0);
71
+ $endOffset = this._$endOffset.asObservable();
72
+ set endOffset(v) {
73
+ if (this._$endOffset.getValue() !== v) {
74
+ this._$endOffset.next(v);
75
+ }
76
+ }
77
+ get endOffset() { return this._$endOffset.getValue(); }
78
+ _$bounds = new BehaviorSubject({ width: 0, height: 0 });
79
+ $bounds = this._$bounds.asObservable();
80
+ set bounds(v) {
81
+ if (this._$bounds.getValue() !== v) {
82
+ this._$bounds.next(v);
83
+ }
84
+ }
85
+ get bounds() { return this._$bounds.getValue(); }
86
+ _$dynamic = new BehaviorSubject(DEFAULT_DYNAMIC_SIZE);
87
+ $dynamic = this._$dynamic.asObservable();
88
+ set dynamic(v) {
89
+ if (this._$dynamic.getValue() !== v) {
90
+ this._$dynamic.next(v);
91
+ }
92
+ }
93
+ get dynamic() { return this._$dynamic.getValue(); }
94
+ _$itemSize = new BehaviorSubject(DEFAULT_ITEM_SIZE);
95
+ $itemSize = this._$itemSize.asObservable();
96
+ set itemSize(v) {
97
+ if (this._$itemSize.getValue() !== v) {
98
+ this._$itemSize.next(v);
99
+ }
100
+ }
101
+ get itemSize() { return this._$itemSize.getValue(); }
102
+ _$trackBy = new BehaviorSubject(TRACK_BY_PROPERTY_NAME);
103
+ $trackBy = this._$trackBy.asObservable();
104
+ set trackBy(v) {
105
+ if (this._$trackBy.getValue() !== v) {
106
+ this._$trackBy.next(v);
107
+ }
108
+ }
109
+ get trackBy() { return this._$trackBy.getValue(); }
110
+ _$itemRenderer = new BehaviorSubject(null);
111
+ $itemRenderer = this._$itemRenderer.asObservable();
112
+ set itemRenderer(v) {
113
+ if (this._$itemRenderer.getValue() !== v) {
114
+ this._$itemRenderer.next(v);
115
+ }
116
+ }
117
+ get itemRenderer() { return this._$itemRenderer.getValue(); }
118
+ _$itemComponentClass = new BehaviorSubject(NgPrerenderVirtualListItemComponent);
119
+ $itemComponentClass = this._$itemComponentClass.asObservable();
120
+ set itemComponentClass(v) {
121
+ if (this._$itemComponentClass.getValue() !== v) {
122
+ this._$itemComponentClass.next(v);
123
+ }
124
+ }
125
+ get itemComponentClass() { return this._$itemComponentClass.getValue(); }
126
+ _$classes = new BehaviorSubject({ prepared: true });
127
+ $classes = this._$classes.asObservable();
128
+ _$render = new Subject();
129
+ $render = this._$render.asObservable();
130
+ _$componentResize = new Subject();
131
+ $componentResize = this._$componentResize.asObservable();
132
+ _trackBox = new PrerenderTrackBox();
133
+ _onTrackBoxResizeHandler = (cache) => {
134
+ this._$componentResize.next(cache);
135
+ };
136
+ _elementRef = inject(ElementRef);
137
+ get active() { return this._trackBox?.active ?? false; }
138
+ _activated = false;
139
+ _subscriptions = new Array();
140
+ constructor() {
141
+ super();
142
+ const $enabled = this.$enabled;
143
+ $enabled.pipe(takeUntil(this._$unsubscribe), tap(enabled => {
144
+ if (enabled) {
145
+ this.activate();
146
+ }
147
+ else {
148
+ this.deactivate();
149
+ }
150
+ })).subscribe();
151
+ }
152
+ activate() {
153
+ if (this._activated) {
154
+ return;
155
+ }
156
+ this._activated = true;
157
+ this._trackBox.addEventListener(PrerenderTrackBoxEvents.RESIZE, this._onTrackBoxResizeHandler);
158
+ this._subscriptions.push(this.$isVertical.pipe(takeUntil(this._$unsubscribe), tap(v => {
159
+ const el = this._elementRef.nativeElement;
160
+ toggleClassName(el, v ? CLASS_LIST_VERTICAL : CLASS_LIST_HORIZONTAL, v ? CLASS_LIST_HORIZONTAL : CLASS_LIST_VERTICAL);
161
+ })).subscribe());
162
+ this._subscriptions.push(this.$bounds.pipe(takeUntil(this._$unsubscribe), filter(v => !!v), tap(bounds => {
163
+ const { width, height } = bounds;
164
+ const el = this._elementRef.nativeElement;
165
+ el.style.width = `${width}${PX}`;
166
+ el.style.height = `${height}${PX}`;
167
+ })).subscribe());
168
+ this._subscriptions.push(combineLatest([this.$bounds, this.$items]).pipe(takeUntil(this._$unsubscribe), filter(([b, i]) => !!b && !!i), tap(([bounds, items]) => {
169
+ if (this.active && !!this._trackBox) {
170
+ this._trackBox.reset(this._$itemComponentClass.getValue(), items, this._$bounds.getValue(), {
171
+ itemRenderer: this._$itemRenderer.getValue(),
172
+ dynamic: this._$dynamic.getValue(),
173
+ itemSize: this._$itemSize.getValue(),
174
+ isVertical: this._$isVertical.getValue(),
175
+ trackBy: this._$trackBy.getValue(),
176
+ });
177
+ }
178
+ })).subscribe());
179
+ const $componentResize = this.$componentResize;
180
+ this._subscriptions.push($componentResize.pipe(takeUntil(this._$unsubscribe), tap(cache => {
181
+ this._$render.next(cache);
182
+ })).subscribe());
183
+ }
184
+ deactivate() {
185
+ if (!this._activated) {
186
+ return;
187
+ }
188
+ this._activated = false;
189
+ this.off();
190
+ if (!!this._trackBox) {
191
+ this._trackBox.removeEventListener(PrerenderTrackBoxEvents.RESIZE, this._onTrackBoxResizeHandler);
192
+ }
193
+ const subscriptions = this._subscriptions;
194
+ for (const subscr of subscriptions) {
195
+ if (!subscr.closed) {
196
+ subscr.unsubscribe();
197
+ }
198
+ }
199
+ this._subscriptions = [];
200
+ }
201
+ clear() {
202
+ if (!!this._trackBox) {
203
+ this._trackBox.clear();
204
+ }
205
+ }
206
+ on(items = null) {
207
+ if (!!this._trackBox) {
208
+ this._trackBox.on();
209
+ this._$items.next(items ?? []);
210
+ }
211
+ }
212
+ off() {
213
+ if (!!this._trackBox) {
214
+ this._trackBox.off();
215
+ }
216
+ }
217
+ ngAfterViewInit() {
218
+ this._trackBox.create(this._listContainerRef);
219
+ }
220
+ ngOnDestroy() {
221
+ super.ngOnDestroy();
222
+ this.dispose();
223
+ }
224
+ dispose() {
225
+ this._subscriptions = [];
226
+ if (!!this._trackBox) {
227
+ this._trackBox.dispose();
228
+ this._trackBox = null;
229
+ }
230
+ }
231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderList, deps: [], target: i0.ɵɵFactoryTarget.Component });
232
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgPrerenderList, selector: "ng-prerender-list", inputs: { enabled: "enabled", direction: "direction", isVertical: "isVertical", items: "items", scrollbarEnabled: "scrollbarEnabled", startOffset: "startOffset", endOffset: "endOffset", bounds: "bounds", dynamic: "dynamic", itemSize: "itemSize", trackBy: "trackBy", itemRenderer: "itemRenderer", itemComponentClass: "itemComponentClass" }, host: { styleAttribute: "position: relative;" }, viewQueries: [{ propertyName: "_listContainerRef", first: true, predicate: ["renderersContainer"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<ng-prerender-scroller #scroller class=\"ngvl__list-scroller\" [classes]=\"($classes | async)!\"\r\n [direction]=\"($direction | async)!\" [scrollbarEnabled]=\"($scrollbarEnabled | async)!\"\r\n [startOffset]=\"($startOffset | async)!\" [endOffset]=\"($endOffset | async)!\">\r\n <ng-container #renderersContainer></ng-container>\r\n</ng-prerender-scroller>", styles: [":host{position:relative;display:block;width:400px;overflow:hidden}:host(.horizontal){height:48px}:host(.vertical){height:320px}.ngvl__snapped-container{position:relative;width:100%;opacity:0}.ngvl__snapped-container.prepared{opacity:1}.ngvl__list-snapper{-webkit-tap-highlight-color:transparent;pointer-events:none;position:absolute;list-style:none;left:0;top:0;z-index:1}.ngvl__list-scroller{-webkit-tap-highlight-color:transparent;position:absolute;left:0;top:0;width:100%;height:100%;z-index:0}.ngvl__screen-reader{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n", ":host{width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.NgPrerenderScrollerComponent, selector: "ng-prerender-scroller", inputs: ["scrollbarEnabled", "classes"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom });
233
+ }
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderList, decorators: [{
235
+ type: Component,
236
+ args: [{ selector: 'ng-prerender-list', host: {
237
+ 'style': 'position: relative;'
238
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, template: "<ng-prerender-scroller #scroller class=\"ngvl__list-scroller\" [classes]=\"($classes | async)!\"\r\n [direction]=\"($direction | async)!\" [scrollbarEnabled]=\"($scrollbarEnabled | async)!\"\r\n [startOffset]=\"($startOffset | async)!\" [endOffset]=\"($endOffset | async)!\">\r\n <ng-container #renderersContainer></ng-container>\r\n</ng-prerender-scroller>", styles: [":host{position:relative;display:block;width:400px;overflow:hidden}:host(.horizontal){height:48px}:host(.vertical){height:320px}.ngvl__snapped-container{position:relative;width:100%;opacity:0}.ngvl__snapped-container.prepared{opacity:1}.ngvl__list-snapper{-webkit-tap-highlight-color:transparent;pointer-events:none;position:absolute;list-style:none;left:0;top:0;z-index:1}.ngvl__list-scroller{-webkit-tap-highlight-color:transparent;position:absolute;left:0;top:0;width:100%;height:100%;z-index:0}.ngvl__screen-reader{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n", ":host{width:100%;height:100%}\n"] }]
239
+ }], ctorParameters: function () { return []; }, propDecorators: { _listContainerRef: [{
240
+ type: ViewChild,
241
+ args: ['renderersContainer', { read: ViewContainerRef }]
242
+ }], enabled: [{
243
+ type: Input
244
+ }], direction: [{
245
+ type: Input
246
+ }], isVertical: [{
247
+ type: Input
248
+ }], items: [{
249
+ type: Input
250
+ }], scrollbarEnabled: [{
251
+ type: Input
252
+ }], startOffset: [{
253
+ type: Input
254
+ }], endOffset: [{
255
+ type: Input
256
+ }], bounds: [{
257
+ type: Input
258
+ }], dynamic: [{
259
+ type: Input
260
+ }], itemSize: [{
261
+ type: Input
262
+ }], trackBy: [{
263
+ type: Input
264
+ }], itemRenderer: [{
265
+ type: Input
266
+ }], itemComponentClass: [{
267
+ type: Input
268
+ }] } });
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWxpc3QvbmctcHJlcmVuZGVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWxpc3QvbmctcHJlcmVuZGVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBMEIsU0FBUyxFQUNoRyxnQkFBZ0IsRUFBRSxpQkFBaUIsR0FDdEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUNILHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUN0Ryx5QkFBeUIsRUFBRSxFQUFFLEVBQUUsc0JBQXNCLEdBQ3hELE1BQU0sbUJBQW1CLENBQUM7QUFNM0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUNB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O2dCQVdGLE9BQU87c0JBRFYsS0FBSztnQkFXRixZQUFZO3NCQURmLEtBQUs7Z0JBV0Ysa0JBQWtCO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCxcclxuICAgIFZpZXdDb250YWluZXJSZWYsIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IHRvZ2dsZUNsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBDTEFTU19MSVNUX0hPUklaT05UQUwsIENMQVNTX0xJU1RfVkVSVElDQUwsIERFRkFVTFRfRElSRUNUSU9OLCBERUZBVUxUX0RZTkFNSUNfU0laRSwgREVGQVVMVF9JVEVNX1NJWkUsXHJcbiAgICBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELCBQWCwgVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSxcclxufSBmcm9tIFwiLi4vLi4vLi4vLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgUHJlcmVuZGVyQ2FjaGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvY2FjaGVcIjtcclxuaW1wb3J0IHsgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9uZy1saXN0LWl0ZW0vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQkMSB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbHMvY29tcG9uZW50Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFByZXJlbmRlclRyYWNrQm94IH0gZnJvbSBcIi4uLy4uL2NvcmVcIjtcclxuaW1wb3J0IHsgUHJlcmVuZGVyVHJhY2tCb3hFdmVudHMgfSBmcm9tIFwiLi4vLi4vZXZlbnRzXCI7XHJcbmltcG9ydCB7IE5nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uL25nLXByZXJlbmRlci1saXN0LWl0ZW0vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW1zXCI7XHJcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvZGlzcG9zYWJsZS1jb21wb25lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBOZ1ByZXJlbmRlckxpc3QuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE2LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWxpc3QvbmctcHJlcmVuZGVyLWxpc3QuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZy1wcmVyZW5kZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi4vLi4vLi4vLi4vbmctdmlydHVhbC1saXN0LmNvbXBvbmVudC5zY3NzJywgJy4vbmctcHJlcmVuZGVyLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnc3R5bGUnOiAncG9zaXRpb246IHJlbGF0aXZlOydcclxuICAgIH0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyTGlzdCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgncmVuZGVyZXJzQ29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgICBwcml2YXRlIF9saXN0Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHJlYWRvbmx5ICRlbmFibGVkID0gdGhpcy5fJGVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGVuYWJsZWQodjogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICh0aGlzLl8kZW5hYmxlZC5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRlbmFibGVkLm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGVuYWJsZWQoKSB7IHJldHVybiB0aGlzLl8kZW5hYmxlZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kZGlyZWN0aW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEaXJlY3Rpb24+KERFRkFVTFRfRElSRUNUSU9OKTtcclxuICAgIHJlYWRvbmx5ICRkaXJlY3Rpb24gPSB0aGlzLl8kZGlyZWN0aW9uLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBkaXJlY3Rpb24odjogRGlyZWN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRkaXJlY3Rpb24uZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kZGlyZWN0aW9uLm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGRpcmVjdGlvbigpIHsgcmV0dXJuIHRoaXMuXyRkaXJlY3Rpb24uZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGlzVmVydGljYWwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcmVhZG9ubHkgJGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgaXNWZXJ0aWNhbCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGlzVmVydGljYWwubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgaXNWZXJ0aWNhbCgpIHsgcmV0dXJuIHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRpdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVZpcnR1YWxMaXN0Q29sbGVjdGlvbj4oW10pO1xyXG4gICAgcmVhZG9ubHkgJGl0ZW1zID0gdGhpcy5fJGl0ZW1zLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBpdGVtcyh2OiBJVmlydHVhbExpc3RDb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRpdGVtcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRpdGVtcy5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBpdGVtcygpIHsgcmV0dXJuIHRoaXMuXyRpdGVtcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kc2Nyb2xsYmFyRW5hYmxlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9TQ1JPTExCQVJfRU5BQkxFRCk7XHJcbiAgICByZWFkb25seSAkc2Nyb2xsYmFyRW5hYmxlZCA9IHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBzY3JvbGxiYXJFbmFibGVkKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5fJHNjcm9sbGJhckVuYWJsZWQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBzY3JvbGxiYXJFbmFibGVkKCkgeyByZXR1cm4gdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJHN0YXJ0T2Zmc2V0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gICAgcmVhZG9ubHkgJHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBzdGFydE9mZnNldCh2OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHN0YXJ0T2Zmc2V0Lm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IHN0YXJ0T2Zmc2V0KCkgeyByZXR1cm4gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRlbmRPZmZzZXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkZW5kT2Zmc2V0ID0gdGhpcy5fJGVuZE9mZnNldC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZW5kT2Zmc2V0KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGVuZE9mZnNldC5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBlbmRPZmZzZXQoKSB7IHJldHVybiB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRib3VuZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTaXplIHwgbnVsbD4oeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pO1xyXG4gICAgcmVhZG9ubHkgJGJvdW5kcyA9IHRoaXMuXyRib3VuZHMuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGJvdW5kcyh2OiBJU2l6ZSB8IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fJGJvdW5kcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRib3VuZHMubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgYm91bmRzKCkgeyByZXR1cm4gdGhpcy5fJGJvdW5kcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kZHluYW1pYyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9EWU5BTUlDX1NJWkUpO1xyXG4gICAgcmVhZG9ubHkgJGR5bmFtaWMgPSB0aGlzLl8kZHluYW1pYy5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZHluYW1pYyh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRkeW5hbWljLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGR5bmFtaWMubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgZHluYW1pYygpIHsgcmV0dXJuIHRoaXMuXyRkeW5hbWljLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRpdGVtU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihERUZBVUxUX0lURU1fU0laRSk7XHJcbiAgICByZWFkb25seSAkaXRlbVNpemUgPSB0aGlzLl8kaXRlbVNpemUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGl0ZW1TaXplKHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLl8kaXRlbVNpemUuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kaXRlbVNpemUubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgaXRlbVNpemUoKSB7IHJldHVybiB0aGlzLl8kaXRlbVNpemUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJHRyYWNrQnkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSk7XHJcbiAgICByZWFkb25seSAkdHJhY2tCeSA9IHRoaXMuXyR0cmFja0J5LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCB0cmFja0J5KHY6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLl8kdHJhY2tCeS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyR0cmFja0J5Lm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IHRyYWNrQnkoKSB7IHJldHVybiB0aGlzLl8kdHJhY2tCeS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kaXRlbVJlbmRlcmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XHJcbiAgICByZWFkb25seSAkaXRlbVJlbmRlcmVyID0gdGhpcy5fJGl0ZW1SZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgaXRlbVJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRpdGVtUmVuZGVyZXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kaXRlbVJlbmRlcmVyLm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGl0ZW1SZW5kZXJlcigpIHsgcmV0dXJuIHRoaXMuXyRpdGVtUmVuZGVyZXIuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGl0ZW1Db21wb25lbnRDbGFzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4+KE5nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtQ29tcG9uZW50KTtcclxuICAgIHJlYWRvbmx5ICRpdGVtQ29tcG9uZW50Q2xhc3MgPSB0aGlzLl8kaXRlbUNvbXBvbmVudENsYXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBpdGVtQ29tcG9uZW50Q2xhc3ModjogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4pIHtcclxuICAgICAgICBpZiAodGhpcy5fJGl0ZW1Db21wb25lbnRDbGFzcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRpdGVtQ29tcG9uZW50Q2xhc3MubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgaXRlbUNvbXBvbmVudENsYXNzKCkgeyByZXR1cm4gdGhpcy5fJGl0ZW1Db21wb25lbnRDbGFzcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oeyBwcmVwYXJlZDogdHJ1ZSB9KTtcclxuICAgIHJlYWRvbmx5ICRjbGFzc2VzID0gdGhpcy5fJGNsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfJHJlbmRlciA9IG5ldyBTdWJqZWN0PFByZXJlbmRlckNhY2hlPigpO1xyXG4gICAgJHJlbmRlciA9IHRoaXMuXyRyZW5kZXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfJGNvbXBvbmVudFJlc2l6ZSA9IG5ldyBTdWJqZWN0PFByZXJlbmRlckNhY2hlPigpO1xyXG4gICAgcHJvdGVjdGVkICRjb21wb25lbnRSZXNpemUgPSB0aGlzLl8kY29tcG9uZW50UmVzaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgX3RyYWNrQm94OiBQcmVyZW5kZXJUcmFja0JveCB8IG51bGwgPSBuZXcgUHJlcmVuZGVyVHJhY2tCb3goKTtcclxuXHJcbiAgICBwcml2YXRlIF9vblRyYWNrQm94UmVzaXplSGFuZGxlciA9IChjYWNoZTogUHJlcmVuZGVyQ2FjaGUpID0+IHtcclxuICAgICAgICB0aGlzLl8kY29tcG9uZW50UmVzaXplLm5leHQoY2FjaGUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcclxuXHJcbiAgICBnZXQgYWN0aXZlKCkgeyByZXR1cm4gdGhpcy5fdHJhY2tCb3g/LmFjdGl2ZSA/PyBmYWxzZTsgfVxyXG5cclxuICAgIHByaXZhdGUgX2FjdGl2YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgQXJyYXk8U3Vic2NyaXB0aW9uPigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcblxyXG4gICAgICAgIGNvbnN0ICRlbmFibGVkID0gdGhpcy4kZW5hYmxlZDtcclxuICAgICAgICAkZW5hYmxlZC5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgdGFwKGVuYWJsZWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFjdGl2YXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmF0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9hY3RpdmF0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLl90cmFja0JveCEuYWRkRXZlbnRMaXN0ZW5lcihQcmVyZW5kZXJUcmFja0JveEV2ZW50cy5SRVNJWkUsIHRoaXMuX29uVHJhY2tCb3hSZXNpemVIYW5kbGVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuJGlzVmVydGljYWwucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3NOYW1lKGVsLCB2ID8gQ0xBU1NfTElTVF9WRVJUSUNBTCA6IENMQVNTX0xJU1RfSE9SSVpPTlRBTCwgdiA/IENMQVNTX0xJU1RfSE9SSVpPTlRBTCA6IENMQVNTX0xJU1RfVkVSVElDQUwpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuJGJvdW5kcy5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgICAgICAgdGFwKGJvdW5kcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGJvdW5kcyE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChjb21iaW5lTGF0ZXN0KFt0aGlzLiRib3VuZHMsIHRoaXMuJGl0ZW1zXSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIGZpbHRlcigoW2IsIGldKSA9PiAhIWIgJiYgISFpKSxcclxuICAgICAgICAgICAgdGFwKChbYm91bmRzLCBpdGVtc10pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSAmJiAhIXRoaXMuX3RyYWNrQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhY2tCb3gucmVzZXQodGhpcy5fJGl0ZW1Db21wb25lbnRDbGFzcy5nZXRWYWx1ZSgpLCBpdGVtcywgdGhpcy5fJGJvdW5kcy5nZXRWYWx1ZSgpISwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyZXI6IHRoaXMuXyRpdGVtUmVuZGVyZXIuZ2V0VmFsdWUoKSEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWM6IHRoaXMuXyRkeW5hbWljLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplOiB0aGlzLl8kaXRlbVNpemUuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWZXJ0aWNhbDogdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdGhpcy5fJHRyYWNrQnkuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKSk7XHJcblxyXG4gICAgICAgIGNvbnN0ICRjb21wb25lbnRSZXNpemUgPSB0aGlzLiRjb21wb25lbnRSZXNpemU7XHJcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKCRjb21wb25lbnRSZXNpemUucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcChjYWNoZSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kcmVuZGVyLm5leHQoY2FjaGUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWFjdGl2YXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZhdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMub2ZmKCk7XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX3RyYWNrQm94KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RyYWNrQm94IS5yZW1vdmVFdmVudExpc3RlbmVyKFByZXJlbmRlclRyYWNrQm94RXZlbnRzLlJFU0laRSwgdGhpcy5fb25UcmFja0JveFJlc2l6ZUhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IHRoaXMuX3N1YnNjcmlwdGlvbnM7XHJcbiAgICAgICAgZm9yIChjb25zdCBzdWJzY3Igb2Ygc3Vic2NyaXB0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoIXN1YnNjci5jbG9zZWQpIHtcclxuICAgICAgICAgICAgICAgIHN1YnNjci51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhcigpIHtcclxuICAgICAgICBpZiAoISF0aGlzLl90cmFja0JveCkge1xyXG4gICAgICAgICAgICB0aGlzLl90cmFja0JveC5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbihpdGVtczogSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5fdHJhY2tCb3gpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhY2tCb3gub24oKTtcclxuICAgICAgICAgICAgdGhpcy5fJGl0ZW1zLm5leHQoaXRlbXMgPz8gW10pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvZmYoKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5fdHJhY2tCb3gpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhY2tCb3gub2ZmKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLl90cmFja0JveCEuY3JlYXRlKHRoaXMuX2xpc3RDb250YWluZXJSZWYhKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG5cclxuICAgICAgICB0aGlzLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwb3NlKCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fdHJhY2tCb3gpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhY2tCb3guZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl90cmFja0JveCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5nLXByZXJlbmRlci1zY3JvbGxlciAjc2Nyb2xsZXIgY2xhc3M9XCJuZ3ZsX19saXN0LXNjcm9sbGVyXCIgW2NsYXNzZXNdPVwiKCRjbGFzc2VzIHwgYXN5bmMpIVwiXHJcbiAgW2RpcmVjdGlvbl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKSFcIiBbc2Nyb2xsYmFyRW5hYmxlZF09XCIoJHNjcm9sbGJhckVuYWJsZWQgfCBhc3luYykhXCJcclxuICBbc3RhcnRPZmZzZXRdPVwiKCRzdGFydE9mZnNldCB8IGFzeW5jKSFcIiBbZW5kT2Zmc2V0XT1cIigkZW5kT2Zmc2V0IHwgYXN5bmMpIVwiPlxyXG4gIDxuZy1jb250YWluZXIgI3JlbmRlcmVyc0NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuPC9uZy1wcmVyZW5kZXItc2Nyb2xsZXI+Il19
@@ -0,0 +1,21 @@
1
+ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgPrerenderVirtualListItemModule } from '../ng-prerender-list-item/ng-prerender-list-item.module';
4
+ import { NgPrerenderScrollerModule } from '../ng-prerender-scroller/ng-prerender-scroller.module';
5
+ import { NgPrerenderList } from './ng-prerender-list.component';
6
+ import * as i0 from "@angular/core";
7
+ export class NgPrerenderListModule {
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderListModule, declarations: [NgPrerenderList], imports: [CommonModule, NgPrerenderVirtualListItemModule, NgPrerenderScrollerModule], exports: [NgPrerenderList] });
10
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderListModule, imports: [CommonModule, NgPrerenderVirtualListItemModule, NgPrerenderScrollerModule] });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderListModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [NgPrerenderList],
16
+ exports: [NgPrerenderList],
17
+ imports: [CommonModule, NgPrerenderVirtualListItemModule, NgPrerenderScrollerModule],
18
+ schemas: [NO_ERRORS_SCHEMA],
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWxpc3QvbmctcHJlcmVuZGVyLWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFRaEUsTUFBTSxPQUFPLHFCQUFxQjt3R0FBckIscUJBQXFCO3lHQUFyQixxQkFBcUIsaUJBTGYsZUFBZSxhQUVwQixZQUFZLEVBQUUsZ0NBQWdDLEVBQUUseUJBQXlCLGFBRHpFLGVBQWU7eUdBSWhCLHFCQUFxQixZQUhwQixZQUFZLEVBQUUsZ0NBQWdDLEVBQUUseUJBQXlCOzs0RkFHMUUscUJBQXFCO2tCQU5qQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDL0IsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUMxQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0NBQWdDLEVBQUUseUJBQXlCLENBQUM7b0JBQ3BGLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBOT19FUlJPUlNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtTW9kdWxlIH0gZnJvbSAnLi4vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS9uZy1wcmVyZW5kZXItbGlzdC1pdGVtLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5nUHJlcmVuZGVyU2Nyb2xsZXJNb2R1bGUgfSBmcm9tICcuLi9uZy1wcmVyZW5kZXItc2Nyb2xsZXIvbmctcHJlcmVuZGVyLXNjcm9sbGVyLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5nUHJlcmVuZGVyTGlzdCB9IGZyb20gJy4vbmctcHJlcmVuZGVyLWxpc3QuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtOZ1ByZXJlbmRlckxpc3RdLFxyXG4gICAgZXhwb3J0czogW05nUHJlcmVuZGVyTGlzdF0sXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOZ1ByZXJlbmRlclZpcnR1YWxMaXN0SXRlbU1vZHVsZSwgTmdQcmVyZW5kZXJTY3JvbGxlck1vZHVsZV0sXHJcbiAgICBzY2hlbWFzOiBbTk9fRVJST1JTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ByZXJlbmRlckxpc3RNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -0,0 +1,78 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { NgVirtualListItemComponent } from '../../../ng-list-item/ng-virtual-list-item.component';
3
+ import { DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PX, SIZE_100_PERSENT, SIZE_AUTO, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, } from '../../../../const';
4
+ import { ID, POSITION, POSITION_ZERO } from '../../../ng-list-item/const';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "../../../../directives/item-click/item-click.directive";
8
+ /**
9
+ * Virtual list component.
10
+ * Maximum performance for extremely large lists.
11
+ * It is based on algorithms for virtualization of screen objects.
12
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/components/ng-prerender-container/components/ng-prerender-list-item.component.ts
13
+ * @author Evgenii Alexandrovich Grebennikov
14
+ * @email djonnyx@gmail.com
15
+ */
16
+ export class NgPrerenderVirtualListItemComponent extends NgVirtualListItemComponent {
17
+ update() {
18
+ const data = this._data, regular = this.regular, length = this._regularLength;
19
+ if (data) {
20
+ this._elementRef.nativeElement.setAttribute(ID, `${data.id}`);
21
+ const styles = this._elementRef.nativeElement.style;
22
+ styles.zIndex = data.config.zIndex;
23
+ if (regular) {
24
+ this._elementRef.nativeElement.setAttribute(POSITION, POSITION_ZERO);
25
+ }
26
+ else {
27
+ this._elementRef.nativeElement.setAttribute(POSITION, `${data.config.isVertical ? data.measures.y : data.measures.x}`);
28
+ }
29
+ styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : SIZE_100_PERSENT;
30
+ styles.width = data.config.isVertical ? regular ? length : SIZE_100_PERSENT : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
31
+ }
32
+ else {
33
+ this._elementRef.nativeElement.removeAttribute(ID);
34
+ }
35
+ }
36
+ show() {
37
+ const el = this._elementRef.nativeElement, styles = el.style;
38
+ styles.zIndex = this._data?.config?.zIndex ?? DEFAULT_ZINDEX;
39
+ if (this.regular) {
40
+ if (styles.display === DISPLAY_BLOCK) {
41
+ return;
42
+ }
43
+ styles.display = DISPLAY_BLOCK;
44
+ }
45
+ else {
46
+ if (styles.visibility === VISIBILITY_VISIBLE) {
47
+ return;
48
+ }
49
+ styles.visibility = VISIBILITY_VISIBLE;
50
+ }
51
+ }
52
+ hide() {
53
+ const el = this._elementRef.nativeElement, styles = el.style;
54
+ styles.zIndex = HIDDEN_ZINDEX;
55
+ if (this.regular) {
56
+ if (styles.display === DISPLAY_NONE) {
57
+ return;
58
+ }
59
+ styles.display = DISPLAY_NONE;
60
+ }
61
+ else {
62
+ if (styles.visibility === VISIBILITY_HIDDEN) {
63
+ return;
64
+ }
65
+ styles.visibility = VISIBILITY_HIDDEN;
66
+ }
67
+ }
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderVirtualListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
69
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgPrerenderVirtualListItemComponent, selector: "ng-prerender-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div itemClick [maxClickDistance]=\"$maxClickDistance | async\" [part]=\"$part | async\"\r\n [attr.ngvl-index]=\"data.config.tabIndex || -1\" tabindex=\"-1\" class=\"ngvl-item__container\"\r\n [ngClass]=\"$classes | async\" (onClick)=\"onClickHandler()\">\r\n <ng-container *ngIf=\"itemRenderer\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer\"\r\n [ngTemplateOutletContext]=\"($templateContext | async)||''\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.ItemClickDirective, selector: "[itemClick]", inputs: ["maxClickDistance"], outputs: ["onClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderVirtualListItemComponent, decorators: [{
72
+ type: Component,
73
+ args: [{ selector: 'ng-prerender-virtual-list-item', host: {
74
+ 'class': 'ngvl__item',
75
+ 'role': 'listitem',
76
+ }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div itemClick [maxClickDistance]=\"$maxClickDistance | async\" [part]=\"$part | async\"\r\n [attr.ngvl-index]=\"data.config.tabIndex || -1\" tabindex=\"-1\" class=\"ngvl-item__container\"\r\n [ngClass]=\"$classes | async\" (onClick)=\"onClickHandler()\">\r\n <ng-container *ngIf=\"itemRenderer\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer\"\r\n [ngTemplateOutletContext]=\"($templateContext | async)||''\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"] }]
77
+ }] });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQ0gsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQzNGLGlCQUFpQixFQUFFLGtCQUFrQixHQUN4QyxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBRTFFOzs7Ozs7O0dBT0c7QUFZSCxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsMEJBQTBCO0lBQzVELE1BQU07UUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM5RSxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxD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U0FDekM7SUFDTCxDQUFDO3dHQXZEUSxtQ0FBbUM7NEZBQW5DLG1DQUFtQyx5S0MzQmhELHFsQkFTZTs7NEZEa0JGLG1DQUFtQztrQkFYL0MsU0FBUzsrQkFDSSxnQ0FBZ0MsUUFHcEM7d0JBQ0YsT0FBTyxFQUFFLFlBQVk7d0JBQ3JCLE1BQU0sRUFBRSxVQUFVO3FCQUNyQixjQUNXLEtBQUssbUJBQ0EsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIERFRkFVTFRfWklOREVYLCBESVNQTEFZX0JMT0NLLCBESVNQTEFZX05PTkUsIEhJRERFTl9aSU5ERVgsIFBYLCBTSVpFXzEwMF9QRVJTRU5ULCBTSVpFX0FVVE8sXHJcbiAgICBWSVNJQklMSVRZX0hJRERFTiwgVklTSUJJTElUWV9WSVNJQkxFLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgSUQsIFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPIH0gZnJvbSAnLi4vLi4vLi4vbmctbGlzdC1pdGVtL2NvbnN0JztcclxuXHJcbi8qKlxyXG4gKiBWaXJ0dWFsIGxpc3QgY29tcG9uZW50LlxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNi54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci12aXJ0dWFsLWxpc3QtaXRlbScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4uLy4uLy4uL25nLWxpc3QtaXRlbS9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi4vLi4vLi4vbmctbGlzdC1pdGVtL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJywgJy4vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdjbGFzcyc6ICduZ3ZsX19pdGVtJyxcclxuICAgICAgICAncm9sZSc6ICdsaXN0aXRlbScsXHJcbiAgICB9LFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZSgpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fZGF0YSwgcmVndWxhciA9IHRoaXMucmVndWxhciwgbGVuZ3RoID0gdGhpcy5fcmVndWxhckxlbmd0aDtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKElELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZXMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGU7XHJcbiAgICAgICAgICAgIHN0eWxlcy56SW5kZXggPSBkYXRhLmNvbmZpZy56SW5kZXg7XHJcbiAgICAgICAgICAgIGlmIChyZWd1bGFyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoUE9TSVRJT04sIGAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLnkgOiBkYXRhLm1lYXN1cmVzLnh9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IFNJWkVfMTAwX1BFUlNFTlQ7XHJcbiAgICAgICAgICAgIHN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogU0laRV8xMDBfUEVSU0VOVCA6IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKElEKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgc2hvdygpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8uekluZGV4ID8/IERFRkFVTFRfWklOREVYO1xyXG4gICAgICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy5kaXNwbGF5ID0gRElTUExBWV9CTE9DSztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfVklTSUJMRTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgaGlkZSgpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgICAgICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfTk9ORSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIigkZGF0YSB8IGFzeW5jKSBhcyBkYXRhXCI+XHJcbiAgICA8ZGl2IGl0ZW1DbGljayBbbWF4Q2xpY2tEaXN0YW5jZV09XCIkbWF4Q2xpY2tEaXN0YW5jZSB8IGFzeW5jXCIgW3BhcnRdPVwiJHBhcnQgfCBhc3luY1wiXHJcbiAgICAgICAgW2F0dHIubmd2bC1pbmRleF09XCJkYXRhLmNvbmZpZy50YWJJbmRleCB8fCAtMVwiIHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cIm5ndmwtaXRlbV9fY29udGFpbmVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCIkY2xhc3NlcyB8IGFzeW5jXCIgKG9uQ2xpY2spPVwib25DbGlja0hhbmRsZXIoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtUmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtUmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIigkdGVtcGxhdGVDb250ZXh0IHwgYXN5bmMpfHwnJ1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ItemClickModule } from '../../../../directives';
4
+ import { NgPrerenderVirtualListItemComponent } from './ng-prerender-list-item.component';
5
+ import * as i0 from "@angular/core";
6
+ export class NgPrerenderVirtualListItemModule {
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderVirtualListItemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderVirtualListItemModule, declarations: [NgPrerenderVirtualListItemComponent], imports: [CommonModule, ItemClickModule], exports: [NgPrerenderVirtualListItemComponent] });
9
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderVirtualListItemModule, imports: [CommonModule, ItemClickModule] });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgPrerenderVirtualListItemModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [NgPrerenderVirtualListItemComponent],
15
+ exports: [NgPrerenderVirtualListItemComponent],
16
+ imports: [CommonModule, ItemClickModule],
17
+ schemas: [NO_ERRORS_SCHEMA],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QtaXRlbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFRekYsTUFBTSxPQUFPLGdDQUFnQzt3R0FBaEMsZ0NBQWdDO3lHQUFoQyxnQ0FBZ0MsaUJBTDVCLG1DQUFtQyxhQUV4QyxZQUFZLEVBQUUsZUFBZSxhQUQ3QixtQ0FBbUM7eUdBSWxDLGdDQUFnQyxZQUhqQyxZQUFZLEVBQUUsZUFBZTs7NEZBRzVCLGdDQUFnQztrQkFONUMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztvQkFDbkQsT0FBTyxFQUFFLENBQUMsbUNBQW1DLENBQUM7b0JBQzlDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBOT19FUlJPUlNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEl0ZW1DbGlja01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBOZ1ByZXJlbmRlclZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtOZ1ByZXJlbmRlclZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudF0sXHJcbiAgZXhwb3J0czogW05nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJdGVtQ2xpY2tNb2R1bGVdLFxyXG4gIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtTW9kdWxlIHsgfVxyXG4iXX0=