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,315 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, ViewChild } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, map, takeUntil, tap } from 'rxjs';
3
+ import { DEFAULT_ZINDEX, DISPLAY_BLOCK, DISPLAY_NONE, HIDDEN_ZINDEX, PART_DEFAULT_ITEM, PART_ITEM_COLLAPSED, PART_ITEM_EVEN, PART_ITEM_FOCUSED, PART_ITEM_NEW, PART_ITEM_ODD, PART_ITEM_SELECTED, PART_ITEM_SNAPPED, PART_DEFAULT_ITEM_FX, PART_ITEM_FX_COLLAPSED, PART_ITEM_FX_EVEN, PART_ITEM_FX_FOCUSED, PART_ITEM_FX_NEW, PART_ITEM_FX_ODD, PART_ITEM_FX_SELECTED, PART_ITEM_FX_SNAPPED, PX, SIZE_100_PERSENT, SIZE_AUTO, TRANSLATE_3D, VISIBILITY_HIDDEN, VISIBILITY_VISIBLE, PART_ITEM_ROW_ODD, PART_ITEM_ROW_EVEN, PART_ITEM_ROW_FX_ODD, PART_ITEM_ROW_FX_EVEN, } from '../../../const';
4
+ import { CLASS_NAME_FOCUS, CLASS_NAME_SNAPPED, CLASS_NAME_SNAPPED_OUT, DEFAULT_TEMPLATE_CONTEXT, ID, ITEM_ID, POSITION, POSITION_ZERO, } from '../const';
5
+ import { TextDirections } from '../../../enums';
6
+ import { NgVirtualListPublicService } from '../../../ng-virtual-list-public.service';
7
+ import { createDisplayId, matrix3d } from '../utils';
8
+ import { DisposableComponent } from '../../../utils/disposable-component';
9
+ import { NgVirtualListService } from '../../../ng-virtual-list.service';
10
+ import * as i0 from "@angular/core";
11
+ /**
12
+ * BaseVirtualListItemComponent
13
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/14.x/projects/ng-virtual-list/src/lib/components/list-item/base/base-virtual-list-item-component.ts
14
+ * @author Evgenii Alexandrovich Grebennikov
15
+ * @email djonnyx@gmail.com
16
+ */
17
+ export class BaseVirtualListItemComponent extends DisposableComponent {
18
+ _item;
19
+ _container;
20
+ _apiService = inject(NgVirtualListPublicService);
21
+ _service = inject(NgVirtualListService);
22
+ _cdr = inject(ChangeDetectorRef);
23
+ _id;
24
+ get id() {
25
+ return this._id;
26
+ }
27
+ _listId;
28
+ get listId() {
29
+ return this._listId;
30
+ }
31
+ _displayId;
32
+ get displayId() {
33
+ return this._displayId;
34
+ }
35
+ _isSelected = false;
36
+ set isSelected(v) {
37
+ if (this._isSelected !== v) {
38
+ this._isSelected = v;
39
+ this.update();
40
+ }
41
+ }
42
+ get isSelected() { return this._isSelected; }
43
+ _isCollapsed = false;
44
+ _$config = new BehaviorSubject({});
45
+ $config = this._$config.asObservable();
46
+ _$measures = new BehaviorSubject(null);
47
+ $measures = this._$measures.asObservable();
48
+ _$focused = new BehaviorSubject(false);
49
+ $focused = this._$focused.asObservable();
50
+ _$part = new BehaviorSubject(PART_DEFAULT_ITEM);
51
+ $part = this._$part.asObservable();
52
+ _$fxPart = new BehaviorSubject(PART_DEFAULT_ITEM_FX);
53
+ $fxPart = this._$fxPart.asObservable();
54
+ _data = null;
55
+ get data() { return this._data; }
56
+ _$data = new BehaviorSubject(this._data);
57
+ $data = this._$data.asObservable();
58
+ set item(v) {
59
+ if (this._data === v || this._data?.id === -1 || !v) {
60
+ return;
61
+ }
62
+ this._data = v;
63
+ this.updatePartStr(v, this._isSelected, this._isCollapsed);
64
+ this.updateConfig(v);
65
+ this.updateMeasures(v);
66
+ this.update();
67
+ this._$data.next(v);
68
+ }
69
+ _$classes = new BehaviorSubject({});
70
+ $classes = this._$classes.asObservable();
71
+ _$index = new BehaviorSubject(-1);
72
+ $index = this._$index.asObservable();
73
+ _$templateContext = new BehaviorSubject(DEFAULT_TEMPLATE_CONTEXT);
74
+ $templateContext = this._$templateContext.asObservable();
75
+ regular = false;
76
+ _blendColor = null;
77
+ _scrollBarSize = 0;
78
+ _langTextDir = TextDirections.LTR;
79
+ _regularLength = SIZE_100_PERSENT;
80
+ set regularLength(v) {
81
+ if (this._regularLength === v) {
82
+ return;
83
+ }
84
+ this._regularLength = v;
85
+ this.update();
86
+ }
87
+ get item() {
88
+ return this._data;
89
+ }
90
+ get itemId() {
91
+ return this._data?.id;
92
+ }
93
+ get zIndex() {
94
+ return this._elementRef.nativeElement.style.zIndex;
95
+ }
96
+ get visibility() {
97
+ return this._elementRef.nativeElement.style.visibility;
98
+ }
99
+ itemRenderer;
100
+ set renderer(v) {
101
+ if (this.itemRenderer === v) {
102
+ return;
103
+ }
104
+ this.itemRenderer = v;
105
+ this._cdr.markForCheck();
106
+ }
107
+ _elementRef = inject(ElementRef);
108
+ get element() {
109
+ return this._elementRef.nativeElement;
110
+ }
111
+ constructor() {
112
+ super();
113
+ this._id = this._service.generateComponentId();
114
+ this._listId = this._service.id;
115
+ this._displayId = createDisplayId(this._listId, this._id);
116
+ const $part = this.$part;
117
+ $part.pipe(takeUntil(this._$unsubscribe), tap(part => {
118
+ this._elementRef.nativeElement.setAttribute('part', part);
119
+ })).subscribe();
120
+ const $focus = this._service.$focusedId.pipe(takeUntil(this._$unsubscribe), map(id => id === this.itemId));
121
+ $focus.pipe(takeUntil(this._$unsubscribe), tap(() => {
122
+ this.updatePartStr(this._data, this._isSelected, this._isCollapsed);
123
+ })).subscribe();
124
+ const $data = this.$data, $config = this.$config, $measures = this.$measures;
125
+ combineLatest([$data, $focus]).pipe(takeUntil(this._$unsubscribe), tap(([data, focus]) => {
126
+ const f = focus ?? false, classes = {
127
+ [CLASS_NAME_SNAPPED]: data?.config?.snapped ?? false, [CLASS_NAME_SNAPPED_OUT]: data?.config?.snappedOut ?? false,
128
+ [CLASS_NAME_FOCUS]: f,
129
+ };
130
+ this._$classes.next(classes);
131
+ })).subscribe();
132
+ $config.pipe(takeUntil(this._$unsubscribe), tap(config => {
133
+ this._$index.next(config?.tabIndex ?? -1);
134
+ })).subscribe();
135
+ combineLatest([$data, $config, $measures]).pipe(takeUntil(this._$unsubscribe), tap(([data, config, measures]) => {
136
+ this._$templateContext.next({
137
+ data: data?.data, prevData: data?.previouseData, nextData: data?.nextData, measures,
138
+ config, reseted: false, index: data?.index ?? -1, api: this._apiService,
139
+ });
140
+ })).subscribe();
141
+ if (this._service.isVertical) {
142
+ this._elementRef.nativeElement.style.height = `${this._service.itemSize}px`;
143
+ }
144
+ else {
145
+ this._elementRef.nativeElement.style.width = `${this._service.itemSize}px`;
146
+ }
147
+ this.hide();
148
+ }
149
+ updateMeasures(v) {
150
+ this._$measures.next(v?.measures ? { ...v.measures } : null);
151
+ this._cdr.markForCheck();
152
+ }
153
+ updateConfig(v) {
154
+ this._$config.next({
155
+ ...v?.config || {}, selected: this._isSelected, collapsed: this._isCollapsed, focused: this._$focused.getValue(),
156
+ });
157
+ this._cdr.markForCheck();
158
+ }
159
+ update() {
160
+ const data = this._data, regular = this.regular, length = this._regularLength, el = this._elementRef.nativeElement, itemElement = this._item?.nativeElement, containerElement = this._container?.nativeElement;
161
+ if (!!data && !!el && !!itemElement && !!containerElement) {
162
+ el.setAttribute(ITEM_ID, `${data.id}`);
163
+ const styles = el.style, itemElementStyles = itemElement.style;
164
+ if (this._service.zIndexWhenSelecting !== null && this._isSelected) {
165
+ styles.zIndex = this._service.zIndexWhenSelecting;
166
+ }
167
+ else {
168
+ styles.zIndex = data.config.zIndex;
169
+ }
170
+ this._blendColor = data.config.blendColor ?? null;
171
+ if (!!containerElement && !!data.config.blendColor) {
172
+ containerElement.style.opacity = String(data.config.opacity);
173
+ }
174
+ if (!!data.config.filter) {
175
+ styles.filter = data.config.filter;
176
+ }
177
+ if (this.item?.config?.dynamic && data.config.isStub === true) {
178
+ el.style.visibility = VISIBILITY_HIDDEN;
179
+ }
180
+ if (regular) {
181
+ el.setAttribute(POSITION, POSITION_ZERO);
182
+ styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ?
183
+ (this._langTextDir === TextDirections.RTL ? this._scrollBarSize : 0) :
184
+ data.measures.delta}${PX}, ${data.config.isVertical ? data.measures.delta : 0}${PX}, ${POSITION_ZERO})`;
185
+ }
186
+ else {
187
+ el.setAttribute(POSITION, `${data.config.isVertical ? data.measures.y : data.measures.x}`);
188
+ styles.transform = matrix3d(data.measures.transformedX, data.measures.transformedY, data.measures.z, data.measures.scaleX, data.measures.scaleY, data.measures.scaleZ, data.measures.rotationX, data.measures.rotationY, data.measures.rotationZ);
189
+ }
190
+ if (data.config.divides > 1) {
191
+ styles.height = data.config.isVertical ? `${data.measures.row.size}${PX}` : `${data.measures.height}${PX}`;
192
+ styles.width = data.config.isVertical ? `${data.measures.width}${PX}` : `${data.measures.row.size}${PX}`;
193
+ itemElementStyles.minWidth = styles.minWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.minWidth}${PX}`;
194
+ itemElementStyles.maxWidth = styles.maxWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.maxWidth}${PX}`;
195
+ itemElementStyles.minHeight = styles.minHeight = data.config.isVertical ? `${data.measures.minHeight}${PX}` : SIZE_AUTO;
196
+ itemElementStyles.maxHeight = styles.maxHeight = data.config.isVertical ? `${data.measures.maxHeight}${PX}` : SIZE_AUTO;
197
+ itemElementStyles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;
198
+ itemElementStyles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
199
+ }
200
+ else {
201
+ styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : `${data.measures.height}${PX}`;
202
+ styles.width = data.config.isVertical ? regular ? length : `${data.measures.width}${PX}` : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
203
+ styles.minWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.minWidth}${PX}`;
204
+ styles.maxWidth = data.config.isVertical ? SIZE_AUTO : `${data.measures.maxWidth}${PX}`;
205
+ styles.minHeight = data.config.isVertical ? `${data.measures.minHeight}${PX}` : SIZE_AUTO;
206
+ styles.maxHeight = data.config.isVertical ? `${data.measures.maxHeight}${PX}` : SIZE_AUTO;
207
+ }
208
+ }
209
+ else {
210
+ el.removeAttribute(ID);
211
+ }
212
+ this._cdr.markForCheck();
213
+ }
214
+ updatePartStr(v, isSelected, isCollapsed) {
215
+ const odd = v?.config.odd, rowOdd = v?.measures.row.odd;
216
+ let part = PART_DEFAULT_ITEM, fxPart = PART_DEFAULT_ITEM_FX;
217
+ part += odd ? PART_ITEM_ODD : PART_ITEM_EVEN;
218
+ part += rowOdd ? PART_ITEM_ROW_ODD : PART_ITEM_ROW_EVEN;
219
+ fxPart += odd ? PART_ITEM_FX_ODD : PART_ITEM_FX_EVEN;
220
+ fxPart += rowOdd ? PART_ITEM_ROW_FX_ODD : PART_ITEM_ROW_FX_EVEN;
221
+ if (v ? v.config.snapped : false) {
222
+ part += PART_ITEM_SNAPPED;
223
+ fxPart += PART_ITEM_FX_SNAPPED;
224
+ }
225
+ if (isSelected) {
226
+ part += PART_ITEM_SELECTED;
227
+ fxPart += PART_ITEM_FX_SELECTED;
228
+ }
229
+ if (isCollapsed) {
230
+ part += PART_ITEM_COLLAPSED;
231
+ fxPart += PART_ITEM_FX_COLLAPSED;
232
+ }
233
+ if (v ? v.config.new : false) {
234
+ part += PART_ITEM_NEW;
235
+ fxPart += PART_ITEM_FX_NEW;
236
+ }
237
+ if (this.hasFocus()) {
238
+ part += PART_ITEM_FOCUSED;
239
+ fxPart += PART_ITEM_FX_FOCUSED;
240
+ }
241
+ this._$part.next(part);
242
+ this._$fxPart.next(fxPart);
243
+ this._cdr.markForCheck();
244
+ }
245
+ hasFocus() {
246
+ return this._service.focusedId === this.itemId;
247
+ }
248
+ getBounds() {
249
+ const el = this._item?.nativeElement;
250
+ if (!!el) {
251
+ const width = el.offsetWidth, height = el.offsetHeight;
252
+ return { width, height, };
253
+ }
254
+ return { width: 0, height: 0 };
255
+ }
256
+ show() {
257
+ if (!this.item?.config?.dynamic) {
258
+ return;
259
+ }
260
+ const el = this._elementRef.nativeElement, styles = el.style;
261
+ styles.zIndex = this._data?.config?.zIndex ?? DEFAULT_ZINDEX;
262
+ if (this.regular) {
263
+ if (styles.display === DISPLAY_BLOCK) {
264
+ return;
265
+ }
266
+ styles.display = DISPLAY_BLOCK;
267
+ }
268
+ else {
269
+ const isStub = this._data?.config?.isStub ?? false;
270
+ if (!isStub) {
271
+ if (styles.visibility === VISIBILITY_VISIBLE) {
272
+ return;
273
+ }
274
+ styles.visibility = VISIBILITY_VISIBLE;
275
+ }
276
+ }
277
+ }
278
+ hide() {
279
+ if (!this.item?.config?.dynamic) {
280
+ return;
281
+ }
282
+ const el = this._elementRef.nativeElement, styles = el.style;
283
+ styles.zIndex = HIDDEN_ZINDEX;
284
+ if (this.regular) {
285
+ if (styles.display === DISPLAY_NONE) {
286
+ return;
287
+ }
288
+ styles.display = DISPLAY_NONE;
289
+ }
290
+ else {
291
+ if (styles.visibility === VISIBILITY_HIDDEN) {
292
+ return;
293
+ }
294
+ styles.visibility = VISIBILITY_HIDDEN;
295
+ }
296
+ }
297
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaseVirtualListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
298
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BaseVirtualListItemComponent, selector: "ng-base-virtual-list-item", viewQueries: [{ propertyName: "_item", first: true, predicate: ["item"], descendants: true }, { propertyName: "_container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
299
+ }
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BaseVirtualListItemComponent, decorators: [{
301
+ type: Component,
302
+ args: [{
303
+ selector: 'ng-base-virtual-list-item',
304
+ template: '',
305
+ standalone: false,
306
+ changeDetection: ChangeDetectionStrategy.OnPush,
307
+ }]
308
+ }], ctorParameters: () => [], propDecorators: { _item: [{
309
+ type: ViewChild,
310
+ args: ['item']
311
+ }], _container: [{
312
+ type: ViewChild,
313
+ args: ['container']
314
+ }] } });
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9iYXNlL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJM0UsT0FBTyxFQUNMLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQ2xILGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQ3BJLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUN4SCxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFDM0gsb0JBQW9CLEVBQUUscUJBQXFCLEdBQzVDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsR0FDN0gsTUFBTSxVQUFVLENB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LEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQzdJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckcsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUMzRyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDekcsaUJBQWlCLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDckgsaUJBQWlCLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDckgsaUJBQWlCLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDeEgsaUJBQWlCLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFFeEgsaUJBQWlCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDekssaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUN4SyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQzlKLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUMzSixNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3hGLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDeEYsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUMxRixNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDNUYsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVMsYUFBYSxDQUFDLENBQWdDLEVBQUUsVUFBbUIsRUFBRSxXQUFvQjtRQUNqRyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBRXhELElBQUksSUFBSSxHQUFHLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUM1RCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFDeEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ3JELE1BQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztRQUNoRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxpQkFBaUIsQ0FBQztZQUMxQixNQUFNLElBQUksb0JBQW9CLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLElBQUksa0JBQWtCLENBQUM7WUFDM0IsTUFBTSxJQUFJLHFCQUFxQixDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLElBQUksSUFBSSxtQkFBbUIsQ0FBQztZQUM1QixNQUFNLElBQUksc0JBQXNCLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsSUFBSSxJQUFJLGFBQWEsQ0FBQztZQUN0QixNQUFNLElBQUksZ0JBQWdCLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLGlCQUFpQixDQUFDO1lBQzFCLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVMsUUFBUTtRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNULE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUE0QixFQUN0RCxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxjQUFjLENBQUM7UUFDN0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLGFBQWEsRUFBRSxDQUFDO2dCQUNyQyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGtCQUFrQixFQUFFLENBQUM7b0JBQzdDLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxNQUFNLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDdkMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUNwQyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGlCQUFpQixFQUFFLENBQUM7Z0JBQzVDLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQzt3R0FoWFUsNEJBQTRCOzRGQUE1Qiw0QkFBNEIsaVJBSjdCLEVBQUU7OzRGQUlELDRCQUE0QjtrQkFOeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsS0FBSztvQkFDakIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEO3dEQUdXLEtBQUs7c0JBRGQsU0FBUzt1QkFBQyxNQUFNO2dCQUlQLFVBQVU7c0JBRG5CLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVuZGVyLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBJRGlzcGxheU9iamVjdENvbmZpZywgSURpc3BsYXlPYmplY3RNZWFzdXJlcyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgREVGQVVMVF9aSU5ERVgsIERJU1BMQVlfQkxPQ0ssIERJU1BMQVlfTk9ORSwgSElEREVOX1pJTkRFWCwgUEFSVF9ERUZBVUxUX0lURU0sIFBBUlRfSVRFTV9DT0xMQVBTRUQsIFBBUlRfSVRFTV9FVkVOLFxyXG4gIFBBUlRfSVRFTV9GT0NVU0VELCBQQVJUX0lURU1fTkVXLCBQQVJUX0lURU1fT0RELCBQQVJUX0lURU1fU0VMRUNURUQsIFBBUlRfSVRFTV9TTkFQUEVELCBQQVJUX0RFRkFVTFRfSVRFTV9GWCwgUEFSVF9JVEVNX0ZYX0NPTExBUFNFRCxcclxuICBQQVJUX0lURU1fRlhfRVZFTiwgUEFSVF9JVEVNX0ZYX0ZPQ1VTRUQsIFBBUlRfSVRFTV9GWF9ORVcsIFBBUlRfSVRFTV9GWF9PREQsIFBBUlRfSVRFTV9GWF9TRUxFQ1RFRCwgUEFSVF9JVEVNX0ZYX1NOQVBQRUQsXHJcbiAgUFgsIFNJWkVfMTAwX1BFUlNFTlQsIFNJWkVfQVVUTywgVFJBTlNMQVRFXzNELCBWSVNJQklMSVRZX0hJRERFTiwgVklTSUJJTElUWV9WSVNJQkxFLCBQQVJUX0lURU1fUk9XX09ERCwgUEFSVF9JVEVNX1JPV19FVkVOLFxyXG4gIFBBUlRfSVRFTV9ST1dfRlhfT0RELCBQQVJUX0lURU1fUk9XX0ZYX0VWRU4sXHJcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBJVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgQ0xBU1NfTkFNRV9GT0NVUywgQ0xBU1NfTkFNRV9TTkFQUEVELCBDTEFTU19OQU1FX1NOQVBQRURfT1VULCBERUZBVUxUX1RFTVBMQVRFX0NPTlRFWFQsIElELCBJVEVNX0lELCBQT1NJVElPTiwgUE9TSVRJT05fWkVSTyxcclxufSBmcm9tICcuLi9jb25zdCc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0UHVibGljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL25nLXZpcnR1YWwtbGlzdC1wdWJsaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IGNyZWF0ZURpc3BsYXlJZCwgbWF0cml4M2QgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kaXNwb3NhYmxlLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbmctdmlydHVhbC1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYmFzZS12aXJ0dWFsLWxpc3QtaXRlbS1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcclxuXHJcbi8qKlxyXG4gKiBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50XHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9saXN0LWl0ZW0vYmFzZS9iYXNlLXZpcnR1YWwtbGlzdC1pdGVtLWNvbXBvbmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctYmFzZS12aXJ0dWFsLWxpc3QtaXRlbScsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBJQmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnaXRlbScpXHJcbiAgcHJvdGVjdGVkIF9pdGVtOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJylcclxuICBwcm90ZWN0ZWQgX2NvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgX2FwaVNlcnZpY2UgPSBpbmplY3QoTmdWaXJ0dWFsTGlzdFB1YmxpY1NlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3NlcnZpY2UgPSBpbmplY3QoTmdWaXJ0dWFsTGlzdFNlcnZpY2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByb3RlY3RlZCBfaWQhOiBudW1iZXI7XHJcbiAgZ2V0IGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9saXN0SWQhOiBudW1iZXI7XHJcbiAgZ2V0IGxpc3RJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9saXN0SWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2Rpc3BsYXlJZCE6IHN0cmluZztcclxuICBnZXQgZGlzcGxheUlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlJZDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNldCBpc1NlbGVjdGVkKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl9pc1NlbGVjdGVkICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuX2lzU2VsZWN0ZWQgPSB2O1xyXG5cclxuICAgICAgdGhpcy51cGRhdGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGlzU2VsZWN0ZWQoKSB7IHJldHVybiB0aGlzLl9pc1NlbGVjdGVkOyB9XHJcblxyXG4gIHByb3RlY3RlZCBfaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIF8kY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGlzcGxheU9iamVjdENvbmZpZz4oe30gYXMgSURpc3BsYXlPYmplY3RDb25maWcpO1xyXG4gICRjb25maWcgPSB0aGlzLl8kY29uZmlnLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcm90ZWN0ZWQgXyRtZWFzdXJlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURpc3BsYXlPYmplY3RNZWFzdXJlcyB8IG51bGw+KG51bGwpO1xyXG4gICRtZWFzdXJlcyA9IHRoaXMuXyRtZWFzdXJlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJvdGVjdGVkIF8kZm9jdXNlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICRmb2N1c2VkID0gdGhpcy5fJGZvY3VzZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfJHBhcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oUEFSVF9ERUZBVUxUX0lURU0pO1xyXG4gICRwYXJ0ID0gdGhpcy5fJHBhcnQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfJGZ4UGFydCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihQQVJUX0RFRkFVTFRfSVRFTV9GWCk7XHJcbiAgJGZ4UGFydCA9IHRoaXMuXyRmeFBhcnQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByb3RlY3RlZCBfZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwgPSBudWxsO1xyXG4gIGdldCBkYXRhKCkgeyByZXR1cm4gdGhpcy5fZGF0YTsgfVxyXG4gIHByb3RlY3RlZCByZWFkb25seSBfJGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCBudWxsPih0aGlzLl9kYXRhKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgJGRhdGEgPSB0aGlzLl8kZGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgc2V0IGl0ZW0odjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl9kYXRhID09PSB2IHx8IHRoaXMuX2RhdGE/LmlkID09PSAtMSB8fCAhdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGF0YSA9IHY7XHJcblxyXG4gICAgdGhpcy51cGRhdGVQYXJ0U3RyKHYsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZyh2KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVzKHYpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gICAgdGhpcy5fJGRhdGEubmV4dCh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbjsgfT4oe30pO1xyXG4gICRjbGFzc2VzID0gdGhpcy5fJGNsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRpbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XHJcbiAgJGluZGV4ID0gdGhpcy5fJGluZGV4LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGVtcGxhdGVDb250ZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJVGVtcGxhdGVDb250ZXh0PihERUZBVUxUX1RFTVBMQVRFX0NPTlRFWFQpO1xyXG4gICR0ZW1wbGF0ZUNvbnRleHQgPSB0aGlzLl8kdGVtcGxhdGVDb250ZXh0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwdWJsaWMgcmVndWxhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgX2JsZW5kQ29sb3I6IENvbG9yIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByb3RlY3RlZCBfc2Nyb2xsQmFyU2l6ZTogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJvdGVjdGVkIF9sYW5nVGV4dERpcjogVGV4dERpcmVjdGlvbiA9IFRleHREaXJlY3Rpb25zLkxUUjtcclxuXHJcbiAgcHJvdGVjdGVkIF9yZWd1bGFyTGVuZ3RoOiBzdHJpbmcgPSBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gIHNldCByZWd1bGFyTGVuZ3RoKHY6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuX3JlZ3VsYXJMZW5ndGggPT09IHYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3JlZ3VsYXJMZW5ndGggPSB2O1xyXG5cclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW1JZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhPy5pZDtcclxuICB9XHJcblxyXG4gIGdldCB6SW5kZXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnpJbmRleDtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmlsaXR5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGl0ZW1SZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLml0ZW1SZW5kZXJlciA9PT0gdikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pdGVtUmVuZGVyZXIgPSB2O1xyXG5cclxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XHJcbiAgZ2V0IGVsZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5faWQgPSB0aGlzLl9zZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50SWQoKTtcclxuICAgIHRoaXMuX2xpc3RJZCA9IHRoaXMuX3NlcnZpY2UuaWQ7XHJcbiAgICB0aGlzLl9kaXNwbGF5SWQgPSBjcmVhdGVEaXNwbGF5SWQodGhpcy5fbGlzdElkLCB0aGlzLl9pZCk7XHJcblxyXG4gICAgY29uc3QgJHBhcnQgPSB0aGlzLiRwYXJ0O1xyXG4gICAgJHBhcnQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcChwYXJ0ID0+IHtcclxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdwYXJ0JywgcGFydCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkZm9jdXMgPSB0aGlzLl9zZXJ2aWNlLiRmb2N1c2VkSWQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIG1hcChpZCA9PiBpZCA9PT0gdGhpcy5pdGVtSWQpLFxyXG4gICAgKTtcclxuXHJcbiAgICAkZm9jdXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0U3RyKHRoaXMuX2RhdGEsIHRoaXMuX2lzU2VsZWN0ZWQsIHRoaXMuX2lzQ29sbGFwc2VkKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRkYXRhID0gdGhpcy4kZGF0YSxcclxuICAgICAgJGNvbmZpZyA9IHRoaXMuJGNvbmZpZyxcclxuICAgICAgJG1lYXN1cmVzID0gdGhpcy4kbWVhc3VyZXM7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGRhdGEsICRmb2N1c10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtkYXRhLCBmb2N1c10pID0+IHtcclxuICAgICAgICBjb25zdCBmID0gZm9jdXMgPz8gZmFsc2UsXHJcbiAgICAgICAgICBjbGFzc2VzID0ge1xyXG4gICAgICAgICAgICBbQ0xBU1NfTkFNRV9TTkFQUEVEXTogZGF0YT8uY29uZmlnPy5zbmFwcGVkID8/IGZhbHNlLCBbQ0xBU1NfTkFNRV9TTkFQUEVEX09VVF06IGRhdGE/LmNvbmZpZz8uc25hcHBlZE91dCA/PyBmYWxzZSxcclxuICAgICAgICAgICAgW0NMQVNTX05BTUVfRk9DVVNdOiBmLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl8kY2xhc3Nlcy5uZXh0KGNsYXNzZXMpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgJGNvbmZpZy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGNvbmZpZyA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGluZGV4Lm5leHQoY29uZmlnPy50YWJJbmRleCA/PyAtMSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZGF0YSwgJGNvbmZpZywgJG1lYXN1cmVzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoW2RhdGEsIGNvbmZpZywgbWVhc3VyZXNdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHRlbXBsYXRlQ29udGV4dC5uZXh0KHtcclxuICAgICAgICAgIGRhdGE6IGRhdGE/LmRhdGEsIHByZXZEYXRhOiBkYXRhPy5wcmV2aW91c2VEYXRhLCBuZXh0RGF0YTogZGF0YT8ubmV4dERhdGEsIG1lYXN1cmVzLFxyXG4gICAgICAgICAgY29uZmlnLCByZXNldGVkOiBmYWxzZSwgaW5kZXg6IGRhdGE/LmluZGV4ID8/IC0gMSwgYXBpOiB0aGlzLl9hcGlTZXJ2aWNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3NlcnZpY2UuaXNWZXJ0aWNhbCkge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5fc2VydmljZS5pdGVtU2l6ZX1weGA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt0aGlzLl9zZXJ2aWNlLml0ZW1TaXplfXB4YDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVNZWFzdXJlcyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kbWVhc3VyZXMubmV4dCh2Py5tZWFzdXJlcyA/IHsgLi4udi5tZWFzdXJlcyB9IDogbnVsbCk7XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZUNvbmZpZyh2OiBJUmVuZGVyVmlydHVhbExpc3RJdGVtPGFueT4gfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kY29uZmlnLm5leHQoe1xyXG4gICAgICAuLi52Py5jb25maWcgfHwge30gYXMgSURpc3BsYXlPYmplY3RDb25maWcsIHNlbGVjdGVkOiB0aGlzLl9pc1NlbGVjdGVkLCBjb2xsYXBzZWQ6IHRoaXMuX2lzQ29sbGFwc2VkLCBmb2N1c2VkOiB0aGlzLl8kZm9jdXNlZC5nZXRWYWx1ZSgpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoLCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgaXRlbUVsZW1lbnQgPSB0aGlzLl9pdGVtPy5uYXRpdmVFbGVtZW50LCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5fY29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCEhZGF0YSAmJiAhIWVsICYmICEhaXRlbUVsZW1lbnQgJiYgISFjb250YWluZXJFbGVtZW50KSB7XHJcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShJVEVNX0lELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICBjb25zdCBzdHlsZXMgPSBlbC5zdHlsZSwgaXRlbUVsZW1lbnRTdHlsZXMgPSBpdGVtRWxlbWVudC5zdHlsZTtcclxuICAgICAgaWYgKHRoaXMuX3NlcnZpY2UuekluZGV4V2hlblNlbGVjdGluZyAhPT0gbnVsbCAmJiB0aGlzLl9pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IHRoaXMuX3NlcnZpY2UuekluZGV4V2hlblNlbGVjdGluZztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzdHlsZXMuekluZGV4ID0gZGF0YS5jb25maWcuekluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2JsZW5kQ29sb3IgPSBkYXRhLmNvbmZpZy5ibGVuZENvbG9yID8/IG51bGw7XHJcbiAgICAgIGlmICghIWNvbnRhaW5lckVsZW1lbnQgJiYgISFkYXRhLmNvbmZpZy5ibGVuZENvbG9yKSB7XHJcbiAgICAgICAgY29udGFpbmVyRWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gU3RyaW5nKGRhdGEuY29uZmlnLm9wYWNpdHkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghIWRhdGEuY29uZmlnLmZpbHRlcikge1xyXG4gICAgICAgIHN0eWxlcy5maWx0ZXIgPSBkYXRhLmNvbmZpZy5maWx0ZXI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbT8uY29uZmlnPy5keW5hbWljICYmIGRhdGEuY29uZmlnLmlzU3R1YiA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX0hJRERFTjtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVndWxhcikge1xyXG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZShQT1NJVElPTiwgUE9TSVRJT05fWkVSTyk7XHJcbiAgICAgICAgc3R5bGVzLnRyYW5zZm9ybSA9IGAke1RSQU5TTEFURV8zRH0oJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID9cclxuICAgICAgICAgICh0aGlzLl9sYW5nVGV4dERpciA9PT0gVGV4dERpcmVjdGlvbnMuUlRMID8gdGhpcy5fc2Nyb2xsQmFyU2l6ZSA6IDApIDpcclxuICAgICAgICAgIGRhdGEubWVhc3VyZXMuZGVsdGF9JHtQWH0sICR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMuZGVsdGEgOiAwfSR7UFh9LCAke1BPU0lUSU9OX1pFUk99KWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKFBPU0lUSU9OLCBgJHtkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5tZWFzdXJlcy55IDogZGF0YS5tZWFzdXJlcy54fWApO1xyXG4gICAgICAgIHN0eWxlcy50cmFuc2Zvcm0gPSBtYXRyaXgzZChkYXRhLm1lYXN1cmVzLnRyYW5zZm9ybWVkWCwgZGF0YS5tZWFzdXJlcy50cmFuc2Zvcm1lZFksIGRhdGEubWVhc3VyZXMueiwgZGF0YS5tZWFzdXJlcy5zY2FsZVgsIGRhdGEubWVhc3VyZXMuc2NhbGVZLFxyXG4gICAgICAgICAgZGF0YS5tZWFzdXJlcy5zY2FsZVosIGRhdGEubWVhc3VyZXMucm90YXRpb25YLCBkYXRhLm1lYXN1cmVzLnJvdGF0aW9uWSwgZGF0YS5tZWFzdXJlcy5yb3RhdGlvblopO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkYXRhLmNvbmZpZy5kaXZpZGVzID4gMSkge1xyXG4gICAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWAgOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgc3R5bGVzLndpZHRoID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWA7XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWluV2lkdGggPSBzdHlsZXMubWluV2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5taW5XaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWF4V2lkdGggPSBzdHlsZXMubWF4V2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5tYXhXaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWluSGVpZ2h0ID0gc3R5bGVzLm1pbkhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcbiAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWF4SGVpZ2h0ID0gc3R5bGVzLm1heEhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcblxyXG4gICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWAgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gO1xyXG4gICAgICAgIHN0eWxlcy5taW5XaWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLm1pbldpZHRofSR7UFh9YDtcclxuICAgICAgICBzdHlsZXMubWF4V2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5tYXhXaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgc3R5bGVzLm1pbkhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcbiAgICAgICAgc3R5bGVzLm1heEhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWAgOiBTSVpFX0FVVE87XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZVBhcnRTdHIodjogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IG51bGwsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4sIGlzQ29sbGFwc2VkOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBvZGQgPSB2Py5jb25maWcub2RkLCByb3dPZGQgPSB2Py5tZWFzdXJlcy5yb3cub2RkO1xyXG5cclxuICAgIGxldCBwYXJ0ID0gUEFSVF9ERUZBVUxUX0lURU0sIGZ4UGFydCA9IFBBUlRfREVGQVVMVF9JVEVNX0ZYO1xyXG4gICAgcGFydCArPSBvZGQgPyBQQVJUX0lURU1fT0REIDogUEFSVF9JVEVNX0VWRU47XHJcbiAgICBwYXJ0ICs9IHJvd09kZCA/IFBBUlRfSVRFTV9ST1dfT0REIDogUEFSVF9JVEVNX1JPV19FVkVOO1xyXG4gICAgZnhQYXJ0ICs9IG9kZCA/IFBBUlRfSVRFTV9GWF9PREQgOiBQQVJUX0lURU1fRlhfRVZFTjtcclxuICAgIGZ4UGFydCArPSByb3dPZGQgPyBQQVJUX0lURU1fUk9XX0ZYX09ERCA6IFBBUlRfSVRFTV9ST1dfRlhfRVZFTjtcclxuICAgIGlmICh2ID8gdi5jb25maWcuc25hcHBlZCA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NOQVBQRUQ7XHJcbiAgICAgIGZ4UGFydCArPSBQQVJUX0lURU1fRlhfU05BUFBFRDtcclxuICAgIH1cclxuICAgIGlmIChpc1NlbGVjdGVkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX1NFTEVDVEVEO1xyXG4gICAgICBmeFBhcnQgKz0gUEFSVF9JVEVNX0ZYX1NFTEVDVEVEO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQ29sbGFwc2VkKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0NPTExBUFNFRDtcclxuICAgICAgZnhQYXJ0ICs9IFBBUlRfSVRFTV9GWF9DT0xMQVBTRUQ7XHJcbiAgICB9XHJcbiAgICBpZiAodiA/IHYuY29uZmlnLm5ldyA6IGZhbHNlKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX05FVztcclxuICAgICAgZnhQYXJ0ICs9IFBBUlRfSVRFTV9GWF9ORVc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYXNGb2N1cygpKSB7XHJcbiAgICAgIHBhcnQgKz0gUEFSVF9JVEVNX0ZPQ1VTRUQ7XHJcbiAgICAgIGZ4UGFydCArPSBQQVJUX0lURU1fRlhfRk9DVVNFRDtcclxuICAgIH1cclxuICAgIHRoaXMuXyRwYXJ0Lm5leHQocGFydCk7XHJcbiAgICB0aGlzLl8kZnhQYXJ0Lm5leHQoZnhQYXJ0KTtcclxuXHJcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaGFzRm9jdXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZS5mb2N1c2VkSWQgPT09IHRoaXMuaXRlbUlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0Qm91bmRzKCk6IElTaXplIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5faXRlbT8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghIWVsKSB7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gZWwub2Zmc2V0V2lkdGgsIGhlaWdodCA9IGVsLm9mZnNldEhlaWdodDtcclxuICAgICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICBpZiAoIXRoaXMuaXRlbT8uY29uZmlnPy5keW5hbWljKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgIHN0eWxlcy56SW5kZXggPSB0aGlzLl9kYXRhPy5jb25maWc/LnpJbmRleCA/PyBERUZBVUxUX1pJTkRFWDtcclxuICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfQkxPQ0s7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpc1N0dWIgPSB0aGlzLl9kYXRhPy5jb25maWc/LmlzU3R1YiA/PyBmYWxzZTtcclxuICAgICAgaWYgKCFpc1N0dWIpIHtcclxuICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfVklTSUJMRTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIGlmICghdGhpcy5pdGVtPy5jb25maWc/LmR5bmFtaWMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgIHN0eWxlcyA9IGVsLnN0eWxlO1xyXG4gICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9OT05FKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9ISURERU4pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,3 +1,3 @@
1
- import { BaseVirtualListItemComponent } from './base-virtual-list-item-component';
2
- export { BaseVirtualListItemComponent, };
1
+ import { BaseVirtualListItemComponent } from './base-virtual-list-item-component';
2
+ export { BaseVirtualListItemComponent, };
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9iYXNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxGLE9BQU8sRUFDSCw0QkFBNEIsR0FDL0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCB7XHJcbiAgICBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50LFxyXG59XHJcbiJdfQ==
@@ -0,0 +1,41 @@
1
+ import { matrix3d } from "../utils";
2
+ export const ID = 'id', NGVL_VISIBILITY = 'ngvl-visibility', MATRIX_3D_HIDDEN = matrix3d(-1000, -1000, 0, 1, 1, 1, 0, 0, 0), ATTR_AREA_SELECTED = 'area-selected', POSITION = 'position', POSITION_ZERO = '0', ITEM_ID = 'item-id', KEY_SPACE = ' ', KEY_ARR_LEFT = 'ArrowLeft', KEY_ARR_UP = 'ArrowUp', KEY_ARR_RIGHT = 'ArrowRight', KEY_ARR_DOWN = 'ArrowDown', EVENT_FOCUS_IN = 'focusin', EVENT_FOCUS_OUT = 'focusout', EVENT_KEY_DOWN = 'keydown', CLASS_NAME_SNAPPED = 'snapped', CLASS_NAME_SNAPPED_OUT = 'snapped-out', CLASS_NAME_FOCUS = 'focus';
3
+ export const DEFAULT_TEMPLATE_CONTEXT = {
4
+ data: undefined,
5
+ prevData: undefined,
6
+ nextData: undefined,
7
+ measures: null,
8
+ config: {
9
+ focused: false,
10
+ selected: false,
11
+ collapsed: false,
12
+ new: false,
13
+ odd: false,
14
+ even: false,
15
+ collapsable: false,
16
+ sticky: 0,
17
+ selectable: false,
18
+ snap: false,
19
+ snapped: false,
20
+ snappedOut: false,
21
+ isVertical: false,
22
+ dynamic: false,
23
+ isSnappingMethodAdvanced: false,
24
+ tabIndex: 0,
25
+ zIndex: '0',
26
+ layoutOffset: 0,
27
+ layoutIndexOffset: 0,
28
+ opacity: 0,
29
+ divides: 0,
30
+ snapToItem: false,
31
+ snapToItemAlign: "center",
32
+ isFirst: false,
33
+ isLast: false,
34
+ fullSize: false,
35
+ totalItems: 0,
36
+ },
37
+ reseted: false,
38
+ index: -1,
39
+ api: null,
40
+ };
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3BDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQ2xCLGVBQWUsR0FBRyxpQkFBaUIsRUFDbkMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM5RCxrQkFBa0IsR0FBRyxlQUFlLEVBQ3BDLFFBQVEsR0FBRyxVQUFVLEVBQ3JCLGFBQWEsR0FBRyxHQUFHLEVBQ25CLE9BQU8sR0FBRyxTQUFTLEVBQ25CLFNBQVMsR0FBRyxHQUFHLEVBQ2YsWUFBWSxHQUFHLFdBQVcsRUFDMUIsVUFBVSxHQUFHLFNBQVMsRUFDdEIsYUFBYSxHQUFHLFlBQVksRUFDNUIsWUFBWSxHQUFHLFdBQVcsRUFDMUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsZUFBZSxHQUFHLFVBQVUsRUFDNUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsa0JBQWtCLEdBQUcsU0FBUyxFQUM5QixzQkFBc0IsR0FBRyxhQUFhLEVBQ3RDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUI7SUFDdEQsSUFBSSxFQUFFLFNBQVM7SUFDZixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRTtRQUNKLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixTQUFTLEVBQUUsS0FBSztRQUNoQixHQUFHLEVBQUUsS0FBSztRQUNWLEdBQUcsRUFBRSxLQUFLO1FBQ1YsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsQ0FBQztRQUNULFVBQVUsRUFBRSxLQUFLO1FBQ2pCLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsS0FBSztRQUNqQixVQUFVLEVBQUUsS0FBSztRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLHdCQUF3QixFQUFFLEtBQUs7UUFDL0IsUUFBUSxFQUFFLENBQUM7UUFDWCxNQUFNLEVBQUUsR0FBRztRQUNYLFlBQVksRUFBRSxDQUFDO1FBQ2YsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsVUFBVSxFQUFFLEtBQUs7UUFDakIsZUFBZSxFQUFFLFFBQVE7UUFDekIsT0FBTyxFQUFFLEtBQUs7UUFDZCxNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxLQUFLO1FBQ2YsVUFBVSxFQUFFLENBQUM7S0FDaEI7SUFDRCxPQUFPLEVBQUUsS0FBSztJQUNkLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDVCxHQUFHLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXRyaXgzZCB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQgeyBJVGVtcGxhdGVDb250ZXh0IH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBJRCA9ICdpZCcsXHJcbiAgICBOR1ZMX1ZJU0lCSUxJVFkgPSAnbmd2bC12aXNpYmlsaXR5JyxcclxuICAgIE1BVFJJWF8zRF9ISURERU4gPSBtYXRyaXgzZCgtMTAwMCwgLTEwMDAsIDAsIDEsIDEsIDEsIDAsIDAsIDApLFxyXG4gICAgQVRUUl9BUkVBX1NFTEVDVEVEID0gJ2FyZWEtc2VsZWN0ZWQnLFxyXG4gICAgUE9TSVRJT04gPSAncG9zaXRpb24nLFxyXG4gICAgUE9TSVRJT05fWkVSTyA9ICcwJyxcclxuICAgIElURU1fSUQgPSAnaXRlbS1pZCcsXHJcbiAgICBLRVlfU1BBQ0UgPSAnICcsXHJcbiAgICBLRVlfQVJSX0xFRlQgPSAnQXJyb3dMZWZ0JyxcclxuICAgIEtFWV9BUlJfVVAgPSAnQXJyb3dVcCcsXHJcbiAgICBLRVlfQVJSX1JJR0hUID0gJ0Fycm93UmlnaHQnLFxyXG4gICAgS0VZX0FSUl9ET1dOID0gJ0Fycm93RG93bicsXHJcbiAgICBFVkVOVF9GT0NVU19JTiA9ICdmb2N1c2luJyxcclxuICAgIEVWRU5UX0ZPQ1VTX09VVCA9ICdmb2N1c291dCcsXHJcbiAgICBFVkVOVF9LRVlfRE9XTiA9ICdrZXlkb3duJyxcclxuICAgIENMQVNTX05BTUVfU05BUFBFRCA9ICdzbmFwcGVkJyxcclxuICAgIENMQVNTX05BTUVfU05BUFBFRF9PVVQgPSAnc25hcHBlZC1vdXQnLFxyXG4gICAgQ0xBU1NfTkFNRV9GT0NVUyA9ICdmb2N1cyc7XHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IERFRkFVTFRfVEVNUExBVEVfQ09OVEVYVDogSVRlbXBsYXRlQ29udGV4dCA9IHtcclxuICAgICAgICBkYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgcHJldkRhdGE6IHVuZGVmaW5lZCxcclxuICAgICAgICBuZXh0RGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgIG1lYXN1cmVzOiBudWxsLFxyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICBmb2N1c2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBuZXc6IGZhbHNlLFxyXG4gICAgICAgICAgICBvZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBldmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgY29sbGFwc2FibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdGlja3k6IDAsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBwZWRPdXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsOiBmYWxzZSxcclxuICAgICAgICAgICAgZHluYW1pYzogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzU25hcHBpbmdNZXRob2RBZHZhbmNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHRhYkluZGV4OiAwLFxyXG4gICAgICAgICAgICB6SW5kZXg6ICcwJyxcclxuICAgICAgICAgICAgbGF5b3V0T2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICBsYXlvdXRJbmRleE9mZnNldDogMCxcclxuICAgICAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICAgICAgZGl2aWRlczogMCxcclxuICAgICAgICAgICAgc25hcFRvSXRlbTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBUb0l0ZW1BbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgaXNGaXJzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzTGFzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZ1bGxTaXplOiBmYWxzZSxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogMCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc2V0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIGluZGV4OiAtMSxcclxuICAgICAgICBhcGk6IG51bGwsXHJcbiAgICB9O1xyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi90ZW1wbGF0ZS1jb250ZXh0JztcclxuXHJcbmV4cG9ydCB0eXBlIHtcclxuICAgIElUZW1wbGF0ZUNvbnRleHQsXHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctbGlzdC1pdGVtL2ludGVyZmFjZXMvdGVtcGxhdGUtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSURpc3BsYXlPYmplY3RDb25maWcsIElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RQdWJsaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL25nLXZpcnR1YWwtbGlzdC1wdWJsaWMuc2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnRcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL2xpc3QtaXRlbS9pbnRlcmZhY2VzL3RlbXBsYXRlLWNvbnRleHQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZUNvbnRleHQ8RCA9IGFueT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBBUEkgcHJvdmlkZXIuXHJcbiAgICAgKi9cclxuICAgIGFwaTogTmdWaXJ0dWFsTGlzdFB1YmxpY1NlcnZpY2UgfCBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IGl0ZW0gZGF0YS5cclxuICAgICAqL1xyXG4gICAgZGF0YTogRDtcclxuICAgIC8qKlxyXG4gICAgICogRGF0YSBvZiB0aGUgcHJldmlvdXMgbGlzdCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBwcmV2RGF0YTogRDtcclxuICAgIC8qKlxyXG4gICAgICogRGF0YSBvZiB0aGUgbmV4dCBsaXN0IGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIG5leHREYXRhOiBEO1xyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IGl0ZW0gbWVhc3VyZW1lbnQgZGF0YS5cclxuICAgICAqL1xyXG4gICAgbWVhc3VyZXM6IElEaXNwbGF5T2JqZWN0TWVhc3VyZXMgfCBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0IGl0ZW0gY29uZmlndXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgY29uZmlnOiBJRGlzcGxheU9iamVjdENvbmZpZztcclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGEgcmVzZXQgc3RhdGUuXHJcbiAgICAgKi9cclxuICAgIHJlc2V0ZWQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIExpc3QgaXRlbSBpbmRleC5cclxuICAgICAqL1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxufSJdfQ==