ng-virtual-list 14.11.4 → 14.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +78 -40
  2. package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +315 -0
  3. package/{esm2020 → esm2022}/lib/components/ng-list-item/base/index.mjs +2 -2
  4. package/esm2022/lib/components/ng-list-item/const/index.mjs +41 -0
  5. package/{esm2020 → esm2022}/lib/components/ng-list-item/interfaces/index.mjs +1 -1
  6. package/{esm2020 → esm2022}/lib/components/ng-list-item/interfaces/template-context.mjs +1 -1
  7. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +200 -0
  8. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +20 -0
  9. package/esm2022/lib/components/ng-list-item/utils/create-display-id.mjs +10 -0
  10. package/esm2022/lib/components/ng-list-item/utils/get-element-by-index.mjs +20 -0
  11. package/esm2022/lib/components/ng-list-item/utils/index.mjs +5 -0
  12. package/esm2022/lib/components/ng-list-item/utils/matrix-3d.mjs +18 -0
  13. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +279 -0
  14. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.mjs +21 -21
  15. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +94 -0
  16. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +20 -0
  17. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +142 -0
  18. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +20 -0
  19. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/core/index.mjs +2 -2
  20. package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +198 -0
  21. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/events/index.mjs +5 -5
  22. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/interfaces/index.mjs +1 -1
  23. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/interfaces/refresh-params.mjs +2 -2
  24. package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +93 -0
  25. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/ng-prerender-container.module.mjs +20 -20
  26. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/types/cache.mjs +2 -2
  27. package/{esm2020 → esm2022}/lib/components/ng-prerender-container/types/index.mjs +1 -1
  28. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/const/index.mjs +8 -8
  29. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/enums/index.mjs +2 -2
  30. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/enums/scrollbar-states.mjs +6 -6
  31. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/interfaces/index.mjs +1 -1
  32. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.mjs +2 -2
  33. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.mjs +1 -1
  34. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +25 -0
  35. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +324 -0
  36. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/ng-scroll-bar.module.mjs +19 -19
  37. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/ng-scroll-bar.service.mjs +36 -38
  38. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/types/index.mjs +1 -1
  39. package/{esm2020 → esm2022}/lib/components/ng-scroll-bar/types/scrollbar-state.mjs +1 -1
  40. package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +262 -0
  41. package/esm2022/lib/components/ng-scroll-view/const/index.mjs +9 -0
  42. package/{esm2020 → esm2022}/lib/components/ng-scroll-view/enums/index.mjs +2 -2
  43. package/{esm2020 → esm2022}/lib/components/ng-scroll-view/enums/scroller-direction.mjs +11 -11
  44. package/{esm2020 → esm2022}/lib/components/ng-scroll-view/enums/scroller-directions.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/components/ng-scroll-view/index.mjs +3 -3
  46. package/{esm2020 → esm2022}/lib/components/ng-scroll-view/interfaces/index.mjs +1 -1
  47. package/{esm2020 → esm2022}/lib/components/ng-scroll-view/interfaces/scroll-to-params.mjs +2 -2
  48. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +859 -0
  49. package/esm2022/lib/components/ng-scroll-view/utils/calculate-direction.mjs +17 -0
  50. package/esm2022/lib/components/ng-scroll-view/utils/calculate-velocity.mjs +12 -0
  51. package/esm2022/lib/components/ng-scroll-view/utils/get-dir.mjs +10 -0
  52. package/esm2022/lib/components/ng-scroll-view/utils/index.mjs +6 -0
  53. package/esm2022/lib/components/ng-scroll-view/utils/matrix-3d.mjs +15 -0
  54. package/esm2022/lib/components/ng-scroll-view/utils/scroll-box.mjs +45 -0
  55. package/{esm2020 → esm2022}/lib/components/ng-scroller/enums/index.mjs +2 -2
  56. package/{esm2020 → esm2022}/lib/components/ng-scroller/enums/scroller-direction.mjs +5 -5
  57. package/{esm2020 → esm2022}/lib/components/ng-scroller/enums/scroller-directions.mjs +2 -2
  58. package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +525 -0
  59. package/{esm2020 → esm2022}/lib/components/ng-scroller/ng-scroller.module.mjs +22 -22
  60. package/{esm2020 → esm2022}/lib/components/ng-scroller/utils/index.mjs +2 -2
  61. package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +52 -0
  62. package/esm2022/lib/const/index.mjs +165 -0
  63. package/esm2022/lib/core/cache-map.mjs +101 -0
  64. package/esm2022/lib/core/const/index.mjs +3 -0
  65. package/esm2022/lib/core/enums/index.mjs +3 -0
  66. package/esm2022/lib/core/enums/item-display-methods.mjs +14 -0
  67. package/esm2022/lib/core/events/index.mjs +3 -0
  68. package/esm2022/lib/core/events/track-box-events.mjs +12 -0
  69. package/esm2022/lib/core/interfaces/get-item-position-options.mjs +2 -0
  70. package/esm2022/lib/core/interfaces/get-metrics-returns.mjs +2 -0
  71. package/esm2022/lib/core/interfaces/index.mjs +2 -0
  72. package/esm2022/lib/core/interfaces/item.mjs +2 -0
  73. package/esm2022/lib/core/interfaces/metrics.mjs +2 -0
  74. package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +2 -0
  75. package/esm2022/lib/core/interfaces/update-collection-options.mjs +2 -0
  76. package/esm2022/lib/core/interfaces/update-collection-returns.mjs +2 -0
  77. package/esm2022/lib/core/track-box.mjs +1353 -0
  78. package/esm2022/lib/core/tracker.mjs +207 -0
  79. package/esm2022/lib/core/types/cache-map-events.mjs +2 -0
  80. package/esm2022/lib/core/types/cache-map-listeners.mjs +2 -0
  81. package/esm2022/lib/core/types/cache.mjs +2 -0
  82. package/esm2022/lib/core/types/index.mjs +2 -0
  83. package/esm2022/lib/core/types/on-change-event-listener.mjs +2 -0
  84. package/esm2022/lib/core/types/on-tick-event-listener.mjs +2 -0
  85. package/esm2022/lib/core/utils/get-service-id-prop.mjs +10 -0
  86. package/esm2022/lib/core/utils/index.mjs +3 -0
  87. package/esm2022/lib/directives/index.mjs +4 -0
  88. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +68 -0
  89. package/{esm2020 → esm2022}/lib/directives/locale-sensitive/locale-sensitive.module.mjs +19 -19
  90. package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +67 -0
  91. package/esm2022/lib/directives/virtual-click/virtual-click.module.mjs +19 -0
  92. package/esm2022/lib/enums/alignments.mjs +12 -0
  93. package/esm2022/lib/enums/collapsing-modes.mjs +22 -0
  94. package/{esm2020 → esm2022}/lib/enums/collection-modes.mjs +17 -17
  95. package/{esm2020 → esm2022}/lib/enums/directions.mjs +17 -17
  96. package/{esm2020 → esm2022}/lib/enums/focus-alignments.mjs +13 -13
  97. package/esm2022/lib/enums/index.mjs +12 -0
  98. package/esm2022/lib/enums/selecting-modes-types.mjs +22 -0
  99. package/esm2022/lib/enums/selecting-modes.mjs +22 -0
  100. package/esm2022/lib/enums/snap-to-item-aligns.mjs +22 -0
  101. package/{esm2020 → esm2022}/lib/enums/snapping-methods.mjs +17 -17
  102. package/esm2022/lib/enums/spreading-modes.mjs +18 -0
  103. package/{esm2020 → esm2022}/lib/enums/text-directions.mjs +13 -13
  104. package/{esm2020 → esm2022}/lib/interfaces/animation-params.mjs +2 -2
  105. package/esm2022/lib/interfaces/base-virtual-list-item-component.mjs +2 -0
  106. package/esm2022/lib/interfaces/index.mjs +2 -0
  107. package/esm2022/lib/interfaces/item-transformation.mjs +2 -0
  108. package/esm2022/lib/interfaces/point.mjs +2 -0
  109. package/{esm2020 → esm2022}/lib/interfaces/rect.mjs +1 -1
  110. package/{esm2020 → esm2022}/lib/interfaces/render-stabilizer-options.mjs +1 -1
  111. package/{esm2020 → esm2022}/lib/interfaces/scroll-event.mjs +1 -1
  112. package/{esm2020 → esm2022}/lib/interfaces/scroll-options.mjs +2 -2
  113. package/esm2022/lib/interfaces/scroll-params.mjs +2 -0
  114. package/{esm2020 → esm2022}/lib/interfaces/scroll-to-params.mjs +1 -1
  115. package/{esm2020 → esm2022}/lib/interfaces/scrolling-settings.mjs +1 -1
  116. package/{esm2020 → esm2022}/lib/interfaces/size.mjs +1 -1
  117. package/{esm2020 → esm2022}/lib/models/collection.model.mjs +2 -2
  118. package/{esm2020 → esm2022}/lib/models/component.model.mjs +1 -1
  119. package/{esm2020 → esm2022}/lib/models/display-object-config.model.mjs +1 -1
  120. package/{esm2020 → esm2022}/lib/models/display-object-measures.model.mjs +1 -1
  121. package/{esm2020 → esm2022}/lib/models/index.mjs +1 -1
  122. package/{esm2020 → esm2022}/lib/models/item-config-map.model.mjs +2 -2
  123. package/{esm2020 → esm2022}/lib/models/item.model.mjs +2 -2
  124. package/{esm2020 → esm2022}/lib/models/render-collection.model.mjs +2 -2
  125. package/esm2022/lib/models/render-item-config.model.mjs +2 -0
  126. package/esm2022/lib/models/render-item-measures.model.mjs +3 -0
  127. package/{esm2020 → esm2022}/lib/models/render-item.model.mjs +2 -2
  128. package/esm2022/lib/ng-virtual-list-public.service.mjs +120 -0
  129. package/esm2022/lib/ng-virtual-list.component.mjs +3246 -0
  130. package/{esm2020 → esm2022}/lib/ng-virtual-list.module.mjs +23 -23
  131. package/esm2022/lib/ng-virtual-list.service.mjs +431 -0
  132. package/esm2022/lib/transformations/deck-of-cards-3d.mjs +57 -0
  133. package/esm2022/lib/transformations/deck-of-cards.mjs +54 -0
  134. package/esm2022/lib/transformations/event-horizon.mjs +47 -0
  135. package/esm2022/lib/transformations/index.mjs +13 -0
  136. package/esm2022/lib/transformations/linear.mjs +47 -0
  137. package/esm2022/lib/transformations/swipe-3d.mjs +51 -0
  138. package/esm2022/lib/types/alignment.mjs +2 -0
  139. package/esm2022/lib/types/arithmetic-expression.mjs +2 -0
  140. package/esm2022/lib/types/collapsing-mode.mjs +2 -0
  141. package/esm2022/lib/types/collection-mode.mjs +2 -0
  142. package/esm2022/lib/types/color.mjs +2 -0
  143. package/esm2022/lib/types/direction.mjs +2 -0
  144. package/esm2022/lib/types/float-or-persentage-value.mjs +2 -0
  145. package/{esm2020 → esm2022}/lib/types/focus-alignment.mjs +1 -1
  146. package/{esm2020 → esm2022}/lib/types/focus-item-params.mjs +2 -2
  147. package/{esm2020 → esm2022}/lib/types/gradient-color-position.mjs +2 -2
  148. package/{esm2020 → esm2022}/lib/types/gradient-color-positions.mjs +1 -1
  149. package/{esm2020 → esm2022}/lib/types/id.mjs +1 -1
  150. package/esm2022/lib/types/index.mjs +2 -0
  151. package/esm2022/lib/types/item-transform.mjs +2 -0
  152. package/{esm2020 → esm2022}/lib/types/scroll-direction.mjs +2 -2
  153. package/esm2022/lib/types/selecting-mode.mjs +2 -0
  154. package/esm2022/lib/types/snap-to-item-align.mjs +2 -0
  155. package/esm2022/lib/types/snapping-distance.mjs +2 -0
  156. package/esm2022/lib/types/snapping-method.mjs +2 -0
  157. package/esm2022/lib/types/spreading-mode.mjs +2 -0
  158. package/esm2022/lib/types/text-direction.mjs +2 -0
  159. package/esm2022/lib/utils/animator/animator.mjs +78 -0
  160. package/esm2022/lib/utils/animator/const/index.mjs +2 -0
  161. package/esm2022/lib/utils/animator/ease.mjs +7 -0
  162. package/esm2022/lib/utils/animator/index.mjs +5 -0
  163. package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +2 -0
  164. package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +2 -0
  165. package/esm2022/lib/utils/animator/interfaces/index.mjs +2 -0
  166. package/esm2022/lib/utils/animator/types/easing.mjs +2 -0
  167. package/{esm2020 → esm2022}/lib/utils/animator/types/index.mjs +1 -1
  168. package/esm2022/lib/utils/buffer-interpolation.mjs +29 -0
  169. package/esm2022/lib/utils/cmap.mjs +34 -0
  170. package/esm2022/lib/utils/debounce.mjs +61 -0
  171. package/esm2022/lib/utils/disposable-component.mjs +27 -0
  172. package/esm2022/lib/utils/event-emitter/event-emitter.mjs +105 -0
  173. package/{esm2020 → esm2022}/lib/utils/event-emitter/index.mjs +2 -2
  174. package/{esm2020 → esm2022}/lib/utils/event-emitter/interfaces/event-emitter.mjs +1 -1
  175. package/{esm2020 → esm2022}/lib/utils/event-emitter/interfaces/index.mjs +1 -1
  176. package/esm2022/lib/utils/get-scroll-state-version.mjs +12 -0
  177. package/{esm2020 → esm2022}/lib/utils/get-selector-by-item-id.mjs +4 -4
  178. package/{esm2020 → esm2022}/lib/utils/index.mjs +4 -4
  179. package/esm2022/lib/utils/is-collapse-mode.mjs +18 -0
  180. package/esm2022/lib/utils/is-collection-mode.mjs +15 -0
  181. package/esm2022/lib/utils/is-direction.mjs +15 -0
  182. package/esm2022/lib/utils/is-persentage-value.mjs +14 -0
  183. package/esm2022/lib/utils/is-select-mode.mjs +18 -0
  184. package/esm2022/lib/utils/is-spreading-mode.mjs +15 -0
  185. package/esm2022/lib/utils/list-validators.mjs +27 -0
  186. package/esm2022/lib/utils/normalize-collection.mjs +42 -0
  187. package/esm2022/lib/utils/object.mjs +28 -0
  188. package/esm2022/lib/utils/parse-arithmetic-expression.mjs +53 -0
  189. package/esm2022/lib/utils/parse-float-or-persentage-value.mjs +17 -0
  190. package/esm2022/lib/utils/screen-reader-formatter.mjs +43 -0
  191. package/esm2022/lib/utils/scroll-event.mjs +48 -0
  192. package/esm2022/lib/utils/scrolling-direction.mjs +29 -0
  193. package/esm2022/lib/utils/snapping-method.mjs +9 -0
  194. package/esm2022/lib/utils/toggle-class-name.mjs +15 -0
  195. package/{esm2020 → esm2022}/lib/utils/validation.mjs +55 -55
  196. package/{esm2020 → esm2022}/ng-virtual-list.mjs +4 -4
  197. package/esm2022/public-api.mjs +20 -0
  198. package/fesm2022/ng-virtual-list.mjs +10669 -0
  199. package/fesm2022/ng-virtual-list.mjs.map +1 -0
  200. package/index.d.ts +5 -5
  201. package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +83 -68
  202. package/lib/components/ng-list-item/base/index.d.ts +2 -2
  203. package/lib/components/ng-list-item/const/index.d.ts +3 -3
  204. package/lib/components/ng-list-item/interfaces/index.d.ts +2 -2
  205. package/lib/components/ng-list-item/interfaces/template-context.d.ts +42 -42
  206. package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +30 -30
  207. package/lib/components/ng-list-item/ng-virtual-list-item.module.d.ts +9 -9
  208. package/lib/components/ng-list-item/utils/create-display-id.d.ts +7 -1
  209. package/lib/components/ng-list-item/utils/get-element-by-index.d.ts +15 -1
  210. package/lib/components/ng-list-item/utils/index.d.ts +4 -3
  211. package/lib/components/ng-list-item/utils/matrix-3d.d.ts +7 -0
  212. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.d.ts +104 -100
  213. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.d.ts +10 -10
  214. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.d.ts +17 -17
  215. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.d.ts +9 -9
  216. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +62 -62
  217. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.d.ts +9 -9
  218. package/lib/components/ng-prerender-container/core/index.d.ts +2 -2
  219. package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +35 -35
  220. package/lib/components/ng-prerender-container/events/index.d.ts +6 -6
  221. package/lib/components/ng-prerender-container/interfaces/index.d.ts +2 -2
  222. package/lib/components/ng-prerender-container/interfaces/refresh-params.d.ts +17 -16
  223. package/lib/components/ng-prerender-container/ng-prerender-container.component.d.ts +40 -39
  224. package/lib/components/ng-prerender-container/ng-prerender-container.module.d.ts +9 -9
  225. package/lib/components/ng-prerender-container/types/cache.d.ts +13 -13
  226. package/lib/components/ng-prerender-container/types/index.d.ts +2 -2
  227. package/lib/components/ng-scroll-bar/const/index.d.ts +3 -3
  228. package/lib/components/ng-scroll-bar/enums/index.d.ts +2 -2
  229. package/lib/components/ng-scroll-bar/enums/scrollbar-states.d.ts +5 -5
  230. package/lib/components/ng-scroll-bar/interfaces/index.d.ts +3 -3
  231. package/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.d.ts +26 -26
  232. package/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.d.ts +13 -13
  233. package/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.d.ts +16 -16
  234. package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +102 -97
  235. package/lib/components/ng-scroll-bar/ng-scroll-bar.module.d.ts +8 -8
  236. package/lib/components/ng-scroll-bar/ng-scroll-bar.service.d.ts +22 -22
  237. package/lib/components/ng-scroll-bar/types/index.d.ts +2 -2
  238. package/lib/components/ng-scroll-bar/types/scrollbar-state.d.ts +2 -2
  239. package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +89 -69
  240. package/lib/components/ng-scroll-view/const/index.d.ts +7 -5
  241. package/lib/components/ng-scroll-view/enums/index.d.ts +4 -4
  242. package/lib/components/ng-scroll-view/enums/scroller-direction.d.ts +10 -10
  243. package/lib/components/ng-scroll-view/enums/scroller-directions.d.ts +8 -8
  244. package/lib/components/ng-scroll-view/index.d.ts +5 -5
  245. package/lib/components/ng-scroll-view/interfaces/index.d.ts +2 -2
  246. package/lib/components/ng-scroll-view/interfaces/scroll-to-params.d.ts +22 -19
  247. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +124 -66
  248. package/lib/components/ng-scroll-view/utils/calculate-direction.d.ts +7 -4
  249. package/lib/components/ng-scroll-view/utils/calculate-velocity.d.ts +7 -0
  250. package/lib/components/ng-scroll-view/utils/get-dir.d.ts +7 -0
  251. package/lib/components/ng-scroll-view/utils/index.d.ts +5 -3
  252. package/lib/components/ng-scroll-view/utils/matrix-3d.d.ts +7 -0
  253. package/lib/components/ng-scroll-view/utils/scroll-box.d.ts +39 -39
  254. package/lib/components/ng-scroller/enums/index.d.ts +4 -4
  255. package/lib/components/ng-scroller/enums/scroller-direction.d.ts +4 -4
  256. package/lib/components/ng-scroller/enums/scroller-directions.d.ts +3 -2
  257. package/lib/components/ng-scroller/ng-scroller.component.d.ts +164 -150
  258. package/lib/components/ng-scroller/ng-scroller.module.d.ts +11 -11
  259. package/lib/components/ng-scroller/utils/index.d.ts +2 -2
  260. package/lib/components/ng-scroller/utils/scroll-box.d.ts +40 -40
  261. package/lib/const/index.d.ts +153 -112
  262. package/lib/core/cache-map.d.ts +46 -56
  263. package/lib/core/const/index.d.ts +1 -0
  264. package/lib/core/enums/index.d.ts +2 -0
  265. package/lib/core/enums/item-display-methods.d.ts +12 -0
  266. package/lib/core/events/index.d.ts +2 -0
  267. package/lib/core/events/track-box-events.d.ts +10 -0
  268. package/lib/core/interfaces/get-item-position-options.d.ts +10 -0
  269. package/lib/core/interfaces/get-metrics-returns.d.ts +11 -0
  270. package/lib/core/interfaces/index.d.ts +8 -0
  271. package/lib/core/interfaces/item.d.ts +9 -0
  272. package/lib/core/interfaces/metrics.d.ts +51 -0
  273. package/lib/core/interfaces/recalculate-metrics-options.d.ts +32 -0
  274. package/lib/core/interfaces/update-collection-options.d.ts +10 -0
  275. package/lib/core/interfaces/update-collection-returns.d.ts +14 -0
  276. package/lib/core/track-box.d.ts +153 -223
  277. package/lib/core/tracker.d.ts +55 -55
  278. package/lib/core/types/cache-map-events.d.ts +8 -0
  279. package/lib/core/types/cache-map-listeners.d.ts +9 -0
  280. package/lib/core/types/cache.d.ts +12 -0
  281. package/lib/core/types/index.d.ts +6 -0
  282. package/lib/core/types/on-change-event-listener.d.ts +7 -0
  283. package/lib/core/types/on-tick-event-listener.d.ts +7 -0
  284. package/lib/core/utils/get-service-id-prop.d.ts +7 -0
  285. package/lib/core/utils/index.d.ts +2 -0
  286. package/lib/directives/index.d.ts +3 -3
  287. package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +29 -29
  288. package/lib/directives/locale-sensitive/locale-sensitive.module.d.ts +8 -8
  289. package/lib/directives/{item-click/item-click.directive.d.ts → virtual-click/virtual-click.directive.d.ts} +22 -22
  290. package/lib/directives/virtual-click/virtual-click.module.d.ts +8 -0
  291. package/lib/enums/alignments.d.ts +10 -0
  292. package/lib/enums/collapsing-modes.d.ts +20 -0
  293. package/lib/enums/collection-modes.d.ts +16 -16
  294. package/lib/enums/directions.d.ts +16 -16
  295. package/lib/enums/focus-alignments.d.ts +12 -12
  296. package/lib/enums/index.d.ts +11 -13
  297. package/lib/enums/{method-for-selecting-types.d.ts → selecting-modes-types.d.ts} +20 -20
  298. package/lib/enums/{methods-for-selecting.d.ts → selecting-modes.d.ts} +20 -20
  299. package/lib/enums/snap-to-item-aligns.d.ts +20 -0
  300. package/lib/enums/snapping-methods.d.ts +16 -16
  301. package/lib/enums/spreading-modes.d.ts +16 -0
  302. package/lib/enums/text-directions.d.ts +12 -12
  303. package/lib/interfaces/animation-params.d.ts +14 -13
  304. package/lib/interfaces/base-virtual-list-item-component.d.ts +23 -23
  305. package/lib/interfaces/index.d.ts +11 -10
  306. package/lib/interfaces/item-transformation.d.ts +22 -0
  307. package/lib/interfaces/point.d.ts +16 -0
  308. package/lib/interfaces/rect.d.ts +17 -17
  309. package/lib/interfaces/render-stabilizer-options.d.ts +12 -12
  310. package/lib/interfaces/scroll-event.d.ts +58 -58
  311. package/lib/interfaces/scroll-options.d.ts +28 -24
  312. package/lib/interfaces/scroll-params.d.ts +17 -16
  313. package/lib/interfaces/scroll-to-params.d.ts +7 -7
  314. package/lib/interfaces/scrolling-settings.d.ts +38 -38
  315. package/lib/interfaces/size.d.ts +16 -16
  316. package/lib/models/collection.model.d.ts +9 -9
  317. package/lib/models/component.model.d.ts +3 -3
  318. package/lib/models/display-object-config.model.d.ts +21 -21
  319. package/lib/models/display-object-measures.model.d.ts +45 -45
  320. package/lib/models/index.d.ts +9 -9
  321. package/lib/models/item-config-map.model.d.ts +35 -30
  322. package/lib/models/item.model.d.ts +17 -10
  323. package/lib/models/render-collection.model.d.ts +9 -9
  324. package/lib/models/render-item-config.model.d.ts +119 -69
  325. package/lib/models/render-item-measures.model.d.ts +116 -45
  326. package/lib/models/render-item.model.d.ts +40 -40
  327. package/lib/ng-virtual-list-public.service.d.ts +92 -93
  328. package/lib/ng-virtual-list.component.d.ts +770 -572
  329. package/lib/ng-virtual-list.module.d.ts +12 -12
  330. package/lib/ng-virtual-list.service.d.ts +153 -135
  331. package/lib/transformations/deck-of-cards-3d.d.ts +54 -0
  332. package/lib/transformations/deck-of-cards.d.ts +50 -0
  333. package/lib/transformations/event-horizon.d.ts +26 -0
  334. package/lib/transformations/index.d.ts +7 -0
  335. package/lib/transformations/linear.d.ts +26 -0
  336. package/lib/transformations/swipe-3d.d.ts +38 -0
  337. package/lib/types/alignment.d.ts +8 -0
  338. package/lib/types/arithmetic-expression.d.ts +10 -0
  339. package/lib/types/collapsing-mode.d.ts +8 -0
  340. package/lib/{enums → types}/collection-mode.d.ts +8 -8
  341. package/lib/types/color.d.ts +4 -0
  342. package/lib/{enums → types}/direction.d.ts +8 -8
  343. package/lib/types/float-or-persentage-value.d.ts +7 -0
  344. package/lib/types/focus-alignment.d.ts +8 -8
  345. package/lib/types/focus-item-params.d.ts +13 -7
  346. package/lib/types/gradient-color-position.d.ts +7 -7
  347. package/lib/types/gradient-color-positions.d.ts +8 -8
  348. package/lib/types/id.d.ts +7 -7
  349. package/lib/types/index.d.ts +20 -6
  350. package/lib/types/item-transform.d.ts +9 -0
  351. package/lib/types/scroll-direction.d.ts +8 -6
  352. package/lib/types/selecting-mode.d.ts +8 -0
  353. package/lib/types/snap-to-item-align.d.ts +8 -0
  354. package/lib/types/snapping-distance.d.ts +8 -0
  355. package/lib/{enums → types}/snapping-method.d.ts +10 -10
  356. package/lib/types/spreading-mode.d.ts +8 -0
  357. package/lib/{enums → types}/text-direction.d.ts +10 -10
  358. package/lib/utils/animator/animator.d.ts +16 -23
  359. package/lib/utils/animator/const/index.d.ts +1 -0
  360. package/lib/utils/animator/ease.d.ts +2 -14
  361. package/lib/utils/animator/index.d.ts +6 -5
  362. package/lib/utils/animator/interfaces/animator-params.d.ts +18 -0
  363. package/lib/utils/animator/interfaces/animator-update-data.d.ts +13 -0
  364. package/lib/utils/animator/interfaces/index.d.ts +3 -0
  365. package/lib/utils/animator/types/easing.d.ts +7 -7
  366. package/lib/utils/animator/types/index.d.ts +2 -2
  367. package/lib/utils/buffer-interpolation.d.ts +5 -5
  368. package/lib/utils/cmap.d.ts +16 -16
  369. package/lib/utils/debounce.d.ts +25 -25
  370. package/lib/utils/disposable-component.d.ts +15 -15
  371. package/lib/utils/event-emitter/event-emitter.d.ts +42 -42
  372. package/lib/utils/event-emitter/index.d.ts +4 -4
  373. package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +37 -37
  374. package/lib/utils/event-emitter/interfaces/index.d.ts +2 -2
  375. package/lib/utils/get-scroll-state-version.d.ts +1 -0
  376. package/lib/utils/get-selector-by-item-id.d.ts +2 -2
  377. package/lib/utils/index.d.ts +6 -6
  378. package/lib/utils/is-collapse-mode.d.ts +8 -0
  379. package/lib/utils/is-collection-mode.d.ts +8 -8
  380. package/lib/utils/is-direction.d.ts +8 -8
  381. package/lib/utils/is-persentage-value.d.ts +7 -0
  382. package/lib/utils/is-select-mode.d.ts +8 -0
  383. package/lib/utils/is-spreading-mode.d.ts +8 -0
  384. package/lib/utils/list-validators.d.ts +2 -2
  385. package/lib/utils/normalize-collection.d.ts +8 -0
  386. package/lib/utils/object.d.ts +4 -4
  387. package/lib/utils/parse-arithmetic-expression.d.ts +8 -0
  388. package/lib/utils/parse-float-or-persentage-value.d.ts +7 -0
  389. package/lib/utils/screen-reader-formatter.d.ts +4 -7
  390. package/lib/utils/scroll-event.d.ts +48 -48
  391. package/lib/utils/scrolling-direction.d.ts +17 -0
  392. package/lib/utils/snapping-method.d.ts +3 -3
  393. package/lib/utils/toggle-class-name.d.ts +7 -7
  394. package/lib/utils/validation.d.ts +35 -35
  395. package/package.json +5 -11
  396. package/public-api.d.ts +16 -13
  397. package/esm2020/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +0 -209
  398. package/esm2020/lib/components/ng-list-item/const/index.mjs +0 -30
  399. package/esm2020/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +0 -207
  400. package/esm2020/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +0 -20
  401. package/esm2020/lib/components/ng-list-item/utils/create-display-id.mjs +0 -4
  402. package/esm2020/lib/components/ng-list-item/utils/get-element-by-index.mjs +0 -6
  403. package/esm2020/lib/components/ng-list-item/utils/index.mjs +0 -4
  404. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +0 -268
  405. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +0 -78
  406. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +0 -20
  407. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +0 -139
  408. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +0 -20
  409. package/esm2020/lib/components/ng-prerender-container/core/prerender-track-box.mjs +0 -171
  410. package/esm2020/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +0 -89
  411. package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +0 -27
  412. package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +0 -282
  413. package/esm2020/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +0 -173
  414. package/esm2020/lib/components/ng-scroll-view/const/index.mjs +0 -7
  415. package/esm2020/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +0 -376
  416. package/esm2020/lib/components/ng-scroll-view/utils/calculate-direction.mjs +0 -11
  417. package/esm2020/lib/components/ng-scroll-view/utils/index.mjs +0 -4
  418. package/esm2020/lib/components/ng-scroll-view/utils/scroll-box.mjs +0 -45
  419. package/esm2020/lib/components/ng-scroller/const/index.mjs +0 -2
  420. package/esm2020/lib/components/ng-scroller/ng-scroller.component.mjs +0 -448
  421. package/esm2020/lib/components/ng-scroller/utils/scroll-box.mjs +0 -52
  422. package/esm2020/lib/const/index.mjs +0 -125
  423. package/esm2020/lib/core/cache-map.mjs +0 -153
  424. package/esm2020/lib/core/track-box.mjs +0 -937
  425. package/esm2020/lib/core/tracker.mjs +0 -200
  426. package/esm2020/lib/directives/index.mjs +0 -4
  427. package/esm2020/lib/directives/item-click/item-click.directive.mjs +0 -65
  428. package/esm2020/lib/directives/item-click/item-click.module.mjs +0 -19
  429. package/esm2020/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +0 -66
  430. package/esm2020/lib/enums/collection-mode.mjs +0 -2
  431. package/esm2020/lib/enums/direction.mjs +0 -2
  432. package/esm2020/lib/enums/index.mjs +0 -8
  433. package/esm2020/lib/enums/method-for-selecting-types.mjs +0 -22
  434. package/esm2020/lib/enums/method-for-selecting.mjs +0 -2
  435. package/esm2020/lib/enums/methods-for-selecting.mjs +0 -22
  436. package/esm2020/lib/enums/snapping-method.mjs +0 -2
  437. package/esm2020/lib/enums/text-direction.mjs +0 -2
  438. package/esm2020/lib/interfaces/base-virtual-list-item-component.mjs +0 -9
  439. package/esm2020/lib/interfaces/index.mjs +0 -2
  440. package/esm2020/lib/interfaces/scroll-params.mjs +0 -2
  441. package/esm2020/lib/models/render-item-config.model.mjs +0 -2
  442. package/esm2020/lib/models/render-item-measures.model.mjs +0 -3
  443. package/esm2020/lib/ng-virtual-list-public.service.mjs +0 -123
  444. package/esm2020/lib/ng-virtual-list.component.mjs +0 -2535
  445. package/esm2020/lib/ng-virtual-list.service.mjs +0 -375
  446. package/esm2020/lib/types/index.mjs +0 -2
  447. package/esm2020/lib/utils/animator/animator.mjs +0 -60
  448. package/esm2020/lib/utils/animator/ease.mjs +0 -19
  449. package/esm2020/lib/utils/animator/index.mjs +0 -4
  450. package/esm2020/lib/utils/animator/types/easing.mjs +0 -2
  451. package/esm2020/lib/utils/buffer-interpolation.mjs +0 -29
  452. package/esm2020/lib/utils/cmap.mjs +0 -34
  453. package/esm2020/lib/utils/debounce.mjs +0 -61
  454. package/esm2020/lib/utils/disposable-component.mjs +0 -29
  455. package/esm2020/lib/utils/event-emitter/event-emitter.mjs +0 -106
  456. package/esm2020/lib/utils/is-collection-mode.mjs +0 -15
  457. package/esm2020/lib/utils/is-direction.mjs +0 -15
  458. package/esm2020/lib/utils/is-method-for-selecting.mjs +0 -18
  459. package/esm2020/lib/utils/list-validators.mjs +0 -27
  460. package/esm2020/lib/utils/object.mjs +0 -28
  461. package/esm2020/lib/utils/screen-reader-formatter.mjs +0 -43
  462. package/esm2020/lib/utils/scroll-event.mjs +0 -46
  463. package/esm2020/lib/utils/snapping-method.mjs +0 -9
  464. package/esm2020/lib/utils/toggle-class-name.mjs +0 -15
  465. package/esm2020/public-api.mjs +0 -17
  466. package/fesm2015/ng-virtual-list.mjs +0 -8048
  467. package/fesm2015/ng-virtual-list.mjs.map +0 -1
  468. package/fesm2020/ng-virtual-list.mjs +0 -8011
  469. package/fesm2020/ng-virtual-list.mjs.map +0 -1
  470. package/lib/components/ng-scroller/const/index.d.ts +0 -1
  471. package/lib/directives/item-click/item-click.module.d.ts +0 -8
  472. package/lib/enums/method-for-selecting.d.ts +0 -8
  473. package/lib/utils/is-method-for-selecting.d.ts +0 -8
@@ -0,0 +1,142 @@
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
+ scrollBar;
23
+ _$langTextDir = new BehaviorSubject(TextDirections.LTR);
24
+ $langTextDir = this._$langTextDir.asObservable();
25
+ _$scrollbarEnabled = new BehaviorSubject(DEFAULT_SCROLLBAR_ENABLED);
26
+ $scrollbarEnabled = this._$scrollbarEnabled.asObservable();
27
+ set scrollbarEnabled(v) {
28
+ if (this._$scrollbarEnabled.getValue() !== v) {
29
+ this._$scrollbarEnabled.next(v);
30
+ }
31
+ }
32
+ get scrollbarEnabled() { return this._$scrollbarEnabled.getValue(); }
33
+ _$classes = new BehaviorSubject({});
34
+ $classes = this._$classes.asObservable();
35
+ set classes(v) {
36
+ if (this._$classes.getValue() !== v) {
37
+ this._$classes.next(v);
38
+ }
39
+ }
40
+ get classes() { return this._$classes.getValue(); }
41
+ _$actualClasses = new BehaviorSubject({});
42
+ $actualClasses = this._$actualClasses.asObservable();
43
+ _$containerClasses = new BehaviorSubject({});
44
+ $containerClasses = this._$containerClasses.asObservable();
45
+ _$thumbSize = new BehaviorSubject(0);
46
+ $thumbSize = this._$thumbSize.asObservable();
47
+ _$scrollbarShow = new BehaviorSubject(false);
48
+ $scrollbarShow = this._$scrollbarShow.asObservable();
49
+ set x(v) {
50
+ if (v !== undefined && !Number.isNaN(v)) {
51
+ this._x = this._actualX = v;
52
+ this.updateScrollBar();
53
+ }
54
+ }
55
+ get x() { return this._x; }
56
+ set y(v) {
57
+ if (v !== undefined && !Number.isNaN(v)) {
58
+ this._y = this._actualY = v;
59
+ this.updateScrollBar();
60
+ }
61
+ }
62
+ get y() { return this._y; }
63
+ onResizeViewport() {
64
+ const viewport = this.scrollViewport?.nativeElement;
65
+ if (viewport) {
66
+ this._$viewportBounds.next({ width: viewport.offsetWidth, height: viewport.offsetHeight });
67
+ this.updateScrollBar();
68
+ }
69
+ }
70
+ onResizeContent() {
71
+ const content = this.scrollContent?.nativeElement;
72
+ if (content) {
73
+ this._$contentBounds.next({ width: content.offsetWidth, height: content.offsetHeight });
74
+ this.updateScrollBar();
75
+ }
76
+ }
77
+ _scrollBox = new ScrollBox();
78
+ constructor() {
79
+ super();
80
+ const $classes = this.$classes, $direction = this.$direction;
81
+ combineLatest(([$classes, $direction])).pipe(takeUntil(this._$unsubscribe), tap(([classes, direction]) => {
82
+ this._$actualClasses.next({ ...classes, [direction]: true });
83
+ })).subscribe();
84
+ const $contentBounds = this.$contentBounds, $viewportBounds = this.$viewportBounds, $isVertical = this.$isVertical, $scrollbarEnabled = this.$scrollbarEnabled;
85
+ combineLatest([$direction, $scrollbarEnabled, $isVertical, $contentBounds, $viewportBounds]).pipe(takeUntil(this._$unsubscribe), tap(([direction, scrollbarEnabled]) => {
86
+ this._$containerClasses.next({ [direction]: true, enabled: scrollbarEnabled, scrollable: scrollbarEnabled });
87
+ })).subscribe();
88
+ const $startOffset = this.$startOffset, $endOffset = this.$endOffset, $thumbSize = this.$thumbSize;
89
+ from([$endOffset, $startOffset, $thumbSize, $isVertical]).pipe(takeUntil(this._$unsubscribe), tap(() => {
90
+ this.updateScrollBar();
91
+ })).subscribe();
92
+ const $updateScrollBar = this.$updateScrollBar;
93
+ $updateScrollBar.pipe(takeUntil(this._$unsubscribe), tap(() => {
94
+ this.updateScrollBarHandler(true);
95
+ })).subscribe();
96
+ }
97
+ updateScrollBarHandler(update = false) {
98
+ 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({
99
+ direction,
100
+ viewportWidth: scrollViewport.offsetWidth, viewportHeight: scrollViewport.offsetHeight,
101
+ contentWidth: scrollContent.offsetWidth, contentHeight: scrollContent.offsetHeight,
102
+ startOffset,
103
+ endOffset,
104
+ positionX: this._x,
105
+ positionY: this._y,
106
+ minSize: 1,
107
+ });
108
+ this._$thumbSize.next(thumbSize);
109
+ if (update) {
110
+ this.scrollBar?.scroll({
111
+ [isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: thumbPosition, fireUpdate: false, behavior: BEHAVIOR_INSTANT,
112
+ userAction: false, blending: true,
113
+ });
114
+ }
115
+ this._$scrollbarShow.next(this.scrollable);
116
+ }
117
+ updateScrollBar() {
118
+ this._$updateScrollBar.next();
119
+ }
120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderScrollerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
121
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", 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
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderScrollerComponent, decorators: [{
128
+ type: Component,
129
+ args: [{ selector: 'ng-prerender-scroller', providers: [
130
+ { provide: SCROLL_VIEW_INVERSION, useValue: false },
131
+ { provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: true },
132
+ { provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },
133
+ ], 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"] }]
134
+ }], ctorParameters: () => [], propDecorators: { scrollBar: [{
135
+ type: ViewChild,
136
+ args: ['scrollBar', { read: NgScrollBarComponent }]
137
+ }], scrollbarEnabled: [{
138
+ type: Input
139
+ }], classes: [{
140
+ type: Input
141
+ }] } });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLXNjcm9sbGVyL25nLXByZXJlbmRlci1zY3JvbGxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUNB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVNjcm9sbFZpZXcgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9iYXNlL2Jhc2Utc2Nyb2xsLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsLXZpZXcnO1xyXG5pbXBvcnQgeyBCRUhBVklPUl9JTlNUQU5ULCBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELCBMRUZUX1BST1BfTkFNRSwgVE9QX1BST1BfTkFNRSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Nyb2xsQm94IH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsZXIvdXRpbHMnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcblxyXG4vKipcclxuICogTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci1zY3JvbGxlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgdXNlVmFsdWU6IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCwgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2Nyb2xsVmlldyB7XHJcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxCYXInLCB7IHJlYWQ6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IH0pXHJcbiAgICBzY3JvbGxCYXI6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGxhbmdUZXh0RGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZXh0RGlyZWN0aW9uPihUZXh0RGlyZWN0aW9ucy5MVFIpO1xyXG4gICAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJHNjcm9sbGJhckVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQpO1xyXG4gICAgcmVhZG9ubHkgJHNjcm9sbGJhckVuYWJsZWQgPSB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc2Nyb2xsYmFyRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgc2Nyb2xsYmFyRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XHJcbiAgICByZWFkb25seSAkY2xhc3NlcyA9IHRoaXMuXyRjbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBjbGFzc2VzKHY6IHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kY2xhc3Nlcy5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBjbGFzc2VzKCkgeyByZXR1cm4gdGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGFjdHVhbENsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICAgIHJlYWRvbmx5ICRhY3R1YWxDbGFzc2VzID0gdGhpcy5fJGFjdHVhbENsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY29udGFpbmVyQ2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gICAgcmVhZG9ubHkgJGNvbnRhaW5lckNsYXNzZXMgPSB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyR0aHVtYlNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkdGh1bWJTaXplID0gdGhpcy5fJHRodW1iU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRzY3JvbGxiYXJTaG93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICByZWFkb25seSAkc2Nyb2xsYmFyU2hvdyA9IHRoaXMuXyRzY3JvbGxiYXJTaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIG92ZXJyaWRlIHNldCB4KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl94ID0gdGhpcy5fYWN0dWFsWCA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB4KCkgeyByZXR1cm4gdGhpcy5feDsgfVxyXG5cclxuICAgIG92ZXJyaWRlIHNldCB5KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl95ID0gdGhpcy5fYWN0dWFsWSA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB5KCkgeyByZXR1cm4gdGhpcy5feTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAodmlld3BvcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHZpZXdwb3J0Qm91bmRzLm5leHQoeyB3aWR0aDogdmlld3BvcnQub2Zmc2V0V2lkdGgsIGhlaWdodDogdmlld3BvcnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25SZXNpemVDb250ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGNvbnRlbnRCb3VuZHMubmV4dCh7IHdpZHRoOiBjb250ZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGNvbnRlbnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zY3JvbGxCb3ggPSBuZXcgU2Nyb2xsQm94KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNsYXNzZXMgPSB0aGlzLiRjbGFzc2VzLFxyXG4gICAgICAgICAgICAkZGlyZWN0aW9uID0gdGhpcy4kZGlyZWN0aW9uO1xyXG5cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KChbJGNsYXNzZXMsICRkaXJlY3Rpb25dKSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoW2NsYXNzZXMsIGRpcmVjdGlvbl0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuXyRhY3R1YWxDbGFzc2VzLm5leHQoeyAuLi5jbGFzc2VzLCBbZGlyZWN0aW9uXTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNvbnRlbnRCb3VuZHMgPSB0aGlzLiRjb250ZW50Qm91bmRzLFxyXG4gICAgICAgICAgICAkdmlld3BvcnRCb3VuZHMgPSB0aGlzLiR2aWV3cG9ydEJvdW5kcyxcclxuICAgICAgICAgICAgJGlzVmVydGljYWwgPSB0aGlzLiRpc1ZlcnRpY2FsLFxyXG4gICAgICAgICAgICAkc2Nyb2xsYmFyRW5hYmxlZCA9IHRoaXMuJHNjcm9sbGJhckVuYWJsZWQ7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoWyRkaXJlY3Rpb24sICRzY3JvbGxiYXJFbmFibGVkLCAkaXNWZXJ0aWNhbCwgJGNvbnRlbnRCb3VuZHMsICR2aWV3cG9ydEJvdW5kc10pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKFtkaXJlY3Rpb24sIHNjcm9sbGJhckVuYWJsZWRdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5uZXh0KHsgW2RpcmVjdGlvbl06IHRydWUsIGVuYWJsZWQ6IHNjcm9sbGJhckVuYWJsZWQsIHNjcm9sbGFibGU6IHNjcm9sbGJhckVuYWJsZWQgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0ICRzdGFydE9mZnNldCA9IHRoaXMuJHN0YXJ0T2Zmc2V0LFxyXG4gICAgICAgICAgICAkZW5kT2Zmc2V0ID0gdGhpcy4kZW5kT2Zmc2V0LFxyXG4gICAgICAgICAgICAkdGh1bWJTaXplID0gdGhpcy4kdGh1bWJTaXplO1xyXG5cclxuICAgICAgICBmcm9tKFskZW5kT2Zmc2V0LCAkc3RhcnRPZmZzZXQsICR0aHVtYlNpemUsICRpc1ZlcnRpY2FsXSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICBjb25zdCAkdXBkYXRlU2Nyb2xsQmFyID0gdGhpcy4kdXBkYXRlU2Nyb2xsQmFyO1xyXG5cclxuICAgICAgICAkdXBkYXRlU2Nyb2xsQmFyLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU2Nyb2xsQmFySGFuZGxlcih1cGRhdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuXyRkaXJlY3Rpb24uZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYlNpemUsXHJcbiAgICAgICAgICAgICAgICB0aHVtYlBvc2l0aW9uLFxyXG4gICAgICAgICAgICB9ID0gdGhpcy5fc2Nyb2xsQm94LmNhbGN1bGF0ZVNjcm9sbCh7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB2aWV3cG9ydFdpZHRoOiBzY3JvbGxWaWV3cG9ydC5vZmZzZXRXaWR0aCwgdmlld3BvcnRIZWlnaHQ6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCwgY29udGVudEhlaWdodDogc2Nyb2xsQ29udGVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBzdGFydE9mZnNldCxcclxuICAgICAgICAgICAgICAgIGVuZE9mZnNldCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWDogdGhpcy5feCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWTogdGhpcy5feSxcclxuICAgICAgICAgICAgICAgIG1pblNpemU6IDEsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl8kdGh1bWJTaXplLm5leHQodGh1bWJTaXplKTtcclxuICAgICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQmFyPy5zY3JvbGwoe1xyXG4gICAgICAgICAgICAgICAgW2lzVmVydGljYWwgPyBUT1BfUFJPUF9OQU1FIDogTEVGVF9QUk9QX05BTUVdOiB0aHVtYlBvc2l0aW9uLCBmaXJlVXBkYXRlOiBmYWxzZSwgYmVoYXZpb3I6IEJFSEFWSU9SX0lOU1RBTlQsXHJcbiAgICAgICAgICAgICAgICB1c2VyQWN0aW9uOiBmYWxzZSwgYmxlbmRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl8kc2Nyb2xsYmFyU2hvdy5uZXh0KHRoaXMuc2Nyb2xsYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNjcm9sbEJhcigpIHtcclxuICAgICAgICB0aGlzLl8kdXBkYXRlU2Nyb2xsQmFyLm5leHQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGxvY2FsZVNlbnNpdGl2ZSBbbGFuZ1RleHREaXJdPVwiKCRsYW5nVGV4dERpciB8IGFzeW5jKSFcIiBbbGlzdERpcl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKVwiIGNsYXNzPVwibmd2bF9fY29udGFpbmVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIigkY29udGFpbmVyQ2xhc3NlcyB8IGFzeW5jKSFcIj5cclxuICAgIDxkaXYgI3Njcm9sbFZpZXdwb3J0IHBhcnQ9XCJzY3JvbGxlclwiIGNsYXNzPVwibmd2bF9fc2Nyb2xsZXJcIj5cclxuICAgICAgICA8ZGl2ICNzY3JvbGxDb250ZW50IHBhcnQ9XCJsaXN0XCIgY2xhc3M9XCJuZ3ZsX19saXN0XCIgW25nQ2xhc3NdPVwiKCRhY3R1YWxDbGFzc2VzIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -0,0 +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,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,198 @@
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
+ _map = new CMap();
85
+ _items = new Array();
86
+ _container = null;
87
+ _componentClass = null;
88
+ _components = new Array();
89
+ _componentsResizeObserver = new ResizeObserver(() => {
90
+ const components = this._components;
91
+ if (!!components) {
92
+ for (const comp of components) {
93
+ const { width, height } = comp.instance.getBounds();
94
+ this._map?.set(comp.instance.itemId, { width, height });
95
+ }
96
+ }
97
+ this.dispatch(PrerenderTrackBoxEvents.RESIZE, (this._map?.toObject() || {}));
98
+ });
99
+ _active = true;
100
+ get active() { return this._active; }
101
+ refresh(componentClass, bounds, params) {
102
+ 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;
103
+ if (!items || !components || !this._container) {
104
+ return;
105
+ }
106
+ let totalSize = 0, j = 0;
107
+ for (let i = items.length - 1, l = 0; i >= l; i--) {
108
+ if (totalSize > boundsSize) {
109
+ break;
110
+ }
111
+ const item = items[i];
112
+ if (!!item) {
113
+ const id = item[trackBy], index = items.length - i - 1;
114
+ let comp;
115
+ if (components.length <= j) {
116
+ comp = this._container.createComponent(componentClass);
117
+ comp.instance.renderer = itemRenderer;
118
+ if (!!resizeObserver) {
119
+ resizeObserver.observe(comp.instance.element);
120
+ }
121
+ components.push(comp);
122
+ }
123
+ else {
124
+ comp = components[j];
125
+ }
126
+ comp.instance.item = createItemData(item, isVertical, bounds, boundsSize, dynamic, divides, itemsSize, id, index);
127
+ comp.instance.show();
128
+ const { width, height } = comp.instance.getBounds(), w = isVertical ? width : width < itemsSize ? itemsSize : width, h = isVertical ? height < itemsSize ? itemsSize : height : height;
129
+ totalSize += isVertical ? h : w;
130
+ j++;
131
+ }
132
+ }
133
+ }
134
+ create(container) {
135
+ this._container = container;
136
+ }
137
+ reset(componentClass, items, bounds, params) {
138
+ this._items = items;
139
+ this._componentClass = componentClass;
140
+ this.refresh(componentClass, bounds, params);
141
+ }
142
+ getCache() {
143
+ return !!this._map ? this._map.toObject() : {};
144
+ }
145
+ clear() {
146
+ if (!!this._map) {
147
+ this._map.clear();
148
+ }
149
+ }
150
+ on() {
151
+ if (this._active) {
152
+ return;
153
+ }
154
+ this._active = true;
155
+ const components = this._components;
156
+ if (!!components) {
157
+ const observer = this._componentsResizeObserver;
158
+ for (const comp of components) {
159
+ if (!!comp && !!observer) {
160
+ observer.observe(comp.instance.element);
161
+ }
162
+ }
163
+ }
164
+ }
165
+ off() {
166
+ if (!this._active) {
167
+ return;
168
+ }
169
+ this._active = false;
170
+ if (!!this._componentsResizeObserver) {
171
+ this._componentsResizeObserver?.disconnect();
172
+ }
173
+ }
174
+ dispose() {
175
+ super.dispose();
176
+ if (!!this._map) {
177
+ this._map.clear();
178
+ this._map = null;
179
+ }
180
+ if (!!this._items) {
181
+ this._items = null;
182
+ }
183
+ if (!!this._componentClass) {
184
+ this._componentClass = null;
185
+ }
186
+ if (!!this._container) {
187
+ this._container = null;
188
+ }
189
+ if (!!this._components) {
190
+ this._components = null;
191
+ }
192
+ if (!!this._componentsResizeObserver) {
193
+ this._componentsResizeObserver.disconnect();
194
+ this._componentsResizeObserver = null;
195
+ }
196
+ }
197
+ }
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLXRyYWNrLWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUE2QixNQUFNLFdBQVcsQ0FBQztBQUUvRSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsVUFBbUIsRUFBRSxNQUFhLEVBQUUsVUFBa0IsRUFDbEcsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxFQUFNLEVBQUUsS0FBYSxFQUEwQixFQUFFO0lBQ3RHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBUSxFQUMvRCxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFRLENBQUM7SUFDbkUsT0FBTztRQUNILEtBQUs7UUFDTCxFQUFFO1FBQ0YsUUFBUSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsR0FBRyxFQUFFO2dCQUNE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aEMsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0SXRlbSwgSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiwgSVZpcnR1YWxMaXN0SXRlbSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSWQgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ01hcCB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9jbWFwXCI7XHJcbmltcG9ydCB7IFByZXJlbmRlckNhY2hlIH0gZnJvbSBcIi4uL3R5cGVzL2NhY2hlXCI7XHJcbmltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbmctbGlzdC1pdGVtL2Jhc2VcIjtcclxuaW1wb3J0IHsgSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IERFRkFVTFRfRElWSURFUywgREVGQVVMVF9EWU5BTUlDX1NJWkUsIERFRkFVTFRfSVRFTV9TSVpFLCBERUZBVUxUX1NOQVBfVE9fSVRFTV9BTElHTiwgVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSB9IGZyb20gXCIuLi8uLi8uLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQkMSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29tcG9uZW50Lm1vZGVsXCI7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9ldmVudC1lbWl0dGVyL2V2ZW50LWVtaXR0ZXJcIjtcclxuaW1wb3J0IHsgUHJlcmVuZGVyVHJhY2tCb3hFdmVudHMsIFByZXJlbmRlclRyYWNrQm94SGFuZGxlcnMgfSBmcm9tIFwiLi4vZXZlbnRzXCI7XHJcblxyXG5jb25zdCBjcmVhdGVJdGVtRGF0YSA9IChkYXRhOiBJVmlydHVhbExpc3RJdGVtLCBpc1ZlcnRpY2FsOiBib29sZWFuLCBib3VuZHM6IElTaXplLCBib3VuZHNTaXplOiBudW1iZXIsXHJcbiAgICBkeW5hbWljOiBib29sZWFuLCBkaXZpZGVzOiBudW1iZXIsIGl0ZW1TaXplOiBudW1iZXIsIGlkOiBJZCwgaW5kZXg6IG51bWJlcik6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gPT4ge1xyXG4gICAgY29uc3QgdyA9IChpc1ZlcnRpY2FsID8gKGJvdW5kcy53aWR0aCAvIGRpdmlkZXMpIDogaXRlbVNpemUpIGFzIGFueSxcclxuICAgICAgICBoID0gKGlzVmVydGljYWwgPyBpdGVtU2l6ZSA6IChib3VuZHMuaGVpZ2h0IC8gZGl2aWRlcykpIGFzIGFueTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgbWVhc3VyZXM6IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IDAsXHJcbiAgICAgICAgICAgIHNjcm9sbFNpemU6IDAsXHJcbiAgICAgICAgICAgIHNpemU6IGl0ZW1TaXplLFxyXG4gICAgICAgICAgICByb3c6IHtcclxuICAgICAgICAgICAgICAgIHNpemU6IGl0ZW1TaXplLFxyXG4gICAgICAgICAgICAgICAgb2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGV2ZW46IGZhbHNlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJvdW5kc1NpemUsXHJcbiAgICAgICAgICAgIGFic29sdXRlU3RhcnRQb3NpdGlvbjogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVTdGFydFBvc2l0aW9uUGVyY2VudDogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVFbmRQb3NpdGlvbjogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVFbmRQb3NpdGlvblBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIGRlbHRhOiAwLFxyXG4gICAgICAgICAgICB4OiAwLFxyXG4gICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFg6IDAsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkWTogMCxcclxuICAgICAgICAgICAgejogMCxcclxuICAgICAgICAgICAgcm90YXRpb25YOiAwLFxyXG4gICAgICAgICAgICByb3RhdGlvblk6IDAsXHJcbiAgICAgICAgICAgIHJvdGF0aW9uWjogMCxcclxuICAgICAgICAgICAgc2NhbGVYOiAwLFxyXG4gICAgICAgICAgICBzY2FsZVk6IDAsXHJcbiAgICAgICAgICAgIHNjYWxlWjogMCxcclxuICAgICAgICAgICAgd2lkdGg6IHcsXHJcbiAgICAgICAgICAgIGhlaWdodDogaCxcclxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXHJcbiAgICAgICAgICAgIG1pbkhlaWdodDogMCxcclxuICAgICAgICAgICAgbWF4V2lkdGg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxyXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxyXG4gICAgICAgICAgICBzY3JvbGxEaXJlY3Rpb246IDAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHByZXZpb3VzZURhdGE6IGRhdGEsXHJcbiAgICAgICAgbmV4dERhdGE6IGRhdGEsXHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIG5ldzogZmFsc2UsXHJcbiAgICAgICAgICAgIG9kZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGV2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICBjb2xsYXBzYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN0aWNreTogMCxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXA6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZE91dDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWwsXHJcbiAgICAgICAgICAgIGR5bmFtaWMsXHJcbiAgICAgICAgICAgIGlzU25hcHBpbmdNZXRob2RBZHZhbmNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpdmlkZXM6IDEsXHJcbiAgICAgICAgICAgIHRhYkluZGV4OiAwLFxyXG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgICAgICB6SW5kZXg6IFwiMFwiLFxyXG4gICAgICAgICAgICBzbmFwVG9JdGVtOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcFRvSXRlbUFsaWduOiBERUZBVUxUX1NOQVBfVE9fSVRFTV9BTElHTixcclxuICAgICAgICAgICAgbGF5b3V0T2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICBpc0ZpcnN0OiBmYWxzZSxcclxuICAgICAgICAgICAgaXNMYXN0OiBmYWxzZSxcclxuICAgICAgICAgICAgZnVsbFNpemU6IGZhbHNlLFxyXG4gICAgICAgICAgICBsYXlvdXRJbmRleE9mZnNldDogMCxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogMCxcclxuICAgICAgICB9LFxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUHJlcmVuZGVyVHJhY2tCb3hcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9wcmVyZW5kZXItY29udGFpbmVyL2NvcmUvcHJlcmVuZGVyLXRyYWNrLWJveC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbmV4cG9ydCBjbGFzcyBQcmVyZW5kZXJUcmFja0JveCBleHRlbmRzIEV2ZW50RW1pdHRlcjxQcmVyZW5kZXJUcmFja0JveEV2ZW50cywgUHJlcmVuZGVyVHJhY2tCb3hIYW5kbGVycz4ge1xyXG4gICAgcHJpdmF0ZSBfbWFwOiBDTWFwPElkLCBJU2l6ZT4gfCBudWxsID0gbmV3IENNYXA8SWQsIElTaXplPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2l0ZW1zOiBJVmlydHVhbExpc3RDb2xsZWN0aW9uIHwgbnVsbCA9IG5ldyBBcnJheTxJVmlydHVhbExpc3RJdGVtPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudENsYXNzOiBDb21wb25lbnQkMTxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlZjxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50Pj4gfCBudWxsID0gbmV3IEFycmF5PENvbXBvbmVudFJlZjxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50Pj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbCA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudHM7XHJcbiAgICAgICAgaWYgKCEhY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXAgb2YgY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb21wLmluc3RhbmNlLmdldEJvdW5kcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWFwPy5zZXQoY29tcC5pbnN0YW5jZS5pdGVtSWQhLCB7IHdpZHRoLCBoZWlnaHQgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaChQcmVyZW5kZXJUcmFja0JveEV2ZW50cy5SRVNJWkUsICh0aGlzLl9tYXA/LnRvT2JqZWN0KCkgfHwge30pKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHByaXZhdGUgX2FjdGl2ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBnZXQgYWN0aXZlKCkgeyByZXR1cm4gdGhpcy5fYWN0aXZlOyB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWZyZXNoKGNvbXBvbmVudENsYXNzOiBDb21wb25lbnQkMTxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PiwgYm91bmRzOiBJU2l6ZSwgcGFyYW1zOiBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zKSB7XHJcbiAgICAgICAgY29uc3QgaXNWZXJ0aWNhbCA9IHBhcmFtcy5pc1ZlcnRpY2FsID8/IHRydWUsXHJcbiAgICAgICAgICAgIGR5bmFtaWMgPSBwYXJhbXMuZHluYW1pYyA/PyBERUZBVUxUX0RZTkFNSUNfU0laRSxcclxuICAgICAgICAgICAgZGl2aWRlcyA9IHBhcmFtcy5kaXZpZGVzID8/IERFRkFVTFRfRElWSURFUyxcclxuICAgICAgICAgICAgaXRlbXNTaXplID0gcGFyYW1zLml0ZW1TaXplID8/IERFRkFVTFRfSVRFTV9TSVpFLFxyXG4gICAgICAgICAgICB0cmFja0J5ID0gcGFyYW1zLnRyYWNrQnkgPz8gVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSxcclxuICAgICAgICAgICAgaXRlbVJlbmRlcmVyID0gcGFyYW1zLml0ZW1SZW5kZXJlcixcclxuICAgICAgICAgICAgYm91bmRzU2l6ZSA9IGlzVmVydGljYWwgPyBib3VuZHMuaGVpZ2h0IDogYm91bmRzLndpZHRoLFxyXG4gICAgICAgICAgICBpdGVtcyA9IHRoaXMuX2l0ZW1zLCBjb21wb25lbnRzID0gdGhpcy5fY29tcG9uZW50cyxcclxuICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXIgPSB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gICAgICAgIGlmICghaXRlbXMgfHwgIWNvbXBvbmVudHMgfHwgIXRoaXMuX2NvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0b3RhbFNpemUgPSAwLCBqID0gMDtcclxuICAgICAgICBmb3IgKGxldCBpID0gaXRlbXMubGVuZ3RoIC0gMSwgbCA9IDA7IGkgPj0gbDsgaS0tKSB7XHJcbiAgICAgICAgICAgIGlmICh0b3RhbFNpemUgPiBib3VuZHNTaXplKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGlmICghIWl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gaXRlbVt0cmFja0J5XSwgaW5kZXggPSBpdGVtcy5sZW5ndGggLSBpIC0gMTtcclxuICAgICAgICAgICAgICAgIGxldCBjb21wOiBDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD47XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50cy5sZW5ndGggPD0gaikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXAgPSB0aGlzLl9jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudENsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnJlbmRlcmVyID0gaXRlbVJlbmRlcmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghIXJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoY29tcC5pbnN0YW5jZS5lbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGNvbXApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wID0gY29tcG9uZW50c1tqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaXRlbSA9IGNyZWF0ZUl0ZW1EYXRhKGl0ZW0sIGlzVmVydGljYWwsIGJvdW5kcywgYm91bmRzU2l6ZSwgZHluYW1pYywgZGl2aWRlcywgaXRlbXNTaXplLCBpZCwgaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbXAuaW5zdGFuY2UuZ2V0Qm91bmRzKCksXHJcbiAgICAgICAgICAgICAgICAgICAgdyA9IGlzVmVydGljYWwgPyB3aWR0aCA6IHdpZHRoIDwgaXRlbXNTaXplID8gaXRlbXNTaXplIDogd2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgaCA9IGlzVmVydGljYWwgPyBoZWlnaHQgPCBpdGVtc1NpemUgPyBpdGVtc1NpemUgOiBoZWlnaHQgOiBoZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB0b3RhbFNpemUgKz0gaXNWZXJ0aWNhbCA/IGggOiB3O1xyXG4gICAgICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZShjb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICB0aGlzLl9jb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXQoY29tcG9uZW50Q2xhc3M6IENvbXBvbmVudCQxPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+LCBpdGVtczogSVZpcnR1YWxMaXN0Q29sbGVjdGlvbixcclxuICAgICAgICBib3VuZHM6IElTaXplLCBwYXJhbXM6IElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMpIHtcclxuICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zO1xyXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKGNvbXBvbmVudENsYXNzLCBib3VuZHMsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2FjaGUoKTogUHJlcmVuZGVyQ2FjaGUge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuX21hcCA/IHRoaXMuX21hcC50b09iamVjdCgpIDoge307XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5fbWFwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21hcC5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbigpIHtcclxuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudHM7XHJcbiAgICAgICAgaWYgKCEhY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcjtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wIG9mIGNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICghIWNvbXAgJiYgISFvYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoY29tcC5pbnN0YW5jZS5lbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvZmYoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9hY3RpdmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBkaXNwb3NlKCkge1xyXG4gICAgICAgIHN1cGVyLmRpc3Bvc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fbWFwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21hcC5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5faXRlbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5faXRlbXMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50Q2xhc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50Q2xhc3MgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISF0aGlzLl9jb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -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 {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1wYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvaW50ZXJmYWNlcy9yZWZyZXNoLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9pbnRlcmZhY2VzL3JlZnJlc2gtcGFyYW1zLnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zIHtcclxuICAgIGl0ZW1SZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgIGR5bmFtaWM6IGJvb2xlYW47XHJcbiAgICBpdGVtU2l6ZTogbnVtYmVyO1xyXG4gICAgaXNWZXJ0aWNhbDogYm9vbGVhbjtcclxuICAgIHRyYWNrQnk6IHN0cmluZztcclxufSJdfQ==
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1wYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvaW50ZXJmYWNlcy9yZWZyZXNoLXBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvcHJlcmVuZGVyLWNvbnRhaW5lci9pbnRlcmZhY2VzL3JlZnJlc2gtcGFyYW1zLnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zIHtcclxuICAgIGl0ZW1SZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuICAgIGR5bmFtaWM6IGJvb2xlYW47XHJcbiAgICBkaXZpZGVzOiBudW1iZXI7XHJcbiAgICBpdGVtU2l6ZTogbnVtYmVyO1xyXG4gICAgaXNWZXJ0aWNhbDogYm9vbGVhbjtcclxuICAgIHRyYWNrQnk6IHN0cmluZztcclxufSJdfQ==
@@ -0,0 +1,93 @@
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
+ _list = null;
18
+ enabled = false;
19
+ direction = DEFAULT_DIRECTION;
20
+ isVertical = true;
21
+ scrollbarEnabled = DEFAULT_SCROLLBAR_ENABLED;
22
+ startOffset = 0;
23
+ endOffset = 0;
24
+ bounds;
25
+ dynamic = DEFAULT_DYNAMIC_SIZE;
26
+ itemSize = DEFAULT_ITEM_SIZE;
27
+ trackBy = TRACK_BY_PROPERTY_NAME;
28
+ divides = DEFAULT_DIVIDES;
29
+ itemRenderer;
30
+ $render;
31
+ get active() {
32
+ return this._list?.active ?? false;
33
+ }
34
+ constructor() {
35
+ super();
36
+ }
37
+ ngAfterViewInit() {
38
+ const $list = of(this._list);
39
+ this.$render = $list.pipe(takeUntil(this._$unsubscribe), filter(v => !!v), switchMap(v => v.$render));
40
+ }
41
+ clear() {
42
+ const list = this._list;
43
+ if (!!list) {
44
+ list.clear();
45
+ }
46
+ }
47
+ on(items = null) {
48
+ const list = this._list;
49
+ if (!!list) {
50
+ list.on(items);
51
+ }
52
+ }
53
+ off() {
54
+ const list = this._list;
55
+ if (!!list) {
56
+ list.off();
57
+ }
58
+ }
59
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", 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 });
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderContainer, decorators: [{
63
+ type: Component,
64
+ args: [{ selector: 'ng-prerender-container', host: {
65
+ 'style': 'position: relative;'
66
+ }, 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"] }]
67
+ }], ctorParameters: () => [], propDecorators: { _list: [{
68
+ type: ViewChild,
69
+ args: ['list', { read: NgPrerenderList }]
70
+ }], enabled: [{
71
+ type: Input
72
+ }], direction: [{
73
+ type: Input
74
+ }], isVertical: [{
75
+ type: Input
76
+ }], scrollbarEnabled: [{
77
+ type: Input
78
+ }], startOffset: [{
79
+ type: Input
80
+ }], endOffset: [{
81
+ type: Input
82
+ }], bounds: [{
83
+ type: Input
84
+ }], dynamic: [{
85
+ type: Input
86
+ }], itemSize: [{
87
+ type: Input
88
+ }], trackBy: [{
89
+ type: Input
90
+ }], divides: [{
91
+ type: Input
92
+ }] } });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvbmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvbmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxTQUFTLEVBQUUsaUJBQWlCLEdBQ3ZGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUNILGlCQUFpQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxzQkFBc0IsR0FDakksTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFdkU7Ozs7Ozs7R0FPRztBQVlILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFFakQsS0FBSyxHQUEyQixJQUFJLENBQUM7SUFHN0MsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUd6QixTQUFTLEdBQW9CLGlCQUFpQixDQUFDO0lBRy9DLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFHM0IsZ0JBQWdCLEdBQVkseUJBQXlCLENBQUM7SUFHdEQsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUd4QixTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBR3RCLE1BQU0sQ0FBUztJQUdmLE9BQU8sR0FBWSxvQkFBb0IsQ0FBQztJQUd4QyxRQUFRLEdBQVcsaUJBQWlCLENBQUM7SUFHckMsT0FBTyxHQUFXLHNCQUFzQixDQUFDO0lBR3pDLE9BQU8sR0FBVyxlQUFlLENBQUM7SUFFbEMsWUFBWSxDQUFvQjtJQUVoQyxPQUFPLENBQThCO0lBRXJDLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDckIsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUMsT0FBTyxDQUFDLENBQzdCLENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFRCxFQUFFLENBQUMsUUFBdUMsSUFBSTtRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUc7UUFDQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2YsQ0FBQztJQUNMLENBQUM7d0dBOUVRLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHljQUNGLGVBQWUsb0RDbEM5Qyx5WEFHMEM7OzRGRDhCN0Isb0JBQW9CO2tCQVhoQyxTQUFTOytCQUNJLHdCQUF3QixRQUc1Qjt3QkFDRixPQUFPLEVBQUUscUJBQXFCO3FCQUNqQyxjQUNXLEtBQUssbUJBQ0EsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsU0FBUzt3REFJbEMsS0FBSztzQkFEWixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBSTVDLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgREVGQVVMVF9ESVJFQ1RJT04sIERFRkFVTFRfRElWSURFUywgREVGQVVMVF9EWU5BTUlDX1NJWkUsIERFRkFVTFRfSVRFTV9TSVpFLCBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELCBUUkFDS19CWV9QUk9QRVJUWV9OQU1FLFxyXG59IGZyb20gXCIuLi8uLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBJU2l6ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBJVmlydHVhbExpc3RDb2xsZWN0aW9uIH0gZnJvbSBcIi4uLy4uL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgTmdQcmVyZW5kZXJMaXN0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC9uZy1wcmVyZW5kZXItbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUHJlcmVuZGVyQ2FjaGUgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Rpc3Bvc2FibGUtY29tcG9uZW50XCI7XHJcblxyXG4vKipcclxuICogUHJlcmVuZGVyIGNvbnRhaW5lci5cclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvbmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmctcHJlcmVuZGVyLWNvbnRhaW5lcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi4vLi4vbmctdmlydHVhbC1saXN0LmNvbXBvbmVudC5zY3NzJywgJy4vbmctcHJlcmVuZGVyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdzdHlsZSc6ICdwb3NpdGlvbjogcmVsYXRpdmU7J1xyXG4gICAgfSxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ByZXJlbmRlckNvbnRhaW5lciBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQge1xyXG4gICAgQFZpZXdDaGlsZCgnbGlzdCcsIHsgcmVhZDogTmdQcmVyZW5kZXJMaXN0IH0pXHJcbiAgICBwcml2YXRlIF9saXN0OiBOZ1ByZXJlbmRlckxpc3QgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBkaXJlY3Rpb246IERpcmVjdGlvbiB8IGFueSA9IERFRkFVTFRfRElSRUNUSU9OO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBpc1ZlcnRpY2FsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2Nyb2xsYmFyRW5hYmxlZDogYm9vbGVhbiA9IERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQ7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHN0YXJ0T2Zmc2V0OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBlbmRPZmZzZXQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGJvdW5kcyE6IElTaXplO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBkeW5hbWljOiBib29sZWFuID0gREVGQVVMVF9EWU5BTUlDX1NJWkU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGl0ZW1TaXplOiBudW1iZXIgPSBERUZBVUxUX0lURU1fU0laRTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgdHJhY2tCeTogc3RyaW5nID0gVFJBQ0tfQllfUFJPUEVSVFlfTkFNRTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZGl2aWRlczogbnVtYmVyID0gREVGQVVMVF9ESVZJREVTO1xyXG5cclxuICAgIGl0ZW1SZW5kZXJlciE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgJHJlbmRlciE6IE9ic2VydmFibGU8UHJlcmVuZGVyQ2FjaGU+O1xyXG5cclxuICAgIGdldCBhY3RpdmUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xpc3Q/LmFjdGl2ZSA/PyBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBjb25zdCAkbGlzdCA9IG9mKHRoaXMuX2xpc3QpO1xyXG5cclxuICAgICAgICB0aGlzLiRyZW5kZXIgPSAkbGlzdC5waXBlKFxyXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKHYgPT4gdiEuJHJlbmRlciksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhcigpIHtcclxuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5fbGlzdDtcclxuICAgICAgICBpZiAoISFsaXN0KSB7XHJcbiAgICAgICAgICAgIGxpc3QuY2xlYXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb24oaXRlbXM6IElWaXJ0dWFsTGlzdENvbGxlY3Rpb24gfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9saXN0O1xyXG4gICAgICAgIGlmICghIWxpc3QpIHtcclxuICAgICAgICAgICAgbGlzdC5vbihpdGVtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9mZigpIHtcclxuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5fbGlzdDtcclxuICAgICAgICBpZiAoISFsaXN0KSB7XHJcbiAgICAgICAgICAgIGxpc3Qub2ZmKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5nLXByZXJlbmRlci1saXN0ICNsaXN0IFtib3VuZHNdPVwiYm91bmRzIVwiIFtkaXJlY3Rpb25dPVwiZGlyZWN0aW9uXCIgW2R5bmFtaWNdPVwiZHluYW1pY1wiIFtpc1ZlcnRpY2FsXT1cImlzVmVydGljYWxcIlxyXG4gIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiIFt0cmFja0J5XT1cInRyYWNrQnlcIiBbaXRlbVJlbmRlcmVyXT1cIml0ZW1SZW5kZXJlclwiIFtzdGFydE9mZnNldF09XCJzdGFydE9mZnNldFwiXHJcbiAgW2RpdmlkZXNdPVwiZGl2aWRlc1wiIFtlbmRPZmZzZXRdPVwiZW5kT2Zmc2V0XCIgW3Njcm9sbGJhckVuYWJsZWRdPVwic2Nyb2xsYmFyRW5hYmxlZFwiXHJcbiAgW2VuYWJsZWRdPVwiZW5hYmxlZFwiPjwvbmctcHJlcmVuZGVyLWxpc3Q+Il19