ng-virtual-list 16.10.6 → 16.11.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 (212) hide show
  1. package/README.md +55 -98
  2. package/esm2022/lib/components/list-item/base/base-virtual-list-item-component.mjs +207 -0
  3. package/esm2022/lib/components/list-item/base/index.mjs +3 -0
  4. package/esm2022/lib/components/list-item/const/index.mjs +30 -0
  5. package/esm2022/lib/components/list-item/interfaces/index.mjs +2 -0
  6. package/esm2022/lib/components/list-item/interfaces/template-context.mjs +2 -0
  7. package/esm2022/lib/components/list-item/ng-virtual-list-item.component.mjs +93 -330
  8. package/esm2022/lib/components/list-item/utils/create-display-id.mjs +4 -0
  9. package/esm2022/lib/components/list-item/utils/index.mjs +3 -2
  10. package/esm2022/lib/components/ng-scroll-bar/const/index.mjs +9 -0
  11. package/esm2022/lib/components/ng-scroll-bar/enums/index.mjs +3 -0
  12. package/esm2022/lib/components/ng-scroll-bar/enums/scrollbar-states.mjs +7 -0
  13. package/esm2022/lib/components/ng-scroll-bar/interfaces/index.mjs +1 -1
  14. package/esm2022/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.mjs +2 -0
  15. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +25 -0
  16. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +128 -137
  17. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.module.mjs +4 -5
  18. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.service.mjs +36 -0
  19. package/esm2022/lib/components/ng-scroll-bar/types/index.mjs +2 -0
  20. package/esm2022/lib/components/ng-scroll-bar/types/scrollbar-state.mjs +2 -0
  21. package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +175 -0
  22. package/esm2022/lib/components/ng-scroll-view/const/index.mjs +5 -1
  23. package/esm2022/lib/components/ng-scroll-view/interfaces/scroll-to-params.mjs +1 -1
  24. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +103 -236
  25. package/esm2022/lib/components/ng-scroll-view/utils/calculate-direction.mjs +11 -0
  26. package/esm2022/lib/components/ng-scroll-view/utils/index.mjs +4 -0
  27. package/esm2022/lib/components/ng-scroll-view/utils/scroll-box.mjs +45 -0
  28. package/esm2022/lib/components/prerender-container/components/prerender-list/prerender-list.component.mjs +268 -0
  29. package/esm2022/lib/components/prerender-container/components/prerender-list/prerender-list.module.mjs +21 -0
  30. package/esm2022/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.component.mjs +78 -0
  31. package/esm2022/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.module.mjs +20 -0
  32. package/esm2022/lib/components/prerender-container/components/prerender-scroller/prerender-scroller.component.mjs +141 -0
  33. package/esm2022/lib/components/prerender-container/components/prerender-scroller/prerender-scroller.module.mjs +20 -0
  34. package/esm2022/lib/components/prerender-container/core/index.mjs +3 -0
  35. package/esm2022/lib/components/prerender-container/core/prerender-track-box.mjs +168 -0
  36. package/esm2022/lib/components/prerender-container/events/index.mjs +6 -0
  37. package/esm2022/lib/components/prerender-container/interfaces/index.mjs +2 -0
  38. package/esm2022/lib/components/prerender-container/interfaces/refresh-params.mjs +2 -0
  39. package/esm2022/lib/components/prerender-container/prerender-container.component.mjs +91 -0
  40. package/esm2022/lib/components/prerender-container/prerender-container.module.mjs +20 -0
  41. package/esm2022/lib/components/prerender-container/types/cache.mjs +2 -0
  42. package/esm2022/lib/components/prerender-container/types/index.mjs +2 -0
  43. package/esm2022/lib/components/scroller/const/index.mjs +2 -0
  44. package/esm2022/lib/components/scroller/ng-scroller.component.mjs +221 -112
  45. package/esm2022/lib/components/scroller/ng-scroller.module.mjs +5 -4
  46. package/esm2022/lib/components/scroller/utils/scroll-box.mjs +4 -4
  47. package/esm2022/lib/const/index.mjs +26 -18
  48. package/esm2022/lib/core/cache-map.mjs +154 -0
  49. package/esm2022/lib/core/track-box.mjs +941 -0
  50. package/esm2022/lib/core/tracker.mjs +201 -0
  51. package/esm2022/lib/directives/index.mjs +1 -1
  52. package/esm2022/lib/enums/snapping-method.mjs +1 -1
  53. package/esm2022/lib/enums/snapping-methods.mjs +4 -8
  54. package/esm2022/lib/interfaces/animation-params.mjs +2 -0
  55. package/esm2022/lib/interfaces/base-virtual-list-item-component.mjs +9 -0
  56. package/esm2022/lib/interfaces/index.mjs +2 -0
  57. package/esm2022/lib/interfaces/rect.mjs +2 -0
  58. package/esm2022/lib/interfaces/render-stabilizer-options.mjs +2 -0
  59. package/esm2022/lib/interfaces/scroll-event.mjs +2 -0
  60. package/esm2022/lib/interfaces/scroll-options.mjs +2 -0
  61. package/esm2022/lib/interfaces/scroll-params.mjs +2 -0
  62. package/esm2022/lib/interfaces/scroll-to-params.mjs +2 -0
  63. package/esm2022/lib/interfaces/size.mjs +2 -0
  64. package/esm2022/lib/models/display-object-config.model.mjs +1 -1
  65. package/esm2022/lib/models/display-object-measures.model.mjs +1 -1
  66. package/esm2022/lib/models/index.mjs +1 -1
  67. package/esm2022/lib/models/render-item-config.model.mjs +1 -1
  68. package/esm2022/lib/models/render-item-measures.model.mjs +1 -1
  69. package/esm2022/lib/ng-virtual-list-public.service.mjs +121 -0
  70. package/esm2022/lib/ng-virtual-list.component.mjs +1074 -889
  71. package/esm2022/lib/ng-virtual-list.module.mjs +5 -4
  72. package/esm2022/lib/ng-virtual-list.service.mjs +135 -40
  73. package/esm2022/lib/types/focus-item-params.mjs +2 -0
  74. package/esm2022/lib/types/index.mjs +1 -1
  75. package/esm2022/lib/types/scroll-direction.mjs +2 -0
  76. package/esm2022/lib/utils/animator/animator.mjs +1 -7
  77. package/esm2022/lib/utils/debounce.mjs +37 -7
  78. package/esm2022/lib/utils/event-emitter/event-emitter.mjs +105 -0
  79. package/esm2022/lib/utils/event-emitter/index.mjs +3 -0
  80. package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +2 -0
  81. package/esm2022/lib/utils/event-emitter/interfaces/index.mjs +2 -0
  82. package/esm2022/lib/utils/get-selector-by-item-id.mjs +5 -0
  83. package/esm2022/lib/utils/index.mjs +1 -1
  84. package/esm2022/lib/utils/list-validators.mjs +27 -0
  85. package/esm2022/lib/utils/screen-reader-formatter.mjs +43 -0
  86. package/esm2022/lib/utils/scroll-event.mjs +8 -5
  87. package/esm2022/lib/utils/snapping-method.mjs +2 -2
  88. package/esm2022/public-api.mjs +8 -2
  89. package/fesm2022/ng-virtual-list.mjs +5251 -4134
  90. package/fesm2022/ng-virtual-list.mjs.map +1 -1
  91. package/lib/components/list-item/base/base-virtual-list-item-component.d.ts +66 -0
  92. package/lib/components/list-item/base/index.d.ts +2 -0
  93. package/lib/components/list-item/const/index.d.ts +3 -0
  94. package/lib/components/list-item/interfaces/index.d.ts +2 -0
  95. package/lib/components/list-item/interfaces/template-context.d.ts +42 -0
  96. package/lib/components/list-item/ng-virtual-list-item.component.d.ts +9 -65
  97. package/lib/components/list-item/utils/create-display-id.d.ts +1 -0
  98. package/lib/components/list-item/utils/index.d.ts +2 -1
  99. package/lib/components/ng-scroll-bar/const/index.d.ts +3 -0
  100. package/lib/components/ng-scroll-bar/enums/index.d.ts +2 -0
  101. package/lib/components/ng-scroll-bar/enums/scrollbar-states.d.ts +5 -0
  102. package/lib/components/ng-scroll-bar/interfaces/index.d.ts +2 -1
  103. package/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.d.ts +26 -0
  104. package/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.d.ts +16 -0
  105. package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +35 -48
  106. package/lib/components/ng-scroll-bar/ng-scroll-bar.module.d.ts +1 -2
  107. package/lib/components/ng-scroll-bar/ng-scroll-bar.service.d.ts +22 -0
  108. package/lib/components/ng-scroll-bar/types/index.d.ts +2 -0
  109. package/lib/components/ng-scroll-bar/types/scrollbar-state.d.ts +2 -0
  110. package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +69 -0
  111. package/lib/components/ng-scroll-view/const/index.d.ts +3 -0
  112. package/lib/components/ng-scroll-view/interfaces/scroll-to-params.d.ts +1 -1
  113. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +8 -54
  114. package/lib/components/ng-scroll-view/utils/calculate-direction.d.ts +4 -0
  115. package/lib/components/ng-scroll-view/utils/index.d.ts +3 -0
  116. package/lib/components/ng-scroll-view/utils/scroll-box.d.ts +39 -0
  117. package/lib/components/prerender-container/components/prerender-list/prerender-list.component.d.ts +100 -0
  118. package/lib/components/prerender-container/components/prerender-list/prerender-list.module.d.ts +10 -0
  119. package/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.component.d.ts +17 -0
  120. package/lib/components/prerender-container/components/prerender-list-item/prerender-list-item.module.d.ts +9 -0
  121. package/lib/components/prerender-container/components/prerender-scroller/prerender-scroller.component.d.ts +62 -0
  122. package/lib/components/prerender-container/components/prerender-scroller/prerender-scroller.module.d.ts +9 -0
  123. package/lib/components/prerender-container/core/index.d.ts +2 -0
  124. package/lib/components/prerender-container/core/prerender-track-box.d.ts +35 -0
  125. package/lib/components/prerender-container/events/index.d.ts +6 -0
  126. package/lib/components/prerender-container/interfaces/index.d.ts +2 -0
  127. package/lib/components/prerender-container/interfaces/refresh-params.d.ts +16 -0
  128. package/lib/components/prerender-container/prerender-container.component.d.ts +39 -0
  129. package/lib/components/prerender-container/prerender-container.module.d.ts +9 -0
  130. package/lib/components/{substrate/types/substrate-style.d.ts → prerender-container/types/cache.d.ts} +7 -4
  131. package/lib/components/prerender-container/types/index.d.ts +2 -0
  132. package/lib/components/scroller/const/index.d.ts +1 -0
  133. package/lib/components/scroller/ng-scroller.component.d.ts +60 -29
  134. package/lib/components/scroller/ng-scroller.module.d.ts +2 -1
  135. package/lib/const/index.d.ts +25 -6
  136. package/lib/{utils → core}/cache-map.d.ts +4 -4
  137. package/lib/{utils → core}/track-box.d.ts +28 -21
  138. package/lib/{utils → core}/tracker.d.ts +8 -6
  139. package/lib/enums/snapping-method.d.ts +3 -3
  140. package/lib/enums/snapping-methods.d.ts +4 -8
  141. package/lib/{components/substrate/enums/substrate-styles.d.ts → interfaces/animation-params.d.ts} +6 -5
  142. package/lib/{models → interfaces}/base-virtual-list-item-component.d.ts +4 -3
  143. package/lib/interfaces/index.d.ts +9 -0
  144. package/lib/{types → interfaces}/rect.d.ts +1 -1
  145. package/lib/{components/substrate/enums/substrate-modes.d.ts → interfaces/render-stabilizer-options.d.ts} +5 -6
  146. package/lib/{models/scroll-event.model.d.ts → interfaces/scroll-event.d.ts} +8 -4
  147. package/lib/{models/scroll-options.model.d.ts → interfaces/scroll-options.d.ts} +5 -1
  148. package/lib/interfaces/scroll-params.d.ts +16 -0
  149. package/lib/interfaces/scroll-to-params.d.ts +7 -0
  150. package/lib/{types → interfaces}/size.d.ts +1 -1
  151. package/lib/models/display-object-config.model.d.ts +1 -15
  152. package/lib/models/display-object-measures.model.d.ts +1 -5
  153. package/lib/models/index.d.ts +1 -4
  154. package/lib/models/render-item-config.model.d.ts +4 -0
  155. package/lib/models/render-item-measures.model.d.ts +1 -5
  156. package/lib/ng-virtual-list-public.service.d.ts +93 -0
  157. package/lib/ng-virtual-list.component.d.ts +203 -152
  158. package/lib/ng-virtual-list.module.d.ts +3 -2
  159. package/lib/ng-virtual-list.service.d.ts +59 -16
  160. package/lib/types/focus-item-params.d.ts +7 -0
  161. package/lib/types/index.d.ts +4 -7
  162. package/lib/{models/scroll-direction.model.d.ts → types/scroll-direction.d.ts} +1 -0
  163. package/lib/utils/animator/animator.d.ts +0 -6
  164. package/lib/utils/debounce.d.ts +17 -8
  165. package/lib/utils/{event-emitter.d.ts → event-emitter/event-emitter.d.ts} +3 -3
  166. package/lib/utils/event-emitter/index.d.ts +4 -0
  167. package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +37 -0
  168. package/lib/utils/event-emitter/interfaces/index.d.ts +2 -0
  169. package/lib/utils/get-selector-by-item-id.d.ts +2 -0
  170. package/lib/utils/index.d.ts +2 -2
  171. package/lib/utils/list-validators.d.ts +2 -0
  172. package/lib/utils/screen-reader-formatter.d.ts +7 -0
  173. package/lib/utils/scroll-event.d.ts +8 -4
  174. package/package.json +1 -1
  175. package/public-api.d.ts +7 -1
  176. package/esm2022/lib/components/substrate/enums/index.mjs +0 -4
  177. package/esm2022/lib/components/substrate/enums/substrate-modes.mjs +0 -16
  178. package/esm2022/lib/components/substrate/enums/substrate-styles.mjs +0 -15
  179. package/esm2022/lib/components/substrate/index.mjs +0 -5
  180. package/esm2022/lib/components/substrate/substrate.component.mjs +0 -379
  181. package/esm2022/lib/components/substrate/substrate.module.mjs +0 -19
  182. package/esm2022/lib/components/substrate/types/index.mjs +0 -2
  183. package/esm2022/lib/components/substrate/types/substrate-mode.mjs +0 -2
  184. package/esm2022/lib/components/substrate/types/substrate-style.mjs +0 -2
  185. package/esm2022/lib/models/base-virtual-list-item-component.mjs +0 -9
  186. package/esm2022/lib/models/scroll-direction.model.mjs +0 -2
  187. package/esm2022/lib/models/scroll-event.model.mjs +0 -2
  188. package/esm2022/lib/models/scroll-options.model.mjs +0 -2
  189. package/esm2022/lib/types/animation-params.mjs +0 -2
  190. package/esm2022/lib/types/color.mjs +0 -2
  191. package/esm2022/lib/types/gradient-color.mjs +0 -2
  192. package/esm2022/lib/types/rect.mjs +0 -2
  193. package/esm2022/lib/types/rounded-corner.mjs +0 -2
  194. package/esm2022/lib/types/scrollbar-theme.mjs +0 -2
  195. package/esm2022/lib/types/size.mjs +0 -2
  196. package/esm2022/lib/utils/cache-map.mjs +0 -154
  197. package/esm2022/lib/utils/event-emitter.mjs +0 -105
  198. package/esm2022/lib/utils/get-shape-min-size.mjs +0 -13
  199. package/esm2022/lib/utils/track-box.mjs +0 -924
  200. package/esm2022/lib/utils/tracker.mjs +0 -178
  201. package/lib/components/substrate/enums/index.d.ts +0 -3
  202. package/lib/components/substrate/index.d.ts +0 -7
  203. package/lib/components/substrate/substrate.component.d.ts +0 -91
  204. package/lib/components/substrate/substrate.module.d.ts +0 -8
  205. package/lib/components/substrate/types/index.d.ts +0 -3
  206. package/lib/components/substrate/types/substrate-mode.d.ts +0 -10
  207. package/lib/types/animation-params.d.ts +0 -10
  208. package/lib/types/color.d.ts +0 -7
  209. package/lib/types/gradient-color.d.ts +0 -8
  210. package/lib/types/rounded-corner.d.ts +0 -7
  211. package/lib/types/scrollbar-theme.d.ts +0 -20
  212. package/lib/utils/get-shape-min-size.d.ts +0 -8
package/README.md CHANGED
@@ -151,13 +151,13 @@ const HORIZONTAL_ITEMS: IVirtualListCollection<ICollectionItem> = Array.from({ l
151
151
  export class AppComponent {
152
152
  horizontalItems = HORIZONTAL_ITEMS;
153
153
 
154
- onItemClick(item: IRenderVirtualListItem<ICollectionItem> | undefined) {
154
+ onItemClick(item: IRenderVirtualListItem<ICollectionItem> | null) {
155
155
  if (item) {
156
156
  console.info(`Click: (ID: ${item.id}) Item ${item.data.name}`);
157
157
  }
158
158
  }
159
159
 
160
- onSelect(data: Array<Id> | Id | undefined) {
160
+ onSelect(data: Array<Id> | Id | null) {
161
161
  console.info(`Select: ${JSON.stringify(data)}`);
162
162
  }
163
163
  }
@@ -219,13 +219,13 @@ export class AppComponent {
219
219
  horizontalGroupItems = HORIZONTAL_GROUP_ITEMS;
220
220
  horizontalGroupItemConfigMap = HORIZONTAL_GROUP_ITEM_CONFIG_MAP;
221
221
 
222
- onItemClick(item: IRenderVirtualListItem<ICollectionItem> | undefined) {
222
+ onItemClick(item: IRenderVirtualListItem<ICollectionItem> | null) {
223
223
  if (item) {
224
224
  console.info(`Click: (ID: ${item.id}) Item ${item.data.name}`);
225
225
  }
226
226
  }
227
227
 
228
- onSelect(data: Array<Id> | Id | undefined) {
228
+ onSelect(data: Array<Id> | Id | null) {
229
229
  console.info(`Select: ${JSON.stringify(data)}`);
230
230
  }
231
231
  }
@@ -288,6 +288,7 @@ Template:
288
288
  <span>{{data.name}}</span>
289
289
  </div>
290
290
  </ng-container>
291
+ </ng-template>
291
292
  ```
292
293
 
293
294
  #### With snapping
@@ -478,79 +479,32 @@ export class AppComponent {
478
479
 
479
480
  ## 🖼️ Stylization
480
481
 
481
- - Scrollbar theme
482
- ```ts
483
- import { NgVirtualListComponent, GradientColor, RoundedCorner, ScrollBarTheme } from 'ng-virtual-list';
484
-
485
- const X_LITE_BLUE_PLASMA_GRADIENT: GradientColor = ["rgba(133, 142, 255, 0)", "rgb(0, 133, 160)"],
486
- ROUND_CORNER: RoundedCorner = [3, 3, 3, 3],
487
- SCROLLBAR_GRADIENT: ScrollBarTheme = {
488
- fill: ["rgba(51, 0, 97, 1)", "rgba(73, 0, 97, 1)"],
489
- hoverFill: ["rgba(73, 6, 133, 1)", "rgba(73, 6, 133, 1)"],
490
- pressedFill: ["rgba(73, 6, 150, 1)", "rgba(95, 0, 150, 1)"],
491
- strokeGradientColor: X_LITE_BLUE_PLASMA_GRADIENT,
492
- strokeAnimationDuration: 1000,
493
- thickness: 6,
494
- roundCorner: ROUND_CORNER,
495
- rippleColor: 'rgba(255,255,255,0.5)',
496
- rippleEnabled: true,
497
- };
498
-
499
- @Component({
500
- selector: 'app-root',
501
- imports: [FormsModule, NgVirtualListComponent],
502
- templateUrl: './app.component.html',
503
- styleUrl: './app.component.scss'
504
- })
505
- export class AppComponent {
506
- scrollbarTheme = SCROLLBAR_GRADIENT;
482
+ ### Scrollbar stylization
507
483
 
508
- items = Array.from({ length: 100000 }, (_, i) => ({ id: i, name: `Item #${i}` }));
484
+ ```scss
485
+ .list::part(scrollbar-thumb__shape) {
486
+ background-color: rgba(51, 0, 97, 1);
487
+ border-radius: 3px;
509
488
  }
510
-
511
489
  ```
512
490
 
513
491
  ```html
514
- <ng-virtual-list [scrollbarTheme]="scrollbarTheme" [items]="items" [itemRenderer]="itemRenderer"></ng-virtual-list>
492
+ <ng-virtual-list class="list" [scrollbarThickness]="12" [items]="items" [itemRenderer]="itemRenderer"></ng-virtual-list>
515
493
 
516
- <ng-template #horizontalItemRenderer let-data="data" let-config="config">
517
- <div *ngIf="data" [ngClass]="{'list__h-container': true, 'selected': config.selected}">
518
- <span>{{data.name}}</span>
519
- </div>
494
+ <ng-template #itemRenderer let-data="data" let-config="config">
495
+ <span>{{data.name}}</span>
520
496
  </ng-template>
521
497
  ```
522
498
 
499
+ ### Scrollbar castomization
500
+
501
+ [Examples](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/src/app/app.component.html)
502
+ [CustomScrollbarComponent](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/src/app/components/custom-scrollbar/custom-scrollbar.component.ts)
503
+
523
504
  List items are encapsulated in shadowDOM, so to override default styles you need to use ::part access
524
505
 
525
506
  - Customize a scroll area of list
526
507
  ```css
527
- .list::part(scroller) {
528
- scroll-behavior: auto;
529
-
530
- /* custom scrollbar */
531
- &::-webkit-scrollbar {
532
- width: 16px;
533
- height: 16px;
534
- }
535
-
536
- &::-webkit-scrollbar-track {
537
- background-color: #ffffff;
538
- }
539
-
540
- &::-webkit-scrollbar-thumb {
541
- background-color: #d6dee1;
542
- border-radius: 20px;
543
- border: 6px solid transparent;
544
- background-clip: content-box;
545
- min-width: 60px;
546
- min-height: 60px;
547
- }
548
-
549
- &::-webkit-scrollbar-thumb:hover {
550
- background-color: #a8bbbf;
551
- }
552
- }
553
-
554
508
  .list {
555
509
  border-radius: 3px;
556
510
  box-shadow: 1px 2px 8px 4px rgba(0, 0, 0, 0.075);
@@ -582,8 +536,8 @@ List items are encapsulated in shadowDOM, so to override default styles you need
582
536
  Selecting even elements:
583
537
 
584
538
  ```html
585
- <ng-virtual-list class="list" direction="horizontal" [items]="horizontalItems" [bufferSize]="1"
586
- [itemRenderer]="horizontalItemRenderer" [dynamicSize]="false" [itemSize]="54"></ng-virtual-list>
539
+ <ng-virtual-list class="list" direction="horizontal" [items]="horizontalItems" [bufferSize]="1" [maxBufferSize]="5"
540
+ [itemRenderer]="horizontalItemRenderer" [itemSize]="54"></ng-virtual-list>
587
541
 
588
542
  <ng-template #horizontalItemRenderer let-data="data" let-config="config">
589
543
  <div *ngIf="data" [ngClass]="{'item-container': true, 'even': config.even}">
@@ -610,41 +564,44 @@ Inputs
610
564
 
611
565
  | Property | Type | Description |
612
566
  |---|---|---|
613
- | id | number | Readonly. Returns the unique identifier of the component. |
614
- | items | [IVirtualListCollection](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/collection.model.ts) | Collection of list items. The collection of elements must be immutable. |
615
- | itemSize | number? = 24 | If direction = 'vertical', then the height of a typical element. If direction = 'horizontal', then the width of a typical element. If the dynamicSize property is true, the items in the list can have different sizes, and you must specify the itemSize property to adjust the sizes of the items in the unallocated area. |
567
+ | animationParams | [IAnimationParams](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/animation-params.ts)? = { scrollToItem: 50, navigateToItem: 150, navigateByKeyboard: 50 } | Animation parameters. The default value is "{ scrollToItem: 50, navigateToItem: 150, , navigateByKeyboard: 50 }". |
616
568
  | bufferSize | number? = 2 | Number of elements outside the scope of visibility. Default value is 2. |
617
569
  | maxBufferSize | number? = 10 | Maximum number of elements outside the scope of visibility. Default value is 10. If maxBufferSize is set to be greater than bufferSize, then adaptive buffer mode is enabled. The greater the scroll size, the more elements are allocated for rendering. |
618
- | itemRenderer | TemplateRef | Rendering element template. |
619
- | methodForSelecting | [MethodForSelecting](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/method-for-selecting.ts) | Method for selecting list items. Default value is 'none'. 'select' - List items are selected one by one. 'multi-select' - Multiple selection of list items. 'none' - List items are not selectable. |
620
- | itemConfigMap | [IVirtualListItemConfigMap?](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/item-config-map.model.ts) | Sets `sticky` position and `selectable` for the list item element. If `sticky` position is greater than `0`, then `sticky` position is applied. If the `sticky` value is greater than `0`, then the `sticky` position mode is enabled for the element. `1` - position start, `2` - position end. Default value is `0`. `selectable` determines whether an element can be selected or not. Default value is `true`. |
570
+ | collapsedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> | Sets the collapsed items. |
621
571
  | collapseByClick | boolean? = true | If `false`, the element is collapsed using the config.collapse method passed to the template; if `true`, the element is collapsed by clicking on it. The default value is `true`. |
622
572
  | collectionMode | [CollectionMode? = 'normal'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/collection-mode.ts) | Determines the action modes for collection elements. Default value is `normal`. |
623
- | selectByClick | boolean? = true | If `false`, the element is selected using the config.select method passed to the template; if `true`, the element is selected by clicking on it. The default value is `true`. |
624
- | snap | boolean? = false | Determines whether elements will snap. Default value is "false". |
625
- | snappingMethod | [SnappingMethod? = 'normal'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts) | Snapping method. 'normal' - Normal group rendering. 'advanced' - The group is rendered on a transparent background. 'chat' - The group is rendered on a background. List items below the group are not rendered. |
626
573
  | direction | [Direction? = 'vertical'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/direction.ts) | Determines the direction in which elements are placed. Default value is "vertical". |
627
574
  | dynamicSize | boolean? = true | If true, items in the list may have different sizes, and the itemSize property must be specified to adjust the sizes of items in the unallocated area. If false then the items in the list have a fixed size specified by the itemSize property. The default value is true. |
628
575
  | enabledBufferOptimization | boolean? = true | Experimental! Enables buffer optimization. Can only be used if items in the collection are not added or updated. |
629
- | trackBy | string? = 'id' | The name of the property by which tracking is performed. |
630
- | selectedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \| undefined | Sets the selected items. |
631
- | collapsedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> | Sets the collapsed items. |
632
- | screenReaderMessage | string? = "Showing items $1 to $2" | Message for screen reader. The message format is: "some text `$1` some text `$2`", where `$1` is the number of the first element of the screen collection, `$2` is the number of the last element of the screen collection. |
576
+ | id | number | Readonly. Returns the unique identifier of the component. |
577
+ | items | [IVirtualListCollection](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/collection.model.ts) | Collection of list items. The collection of elements must be immutable. |
578
+ | itemSize | number? = 24 | If direction = 'vertical', then the height of a typical element. If direction = 'horizontal', then the width of a typical element. If the dynamicSize property is true, the items in the list can have different sizes, and you must specify the itemSize property to adjust the sizes of the items in the unallocated area. |
579
+ | itemRenderer | TemplateRef | Rendering element template. |
580
+ | itemConfigMap | [IVirtualListItemConfigMap?](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/item-config-map.model.ts) | Sets `sticky` position and `selectable` for the list item element. If `sticky` position is greater than `0`, then `sticky` position is applied. If the `sticky` value is greater than `0`, then the `sticky` position mode is enabled for the element. `1` - position start, `2` - position end. Default value is `0`. `selectable` determines whether an element can be selected or not. Default value is `true`. |
581
+ | methodForSelecting | [MethodForSelecting](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/method-for-selecting.ts) | Method for selecting list items. Default value is 'none'. 'select' - List items are selected one by one. 'multi-select' - Multiple selection of list items. 'none' - List items are not selectable. |
633
582
  | langTextDir | [TextDirection? = 'ltr'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/text-direction.ts) | A string indicating the direction of text for the locale. Can be either "ltr" (left-to-right) or "rtl" (right-to-left). |
634
583
  | loading | boolean? = false | If `true`, the scrollBar goes into loading state. The default value is `false`. |
635
- | scrollbarTheme | [ScrollBarTheme?](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/scrollbar-theme.ts) | Scrollbar theme. |
584
+ | overscrollEnabled | boolean? = true | Determines whether the overscroll (re-scroll) feature will work. The default value is "true". |
585
+ | selectByClick | boolean? = true | If `false`, the element is selected using the config.select method passed to the template; if `true`, the element is selected by clicking on it. The default value is `true`. |
586
+ | snap | boolean? = false | Determines whether elements will snap. Default value is "false". |
587
+ | selectedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \| null | Sets the selected items. |
588
+ | screenReaderMessage | string? = "Showing items $1 to $2" | Message for screen reader. The message format is: "some text `$1` some text `$2`", where `$1` is the number of the first element of the screen collection, `$2` is the number of the last element of the screen collection. |
636
589
  | clickDistance | number? = 40 | The maximum scroll distance at which a click event is triggered. |
637
590
  | waitForPreparation | boolean? = true | If true, it will wait until the list items are fully prepared before displaying them.. The default value is `true`. |
638
591
  | scrollStartOffset | number? = 0 | Sets the scroll start offset value; Default value is "0". |
639
592
  | scrollEndOffset | number? = 0 | Sets the scroll end offset value; Default value is "0". |
640
- | snapScrollToBottom | boolean? = false | Determines whether the scroll will be anchored to the end of the list at startup.. Default value is "false". |
593
+ | snappingMethod | [SnappingMethod](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts) | Snapping method. Default value is [SnappingMethods.STANDART](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts). [SnappingMethods.STANDART](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts) - Classic group visualization. [SnappingMethods.ADVANCED](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts) - A mask is applied to the viewport area so that the background is displayed underneath the attached group. |
594
+ | snapScrollToStart | boolean? = true | Determines whether the scroll will be anchored to the start of the list. Default value is "true". This property takes precedence over the snapScrollToEnd property. That is, if snapScrollToStart and snapScrollToEnd are enabled, the list will initially snap to the beginning; if you move the scroll bar to the end, the list will snap to the end. If snapScrollToStart is disabled and snapScrollToEnd is enabled, the list will snap to the end; if you move the scroll bar to the beginning, the list will snap to the beginning. If both snapScrollToStart and snapScrollToEnd are disabled, the list will never snap to the beginning or end. |
595
+ | snapScrollToEnd | boolean? = true | Determines whether the scroll will be anchored to the утв of the list. Default value is "true". That is, if snapScrollToStart and snapScrollToEnd are enabled, the list will initially snap to the beginning; if you move the scroll bar to the end, the list will snap to the end. If snapScrollToStart is disabled and snapScrollToEnd is enabled, the list will snap to the end; if you move the scroll bar to the beginning, the list will snap to the beginning. If both snapScrollToStart and snapScrollToEnd are disabled, the list will never snap to the beginning or end. |
641
596
  | snapToEndTransitionInstantOffset | number? = 0 | Sets the offset value; if the scroll area value is exceeded, the scroll animation will be disabled. Default value is "0". |
642
- | scrollbarMinSize | number? = 80 | Minimum scrollbar size. |
643
597
  | scrollbarEnabled | boolean? = true | Determines whether the scrollbar is shown or not. The default value is "true". |
644
598
  | scrollbarInteractive | boolean? = true | Determines whether scrolling using the scrollbar will be possible. The default value is "true". |
645
- | overscrollEnabled | boolean? = true | Determines whether the overscroll (re-scroll) feature will work. The default value is "true". |
646
- | animationParams | [IAnimationParams](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/animation-params.ts)? = { scrollToItem: 50, navigateToItem: 150 } | Animation parameters. The default value is "{ scrollToItem: 50, navigateToItem: 150 }". |
599
+ | scrollbarMinSize | number? = 80 | Minimum scrollbar size. |
600
+ | scrollbarThickness | number? = 6 | Scrollbar thickness. |
601
+ | scrollbarThumbRenderer | TemplateRef<any> \| null = null | Scrollbar customization template. |
602
+ | scrollbarThumbParams | {[propName: string]: any;} \| null | Additional options for the scrollbar. |
647
603
  | scrollBehavior | ScrollBehavior? = 'smooth' | Defines the scrolling behavior for any element on the page. The default value is "smooth". |
604
+ | trackBy | string? = 'id' | The name of the property by which tracking is performed. |
648
605
 
649
606
  <br/>
650
607
 
@@ -652,12 +609,12 @@ Outputs
652
609
 
653
610
  | Event | Type | Description |
654
611
  |---|---|---|
655
- | onItemClick | [IRenderVirtualListItem](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/render-item.model.ts) \| undefined | Fires when an element is clicked. |
656
- | onScroll | ([IScrollEvent](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/scroll-event.model.ts)) => void | Fires when the list has been scrolled. |
657
- | onScrollEnd | ([IScrollEvent](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/scroll-event.model.ts)) => void | Fires when the list has completed scrolling. |
658
- | onSelect | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \| undefined | Fires when an elements are selected. |
659
- | onCollapse | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \| undefined | Fires when elements are collapsed. |
660
- | onViewportChange | [ISize](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/size.ts) | Fires when the viewport size is changed. |
612
+ | onItemClick | [IRenderVirtualListItem](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/render-item.model.ts) \| null | Fires when an element is clicked. |
613
+ | onScroll | ([IScrollEvent](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/scroll-event.ts)) => void | Fires when the list has been scrolled. |
614
+ | onScrollEnd | ([IScrollEvent](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/scroll-event.ts)) => void | Fires when the list has completed scrolling. |
615
+ | onSelect | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \| null | Fires when an elements are selected. |
616
+ | onCollapse | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \| null | Fires when elements are collapsed. |
617
+ | onViewportChange | [ISize](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/size.ts) | Fires when the viewport size is changed. |
661
618
  | onScrollReachStart | void | Fires when the scroll reaches the start. |
662
619
  | onScrollReachEnd | void | Fires when the scroll reaches the end. |
663
620
 
@@ -667,20 +624,19 @@ Methods
667
624
 
668
625
  | Method | Type | Description |
669
626
  |--|--|--|
670
- | scrollTo | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), cb?: () => void, options?: [IScrollOptions](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/scroll-options.model.ts)) | The method scrolls the list to the element with the given `id` and returns the value of the scrolled area. |
671
- | scrollToStart | (cb?: () => void, options?: [IScrollOptions](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/scroll-options.model.ts)) | Scrolls the scroll area to the first item in the collection. |
672
- | scrollToEndItem | (cb?: () => void, options?: [IScrollOptions](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/scroll-options.model.ts)) | Scrolls the scroll area to the last item in the collection. |
673
- | scrollToEnd | | Scrolls the list to the end of the content height. |
674
- | getItemBounds | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior?: ScrollBehavior) => void | Returns the bounds of an element with a given id |
627
+ | scrollTo | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), (cb: () => void) \| null = null, options: [IScrollOptions](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/scroll-options.ts) \| null = null) | The method scrolls the list to the element with the given `id` and returns the value of the scrolled area. |
628
+ | scrollToStart | (cb: (() => void) \| null = null, options: [IScrollOptions](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/scroll-options.ts) \| null = null) | Scrolls the scroll area to the first item in the collection. |
629
+ | scrollToEnd | (cb: (() => void) \| null = null, options: [IScrollOptions](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/scroll-options.ts) \| null = null) | Scrolls the list to the end of the content height. |
630
+ | getItemBounds | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)) => [ISize \| null](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/interfaces/size.ts) | Returns the bounds of an element with a given id |
675
631
  | focus | [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), align: [FocusAlignment](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/focus-alignment.ts) = [FocusAlignments.NONE](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/focus-alignments.ts) | Focus an list item by a given id. |
676
- | stopSnappingScrollToEnd | | Stops the list from snapping to the bottom edge. |
632
+ | preventSnapping | | Prevents the list from snapping to its start or end edge. |
677
633
 
678
634
  <br/>
679
635
 
680
636
  ### Template API
681
637
 
682
638
  ```html
683
- <ng-template #itemRenderer let-data="data" let-config="config" let-measures="measures">
639
+ <ng-template #itemRenderer let-data="data" let-config="config" let-measures="measures" let-api="api">
684
640
  <!-- content -->
685
641
  </ng-template>
686
642
  ```
@@ -689,9 +645,10 @@ Properties
689
645
 
690
646
  | Property | Type | Description |
691
647
  |--|--|--|
648
+ | api | [NgVirtualListPublicService](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/ng-virtual-list-public.service.ts) | List API Provider. |
692
649
  | data | {\[id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \], [otherProps: string]: any;} | Collection item data. |
693
650
  | config | [IDisplayObjectConfig](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/display-object-config.model.ts) | Display object configuration. A set of `select`, `collapse`, and `focus` methods are also provided. |
694
- | measures | [IDisplayObjectMeasures](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/display-object-measures.model.ts) \| undefined | Display object metrics. |
651
+ | measures | [IDisplayObjectMeasures](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/models/display-object-measures.model.ts) \| null | Display object metrics. |
695
652
 
696
653
  <br/>
697
654
 
@@ -0,0 +1,207 @@
1
+ import { ChangeDetectorRef, DestroyRef, ElementRef, inject } from '@angular/core';
2
+ import { DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PART_DEFAULT_ITEM, PART_ITEM_COLLAPSED, PART_ITEM_EVEN, PART_ITEM_FOCUSED, PART_ITEM_NEW, PART_ITEM_ODD, PART_ITEM_SELECTED, PART_ITEM_SNAPPED, POSITION_ABSOLUTE, PX, SIZE_100_PERSENT, SIZE_AUTO, TRANSLATE_3D, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, } from '../../../const';
3
+ import { CLASS_NAME_FOCUS, CLASS_NAME_SNAPPED, CLASS_NAME_SNAPPED_OUT, DEFAULT_TEMPLATE_CONTEXT, ID, ITEM_ID, POSITION, POSITION_ZERO, TRANSLATE_3D_HIDDEN, } from '../const';
4
+ import { TextDirections } from '../../../enums';
5
+ import { NgVirtualListPublicService } from '../../../ng-virtual-list-public.service';
6
+ import { BehaviorSubject, combineLatest, tap } from 'rxjs';
7
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
+ /**
9
+ * BaseVirtualListItemComponent
10
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/components/list-item/base/base-virtual-list-item-component.ts
11
+ * @author Evgenii Alexandrovich Grebennikov
12
+ * @email djonnyx@gmail.com
13
+ */
14
+ export class BaseVirtualListItemComponent {
15
+ _apiService = inject(NgVirtualListPublicService);
16
+ _cdr = inject(ChangeDetectorRef);
17
+ _destroyRef = inject(DestroyRef);
18
+ _id;
19
+ get id() {
20
+ return this._id;
21
+ }
22
+ _listId;
23
+ get listId() {
24
+ return this._listId;
25
+ }
26
+ _displayId;
27
+ get displayId() {
28
+ return this._displayId;
29
+ }
30
+ _isSelected = false;
31
+ _isCollapsed = false;
32
+ _$config = new BehaviorSubject({});
33
+ $config = this._$config.asObservable();
34
+ _$measures = new BehaviorSubject(null);
35
+ $measures = this._$measures.asObservable();
36
+ _$focused = new BehaviorSubject(false);
37
+ $focused = this._$focused.asObservable();
38
+ _$part = new BehaviorSubject(PART_DEFAULT_ITEM);
39
+ $part = this._$part.asObservable();
40
+ _data = null;
41
+ get data() { return this._data; }
42
+ _$data = new BehaviorSubject(this._data);
43
+ $data = this._$data.asObservable();
44
+ set item(v) {
45
+ if (this._data === v || this._data?.id === -1 || !v) {
46
+ return;
47
+ }
48
+ this._data = v;
49
+ this.updatePartStr(v, this._isSelected, this._isCollapsed);
50
+ this.updateConfig(v);
51
+ this.updateMeasures(v);
52
+ this.update();
53
+ this._$data.next(v);
54
+ }
55
+ _$classes = new BehaviorSubject({});
56
+ $classes = this._$classes.asObservable();
57
+ _$index = new BehaviorSubject(-1);
58
+ $index = this._$index.asObservable();
59
+ _$templateContext = new BehaviorSubject(DEFAULT_TEMPLATE_CONTEXT);
60
+ $templateContext = this._$templateContext.asObservable();
61
+ regular = false;
62
+ _scrollBarSize = 0;
63
+ _langTextDir = TextDirections.LTR;
64
+ _regularLength = SIZE_100_PERSENT;
65
+ set regularLength(v) {
66
+ if (this._regularLength === v) {
67
+ return;
68
+ }
69
+ this._regularLength = v;
70
+ this.update();
71
+ }
72
+ get item() {
73
+ return this._data;
74
+ }
75
+ get itemId() {
76
+ return this._data?.id;
77
+ }
78
+ itemRenderer;
79
+ set renderer(v) {
80
+ if (this.itemRenderer === v) {
81
+ return;
82
+ }
83
+ this.itemRenderer = v;
84
+ this._cdr.markForCheck();
85
+ }
86
+ _elementRef = inject(ElementRef);
87
+ get element() {
88
+ return this._elementRef.nativeElement;
89
+ }
90
+ constructor() {
91
+ const $data = this.$data, $config = this.$config, $measures = this.$measures, $focused = this.$focused;
92
+ combineLatest([$data, $focused]).pipe(takeUntilDestroyed(this._destroyRef), tap(([data, focused]) => {
93
+ this._$classes.next({
94
+ [CLASS_NAME_SNAPPED]: data?.config?.snapped ?? false, [CLASS_NAME_SNAPPED_OUT]: data?.config?.snappedOut ?? false,
95
+ [CLASS_NAME_FOCUS]: focused,
96
+ });
97
+ })).subscribe();
98
+ $config.pipe(takeUntilDestroyed(this._destroyRef), tap(config => {
99
+ this._$index.next(config?.tabIndex ?? -1);
100
+ })).subscribe();
101
+ combineLatest([$data, $config, $measures]).pipe(takeUntilDestroyed(this._destroyRef), tap(([data, config, measures]) => {
102
+ this._$templateContext.next({
103
+ data: data?.data, prevData: data?.previouseData, nextData: data?.nextData, measures,
104
+ config, reseted: false, index: data?.index ?? -1, api: this._apiService,
105
+ });
106
+ })).subscribe();
107
+ }
108
+ updateMeasures(v) {
109
+ this._$measures.next(v?.measures ? { ...v.measures } : null);
110
+ }
111
+ updateConfig(v) {
112
+ this._$config.next({
113
+ ...v?.config || {}, selected: this._isSelected, collapsed: this._isCollapsed, focused: this._$focused.getValue(),
114
+ });
115
+ }
116
+ update() {
117
+ const data = this._data, regular = this.regular, length = this._regularLength, el = this._elementRef.nativeElement;
118
+ if (data) {
119
+ el.setAttribute(ITEM_ID, `${data.id}`);
120
+ const styles = el.style;
121
+ styles.zIndex = data.config.zIndex;
122
+ styles.position = POSITION_ABSOLUTE;
123
+ if (data.config.isStub === true) {
124
+ el.style.visibility = VISIBILITY_HIDDEN;
125
+ }
126
+ if (regular) {
127
+ el.setAttribute(POSITION, POSITION_ZERO);
128
+ styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? (this._langTextDir === TextDirections.RTL ? this._scrollBarSize : 0) : data.measures.delta}${PX}, ${data.config.isVertical ? data.measures.delta : 0}${PX}, ${POSITION_ZERO})`;
129
+ }
130
+ else {
131
+ el.setAttribute(POSITION, `${data.config.isVertical ? data.measures.y : data.measures.x}`);
132
+ styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.x}${PX}, ${data.config.isVertical ? data.measures.y : 0}${PX}, ${POSITION_ZERO})`;
133
+ }
134
+ styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : SIZE_100_PERSENT;
135
+ styles.width = data.config.isVertical ? regular ? length : SIZE_100_PERSENT : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
136
+ }
137
+ else {
138
+ el.removeAttribute(ID);
139
+ }
140
+ }
141
+ updatePartStr(v, isSelected, isCollapsed) {
142
+ let odd = false;
143
+ if (v?.index !== undefined) {
144
+ odd = v.index % 2 === 0;
145
+ }
146
+ let part = PART_DEFAULT_ITEM;
147
+ part += odd ? PART_ITEM_ODD : PART_ITEM_EVEN;
148
+ if (v ? v.config.snapped : false) {
149
+ part += PART_ITEM_SNAPPED;
150
+ }
151
+ if (isSelected) {
152
+ part += PART_ITEM_SELECTED;
153
+ }
154
+ if (isCollapsed) {
155
+ part += PART_ITEM_COLLAPSED;
156
+ }
157
+ if (v ? v.config.new : false) {
158
+ part += PART_ITEM_NEW;
159
+ }
160
+ if (this._$focused.getValue()) {
161
+ part += PART_ITEM_FOCUSED;
162
+ }
163
+ this._$part.next(part);
164
+ }
165
+ getBounds() {
166
+ const el = this._elementRef.nativeElement, { width, height } = el.getBoundingClientRect();
167
+ return { width: width > 0 ? width : 1, height: height > 0 ? height : 1, };
168
+ }
169
+ show() {
170
+ const el = this._elementRef.nativeElement, styles = el.style;
171
+ styles.zIndex = this._data?.config?.zIndex ?? DEFAULT_ZINDEX;
172
+ if (this.regular) {
173
+ if (styles.display === DISPLAY_BLOCK) {
174
+ return;
175
+ }
176
+ styles.display = DISPLAY_BLOCK;
177
+ }
178
+ else {
179
+ const isStub = this._data?.config?.isStub ?? false;
180
+ if (!isStub) {
181
+ if (styles.visibility === VISIBILITY_VISIBLE) {
182
+ return;
183
+ }
184
+ styles.visibility = VISIBILITY_VISIBLE;
185
+ }
186
+ }
187
+ }
188
+ hide() {
189
+ const el = this._elementRef.nativeElement, styles = el.style;
190
+ styles.position = POSITION_ABSOLUTE;
191
+ styles.transform = TRANSLATE_3D_HIDDEN;
192
+ styles.zIndex = HIDDEN_ZINDEX;
193
+ if (this.regular) {
194
+ if (styles.display === DISPLAY_NONE) {
195
+ return;
196
+ }
197
+ styles.display = DISPLAY_NONE;
198
+ }
199
+ else {
200
+ if (styles.visibility === VISIBILITY_HIDDEN) {
201
+ return;
202
+ }
203
+ styles.visibility = VISIBILITY_HIDDEN;
204
+ }
205
+ }
206
+ }
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9iYXNlL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUkvRixPQUFPLEVBQ0wsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFDbEgsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQy9ILFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEdBQy9ELE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsR0FDbEosTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFpQixjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEU7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8s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O1lBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7U0FDaEM7YUFBTTtZQUNMLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUM7WUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssa0JBQWtCLEVBQUU7b0JBQzVDLE9BQU87aUJBQ1I7Z0JBQ0QsTUFBTSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQzthQUN4QztTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDdkMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztRQUNwQyxNQUFNLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssWUFBWSxFQUFFO2dCQUNuQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztTQUMvQjthQUFNO1lBQ0wsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGlCQUFpQixFQUFFO2dCQUMzQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIGluamVjdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZW5kZXItaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IElEaXNwbGF5T2JqZWN0Q29uZmlnLCBJRGlzcGxheU9iamVjdE1lYXN1cmVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQQVJUX0RFRkFVTFRfSVRFTSwgUEFSVF9JVEVNX0NPTExBUFNFRCwgUEFSVF9JVEVNX0VWRU4sXHJcbiAgUEFSVF9JVEVNX0ZPQ1VTRUQsIFBBUlRfSVRFTV9ORVcsIFBBUlRfSVRFTV9PREQsIFBBUlRfSVRFTV9TRUxFQ1RFRCwgUEFSVF9JVEVNX1NOQVBQRUQsIFBPU0lUSU9OX0FCU09MVVRFLCBQWCwgU0laRV8xMDBfUEVSU0VOVCxcclxuICBTSVpFX0FVVE8sIFRSQU5TTEFURV8zRCwgVklTSUJJTElUWV9ISURERU4sIFZJU0lCSUxJVFlfVklTSUJMRSxcclxufSBmcm9tICcuLi8uLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IElUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICBDTEFTU19OQU1FX0ZPQ1VTLCBDTEFTU19OQU1FX1NOQVBQRUQsIENMQVNTX05BTUVfU05BUFBFRF9PVVQsIERFRkFVTFRfVEVNUExBVEVfQ09OVEVYVCwgSUQsIElURU1fSUQsIFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPLCBUUkFOU0xBVEVfM0RfSElEREVOLFxyXG59IGZyb20gJy4uL2NvbnN0JztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiwgVGV4dERpcmVjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RQdWJsaWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbmctdmlydHVhbC1saXN0LXB1YmxpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnRcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTYueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9iYXNlL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gIHByaXZhdGUgX2FwaVNlcnZpY2UgPSBpbmplY3QoTmdWaXJ0dWFsTGlzdFB1YmxpY1NlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByb3RlY3RlZCBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcbiAgcHJvdGVjdGVkIF9pZCE6IG51bWJlcjtcclxuICBnZXQgaWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2xpc3RJZCE6IG51bWJlcjtcclxuICBnZXQgbGlzdElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xpc3RJZDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZGlzcGxheUlkITogc3RyaW5nO1xyXG4gIGdldCBkaXNwbGF5SWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUlkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9pc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByb3RlY3RlZCBfaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIF8kY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGlzcGxheU9iamVjdENvbmZpZz4oe30gYXMgSURpc3BsYXlPYmplY3RDb25maWcpO1xyXG4gICRjb25maWcgPSB0aGlzLl8kY29uZmlnLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgXyRtZWFzdXJlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURpc3BsYXlPYmplY3RNZWFzdXJlcyB8IG51bGw+KG51bGwpO1xyXG4gICRtZWFzdXJlcyA9IHRoaXMuXyRtZWFzdXJlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJvdGVjdGVkIF8kZm9jdXNlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICRmb2N1c2VkID0gdGhpcy5fJGZvY3VzZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfJHBhcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oUEFSVF9ERUZBVUxUX0lURU0pO1xyXG4gICRwYXJ0ID0gdGhpcy5fJHBhcnQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwgPSBudWxsO1xyXG4gIGdldCBkYXRhKCkgeyByZXR1cm4gdGhpcy5fZGF0YTsgfVxyXG4gIHByb3RlY3RlZCByZWFkb25seSBfJGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCBudWxsPih0aGlzLl9kYXRhKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgJGRhdGEgPSB0aGlzLl8kZGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgc2V0IGl0ZW0odjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl9kYXRhID09PSB2IHx8IHRoaXMuX2RhdGE/LmlkID09PSAtMSB8fCAhdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGF0YSA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGVQYXJ0U3RyKHYsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZyh2KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVzKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gICAgdGhpcy5fJGRhdGEubmV4dCh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbjsgfT4oe30pO1xyXG4gICRjbGFzc2VzID0gdGhpcy5fJGNsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRpbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XHJcbiAgJGluZGV4ID0gdGhpcy5fJGluZGV4LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGVtcGxhdGVDb250ZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJVGVtcGxhdGVDb250ZXh0PihERUZBVUxUX1RFTVBMQVRFX0NPTlRFWFQpO1xyXG4gICR0ZW1wbGF0ZUNvbnRleHQgPSB0aGlzLl8kdGVtcGxhdGVDb250ZXh0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwdWJsaWMgcmVndWxhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgX3Njcm9sbEJhclNpemU6IG51bWJlciA9IDA7XHJcblxyXG4gIHByb3RlY3RlZCBfbGFuZ1RleHREaXI6IFRleHREaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9ucy5MVFI7XHJcblxyXG4gIHByb3RlY3RlZCBfcmVndWxhckxlbmd0aDogc3RyaW5nID0gU0laRV8xMDBfUEVSU0VOVDtcclxuICBzZXQgcmVndWxhckxlbmd0aCh2OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLl9yZWd1bGFyTGVuZ3RoID09PSB2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZWd1bGFyTGVuZ3RoID0gdjtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YT8uaWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaXRlbVJlbmRlcmVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBzZXQgcmVuZGVyZXIodjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbVJlbmRlcmVyID09PSB2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1SZW5kZXJlciA9IHY7XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcclxuICBnZXQgZWxlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnN0ICRkYXRhID0gdGhpcy4kZGF0YSxcclxuICAgICAgJGNvbmZpZyA9IHRoaXMuJGNvbmZpZyxcclxuICAgICAgJG1lYXN1cmVzID0gdGhpcy4kbWVhc3VyZXMsXHJcbiAgICAgICRmb2N1c2VkID0gdGhpcy4kZm9jdXNlZDtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZGF0YSwgJGZvY3VzZWRdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXHJcbiAgICAgIHRhcCgoW2RhdGEsIGZvY3VzZWRdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGNsYXNzZXMubmV4dCh7XHJcbiAgICAgICAgICBbQ0xBU1NfTkFNRV9TTkFQUEVEXTogZGF0YT8uY29uZmlnPy5zbmFwcGVkID8/IGZhbHNlLCBbQ0xBU1NfTkFNRV9TTkFQUEVEX09VVF06IGRhdGE/LmNvbmZpZz8uc25hcHBlZE91dCA/PyBmYWxzZSxcclxuICAgICAgICAgIFtDTEFTU19OQU1FX0ZPQ1VTXTogZm9jdXNlZCxcclxuICAgICAgICB9KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRjb25maWcucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxyXG4gICAgICB0YXAoY29uZmlnID0+IHtcclxuICAgICAgICB0aGlzLl8kaW5kZXgubmV4dChjb25maWc/LnRhYkluZGV4ID8/IC0xKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRkYXRhLCAkY29uZmlnLCAkbWVhc3VyZXNdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXHJcbiAgICAgIHRhcCgoW2RhdGEsIGNvbmZpZywgbWVhc3VyZXNdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHRlbXBsYXRlQ29udGV4dC5uZXh0KHtcclxuICAgICAgICAgIGRhdGE6IGRhdGE/LmRhdGEsIHByZXZEYXRhOiBkYXRhPy5wcmV2aW91c2VEYXRhLCBuZXh0RGF0YTogZGF0YT8ubmV4dERhdGEsIG1lYXN1cmVzLFxyXG4gICAgICAgICAgY29uZmlnLCByZXNldGVkOiBmYWxzZSwgaW5kZXg6IGRhdGE/LmluZGV4ID8/IC0gMSwgYXBpOiB0aGlzLl9hcGlTZXJ2aWNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdXBkYXRlTWVhc3VyZXModjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgbnVsbCkge1xyXG4gICAgdGhpcy5fJG1lYXN1cmVzLm5leHQodj8ubWVhc3VyZXMgPyB7IC4uLnYubWVhc3VyZXMgfSA6IG51bGwpXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdXBkYXRlQ29uZmlnKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IG51bGwpIHtcclxuICAgIHRoaXMuXyRjb25maWcubmV4dCh7XHJcbiAgICAgIC4uLnY/LmNvbmZpZyB8fCB7fSBhcyBJRGlzcGxheU9iamVjdENvbmZpZywgc2VsZWN0ZWQ6IHRoaXMuX2lzU2VsZWN0ZWQsIGNvbGxhcHNlZDogdGhpcy5faXNDb2xsYXBzZWQsIGZvY3VzZWQ6IHRoaXMuXyRmb2N1c2VkLmdldFZhbHVlKCksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGUoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZGF0YSwgcmVndWxhciA9IHRoaXMucmVndWxhciwgbGVuZ3RoID0gdGhpcy5fcmVndWxhckxlbmd0aCwgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoSVRFTV9JRCwgYCR7ZGF0YS5pZH1gKTtcclxuICAgICAgY29uc3Qgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICAgIHN0eWxlcy56SW5kZXggPSBkYXRhLmNvbmZpZy56SW5kZXg7XHJcbiAgICAgIHN0eWxlcy5wb3NpdGlvbiA9IFBPU0lUSU9OX0FCU09MVVRFO1xyXG4gICAgICBpZiAoZGF0YS5jb25maWcuaXNTdHViID09PSB0cnVlKSB7XHJcbiAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfSElEREVOO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZWd1bGFyKSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPKTtcclxuICAgICAgICBzdHlsZXMudHJhbnNmb3JtID0gYCR7VFJBTlNMQVRFXzNEfSgke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyAodGhpcy5fbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLlJUTCA/IHRoaXMuX3Njcm9sbEJhclNpemUgOiAwKSA6IGRhdGEubWVhc3VyZXMuZGVsdGF9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMuZGVsdGEgOiAwfSR7UFh9LCAke1BPU0lUSU9OX1pFUk99KWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKFBPU0lUSU9OLCBgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy55IDogZGF0YS5tZWFzdXJlcy54fWApO1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBgJHtUUkFOU0xBVEVfM0R9KCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IDAgOiBkYXRhLm1lYXN1cmVzLnh9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IDB9JHtQWH0sICR7UE9TSVRJT05fWkVST30pYDtcclxuICAgICAgfVxyXG4gICAgICBzdHlsZXMuaGVpZ2h0ID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWAgOiByZWd1bGFyID8gbGVuZ3RoIDogU0laRV8xMDBfUEVSU0VOVDtcclxuICAgICAgc3R5bGVzLndpZHRoID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IHJlZ3VsYXIgPyBsZW5ndGggOiBTSVpFXzEwMF9QRVJTRU5UIDogZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKElEKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVQYXJ0U3RyKHY6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCBudWxsLCBpc1NlbGVjdGVkOiBib29sZWFuLCBpc0NvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgbGV0IG9kZCA9IGZhbHNlO1xyXG4gICAgaWYgKHY/LmluZGV4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgb2RkID0gdi5pbmRleCAlIDIgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBhcnQgPSBQQVJUX0RFRkFVTFRfSVRFTTtcclxuICAgIHBhcnQgKz0gb2RkID8gUEFSVF9JVEVNX09ERCA6IFBBUlRfSVRFTV9FVkVOO1xyXG4gICAgaWYgKHYgPyB2LmNvbmZpZy5zbmFwcGVkIDogZmFsc2UpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fU05BUFBFRDtcclxuICAgIH1cclxuICAgIGlmIChpc1NlbGVjdGVkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NFTEVDVEVEO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQ29sbGFwc2VkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0NPTExBUFNFRDtcclxuICAgIH1cclxuICAgIGlmICh2ID8gdi5jb25maWcubmV3IDogZmFsc2UpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fTkVXO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuXyRmb2N1c2VkLmdldFZhbHVlKCkpIHtcclxuICAgICAgcGFydCArPSBQQVJUX0lURU1fRk9DVVNFRDtcclxuICAgIH1cclxuICAgIHRoaXMuXyRwYXJ0Lm5leHQocGFydCk7XHJcbiAgfVxyXG5cclxuICBnZXRCb3VuZHMoKTogSVNpemUge1xyXG4gICAgY29uc3QgZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB7IHdpZHRoLCBoZWlnaHQgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgcmV0dXJuIHsgd2lkdGg6IHdpZHRoID4gMCA/IHdpZHRoIDogMSwgaGVpZ2h0OiBoZWlnaHQgPiAwID8gaGVpZ2h0IDogMSwgfTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICBzdHlsZXMuekluZGV4ID0gdGhpcy5fZGF0YT8uY29uZmlnPy56SW5kZXggPz8gREVGQVVMVF9aSU5ERVg7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9CTE9DSykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX0JMT0NLO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaXNTdHViID0gdGhpcy5fZGF0YT8uY29uZmlnPy5pc1N0dWIgPz8gZmFsc2U7XHJcbiAgICAgIGlmICghaXNTdHViKSB7XHJcbiAgICAgICAgaWYgKHN0eWxlcy52aXNpYmlsaXR5ID09PSBWSVNJQklMSVRZX1ZJU0lCTEUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX1ZJU0lCTEU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICBzdHlsZXMucG9zaXRpb24gPSBQT1NJVElPTl9BQlNPTFVURTtcclxuICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBUUkFOU0xBVEVfM0RfSElEREVOO1xyXG4gICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9OT05FKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9ISURERU4pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { BaseVirtualListItemComponent } from './base-virtual-list-item-component';
2
+ export { BaseVirtualListItemComponent, };
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9iYXNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxGLE9BQU8sRUFDSCw0QkFBNEIsR0FDL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50LFxyXG59XHJcbiJdfQ==
@@ -0,0 +1,30 @@
1
+ export const ID = 'id', TRANSLATE_3D_HIDDEN = 'translate3d(-1000px,-1000px,0)', ATTR_AREA_SELECTED = 'area-selected', POSITION = 'position', POSITION_ZERO = '0', ITEM_ID = 'item-id', KEY_SPACE = ' ', KEY_ARR_LEFT = 'ArrowLeft', KEY_ARR_UP = 'ArrowUp', KEY_ARR_RIGHT = 'ArrowRight', KEY_ARR_DOWN = 'ArrowDown', EVENT_FOCUS_IN = 'focusin', EVENT_FOCUS_OUT = 'focusout', EVENT_KEY_DOWN = 'keydown', CLASS_NAME_SNAPPED = 'snapped', CLASS_NAME_SNAPPED_OUT = 'snapped-out', CLASS_NAME_FOCUS = 'focus';
2
+ export const DEFAULT_TEMPLATE_CONTEXT = {
3
+ data: undefined,
4
+ prevData: undefined,
5
+ nextData: undefined,
6
+ measures: null,
7
+ config: {
8
+ focused: false,
9
+ selected: false,
10
+ collapsed: false,
11
+ new: false,
12
+ odd: false,
13
+ even: false,
14
+ collapsable: false,
15
+ sticky: 0,
16
+ selectable: false,
17
+ snap: false,
18
+ snapped: false,
19
+ snappedOut: false,
20
+ isVertical: false,
21
+ dynamic: false,
22
+ isSnappingMethodAdvanced: false,
23
+ tabIndex: 0,
24
+ zIndex: '0',
25
+ },
26
+ reseted: false,
27
+ index: -1,
28
+ api: null,
29
+ };
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUNsQixtQkFBbUIsR0FBRyxnQ0FBZ0MsRUFDdEQsa0JBQWtCLEdBQUcsZUFBZSxFQUNwQyxRQUFRLEdBQUcsVUFBVSxFQUNyQixhQUFhLEdBQUcsR0FBRyxFQUNuQixPQUFPLEdBQUcsU0FBUyxFQUNuQixTQUFTLEdBQUcsR0FBRyxFQUNmLFlBQVksR0FBRyxXQUFXLEVBQzFCLFVBQVUsR0FBRyxTQUFTLEVBQ3RCLGFBQWEsR0FBRyxZQUFZLEVBQzVCLFlBQVksR0FBRyxXQUFXLEVBQzFCLGNBQWMsR0FBRyxTQUFTLEVBQzFCLGVBQWUsR0FBRyxVQUFVLEVBQzVCLGNBQWMsR0FBRyxTQUFTLEVBQzFCLGtCQUFrQixHQUFHLFNBQVMsRUFDOUIsc0JBQXNCLEdBQUcsYUFBYSxFQUN0QyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7QUFHM0IsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFCO0lBQ3RELElBQUksRUFBRSxTQUFTO0lBQ2YsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUU7UUFDSixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxLQUFLO1FBQ2YsU0FBUyxFQUFFLEtBQUs7UUFDaEIsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLElBQUksRUFBRSxLQUFLO1FBQ1gsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLENBQUM7UUFDVCxVQUFVLEVBQUUsS0FBSztRQUNqQixJQUFJLEVBQUUsS0FBSztRQUNYLE9BQU8sRUFBRSxLQUFLO1FBQ2QsVUFBVSxFQUFFLEtBQUs7UUFDakIsVUFBVSxFQUFFLEtBQUs7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCx3QkFBd0IsRUFBRSxLQUFLO1FBQy9CLFFBQVEsRUFBRSxDQUFDO1FBQ1gsTUFBTSxFQUFFLEdBQUc7S0FDZDtJQUNELE9BQU8sRUFBRSxLQUFLO0lBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNULEdBQUcsRUFBRSxJQUFJO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElUZW1wbGF0ZUNvbnRleHQgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IElEID0gJ2lkJyxcclxuICAgIFRSQU5TTEFURV8zRF9ISURERU4gPSAndHJhbnNsYXRlM2QoLTEwMDBweCwtMTAwMHB4LDApJyxcclxuICAgIEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJyxcclxuICAgIFBPU0lUSU9OID0gJ3Bvc2l0aW9uJyxcclxuICAgIFBPU0lUSU9OX1pFUk8gPSAnMCcsXHJcbiAgICBJVEVNX0lEID0gJ2l0ZW0taWQnLFxyXG4gICAgS0VZX1NQQUNFID0gJyAnLFxyXG4gICAgS0VZX0FSUl9MRUZUID0gJ0Fycm93TGVmdCcsXHJcbiAgICBLRVlfQVJSX1VQID0gJ0Fycm93VXAnLFxyXG4gICAgS0VZX0FSUl9SSUdIVCA9ICdBcnJvd1JpZ2h0JyxcclxuICAgIEtFWV9BUlJfRE9XTiA9ICdBcnJvd0Rvd24nLFxyXG4gICAgRVZFTlRfRk9DVVNfSU4gPSAnZm9jdXNpbicsXHJcbiAgICBFVkVOVF9GT0NVU19PVVQgPSAnZm9jdXNvdXQnLFxyXG4gICAgRVZFTlRfS0VZX0RPV04gPSAna2V5ZG93bicsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRUQgPSAnc25hcHBlZCcsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRURfT1VUID0gJ3NuYXBwZWQtb3V0JyxcclxuICAgIENMQVNTX05BTUVfRk9DVVMgPSAnZm9jdXMnO1xyXG5cclxuXHJcbiAgICBleHBvcnQgY29uc3QgREVGQVVMVF9URU1QTEFURV9DT05URVhUOiBJVGVtcGxhdGVDb250ZXh0ID0ge1xyXG4gICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcclxuICAgICAgICBwcmV2RGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgIG5leHREYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbWVhc3VyZXM6IG51bGwsXHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIGZvY3VzZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG5ldzogZmFsc2UsXHJcbiAgICAgICAgICAgIG9kZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGV2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICBjb2xsYXBzYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN0aWNreTogMCxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXA6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZE91dDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBkeW5hbWljOiBmYWxzZSxcclxuICAgICAgICAgICAgaXNTbmFwcGluZ01ldGhvZEFkdmFuY2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgdGFiSW5kZXg6IDAsXHJcbiAgICAgICAgICAgIHpJbmRleDogJzAnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRlZDogZmFsc2UsXHJcbiAgICAgICAgaW5kZXg6IC0xLFxyXG4gICAgICAgIGFwaTogbnVsbCxcclxuICAgIH07XHJcbiAgICAiXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi90ZW1wbGF0ZS1jb250ZXh0JztcclxuXHJcbmV4cG9ydCB0eXBlIHtcclxuICAgIElUZW1wbGF0ZUNvbnRleHQsXHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC1pdGVtL2ludGVyZmFjZXMvdGVtcGxhdGUtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSURpc3BsYXlPYmplY3RDb25maWcsIElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RQdWJsaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL25nLXZpcnR1YWwtbGlzdC1wdWJsaWMuc2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnRcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTYueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9pbnRlcmZhY2VzL3RlbXBsYXRlLWNvbnRleHQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZUNvbnRleHQ8RCA9IGFueT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBBUEkgcHJvdmlkZXIuXHJcbiAgICAgKi9cclxuICAgIGFwaTogTmdWaXJ0dWFsTGlzdFB1YmxpY1NlcnZpY2UgfCBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IGl0ZW0gZGF0YS5cclxuICAgICAqL1xyXG4gICAgZGF0YTogRDtcclxuICAgIC8qKlxyXG4gICAgICogRGF0YSBvZiB0aGUgcHJldmlvdXMgbGlzdCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBwcmV2RGF0YTogRDtcclxuICAgIC8qKlxyXG4gICAgICogRGF0YSBvZiB0aGUgbmV4dCBsaXN0IGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIG5leHREYXRhOiBEO1xyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IGl0ZW0gbWVhc3VyZW1lbnQgZGF0YS5cclxuICAgICAqL1xyXG4gICAgbWVhc3VyZXM6IElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfCBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IGl0ZW0gY29uZmlndXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgY29uZmlnOiBJRGlzcGxheU9iamVjdENvbmZpZztcclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGEgcmVzZXQgc3RhdGUuXHJcbiAgICAgKi9cclxuICAgIHJlc2V0ZWQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIExpc3QgaXRlbSBpbmRleC5cclxuICAgICAqL1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxufSJdfQ==