ng-virtual-list 14.12.0 → 14.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/README.md +1 -11
  2. package/esm2020/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +309 -0
  3. package/{esm2022 → esm2020}/lib/components/ng-list-item/base/index.mjs +2 -2
  4. package/{esm2022 → esm2020}/lib/components/ng-list-item/const/index.mjs +40 -40
  5. package/{esm2022 → esm2020}/lib/components/ng-list-item/interfaces/index.mjs +1 -1
  6. package/{esm2022 → esm2020}/lib/components/ng-list-item/interfaces/template-context.mjs +1 -1
  7. package/esm2020/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +200 -0
  8. package/{esm2022 → esm2020}/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +20 -20
  9. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/create-display-id.mjs +9 -9
  10. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/get-element-by-index.mjs +19 -19
  11. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/index.mjs +4 -4
  12. package/{esm2022 → esm2020}/lib/components/ng-list-item/utils/matrix-3d.mjs +12 -12
  13. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +278 -0
  14. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.mjs +21 -21
  15. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +94 -0
  16. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +20 -20
  17. package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +141 -0
  18. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +20 -20
  19. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/core/index.mjs +2 -2
  20. package/esm2020/lib/components/ng-prerender-container/core/prerender-track-box.mjs +201 -0
  21. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/events/index.mjs +5 -5
  22. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/interfaces/index.mjs +1 -1
  23. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/interfaces/refresh-params.mjs +1 -1
  24. package/esm2020/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +90 -0
  25. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/ng-prerender-container.module.mjs +20 -20
  26. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/types/cache.mjs +1 -1
  27. package/{esm2022 → esm2020}/lib/components/ng-prerender-container/types/index.mjs +1 -1
  28. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/const/index.mjs +8 -8
  29. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/enums/index.mjs +2 -2
  30. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/enums/scrollbar-states.mjs +6 -6
  31. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/index.mjs +1 -1
  32. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.mjs +1 -1
  33. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.mjs +1 -1
  34. package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +27 -0
  35. package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +324 -0
  36. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/ng-scroll-bar.module.mjs +19 -19
  37. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/ng-scroll-bar.service.mjs +38 -36
  38. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/types/index.mjs +1 -1
  39. package/{esm2022 → esm2020}/lib/components/ng-scroll-bar/types/scrollbar-state.mjs +1 -1
  40. package/esm2020/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +260 -0
  41. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/const/index.mjs +9 -9
  42. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/index.mjs +2 -2
  43. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/scroller-direction.mjs +11 -11
  44. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/enums/scroller-directions.mjs +1 -1
  45. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/index.mjs +3 -3
  46. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/interfaces/index.mjs +1 -1
  47. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/interfaces/scroll-to-params.mjs +1 -1
  48. package/esm2020/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +856 -0
  49. package/esm2020/lib/components/ng-scroll-view/utils/calculate-direction.mjs +17 -0
  50. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/calculate-velocity.mjs +11 -11
  51. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/get-dir.mjs +9 -9
  52. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/index.mjs +5 -5
  53. package/{esm2022 → esm2020}/lib/components/ng-scroll-view/utils/matrix-3d.mjs +9 -9
  54. package/esm2020/lib/components/ng-scroll-view/utils/scroll-box.mjs +45 -0
  55. package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/index.mjs +2 -2
  56. package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/scroller-direction.mjs +5 -5
  57. package/{esm2022 → esm2020}/lib/components/ng-scroller/enums/scroller-directions.mjs +1 -1
  58. package/esm2020/lib/components/ng-scroller/ng-scroller.component.mjs +521 -0
  59. package/{esm2022 → esm2020}/lib/components/ng-scroller/ng-scroller.module.mjs +22 -22
  60. package/{esm2022 → esm2020}/lib/components/ng-scroller/utils/index.mjs +2 -2
  61. package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.mjs +2 -0
  62. package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.mjs +2 -0
  63. package/esm2020/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.mjs +2 -0
  64. package/esm2020/lib/components/ng-scroller/utils/interfaces/index.mjs +2 -0
  65. package/esm2020/lib/components/ng-scroller/utils/scroll-box.mjs +52 -0
  66. package/{esm2022 → esm2020}/lib/const/index.mjs +164 -164
  67. package/esm2020/lib/core/cache-map.mjs +100 -0
  68. package/{esm2022 → esm2020}/lib/core/const/index.mjs +2 -2
  69. package/{esm2022 → esm2020}/lib/core/enums/index.mjs +2 -2
  70. package/{esm2022 → esm2020}/lib/core/enums/item-display-methods.mjs +13 -13
  71. package/{esm2022 → esm2020}/lib/core/events/index.mjs +2 -2
  72. package/{esm2022 → esm2020}/lib/core/events/track-box-events.mjs +11 -11
  73. package/{esm2022 → esm2020}/lib/core/interfaces/get-item-position-options.mjs +1 -1
  74. package/{esm2022 → esm2020}/lib/core/interfaces/get-metrics-returns.mjs +1 -1
  75. package/{esm2022 → esm2020}/lib/core/interfaces/index.mjs +1 -1
  76. package/{esm2022 → esm2020}/lib/core/interfaces/item.mjs +1 -1
  77. package/{esm2022 → esm2020}/lib/core/interfaces/metrics.mjs +1 -1
  78. package/esm2020/lib/core/interfaces/recalculate-metrics-options.mjs +2 -0
  79. package/{esm2022 → esm2020}/lib/core/interfaces/update-collection-options.mjs +1 -1
  80. package/{esm2022 → esm2020}/lib/core/interfaces/update-collection-returns.mjs +1 -1
  81. package/esm2020/lib/core/track-box.mjs +1352 -0
  82. package/esm2020/lib/core/tracker.mjs +209 -0
  83. package/{esm2022 → esm2020}/lib/core/types/cache-map-events.mjs +1 -1
  84. package/{esm2022 → esm2020}/lib/core/types/cache-map-listeners.mjs +1 -1
  85. package/{esm2022 → esm2020}/lib/core/types/cache.mjs +1 -1
  86. package/{esm2022 → esm2020}/lib/core/types/index.mjs +1 -1
  87. package/{esm2022 → esm2020}/lib/core/types/on-change-event-listener.mjs +1 -1
  88. package/{esm2022 → esm2020}/lib/core/types/on-tick-event-listener.mjs +1 -1
  89. package/{esm2022 → esm2020}/lib/core/utils/get-service-id-prop.mjs +9 -9
  90. package/{esm2022 → esm2020}/lib/core/utils/index.mjs +2 -2
  91. package/{esm2022 → esm2020}/lib/directives/index.mjs +3 -3
  92. package/esm2020/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +67 -0
  93. package/{esm2022 → esm2020}/lib/directives/locale-sensitive/locale-sensitive.module.mjs +19 -19
  94. package/esm2020/lib/directives/virtual-click/virtual-click.directive.mjs +66 -0
  95. package/{esm2022 → esm2020}/lib/directives/virtual-click/virtual-click.module.mjs +19 -19
  96. package/{esm2022 → esm2020}/lib/enums/alignments.mjs +11 -11
  97. package/{esm2022 → esm2020}/lib/enums/collapsing-modes.mjs +21 -21
  98. package/{esm2022 → esm2020}/lib/enums/collection-modes.mjs +17 -17
  99. package/{esm2022 → esm2020}/lib/enums/directions.mjs +17 -17
  100. package/{esm2022 → esm2020}/lib/enums/focus-alignments.mjs +13 -13
  101. package/{esm2022 → esm2020}/lib/enums/index.mjs +11 -11
  102. package/{esm2022 → esm2020}/lib/enums/selecting-modes-types.mjs +21 -21
  103. package/{esm2022 → esm2020}/lib/enums/selecting-modes.mjs +21 -21
  104. package/{esm2022 → esm2020}/lib/enums/snap-to-item-aligns.mjs +21 -21
  105. package/{esm2022 → esm2020}/lib/enums/snapping-methods.mjs +17 -17
  106. package/{esm2022 → esm2020}/lib/enums/spreading-modes.mjs +17 -17
  107. package/{esm2022 → esm2020}/lib/enums/text-directions.mjs +13 -13
  108. package/{esm2022 → esm2020}/lib/interfaces/animation-params.mjs +1 -1
  109. package/{esm2022 → esm2020}/lib/interfaces/base-virtual-list-item-component.mjs +1 -1
  110. package/{esm2022 → esm2020}/lib/interfaces/index.mjs +1 -1
  111. package/{esm2022 → esm2020}/lib/interfaces/item-transformation.mjs +1 -1
  112. package/{esm2022 → esm2020}/lib/interfaces/point.mjs +1 -1
  113. package/{esm2022 → esm2020}/lib/interfaces/rect.mjs +1 -1
  114. package/{esm2022 → esm2020}/lib/interfaces/render-stabilizer-options.mjs +1 -1
  115. package/{esm2022 → esm2020}/lib/interfaces/scroll-event.mjs +1 -1
  116. package/{esm2022 → esm2020}/lib/interfaces/scroll-options.mjs +1 -1
  117. package/{esm2022 → esm2020}/lib/interfaces/scroll-params.mjs +1 -1
  118. package/{esm2022 → esm2020}/lib/interfaces/scroll-to-params.mjs +1 -1
  119. package/{esm2022 → esm2020}/lib/interfaces/scrolling-settings.mjs +1 -1
  120. package/{esm2022 → esm2020}/lib/interfaces/size.mjs +1 -1
  121. package/{esm2022 → esm2020}/lib/models/collection.model.mjs +2 -2
  122. package/{esm2022 → esm2020}/lib/models/component.model.mjs +1 -1
  123. package/{esm2022 → esm2020}/lib/models/display-object-config.model.mjs +1 -1
  124. package/{esm2022 → esm2020}/lib/models/display-object-measures.model.mjs +1 -1
  125. package/{esm2022 → esm2020}/lib/models/index.mjs +1 -1
  126. package/{esm2022 → esm2020}/lib/models/item-config-map.model.mjs +1 -1
  127. package/{esm2022 → esm2020}/lib/models/item.model.mjs +1 -1
  128. package/{esm2022 → esm2020}/lib/models/render-collection.model.mjs +2 -2
  129. package/{esm2022 → esm2020}/lib/models/render-item-config.model.mjs +1 -1
  130. package/{esm2022 → esm2020}/lib/models/render-item-measures.model.mjs +2 -2
  131. package/{esm2022 → esm2020}/lib/models/render-item.model.mjs +2 -2
  132. package/esm2020/lib/ng-virtual-list-public.service.mjs +122 -0
  133. package/esm2020/lib/ng-virtual-list.component.mjs +3255 -0
  134. package/{esm2022 → esm2020}/lib/ng-virtual-list.module.mjs +23 -23
  135. package/esm2020/lib/ng-virtual-list.service.mjs +430 -0
  136. package/esm2020/lib/transformations/deck-of-cards-3d.mjs +57 -0
  137. package/esm2020/lib/transformations/deck-of-cards.mjs +54 -0
  138. package/esm2020/lib/transformations/event-horizon.mjs +47 -0
  139. package/{esm2022 → esm2020}/lib/transformations/index.mjs +12 -12
  140. package/esm2020/lib/transformations/linear.mjs +47 -0
  141. package/esm2020/lib/transformations/swipe-3d.mjs +51 -0
  142. package/{esm2022 → esm2020}/lib/types/alignment.mjs +1 -1
  143. package/{esm2022 → esm2020}/lib/types/arithmetic-expression.mjs +1 -1
  144. package/{esm2022 → esm2020}/lib/types/collapsing-mode.mjs +1 -1
  145. package/{esm2022 → esm2020}/lib/types/collection-mode.mjs +1 -1
  146. package/{esm2022 → esm2020}/lib/types/color.mjs +1 -1
  147. package/{esm2022 → esm2020}/lib/types/direction.mjs +1 -1
  148. package/{esm2022 → esm2020}/lib/types/float-or-persentage-value.mjs +1 -1
  149. package/{esm2022 → esm2020}/lib/types/focus-alignment.mjs +1 -1
  150. package/{esm2022 → esm2020}/lib/types/focus-item-params.mjs +1 -1
  151. package/{esm2022 → esm2020}/lib/types/gradient-color-position.mjs +1 -1
  152. package/{esm2022 → esm2020}/lib/types/gradient-color-positions.mjs +1 -1
  153. package/{esm2022 → esm2020}/lib/types/id.mjs +1 -1
  154. package/{esm2022 → esm2020}/lib/types/index.mjs +1 -1
  155. package/{esm2022 → esm2020}/lib/types/item-transform.mjs +1 -1
  156. package/{esm2022 → esm2020}/lib/types/scroll-direction.mjs +1 -1
  157. package/{esm2022 → esm2020}/lib/types/selecting-mode.mjs +1 -1
  158. package/{esm2022 → esm2020}/lib/types/snap-to-item-align.mjs +1 -1
  159. package/{esm2022 → esm2020}/lib/types/snapping-distance.mjs +1 -1
  160. package/{esm2022 → esm2020}/lib/types/snapping-method.mjs +1 -1
  161. package/{esm2022 → esm2020}/lib/types/spreading-mode.mjs +1 -1
  162. package/{esm2022 → esm2020}/lib/types/text-direction.mjs +1 -1
  163. package/esm2020/lib/utils/animator/animator.mjs +80 -0
  164. package/{esm2022 → esm2020}/lib/utils/animator/const/index.mjs +1 -1
  165. package/{esm2022 → esm2020}/lib/utils/animator/ease.mjs +6 -6
  166. package/{esm2022 → esm2020}/lib/utils/animator/index.mjs +4 -4
  167. package/esm2020/lib/utils/animator/interfaces/animator-params.mjs +2 -0
  168. package/esm2020/lib/utils/animator/interfaces/animator-update-data.mjs +2 -0
  169. package/{esm2022 → esm2020}/lib/utils/animator/interfaces/index.mjs +1 -1
  170. package/esm2020/lib/utils/animator/types/easing.mjs +2 -0
  171. package/{esm2022 → esm2020}/lib/utils/animator/types/index.mjs +1 -1
  172. package/esm2020/lib/utils/buffer-interpolation.mjs +29 -0
  173. package/esm2020/lib/utils/cmap.mjs +34 -0
  174. package/esm2020/lib/utils/debounce.mjs +61 -0
  175. package/esm2020/lib/utils/disposable-component.mjs +29 -0
  176. package/esm2020/lib/utils/event-emitter/event-emitter.mjs +106 -0
  177. package/{esm2022 → esm2020}/lib/utils/event-emitter/index.mjs +2 -2
  178. package/esm2020/lib/utils/event-emitter/interfaces/event-emitter.mjs +2 -0
  179. package/{esm2022 → esm2020}/lib/utils/event-emitter/interfaces/index.mjs +1 -1
  180. package/esm2020/lib/utils/get-scroll-state-version.mjs +12 -0
  181. package/{esm2022 → esm2020}/lib/utils/get-selector-by-item-id.mjs +4 -4
  182. package/{esm2022 → esm2020}/lib/utils/index.mjs +4 -4
  183. package/esm2020/lib/utils/is-collapse-mode.mjs +18 -0
  184. package/{esm2022 → esm2020}/lib/utils/is-collection-mode.mjs +15 -15
  185. package/esm2020/lib/utils/is-direction.mjs +15 -0
  186. package/esm2020/lib/utils/is-persentage-value.mjs +14 -0
  187. package/esm2020/lib/utils/is-select-mode.mjs +18 -0
  188. package/{esm2022 → esm2020}/lib/utils/is-spreading-mode.mjs +15 -15
  189. package/esm2020/lib/utils/list-validators.mjs +27 -0
  190. package/esm2020/lib/utils/normalize-collection.mjs +42 -0
  191. package/esm2020/lib/utils/object.mjs +28 -0
  192. package/esm2020/lib/utils/parse-arithmetic-expression.mjs +53 -0
  193. package/esm2020/lib/utils/parse-float-or-persentage-value.mjs +17 -0
  194. package/esm2020/lib/utils/screen-reader-formatter.mjs +43 -0
  195. package/esm2020/lib/utils/scroll-event.mjs +46 -0
  196. package/esm2020/lib/utils/scrolling-direction.mjs +28 -0
  197. package/{esm2022 → esm2020}/lib/utils/snapping-method.mjs +8 -8
  198. package/esm2020/lib/utils/toggle-class-name.mjs +15 -0
  199. package/{esm2022 → esm2020}/lib/utils/validation.mjs +55 -55
  200. package/{esm2022 → esm2020}/ng-virtual-list.mjs +4 -4
  201. package/{esm2022 → esm2020}/public-api.mjs +19 -19
  202. package/fesm2015/ng-virtual-list.mjs +10731 -0
  203. package/fesm2015/ng-virtual-list.mjs.map +1 -0
  204. package/{fesm2022 → fesm2020}/ng-virtual-list.mjs +10451 -10455
  205. package/fesm2020/ng-virtual-list.mjs.map +1 -0
  206. package/index.d.ts +5 -5
  207. package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +83 -83
  208. package/lib/components/ng-list-item/base/index.d.ts +2 -2
  209. package/lib/components/ng-list-item/const/index.d.ts +3 -3
  210. package/lib/components/ng-list-item/interfaces/index.d.ts +2 -2
  211. package/lib/components/ng-list-item/interfaces/template-context.d.ts +42 -42
  212. package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +30 -30
  213. package/lib/components/ng-list-item/ng-virtual-list-item.module.d.ts +9 -9
  214. package/lib/components/ng-list-item/utils/create-display-id.d.ts +7 -7
  215. package/lib/components/ng-list-item/utils/get-element-by-index.d.ts +15 -15
  216. package/lib/components/ng-list-item/utils/index.d.ts +4 -4
  217. package/lib/components/ng-list-item/utils/matrix-3d.d.ts +7 -7
  218. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.d.ts +104 -104
  219. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.module.d.ts +10 -10
  220. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.d.ts +17 -17
  221. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.d.ts +9 -9
  222. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +62 -62
  223. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.d.ts +9 -9
  224. package/lib/components/ng-prerender-container/core/index.d.ts +2 -2
  225. package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +35 -35
  226. package/lib/components/ng-prerender-container/events/index.d.ts +6 -6
  227. package/lib/components/ng-prerender-container/interfaces/index.d.ts +2 -2
  228. package/lib/components/ng-prerender-container/interfaces/refresh-params.d.ts +17 -17
  229. package/lib/components/ng-prerender-container/ng-prerender-container.component.d.ts +40 -40
  230. package/lib/components/ng-prerender-container/ng-prerender-container.module.d.ts +9 -9
  231. package/lib/components/ng-prerender-container/types/cache.d.ts +13 -13
  232. package/lib/components/ng-prerender-container/types/index.d.ts +2 -2
  233. package/lib/components/ng-scroll-bar/const/index.d.ts +3 -3
  234. package/lib/components/ng-scroll-bar/enums/index.d.ts +2 -2
  235. package/lib/components/ng-scroll-bar/enums/scrollbar-states.d.ts +5 -5
  236. package/lib/components/ng-scroll-bar/interfaces/index.d.ts +3 -3
  237. package/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.d.ts +26 -26
  238. package/lib/components/ng-scroll-bar/interfaces/scrollbar-drag-data.d.ts +13 -13
  239. package/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.d.ts +16 -16
  240. package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +102 -102
  241. package/lib/components/ng-scroll-bar/ng-scroll-bar.module.d.ts +8 -8
  242. package/lib/components/ng-scroll-bar/ng-scroll-bar.service.d.ts +22 -22
  243. package/lib/components/ng-scroll-bar/types/index.d.ts +2 -2
  244. package/lib/components/ng-scroll-bar/types/scrollbar-state.d.ts +2 -2
  245. package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +89 -89
  246. package/lib/components/ng-scroll-view/const/index.d.ts +7 -7
  247. package/lib/components/ng-scroll-view/enums/index.d.ts +4 -4
  248. package/lib/components/ng-scroll-view/enums/scroller-direction.d.ts +10 -10
  249. package/lib/components/ng-scroll-view/enums/scroller-directions.d.ts +8 -8
  250. package/lib/components/ng-scroll-view/index.d.ts +5 -5
  251. package/lib/components/ng-scroll-view/interfaces/index.d.ts +2 -2
  252. package/lib/components/ng-scroll-view/interfaces/scroll-to-params.d.ts +22 -22
  253. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +124 -124
  254. package/lib/components/ng-scroll-view/utils/calculate-direction.d.ts +10 -7
  255. package/lib/components/ng-scroll-view/utils/calculate-velocity.d.ts +7 -7
  256. package/lib/components/ng-scroll-view/utils/get-dir.d.ts +7 -7
  257. package/lib/components/ng-scroll-view/utils/index.d.ts +5 -5
  258. package/lib/components/ng-scroll-view/utils/matrix-3d.d.ts +7 -7
  259. package/lib/components/ng-scroll-view/utils/scroll-box.d.ts +39 -39
  260. package/lib/components/ng-scroller/enums/index.d.ts +4 -4
  261. package/lib/components/ng-scroller/enums/scroller-direction.d.ts +4 -4
  262. package/lib/components/ng-scroller/enums/scroller-directions.d.ts +3 -3
  263. package/lib/components/ng-scroller/ng-scroller.component.d.ts +164 -164
  264. package/lib/components/ng-scroller/ng-scroller.module.d.ts +11 -11
  265. package/lib/components/ng-scroller/utils/index.d.ts +2 -2
  266. package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.d.ts +11 -0
  267. package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.d.ts +19 -0
  268. package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.d.ts +10 -0
  269. package/lib/components/ng-scroller/utils/interfaces/index.d.ts +4 -0
  270. package/lib/components/ng-scroller/utils/scroll-box.d.ts +23 -40
  271. package/lib/const/index.d.ts +153 -153
  272. package/lib/core/cache-map.d.ts +46 -46
  273. package/lib/core/const/index.d.ts +1 -1
  274. package/lib/core/enums/index.d.ts +2 -2
  275. package/lib/core/enums/item-display-methods.d.ts +12 -12
  276. package/lib/core/events/index.d.ts +2 -2
  277. package/lib/core/events/track-box-events.d.ts +10 -10
  278. package/lib/core/interfaces/get-item-position-options.d.ts +10 -10
  279. package/lib/core/interfaces/get-metrics-returns.d.ts +11 -11
  280. package/lib/core/interfaces/index.d.ts +8 -8
  281. package/lib/core/interfaces/item.d.ts +9 -9
  282. package/lib/core/interfaces/metrics.d.ts +51 -51
  283. package/lib/core/interfaces/recalculate-metrics-options.d.ts +33 -32
  284. package/lib/core/interfaces/update-collection-options.d.ts +10 -10
  285. package/lib/core/interfaces/update-collection-returns.d.ts +14 -14
  286. package/lib/core/track-box.d.ts +153 -153
  287. package/lib/core/tracker.d.ts +55 -55
  288. package/lib/core/types/cache-map-events.d.ts +8 -8
  289. package/lib/core/types/cache-map-listeners.d.ts +9 -9
  290. package/lib/core/types/cache.d.ts +12 -12
  291. package/lib/core/types/index.d.ts +6 -6
  292. package/lib/core/types/on-change-event-listener.d.ts +7 -7
  293. package/lib/core/types/on-tick-event-listener.d.ts +7 -7
  294. package/lib/core/utils/get-service-id-prop.d.ts +7 -7
  295. package/lib/core/utils/index.d.ts +2 -2
  296. package/lib/directives/index.d.ts +3 -3
  297. package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +29 -29
  298. package/lib/directives/locale-sensitive/locale-sensitive.module.d.ts +8 -8
  299. package/lib/directives/virtual-click/virtual-click.directive.d.ts +22 -22
  300. package/lib/directives/virtual-click/virtual-click.module.d.ts +8 -8
  301. package/lib/enums/alignments.d.ts +10 -10
  302. package/lib/enums/collapsing-modes.d.ts +20 -20
  303. package/lib/enums/collection-modes.d.ts +16 -16
  304. package/lib/enums/directions.d.ts +16 -16
  305. package/lib/enums/focus-alignments.d.ts +12 -12
  306. package/lib/enums/index.d.ts +11 -11
  307. package/lib/enums/selecting-modes-types.d.ts +20 -20
  308. package/lib/enums/selecting-modes.d.ts +20 -20
  309. package/lib/enums/snap-to-item-aligns.d.ts +20 -20
  310. package/lib/enums/snapping-methods.d.ts +16 -16
  311. package/lib/enums/spreading-modes.d.ts +16 -16
  312. package/lib/enums/text-directions.d.ts +12 -12
  313. package/lib/interfaces/animation-params.d.ts +14 -14
  314. package/lib/interfaces/base-virtual-list-item-component.d.ts +23 -23
  315. package/lib/interfaces/index.d.ts +11 -11
  316. package/lib/interfaces/item-transformation.d.ts +22 -22
  317. package/lib/interfaces/point.d.ts +16 -16
  318. package/lib/interfaces/rect.d.ts +17 -17
  319. package/lib/interfaces/render-stabilizer-options.d.ts +12 -12
  320. package/lib/interfaces/scroll-event.d.ts +58 -58
  321. package/lib/interfaces/scroll-options.d.ts +28 -28
  322. package/lib/interfaces/scroll-params.d.ts +17 -17
  323. package/lib/interfaces/scroll-to-params.d.ts +7 -7
  324. package/lib/interfaces/scrolling-settings.d.ts +38 -38
  325. package/lib/interfaces/size.d.ts +16 -16
  326. package/lib/models/collection.model.d.ts +9 -9
  327. package/lib/models/component.model.d.ts +3 -3
  328. package/lib/models/display-object-config.model.d.ts +21 -21
  329. package/lib/models/display-object-measures.model.d.ts +45 -45
  330. package/lib/models/index.d.ts +9 -9
  331. package/lib/models/item-config-map.model.d.ts +35 -35
  332. package/lib/models/item.model.d.ts +17 -17
  333. package/lib/models/render-collection.model.d.ts +9 -9
  334. package/lib/models/render-item-config.model.d.ts +119 -119
  335. package/lib/models/render-item-measures.model.d.ts +116 -116
  336. package/lib/models/render-item.model.d.ts +40 -40
  337. package/lib/ng-virtual-list-public.service.d.ts +92 -92
  338. package/lib/ng-virtual-list.component.d.ts +771 -770
  339. package/lib/ng-virtual-list.module.d.ts +12 -12
  340. package/lib/ng-virtual-list.service.d.ts +153 -153
  341. package/lib/transformations/deck-of-cards-3d.d.ts +54 -54
  342. package/lib/transformations/deck-of-cards.d.ts +50 -50
  343. package/lib/transformations/event-horizon.d.ts +26 -26
  344. package/lib/transformations/index.d.ts +7 -7
  345. package/lib/transformations/linear.d.ts +26 -26
  346. package/lib/transformations/swipe-3d.d.ts +38 -38
  347. package/lib/types/alignment.d.ts +8 -8
  348. package/lib/types/arithmetic-expression.d.ts +10 -10
  349. package/lib/types/collapsing-mode.d.ts +8 -8
  350. package/lib/types/collection-mode.d.ts +8 -8
  351. package/lib/types/color.d.ts +4 -4
  352. package/lib/types/direction.d.ts +8 -8
  353. package/lib/types/float-or-persentage-value.d.ts +7 -7
  354. package/lib/types/focus-alignment.d.ts +8 -8
  355. package/lib/types/focus-item-params.d.ts +13 -13
  356. package/lib/types/gradient-color-position.d.ts +7 -7
  357. package/lib/types/gradient-color-positions.d.ts +8 -8
  358. package/lib/types/id.d.ts +7 -7
  359. package/lib/types/index.d.ts +20 -20
  360. package/lib/types/item-transform.d.ts +9 -9
  361. package/lib/types/scroll-direction.d.ts +8 -8
  362. package/lib/types/selecting-mode.d.ts +8 -8
  363. package/lib/types/snap-to-item-align.d.ts +8 -8
  364. package/lib/types/snapping-distance.d.ts +8 -8
  365. package/lib/types/snapping-method.d.ts +10 -10
  366. package/lib/types/spreading-mode.d.ts +8 -8
  367. package/lib/types/text-direction.d.ts +10 -10
  368. package/lib/utils/animator/animator.d.ts +16 -16
  369. package/lib/utils/animator/const/index.d.ts +1 -1
  370. package/lib/utils/animator/ease.d.ts +2 -2
  371. package/lib/utils/animator/index.d.ts +6 -6
  372. package/lib/utils/animator/interfaces/animator-params.d.ts +18 -18
  373. package/lib/utils/animator/interfaces/animator-update-data.d.ts +13 -13
  374. package/lib/utils/animator/interfaces/index.d.ts +3 -3
  375. package/lib/utils/animator/types/easing.d.ts +7 -7
  376. package/lib/utils/animator/types/index.d.ts +2 -2
  377. package/lib/utils/buffer-interpolation.d.ts +5 -5
  378. package/lib/utils/cmap.d.ts +16 -16
  379. package/lib/utils/debounce.d.ts +25 -25
  380. package/lib/utils/disposable-component.d.ts +15 -15
  381. package/lib/utils/event-emitter/event-emitter.d.ts +42 -42
  382. package/lib/utils/event-emitter/index.d.ts +4 -4
  383. package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +37 -37
  384. package/lib/utils/event-emitter/interfaces/index.d.ts +2 -2
  385. package/lib/utils/get-scroll-state-version.d.ts +1 -1
  386. package/lib/utils/get-selector-by-item-id.d.ts +2 -2
  387. package/lib/utils/index.d.ts +6 -6
  388. package/lib/utils/is-collapse-mode.d.ts +8 -8
  389. package/lib/utils/is-collection-mode.d.ts +8 -8
  390. package/lib/utils/is-direction.d.ts +8 -8
  391. package/lib/utils/is-persentage-value.d.ts +7 -7
  392. package/lib/utils/is-select-mode.d.ts +8 -8
  393. package/lib/utils/is-spreading-mode.d.ts +8 -8
  394. package/lib/utils/list-validators.d.ts +2 -2
  395. package/lib/utils/normalize-collection.d.ts +8 -8
  396. package/lib/utils/object.d.ts +4 -4
  397. package/lib/utils/parse-arithmetic-expression.d.ts +8 -8
  398. package/lib/utils/parse-float-or-persentage-value.d.ts +7 -7
  399. package/lib/utils/screen-reader-formatter.d.ts +7 -4
  400. package/lib/utils/scroll-event.d.ts +48 -48
  401. package/lib/utils/scrolling-direction.d.ts +17 -17
  402. package/lib/utils/snapping-method.d.ts +3 -3
  403. package/lib/utils/toggle-class-name.d.ts +7 -7
  404. package/lib/utils/validation.d.ts +35 -35
  405. package/package.json +11 -5
  406. package/public-api.d.ts +16 -16
  407. package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +0 -315
  408. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +0 -200
  409. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +0 -279
  410. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +0 -94
  411. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +0 -142
  412. package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +0 -198
  413. package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +0 -93
  414. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar-public.service.mjs +0 -25
  415. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +0 -324
  416. package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +0 -262
  417. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +0 -859
  418. package/esm2022/lib/components/ng-scroll-view/utils/calculate-direction.mjs +0 -17
  419. package/esm2022/lib/components/ng-scroll-view/utils/scroll-box.mjs +0 -45
  420. package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +0 -525
  421. package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +0 -52
  422. package/esm2022/lib/core/cache-map.mjs +0 -101
  423. package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +0 -2
  424. package/esm2022/lib/core/track-box.mjs +0 -1353
  425. package/esm2022/lib/core/tracker.mjs +0 -207
  426. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +0 -68
  427. package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +0 -67
  428. package/esm2022/lib/ng-virtual-list-public.service.mjs +0 -120
  429. package/esm2022/lib/ng-virtual-list.component.mjs +0 -3246
  430. package/esm2022/lib/ng-virtual-list.service.mjs +0 -431
  431. package/esm2022/lib/transformations/deck-of-cards-3d.mjs +0 -57
  432. package/esm2022/lib/transformations/deck-of-cards.mjs +0 -54
  433. package/esm2022/lib/transformations/event-horizon.mjs +0 -47
  434. package/esm2022/lib/transformations/linear.mjs +0 -47
  435. package/esm2022/lib/transformations/swipe-3d.mjs +0 -51
  436. package/esm2022/lib/utils/animator/animator.mjs +0 -78
  437. package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +0 -2
  438. package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +0 -2
  439. package/esm2022/lib/utils/animator/types/easing.mjs +0 -2
  440. package/esm2022/lib/utils/buffer-interpolation.mjs +0 -29
  441. package/esm2022/lib/utils/cmap.mjs +0 -34
  442. package/esm2022/lib/utils/debounce.mjs +0 -61
  443. package/esm2022/lib/utils/disposable-component.mjs +0 -27
  444. package/esm2022/lib/utils/event-emitter/event-emitter.mjs +0 -105
  445. package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +0 -2
  446. package/esm2022/lib/utils/get-scroll-state-version.mjs +0 -12
  447. package/esm2022/lib/utils/is-collapse-mode.mjs +0 -18
  448. package/esm2022/lib/utils/is-direction.mjs +0 -15
  449. package/esm2022/lib/utils/is-persentage-value.mjs +0 -14
  450. package/esm2022/lib/utils/is-select-mode.mjs +0 -18
  451. package/esm2022/lib/utils/list-validators.mjs +0 -27
  452. package/esm2022/lib/utils/normalize-collection.mjs +0 -42
  453. package/esm2022/lib/utils/object.mjs +0 -28
  454. package/esm2022/lib/utils/parse-arithmetic-expression.mjs +0 -53
  455. package/esm2022/lib/utils/parse-float-or-persentage-value.mjs +0 -17
  456. package/esm2022/lib/utils/screen-reader-formatter.mjs +0 -43
  457. package/esm2022/lib/utils/scroll-event.mjs +0 -48
  458. package/esm2022/lib/utils/scrolling-direction.mjs +0 -29
  459. package/esm2022/lib/utils/toggle-class-name.mjs +0 -15
  460. package/fesm2022/ng-virtual-list.mjs.map +0 -1
@@ -1,207 +0,0 @@
1
- import { CMap } from "../utils/cmap";
2
- import { SERVICE_PROP_DUMMY, SERVICE_PROP_DUMMY_ENABLED } from "../const";
3
- import { getServiceIdProp } from "./utils";
4
- /**
5
- * Tracks display items by property
6
- * Maximum performance for extremely large lists.
7
- * It is based on algorithms for virtualization of screen objects.
8
- * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/core/tracker.ts
9
- * @author Evgenii Alexandrovich Grebennikov
10
- * @email djonnyx@gmail.com
11
- */
12
- export class Tracker {
13
- /**
14
- * display objects dictionary of indexes by id
15
- */
16
- _displayObjectIndexMapById = {};
17
- set displayObjectIndexMapById(v) {
18
- if (this._displayObjectIndexMapById === v) {
19
- return;
20
- }
21
- this._displayObjectIndexMapById = v;
22
- }
23
- get displayObjectIndexMapById() {
24
- return this._displayObjectIndexMapById;
25
- }
26
- /**
27
- * Dictionary displayItems propertyNameId by items propertyNameId
28
- */
29
- _trackMap = new CMap();
30
- get trackMap() {
31
- return this._trackMap;
32
- }
33
- _trackingPropertyName;
34
- set trackingPropertyName(v) {
35
- this._trackingPropertyName = v;
36
- }
37
- constructor(trackingPropertyName) {
38
- this._trackingPropertyName = trackingPropertyName;
39
- }
40
- tearOutSnapedDisplayObjectByItemId = (itemId, snappedComponents) => {
41
- if (!snappedComponents || snappedComponents?.length === 0) {
42
- return null;
43
- }
44
- const index = snappedComponents?.findIndex(comp => comp?.instance?.itemId === itemId);
45
- if (index > -1) {
46
- const comp = snappedComponents[index];
47
- snappedComponents.splice(index, 1);
48
- return comp;
49
- }
50
- return snappedComponents.shift() ?? null;
51
- };
52
- /**
53
- * tracking by propName
54
- */
55
- track(items, components, snappedComponents, direction, trackBy) {
56
- if (!items) {
57
- return;
58
- }
59
- const untrackedItems = [...components], newTrackItems = [], untrackedComponentsByTypeMap = {}, isDown = direction === 0 || direction === 1, snapped = !!snappedComponents ? [...snappedComponents] : [];
60
- let isRegularSnapped = false;
61
- const serviceIdProp = getServiceIdProp(trackBy);
62
- for (let i = isDown ? 0 : items.length - 1, l = isDown ? items.length : 0; isDown ? i < l : i >= l; isDown ? i++ : i--) {
63
- const item = items[i], isDummy = item?.data?.[SERVICE_PROP_DUMMY] && (item?.data?.[SERVICE_PROP_DUMMY] === SERVICE_PROP_DUMMY_ENABLED);
64
- if (isDummy) {
65
- continue;
66
- }
67
- const itemTrackingProperty = item[serviceIdProp] ?? item[trackBy];
68
- let snappedComponent;
69
- if (this._trackMap) {
70
- if (this._trackMap.has(itemTrackingProperty)) {
71
- const diId = this._trackMap.get(itemTrackingProperty), compIndex = this._displayObjectIndexMapById[diId], comp = components[compIndex] ?? null, data = item?.data, compId = comp?.instance?.id ?? null;
72
- if (comp !== null && compId === diId && compId !== null && data?.[SERVICE_PROP_DUMMY] !== SERVICE_PROP_DUMMY_ENABLED) {
73
- const indexByUntrackedItems = untrackedItems.findIndex(v => {
74
- return v.instance.id === compId;
75
- });
76
- if (indexByUntrackedItems > -1) {
77
- if (item.config.snapped || item.config.snappedOut) {
78
- if (snapped.length > 0) {
79
- snappedComponent = this.tearOutSnapedDisplayObjectByItemId(item.id, snapped);
80
- if (!!snappedComponent) {
81
- isRegularSnapped = true;
82
- snappedComponent.instance.item = item;
83
- snappedComponent.instance.show();
84
- }
85
- }
86
- }
87
- if (!!snappedComponent) {
88
- if (item.config.snapped || item.config.snappedOut) {
89
- comp.instance.item = null;
90
- comp.instance.hide();
91
- }
92
- else {
93
- comp.instance.item = item;
94
- comp.instance.show();
95
- }
96
- }
97
- else {
98
- comp.instance.item = item;
99
- comp.instance.show();
100
- }
101
- untrackedItems.splice(indexByUntrackedItems, 1);
102
- continue;
103
- }
104
- }
105
- }
106
- else {
107
- this._trackMap.delete(itemTrackingProperty);
108
- }
109
- }
110
- if (untrackedItems.length > 0) {
111
- newTrackItems.push(item);
112
- }
113
- }
114
- if (untrackedItems.length > 0) {
115
- for (let i = 0, l = untrackedItems.length; i < l; i++) {
116
- const comp = untrackedItems[i], type = comp?.instance.item?.data?.type;
117
- if (!untrackedComponentsByTypeMap[type]) {
118
- untrackedComponentsByTypeMap[type] = [];
119
- }
120
- untrackedComponentsByTypeMap[type].push({ comp, index: i });
121
- }
122
- }
123
- for (let i = 0, l = newTrackItems.length; i < l; i++) {
124
- let snappedComponent;
125
- if (untrackedItems.length > 0) {
126
- const item = newTrackItems[i], itemTrackingProperty = item.id, type = item.data?.type;
127
- let comp;
128
- if (type) {
129
- const list = untrackedComponentsByTypeMap[type];
130
- if (!!list && list.length > 0) {
131
- const untrackedItem = list.shift();
132
- if (untrackedItem) {
133
- comp = untrackedItem.comp;
134
- untrackedItems.slice(untrackedItem.index, 1);
135
- }
136
- }
137
- }
138
- if (!comp) {
139
- comp = untrackedItems.shift();
140
- }
141
- if (comp) {
142
- if (item.config.snapped || item.config.snappedOut) {
143
- if (snapped.length > 0) {
144
- snappedComponent = this.tearOutSnapedDisplayObjectByItemId(item.id, snapped);
145
- isRegularSnapped = true;
146
- if (!!snappedComponent) {
147
- snappedComponent.instance.item = item;
148
- snappedComponent.instance.show();
149
- }
150
- }
151
- }
152
- if (!!snappedComponent) {
153
- if (item.config.snapped || item.config.snappedOut) {
154
- comp.instance.item = null;
155
- comp.instance.hide();
156
- }
157
- else {
158
- comp.instance.item = item;
159
- comp.instance.show();
160
- }
161
- }
162
- else {
163
- comp.instance.item = item;
164
- comp.instance.show();
165
- }
166
- if (this._trackMap) {
167
- this._trackMap.set(itemTrackingProperty, comp.instance.id);
168
- }
169
- }
170
- }
171
- }
172
- if (untrackedItems.length) {
173
- for (let i = 0, l = untrackedItems.length; i < l; i++) {
174
- const comp = untrackedItems[i];
175
- comp.instance.item = null;
176
- comp.instance.hide();
177
- }
178
- }
179
- if (!isRegularSnapped) {
180
- for (let i = 0, l = snapped.length; i < l; i++) {
181
- const snappedComponent = snapped[i];
182
- if (!!snappedComponent) {
183
- snappedComponent.instance.item = null;
184
- snappedComponent.instance.hide();
185
- }
186
- }
187
- }
188
- }
189
- untrackComponentByIdProperty(component) {
190
- if (!component) {
191
- return;
192
- }
193
- const propertyIdName = this._trackingPropertyName;
194
- if (this._trackMap && component[propertyIdName] !== undefined) {
195
- this._trackMap.delete(propertyIdName);
196
- }
197
- }
198
- clearTrackMap() {
199
- this._trackMap.clear();
200
- }
201
- dispose() {
202
- if (this._trackMap) {
203
- this._trackMap.clear();
204
- }
205
- }
206
- }
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvcmUvdHJhY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFhM0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQ2hCOztPQUVHO0lBQ08sMEJBQTBCLEdBQTZCLEVBQUUsQ0FBQztJQUVwRSxJQUFJLHlCQUF5QixDQUFDLENBQTJCO1FBQ3JELElBQUksSUFBSSxDQUFDLDBCQUEwQixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDekIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ08sU0FBUyxHQUFHLElBQUksSUFBSSxFQUE4QixDQUFDO0lBRTdELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRVMscUJBQXFCLENBQVU7SUFFekMsSUFBSSxvQkFBb0IsQ0FBQyxDQUFTO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksb0JBQTRCO1FBQ3BDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztJQUN0RCxDQUFDO0lBRU8sa0NBQWtDLEdBQUcsQ0FBQyxNQUFVLEVBQUUsaUJBQTRELEVBQzNGLEVBQUU7UUFDekIsSUFBSSxD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QVMsSUFBSyxTQUFpQixDQUFDLGNBQWMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTY3JvbGxEaXJlY3Rpb24gfSBmcm9tIFwiLi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0Q29sbGVjdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvcmVuZGVyLWNvbGxlY3Rpb24ubW9kZWxcIjtcclxuaW1wb3J0IHsgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9iYXNlXCI7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IElkIH0gZnJvbSBcIi4uL3R5cGVzXCI7XHJcbmltcG9ydCB7IENNYXAgfSBmcm9tIFwiLi4vdXRpbHMvY21hcFwiO1xyXG5pbXBvcnQgeyBTRVJWSUNFX1BST1BfRFVNTVksIFNFUlZJQ0VfUFJPUF9EVU1NWV9FTkFCTEVEIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IGdldFNlcnZpY2VJZFByb3AgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxudHlwZSBUcmFja2luZ1Byb3BlcnR5SWQgPSBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ8SSA9IGFueT4ge1xyXG4gICAgZ2V0Qm91bmRzKCk6IElTaXplO1xyXG4gICAgaXRlbUlkOiBJZDtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBpdGVtOiBJIHwgbnVsbDtcclxuICAgIHNob3c6ICgpID0+IHZvaWQ7XHJcbiAgICBoaWRlOiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG4vKipcclxuICogVHJhY2tzIGRpc3BsYXkgaXRlbXMgYnkgcHJvcGVydHlcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb3JlL3RyYWNrZXIudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVHJhY2tlcjxDIGV4dGVuZHMgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCA9IGFueT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBkaXNwbGF5IG9iamVjdHMgZGljdGlvbmFyeSBvZiBpbmRleGVzIGJ5IGlkXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZDogeyBbaWQ6IG51bWJlcl06IG51bWJlciB9ID0ge307XHJcblxyXG4gICAgc2V0IGRpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQodjogeyBbaWQ6IG51bWJlcl06IG51bWJlciB9KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQgPT09IHYpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZCA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaWN0aW9uYXJ5IGRpc3BsYXlJdGVtcyBwcm9wZXJ0eU5hbWVJZCBieSBpdGVtcyBwcm9wZXJ0eU5hbWVJZFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3RyYWNrTWFwID0gbmV3IENNYXA8VHJhY2tpbmdQcm9wZXJ0eUlkLCBudW1iZXI+KCk7XHJcblxyXG4gICAgZ2V0IHRyYWNrTWFwKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFja01hcDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3RyYWNraW5nUHJvcGVydHlOYW1lITogc3RyaW5nO1xyXG5cclxuICAgIHNldCB0cmFja2luZ1Byb3BlcnR5TmFtZSh2OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZSA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IodHJhY2tpbmdQcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3RyYWNraW5nUHJvcGVydHlOYW1lID0gdHJhY2tpbmdQcm9wZXJ0eU5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0ZWFyT3V0U25hcGVkRGlzcGxheU9iamVjdEJ5SXRlbUlkID0gKGl0ZW1JZDogSWQsIHNuYXBwZWRDb21wb25lbnRzOiBBcnJheTxDb21wb25lbnRSZWY8Qz4+IHwgbnVsbCB8IHVuZGVmaW5lZCk6XHJcbiAgICAgICAgQ29tcG9uZW50UmVmPEM+IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgaWYgKCFzbmFwcGVkQ29tcG9uZW50cyB8fCBzbmFwcGVkQ29tcG9uZW50cz8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpbmRleCA9IHNuYXBwZWRDb21wb25lbnRzPy5maW5kSW5kZXgoY29tcCA9PiBjb21wPy5pbnN0YW5jZT8uaXRlbUlkID09PSBpdGVtSWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXAgPSBzbmFwcGVkQ29tcG9uZW50c1tpbmRleF07XHJcbiAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjb21wO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc25hcHBlZENvbXBvbmVudHMuc2hpZnQoKSA/PyBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdHJhY2tpbmcgYnkgcHJvcE5hbWVcclxuICAgICAqL1xyXG4gICAgdHJhY2soaXRlbXM6IElSZW5kZXJWaXJ0dWFsTGlzdENvbGxlY3Rpb24sIGNvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlZjxDPj4sIHNuYXBwZWRDb21wb25lbnRzOiBBcnJheTxDb21wb25lbnRSZWY8Qz4+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbiwgdHJhY2tCeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpdGVtcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1bnRyYWNrZWRJdGVtcyA9IFsuLi5jb21wb25lbnRzXSwgbmV3VHJhY2tJdGVtczogQXJyYXk8YW55PiA9IFtdLFxyXG4gICAgICAgICAgICB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwOiB7IFt0eXBlOiBzdHJpbmddOiBBcnJheTx7IGNvbXA6IENvbXBvbmVudFJlZjxDPjsgaW5kZXg6IG51bWJlciB9PjsgfSA9IHt9LFxyXG4gICAgICAgICAgICBpc0Rvd24gPSBkaXJlY3Rpb24gPT09IDAgfHwgZGlyZWN0aW9uID09PSAxLCBzbmFwcGVkID0gISFzbmFwcGVkQ29tcG9uZW50cyA/IFsuLi5zbmFwcGVkQ29tcG9uZW50c10gOiBbXTtcclxuICAgICAgICBsZXQgaXNSZWd1bGFyU25hcHBlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBzZXJ2aWNlSWRQcm9wID0gZ2V0U2VydmljZUlkUHJvcCh0cmFja0J5KTtcclxuICAgICAgICBmb3IgKGxldCBpID0gaXNEb3duID8gMCA6IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSBpc0Rvd24gPyBpdGVtcy5sZW5ndGggOiAwOyBpc0Rvd24gPyBpIDwgbCA6IGkgPj0gbDsgaXNEb3duID8gaSsrIDogaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXSxcclxuICAgICAgICAgICAgICAgIGlzRHVtbXkgPSBpdGVtPy5kYXRhPy5bU0VSVklDRV9QUk9QX0RVTU1ZXSAmJiAoaXRlbT8uZGF0YT8uW1NFUlZJQ0VfUFJPUF9EVU1NWV0gPT09IFNFUlZJQ0VfUFJPUF9EVU1NWV9FTkFCTEVEKTtcclxuICAgICAgICAgICAgaWYgKGlzRHVtbXkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1UcmFja2luZ1Byb3BlcnR5ID0gKGl0ZW0gYXMgYW55KVtzZXJ2aWNlSWRQcm9wXSA/PyAoaXRlbSBhcyBhbnkpW3RyYWNrQnldO1xyXG4gICAgICAgICAgICBsZXQgc25hcHBlZENvbXBvbmVudDogQ29tcG9uZW50UmVmPEM+IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXAuaGFzKGl0ZW1UcmFja2luZ1Byb3BlcnR5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpSWQgPSB0aGlzLl90cmFja01hcC5nZXQoaXRlbVRyYWNraW5nUHJvcGVydHkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wSW5kZXggPSB0aGlzLl9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkW2RpSWRdLCBjb21wID0gY29tcG9uZW50c1tjb21wSW5kZXhdID8/IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBpdGVtPy5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wSWQgPSBjb21wPy5pbnN0YW5jZT8uaWQgPz8gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPT0gbnVsbCAmJiBjb21wSWQgPT09IGRpSWQgJiYgY29tcElkICE9PSBudWxsICYmIGRhdGE/LltTRVJWSUNFX1BST1BfRFVNTVldICE9PSBTRVJWSUNFX1BST1BfRFVNTVlfRU5BQkxFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleEJ5VW50cmFja2VkSXRlbXMgPSB1bnRyYWNrZWRJdGVtcy5maW5kSW5kZXgodiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi5pbnN0YW5jZS5pZCA9PT0gY29tcElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4QnlVbnRyYWNrZWRJdGVtcyA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb25maWcuc25hcHBlZCB8fCBpdGVtLmNvbmZpZy5zbmFwcGVkT3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNuYXBwZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwcGVkQ29tcG9uZW50ID0gdGhpcy50ZWFyT3V0U25hcGVkRGlzcGxheU9iamVjdEJ5SXRlbUlkKGl0ZW0uaWQsIHNuYXBwZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFzbmFwcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ3VsYXJTbmFwcGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwcGVkQ29tcG9uZW50Lmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFzbmFwcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29uZmlnLnNuYXBwZWQgfHwgaXRlbS5jb25maWcuc25hcHBlZE91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLml0ZW0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLml0ZW0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWRJdGVtcy5zcGxpY2UoaW5kZXhCeVVudHJhY2tlZEl0ZW1zLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFja01hcC5kZWxldGUoaXRlbVRyYWNraW5nUHJvcGVydHkpO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld1RyYWNrSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB1bnRyYWNrZWRJdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXAgPSB1bnRyYWNrZWRJdGVtc1tpXSwgdHlwZSA9IGNvbXA/Lmluc3RhbmNlLml0ZW0/LmRhdGE/LnR5cGU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXVudHJhY2tlZENvbXBvbmVudHNCeVR5cGVNYXBbdHlwZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwW3R5cGVdID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwW3R5cGVdLnB1c2goeyBjb21wLCBpbmRleDogaSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBuZXdUcmFja0l0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgc25hcHBlZENvbXBvbmVudDogQ29tcG9uZW50UmVmPEM+IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXdUcmFja0l0ZW1zW2ldLCBpdGVtVHJhY2tpbmdQcm9wZXJ0eSA9IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGl0ZW0uZGF0YT8udHlwZTtcclxuICAgICAgICAgICAgICAgIGxldCBjb21wOiBDb21wb25lbnRSZWY8Qz4gfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSB1bnRyYWNrZWRDb21wb25lbnRzQnlUeXBlTWFwW3R5cGVdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghIWxpc3QgJiYgbGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVudHJhY2tlZEl0ZW0gPSBsaXN0LnNoaWZ0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bnRyYWNrZWRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wID0gdW50cmFja2VkSXRlbS5jb21wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50cmFja2VkSXRlbXMuc2xpY2UodW50cmFja2VkSXRlbS5pbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFjb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcCA9IHVudHJhY2tlZEl0ZW1zLnNoaWZ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb25maWcuc25hcHBlZCB8fCBpdGVtLmNvbmZpZy5zbmFwcGVkT3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbmFwcGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQgPSB0aGlzLnRlYXJPdXRTbmFwZWREaXNwbGF5T2JqZWN0QnlJdGVtSWQoaXRlbS5pZCwgc25hcHBlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ3VsYXJTbmFwcGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXNuYXBwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwcGVkQ29tcG9uZW50Lmluc3RhbmNlLml0ZW0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghIXNuYXBwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uY29uZmlnLnNuYXBwZWQgfHwgaXRlbS5jb25maWcuc25hcHBlZE91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhY2tNYXAuc2V0KGl0ZW1UcmFja2luZ1Byb3BlcnR5LCBjb21wLmluc3RhbmNlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh1bnRyYWNrZWRJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB1bnRyYWNrZWRJdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXAgPSB1bnRyYWNrZWRJdGVtc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaXRlbSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFpc1JlZ3VsYXJTbmFwcGVkKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gc25hcHBlZC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNuYXBwZWRDb21wb25lbnQgPSBzbmFwcGVkW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKCEhc25hcHBlZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNuYXBwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgc25hcHBlZENvbXBvbmVudC5pbnN0YW5jZS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW50cmFja0NvbXBvbmVudEJ5SWRQcm9wZXJ0eShjb21wb25lbnQ/OiBDKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJvcGVydHlJZE5hbWUgPSB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwICYmIChjb21wb25lbnQgYXMgYW55KVtwcm9wZXJ0eUlkTmFtZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl90cmFja01hcC5kZWxldGUocHJvcGVydHlJZE5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhclRyYWNrTWFwKCkge1xyXG4gICAgICAgIHRoaXMuX3RyYWNrTWFwLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcG9zZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXApIHtcclxuICAgICAgICAgICAgdGhpcy5fdHJhY2tNYXAuY2xlYXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,68 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { BehaviorSubject, combineLatest, Subject, takeUntil, tap } from 'rxjs';
3
- import { TextDirections } from '../../enums';
4
- import { ScrollerDirection } from '../../components/ng-scroller/enums';
5
- import { isDirection } from '../../utils/is-direction';
6
- import * as i0 from "@angular/core";
7
- const RIGHT = 'right', DIR = 'dir';
8
- /**
9
- * LocaleSensitiveDirective
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/directives/locale-sensitive/locale-sensitive.directive.ts
13
- * @author Evgenii Alexandrovich Grebennikov
14
- * @email djonnyx@gmail.com
15
- */
16
- export class LocaleSensitiveDirective {
17
- _elementRef;
18
- _$unsubscribe = new Subject();
19
- _$langTextDir = new BehaviorSubject(TextDirections.LTR);
20
- $langTextDir = this._$langTextDir.asObservable();
21
- set langTextDir(v) {
22
- this._$langTextDir.next(v);
23
- }
24
- get langTextDir() { return this._$langTextDir.getValue(); }
25
- _$listDir = new BehaviorSubject(ScrollerDirection.VERTICAL);
26
- $listDir = this._$listDir.asObservable();
27
- set listDir(v) {
28
- this._$listDir.next(v);
29
- }
30
- get listDir() { return this._$listDir.getValue(); }
31
- constructor(_elementRef) {
32
- this._elementRef = _elementRef;
33
- const $langTextDir = this.$langTextDir, $listDir = this.$listDir;
34
- combineLatest([$langTextDir, $listDir]).pipe(takeUntil(this._$unsubscribe), tap(([dir, listDir]) => {
35
- const element = this._elementRef.nativeElement, isVertical = isDirection(listDir, ScrollerDirection.VERTICAL);
36
- element.setAttribute(DIR, isVertical ? dir : TextDirections.LTR);
37
- if (dir === TextDirections.RTL && isVertical) {
38
- element.style.textAlign = RIGHT;
39
- element.classList.add(TextDirections.RTL);
40
- element.classList.remove(TextDirections.LTR);
41
- }
42
- else {
43
- element.classList.add(TextDirections.LTR);
44
- element.classList.remove(TextDirections.RTL);
45
- }
46
- })).subscribe();
47
- }
48
- ngOnDestroy() {
49
- if (this._$unsubscribe) {
50
- this._$unsubscribe.next();
51
- this._$unsubscribe.complete();
52
- }
53
- }
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleSensitiveDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
55
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: LocaleSensitiveDirective, selector: "[localeSensitive]", inputs: { langTextDir: "langTextDir", listDir: "listDir" }, ngImport: i0 });
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LocaleSensitiveDirective, decorators: [{
58
- type: Directive,
59
- args: [{
60
- selector: '[localeSensitive]',
61
- standalone: false,
62
- }]
63
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { langTextDir: [{
64
- type: Input
65
- }], listDir: [{
66
- type: Input
67
- }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLXNlbnNpdGl2ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL2xvY2FsZS1zZW5zaXRpdmUvbG9jYWxlLXNlbnNpdGl2ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sb0NBQW9DLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUd2RCxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQ25CLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFFZDs7Ozs7OztHQU9HO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQXNCZjtJQXJCVixhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV0QyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQWdCLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUxRCxJQUNJLFdBQVcsQ0FBQyxDQUFnQjtRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUduRCxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQTRCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RGLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxELElBQ0ksT0FBTyxDQUFDLENBQTRCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5ELFlBQW9CLFdBQW9DO1FBQXBDLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUN0RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUNwQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUUzQixhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUE0QixFQUMzRCxVQUFVLEdBQUcsV0FBVyxDQUFDLE9BQVEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pFLElBQUksR0FBRyxLQUFLLGNBQWMsQ0FBQyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDaEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO3dHQWpEVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsS0FBSztpQkFDbEI7K0VBUUssV0FBVztzQkFEZCxLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBTY3JvbGxlckRpcmVjdGlvbiwgU2Nyb2xsZXJEaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9uZy1zY3JvbGxlci9lbnVtcyc7XHJcbmltcG9ydCB7IGlzRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvaXMtZGlyZWN0aW9uJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuXHJcbmNvbnN0IFJJR0hUID0gJ3JpZ2h0JyxcclxuICBESVIgPSAnZGlyJztcclxuXHJcbi8qKlxyXG4gKiBMb2NhbGVTZW5zaXRpdmVEaXJlY3RpdmVcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL2xvY2FsZS1zZW5zaXRpdmUvbG9jYWxlLXNlbnNpdGl2ZS5kaXJlY3RpdmUudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tsb2NhbGVTZW5zaXRpdmVdJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvY2FsZVNlbnNpdGl2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJvdGVjdGVkIF8kdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBwcml2YXRlIF8kbGFuZ1RleHREaXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRleHREaXJlY3Rpb24+KFRleHREaXJlY3Rpb25zLkxUUik7XHJcbiAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsYW5nVGV4dERpcih2OiBUZXh0RGlyZWN0aW9uKSB7XHJcbiAgICB0aGlzLl8kbGFuZ1RleHREaXIubmV4dCh2KTtcclxuICB9XHJcbiAgZ2V0IGxhbmdUZXh0RGlyKCkgeyByZXR1cm4gdGhpcy5fJGxhbmdUZXh0RGlyLmdldFZhbHVlKCk7IH1cclxuXHJcblxyXG4gIHByaXZhdGUgXyRsaXN0RGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY3JvbGxlckRpcmVjdGlvbnMgfCBudWxsPihTY3JvbGxlckRpcmVjdGlvbi5WRVJUSUNBTCk7XHJcbiAgcmVhZG9ubHkgJGxpc3REaXIgPSB0aGlzLl8kbGlzdERpci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbGlzdERpcih2OiBTY3JvbGxlckRpcmVjdGlvbnMgfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kbGlzdERpci5uZXh0KHYpO1xyXG4gIH1cclxuICBnZXQgbGlzdERpcigpIHsgcmV0dXJuIHRoaXMuXyRsaXN0RGlyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcclxuICAgIGNvbnN0ICRsYW5nVGV4dERpciA9IHRoaXMuJGxhbmdUZXh0RGlyLFxyXG4gICAgICAkbGlzdERpciA9IHRoaXMuJGxpc3REaXI7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGxhbmdUZXh0RGlyLCAkbGlzdERpcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtkaXIsIGxpc3REaXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgIGlzVmVydGljYWwgPSBpc0RpcmVjdGlvbihsaXN0RGlyISwgU2Nyb2xsZXJEaXJlY3Rpb24uVkVSVElDQUwpO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKERJUiwgaXNWZXJ0aWNhbCA/IGRpciA6IFRleHREaXJlY3Rpb25zLkxUUik7XHJcbiAgICAgICAgaWYgKGRpciA9PT0gVGV4dERpcmVjdGlvbnMuUlRMICYmIGlzVmVydGljYWwpIHtcclxuICAgICAgICAgIGVsZW1lbnQuc3R5bGUudGV4dEFsaWduID0gUklHSFQ7XHJcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoVGV4dERpcmVjdGlvbnMuUlRMKTtcclxuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShUZXh0RGlyZWN0aW9ucy5MVFIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoVGV4dERpcmVjdGlvbnMuTFRSKTtcclxuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShUZXh0RGlyZWN0aW9ucy5SVEwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fJHVuc3Vic2NyaWJlKSB7XHJcbiAgICAgIHRoaXMuXyR1bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICAgIHRoaXMuXyR1bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,67 +0,0 @@
1
- import { Directive, EventEmitter, Input, Output } from '@angular/core';
2
- import { fromEvent, of, race, Subject } from 'rxjs';
3
- import { filter, switchMap, takeUntil, tap } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- const DEFAULT_MAX_DISTANCE = 40;
6
- /**
7
- * ItemClickDirective
8
- * Maximum performance for extremely large lists.
9
- * It is based on algorithms for virtualization of screen objects.
10
- * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/directives/item-click/item-click.directive.ts
11
- * @author Evgenii Alexandrovich Grebennikov
12
- * @email djonnyx@gmail.com
13
- */
14
- export class VirtualClickDirective {
15
- _elementRef;
16
- _$unsubscribe = new Subject();
17
- _maxDistance = DEFAULT_MAX_DISTANCE;
18
- set maxDistance(v) {
19
- this._maxDistance = (v !== null || v !== undefined) ? Number(v) : DEFAULT_MAX_DISTANCE;
20
- }
21
- onVirtualClick = new EventEmitter();
22
- constructor(_elementRef) {
23
- this._elementRef = _elementRef;
24
- const $pointerPressed = fromEvent(this._elementRef.nativeElement, 'pointerdown'), $pointerCancel = race([
25
- fromEvent(window, 'pointerup').pipe(takeUntil(this._$unsubscribe)),
26
- fromEvent(window, 'pointerleave').pipe(takeUntil(this._$unsubscribe)),
27
- ]), $pointerRelease = fromEvent(this._elementRef.nativeElement, 'pointerup', { passive: false });
28
- $pointerPressed.pipe(takeUntil(this._$unsubscribe), switchMap(e => {
29
- const x = Math.abs(e.clientX), y = Math.abs(e.clientY);
30
- return $pointerRelease.pipe(takeUntil(this._$unsubscribe), takeUntil(race([
31
- $pointerCancel,
32
- fromEvent(window, 'pointermove').pipe(takeUntil(this._$unsubscribe), switchMap(e => {
33
- const xx = x - Math.abs(e.clientX), yy = y - Math.abs(e.clientY), dist = Math.sqrt(Math.pow(xx, 2) + Math.pow(yy, 2));
34
- if (dist > this._maxDistance) {
35
- return of(true);
36
- }
37
- return of(false);
38
- }), takeUntil(this._$unsubscribe), filter(v => !!v)),
39
- ])), takeUntil(this._$unsubscribe), tap(e => {
40
- if (e) {
41
- this.onVirtualClick.emit(e);
42
- }
43
- }));
44
- })).subscribe();
45
- }
46
- ngOnDestroy() {
47
- if (this._$unsubscribe) {
48
- this._$unsubscribe.next();
49
- this._$unsubscribe.complete();
50
- }
51
- }
52
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VirtualClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
53
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: VirtualClickDirective, selector: "[virtualClick]", inputs: { maxDistance: ["maxClickDistance", "maxDistance"] }, outputs: { onVirtualClick: "onVirtualClick" }, ngImport: i0 });
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VirtualClickDirective, decorators: [{
56
- type: Directive,
57
- args: [{
58
- selector: '[virtualClick]',
59
- standalone: false,
60
- }]
61
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { maxDistance: [{
62
- type: Input,
63
- args: ['maxClickDistance']
64
- }], onVirtualClick: [{
65
- type: Output
66
- }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1jbGljay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL3ZpcnR1YWwtY2xpY2svdmlydHVhbC1jbGljay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbkUsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFaEM7Ozs7Ozs7R0FPRztBQUtILE1BQU0sT0FBTyxxQkFBcUI7SUFhVjtJQVpWLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXRDLFlBQVksR0FBRyxvQkFBb0IsQ0FBQztJQUU1QyxJQUNJLFdBQVcsQ0FBQyxDQUFnQjtRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUM7SUFDM0YsQ0FBQztJQUdELGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztJQUUvRCxZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQWUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQzFGLGNBQWMsR0FBRyxJ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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgb2YsIHJhY2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuY29uc3QgREVGQVVMVF9NQVhfRElTVEFOQ0UgPSA0MDtcclxuXHJcbi8qKlxyXG4gKiBJdGVtQ2xpY2tEaXJlY3RpdmVcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9kaXJlY3RpdmVzL2l0ZW0tY2xpY2svaXRlbS1jbGljay5kaXJlY3RpdmUudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3ZpcnR1YWxDbGlja10nLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaXJ0dWFsQ2xpY2tEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHJvdGVjdGVkIF8kdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgX21heERpc3RhbmNlID0gREVGQVVMVF9NQVhfRElTVEFOQ0U7XHJcblxyXG4gICAgQElucHV0KCdtYXhDbGlja0Rpc3RhbmNlJylcclxuICAgIHNldCBtYXhEaXN0YW5jZSh2OiBudW1iZXIgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fbWF4RGlzdGFuY2UgPSAodiAhPT0gbnVsbCB8fCB2ICE9PSB1bmRlZmluZWQpID8gTnVtYmVyKHYpIDogREVGQVVMVF9NQVhfRElTVEFOQ0U7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBvblZpcnR1YWxDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8UG9pbnRlckV2ZW50IHwgVG91Y2hFdmVudD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgY29uc3QgJHBvaW50ZXJQcmVzc2VkID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmRvd24nKSxcclxuICAgICAgICAgICAgJHBvaW50ZXJDYW5jZWwgPSByYWNlKFtcclxuICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdwb2ludGVydXAnKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHdpbmRvdywgJ3BvaW50ZXJsZWF2ZScpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgJHBvaW50ZXJSZWxlYXNlID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcnVwJywgeyBwYXNzaXZlOiBmYWxzZSB9KTtcclxuXHJcbiAgICAgICAgJHBvaW50ZXJQcmVzc2VkLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gTWF0aC5hYnMoZS5jbGllbnRYKSxcclxuICAgICAgICAgICAgICAgICAgICB5ID0gTWF0aC5hYnMoZS5jbGllbnRZKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAkcG9pbnRlclJlbGVhc2UucGlwZShcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhY2UoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBvaW50ZXJDYW5jZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih3aW5kb3csICdwb2ludGVybW92ZScpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4eCA9IHggLSBNYXRoLmFicyhlLmNsaWVudFgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXkgPSB5IC0gTWF0aC5hYnMoZS5jbGllbnRZKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSBNYXRoLnNxcnQoTWF0aC5wb3coeHgsIDIpICsgTWF0aC5wb3coeXksIDIpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXN0ID4gdGhpcy5fbWF4RGlzdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIodiA9PiAhIXYpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgICAgICB0YXAoZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVmlydHVhbENsaWNrLmVtaXQoZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyR1bnN1YnNjcmliZSkge1xyXG4gICAgICAgICAgICB0aGlzLl8kdW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLl8kdW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,120 +0,0 @@
1
- import { inject, Injectable } from '@angular/core';
2
- import { NgVirtualListService } from './ng-virtual-list.service';
3
- import { FocusAlignments } from './enums';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * NgVirtualListPublicService
7
- * Maximum performance for extremely large lists.
8
- * It is based on algorithms for virtualization of screen objects.
9
- * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/ng-virtual-list-publick.service.ts
10
- * @author Evgenii Alexandrovich Grebennikov
11
- * @email djonnyx@gmail.com
12
- */
13
- export class NgVirtualListPublicService {
14
- _internalService = inject(NgVirtualListService);
15
- /**
16
- * Unique list identifier.
17
- */
18
- get id() { return this._internalService.id; }
19
- /**
20
- * Informs about a click on a list item.
21
- */
22
- get $virtualClick() { return this._internalService.$virtualClick; }
23
- ;
24
- /**
25
- * Informs about the selection of a list item(s).
26
- */
27
- get $selectedIds() { return this._internalService.$selectedIds; }
28
- ;
29
- /**
30
- * Informs about the collapse (expanding) of a list element(s).
31
- */
32
- get $collapsedIds() { return this._internalService.$collapsedIds; }
33
- ;
34
- /**
35
- * Informs the focus on the specified list item.
36
- */
37
- get $focusItem() { return this._internalService.$focusItem; }
38
- ;
39
- /**
40
- * Notifies about the next change detection tick. Works similarly to `setTimeout` with a timeout of 0.
41
- */
42
- get $tick() { return this._internalService.$tick; }
43
- ;
44
- /**
45
- * Specifies a list of selected items.
46
- */
47
- set selectedIds(ids) {
48
- this._internalService.selectedIds = ids;
49
- }
50
- /**
51
- * Returns a list of selected items.
52
- */
53
- get selectedIds() { return this._internalService.selectedIds; }
54
- /**
55
- * Specifies a list of collapsed elements.
56
- */
57
- set collapsedIds(ids) {
58
- this._internalService.collapsedIds = ids;
59
- }
60
- /**
61
- * Returns a list of collapsed elements.
62
- */
63
- get collapsedIds() { return this._internalService.collapsedIds; }
64
- /**
65
- * Updates the list
66
- * @param immediately - Indicates that the list is updated instantly.
67
- */
68
- update(immediately = false) {
69
- this._internalService.update(immediately);
70
- }
71
- /**
72
- * Selects a list item
73
- * @param id
74
- * @param selected - If the value is undefined, then the toggle method is executed, if false or true, then the selection/deselection is performed.
75
- */
76
- select(id, selected = undefined) {
77
- this._internalService.select(id, selected);
78
- }
79
- /**
80
- * Collapse list items
81
- * @param id
82
- * @param collapsed - If the value is undefined, then the toggle method is executed, if false or true, then the collapse/expand is performed.
83
- */
84
- collapse(id, collapsed = undefined) {
85
- this._internalService.collapse(id, collapsed);
86
- }
87
- /**
88
- * Focus an list item by a given id.
89
- */
90
- focus(id, align = FocusAlignments.NONE, scrollBehavior = "auto") {
91
- return this._internalService.focusById(id, align, scrollBehavior);
92
- }
93
- /**
94
- * The method scrolls the list to the element with the given `id` and returns the value of the scrolled area.
95
- */
96
- scrollTo(id, cb = null, options = null) {
97
- this._internalService.scrollTo(id, cb, options);
98
- }
99
- /**
100
- * Scrolls the scroll area to the first item in the collection.
101
- */
102
- scrollToStart(options) {
103
- this._internalService.scrollToStart(options);
104
- }
105
- /**
106
- * Scrolls the list to the end of the content size.
107
- */
108
- scrollToEnd(options) {
109
- this._internalService.scrollToEnd(options);
110
- }
111
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListPublicService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
112
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListPublicService, providedIn: 'root' });
113
- }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgVirtualListPublicService, decorators: [{
115
- type: Injectable,
116
- args: [{
117
- providedIn: 'root'
118
- }]
119
- }] });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LXB1YmxpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvbmctdmlydHVhbC1saXN0LXB1YmxpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTW5ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRTFDOzs7Ozs7O0dBT0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBQzdCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhEOztPQUVHO0lBQ0gsSUFBSSxFQUFFLEtBQWEsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVyRDs7T0FFRztJQUNILElBQUksYUFBYSxLQUFxRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUVwSDs7T0FFRztJQUNILElBQUksWUFBWSxLQUF3QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUVyRzs7T0FFRztJQUNILElBQUksYUFBYSxLQUE0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUUzRjs7T0FFRztJQUNILElBQUksVUFBVSxLQUFrQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUUzRjs7T0FFRztJQUNILElBQUksS0FBSyxLQUF1QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUV0RTs7T0FFRztJQUNILElBQUksV0FBVyxDQUFDLEdBQTBCO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFL0Q7O09BRUc7SUFDSCxJQUFJLFlBQVksQ0FBQyxHQUFjO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFakU7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGNBQXVCLEtBQUs7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxFQUFNLEVBQUUsV0FBZ0MsU0FBUztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7UUFJSTtJQUNKLFFBQVEsQ0FBQyxFQUFNLEVBQUUsWUFBaUMsU0FBUztRQUN6RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsRUFBTSxFQUFFLFFBQXdCLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlDLE1BQU07UUFDakcsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUVEOztRQUVJO0lBQ0osUUFBUSxDQUFDLEVBQU0sRUFBRSxLQUEwQixJQUFJLEVBQUUsVUFBaUMsSUFBSTtRQUNwRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLE9BQXdCO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLE9BQXdCO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQzt3R0E3R1UsMEJBQTBCOzRHQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IElTY3JvbGxPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRm9jdXNBbGlnbm1lbnQsIElkIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEZvY3VzSXRlbVBhcmFtcyB9IGZyb20gJy4vdHlwZXMvZm9jdXMtaXRlbS1wYXJhbXMnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0U2VydmljZSB9IGZyb20gJy4vbmctdmlydHVhbC1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb2N1c0FsaWdubWVudHMgfSBmcm9tICcuL2VudW1zJztcclxuXHJcbi8qKlxyXG4gKiBOZ1ZpcnR1YWxMaXN0UHVibGljU2VydmljZVxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL25nLXZpcnR1YWwtbGlzdC1wdWJsaWNrLnNlcnZpY2UudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0UHVibGljU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfaW50ZXJuYWxTZXJ2aWNlID0gaW5qZWN0KE5nVmlydHVhbExpc3RTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVW5pcXVlIGxpc3QgaWRlbnRpZmllci5cclxuICAgKi9cclxuICBnZXQgaWQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX2ludGVybmFsU2VydmljZS5pZDsgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmZvcm1zIGFib3V0IGEgY2xpY2sgb24gYSBsaXN0IGl0ZW0uXHJcbiAgICovXHJcbiAgZ2V0ICR2aXJ0dWFsQ2xpY2soKTogT2JzZXJ2YWJsZTxJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCBudWxsPiB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuJHZpcnR1YWxDbGljazsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5mb3JtcyBhYm91dCB0aGUgc2VsZWN0aW9uIG9mIGEgbGlzdCBpdGVtKHMpLlxyXG4gICAqL1xyXG4gIGdldCAkc2VsZWN0ZWRJZHMoKTogT2JzZXJ2YWJsZTxBcnJheTxJZD4gfCBJZCB8IG51bGw+IHsgcmV0dXJuIHRoaXMuX2ludGVybmFsU2VydmljZS4kc2VsZWN0ZWRJZHM7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZm9ybXMgYWJvdXQgdGhlIGNvbGxhcHNlIChleHBhbmRpbmcpIG9mIGEgbGlzdCBlbGVtZW50KHMpLlxyXG4gICAqL1xyXG4gIGdldCAkY29sbGFwc2VkSWRzKCk6IE9ic2VydmFibGU8QXJyYXk8SWQ+PiB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuJGNvbGxhcHNlZElkczsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5mb3JtcyB0aGUgZm9jdXMgb24gdGhlIHNwZWNpZmllZCBsaXN0IGl0ZW0uXHJcbiAgICovXHJcbiAgZ2V0ICRmb2N1c0l0ZW0oKTogT2JzZXJ2YWJsZTxGb2N1c0l0ZW1QYXJhbXM+IHsgcmV0dXJuIHRoaXMuX2ludGVybmFsU2VydmljZS4kZm9jdXNJdGVtOyB9O1xyXG5cclxuICAvKipcclxuICAgKiBOb3RpZmllcyBhYm91dCB0aGUgbmV4dCBjaGFuZ2UgZGV0ZWN0aW9uIHRpY2suIFdvcmtzIHNpbWlsYXJseSB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgMC5cclxuICAgKi9cclxuICBnZXQgJHRpY2soKTogT2JzZXJ2YWJsZTx2b2lkPiB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuJHRpY2s7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwZWNpZmllcyBhIGxpc3Qgb2Ygc2VsZWN0ZWQgaXRlbXMuXHJcbiAgICovXHJcbiAgc2V0IHNlbGVjdGVkSWRzKGlkczogQXJyYXk8SWQ+IHwgSWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9pbnRlcm5hbFNlcnZpY2Uuc2VsZWN0ZWRJZHMgPSBpZHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBzZWxlY3RlZCBpdGVtcy5cclxuICAgKi9cclxuICBnZXQgc2VsZWN0ZWRJZHMoKSB7IHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2Uuc2VsZWN0ZWRJZHM7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3BlY2lmaWVzIGEgbGlzdCBvZiBjb2xsYXBzZWQgZWxlbWVudHMuXHJcbiAgICovXHJcbiAgc2V0IGNvbGxhcHNlZElkcyhpZHM6IEFycmF5PElkPikge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLmNvbGxhcHNlZElkcyA9IGlkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGNvbGxhcHNlZCBlbGVtZW50cy5cclxuICAgKi9cclxuICBnZXQgY29sbGFwc2VkSWRzKCkgeyByZXR1cm4gdGhpcy5faW50ZXJuYWxTZXJ2aWNlLmNvbGxhcHNlZElkczsgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBsaXN0XHJcbiAgICogQHBhcmFtIGltbWVkaWF0ZWx5IC0gSW5kaWNhdGVzIHRoYXQgdGhlIGxpc3QgaXMgdXBkYXRlZCBpbnN0YW50bHkuXHJcbiAgICovXHJcbiAgdXBkYXRlKGltbWVkaWF0ZWx5OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuX2ludGVybmFsU2VydmljZS51cGRhdGUoaW1tZWRpYXRlbHkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0cyBhIGxpc3QgaXRlbVxyXG4gICAqIEBwYXJhbSBpZCBcclxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBzZWxlY3Rpb24vZGVzZWxlY3Rpb24gaXMgcGVyZm9ybWVkLlxyXG4gICAqL1xyXG4gIHNlbGVjdChpZDogSWQsIHNlbGVjdGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9pbnRlcm5hbFNlcnZpY2Uuc2VsZWN0KGlkLCBzZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogQ29sbGFwc2UgbGlzdCBpdGVtc1xyXG4gICAgKiBAcGFyYW0gaWQgXHJcbiAgICAqIEBwYXJhbSBjb2xsYXBzZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBjb2xsYXBzZS9leHBhbmQgaXMgcGVyZm9ybWVkLlxyXG4gICAgKi9cclxuICBjb2xsYXBzZShpZDogSWQsIGNvbGxhcHNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLmNvbGxhcHNlKGlkLCBjb2xsYXBzZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9jdXMgYW4gbGlzdCBpdGVtIGJ5IGEgZ2l2ZW4gaWQuXHJcbiAgICovXHJcbiAgZm9jdXMoaWQ6IElkLCBhbGlnbjogRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMuTk9ORSwgc2Nyb2xsQmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yID0gXCJhdXRvXCIpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFNlcnZpY2UuZm9jdXNCeUlkKGlkLCBhbGlnbiwgc2Nyb2xsQmVoYXZpb3IpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogVGhlIG1ldGhvZCBzY3JvbGxzIHRoZSBsaXN0IHRvIHRoZSBlbGVtZW50IHdpdGggdGhlIGdpdmVuIGBpZGAgYW5kIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzY3JvbGxlZCBhcmVhLlxyXG4gICAgKi9cclxuICBzY3JvbGxUbyhpZDogSWQsIGNiOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbCwgb3B0aW9uczogSVNjcm9sbE9wdGlvbnMgfCBudWxsID0gbnVsbCkge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLnNjcm9sbFRvKGlkLCBjYiwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTY3JvbGxzIHRoZSBzY3JvbGwgYXJlYSB0byB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgY29sbGVjdGlvbi5cclxuICAgKi9cclxuICBzY3JvbGxUb1N0YXJ0KG9wdGlvbnM/OiBJU2Nyb2xsT3B0aW9ucykge1xyXG4gICAgdGhpcy5faW50ZXJuYWxTZXJ2aWNlLnNjcm9sbFRvU3RhcnQob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTY3JvbGxzIHRoZSBsaXN0IHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgc2l6ZS5cclxuICAgKi9cclxuICBzY3JvbGxUb0VuZChvcHRpb25zPzogSVNjcm9sbE9wdGlvbnMpIHtcclxuICAgIHRoaXMuX2ludGVybmFsU2VydmljZS5zY3JvbGxUb0VuZChvcHRpb25zKTtcclxuICB9XHJcbn1cclxuIl19