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,200 @@
1
+ import { ChangeDetectionStrategy, Component, inject, Injector } from '@angular/core';
2
+ import { map, tap, combineLatest, fromEvent, switchMap, of, debounceTime, BehaviorSubject, takeUntil } from 'rxjs';
3
+ import { DEFAULT_CLICK_DISTANCE, NAVIGATION_BY_KEYBOARD_TIMER, VISIBILITY_HIDDEN, } from '../../const';
4
+ import { BaseVirtualListItemComponent } from './base';
5
+ import { SelectingModesTypes } from '../../enums/selecting-modes-types';
6
+ import { getListElementByIndex } from './utils';
7
+ import { ATTR_AREA_SELECTED, EVENT_FOCUS_IN, EVENT_FOCUS_OUT, EVENT_KEY_DOWN, KEY_ARR_DOWN, KEY_ARR_LEFT, KEY_ARR_RIGHT, KEY_ARR_UP, KEY_SPACE, NGVL_VISIBILITY, } from './const';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "../../directives/virtual-click/virtual-click.directive";
11
+ /**
12
+ * Virtual list component.
13
+ * Maximum performance for extremely large lists.
14
+ * It is based on algorithms for virtualization of screen objects.
15
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-list-item/ng-virtual-list-item.component.ts
16
+ * @author Evgenii Alexandrovich Grebennikov
17
+ * @email djonnyx@gmail.com
18
+ */
19
+ export class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
20
+ _$maxClickDistance = new BehaviorSubject(DEFAULT_CLICK_DISTANCE);
21
+ $maxClickDistance = this._$maxClickDistance.asObservable();
22
+ _injector = inject(Injector);
23
+ constructor() {
24
+ super();
25
+ }
26
+ ngOnInit() {
27
+ this._service.$clickDistance.pipe(takeUntil(this._$unsubscribe), tap(v => {
28
+ this._$maxClickDistance.next(v);
29
+ })).subscribe();
30
+ this._service.$langTextDir.pipe(takeUntil(this._$unsubscribe), tap(v => {
31
+ this._langTextDir = v;
32
+ })).subscribe();
33
+ this._service.$scrollBarSize.pipe(takeUntil(this._$unsubscribe), tap(v => {
34
+ this._scrollBarSize = v;
35
+ })).subscribe();
36
+ const $data = this.$data, $focused = this.$focused;
37
+ fromEvent(this.element, EVENT_FOCUS_IN).pipe(takeUntil(this._$unsubscribe), tap(e => {
38
+ this._service.focusedId = this.itemId ?? null;
39
+ this._$focused.next(true);
40
+ this.updateConfig(this._data);
41
+ this.updatePartStr(this._data, this._isSelected, this._isCollapsed);
42
+ })).subscribe(),
43
+ fromEvent(this.element, EVENT_FOCUS_OUT).pipe(takeUntil(this._$unsubscribe), tap(e => {
44
+ this._$focused.next(false);
45
+ this.updateConfig(this._data);
46
+ this.updatePartStr(this._data, this._isSelected, this._isCollapsed);
47
+ })).subscribe();
48
+ $focused.pipe(takeUntil(this._$unsubscribe), debounceTime(this.getNavigationTimeout()), switchMap(v => {
49
+ if (v) {
50
+ return this.keyKode();
51
+ }
52
+ return of(false);
53
+ })).subscribe();
54
+ combineLatest([$data, this._service.$selectingMode, this._service.$selectedIds, this._service.$collapsedIds]).pipe(takeUntil(this._$unsubscribe), map(([, m, selectedIds, collapsedIds]) => ({ method: m, selectedIds, collapsedIds })), tap(({ method, selectedIds, collapsedIds }) => {
55
+ switch (method) {
56
+ case SelectingModesTypes.SELECT: {
57
+ const id = selectedIds, isSelected = id === this.itemId;
58
+ this.element.setAttribute(ATTR_AREA_SELECTED, String(isSelected));
59
+ this.isSelected = isSelected;
60
+ break;
61
+ }
62
+ case SelectingModesTypes.MULTI_SELECT: {
63
+ const actualIds = selectedIds, isSelected = this.itemId !== undefined && actualIds && actualIds.includes(this.itemId);
64
+ this.element.setAttribute(ATTR_AREA_SELECTED, String(isSelected));
65
+ this.isSelected = isSelected;
66
+ break;
67
+ }
68
+ case SelectingModesTypes.NONE:
69
+ default: {
70
+ this.element.removeAttribute(ATTR_AREA_SELECTED);
71
+ this.isSelected = false;
72
+ break;
73
+ }
74
+ }
75
+ const actualIds = collapsedIds, isCollapsed = this.itemId !== undefined && actualIds && actualIds.includes(this.itemId);
76
+ this._isCollapsed = isCollapsed;
77
+ this.updatePartStr(this._data, this._isSelected, isCollapsed);
78
+ this.updateConfig(this._data);
79
+ this.updateMeasures(this._data);
80
+ })).subscribe();
81
+ }
82
+ keyKode() {
83
+ return fromEvent(this.element, EVENT_KEY_DOWN).pipe(takeUntil(this._$unsubscribe), switchMap(e => {
84
+ switch (e.key) {
85
+ case KEY_SPACE: {
86
+ e.stopImmediatePropagation();
87
+ e.preventDefault();
88
+ if (!!this._data) {
89
+ this._service.select(this._data.id);
90
+ this._service.collapse(this._data.id);
91
+ }
92
+ break;
93
+ }
94
+ case KEY_ARR_LEFT:
95
+ if (!this._$config.getValue().isVertical) {
96
+ return this.toPrevItem(e);
97
+ }
98
+ break;
99
+ case KEY_ARR_UP:
100
+ if (this._$config.getValue().isVertical) {
101
+ return this.toPrevItem(e);
102
+ }
103
+ break;
104
+ case KEY_ARR_RIGHT:
105
+ if (!this._$config.getValue().isVertical) {
106
+ return this.toNextItem(e);
107
+ }
108
+ break;
109
+ case KEY_ARR_DOWN:
110
+ if (this._$config.getValue().isVertical) {
111
+ return this.toNextItem(e);
112
+ }
113
+ break;
114
+ }
115
+ return of(null);
116
+ }));
117
+ }
118
+ getNavigationTimeout() {
119
+ return this._service.snapToItem ?
120
+ Math.max(this._service.animationParams.snapToItem, this._service.animationParams.navigateByKeyboard ?? NAVIGATION_BY_KEYBOARD_TIMER) :
121
+ this._service.animationParams.navigateByKeyboard ?? NAVIGATION_BY_KEYBOARD_TIMER;
122
+ }
123
+ toNextItem(e) {
124
+ if (!!e && e.cancelable) {
125
+ e.stopImmediatePropagation();
126
+ e.preventDefault();
127
+ }
128
+ const index = this.focusNext();
129
+ if (index !== Number.MIN_SAFE_INTEGER) {
130
+ this._service.lastFocusedItemId = index;
131
+ }
132
+ return of(e).pipe(takeUntil(this._$unsubscribe), debounceTime(this.getNavigationTimeout()), switchMap(() => {
133
+ return this.keyKode();
134
+ }));
135
+ }
136
+ toPrevItem(e) {
137
+ if (!!e && e.cancelable) {
138
+ e.stopImmediatePropagation();
139
+ e.preventDefault();
140
+ }
141
+ const index = this.focusPrev();
142
+ if (index !== Number.MIN_SAFE_INTEGER) {
143
+ this._service.lastFocusedItemId = index;
144
+ }
145
+ return of(e).pipe(takeUntil(this._$unsubscribe), debounceTime(this.getNavigationTimeout()), switchMap(() => {
146
+ return this.keyKode();
147
+ }));
148
+ }
149
+ focusNext() {
150
+ if (this._service.listElement) {
151
+ const tabIndex = this._data?.config?.tabIndex ?? 0, length = this._data?.config.totalItems ?? 0, l = length > 0 ? (this._service.isInfinity ? (length + 1) : length) : 0;
152
+ let index = tabIndex;
153
+ while (index <= l) {
154
+ index++;
155
+ const element = this._service.listElement.querySelector(getListElementByIndex(index));
156
+ if (!!element && element.getAttribute(NGVL_VISIBILITY) !== VISIBILITY_HIDDEN) {
157
+ const focused = this._service.focus(element);
158
+ if (focused) {
159
+ return index;
160
+ }
161
+ }
162
+ }
163
+ }
164
+ return Number.MIN_SAFE_INTEGER;
165
+ }
166
+ focusPrev() {
167
+ if (this._service.listElement) {
168
+ const tabIndex = this._data?.config?.tabIndex ?? 0, min = -(this._data?.config?.layoutIndexOffset ?? 0);
169
+ let index = tabIndex;
170
+ while (index >= min) {
171
+ index--;
172
+ const element = this._service.listElement.querySelector(getListElementByIndex(index));
173
+ if (!!element && element.getAttribute(NGVL_VISIBILITY) !== VISIBILITY_HIDDEN) {
174
+ this._service.focus(element);
175
+ return index;
176
+ }
177
+ }
178
+ }
179
+ return Number.MIN_SAFE_INTEGER;
180
+ }
181
+ updateConfig(v) {
182
+ this._$config.next({
183
+ ...v?.config || {}, selected: this._isSelected, collapsed: this._isCollapsed, focused: this._$focused.getValue(),
184
+ });
185
+ this._cdr.markForCheck();
186
+ }
187
+ onClickHandler() {
188
+ this._service.virtualClick(this._data);
189
+ }
190
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NgVirtualListItemComponent, selector: "ng-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\" [attr.ngvl-index]=\"($index | async)!\"\r\n [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"$maxClickDistance | async\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.VirtualClickDirective, selector: "[virtualClick]", inputs: ["maxClickDistance"], outputs: ["onVirtualClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
192
+ }
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListItemComponent, decorators: [{
194
+ type: Component,
195
+ args: [{ selector: 'ng-virtual-list-item', host: {
196
+ 'class': 'ngvl__item',
197
+ 'role': 'listitem',
198
+ }, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\" [attr.ngvl-index]=\"($index | async)!\"\r\n [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"$maxClickDistance | async\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n"] }]
199
+ }], ctorParameters: () => [] });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBYyxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvSCxPQUFPLEVBQ0wsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsaUJBQWlCLEdBQ3hFLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEQsT0FBTyxFQUNMLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQy9GLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsR0FDdEQsTUFBTSxTQUFTLENBQUM7Ozs7QUFFakI7Ozs7Ozs7R0FPRztBQVlILE1BQU0sT0FBTywwQkFBMkIs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SSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzdCLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFa0IsWUFBWSxDQUFDLENBQXFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sSUFBSSxFQUEwQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtTQUN6SSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7d0dBNU9VLDBCQUEwQjs0RkFBMUIsMEJBQTBCLCtKQ25DdkMscXpCQVVlOzs0RkR5QkYsMEJBQTBCO2tCQVh0QyxTQUFTOytCQUNFLHNCQUFzQixRQUcxQjt3QkFDSixPQUFPLEVBQUUsWUFBWTt3QkFDckIsTUFBTSxFQUFFLFVBQVU7cUJBQ25CLGNBQ1csS0FBSyxtQkFDQSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgdGFwLCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIHN3aXRjaE1hcCwgb2YsIE9ic2VydmFibGUsIGRlYm91bmNlVGltZSwgQmVoYXZpb3JTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9yZW5kZXItaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IElkIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfQ0xJQ0tfRElTVEFOQ0UsIE5BVklHQVRJT05fQllfS0VZQk9BUkRfVElNRVIsIFZJU0lCSUxJVFlfSElEREVOLFxyXG59IGZyb20gJy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZSc7XHJcbmltcG9ydCB7IFNlbGVjdGluZ01vZGVzVHlwZXMgfSBmcm9tICcuLi8uLi9lbnVtcy9zZWxlY3RpbmctbW9kZXMtdHlwZXMnO1xyXG5pbXBvcnQgeyBJRGlzcGxheU9iamVjdENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IGdldExpc3RFbGVtZW50QnlJbmRleCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQge1xyXG4gIEFUVFJfQVJFQV9TRUxFQ1RFRCwgRVZFTlRfRk9DVVNfSU4sIEVWRU5UX0ZPQ1VTX09VVCwgRVZFTlRfS0VZX0RPV04sIEtFWV9BUlJfRE9XTiwgS0VZX0FSUl9MRUZULFxyXG4gIEtFWV9BUlJfUklHSFQsIEtFWV9BUlJfVVAsIEtFWV9TUEFDRSwgTkdWTF9WSVNJQklMSVRZLFxyXG59IGZyb20gJy4vY29uc3QnO1xyXG5cclxuLyoqXHJcbiAqIFZpcnR1YWwgbGlzdCBjb21wb25lbnQuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy12aXJ0dWFsLWxpc3QtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgICdjbGFzcyc6ICduZ3ZsX19pdGVtJyxcclxuICAgICdyb2xlJzogJ2xpc3RpdGVtJyxcclxuICB9LFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIF8kbWF4Q2xpY2tEaXN0YW5jZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihERUZBVUxUX0NMSUNLX0RJU1RBTkNFKTtcclxuICAkbWF4Q2xpY2tEaXN0YW5jZSA9IHRoaXMuXyRtYXhDbGlja0Rpc3RhbmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLiRjbGlja0Rpc3RhbmNlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy5fJG1heENsaWNrRGlzdGFuY2UubmV4dCh2KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuX3NlcnZpY2UuJGxhbmdUZXh0RGlyLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy5fbGFuZ1RleHREaXIgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5fc2VydmljZS4kc2Nyb2xsQmFyU2l6ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuX3Njcm9sbEJhclNpemUgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJGRhdGEgPSB0aGlzLiRkYXRhLFxyXG4gICAgICAkZm9jdXNlZCA9IHRoaXMuJGZvY3VzZWQ7XHJcblxyXG5cclxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQsIEVWRU5UX0ZPQ1VTX0lOKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NlcnZpY2UuZm9jdXNlZElkID0gdGhpcy5pdGVtSWQgPz8gbnVsbDtcclxuICAgICAgICB0aGlzLl8kZm9jdXNlZC5uZXh0KHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbmZpZyh0aGlzLl9kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpLFxyXG5cclxuICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudCwgRVZFTlRfRk9DVVNfT1VUKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgIHRhcChlID0+IHtcclxuICAgICAgICAgIHRoaXMuXyRmb2N1c2VkLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgIHRoaXMudXBkYXRlQ29uZmlnKHRoaXMuX2RhdGEpO1xyXG5cclxuICAgICAgICAgIHRoaXMudXBkYXRlUGFydFN0cih0aGlzLl9kYXRhLCB0aGlzLl9pc1NlbGVjdGVkLCB0aGlzLl9pc0NvbGxhcHNlZCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgJGZvY3VzZWQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmdldE5hdmlnYXRpb25UaW1lb3V0KCkpLFxyXG4gICAgICBzd2l0Y2hNYXAodiA9PiB7XHJcbiAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmtleUtvZGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRkYXRhLCB0aGlzLl9zZXJ2aWNlLiRzZWxlY3RpbmdNb2RlLCB0aGlzLl9zZXJ2aWNlLiRzZWxlY3RlZElkcywgdGhpcy5fc2VydmljZS4kY29sbGFwc2VkSWRzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIG1hcCgoWywgbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkc10pID0+ICh7IG1ldGhvZDogbSwgc2VsZWN0ZWRJZHMsIGNvbGxhcHNlZElkcyB9KSksXHJcbiAgICAgIHRhcCgoeyBtZXRob2QsIHNlbGVjdGVkSWRzLCBjb2xsYXBzZWRJZHMgfSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgICAgICBjYXNlIFNlbGVjdGluZ01vZGVzVHlwZXMuU0VMRUNUOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkID0gc2VsZWN0ZWRJZHMgYXMgSWQgfCB1bmRlZmluZWQsIGlzU2VsZWN0ZWQgPSBpZCA9PT0gdGhpcy5pdGVtSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoQVRUUl9BUkVBX1NFTEVDVEVELCBTdHJpbmcoaXNTZWxlY3RlZCkpO1xyXG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWQgPSBpc1NlbGVjdGVkO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgU2VsZWN0aW5nTW9kZXNUeXBlcy5NVUxUSV9TRUxFQ1Q6IHtcclxuICAgICAgICAgICAgY29uc3QgYWN0dWFsSWRzID0gc2VsZWN0ZWRJZHMgYXMgQXJyYXk8SWQ+LCBpc1NlbGVjdGVkID0gdGhpcy5pdGVtSWQgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWxJZHMgJiYgYWN0dWFsSWRzLmluY2x1ZGVzKHRoaXMuaXRlbUlkKTtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShBVFRSX0FSRUFfU0VMRUNURUQsIFN0cmluZyhpc1NlbGVjdGVkKSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBTZWxlY3RpbmdNb2Rlc1R5cGVzLk5PTkU6XHJcbiAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoQVRUUl9BUkVBX1NFTEVDVEVEKTtcclxuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYWN0dWFsSWRzID0gY29sbGFwc2VkSWRzLCBpc0NvbGxhcHNlZCA9IHRoaXMuaXRlbUlkICE9PSB1bmRlZmluZWQgJiYgYWN0dWFsSWRzICYmIGFjdHVhbElkcy5pbmNsdWRlcyh0aGlzLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5faXNDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIGlzQ29sbGFwc2VkKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb25maWcodGhpcy5fZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlTWVhc3VyZXModGhpcy5fZGF0YSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUga2V5S29kZSgpIHtcclxuICAgIHJldHVybiBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5lbGVtZW50LCBFVkVOVF9LRVlfRE9XTikucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHN3aXRjaE1hcChlID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGUua2V5KSB7XHJcbiAgICAgICAgICBjYXNlIEtFWV9TUEFDRToge1xyXG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuX2RhdGEpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9zZXJ2aWNlLnNlbGVjdCh0aGlzLl9kYXRhIS5pZCEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2UuY29sbGFwc2UodGhpcy5fZGF0YSEuaWQhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgS0VZX0FSUl9MRUZUOlxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9QcmV2SXRlbShlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgS0VZX0FSUl9VUDpcclxuICAgICAgICAgICAgaWYgKHRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9QcmV2SXRlbShlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgS0VZX0FSUl9SSUdIVDpcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl8kY29uZmlnLmdldFZhbHVlKCkuaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvTmV4dEl0ZW0oZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEtFWV9BUlJfRE9XTjpcclxuICAgICAgICAgICAgaWYgKHRoaXMuXyRjb25maWcuZ2V0VmFsdWUoKS5pc1ZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9OZXh0SXRlbShlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5hdmlnYXRpb25UaW1lb3V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2Uuc25hcFRvSXRlbSA/XHJcbiAgICAgIE1hdGgubWF4KHRoaXMuX3NlcnZpY2UuYW5pbWF0aW9uUGFyYW1zLnNuYXBUb0l0ZW0sIHRoaXMuX3NlcnZpY2UuYW5pbWF0aW9uUGFyYW1zLm5hdmlnYXRlQnlLZXlib2FyZCA/PyBOQVZJR0FUSU9OX0JZX0tFWUJPQVJEX1RJTUVSKSA6XHJcbiAgICAgIHRoaXMuX3NlcnZpY2UuYW5pbWF0aW9uUGFyYW1zLm5hdmlnYXRlQnlLZXlib2FyZCA/PyBOQVZJR0FUSU9OX0JZX0tFWUJPQVJEX1RJTUVSO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b05leHRJdGVtKGU6IEV2ZW50KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmICghIWUgJiYgZS5jYW5jZWxhYmxlKSB7XHJcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9jdXNOZXh0KCk7XHJcbiAgICBpZiAoaW5kZXggIT09IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSB7XHJcbiAgICAgIHRoaXMuX3NlcnZpY2UubGFzdEZvY3VzZWRJdGVtSWQgPSBpbmRleDtcclxuICAgIH1cclxuICAgIHJldHVybiBvZihlKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZ2V0TmF2aWdhdGlvblRpbWVvdXQoKSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5S29kZSgpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvUHJldkl0ZW0oZTogRXZlbnQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKCEhZSAmJiBlLmNhbmNlbGFibGUpIHtcclxuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb2N1c1ByZXYoKTtcclxuICAgIGlmIChpbmRleCAhPT0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpIHtcclxuICAgICAgdGhpcy5fc2VydmljZS5sYXN0Rm9jdXNlZEl0ZW1JZCA9IGluZGV4O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9mKGUpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5nZXROYXZpZ2F0aW9uVGltZW91dCgpKSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5rZXlLb2RlKCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNOZXh0KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCkge1xyXG4gICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMCwgbGVuZ3RoID0gdGhpcy5fZGF0YT8uY29uZmlnLnRvdGFsSXRlbXMgPz8gMCxcclxuICAgICAgICBsID0gbGVuZ3RoID4gMCA/ICh0aGlzLl9zZXJ2aWNlLmlzSW5maW5pdHkgPyAobGVuZ3RoICsgMSkgOiBsZW5ndGgpIDogMDtcclxuICAgICAgbGV0IGluZGV4ID0gdGFiSW5kZXg7XHJcbiAgICAgIHdoaWxlIChpbmRleCA8PSBsKSB7XHJcbiAgICAgICAgaW5kZXgrKztcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fc2VydmljZS5saXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihnZXRMaXN0RWxlbWVudEJ5SW5kZXgoaW5kZXgpKTtcclxuICAgICAgICBpZiAoISFlbGVtZW50ICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKE5HVkxfVklTSUJJTElUWSkgIT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgICBjb25zdCBmb2N1c2VkID0gdGhpcy5fc2VydmljZS5mb2N1cyhlbGVtZW50KTtcclxuICAgICAgICAgIGlmIChmb2N1c2VkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9jdXNQcmV2KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZS5saXN0RWxlbWVudCkge1xyXG4gICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8udGFiSW5kZXggPz8gMCwgbWluID0gLSh0aGlzLl9kYXRhPy5jb25maWc/LmxheW91dEluZGV4T2Zmc2V0ID8/IDApO1xyXG4gICAgICBsZXQgaW5kZXggPSB0YWJJbmRleDtcclxuICAgICAgd2hpbGUgKGluZGV4ID49IG1pbikge1xyXG4gICAgICAgIGluZGV4LS07XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX3NlcnZpY2UubGlzdEVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oZ2V0TGlzdEVsZW1lbnRCeUluZGV4KGluZGV4KSk7XHJcbiAgICAgICAgaWYgKCEhZWxlbWVudCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZShOR1ZMX1ZJU0lCSUxJVFkpICE9PSBWSVNJQklMSVRZX0hJRERFTikge1xyXG4gICAgICAgICAgdGhpcy5fc2VydmljZS5mb2N1cyhlbGVtZW50KTtcclxuICAgICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVDb25maWcodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgbnVsbCkge1xyXG4gICAgdGhpcy5fJGNvbmZpZy5uZXh0KHtcclxuICAgICAgLi4udj8uY29uZmlnIHx8IHt9IGFzIElEaXNwbGF5T2JqZWN0Q29uZmlnLCBzZWxlY3RlZDogdGhpcy5faXNTZWxlY3RlZCwgY29sbGFwc2VkOiB0aGlzLl9pc0NvbGxhcHNlZCwgZm9jdXNlZDogdGhpcy5fJGZvY3VzZWQuZ2V0VmFsdWUoKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tIYW5kbGVyKCkge1xyXG4gICAgdGhpcy5fc2VydmljZS52aXJ0dWFsQ2xpY2sodGhpcy5fZGF0YSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoJGRhdGEgfCBhc3luYykgYXMgZGF0YVwiPlxyXG4gICAgPGRpdiAjaXRlbSBjbGFzcz1cIm5ndmwtaXRlbVwiIFtuZ0NsYXNzXT1cIigkY2xhc3NlcyB8IGFzeW5jKSFcIiBbcGFydF09XCIoJHBhcnQgfCBhc3luYykhXCIgW2F0dHIubmd2bC1pbmRleF09XCIoJGluZGV4IHwgYXN5bmMpIVwiXHJcbiAgICAgICAgW2F0dHIubmd2bC12aXNpYmlsaXR5XT1cInZpc2liaWxpdHlcIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIl9ibGVuZENvbG9yXCIgY2xhc3M9XCJuZ3ZsLWl0ZW1fX2JsZW5kLWNvbG9yXCIgW3N0eWxlLi0tYmxlbmQtY29sb3JdPVwiX2JsZW5kQ29sb3JcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2ICNjb250YWluZXIgdmlydHVhbENsaWNrIFtwYXJ0XT1cIiRmeFBhcnQgfCBhc3luY1wiIFttYXhDbGlja0Rpc3RhbmNlXT1cIiRtYXhDbGlja0Rpc3RhbmNlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm5ndmwtaXRlbV9fY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiKCRjbGFzc2VzIHwgYXN5bmMpIVwiIChvblZpcnR1YWxDbGljayk9XCJvbkNsaWNrSGFuZGxlcigpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVJlbmRlcmVyID8/IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIiR0ZW1wbGF0ZUNvbnRleHQgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgVirtualListItemComponent } from './ng-virtual-list-item.component';
4
+ import { VirtualClickModule } from '../../directives';
5
+ import * as i0 from "@angular/core";
6
+ export class NgVirtualListItemModule {
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListItemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListItemModule, declarations: [NgVirtualListItemComponent], imports: [CommonModule, VirtualClickModule], exports: [NgVirtualListItemComponent] });
9
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListItemModule, imports: [CommonModule, VirtualClickModule] });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListItemModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [NgVirtualListItemComponent],
15
+ exports: [NgVirtualListItemComponent],
16
+ imports: [CommonModule, VirtualClickModule],
17
+ schemas: [NO_ERRORS_SCHEMA],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LWl0ZW0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQVF0RCxNQUFNLE9BQU8sdUJBQXVCO3dHQUF2Qix1QkFBdUI7eUdBQXZCLHVCQUF1QixpQkFMbkIsMEJBQTBCLGFBRS9CLFlBQVksRUFBRSxrQkFBa0IsYUFEaEMsMEJBQTBCO3lHQUl6Qix1QkFBdUIsWUFIeEIsWUFBWSxFQUFFLGtCQUFrQjs7NEZBRy9CLHVCQUF1QjtrQkFObkMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztvQkFDM0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE5PX0VSUk9SU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpcnR1YWxDbGlja01vZHVsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudF0sXHJcbiAgZXhwb3J0czogW05nVmlydHVhbExpc3RJdGVtQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBWaXJ0dWFsQ2xpY2tNb2R1bGVdLFxyXG4gIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nVmlydHVhbExpc3RJdGVtTW9kdWxlIHsgfVxyXG4iXX0=
@@ -0,0 +1,10 @@
1
+ /**
2
+ * createDisplayId
3
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-list-item/utils/create-display-id.ts
4
+ * @author Evgenii Alexandrovich Grebennikov
5
+ * @email djonnyx@gmail.com
6
+ */
7
+ export const createDisplayId = (listId, id) => {
8
+ return `${listId}-${id}`;
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRpc3BsYXktaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9jcmVhdGUtZGlzcGxheS1pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFVLEVBQUUsRUFBRTtJQUMxRCxPQUFPLEdBQUcsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBjcmVhdGVEaXNwbGF5SWRcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9jcmVhdGUtZGlzcGxheS1pZC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVEaXNwbGF5SWQgPSAobGlzdElkOiBudW1iZXIsIGlkOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBgJHtsaXN0SWR9LSR7aWR9YDtcclxufTtcclxuIl19
@@ -0,0 +1,20 @@
1
+ export const NGVL_INDEX = 'ngvl-index',
2
+ /**
3
+ * getListElementByIndex
4
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-list-item/utils/get-element-by-index.ts
5
+ * @author Evgenii Alexandrovich Grebennikov
6
+ * @email djonnyx@gmail.com
7
+ */
8
+ getListElementByIndex = (index) => {
9
+ return `[${NGVL_INDEX}="${index}"]`;
10
+ },
11
+ /**
12
+ * getListElements
13
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-list-item/utils/get-element-by-index.ts
14
+ * @author Evgenii Alexandrovich Grebennikov
15
+ * @email djonnyx@gmail.com
16
+ */
17
+ getListElements = () => {
18
+ return `[${NGVL_INDEX}]`;
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVsZW1lbnQtYnktaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9nZXQtZWxlbWVudC1ieS1pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsWUFBWTtBQUNsQzs7Ozs7R0FLRztBQUNILHFCQUFxQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxJQUFJLFVBQVUsS0FBSyxLQUFLLElBQUksQ0FBQztBQUN4QyxDQUFDO0FBQ0Q7Ozs7O0dBS0c7QUFDSCxlQUFlLEdBQUcsR0FBRyxFQUFFO0lBQ25CLE9BQU8sSUFBSSxVQUFVLEdBQUcsQ0FBQztBQUM3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTkdWTF9JTkRFWCA9ICduZ3ZsLWluZGV4JyxcclxuICAgIC8qKlxyXG4gICAgICogZ2V0TGlzdEVsZW1lbnRCeUluZGV4XHJcbiAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctbGlzdC1pdGVtL3V0aWxzL2dldC1lbGVtZW50LWJ5LWluZGV4LnRzXHJcbiAgICAgKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gICAgICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAgICAgKi9cclxuICAgIGdldExpc3RFbGVtZW50QnlJbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGBbJHtOR1ZMX0lOREVYfT1cIiR7aW5kZXh9XCJdYDtcclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIGdldExpc3RFbGVtZW50c1xyXG4gICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9nZXQtZWxlbWVudC1ieS1pbmRleC50c1xyXG4gICAgICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICAgICAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gICAgICovXHJcbiAgICBnZXRMaXN0RWxlbWVudHMgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGBbJHtOR1ZMX0lOREVYfV1gO1xyXG4gICAgfTtcclxuIl19
@@ -0,0 +1,5 @@
1
+ import { getListElementByIndex, getListElements, NGVL_INDEX } from './get-element-by-index';
2
+ import { createDisplayId } from './create-display-id';
3
+ import { matrix3d } from './matrix-3d';
4
+ export { createDisplayId, getListElementByIndex, getListElements, matrix3d, NGVL_INDEX, };
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZDLE9BQU8sRUFDSCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixRQUFRLEVBQ1IsVUFBVSxHQUNiLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMaXN0RWxlbWVudEJ5SW5kZXgsIGdldExpc3RFbGVtZW50cywgTkdWTF9JTkRFWCB9IGZyb20gJy4vZ2V0LWVsZW1lbnQtYnktaW5kZXgnO1xyXG5pbXBvcnQgeyBjcmVhdGVEaXNwbGF5SWQgfSBmcm9tICcuL2NyZWF0ZS1kaXNwbGF5LWlkJztcclxuaW1wb3J0IHsgbWF0cml4M2QgfSBmcm9tICcuL21hdHJpeC0zZCc7XHJcblxyXG5leHBvcnQge1xyXG4gICAgY3JlYXRlRGlzcGxheUlkLFxyXG4gICAgZ2V0TGlzdEVsZW1lbnRCeUluZGV4LFxyXG4gICAgZ2V0TGlzdEVsZW1lbnRzLFxyXG4gICAgbWF0cml4M2QsXHJcbiAgICBOR1ZMX0lOREVYLFxyXG59Il19
@@ -0,0 +1,18 @@
1
+ /**
2
+ * matrix3d
3
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/ng-list-item/utils/matrix-3d.ts
4
+ * @author Evgenii Alexandrovich Grebennikov
5
+ * @email djonnyx@gmail.com
6
+ */
7
+ export const matrix3d = (x, y, z, scaleX, scaleY, scaleZ, rotationX, rotationY, rotationZ) => {
8
+ return rotationZ !== 0 ? `${__matrix3d__(x, y, z, scaleX, scaleY, scaleZ, rotationX, rotationY)} rotateZ(${rotationZ}deg)` : __matrix3d__(x, y, z, scaleX, scaleY, scaleZ, rotationX, rotationY);
9
+ };
10
+ const __matrix3d__ = (x, y, z, scaleX, scaleY, scaleZ, rotationX, rotationY) => {
11
+ return `matrix3d(
12
+ ${scaleX}, 0, ${rotationX}, 0,
13
+ 0, ${scaleY}, ${rotationY}, 0,
14
+ 0, 0, 1, 0,
15
+ ${x}, ${y}, ${z}, ${scaleZ}
16
+ )`;
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LTNkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vdXRpbHMvbWF0cml4LTNkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLFNBQWlCLEVBQUUsRUFBRTtJQUNuSyxPQUFPLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxTQUFTLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuTSxDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsTUFBYyxFQUFFLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxFQUFFO0lBQzdJLE9BQU87WUFDRyxNQUFNLDRCQUE0QixTQUFTOzhCQUN6QixNQUFNLFVBQVUsU0FBUzs7WUFFM0MsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsZUFBZSxNQUFNO1VBQzFELENBQUM7QUFDWCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogbWF0cml4M2RcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS91dGlscy9tYXRyaXgtM2QudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgbWF0cml4M2QgPSAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgc2NhbGVYOiBudW1iZXIsIHNjYWxlWTogbnVtYmVyLCBzY2FsZVo6IG51bWJlciwgcm90YXRpb25YOiBudW1iZXIsIHJvdGF0aW9uWTogbnVtYmVyLCByb3RhdGlvblo6IG51bWJlcikgPT4ge1xyXG4gIHJldHVybiByb3RhdGlvblogIT09IDAgPyBgJHtfX21hdHJpeDNkX18oeCwgeSwgeiwgc2NhbGVYLCBzY2FsZVksIHNjYWxlWiwgcm90YXRpb25YLCByb3RhdGlvblkpfSByb3RhdGVaKCR7cm90YXRpb25afWRlZylgIDogX19tYXRyaXgzZF9fKHgsIHksIHosIHNjYWxlWCwgc2NhbGVZLCBzY2FsZVosIHJvdGF0aW9uWCwgcm90YXRpb25ZKTtcclxufTtcclxuXHJcbmNvbnN0IF9fbWF0cml4M2RfXyA9ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCBzY2FsZVg6IG51bWJlciwgc2NhbGVZOiBudW1iZXIsIHNjYWxlWjogbnVtYmVyLCByb3RhdGlvblg6IG51bWJlciwgcm90YXRpb25ZOiBudW1iZXIpID0+IHtcclxuICByZXR1cm4gYG1hdHJpeDNkKFxyXG4gICAgICAgICAgJHtzY2FsZVh9LCAgICAgICAgMCwgICAgICAgICAgICAgICR7cm90YXRpb25YfSwgICAwLFxyXG4gICAgICAgICAgMCwgICAgICAgICAgICAgICAgJHtzY2FsZVl9LCAgICAgICR7cm90YXRpb25ZfSwgICAwLFxyXG4gICAgICAgICAgMCwgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgJHt4fSwgICAgICAgICAgICAgJHt5fSwgICAgICAgICAgICR7en0sICAgICAgICAgICAke3NjYWxlWn1cclxuICAgICAgICApYDtcclxufTtcclxuIl19