ng-virtual-list 14.12.0 → 14.12.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 (460) hide show
  1. package/README.md +1 -11
  2. package/esm2020/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +309 -0
  3. package/{esm2022 → esm2020}/lib/components/ng-list-item/base/index.mjs +2 -2
  4. package/{esm2022 → esm2020}/lib/components/ng-list-item/const/index.mjs +40 -40
  5. package/{esm2022 → esm2020}/lib/components/ng-list-item/interfaces/index.mjs +1 -1
  6. package/{esm2022 → esm2020}/lib/components/ng-list-item/interfaces/template-context.mjs +1 -1
  7. package/esm2020/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +200 -0
  8. package/{esm2022 → esm2020}/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +20 -20
  9. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/create-display-id.mjs +9 -9
  10. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/get-element-by-index.mjs +19 -19
  11. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/index.mjs +4 -4
  12. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/matrix-3d.mjs +12 -12
  13. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +278 -0
  14. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.mjs +21 -21
  15. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +94 -0
  16. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +20 -20
  17. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +141 -0
  18. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +20 -20
  19. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/core/index.mjs +2 -2
  20. package/esm2020/lib/components/ng-prerender-container/core/prerender-track-box.mjs +201 -0
  21. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/events/index.mjs +5 -5
  22. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/interfaces/index.mjs +1 -1
  23. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/interfaces/refresh-params.mjs +1 -1
  24. package/esm2020/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +90 -0
  25. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/ng-prerender-container.module.mjs +20 -20
  26. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/types/cache.mjs +1 -1
  27. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/types/index.mjs +1 -1
  28. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/const/index.mjs +8 -8
  29. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/enums/index.mjs +2 -2
  30. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/enums/scrollbar-states.mjs +6 -6
  31. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/index.mjs +1 -1
  32. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.mjs +1 -1
  33. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.mjs +1 -1
  34. package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +27 -0
  35. package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +324 -0
  36. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/ng-scroll-bar.module.mjs +19 -19
  37. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/ng-scroll-bar.service.mjs +38 -36
  38. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/types/index.mjs +1 -1
  39. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/types/scrollbar-state.mjs +1 -1
  40. package/esm2020/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +260 -0
  41. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/const/index.mjs +9 -9
  42. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/index.mjs +2 -2
  43. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/scroller-direction.mjs +11 -11
  44. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/scroller-directions.mjs +1 -1
  45. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/index.mjs +3 -3
  46. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/interfaces/index.mjs +1 -1
  47. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/interfaces/scroll-to-params.mjs +1 -1
  48. package/esm2020/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +856 -0
  49. package/esm2020/lib/components/ng-scroll-view/utils/calculate-direction.mjs +17 -0
  50. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/calculate-velocity.mjs +11 -11
  51. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/get-dir.mjs +9 -9
  52. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/index.mjs +5 -5
  53. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/matrix-3d.mjs +9 -9
  54. package/esm2020/lib/components/ng-scroll-view/utils/scroll-box.mjs +45 -0
  55. package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/index.mjs +2 -2
  56. package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/scroller-direction.mjs +5 -5
  57. package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/scroller-directions.mjs +1 -1
  58. package/esm2020/lib/components/ng-scroller/ng-scroller.component.mjs +521 -0
  59. package/{esm2022 → esm2020}/lib/components/ng-scroller/ng-scroller.module.mjs +22 -22
  60. package/{esm2022 → esm2020}/lib/components/ng-scroller/utils/index.mjs +2 -2
  61. package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.mjs +2 -0
  62. package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.mjs +2 -0
  63. package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.mjs +2 -0
  64. package/esm2020/lib/components/ng-scroller/utils/interfaces/index.mjs +2 -0
  65. package/esm2020/lib/components/ng-scroller/utils/scroll-box.mjs +52 -0
  66. package/{esm2022 → esm2020}/lib/const/index.mjs +164 -164
  67. package/esm2020/lib/core/cache-map.mjs +100 -0
  68. package/{esm2022 → esm2020}/lib/core/const/index.mjs +2 -2
  69. package/{esm2022 → esm2020}/lib/core/enums/index.mjs +2 -2
  70. package/{esm2022 → esm2020}/lib/core/enums/item-display-methods.mjs +13 -13
  71. package/{esm2022 → esm2020}/lib/core/events/index.mjs +2 -2
  72. package/{esm2022 → esm2020}/lib/core/events/track-box-events.mjs +11 -11
  73. package/{esm2022 → esm2020}/lib/core/interfaces/get-item-position-options.mjs +1 -1
  74. package/{esm2022 → esm2020}/lib/core/interfaces/get-metrics-returns.mjs +1 -1
  75. package/{esm2022 → esm2020}/lib/core/interfaces/index.mjs +1 -1
  76. package/{esm2022 → esm2020}/lib/core/interfaces/item.mjs +1 -1
  77. package/{esm2022 → esm2020}/lib/core/interfaces/metrics.mjs +1 -1
  78. package/esm2020/lib/core/interfaces/recalculate-metrics-options.mjs +2 -0
  79. package/{esm2022 → esm2020}/lib/core/interfaces/update-collection-options.mjs +1 -1
  80. package/{esm2022 → esm2020}/lib/core/interfaces/update-collection-returns.mjs +1 -1
  81. package/esm2020/lib/core/track-box.mjs +1352 -0
  82. package/esm2020/lib/core/tracker.mjs +209 -0
  83. package/{esm2022 → esm2020}/lib/core/types/cache-map-events.mjs +1 -1
  84. package/{esm2022 → esm2020}/lib/core/types/cache-map-listeners.mjs +1 -1
  85. package/{esm2022 → esm2020}/lib/core/types/cache.mjs +1 -1
  86. package/{esm2022 → esm2020}/lib/core/types/index.mjs +1 -1
  87. package/{esm2022 → esm2020}/lib/core/types/on-change-event-listener.mjs +1 -1
  88. package/{esm2022 → esm2020}/lib/core/types/on-tick-event-listener.mjs +1 -1
  89. package/{esm2022 → esm2020}/lib/core/utils/get-service-id-prop.mjs +9 -9
  90. package/{esm2022 → esm2020}/lib/core/utils/index.mjs +2 -2
  91. package/{esm2022 → esm2020}/lib/directives/index.mjs +3 -3
  92. package/esm2020/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +67 -0
  93. package/{esm2022 → esm2020}/lib/directives/locale-sensitive/locale-sensitive.module.mjs +19 -19
  94. package/esm2020/lib/directives/virtual-click/virtual-click.directive.mjs +66 -0
  95. package/{esm2022 → esm2020}/lib/directives/virtual-click/virtual-click.module.mjs +19 -19
  96. package/{esm2022 → esm2020}/lib/enums/alignments.mjs +11 -11
  97. package/{esm2022 → esm2020}/lib/enums/collapsing-modes.mjs +21 -21
  98. package/{esm2022 → esm2020}/lib/enums/collection-modes.mjs +17 -17
  99. package/{esm2022 → esm2020}/lib/enums/directions.mjs +17 -17
  100. package/{esm2022 → esm2020}/lib/enums/focus-alignments.mjs +13 -13
  101. package/{esm2022 → esm2020}/lib/enums/index.mjs +11 -11
  102. package/{esm2022 → esm2020}/lib/enums/selecting-modes-types.mjs +21 -21
  103. package/{esm2022 → esm2020}/lib/enums/selecting-modes.mjs +21 -21
  104. package/{esm2022 → esm2020}/lib/enums/snap-to-item-aligns.mjs +21 -21
  105. package/{esm2022 → esm2020}/lib/enums/snapping-methods.mjs +17 -17
  106. package/{esm2022 → esm2020}/lib/enums/spreading-modes.mjs +17 -17
  107. package/{esm2022 → esm2020}/lib/enums/text-directions.mjs +13 -13
  108. package/{esm2022 → esm2020}/lib/interfaces/animation-params.mjs +1 -1
  109. package/{esm2022 → esm2020}/lib/interfaces/base-virtual-list-item-component.mjs +1 -1
  110. package/{esm2022 → esm2020}/lib/interfaces/index.mjs +1 -1
  111. package/{esm2022 → esm2020}/lib/interfaces/item-transformation.mjs +1 -1
  112. package/{esm2022 → esm2020}/lib/interfaces/point.mjs +1 -1
  113. package/{esm2022 → esm2020}/lib/interfaces/rect.mjs +1 -1
  114. package/{esm2022 → esm2020}/lib/interfaces/render-stabilizer-options.mjs +1 -1
  115. package/{esm2022 → esm2020}/lib/interfaces/scroll-event.mjs +1 -1
  116. package/{esm2022 → esm2020}/lib/interfaces/scroll-options.mjs +1 -1
  117. package/{esm2022 → esm2020}/lib/interfaces/scroll-params.mjs +1 -1
  118. package/{esm2022 → esm2020}/lib/interfaces/scroll-to-params.mjs +1 -1
  119. package/{esm2022 → esm2020}/lib/interfaces/scrolling-settings.mjs +1 -1
  120. package/{esm2022 → esm2020}/lib/interfaces/size.mjs +1 -1
  121. package/{esm2022 → esm2020}/lib/models/collection.model.mjs +2 -2
  122. package/{esm2022 → esm2020}/lib/models/component.model.mjs +1 -1
  123. package/{esm2022 → esm2020}/lib/models/display-object-config.model.mjs +1 -1
  124. package/{esm2022 → esm2020}/lib/models/display-object-measures.model.mjs +1 -1
  125. package/{esm2022 → esm2020}/lib/models/index.mjs +1 -1
  126. package/{esm2022 → esm2020}/lib/models/item-config-map.model.mjs +1 -1
  127. package/{esm2022 → esm2020}/lib/models/item.model.mjs +1 -1
  128. package/{esm2022 → esm2020}/lib/models/render-collection.model.mjs +2 -2
  129. package/{esm2022 → esm2020}/lib/models/render-item-config.model.mjs +1 -1
  130. package/{esm2022 → esm2020}/lib/models/render-item-measures.model.mjs +2 -2
  131. package/{esm2022 → esm2020}/lib/models/render-item.model.mjs +2 -2
  132. package/esm2020/lib/ng-virtual-list-public.service.mjs +122 -0
  133. package/esm2020/lib/ng-virtual-list.component.mjs +3255 -0
  134. package/{esm2022 → esm2020}/lib/ng-virtual-list.module.mjs +23 -23
  135. package/esm2020/lib/ng-virtual-list.service.mjs +430 -0
  136. package/esm2020/lib/transformations/deck-of-cards-3d.mjs +57 -0
  137. package/esm2020/lib/transformations/deck-of-cards.mjs +54 -0
  138. package/esm2020/lib/transformations/event-horizon.mjs +47 -0
  139. package/{esm2022 → esm2020}/lib/transformations/index.mjs +12 -12
  140. package/esm2020/lib/transformations/linear.mjs +47 -0
  141. package/esm2020/lib/transformations/swipe-3d.mjs +51 -0
  142. package/{esm2022 → esm2020}/lib/types/alignment.mjs +1 -1
  143. package/{esm2022 → esm2020}/lib/types/arithmetic-expression.mjs +1 -1
  144. package/{esm2022 → esm2020}/lib/types/collapsing-mode.mjs +1 -1
  145. package/{esm2022 → esm2020}/lib/types/collection-mode.mjs +1 -1
  146. package/{esm2022 → esm2020}/lib/types/color.mjs +1 -1
  147. package/{esm2022 → esm2020}/lib/types/direction.mjs +1 -1
  148. package/{esm2022 → esm2020}/lib/types/float-or-persentage-value.mjs +1 -1
  149. package/{esm2022 → esm2020}/lib/types/focus-alignment.mjs +1 -1
  150. package/{esm2022 → esm2020}/lib/types/focus-item-params.mjs +1 -1
  151. package/{esm2022 → esm2020}/lib/types/gradient-color-position.mjs +1 -1
  152. package/{esm2022 → esm2020}/lib/types/gradient-color-positions.mjs +1 -1
  153. package/{esm2022 → esm2020}/lib/types/id.mjs +1 -1
  154. package/{esm2022 → esm2020}/lib/types/index.mjs +1 -1
  155. package/{esm2022 → esm2020}/lib/types/item-transform.mjs +1 -1
  156. package/{esm2022 → esm2020}/lib/types/scroll-direction.mjs +1 -1
  157. package/{esm2022 → esm2020}/lib/types/selecting-mode.mjs +1 -1
  158. package/{esm2022 → esm2020}/lib/types/snap-to-item-align.mjs +1 -1
  159. package/{esm2022 → esm2020}/lib/types/snapping-distance.mjs +1 -1
  160. package/{esm2022 → esm2020}/lib/types/snapping-method.mjs +1 -1
  161. package/{esm2022 → esm2020}/lib/types/spreading-mode.mjs +1 -1
  162. package/{esm2022 → esm2020}/lib/types/text-direction.mjs +1 -1
  163. package/esm2020/lib/utils/animator/animator.mjs +80 -0
  164. package/{esm2022 → esm2020}/lib/utils/animator/const/index.mjs +1 -1
  165. package/{esm2022 → esm2020}/lib/utils/animator/ease.mjs +6 -6
  166. package/{esm2022 → esm2020}/lib/utils/animator/index.mjs +4 -4
  167. package/esm2020/lib/utils/animator/interfaces/animator-params.mjs +2 -0
  168. package/esm2020/lib/utils/animator/interfaces/animator-update-data.mjs +2 -0
  169. package/{esm2022 → esm2020}/lib/utils/animator/interfaces/index.mjs +1 -1
  170. package/esm2020/lib/utils/animator/types/easing.mjs +2 -0
  171. package/{esm2022 → esm2020}/lib/utils/animator/types/index.mjs +1 -1
  172. package/esm2020/lib/utils/buffer-interpolation.mjs +29 -0
  173. package/esm2020/lib/utils/cmap.mjs +34 -0
  174. package/esm2020/lib/utils/debounce.mjs +61 -0
  175. package/esm2020/lib/utils/disposable-component.mjs +29 -0
  176. package/esm2020/lib/utils/event-emitter/event-emitter.mjs +106 -0
  177. package/{esm2022 → esm2020}/lib/utils/event-emitter/index.mjs +2 -2
  178. package/esm2020/lib/utils/event-emitter/interfaces/event-emitter.mjs +2 -0
  179. package/{esm2022 → esm2020}/lib/utils/event-emitter/interfaces/index.mjs +1 -1
  180. package/esm2020/lib/utils/get-scroll-state-version.mjs +12 -0
  181. package/{esm2022 → esm2020}/lib/utils/get-selector-by-item-id.mjs +4 -4
  182. package/{esm2022 → esm2020}/lib/utils/index.mjs +4 -4
  183. package/esm2020/lib/utils/is-collapse-mode.mjs +18 -0
  184. package/{esm2022 → esm2020}/lib/utils/is-collection-mode.mjs +15 -15
  185. package/esm2020/lib/utils/is-direction.mjs +15 -0
  186. package/esm2020/lib/utils/is-persentage-value.mjs +14 -0
  187. package/esm2020/lib/utils/is-select-mode.mjs +18 -0
  188. package/{esm2022 → esm2020}/lib/utils/is-spreading-mode.mjs +15 -15
  189. package/esm2020/lib/utils/list-validators.mjs +27 -0
  190. package/esm2020/lib/utils/normalize-collection.mjs +42 -0
  191. package/esm2020/lib/utils/object.mjs +28 -0
  192. package/esm2020/lib/utils/parse-arithmetic-expression.mjs +53 -0
  193. package/esm2020/lib/utils/parse-float-or-persentage-value.mjs +17 -0
  194. package/esm2020/lib/utils/screen-reader-formatter.mjs +43 -0
  195. package/esm2020/lib/utils/scroll-event.mjs +46 -0
  196. package/esm2020/lib/utils/scrolling-direction.mjs +28 -0
  197. package/{esm2022 → esm2020}/lib/utils/snapping-method.mjs +8 -8
  198. package/esm2020/lib/utils/toggle-class-name.mjs +15 -0
  199. package/{esm2022 → esm2020}/lib/utils/validation.mjs +55 -55
  200. package/{esm2022 → esm2020}/ng-virtual-list.mjs +4 -4
  201. package/{esm2022 → esm2020}/public-api.mjs +19 -19
  202. package/fesm2015/ng-virtual-list.mjs +10731 -0
  203. package/fesm2015/ng-virtual-list.mjs.map +1 -0
  204. package/{fesm2022 → fesm2020}/ng-virtual-list.mjs +10451 -10455
  205. package/fesm2020/ng-virtual-list.mjs.map +1 -0
  206. package/index.d.ts +5 -5
  207. package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +83 -83
  208. package/lib/components/ng-list-item/base/index.d.ts +2 -2
  209. package/lib/components/ng-list-item/const/index.d.ts +3 -3
  210. package/lib/components/ng-list-item/interfaces/index.d.ts +2 -2
  211. package/lib/components/ng-list-item/interfaces/template-context.d.ts +42 -42
  212. package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +30 -30
  213. package/lib/components/ng-list-item/ng-virtual-list-item.module.d.ts +9 -9
  214. package/lib/components/ng-list-item/utils/create-display-id.d.ts +7 -7
  215. package/lib/components/ng-list-item/utils/get-element-by-index.d.ts +15 -15
  216. package/lib/components/ng-list-item/utils/index.d.ts +4 -4
  217. package/lib/components/ng-list-item/utils/matrix-3d.d.ts +7 -7
  218. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.d.ts +104 -104
  219. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.d.ts +10 -10
  220. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.d.ts +17 -17
  221. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.d.ts +9 -9
  222. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +62 -62
  223. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.d.ts +9 -9
  224. package/lib/components/ng-prerender-container/core/index.d.ts +2 -2
  225. package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +35 -35
  226. package/lib/components/ng-prerender-container/events/index.d.ts +6 -6
  227. package/lib/components/ng-prerender-container/interfaces/index.d.ts +2 -2
  228. package/lib/components/ng-prerender-container/interfaces/refresh-params.d.ts +17 -17
  229. package/lib/components/ng-prerender-container/ng-prerender-container.component.d.ts +40 -40
  230. package/lib/components/ng-prerender-container/ng-prerender-container.module.d.ts +9 -9
  231. package/lib/components/ng-prerender-container/types/cache.d.ts +13 -13
  232. package/lib/components/ng-prerender-container/types/index.d.ts +2 -2
  233. package/lib/components/ng-scroll-bar/const/index.d.ts +3 -3
  234. package/lib/components/ng-scroll-bar/enums/index.d.ts +2 -2
  235. package/lib/components/ng-scroll-bar/enums/scrollbar-states.d.ts +5 -5
  236. package/lib/components/ng-scroll-bar/interfaces/index.d.ts +3 -3
  237. package/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.d.ts +26 -26
  238. package/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.d.ts +13 -13
  239. package/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.d.ts +16 -16
  240. package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +102 -102
  241. package/lib/components/ng-scroll-bar/ng-scroll-bar.module.d.ts +8 -8
  242. package/lib/components/ng-scroll-bar/ng-scroll-bar.service.d.ts +22 -22
  243. package/lib/components/ng-scroll-bar/types/index.d.ts +2 -2
  244. package/lib/components/ng-scroll-bar/types/scrollbar-state.d.ts +2 -2
  245. package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +89 -89
  246. package/lib/components/ng-scroll-view/const/index.d.ts +7 -7
  247. package/lib/components/ng-scroll-view/enums/index.d.ts +4 -4
  248. package/lib/components/ng-scroll-view/enums/scroller-direction.d.ts +10 -10
  249. package/lib/components/ng-scroll-view/enums/scroller-directions.d.ts +8 -8
  250. package/lib/components/ng-scroll-view/index.d.ts +5 -5
  251. package/lib/components/ng-scroll-view/interfaces/index.d.ts +2 -2
  252. package/lib/components/ng-scroll-view/interfaces/scroll-to-params.d.ts +22 -22
  253. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +124 -124
  254. package/lib/components/ng-scroll-view/utils/calculate-direction.d.ts +10 -7
  255. package/lib/components/ng-scroll-view/utils/calculate-velocity.d.ts +7 -7
  256. package/lib/components/ng-scroll-view/utils/get-dir.d.ts +7 -7
  257. package/lib/components/ng-scroll-view/utils/index.d.ts +5 -5
  258. package/lib/components/ng-scroll-view/utils/matrix-3d.d.ts +7 -7
  259. package/lib/components/ng-scroll-view/utils/scroll-box.d.ts +39 -39
  260. package/lib/components/ng-scroller/enums/index.d.ts +4 -4
  261. package/lib/components/ng-scroller/enums/scroller-direction.d.ts +4 -4
  262. package/lib/components/ng-scroller/enums/scroller-directions.d.ts +3 -3
  263. package/lib/components/ng-scroller/ng-scroller.component.d.ts +164 -164
  264. package/lib/components/ng-scroller/ng-scroller.module.d.ts +11 -11
  265. package/lib/components/ng-scroller/utils/index.d.ts +2 -2
  266. package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.d.ts +11 -0
  267. package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.d.ts +19 -0
  268. package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.d.ts +10 -0
  269. package/lib/components/ng-scroller/utils/interfaces/index.d.ts +4 -0
  270. package/lib/components/ng-scroller/utils/scroll-box.d.ts +23 -40
  271. package/lib/const/index.d.ts +153 -153
  272. package/lib/core/cache-map.d.ts +46 -46
  273. package/lib/core/const/index.d.ts +1 -1
  274. package/lib/core/enums/index.d.ts +2 -2
  275. package/lib/core/enums/item-display-methods.d.ts +12 -12
  276. package/lib/core/events/index.d.ts +2 -2
  277. package/lib/core/events/track-box-events.d.ts +10 -10
  278. package/lib/core/interfaces/get-item-position-options.d.ts +10 -10
  279. package/lib/core/interfaces/get-metrics-returns.d.ts +11 -11
  280. package/lib/core/interfaces/index.d.ts +8 -8
  281. package/lib/core/interfaces/item.d.ts +9 -9
  282. package/lib/core/interfaces/metrics.d.ts +51 -51
  283. package/lib/core/interfaces/recalculate-metrics-options.d.ts +33 -32
  284. package/lib/core/interfaces/update-collection-options.d.ts +10 -10
  285. package/lib/core/interfaces/update-collection-returns.d.ts +14 -14
  286. package/lib/core/track-box.d.ts +153 -153
  287. package/lib/core/tracker.d.ts +55 -55
  288. package/lib/core/types/cache-map-events.d.ts +8 -8
  289. package/lib/core/types/cache-map-listeners.d.ts +9 -9
  290. package/lib/core/types/cache.d.ts +12 -12
  291. package/lib/core/types/index.d.ts +6 -6
  292. package/lib/core/types/on-change-event-listener.d.ts +7 -7
  293. package/lib/core/types/on-tick-event-listener.d.ts +7 -7
  294. package/lib/core/utils/get-service-id-prop.d.ts +7 -7
  295. package/lib/core/utils/index.d.ts +2 -2
  296. package/lib/directives/index.d.ts +3 -3
  297. package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +29 -29
  298. package/lib/directives/locale-sensitive/locale-sensitive.module.d.ts +8 -8
  299. package/lib/directives/virtual-click/virtual-click.directive.d.ts +22 -22
  300. package/lib/directives/virtual-click/virtual-click.module.d.ts +8 -8
  301. package/lib/enums/alignments.d.ts +10 -10
  302. package/lib/enums/collapsing-modes.d.ts +20 -20
  303. package/lib/enums/collection-modes.d.ts +16 -16
  304. package/lib/enums/directions.d.ts +16 -16
  305. package/lib/enums/focus-alignments.d.ts +12 -12
  306. package/lib/enums/index.d.ts +11 -11
  307. package/lib/enums/selecting-modes-types.d.ts +20 -20
  308. package/lib/enums/selecting-modes.d.ts +20 -20
  309. package/lib/enums/snap-to-item-aligns.d.ts +20 -20
  310. package/lib/enums/snapping-methods.d.ts +16 -16
  311. package/lib/enums/spreading-modes.d.ts +16 -16
  312. package/lib/enums/text-directions.d.ts +12 -12
  313. package/lib/interfaces/animation-params.d.ts +14 -14
  314. package/lib/interfaces/base-virtual-list-item-component.d.ts +23 -23
  315. package/lib/interfaces/index.d.ts +11 -11
  316. package/lib/interfaces/item-transformation.d.ts +22 -22
  317. package/lib/interfaces/point.d.ts +16 -16
  318. package/lib/interfaces/rect.d.ts +17 -17
  319. package/lib/interfaces/render-stabilizer-options.d.ts +12 -12
  320. package/lib/interfaces/scroll-event.d.ts +58 -58
  321. package/lib/interfaces/scroll-options.d.ts +28 -28
  322. package/lib/interfaces/scroll-params.d.ts +17 -17
  323. package/lib/interfaces/scroll-to-params.d.ts +7 -7
  324. package/lib/interfaces/scrolling-settings.d.ts +38 -38
  325. package/lib/interfaces/size.d.ts +16 -16
  326. package/lib/models/collection.model.d.ts +9 -9
  327. package/lib/models/component.model.d.ts +3 -3
  328. package/lib/models/display-object-config.model.d.ts +21 -21
  329. package/lib/models/display-object-measures.model.d.ts +45 -45
  330. package/lib/models/index.d.ts +9 -9
  331. package/lib/models/item-config-map.model.d.ts +35 -35
  332. package/lib/models/item.model.d.ts +17 -17
  333. package/lib/models/render-collection.model.d.ts +9 -9
  334. package/lib/models/render-item-config.model.d.ts +119 -119
  335. package/lib/models/render-item-measures.model.d.ts +116 -116
  336. package/lib/models/render-item.model.d.ts +40 -40
  337. package/lib/ng-virtual-list-public.service.d.ts +92 -92
  338. package/lib/ng-virtual-list.component.d.ts +771 -770
  339. package/lib/ng-virtual-list.module.d.ts +12 -12
  340. package/lib/ng-virtual-list.service.d.ts +153 -153
  341. package/lib/transformations/deck-of-cards-3d.d.ts +54 -54
  342. package/lib/transformations/deck-of-cards.d.ts +50 -50
  343. package/lib/transformations/event-horizon.d.ts +26 -26
  344. package/lib/transformations/index.d.ts +7 -7
  345. package/lib/transformations/linear.d.ts +26 -26
  346. package/lib/transformations/swipe-3d.d.ts +38 -38
  347. package/lib/types/alignment.d.ts +8 -8
  348. package/lib/types/arithmetic-expression.d.ts +10 -10
  349. package/lib/types/collapsing-mode.d.ts +8 -8
  350. package/lib/types/collection-mode.d.ts +8 -8
  351. package/lib/types/color.d.ts +4 -4
  352. package/lib/types/direction.d.ts +8 -8
  353. package/lib/types/float-or-persentage-value.d.ts +7 -7
  354. package/lib/types/focus-alignment.d.ts +8 -8
  355. package/lib/types/focus-item-params.d.ts +13 -13
  356. package/lib/types/gradient-color-position.d.ts +7 -7
  357. package/lib/types/gradient-color-positions.d.ts +8 -8
  358. package/lib/types/id.d.ts +7 -7
  359. package/lib/types/index.d.ts +20 -20
  360. package/lib/types/item-transform.d.ts +9 -9
  361. package/lib/types/scroll-direction.d.ts +8 -8
  362. package/lib/types/selecting-mode.d.ts +8 -8
  363. package/lib/types/snap-to-item-align.d.ts +8 -8
  364. package/lib/types/snapping-distance.d.ts +8 -8
  365. package/lib/types/snapping-method.d.ts +10 -10
  366. package/lib/types/spreading-mode.d.ts +8 -8
  367. package/lib/types/text-direction.d.ts +10 -10
  368. package/lib/utils/animator/animator.d.ts +16 -16
  369. package/lib/utils/animator/const/index.d.ts +1 -1
  370. package/lib/utils/animator/ease.d.ts +2 -2
  371. package/lib/utils/animator/index.d.ts +6 -6
  372. package/lib/utils/animator/interfaces/animator-params.d.ts +18 -18
  373. package/lib/utils/animator/interfaces/animator-update-data.d.ts +13 -13
  374. package/lib/utils/animator/interfaces/index.d.ts +3 -3
  375. package/lib/utils/animator/types/easing.d.ts +7 -7
  376. package/lib/utils/animator/types/index.d.ts +2 -2
  377. package/lib/utils/buffer-interpolation.d.ts +5 -5
  378. package/lib/utils/cmap.d.ts +16 -16
  379. package/lib/utils/debounce.d.ts +25 -25
  380. package/lib/utils/disposable-component.d.ts +15 -15
  381. package/lib/utils/event-emitter/event-emitter.d.ts +42 -42
  382. package/lib/utils/event-emitter/index.d.ts +4 -4
  383. package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +37 -37
  384. package/lib/utils/event-emitter/interfaces/index.d.ts +2 -2
  385. package/lib/utils/get-scroll-state-version.d.ts +1 -1
  386. package/lib/utils/get-selector-by-item-id.d.ts +2 -2
  387. package/lib/utils/index.d.ts +6 -6
  388. package/lib/utils/is-collapse-mode.d.ts +8 -8
  389. package/lib/utils/is-collection-mode.d.ts +8 -8
  390. package/lib/utils/is-direction.d.ts +8 -8
  391. package/lib/utils/is-persentage-value.d.ts +7 -7
  392. package/lib/utils/is-select-mode.d.ts +8 -8
  393. package/lib/utils/is-spreading-mode.d.ts +8 -8
  394. package/lib/utils/list-validators.d.ts +2 -2
  395. package/lib/utils/normalize-collection.d.ts +8 -8
  396. package/lib/utils/object.d.ts +4 -4
  397. package/lib/utils/parse-arithmetic-expression.d.ts +8 -8
  398. package/lib/utils/parse-float-or-persentage-value.d.ts +7 -7
  399. package/lib/utils/screen-reader-formatter.d.ts +7 -4
  400. package/lib/utils/scroll-event.d.ts +48 -48
  401. package/lib/utils/scrolling-direction.d.ts +17 -17
  402. package/lib/utils/snapping-method.d.ts +3 -3
  403. package/lib/utils/toggle-class-name.d.ts +7 -7
  404. package/lib/utils/validation.d.ts +35 -35
  405. package/package.json +11 -5
  406. package/public-api.d.ts +16 -16
  407. package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +0 -315
  408. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +0 -200
  409. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +0 -279
  410. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +0 -94
  411. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +0 -142
  412. package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +0 -198
  413. package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +0 -93
  414. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +0 -25
  415. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +0 -324
  416. package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +0 -262
  417. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +0 -859
  418. package/esm2022/lib/components/ng-scroll-view/utils/calculate-direction.mjs +0 -17
  419. package/esm2022/lib/components/ng-scroll-view/utils/scroll-box.mjs +0 -45
  420. package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +0 -525
  421. package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +0 -52
  422. package/esm2022/lib/core/cache-map.mjs +0 -101
  423. package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +0 -2
  424. package/esm2022/lib/core/track-box.mjs +0 -1353
  425. package/esm2022/lib/core/tracker.mjs +0 -207
  426. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +0 -68
  427. package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +0 -67
  428. package/esm2022/lib/ng-virtual-list-public.service.mjs +0 -120
  429. package/esm2022/lib/ng-virtual-list.component.mjs +0 -3246
  430. package/esm2022/lib/ng-virtual-list.service.mjs +0 -431
  431. package/esm2022/lib/transformations/deck-of-cards-3d.mjs +0 -57
  432. package/esm2022/lib/transformations/deck-of-cards.mjs +0 -54
  433. package/esm2022/lib/transformations/event-horizon.mjs +0 -47
  434. package/esm2022/lib/transformations/linear.mjs +0 -47
  435. package/esm2022/lib/transformations/swipe-3d.mjs +0 -51
  436. package/esm2022/lib/utils/animator/animator.mjs +0 -78
  437. package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +0 -2
  438. package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +0 -2
  439. package/esm2022/lib/utils/animator/types/easing.mjs +0 -2
  440. package/esm2022/lib/utils/buffer-interpolation.mjs +0 -29
  441. package/esm2022/lib/utils/cmap.mjs +0 -34
  442. package/esm2022/lib/utils/debounce.mjs +0 -61
  443. package/esm2022/lib/utils/disposable-component.mjs +0 -27
  444. package/esm2022/lib/utils/event-emitter/event-emitter.mjs +0 -105
  445. package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +0 -2
  446. package/esm2022/lib/utils/get-scroll-state-version.mjs +0 -12
  447. package/esm2022/lib/utils/is-collapse-mode.mjs +0 -18
  448. package/esm2022/lib/utils/is-direction.mjs +0 -15
  449. package/esm2022/lib/utils/is-persentage-value.mjs +0 -14
  450. package/esm2022/lib/utils/is-select-mode.mjs +0 -18
  451. package/esm2022/lib/utils/list-validators.mjs +0 -27
  452. package/esm2022/lib/utils/normalize-collection.mjs +0 -42
  453. package/esm2022/lib/utils/object.mjs +0 -28
  454. package/esm2022/lib/utils/parse-arithmetic-expression.mjs +0 -53
  455. package/esm2022/lib/utils/parse-float-or-persentage-value.mjs +0 -17
  456. package/esm2022/lib/utils/screen-reader-formatter.mjs +0 -43
  457. package/esm2022/lib/utils/scroll-event.mjs +0 -48
  458. package/esm2022/lib/utils/scrolling-direction.mjs +0 -29
  459. package/esm2022/lib/utils/toggle-class-name.mjs +0 -15
  460. package/fesm2022/ng-virtual-list.mjs.map +0 -1
@@ -0,0 +1,141 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, from, takeUntil, tap } from 'rxjs';
3
+ import { TextDirections } from '../../../../enums';
4
+ import { BaseScrollView } from '../../../ng-scroll-view/base/base-scroll-view.component';
5
+ import { SCROLL_VIEW_INVERSION } from '../../../ng-scroll-view';
6
+ import { BEHAVIOR_INSTANT, DEFAULT_SCROLLBAR_ENABLED, LEFT_PROP_NAME, TOP_PROP_NAME } from '../../../../const';
7
+ import { NgScrollBarComponent } from '../../../ng-scroll-bar/ng-scroll-bar.component';
8
+ import { ScrollBox } from '../../../ng-scroller/utils';
9
+ import { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../../../ng-scroll-view/const';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "../../../../directives/locale-sensitive/locale-sensitive.directive";
13
+ /**
14
+ * NgPrerenderScrollerComponent
15
+ * Maximum performance for extremely large lists.
16
+ * It is based on algorithms for virtualization of screen objects.
17
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.ts
18
+ * @author Evgenii Alexandrovich Grebennikov
19
+ * @email djonnyx@gmail.com
20
+ */
21
+ export class NgPrerenderScrollerComponent extends BaseScrollView {
22
+ constructor() {
23
+ super();
24
+ this._$langTextDir = new BehaviorSubject(TextDirections.LTR);
25
+ this.$langTextDir = this._$langTextDir.asObservable();
26
+ this._$scrollbarEnabled = new BehaviorSubject(DEFAULT_SCROLLBAR_ENABLED);
27
+ this.$scrollbarEnabled = this._$scrollbarEnabled.asObservable();
28
+ this._$classes = new BehaviorSubject({});
29
+ this.$classes = this._$classes.asObservable();
30
+ this._$actualClasses = new BehaviorSubject({});
31
+ this.$actualClasses = this._$actualClasses.asObservable();
32
+ this._$containerClasses = new BehaviorSubject({});
33
+ this.$containerClasses = this._$containerClasses.asObservable();
34
+ this._$thumbSize = new BehaviorSubject(0);
35
+ this.$thumbSize = this._$thumbSize.asObservable();
36
+ this._$scrollbarShow = new BehaviorSubject(false);
37
+ this.$scrollbarShow = this._$scrollbarShow.asObservable();
38
+ this._scrollBox = new ScrollBox();
39
+ const $classes = this.$classes, $direction = this.$direction;
40
+ combineLatest(([$classes, $direction])).pipe(takeUntil(this._$unsubscribe), tap(([classes, direction]) => {
41
+ this._$actualClasses.next({ ...classes, [direction]: true });
42
+ })).subscribe();
43
+ const $contentBounds = this.$contentBounds, $viewportBounds = this.$viewportBounds, $isVertical = this.$isVertical, $scrollbarEnabled = this.$scrollbarEnabled;
44
+ combineLatest([$direction, $scrollbarEnabled, $isVertical, $contentBounds, $viewportBounds]).pipe(takeUntil(this._$unsubscribe), tap(([direction, scrollbarEnabled]) => {
45
+ this._$containerClasses.next({ [direction]: true, enabled: scrollbarEnabled, scrollable: scrollbarEnabled });
46
+ })).subscribe();
47
+ const $startOffset = this.$startOffset, $endOffset = this.$endOffset, $thumbSize = this.$thumbSize;
48
+ from([$endOffset, $startOffset, $thumbSize, $isVertical]).pipe(takeUntil(this._$unsubscribe), tap(() => {
49
+ this.updateScrollBar();
50
+ })).subscribe();
51
+ const $updateScrollBar = this.$updateScrollBar;
52
+ $updateScrollBar.pipe(takeUntil(this._$unsubscribe), tap(() => {
53
+ this.updateScrollBarHandler(true);
54
+ })).subscribe();
55
+ }
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
+ set classes(v) {
63
+ if (this._$classes.getValue() !== v) {
64
+ this._$classes.next(v);
65
+ }
66
+ }
67
+ get classes() { return this._$classes.getValue(); }
68
+ set x(v) {
69
+ if (v !== undefined && !Number.isNaN(v)) {
70
+ this._x = this._actualX = v;
71
+ this.updateScrollBar();
72
+ }
73
+ }
74
+ get x() { return this._x; }
75
+ set y(v) {
76
+ if (v !== undefined && !Number.isNaN(v)) {
77
+ this._y = this._actualY = v;
78
+ this.updateScrollBar();
79
+ }
80
+ }
81
+ get y() { return this._y; }
82
+ onResizeViewport() {
83
+ const viewport = this.scrollViewport?.nativeElement;
84
+ if (viewport) {
85
+ this._$viewportBounds.next({ width: viewport.offsetWidth, height: viewport.offsetHeight });
86
+ this.updateScrollBar();
87
+ }
88
+ }
89
+ onResizeContent() {
90
+ const content = this.scrollContent?.nativeElement;
91
+ if (content) {
92
+ this._$contentBounds.next({ width: content.offsetWidth, height: content.offsetHeight });
93
+ this.updateScrollBar();
94
+ }
95
+ }
96
+ updateScrollBarHandler(update = false) {
97
+ const direction = this._$direction.getValue(), isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), endOffset = this._$endOffset.getValue(), scrollContent = this.scrollContent?.nativeElement, scrollViewport = this.scrollViewport?.nativeElement, { thumbSize, thumbPosition, } = this._scrollBox.calculateScroll({
98
+ direction,
99
+ viewportWidth: scrollViewport.offsetWidth, viewportHeight: scrollViewport.offsetHeight,
100
+ contentWidth: scrollContent.offsetWidth, contentHeight: scrollContent.offsetHeight,
101
+ startOffset,
102
+ endOffset,
103
+ positionX: this._x,
104
+ positionY: this._y,
105
+ minSize: 1,
106
+ });
107
+ this._$thumbSize.next(thumbSize);
108
+ if (update) {
109
+ this.scrollBar?.scroll({
110
+ [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: thumbPosition, fireUpdate: false, behavior: BEHAVIOR_INSTANT,
111
+ userAction: false, blending: true,
112
+ });
113
+ }
114
+ this._$scrollbarShow.next(this.scrollable);
115
+ }
116
+ updateScrollBar() {
117
+ this._$updateScrollBar.next();
118
+ }
119
+ }
120
+ NgPrerenderScrollerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderScrollerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
121
+ NgPrerenderScrollerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NgPrerenderScrollerComponent, selector: "ng-prerender-scroller", inputs: { scrollbarEnabled: "scrollbarEnabled", classes: "classes" }, providers: [
122
+ { provide: SCROLL_VIEW_INVERSION, useValue: false },
123
+ { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },
124
+ { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },
125
+ ], viewQueries: [{ propertyName: "scrollBar", first: true, predicate: ["scrollBar"], descendants: true, read: NgScrollBarComponent }], usesInheritance: true, ngImport: i0, template: "<div localeSensitive [langTextDir]=\"($langTextDir | async)!\" [listDir]=\"($direction | async)\" class=\"ngvl__container\"\r\n [ngClass]=\"($containerClasses | async)!\">\r\n <div #scrollViewport part=\"scroller\" class=\"ngvl__scroller\">\r\n <div #scrollContent part=\"list\" class=\"ngvl__list\" [ngClass]=\"($actualClasses | async)\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none}.ngvl__container{position:relative;overflow:hidden;display:grid;width:100%;height:100%;cursor:grab}.ngvl__container.overlapping{position:relative;display:block}.ngvl__container.grabbing{cursor:grabbing}.ngvl__container.horizontal{transition:grid-template-rows .1s ease-out}.ngvl__container.horizontal:not(.overlapping){grid-template-rows:1fr 0}.ngvl__container.horizontal.scrollable.enabled:not(.overlapping){grid-template-rows:1fr auto}.ngvl__container.horizontal .ngvl__list{display:inline-flex}.ngvl__container.horizontal .ngvl__scroller-wrapper.filtered,.ngvl__container.horizontal .ngvl__scroller{overflow:unset}.ngvl__container.vertical{transition:grid-template-columns .1s ease-out}.ngvl__container.vertical:not(.overlapping){grid-template-columns:1fr 0}.ngvl__container.vertical.scrollable.enabled:not(.overlapping){grid-template-columns:1fr auto}.ngvl__container.vertical .ngvl__scroller-wrapper.filtered,.ngvl__container.vertical .ngvl__scroller{overflow:unset}.ngvl__container .ngvl__scroller-wrapper,.ngvl__container .ngvl__scroller{display:block;position:relative;overflow:hidden;width:100%;height:100%}.ngvl__container .ngvl__list{position:absolute;list-style:none;padding:0;margin:0;width:100%;height:100%;opacity:0}.ngvl__container .ngvl__list.prepared{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.LocaleSensitiveDirective, selector: "[localeSensitive]", inputs: ["langTextDir", "listDir"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderScrollerComponent, decorators: [{
127
+ type: Component,
128
+ args: [{ selector: 'ng-prerender-scroller', providers: [
129
+ { provide: SCROLL_VIEW_INVERSION, useValue: false },
130
+ { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },
131
+ { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },
132
+ ], standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div localeSensitive [langTextDir]=\"($langTextDir | async)!\" [listDir]=\"($direction | async)\" class=\"ngvl__container\"\r\n [ngClass]=\"($containerClasses | async)!\">\r\n <div #scrollViewport part=\"scroller\" class=\"ngvl__scroller\">\r\n <div #scrollContent part=\"list\" class=\"ngvl__list\" [ngClass]=\"($actualClasses | async)\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none}.ngvl__container{position:relative;overflow:hidden;display:grid;width:100%;height:100%;cursor:grab}.ngvl__container.overlapping{position:relative;display:block}.ngvl__container.grabbing{cursor:grabbing}.ngvl__container.horizontal{transition:grid-template-rows .1s ease-out}.ngvl__container.horizontal:not(.overlapping){grid-template-rows:1fr 0}.ngvl__container.horizontal.scrollable.enabled:not(.overlapping){grid-template-rows:1fr auto}.ngvl__container.horizontal .ngvl__list{display:inline-flex}.ngvl__container.horizontal .ngvl__scroller-wrapper.filtered,.ngvl__container.horizontal .ngvl__scroller{overflow:unset}.ngvl__container.vertical{transition:grid-template-columns .1s ease-out}.ngvl__container.vertical:not(.overlapping){grid-template-columns:1fr 0}.ngvl__container.vertical.scrollable.enabled:not(.overlapping){grid-template-columns:1fr auto}.ngvl__container.vertical .ngvl__scroller-wrapper.filtered,.ngvl__container.vertical .ngvl__scroller{overflow:unset}.ngvl__container .ngvl__scroller-wrapper,.ngvl__container .ngvl__scroller{display:block;position:relative;overflow:hidden;width:100%;height:100%}.ngvl__container .ngvl__list{position:absolute;list-style:none;padding:0;margin:0;width:100%;height:100%;opacity:0}.ngvl__container .ngvl__list.prepared{opacity:1}\n"] }]
133
+ }], ctorParameters: function () { return []; }, propDecorators: { scrollBar: [{
134
+ type: ViewChild,
135
+ args: ['scrollBar', { read: NgScrollBarComponent }]
136
+ }], scrollbarEnabled: [{
137
+ type: Input
138
+ }], classes: [{
139
+ type: Input
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLXNjcm9sbGVyL25nLXByZXJlbmRlci1zY3JvbGxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUNB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LFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGdCQUFnQjtnQkFDM0csVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTthQUNwQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVMsZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7eUhBMUpRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHNIQVIxQjtRQUNQLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7UUFDbkQsRUFBRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUNsRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0tBQy9ELDZHQUsrQixvQkFBb0Isb0RDaEN4RCxxYkFPTTsyRkR3Qk8sNEJBQTRCO2tCQVp4QyxTQUFTOytCQUNJLHVCQUF1QixhQUd0Qjt3QkFDUCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO3dCQUNuRCxFQUFFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO3dCQUNsRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO3FCQUMvRCxjQUNXLEtBQUssbUJBQ0EsdUJBQXVCLENBQUMsTUFBTTswRUFJL0MsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRTtnQkFTbEQsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVNjcm9sbFZpZXcgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9iYXNlL2Jhc2Utc2Nyb2xsLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsLXZpZXcnO1xyXG5pbXBvcnQgeyBCRUhBVklPUl9JTlNUQU5ULCBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELCBMRUZUX1BST1BfTkFNRSwgVE9QX1BST1BfTkFNRSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Nyb2xsQm94IH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsZXIvdXRpbHMnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcblxyXG4vKipcclxuICogTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci1zY3JvbGxlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgdXNlVmFsdWU6IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCwgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2Nyb2xsVmlldyB7XHJcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxCYXInLCB7IHJlYWQ6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IH0pXHJcbiAgICBzY3JvbGxCYXI6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGxhbmdUZXh0RGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZXh0RGlyZWN0aW9uPihUZXh0RGlyZWN0aW9ucy5MVFIpO1xyXG4gICAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJHNjcm9sbGJhckVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQpO1xyXG4gICAgcmVhZG9ubHkgJHNjcm9sbGJhckVuYWJsZWQgPSB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc2Nyb2xsYmFyRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgc2Nyb2xsYmFyRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XHJcbiAgICByZWFkb25seSAkY2xhc3NlcyA9IHRoaXMuXyRjbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBjbGFzc2VzKHY6IHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kY2xhc3Nlcy5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBjbGFzc2VzKCkgeyByZXR1cm4gdGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGFjdHVhbENsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICAgIHJlYWRvbmx5ICRhY3R1YWxDbGFzc2VzID0gdGhpcy5fJGFjdHVhbENsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY29udGFpbmVyQ2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gICAgcmVhZG9ubHkgJGNvbnRhaW5lckNsYXNzZXMgPSB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyR0aHVtYlNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkdGh1bWJTaXplID0gdGhpcy5fJHRodW1iU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRzY3JvbGxiYXJTaG93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICByZWFkb25seSAkc2Nyb2xsYmFyU2hvdyA9IHRoaXMuXyRzY3JvbGxiYXJTaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIG92ZXJyaWRlIHNldCB4KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl94ID0gdGhpcy5fYWN0dWFsWCA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB4KCkgeyByZXR1cm4gdGhpcy5feDsgfVxyXG5cclxuICAgIG92ZXJyaWRlIHNldCB5KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl95ID0gdGhpcy5fYWN0dWFsWSA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB5KCkgeyByZXR1cm4gdGhpcy5feTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAodmlld3BvcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHZpZXdwb3J0Qm91bmRzLm5leHQoeyB3aWR0aDogdmlld3BvcnQub2Zmc2V0V2lkdGgsIGhlaWdodDogdmlld3BvcnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25SZXNpemVDb250ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGNvbnRlbnRCb3VuZHMubmV4dCh7IHdpZHRoOiBjb250ZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGNvbnRlbnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zY3JvbGxCb3ggPSBuZXcgU2Nyb2xsQm94KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNsYXNzZXMgPSB0aGlzLiRjbGFzc2VzLFxyXG4gICAgICAgICAgICAkZGlyZWN0aW9uID0gdGhpcy4kZGlyZWN0aW9uO1xyXG5cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KChbJGNsYXNzZXMsICRkaXJlY3Rpb25dKSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoW2NsYXNzZXMsIGRpcmVjdGlvbl0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuXyRhY3R1YWxDbGFzc2VzLm5leHQoeyAuLi5jbGFzc2VzLCBbZGlyZWN0aW9uXTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNvbnRlbnRCb3VuZHMgPSB0aGlzLiRjb250ZW50Qm91bmRzLFxyXG4gICAgICAgICAgICAkdmlld3BvcnRCb3VuZHMgPSB0aGlzLiR2aWV3cG9ydEJvdW5kcyxcclxuICAgICAgICAgICAgJGlzVmVydGljYWwgPSB0aGlzLiRpc1ZlcnRpY2FsLFxyXG4gICAgICAgICAgICAkc2Nyb2xsYmFyRW5hYmxlZCA9IHRoaXMuJHNjcm9sbGJhckVuYWJsZWQ7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoWyRkaXJlY3Rpb24sICRzY3JvbGxiYXJFbmFibGVkLCAkaXNWZXJ0aWNhbCwgJGNvbnRlbnRCb3VuZHMsICR2aWV3cG9ydEJvdW5kc10pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKFtkaXJlY3Rpb24sIHNjcm9sbGJhckVuYWJsZWRdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5uZXh0KHsgW2RpcmVjdGlvbl06IHRydWUsIGVuYWJsZWQ6IHNjcm9sbGJhckVuYWJsZWQsIHNjcm9sbGFibGU6IHNjcm9sbGJhckVuYWJsZWQgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0ICRzdGFydE9mZnNldCA9IHRoaXMuJHN0YXJ0T2Zmc2V0LFxyXG4gICAgICAgICAgICAkZW5kT2Zmc2V0ID0gdGhpcy4kZW5kT2Zmc2V0LFxyXG4gICAgICAgICAgICAkdGh1bWJTaXplID0gdGhpcy4kdGh1bWJTaXplO1xyXG5cclxuICAgICAgICBmcm9tKFskZW5kT2Zmc2V0LCAkc3RhcnRPZmZzZXQsICR0aHVtYlNpemUsICRpc1ZlcnRpY2FsXSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICBjb25zdCAkdXBkYXRlU2Nyb2xsQmFyID0gdGhpcy4kdXBkYXRlU2Nyb2xsQmFyO1xyXG5cclxuICAgICAgICAkdXBkYXRlU2Nyb2xsQmFyLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU2Nyb2xsQmFySGFuZGxlcih1cGRhdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuXyRkaXJlY3Rpb24uZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYlNpemUsXHJcbiAgICAgICAgICAgICAgICB0aHVtYlBvc2l0aW9uLFxyXG4gICAgICAgICAgICB9ID0gdGhpcy5fc2Nyb2xsQm94LmNhbGN1bGF0ZVNjcm9sbCh7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB2aWV3cG9ydFdpZHRoOiBzY3JvbGxWaWV3cG9ydC5vZmZzZXRXaWR0aCwgdmlld3BvcnRIZWlnaHQ6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCwgY29udGVudEhlaWdodDogc2Nyb2xsQ29udGVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBzdGFydE9mZnNldCxcclxuICAgICAgICAgICAgICAgIGVuZE9mZnNldCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWDogdGhpcy5feCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWTogdGhpcy5feSxcclxuICAgICAgICAgICAgICAgIG1pblNpemU6IDEsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl8kdGh1bWJTaXplLm5leHQodGh1bWJTaXplKTtcclxuICAgICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQmFyPy5zY3JvbGwoe1xyXG4gICAgICAgICAgICAgICAgW2lzVmVydGljYWwgPyBUT1BfUFJPUF9OQU1FIDogTEVGVF9QUk9QX05BTUVdOiB0aHVtYlBvc2l0aW9uLCBmaXJlVXBkYXRlOiBmYWxzZSwgYmVoYXZpb3I6IEJFSEFWSU9SX0lOU1RBTlQsXHJcbiAgICAgICAgICAgICAgICB1c2VyQWN0aW9uOiBmYWxzZSwgYmxlbmRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl8kc2Nyb2xsYmFyU2hvdy5uZXh0KHRoaXMuc2Nyb2xsYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNjcm9sbEJhcigpIHtcclxuICAgICAgICB0aGlzLl8kdXBkYXRlU2Nyb2xsQmFyLm5leHQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGxvY2FsZVNlbnNpdGl2ZSBbbGFuZ1RleHREaXJdPVwiKCRsYW5nVGV4dERpciB8IGFzeW5jKSFcIiBbbGlzdERpcl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKVwiIGNsYXNzPVwibmd2bF9fY29udGFpbmVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIigkY29udGFpbmVyQ2xhc3NlcyB8IGFzeW5jKSFcIj5cclxuICAgIDxkaXYgI3Njcm9sbFZpZXdwb3J0IHBhcnQ9XCJzY3JvbGxlclwiIGNsYXNzPVwibmd2bF9fc2Nyb2xsZXJcIj5cclxuICAgICAgICA8ZGl2ICNzY3JvbGxDb250ZW50IHBhcnQ9XCJsaXN0XCIgY2xhc3M9XCJuZ3ZsX19saXN0XCIgW25nQ2xhc3NdPVwiKCRhY3R1YWxDbGFzc2VzIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -1,20 +1,20 @@
1
- import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { NgPrerenderScrollerComponent } from './ng-prerender-scroller.component';
4
- import { LocaleSensitiveModule } from '../../../../directives';
5
- import * as i0 from "@angular/core";
6
- export class NgPrerenderScrollerModule {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderScrollerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderScrollerModule, declarations: [NgPrerenderScrollerComponent], imports: [CommonModule, LocaleSensitiveModule], exports: [NgPrerenderScrollerComponent] });
9
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderScrollerModule, imports: [CommonModule, LocaleSensitiveModule] });
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderScrollerModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- declarations: [NgPrerenderScrollerComponent],
15
- exports: [NgPrerenderScrollerComponent],
16
- imports: [CommonModule, LocaleSensitiveModule],
17
- schemas: [NO_ERRORS_SCHEMA],
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVEvRCxNQUFNLE9BQU8seUJBQXlCO3dHQUF6Qix5QkFBeUI7eUdBQXpCLHlCQUF5QixpQkFMbkIsNEJBQTRCLGFBRWpDLFlBQVksRUFBRSxxQkFBcUIsYUFEbkMsNEJBQTRCO3lHQUk3Qix5QkFBeUIsWUFIeEIsWUFBWSxFQUFFLHFCQUFxQjs7NEZBR3BDLHlCQUF5QjtrQkFOckMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFLENBQUMsNEJBQTRCLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxxQkFBcUIsQ0FBQztvQkFDOUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE5PX0VSUk9SU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudCB9IGZyb20gJy4vbmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvY2FsZVNlbnNpdGl2ZU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW05nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW05nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9jYWxlU2Vuc2l0aXZlTW9kdWxlXSxcclxuICAgIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyU2Nyb2xsZXJNb2R1bGUgeyB9XHJcbiJdfQ==
1
+ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgPrerenderScrollerComponent } from './ng-prerender-scroller.component';
4
+ import { LocaleSensitiveModule } from '../../../../directives';
5
+ import * as i0 from "@angular/core";
6
+ export class NgPrerenderScrollerModule {
7
+ }
8
+ NgPrerenderScrollerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderScrollerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ NgPrerenderScrollerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderScrollerModule, declarations: [NgPrerenderScrollerComponent], imports: [CommonModule, LocaleSensitiveModule], exports: [NgPrerenderScrollerComponent] });
10
+ NgPrerenderScrollerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderScrollerModule, imports: [CommonModule, LocaleSensitiveModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderScrollerModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [NgPrerenderScrollerComponent],
15
+ exports: [NgPrerenderScrollerComponent],
16
+ imports: [CommonModule, LocaleSensitiveModule],
17
+ schemas: [NO_ERRORS_SCHEMA],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVEvRCxNQUFNLE9BQU8seUJBQXlCOztzSEFBekIseUJBQXlCO3VIQUF6Qix5QkFBeUIsaUJBTG5CLDRCQUE0QixhQUVqQyxZQUFZLEVBQUUscUJBQXFCLGFBRG5DLDRCQUE0Qjt1SEFJN0IseUJBQXlCLFlBSHhCLFlBQVksRUFBRSxxQkFBcUI7MkZBR3BDLHlCQUF5QjtrQkFOckMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFLENBQUMsNEJBQTRCLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxxQkFBcUIsQ0FBQztvQkFDOUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE5PX0VSUk9SU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudCB9IGZyb20gJy4vbmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvY2FsZVNlbnNpdGl2ZU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW05nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW05nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9jYWxlU2Vuc2l0aXZlTW9kdWxlXSxcclxuICAgIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyU2Nyb2xsZXJNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -1,3 +1,3 @@
1
- import { PrerenderTrackBox } from './prerender-track-box';
2
- export { PrerenderTrackBox, };
1
+ import { PrerenderTrackBox } from './prerender-track-box';
2
+ export { PrerenderTrackBox, };
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQ0gsaUJBQWlCLEdBQ3BCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcmVyZW5kZXJUcmFja0JveCB9IGZyb20gJy4vcHJlcmVuZGVyLXRyYWNrLWJveCc7XHJcblxyXG5leHBvcnQge1xyXG4gICAgUHJlcmVuZGVyVHJhY2tCb3gsXHJcbn0iXX0=
@@ -0,0 +1,201 @@
1
+ import { CMap } from "../../../utils/cmap";
2
+ import { DEFAULT_DIVIDES, DEFAULT_DYNAMIC_SIZE, DEFAULT_ITEM_SIZE, DEFAULT_SNAP_TO_ITEM_ALIGN, TRACK_BY_PROPERTY_NAME } from "../../../const";
3
+ import { EventEmitter } from "../../../utils/event-emitter/event-emitter";
4
+ import { PrerenderTrackBoxEvents } from "../events";
5
+ const createItemData = (data, isVertical, bounds, boundsSize, dynamic, divides, itemSize, id, index) => {
6
+ const w = (isVertical ? (bounds.width / divides) : itemSize), h = (isVertical ? itemSize : (bounds.height / divides));
7
+ return {
8
+ index,
9
+ id,
10
+ measures: {
11
+ position: 0,
12
+ scrollSize: 0,
13
+ size: itemSize,
14
+ row: {
15
+ size: itemSize,
16
+ odd: false,
17
+ even: false
18
+ },
19
+ boundsSize,
20
+ absoluteStartPosition: 0,
21
+ absoluteStartPositionPercent: 0,
22
+ absoluteEndPosition: 0,
23
+ absoluteEndPositionPercent: 0,
24
+ delta: 0,
25
+ x: 0,
26
+ y: 0,
27
+ transformedX: 0,
28
+ transformedY: 0,
29
+ z: 0,
30
+ rotationX: 0,
31
+ rotationY: 0,
32
+ rotationZ: 0,
33
+ scaleX: 0,
34
+ scaleY: 0,
35
+ scaleZ: 0,
36
+ width: w,
37
+ height: h,
38
+ minWidth: 0,
39
+ minHeight: 0,
40
+ maxWidth: Number.MAX_SAFE_INTEGER,
41
+ maxHeight: Number.MAX_SAFE_INTEGER,
42
+ scrollDirection: 0,
43
+ },
44
+ data,
45
+ previouseData: data,
46
+ nextData: data,
47
+ config: {
48
+ new: false,
49
+ odd: false,
50
+ even: false,
51
+ collapsable: false,
52
+ sticky: 0,
53
+ selectable: false,
54
+ snap: false,
55
+ snapped: false,
56
+ snappedOut: false,
57
+ isVertical,
58
+ dynamic,
59
+ isSnappingMethodAdvanced: false,
60
+ divides: 1,
61
+ tabIndex: 0,
62
+ opacity: 1,
63
+ zIndex: "0",
64
+ snapToItem: false,
65
+ snapToItemAlign: DEFAULT_SNAP_TO_ITEM_ALIGN,
66
+ layoutOffset: 0,
67
+ isFirst: false,
68
+ isLast: false,
69
+ fullSize: false,
70
+ layoutIndexOffset: 0,
71
+ totalItems: 0,
72
+ },
73
+ };
74
+ };
75
+ /**
76
+ * PrerenderTrackBox
77
+ * Maximum performance for extremely large lists.
78
+ * It is based on algorithms for virtualization of screen objects.
79
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/prerender-container/core/prerender-track-box.ts
80
+ * @author Evgenii Alexandrovich Grebennikov
81
+ * @email djonnyx@gmail.com
82
+ */
83
+ export class PrerenderTrackBox extends EventEmitter {
84
+ constructor() {
85
+ super(...arguments);
86
+ this._map = new CMap();
87
+ this._items = new Array();
88
+ this._container = null;
89
+ this._componentClass = null;
90
+ this._components = new Array();
91
+ this._componentsResizeObserver = new ResizeObserver(() => {
92
+ const components = this._components;
93
+ if (!!components) {
94
+ for (const comp of components) {
95
+ const { width, height } = comp.instance.getBounds();
96
+ this._map?.set(comp.instance.itemId, { width, height });
97
+ }
98
+ }
99
+ this.dispatch(PrerenderTrackBoxEvents.RESIZE, (this._map?.toObject() || {}));
100
+ });
101
+ this._active = true;
102
+ }
103
+ get active() { return this._active; }
104
+ refresh(componentClass, bounds, params) {
105
+ const isVertical = params.isVertical ?? true, dynamic = params.dynamic ?? DEFAULT_DYNAMIC_SIZE, divides = params.divides ?? DEFAULT_DIVIDES, itemsSize = params.itemSize ?? DEFAULT_ITEM_SIZE, trackBy = params.trackBy ?? TRACK_BY_PROPERTY_NAME, itemRenderer = params.itemRenderer, boundsSize = isVertical ? bounds.height : bounds.width, items = this._items, components = this._components, resizeObserver = this._componentsResizeObserver;
106
+ if (!items || !components || !this._container) {
107
+ return;
108
+ }
109
+ let totalSize = 0, j = 0;
110
+ for (let i = items.length - 1, l = 0; i >= l; i--) {
111
+ if (totalSize > boundsSize) {
112
+ break;
113
+ }
114
+ const item = items[i];
115
+ if (!!item) {
116
+ const id = item[trackBy], index = items.length - i - 1;
117
+ let comp;
118
+ if (components.length <= j) {
119
+ comp = this._container.createComponent(componentClass);
120
+ comp.instance.renderer = itemRenderer;
121
+ if (!!resizeObserver) {
122
+ resizeObserver.observe(comp.instance.element);
123
+ }
124
+ components.push(comp);
125
+ }
126
+ else {
127
+ comp = components[j];
128
+ }
129
+ comp.instance.item = createItemData(item, isVertical, bounds, boundsSize, dynamic, divides, itemsSize, id, index);
130
+ comp.instance.show();
131
+ const { width, height } = comp.instance.getBounds(), w = isVertical ? width : width < itemsSize ? itemsSize : width, h = isVertical ? height < itemsSize ? itemsSize : height : height;
132
+ totalSize += isVertical ? h : w;
133
+ j++;
134
+ }
135
+ }
136
+ }
137
+ create(container) {
138
+ this._container = container;
139
+ }
140
+ reset(componentClass, items, bounds, params) {
141
+ this._items = items;
142
+ this._componentClass = componentClass;
143
+ this.refresh(componentClass, bounds, params);
144
+ }
145
+ getCache() {
146
+ return !!this._map ? this._map.toObject() : {};
147
+ }
148
+ clear() {
149
+ if (!!this._map) {
150
+ this._map.clear();
151
+ }
152
+ }
153
+ on() {
154
+ if (this._active) {
155
+ return;
156
+ }
157
+ this._active = true;
158
+ const components = this._components;
159
+ if (!!components) {
160
+ const observer = this._componentsResizeObserver;
161
+ for (const comp of components) {
162
+ if (!!comp && !!observer) {
163
+ observer.observe(comp.instance.element);
164
+ }
165
+ }
166
+ }
167
+ }
168
+ off() {
169
+ if (!this._active) {
170
+ return;
171
+ }
172
+ this._active = false;
173
+ if (!!this._componentsResizeObserver) {
174
+ this._componentsResizeObserver?.disconnect();
175
+ }
176
+ }
177
+ dispose() {
178
+ super.dispose();
179
+ if (!!this._map) {
180
+ this._map.clear();
181
+ this._map = null;
182
+ }
183
+ if (!!this._items) {
184
+ this._items = null;
185
+ }
186
+ if (!!this._componentClass) {
187
+ this._componentClass = null;
188
+ }
189
+ if (!!this._container) {
190
+ this._container = null;
191
+ }
192
+ if (!!this._components) {
193
+ this._components = null;
194
+ }
195
+ if (!!this._componentsResizeObserver) {
196
+ this._componentsResizeObserver.disconnect();
197
+ this._componentsResizeObserver = null;
198
+ }
199
+ }
200
+ }
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLXRyYWNrLWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUE2QixNQUFNLFdBQVcsQ0FBQztBQUUvRSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsVUFBbUIsRUFBRSxNQUFhLEVBQUUsVUFBa0IsRUFDbEcsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxFQUFNLEVBQUUsS0FBYSxFQUEwQixFQUFFO0lBQ3RHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBUSxFQUMvRCxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFRLENBQUM7SUFDbkUsT0FBTztRQUNILEtBQUs7UUFDTCxFQUFFO1FBQ0YsUUFBUSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsR0FBRyxFQUFFO2dCQUNE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QjtRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUNsQyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztTQUN6QztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0sIElWaXJ0dWFsTGlzdENvbGxlY3Rpb24sIElWaXJ0dWFsTGlzdEl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IElkIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVzXCI7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENNYXAgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY21hcFwiO1xyXG5pbXBvcnQgeyBQcmVyZW5kZXJDYWNoZSB9IGZyb20gXCIuLi90eXBlcy9jYWNoZVwiO1xyXG5pbXBvcnQgeyBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL25nLWxpc3QtaXRlbS9iYXNlXCI7XHJcbmltcG9ydCB7IElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBERUZBVUxUX0RJVklERVMsIERFRkFVTFRfRFlOQU1JQ19TSVpFLCBERUZBVUxUX0lURU1fU0laRSwgREVGQVVMVF9TTkFQX1RPX0lURU1fQUxJR04sIFRSQUNLX0JZX1BST1BFUlRZX05BTUUgfSBmcm9tIFwiLi4vLi4vLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50JDEgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2NvbXBvbmVudC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZXZlbnQtZW1pdHRlci9ldmVudC1lbWl0dGVyXCI7XHJcbmltcG9ydCB7IFByZXJlbmRlclRyYWNrQm94RXZlbnRzLCBQcmVyZW5kZXJUcmFja0JveEhhbmRsZXJzIH0gZnJvbSBcIi4uL2V2ZW50c1wiO1xyXG5cclxuY29uc3QgY3JlYXRlSXRlbURhdGEgPSAoZGF0YTogSVZpcnR1YWxMaXN0SXRlbSwgaXNWZXJ0aWNhbDogYm9vbGVhbiwgYm91bmRzOiBJU2l6ZSwgYm91bmRzU2l6ZTogbnVtYmVyLFxyXG4gICAgZHluYW1pYzogYm9vbGVhbiwgZGl2aWRlczogbnVtYmVyLCBpdGVtU2l6ZTogbnVtYmVyLCBpZDogSWQsIGluZGV4OiBudW1iZXIpOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtID0+IHtcclxuICAgIGNvbnN0IHcgPSAoaXNWZXJ0aWNhbCA/IChib3VuZHMud2lkdGggLyBkaXZpZGVzKSA6IGl0ZW1TaXplKSBhcyBhbnksXHJcbiAgICAgICAgaCA9IChpc1ZlcnRpY2FsID8gaXRlbVNpemUgOiAoYm91bmRzLmhlaWdodCAvIGRpdmlkZXMpKSBhcyBhbnk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIG1lYXN1cmVzOiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiAwLFxyXG4gICAgICAgICAgICBzY3JvbGxTaXplOiAwLFxyXG4gICAgICAgICAgICBzaXplOiBpdGVtU2l6ZSxcclxuICAgICAgICAgICAgcm93OiB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiBpdGVtU2l6ZSxcclxuICAgICAgICAgICAgICAgIG9kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBldmVuOiBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib3VuZHNTaXplLFxyXG4gICAgICAgICAgICBhYnNvbHV0ZVN0YXJ0UG9zaXRpb246IDAsXHJcbiAgICAgICAgICAgIGFic29sdXRlU3RhcnRQb3NpdGlvblBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIGFic29sdXRlRW5kUG9zaXRpb246IDAsXHJcbiAgICAgICAgICAgIGFic29sdXRlRW5kUG9zaXRpb25QZXJjZW50OiAwLFxyXG4gICAgICAgICAgICBkZWx0YTogMCxcclxuICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgeTogMCxcclxuICAgICAgICAgICAgdHJhbnNmb3JtZWRYOiAwLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFk6IDAsXHJcbiAgICAgICAgICAgIHo6IDAsXHJcbiAgICAgICAgICAgIHJvdGF0aW9uWDogMCxcclxuICAgICAgICAgICAgcm90YXRpb25ZOiAwLFxyXG4gICAgICAgICAgICByb3RhdGlvblo6IDAsXHJcbiAgICAgICAgICAgIHNjYWxlWDogMCxcclxuICAgICAgICAgICAgc2NhbGVZOiAwLFxyXG4gICAgICAgICAgICBzY2FsZVo6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiB3LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IGgsXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxyXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IDAsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcclxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcclxuICAgICAgICAgICAgc2Nyb2xsRGlyZWN0aW9uOiAwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBwcmV2aW91c2VEYXRhOiBkYXRhLFxyXG4gICAgICAgIG5leHREYXRhOiBkYXRhLFxyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICBuZXc6IGZhbHNlLFxyXG4gICAgICAgICAgICBvZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBldmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgY29sbGFwc2FibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdGlja3k6IDAsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBwZWRPdXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsLFxyXG4gICAgICAgICAgICBkeW5hbWljLFxyXG4gICAgICAgICAgICBpc1NuYXBwaW5nTWV0aG9kQWR2YW5jZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXZpZGVzOiAxLFxyXG4gICAgICAgICAgICB0YWJJbmRleDogMCxcclxuICAgICAgICAgICAgb3BhY2l0eTogMSxcclxuICAgICAgICAgICAgekluZGV4OiBcIjBcIixcclxuICAgICAgICAgICAgc25hcFRvSXRlbTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBUb0l0ZW1BbGlnbjogREVGQVVMVF9TTkFQX1RPX0lURU1fQUxJR04sXHJcbiAgICAgICAgICAgIGxheW91dE9mZnNldDogMCxcclxuICAgICAgICAgICAgaXNGaXJzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzTGFzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZ1bGxTaXplOiBmYWxzZSxcclxuICAgICAgICAgICAgbGF5b3V0SW5kZXhPZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IDAsXHJcbiAgICAgICAgfSxcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFByZXJlbmRlclRyYWNrQm94XHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUHJlcmVuZGVyVHJhY2tCb3ggZXh0ZW5kcyBFdmVudEVtaXR0ZXI8UHJlcmVuZGVyVHJhY2tCb3hFdmVudHMsIFByZXJlbmRlclRyYWNrQm94SGFuZGxlcnM+IHtcclxuICAgIHByaXZhdGUgX21hcDogQ01hcDxJZCwgSVNpemU+IHwgbnVsbCA9IG5ldyBDTWFwPElkLCBJU2l6ZT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9pdGVtczogSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiB8IG51bGwgPSBuZXcgQXJyYXk8SVZpcnR1YWxMaXN0SXRlbT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9jb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRDbGFzczogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRzOiBBcnJheTxDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4+IHwgbnVsbCA9IG5ldyBBcnJheTxDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlciB8IG51bGwgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLl9jb21wb25lbnRzO1xyXG4gICAgICAgIGlmICghIWNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wIG9mIGNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29tcC5pbnN0YW5jZS5nZXRCb3VuZHMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21hcD8uc2V0KGNvbXAuaW5zdGFuY2UuaXRlbUlkISwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2goUHJlcmVuZGVyVHJhY2tCb3hFdmVudHMuUkVTSVpFLCAodGhpcy5fbWFwPy50b09iamVjdCgpIHx8IHt9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIF9hY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgZ2V0IGFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuX2FjdGl2ZTsgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaChjb21wb25lbnRDbGFzczogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4sIGJvdW5kczogSVNpemUsIHBhcmFtczogSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IGlzVmVydGljYWwgPSBwYXJhbXMuaXNWZXJ0aWNhbCA/PyB0cnVlLFxyXG4gICAgICAgICAgICBkeW5hbWljID0gcGFyYW1zLmR5bmFtaWMgPz8gREVGQVVMVF9EWU5BTUlDX1NJWkUsXHJcbiAgICAgICAgICAgIGRpdmlkZXMgPSBwYXJhbXMuZGl2aWRlcyA/PyBERUZBVUxUX0RJVklERVMsXHJcbiAgICAgICAgICAgIGl0ZW1zU2l6ZSA9IHBhcmFtcy5pdGVtU2l6ZSA/PyBERUZBVUxUX0lURU1fU0laRSxcclxuICAgICAgICAgICAgdHJhY2tCeSA9IHBhcmFtcy50cmFja0J5ID8/IFRSQUNLX0JZX1BST1BFUlRZX05BTUUsXHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXJlciA9IHBhcmFtcy5pdGVtUmVuZGVyZXIsXHJcbiAgICAgICAgICAgIGJvdW5kc1NpemUgPSBpc1ZlcnRpY2FsID8gYm91bmRzLmhlaWdodCA6IGJvdW5kcy53aWR0aCxcclxuICAgICAgICAgICAgaXRlbXMgPSB0aGlzLl9pdGVtcywgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudHMsXHJcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyID0gdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW1zIHx8ICFjb21wb25lbnRzIHx8ICF0aGlzLl9jb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG90YWxTaXplID0gMCwgaiA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSAwOyBpID49IGw7IGktLSkge1xyXG4gICAgICAgICAgICBpZiAodG90YWxTaXplID4gYm91bmRzU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBpZiAoISFpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGl0ZW1bdHJhY2tCeV0sIGluZGV4ID0gaXRlbXMubGVuZ3RoIC0gaSAtIDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29tcDogQ29tcG9uZW50UmVmPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+O1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoIDw9IGopIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wID0gdGhpcy5fY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5yZW5kZXJlciA9IGl0ZW1SZW5kZXJlcjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISFyZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbXAuaW5zdGFuY2UuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaChjb21wKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcCA9IGNvbXBvbmVudHNbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLml0ZW0gPSBjcmVhdGVJdGVtRGF0YShpdGVtLCBpc1ZlcnRpY2FsLCBib3VuZHMsIGJvdW5kc1NpemUsIGR5bmFtaWMsIGRpdmlkZXMsIGl0ZW1zU2l6ZSwgaWQsIGluZGV4KTtcclxuICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb21wLmluc3RhbmNlLmdldEJvdW5kcygpLFxyXG4gICAgICAgICAgICAgICAgICAgIHcgPSBpc1ZlcnRpY2FsID8gd2lkdGggOiB3aWR0aCA8IGl0ZW1zU2l6ZSA/IGl0ZW1zU2l6ZSA6IHdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGggPSBpc1ZlcnRpY2FsID8gaGVpZ2h0IDwgaXRlbXNTaXplID8gaXRlbXNTaXplIDogaGVpZ2h0IDogaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgdG90YWxTaXplICs9IGlzVmVydGljYWwgPyBoIDogdztcclxuICAgICAgICAgICAgICAgIGorKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gY29udGFpbmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KGNvbXBvbmVudENsYXNzOiBDb21wb25lbnQkMTxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PiwgaXRlbXM6IElWaXJ0dWFsTGlzdENvbGxlY3Rpb24sXHJcbiAgICAgICAgYm91bmRzOiBJU2l6ZSwgcGFyYW1zOiBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zKSB7XHJcbiAgICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcztcclxuICAgICAgICB0aGlzLl9jb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaChjb21wb25lbnRDbGFzcywgYm91bmRzLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENhY2hlKCk6IFByZXJlbmRlckNhY2hlIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLl9tYXAgPyB0aGlzLl9tYXAudG9PYmplY3QoKSA6IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyKCkge1xyXG4gICAgICAgIGlmICghIXRoaXMuX21hcCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLl9jb21wb25lbnRzO1xyXG4gICAgICAgIGlmICghIWNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcCBvZiBjb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISFjb21wICYmICEhb2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbXAuaW5zdGFuY2UuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb2ZmKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgZGlzcG9zZSgpIHtcclxuICAgICAgICBzdXBlci5kaXNwb3NlKCk7XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX21hcCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5fbWFwID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2l0ZW1zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudENsYXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudENsYXNzID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbnRhaW5lcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,6 +1,6 @@
1
- export var PrerenderTrackBoxEvents;
2
- (function (PrerenderTrackBoxEvents) {
3
- PrerenderTrackBoxEvents["RESIZE"] = "resize";
4
- })(PrerenderTrackBoxEvents || (PrerenderTrackBoxEvents = {}));
5
- ;
1
+ export var PrerenderTrackBoxEvents;
2
+ (function (PrerenderTrackBoxEvents) {
3
+ PrerenderTrackBoxEvents["RESIZE"] = "resize";
4
+ })(PrerenderTrackBoxEvents || (PrerenderTrackBoxEvents = {}));
5
+ ;
6
6
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvZXZlbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLHVCQUVYO0FBRkQsV0FBWSx1QkFBdUI7SUFDL0IsNENBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUZXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFFbEM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJlcmVuZGVyQ2FjaGUgfSBmcm9tIFwiLi4vdHlwZXMvY2FjaGVcIjtcclxuXHJcbmV4cG9ydCBlbnVtIFByZXJlbmRlclRyYWNrQm94RXZlbnRzIHtcclxuICAgIFJFU0laRSA9ICdyZXNpemUnLFxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUHJlcmVuZGVyVHJhY2tCb3hSZXNpemVIYW5kbGVyID0gKGNhY2hlOiBQcmVyZW5kZXJDYWNoZSkgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCB0eXBlIFByZXJlbmRlclRyYWNrQm94SGFuZGxlcnMgPSBQcmVyZW5kZXJUcmFja0JveFJlc2l6ZUhhbmRsZXI7XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcyB9IGZyb20gJy4vcmVmcmVzaC1wYXJhbXMnO1xyXG5cclxuZXhwb3J0IHR5cGUge1xyXG4gICAgSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcyxcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1wYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvaW50ZXJmYWNlcy9yZWZyZXNoLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvcHJlcmVuZGVyLWNvbnRhaW5lci9pbnRlcmZhY2VzL3JlZnJlc2gtcGFyYW1zLnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zIHtcclxuICAgIGl0ZW1SZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgIGR5bmFtaWM6IGJvb2xlYW47XHJcbiAgICBkaXZpZGVzOiBudW1iZXI7XHJcbiAgICBpdGVtU2l6ZTogbnVtYmVyO1xyXG4gICAgaXNWZXJ0aWNhbDogYm9vbGVhbjtcclxuICAgIHRyYWNrQnk6IHN0cmluZztcclxufSJdfQ==
@@ -0,0 +1,90 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, } from "@angular/core";
2
+ import { filter, of, switchMap, takeUntil } from "rxjs";
3
+ import { DEFAULT_DIRECTION, DEFAULT_DIVIDES, DEFAULT_DYNAMIC_SIZE, DEFAULT_ITEM_SIZE, DEFAULT_SCROLLBAR_ENABLED, TRACK_BY_PROPERTY_NAME, } from "../../const";
4
+ import { NgPrerenderList } from "./components/ng-prerender-list/ng-prerender-list.component";
5
+ import { DisposableComponent } from "../../utils/disposable-component";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./components/ng-prerender-list/ng-prerender-list.component";
8
+ /**
9
+ * Prerender container.
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/14.x/projects/ng-virtual-list/src/lib/components/ng-prerender-container/ng-prerender-container.component.ts
13
+ * @author Evgenii Alexandrovich Grebennikov
14
+ * @email djonnyx@gmail.com
15
+ */
16
+ export class NgPrerenderContainer extends DisposableComponent {
17
+ constructor() {
18
+ super();
19
+ this._list = null;
20
+ this.enabled = false;
21
+ this.direction = DEFAULT_DIRECTION;
22
+ this.isVertical = true;
23
+ this.scrollbarEnabled = DEFAULT_SCROLLBAR_ENABLED;
24
+ this.startOffset = 0;
25
+ this.endOffset = 0;
26
+ this.dynamic = DEFAULT_DYNAMIC_SIZE;
27
+ this.itemSize = DEFAULT_ITEM_SIZE;
28
+ this.trackBy = TRACK_BY_PROPERTY_NAME;
29
+ this.divides = DEFAULT_DIVIDES;
30
+ }
31
+ get active() {
32
+ return this._list?.active ?? false;
33
+ }
34
+ ngAfterViewInit() {
35
+ const $list = of(this._list);
36
+ this.$render = $list.pipe(takeUntil(this._$unsubscribe), filter(v => !!v), switchMap(v => v.$render));
37
+ }
38
+ clear() {
39
+ const list = this._list;
40
+ if (!!list) {
41
+ list.clear();
42
+ }
43
+ }
44
+ on(items = null) {
45
+ const list = this._list;
46
+ if (!!list) {
47
+ list.on(items);
48
+ }
49
+ }
50
+ off() {
51
+ const list = this._list;
52
+ if (!!list) {
53
+ list.off();
54
+ }
55
+ }
56
+ }
57
+ NgPrerenderContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
+ NgPrerenderContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NgPrerenderContainer, selector: "ng-prerender-container", inputs: { enabled: "enabled", direction: "direction", isVertical: "isVertical", scrollbarEnabled: "scrollbarEnabled", startOffset: "startOffset", endOffset: "endOffset", bounds: "bounds", dynamic: "dynamic", itemSize: "itemSize", trackBy: "trackBy", divides: "divides" }, host: { styleAttribute: "position: relative;" }, viewQueries: [{ propertyName: "_list", first: true, predicate: ["list"], descendants: true, read: NgPrerenderList }], usesInheritance: true, ngImport: i0, template: "<ng-prerender-list #list [bounds]=\"bounds!\" [direction]=\"direction\" [dynamic]=\"dynamic\" [isVertical]=\"isVertical\"\r\n [itemSize]=\"itemSize\" [trackBy]=\"trackBy\" [itemRenderer]=\"itemRenderer\" [startOffset]=\"startOffset\"\r\n [divides]=\"divides\" [endOffset]=\"endOffset\" [scrollbarEnabled]=\"scrollbarEnabled\"\r\n [enabled]=\"enabled\"></ng-prerender-list>", 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;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{visibility:hidden;height:0!important;width:0!important;overflow:hidden}\n"], dependencies: [{ kind: "component", type: i1.NgPrerenderList, selector: "ng-prerender-list", inputs: ["enabled", "direction", "isVertical", "scrollbarEnabled", "startOffset", "endOffset", "bounds", "dynamic", "itemSize", "trackBy", "divides", "items", "itemRenderer", "itemComponentClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgPrerenderContainer, decorators: [{
60
+ type: Component,
61
+ args: [{ selector: 'ng-prerender-container', host: {
62
+ 'style': 'position: relative;'
63
+ }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, template: "<ng-prerender-list #list [bounds]=\"bounds!\" [direction]=\"direction\" [dynamic]=\"dynamic\" [isVertical]=\"isVertical\"\r\n [itemSize]=\"itemSize\" [trackBy]=\"trackBy\" [itemRenderer]=\"itemRenderer\" [startOffset]=\"startOffset\"\r\n [divides]=\"divides\" [endOffset]=\"endOffset\" [scrollbarEnabled]=\"scrollbarEnabled\"\r\n [enabled]=\"enabled\"></ng-prerender-list>", 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;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{visibility:hidden;height:0!important;width:0!important;overflow:hidden}\n"] }]
64
+ }], ctorParameters: function () { return []; }, propDecorators: { _list: [{
65
+ type: ViewChild,
66
+ args: ['list', { read: NgPrerenderList }]
67
+ }], enabled: [{
68
+ type: Input
69
+ }], direction: [{
70
+ type: Input
71
+ }], isVertical: [{
72
+ type: Input
73
+ }], scrollbarEnabled: [{
74
+ type: Input
75
+ }], startOffset: [{
76
+ type: Input
77
+ }], endOffset: [{
78
+ type: Input
79
+ }], bounds: [{
80
+ type: Input
81
+ }], dynamic: [{
82
+ type: Input
83
+ }], itemSize: [{
84
+ type: Input
85
+ }], trackBy: [{
86
+ type: Input
87
+ }], divides: [{
88
+ type: Input
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvbmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvbmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxTQUFTLEVBQUUsaUJBQWlCLEdBQ3ZGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUNILGlCQUFpQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxzQkFBc0IsR0FDakksTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFdkU7Ozs7Ozs7R0FPRztBQVlILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUE2Q3pEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUE1Q0osVUFBSyxHQUEyQixJQUFJLENBQUM7UUFHN0MsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUd6QixjQUFTLEdBQW9CLGlCQUFpQixDQUFDO1FBRy9DLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFHM0IscUJBQWdCLEdBQVkseUJBQXlCLENBQUM7UUFHdEQsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFHeEIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQU10QixZQUFPLEdBQVksb0JBQW9CLENBQUM7UUFHeEMsYUFBUSxHQUFXLGlCQUFpQixDQUFDO1FBR3JDLFlBQU8sR0FBVyxzQkFBc0IsQ0FBQztRQUd6QyxZQUFPLEdBQVcsZUFBZSxDQUFDO0lBWWxDLENBQUM7SUFORCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBTUQsZUFBZTtRQUNYLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUNyQixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQyxPQUFPLENBQUMsQ0FDN0IsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsRUFBRSxDQUFDLFFBQXVDLElBQUk7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVELEdBQUc7UUFDQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNkO0lBQ0wsQ0FBQzs7aUhBOUVRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHljQUNGLGVBQWUsb0RDbEM5Qyx5WEFHMEM7MkZEOEI3QixvQkFBb0I7a0JBWGhDLFNBQVM7K0JBQ0ksd0JBQXdCLFFBRzVCO3dCQUNGLE9BQU8sRUFBRSxxQkFBcUI7cUJBQ2pDLGNBQ1csS0FBSyxtQkFDQSx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxTQUFTOzBFQUlsQyxLQUFLO3NCQURaLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFJNUMsT0FBTztzQkFETixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBERUZBVUxUX0RJUkVDVElPTiwgREVGQVVMVF9ESVZJREVTLCBERUZBVUxUX0RZTkFNSUNfU0laRSwgREVGQVVMVF9JVEVNX1NJWkUsIERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQsIFRSQUNLX0JZX1BST1BFUlRZX05BTUUsXHJcbn0gZnJvbSBcIi4uLy4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IElWaXJ0dWFsTGlzdENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xyXG5pbXBvcnQgeyBOZ1ByZXJlbmRlckxpc3QgfSBmcm9tIFwiLi9jb21wb25lbnRzL25nLXByZXJlbmRlci1saXN0L25nLXByZXJlbmRlci1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBQcmVyZW5kZXJDYWNoZSB9IGZyb20gXCIuL3R5cGVzXCI7XHJcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZGlzcG9zYWJsZS1jb21wb25lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBQcmVyZW5kZXIgY29udGFpbmVyLlxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9uZy1wcmVyZW5kZXItY29udGFpbmVyLmNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICduZy1wcmVyZW5kZXItY29udGFpbmVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZy1wcmVyZW5kZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi9uZy12aXJ0dWFsLWxpc3QuY29tcG9uZW50LnNjc3MnLCAnLi9uZy1wcmVyZW5kZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJ3N0eWxlJzogJ3Bvc2l0aW9uOiByZWxhdGl2ZTsnXHJcbiAgICB9LFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyQ29udGFpbmVyIGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCB7XHJcbiAgICBAVmlld0NoaWxkKCdsaXN0JywgeyByZWFkOiBOZ1ByZXJlbmRlckxpc3QgfSlcclxuICAgIHByaXZhdGUgX2xpc3Q6IE5nUHJlcmVuZGVyTGlzdCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBlbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uIHwgYW55ID0gREVGQVVMVF9ESVJFQ1RJT047XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGlzVmVydGljYWw6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzY3JvbGxiYXJFbmFibGVkOiBib29sZWFuID0gREVGQVVMVF9TQ1JPTExCQVJfRU5BQkxFRDtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc3RhcnRPZmZzZXQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGVuZE9mZnNldDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgYm91bmRzITogSVNpemU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGR5bmFtaWM6IGJvb2xlYW4gPSBERUZBVUxUX0RZTkFNSUNfU0laRTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgaXRlbVNpemU6IG51bWJlciA9IERFRkFVTFRfSVRFTV9TSVpFO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICB0cmFja0J5OiBzdHJpbmcgPSBUUkFDS19CWV9QUk9QRVJUWV9OQU1FO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBkaXZpZGVzOiBudW1iZXIgPSBERUZBVUxUX0RJVklERVM7XHJcblxyXG4gICAgaXRlbVJlbmRlcmVyITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAkcmVuZGVyITogT2JzZXJ2YWJsZTxQcmVyZW5kZXJDYWNoZT47XHJcblxyXG4gICAgZ2V0IGFjdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGlzdD8uYWN0aXZlID8/IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIGNvbnN0ICRsaXN0ID0gb2YodGhpcy5fbGlzdCk7XHJcblxyXG4gICAgICAgIHRoaXMuJHJlbmRlciA9ICRsaXN0LnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICBmaWx0ZXIodiA9PiAhIXYpLFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAodiA9PiB2IS4kcmVuZGVyKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyKCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9saXN0O1xyXG4gICAgICAgIGlmICghIWxpc3QpIHtcclxuICAgICAgICAgICAgbGlzdC5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbihpdGVtczogSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuX2xpc3Q7XHJcbiAgICAgICAgaWYgKCEhbGlzdCkge1xyXG4gICAgICAgICAgICBsaXN0Lm9uKGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb2ZmKCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9saXN0O1xyXG4gICAgICAgIGlmICghIWxpc3QpIHtcclxuICAgICAgICAgICAgbGlzdC5vZmYoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8bmctcHJlcmVuZGVyLWxpc3QgI2xpc3QgW2JvdW5kc109XCJib3VuZHMhXCIgW2RpcmVjdGlvbl09XCJkaXJlY3Rpb25cIiBbZHluYW1pY109XCJkeW5hbWljXCIgW2lzVmVydGljYWxdPVwiaXNWZXJ0aWNhbFwiXHJcbiAgW2l0ZW1TaXplXT1cIml0ZW1TaXplXCIgW3RyYWNrQnldPVwidHJhY2tCeVwiIFtpdGVtUmVuZGVyZXJdPVwiaXRlbVJlbmRlcmVyXCIgW3N0YXJ0T2Zmc2V0XT1cInN0YXJ0T2Zmc2V0XCJcclxuICBbZGl2aWRlc109XCJkaXZpZGVzXCIgW2VuZE9mZnNldF09XCJlbmRPZmZzZXRcIiBbc2Nyb2xsYmFyRW5hYmxlZF09XCJzY3JvbGxiYXJFbmFibGVkXCJcclxuICBbZW5hYmxlZF09XCJlbmFibGVkXCI+PC9uZy1wcmVyZW5kZXItbGlzdD4iXX0=