ng-virtual-list 16.11.4 → 16.12.1

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 (274) hide show
  1. package/README.md +73 -45
  2. package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +133 -31
  3. package/esm2022/lib/components/ng-list-item/const/index.mjs +13 -2
  4. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +35 -42
  5. package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.module.mjs +5 -5
  6. package/esm2022/lib/components/ng-list-item/utils/create-display-id.mjs +7 -1
  7. package/esm2022/lib/components/ng-list-item/utils/get-element-by-index.mjs +17 -3
  8. package/esm2022/lib/components/ng-list-item/utils/index.mjs +3 -2
  9. package/esm2022/lib/components/ng-list-item/utils/matrix-3d.mjs +18 -0
  10. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.mjs +28 -18
  11. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +32 -16
  12. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.mjs +5 -5
  13. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +8 -6
  14. package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.module.mjs +3 -3
  15. package/esm2022/lib/components/ng-prerender-container/core/prerender-track-box.mjs +38 -8
  16. package/esm2022/lib/components/ng-prerender-container/interfaces/refresh-params.mjs +1 -1
  17. package/esm2022/lib/components/ng-prerender-container/ng-prerender-container.component.mjs +7 -6
  18. package/esm2022/lib/components/ng-prerender-container/types/cache.mjs +1 -1
  19. package/esm2022/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.mjs +1 -1
  20. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +68 -27
  21. package/esm2022/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +108 -21
  22. package/esm2022/lib/components/ng-scroll-view/const/index.mjs +4 -2
  23. package/esm2022/lib/components/ng-scroll-view/interfaces/scroll-to-params.mjs +1 -1
  24. package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +551 -71
  25. package/esm2022/lib/components/ng-scroll-view/utils/calculate-direction.mjs +7 -1
  26. package/esm2022/lib/components/ng-scroll-view/utils/calculate-velocity.mjs +12 -0
  27. package/esm2022/lib/components/ng-scroll-view/utils/get-dir.mjs +10 -0
  28. package/esm2022/lib/components/ng-scroll-view/utils/index.mjs +4 -2
  29. package/esm2022/lib/components/ng-scroll-view/utils/matrix-3d.mjs +15 -0
  30. package/esm2022/lib/components/ng-scroller/enums/scroller-directions.mjs +1 -1
  31. package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +199 -123
  32. package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +2 -2
  33. package/esm2022/lib/const/index.mjs +50 -10
  34. package/esm2022/lib/core/cache-map.mjs +1 -54
  35. package/esm2022/lib/core/const/index.mjs +3 -0
  36. package/esm2022/lib/core/enums/index.mjs +3 -0
  37. package/esm2022/lib/core/enums/item-display-methods.mjs +14 -0
  38. package/esm2022/lib/core/events/index.mjs +3 -0
  39. package/esm2022/lib/core/events/track-box-events.mjs +12 -0
  40. package/esm2022/lib/core/interfaces/get-item-position-options.mjs +2 -0
  41. package/esm2022/lib/core/interfaces/get-metrics-returns.mjs +2 -0
  42. package/esm2022/lib/core/interfaces/index.mjs +2 -0
  43. package/esm2022/lib/core/interfaces/item.mjs +2 -0
  44. package/esm2022/lib/core/interfaces/metrics.mjs +2 -0
  45. package/esm2022/lib/core/interfaces/recalculate-metrics-options.mjs +2 -0
  46. package/esm2022/lib/core/interfaces/update-collection-options.mjs +2 -0
  47. package/esm2022/lib/core/interfaces/update-collection-returns.mjs +2 -0
  48. package/esm2022/lib/core/track-box.mjs +619 -204
  49. package/esm2022/lib/core/tracker.mjs +24 -15
  50. package/esm2022/lib/core/types/cache-map-events.mjs +2 -0
  51. package/esm2022/lib/core/types/cache-map-listeners.mjs +2 -0
  52. package/esm2022/lib/core/types/cache.mjs +2 -0
  53. package/esm2022/lib/core/types/index.mjs +2 -0
  54. package/esm2022/lib/core/types/on-change-event-listener.mjs +2 -0
  55. package/esm2022/lib/core/types/on-tick-event-listener.mjs +2 -0
  56. package/esm2022/lib/core/utils/get-service-id-prop.mjs +10 -0
  57. package/esm2022/lib/core/utils/index.mjs +3 -0
  58. package/esm2022/lib/directives/index.mjs +3 -3
  59. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +2 -1
  60. package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +67 -0
  61. package/esm2022/lib/directives/virtual-click/virtual-click.module.mjs +19 -0
  62. package/esm2022/lib/enums/alignments.mjs +12 -0
  63. package/esm2022/lib/enums/collapsing-modes.mjs +22 -0
  64. package/esm2022/lib/enums/index.mjs +8 -4
  65. package/esm2022/lib/enums/selecting-modes-types.mjs +22 -0
  66. package/esm2022/lib/enums/selecting-modes.mjs +22 -0
  67. package/esm2022/lib/enums/snap-to-item-aligns.mjs +22 -0
  68. package/esm2022/lib/enums/spreading-modes.mjs +18 -0
  69. package/esm2022/lib/interfaces/animation-params.mjs +1 -1
  70. package/esm2022/lib/interfaces/base-virtual-list-item-component.mjs +2 -9
  71. package/esm2022/lib/interfaces/index.mjs +1 -1
  72. package/esm2022/lib/interfaces/item-transformation.mjs +2 -0
  73. package/esm2022/lib/interfaces/point.mjs +2 -0
  74. package/esm2022/lib/interfaces/scroll-options.mjs +1 -1
  75. package/esm2022/lib/interfaces/scroll-params.mjs +1 -1
  76. package/esm2022/lib/models/item-config-map.model.mjs +1 -1
  77. package/esm2022/lib/models/item.model.mjs +1 -1
  78. package/esm2022/lib/models/render-item-config.model.mjs +1 -1
  79. package/esm2022/lib/models/render-item-measures.model.mjs +1 -1
  80. package/esm2022/lib/ng-virtual-list-public.service.mjs +6 -7
  81. package/esm2022/lib/ng-virtual-list.component.mjs +1074 -354
  82. package/esm2022/lib/ng-virtual-list.service.mjs +83 -28
  83. package/esm2022/lib/transformations/deck-of-cards-3d.mjs +57 -0
  84. package/esm2022/lib/transformations/deck-of-cards.mjs +54 -0
  85. package/esm2022/lib/transformations/event-horizon.mjs +47 -0
  86. package/esm2022/lib/transformations/index.mjs +13 -0
  87. package/esm2022/lib/transformations/linear.mjs +47 -0
  88. package/esm2022/lib/transformations/swipe-3d.mjs +51 -0
  89. package/esm2022/lib/types/alignment.mjs +2 -0
  90. package/esm2022/lib/types/arithmetic-expression.mjs +2 -0
  91. package/esm2022/lib/types/collapsing-mode.mjs +2 -0
  92. package/esm2022/lib/types/collection-mode.mjs +2 -0
  93. package/esm2022/lib/types/color.mjs +2 -0
  94. package/esm2022/lib/types/direction.mjs +2 -0
  95. package/esm2022/lib/types/float-or-persentage-value.mjs +2 -0
  96. package/esm2022/lib/types/focus-item-params.mjs +1 -1
  97. package/esm2022/lib/types/gradient-color-position.mjs +1 -1
  98. package/esm2022/lib/types/index.mjs +1 -1
  99. package/esm2022/lib/types/item-transform.mjs +2 -0
  100. package/esm2022/lib/types/scroll-direction.mjs +1 -1
  101. package/esm2022/lib/types/selecting-mode.mjs +2 -0
  102. package/esm2022/lib/types/snap-to-item-align.mjs +2 -0
  103. package/esm2022/lib/types/snapping-distance.mjs +2 -0
  104. package/esm2022/lib/types/snapping-method.mjs +2 -0
  105. package/esm2022/lib/types/spreading-mode.mjs +2 -0
  106. package/esm2022/lib/types/text-direction.mjs +2 -0
  107. package/esm2022/lib/utils/animator/animator.mjs +28 -8
  108. package/esm2022/lib/utils/animator/const/index.mjs +2 -0
  109. package/esm2022/lib/utils/animator/ease.mjs +1 -13
  110. package/esm2022/lib/utils/animator/index.mjs +3 -2
  111. package/esm2022/lib/utils/animator/interfaces/animator-params.mjs +2 -0
  112. package/esm2022/lib/utils/animator/interfaces/animator-update-data.mjs +2 -0
  113. package/esm2022/lib/utils/animator/interfaces/index.mjs +2 -0
  114. package/esm2022/lib/utils/animator/types/easing.mjs +1 -1
  115. package/esm2022/lib/utils/event-emitter/event-emitter.mjs +2 -2
  116. package/esm2022/lib/utils/event-emitter/interfaces/event-emitter.mjs +1 -1
  117. package/esm2022/lib/utils/get-scroll-state-version.mjs +12 -0
  118. package/esm2022/lib/utils/is-collapse-mode.mjs +18 -0
  119. package/esm2022/lib/utils/is-collection-mode.mjs +1 -1
  120. package/esm2022/lib/utils/is-direction.mjs +1 -1
  121. package/esm2022/lib/utils/is-persentage-value.mjs +14 -0
  122. package/esm2022/lib/utils/is-select-mode.mjs +18 -0
  123. package/esm2022/lib/utils/is-spreading-mode.mjs +15 -0
  124. package/esm2022/lib/utils/normalize-collection.mjs +42 -0
  125. package/esm2022/lib/utils/parse-arithmetic-expression.mjs +53 -0
  126. package/esm2022/lib/utils/parse-float-or-persentage-value.mjs +17 -0
  127. package/esm2022/lib/utils/scrolling-direction.mjs +29 -0
  128. package/esm2022/lib/utils/snapping-method.mjs +1 -1
  129. package/esm2022/public-api.mjs +4 -1
  130. package/fesm2022/ng-virtual-list.mjs +5789 -3121
  131. package/fesm2022/ng-virtual-list.mjs.map +1 -1
  132. package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +19 -4
  133. package/lib/components/ng-list-item/const/index.d.ts +1 -1
  134. package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +1 -1
  135. package/lib/components/ng-list-item/ng-virtual-list-item.module.d.ts +2 -2
  136. package/lib/components/ng-list-item/utils/create-display-id.d.ts +6 -0
  137. package/lib/components/ng-list-item/utils/get-element-by-index.d.ts +15 -1
  138. package/lib/components/ng-list-item/utils/index.d.ts +2 -1
  139. package/lib/components/ng-list-item/utils/matrix-3d.d.ts +7 -0
  140. package/lib/components/ng-prerender-container/components/ng-prerender-list/ng-prerender-list.component.d.ts +11 -7
  141. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.d.ts +2 -2
  142. package/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.module.d.ts +2 -2
  143. package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +3 -3
  144. package/lib/components/ng-prerender-container/core/prerender-track-box.d.ts +1 -1
  145. package/lib/components/ng-prerender-container/interfaces/refresh-params.d.ts +2 -1
  146. package/lib/components/ng-prerender-container/ng-prerender-container.component.d.ts +5 -4
  147. package/lib/components/ng-prerender-container/types/cache.d.ts +1 -1
  148. package/lib/components/ng-scroll-bar/interfaces/scroll-bar-template-context.d.ts +1 -1
  149. package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +11 -6
  150. package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +30 -10
  151. package/lib/components/ng-scroll-view/const/index.d.ts +3 -1
  152. package/lib/components/ng-scroll-view/interfaces/scroll-to-params.d.ts +4 -1
  153. package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +65 -7
  154. package/lib/components/ng-scroll-view/utils/calculate-direction.d.ts +6 -0
  155. package/lib/components/ng-scroll-view/utils/calculate-velocity.d.ts +7 -0
  156. package/lib/components/ng-scroll-view/utils/get-dir.d.ts +7 -0
  157. package/lib/components/ng-scroll-view/utils/index.d.ts +3 -1
  158. package/lib/components/ng-scroll-view/utils/matrix-3d.d.ts +7 -0
  159. package/lib/components/ng-scroller/enums/scroller-directions.d.ts +2 -1
  160. package/lib/components/ng-scroller/ng-scroller.component.d.ts +40 -26
  161. package/lib/components/ng-scroller/utils/scroll-box.d.ts +1 -1
  162. package/lib/const/index.d.ts +46 -5
  163. package/lib/core/cache-map.d.ts +0 -10
  164. package/lib/core/const/index.d.ts +1 -0
  165. package/lib/core/enums/index.d.ts +2 -0
  166. package/lib/core/enums/item-display-methods.d.ts +12 -0
  167. package/lib/core/events/index.d.ts +2 -0
  168. package/lib/core/events/track-box-events.d.ts +10 -0
  169. package/lib/core/interfaces/get-item-position-options.d.ts +10 -0
  170. package/lib/core/interfaces/get-metrics-returns.d.ts +11 -0
  171. package/lib/core/interfaces/index.d.ts +8 -0
  172. package/lib/core/interfaces/item.d.ts +9 -0
  173. package/lib/core/interfaces/metrics.d.ts +51 -0
  174. package/lib/core/interfaces/recalculate-metrics-options.d.ts +33 -0
  175. package/lib/core/interfaces/update-collection-options.d.ts +10 -0
  176. package/lib/core/interfaces/update-collection-returns.d.ts +14 -0
  177. package/lib/core/track-box.d.ts +26 -96
  178. package/lib/core/tracker.d.ts +1 -1
  179. package/lib/core/types/cache-map-events.d.ts +8 -0
  180. package/lib/core/types/cache-map-listeners.d.ts +9 -0
  181. package/lib/core/types/cache.d.ts +12 -0
  182. package/lib/core/types/index.d.ts +6 -0
  183. package/lib/core/types/on-change-event-listener.d.ts +7 -0
  184. package/lib/core/types/on-tick-event-listener.d.ts +7 -0
  185. package/lib/core/utils/get-service-id-prop.d.ts +7 -0
  186. package/lib/core/utils/index.d.ts +2 -0
  187. package/lib/directives/index.d.ts +2 -2
  188. package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +1 -1
  189. package/lib/directives/{item-click/item-click.directive.d.ts → virtual-click/virtual-click.directive.d.ts} +4 -4
  190. package/lib/directives/virtual-click/virtual-click.module.d.ts +8 -0
  191. package/lib/enums/alignments.d.ts +10 -0
  192. package/lib/enums/collapsing-modes.d.ts +20 -0
  193. package/lib/enums/index.d.ts +7 -9
  194. package/lib/enums/{method-for-selecting-types.d.ts → selecting-modes-types.d.ts} +3 -3
  195. package/lib/enums/{methods-for-selecting.d.ts → selecting-modes.d.ts} +3 -3
  196. package/lib/enums/snap-to-item-aligns.d.ts +20 -0
  197. package/lib/enums/spreading-modes.d.ts +16 -0
  198. package/lib/interfaces/animation-params.d.ts +1 -0
  199. package/lib/interfaces/base-virtual-list-item-component.d.ts +13 -13
  200. package/lib/interfaces/index.d.ts +3 -2
  201. package/lib/interfaces/item-transformation.d.ts +22 -0
  202. package/lib/interfaces/point.d.ts +16 -0
  203. package/lib/interfaces/scroll-options.d.ts +4 -0
  204. package/lib/interfaces/scroll-params.d.ts +2 -1
  205. package/lib/models/item-config-map.model.d.ts +5 -0
  206. package/lib/models/item.model.d.ts +7 -0
  207. package/lib/models/render-item-config.model.d.ts +50 -0
  208. package/lib/models/render-item-measures.model.d.ts +71 -0
  209. package/lib/ng-virtual-list-public.service.d.ts +4 -5
  210. package/lib/ng-virtual-list.component.d.ts +252 -53
  211. package/lib/ng-virtual-list.service.d.ts +30 -12
  212. package/lib/transformations/deck-of-cards-3d.d.ts +54 -0
  213. package/lib/transformations/deck-of-cards.d.ts +50 -0
  214. package/lib/transformations/event-horizon.d.ts +26 -0
  215. package/lib/transformations/index.d.ts +7 -0
  216. package/lib/transformations/linear.d.ts +26 -0
  217. package/lib/transformations/swipe-3d.d.ts +38 -0
  218. package/lib/types/alignment.d.ts +8 -0
  219. package/lib/types/arithmetic-expression.d.ts +10 -0
  220. package/lib/types/collapsing-mode.d.ts +8 -0
  221. package/lib/{enums → types}/collection-mode.d.ts +1 -1
  222. package/lib/types/color.d.ts +4 -0
  223. package/lib/{enums → types}/direction.d.ts +1 -1
  224. package/lib/types/float-or-persentage-value.d.ts +7 -0
  225. package/lib/types/focus-item-params.d.ts +6 -0
  226. package/lib/types/gradient-color-position.d.ts +1 -1
  227. package/lib/types/index.d.ts +15 -1
  228. package/lib/types/item-transform.d.ts +9 -0
  229. package/lib/types/scroll-direction.d.ts +2 -0
  230. package/lib/types/selecting-mode.d.ts +8 -0
  231. package/lib/types/snap-to-item-align.d.ts +8 -0
  232. package/lib/types/snapping-distance.d.ts +8 -0
  233. package/lib/{enums → types}/snapping-method.d.ts +1 -1
  234. package/lib/types/spreading-mode.d.ts +8 -0
  235. package/lib/{enums → types}/text-direction.d.ts +1 -1
  236. package/lib/utils/animator/animator.d.ts +10 -17
  237. package/lib/utils/animator/const/index.d.ts +1 -0
  238. package/lib/utils/animator/ease.d.ts +0 -12
  239. package/lib/utils/animator/index.d.ts +2 -1
  240. package/lib/utils/animator/interfaces/animator-params.d.ts +18 -0
  241. package/lib/utils/animator/interfaces/animator-update-data.d.ts +13 -0
  242. package/lib/utils/animator/interfaces/index.d.ts +3 -0
  243. package/lib/utils/animator/types/easing.d.ts +1 -1
  244. package/lib/utils/event-emitter/event-emitter.d.ts +1 -1
  245. package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +1 -1
  246. package/lib/utils/get-scroll-state-version.d.ts +1 -0
  247. package/lib/utils/is-collapse-mode.d.ts +8 -0
  248. package/lib/utils/is-collection-mode.d.ts +1 -1
  249. package/lib/utils/is-direction.d.ts +1 -1
  250. package/lib/utils/is-persentage-value.d.ts +7 -0
  251. package/lib/utils/is-select-mode.d.ts +8 -0
  252. package/lib/utils/is-spreading-mode.d.ts +8 -0
  253. package/lib/utils/normalize-collection.d.ts +8 -0
  254. package/lib/utils/parse-arithmetic-expression.d.ts +8 -0
  255. package/lib/utils/parse-float-or-persentage-value.d.ts +7 -0
  256. package/lib/utils/scrolling-direction.d.ts +17 -0
  257. package/lib/utils/snapping-method.d.ts +1 -1
  258. package/package.json +1 -1
  259. package/public-api.d.ts +3 -0
  260. package/esm2022/lib/components/ng-scroller/const/index.mjs +0 -2
  261. package/esm2022/lib/directives/item-click/item-click.directive.mjs +0 -66
  262. package/esm2022/lib/directives/item-click/item-click.module.mjs +0 -19
  263. package/esm2022/lib/enums/collection-mode.mjs +0 -2
  264. package/esm2022/lib/enums/direction.mjs +0 -2
  265. package/esm2022/lib/enums/method-for-selecting-types.mjs +0 -22
  266. package/esm2022/lib/enums/method-for-selecting.mjs +0 -2
  267. package/esm2022/lib/enums/methods-for-selecting.mjs +0 -22
  268. package/esm2022/lib/enums/snapping-method.mjs +0 -2
  269. package/esm2022/lib/enums/text-direction.mjs +0 -2
  270. package/esm2022/lib/utils/is-method-for-selecting.mjs +0 -18
  271. package/lib/components/ng-scroller/const/index.d.ts +0 -1
  272. package/lib/directives/item-click/item-click.module.d.ts +0 -8
  273. package/lib/enums/method-for-selecting.d.ts +0 -8
  274. package/lib/utils/is-method-for-selecting.d.ts +0 -8
@@ -1,7 +1,7 @@
1
1
  import { Component, inject, Input, ViewChild, } from '@angular/core';
2
2
  import { BehaviorSubject, distinctUntilChanged, Subject, takeUntil, tap } from 'rxjs';
3
3
  import { ScrollerDirection } from '../enums';
4
- import { SCROLL_VIEW_INVERSION } from '../const';
4
+ import { SCROLL_VIEW_INVERSION, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../const';
5
5
  import { DisposableComponent } from '../../../utils/disposable-component';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
@@ -23,8 +23,6 @@ export class BaseScrollView extends DisposableComponent {
23
23
  }
24
24
  }
25
25
  get direction() { return this._$direction.getValue(); }
26
- _$isVertical = new BehaviorSubject(true);
27
- $isVertical = this._$isVertical.asObservable();
28
26
  _$startOffset = new BehaviorSubject(0);
29
27
  $startOffset = this._$startOffset.asObservable();
30
28
  set startOffset(v) {
@@ -40,27 +38,57 @@ export class BaseScrollView extends DisposableComponent {
40
38
  this._$endOffset.next(v);
41
39
  }
42
40
  }
43
- get direcendOffsettion() { return this._$endOffset.getValue(); }
41
+ get endOffset() { return this._$endOffset.getValue(); }
42
+ _$alignmentStartOffset = new BehaviorSubject(0);
43
+ $alignmentStartOffset = this._$alignmentStartOffset.asObservable();
44
+ set alignmentStartOffset(v) {
45
+ if (this._$alignmentStartOffset.getValue() !== v) {
46
+ this._$alignmentStartOffset.next(v);
47
+ }
48
+ }
49
+ get alignmentStartOffset() { return this._$alignmentStartOffset.getValue(); }
50
+ _$alignmentEndOffset = new BehaviorSubject(0);
51
+ $alignmentEndOffset = this._$alignmentEndOffset.asObservable();
52
+ set alignmentEndOffset(v) {
53
+ if (this._$alignmentEndOffset.getValue() !== v) {
54
+ this._$alignmentEndOffset.next(v);
55
+ }
56
+ }
57
+ get alignmentEndOffset() { return this._$alignmentEndOffset.getValue(); }
58
+ _$isInfinity = new BehaviorSubject(false);
59
+ $isInfinity = this._$isInfinity.asObservable();
60
+ set isInfinity(v) {
61
+ if (this._$isInfinity.getValue() !== v) {
62
+ this._$isInfinity.next(v);
63
+ }
64
+ }
65
+ get isInfinity() { return this._$isInfinity.getValue(); }
66
+ _$isVertical = new BehaviorSubject(true);
67
+ $isVertical = this._$isVertical.asObservable();
44
68
  _$grabbing = new BehaviorSubject(false);
45
69
  $grabbing = this._$grabbing.asObservable();
70
+ _inversion = inject(SCROLL_VIEW_INVERSION);
71
+ _overscrollEnabled = inject(SCROLL_VIEW_OVERSCROLL_ENABLED);
46
72
  _$updateScrollBar = new Subject();
47
73
  $updateScrollBar = this._$updateScrollBar.asObservable();
48
74
  get scrollable() {
49
75
  const { width, height } = this._$viewportBounds.getValue(), isVertical = this._$isVertical.getValue(), viewportSize = isVertical ? height : width, totalSize = this._totalSize;
50
- return totalSize > viewportSize;
76
+ return this._inversion ? (totalSize < viewportSize) : (totalSize > viewportSize);
51
77
  }
52
78
  _isMoving = false;
53
79
  get isMoving() {
54
80
  return this._isMoving;
55
81
  }
56
- _x = this._$startOffset.getValue();
82
+ _x = 0;
57
83
  set x(v) {
58
84
  this._x = this._actualX = v;
85
+ this.normalizeScrollSize();
59
86
  }
60
87
  get x() { return this._x; }
61
- _y = this._$endOffset.getValue();
88
+ _y = 0;
62
89
  set y(v) {
63
90
  this._y = this._actualY = v;
91
+ this.normalizeScrollSize();
64
92
  }
65
93
  get y() { return this._y; }
66
94
  _actualTotalSize = 0;
@@ -68,10 +96,21 @@ export class BaseScrollView extends DisposableComponent {
68
96
  set totalSize(v) {
69
97
  if (this._totalSize !== v) {
70
98
  this._totalSize = v;
71
- const startOffset = this._$startOffset.getValue();
72
- this._actualTotalSize = v + startOffset;
99
+ const startOffset = this._$startOffset.getValue(), endOffset = this._$alignmentEndOffset.getValue();
100
+ this._actualTotalSize = v + startOffset + endOffset;
101
+ this.normalizeScrollSize();
73
102
  }
74
103
  }
104
+ get totalSize() {
105
+ return this._totalSize;
106
+ }
107
+ _startLayoutOffset = 0;
108
+ set startLayoutOffset(v) {
109
+ if (this._startLayoutOffset !== v) {
110
+ this._startLayoutOffset = v;
111
+ }
112
+ }
113
+ get startLayoutOffset() { return this._startLayoutOffset; }
75
114
  get actualScrollHeight() {
76
115
  const { height: viewportHeight } = this._$viewportBounds.getValue(), totalSize = this._actualTotalSize, isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), endOffset = this._$endOffset.getValue();
77
116
  if (this._inversion) {
@@ -103,22 +142,22 @@ export class BaseScrollView extends DisposableComponent {
103
142
  get scrollWidth() {
104
143
  const { width: viewportWidth } = this._$viewportBounds.getValue(), { width: contentWidth } = this._$contentBounds.getValue(), isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), endOffset = this._$endOffset.getValue();
105
144
  if (this._inversion) {
106
- return contentWidth > viewportWidth ? isVertical ? 0 : endOffset : (viewportWidth - contentWidth);
145
+ return contentWidth > viewportWidth ? isVertical ? 0 : endOffset : (viewportWidth - (contentWidth + this._$alignmentEndOffset.getValue()));
107
146
  }
108
- return contentWidth < viewportWidth ? isVertical ? 0 : startOffset : (contentWidth - viewportWidth);
147
+ return contentWidth < viewportWidth ? isVertical ? 0 : startOffset : ((contentWidth + this._$alignmentEndOffset.getValue()) - viewportWidth);
109
148
  }
110
149
  get scrollHeight() {
111
150
  const { height: viewportHeight } = this._$viewportBounds.getValue(), { height: contentHeight } = this._$contentBounds.getValue(), isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), endOffset = this._$endOffset.getValue();
112
151
  if (this._inversion) {
113
- return contentHeight > viewportHeight ? isVertical ? endOffset : 0 : (viewportHeight - contentHeight);
152
+ return contentHeight > viewportHeight ? isVertical ? endOffset : 0 : (viewportHeight - (contentHeight + this._$alignmentEndOffset.getValue()));
114
153
  }
115
- return contentHeight < viewportHeight ? isVertical ? startOffset : 0 : (contentHeight - viewportHeight);
154
+ return contentHeight < viewportHeight ? isVertical ? startOffset : 0 : ((contentHeight + this._$alignmentEndOffset.getValue()) - viewportHeight);
116
155
  }
117
156
  _$viewportBounds = new BehaviorSubject({ width: 0, height: 0 });
118
157
  $viewportBounds = this._$viewportBounds.asObservable();
119
158
  _$contentBounds = new BehaviorSubject({ width: 0, height: 0 });
120
159
  $contentBounds = this._$contentBounds.asObservable();
121
- _inversion = inject(SCROLL_VIEW_INVERSION);
160
+ _isCoordinatesOverrided = false;
122
161
  constructor() {
123
162
  super();
124
163
  const $direction = this.$direction;
@@ -130,20 +169,62 @@ export class BaseScrollView extends DisposableComponent {
130
169
  this.onResizeContent();
131
170
  this.onResizeViewport();
132
171
  }
172
+ overrideCoordinates(x, y) { }
173
+ normalizeScrollSize() {
174
+ if (this._$isInfinity.getValue()) {
175
+ const isVertical = this._$isVertical.getValue();
176
+ if (isVertical) {
177
+ const scrollSize = (this._totalSize - this._$viewportBounds.getValue().height);
178
+ if (this._y < 0) {
179
+ this._isCoordinatesOverrided = true;
180
+ const currentPosition = scrollSize;
181
+ this.overrideCoordinates(this._x, currentPosition);
182
+ this._y = currentPosition;
183
+ return true;
184
+ }
185
+ else if (this._y > scrollSize) {
186
+ this._isCoordinatesOverrided = true;
187
+ const currentPosition = 0;
188
+ this.overrideCoordinates(this._x, currentPosition);
189
+ this._y = currentPosition;
190
+ return true;
191
+ }
192
+ }
193
+ else {
194
+ const scrollSize = (this._totalSize - this._$viewportBounds.getValue().width);
195
+ if (this._x < 0) {
196
+ this._isCoordinatesOverrided = true;
197
+ const currentPosition = scrollSize;
198
+ this.overrideCoordinates(currentPosition, this._y);
199
+ this._x = currentPosition;
200
+ return true;
201
+ }
202
+ else if (this._x > scrollSize) {
203
+ this._isCoordinatesOverrided = true;
204
+ const currentPosition = 0;
205
+ this.overrideCoordinates(currentPosition, this._y);
206
+ this._x = currentPosition;
207
+ return true;
208
+ }
209
+ }
210
+ }
211
+ this._isCoordinatesOverrided = false;
212
+ return false;
213
+ }
133
214
  onResizeViewport() {
134
215
  const viewport = this.scrollViewport?.nativeElement;
135
- if (viewport) {
136
- const isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), endOffset = this._$endOffset.getValue(), w = viewport.offsetWidth, h = viewport.offsetHeight, width = isVertical ? w : w - startOffset - endOffset, height = isVertical ? h - startOffset - endOffset : h, bounds = this._$viewportBounds.getValue();
216
+ if (!!viewport) {
217
+ const isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), endOffset = this._$endOffset.getValue(), w = viewport.offsetWidth, h = viewport.offsetHeight, width = isVertical ? w : (w - startOffset - endOffset), height = isVertical ? (h - startOffset - endOffset) : h, bounds = this._$viewportBounds.getValue();
137
218
  if (bounds.width === width && bounds.height === height) {
138
219
  return;
139
220
  }
140
221
  this._$viewportBounds.next({ width, height });
141
222
  }
142
223
  }
143
- onResizeContent() {
224
+ onResizeContent(value = null) {
144
225
  const content = this.scrollContent?.nativeElement;
145
- if (content) {
146
- const isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), w = content.offsetWidth, h = content.offsetHeight, width = isVertical ? w : w - startOffset, height = isVertical ? h - startOffset : h, bounds = this._$contentBounds.getValue();
226
+ if (!!content) {
227
+ const isVertical = this._$isVertical.getValue(), startOffset = this._$startOffset.getValue(), w = content.offsetWidth, h = content.offsetHeight, width = isVertical ? w : value ?? (w - startOffset), height = isVertical ? value ?? (h - startOffset) : h, bounds = this._$contentBounds.getValue();
147
228
  if (bounds.width === width && bounds.height === height) {
148
229
  return;
149
230
  }
@@ -151,7 +232,7 @@ export class BaseScrollView extends DisposableComponent {
151
232
  }
152
233
  }
153
234
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseScrollView, deps: [], target: i0.ɵɵFactoryTarget.Component });
154
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseScrollView, selector: "base-scroll-view", inputs: { direction: "direction", startOffset: "startOffset", endOffset: "endOffset" }, viewQueries: [{ propertyName: "scrollContent", first: true, predicate: ["scrollContent"], descendants: true }, { propertyName: "scrollViewport", first: true, predicate: ["scrollViewport"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
235
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BaseScrollView, selector: "base-scroll-view", inputs: { direction: "direction", startOffset: "startOffset", endOffset: "endOffset", alignmentStartOffset: "alignmentStartOffset", alignmentEndOffset: "alignmentEndOffset", isInfinity: "isInfinity" }, viewQueries: [{ propertyName: "scrollContent", first: true, predicate: ["scrollContent"], descendants: true }, { propertyName: "scrollViewport", first: true, predicate: ["scrollViewport"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
155
236
  }
156
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseScrollView, decorators: [{
157
238
  type: Component,
@@ -171,5 +252,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
171
252
  type: Input
172
253
  }], endOffset: [{
173
254
  type: Input
255
+ }], alignmentStartOffset: [{
256
+ type: Input
257
+ }], alignmentEndOffset: [{
258
+ type: Input
259
+ }], isInfinity: [{
260
+ type: Input
174
261
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zY3JvbGwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC12aWV3L2Jhc2UvYmFzZS1zY3JvbGwtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FDbEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sVUFBVSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFMUU7Ozs7Ozs7R0FPRztBQUtILE1BQU0sT0FBTyxjQUFlLFNBQVEsbUJBQW1CO0lBRW5ELGFBQWEsQ0FBeUM7SUFHdEQsY0FBYyxDQUF5QztJQUU3QyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQXFCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25GLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELElBQ0ksU0FBUyxDQUFDLENBQXFCO1FBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBQ0QsSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEs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RyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDekMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRTtnQkFDcEQsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoRDtJQUNMLENBQUM7d0dBL01RLGNBQWM7NEZBQWQsY0FBYywwWEFGYixFQUFFOzs0RkFFSCxjQUFjO2tCQUoxQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzBFQUdHLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlO2dCQUkxQixjQUFjO3NCQURiLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQU12QixTQUFTO3NCQURaLEtBQUs7Z0JBY0YsV0FBVztzQkFEZCxLQUFLO2dCQVdGLFNBQVM7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2Nyb2xsZXJEaXJlY3Rpb24sIFNjcm9sbGVyRGlyZWN0aW9ucyB9IGZyb20gJy4uL2VudW1zJztcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2VTY3JvbGxWaWV3XHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE2LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGwtdmlldy9iYXNlL2Jhc2Utc2Nyb2xsLXZpZXcuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Jhc2Utc2Nyb2xsLXZpZXcnLFxyXG4gICAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVNjcm9sbFZpZXcgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRlbnQnKVxyXG4gICAgc2Nyb2xsQ29udGVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsVmlld3BvcnQnKVxyXG4gICAgc2Nyb2xsVmlld3BvcnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGRpcmVjdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsZXJEaXJlY3Rpb25zPihTY3JvbGxlckRpcmVjdGlvbi5WRVJUSUNBTCk7XHJcbiAgICByZWFkb25seSAkZGlyZWN0aW9uID0gdGhpcy5fJGRpcmVjdGlvbi5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlyZWN0aW9uKHY6IFNjcm9sbGVyRGlyZWN0aW9ucykge1xyXG4gICAgICAgIGlmICh0aGlzLl8kZGlyZWN0aW9uLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGRpcmVjdGlvbi5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBkaXJlY3Rpb24oKSB7IHJldHVybiB0aGlzLl8kZGlyZWN0aW9uLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRpc1ZlcnRpY2FsID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICAgIHJlYWRvbmx5ICRpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kc3RhcnRPZmZzZXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkc3RhcnRPZmZzZXQgPSB0aGlzLl8kc3RhcnRPZmZzZXQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHN0YXJ0T2Zmc2V0KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kc3RhcnRPZmZzZXQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgc3RhcnRPZmZzZXQoKSB7IHJldHVybiB0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGVuZE9mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICAgIHJlYWRvbmx5ICRlbmRPZmZzZXQgPSB0aGlzLl8kZW5kT2Zmc2V0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBlbmRPZmZzZXQodjogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kZW5kT2Zmc2V0Lm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGRpcmVjZW5kT2Zmc2V0dGlvbigpIHsgcmV0dXJuIHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGdyYWJiaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICByZWFkb25seSAkZ3JhYmJpbmcgPSB0aGlzLl8kZ3JhYmJpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kdXBkYXRlU2Nyb2xsQmFyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByb3RlY3RlZCAkdXBkYXRlU2Nyb2xsQmFyID0gdGhpcy5fJHVwZGF0ZVNjcm9sbEJhci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBnZXQgc2Nyb2xsYWJsZSgpIHtcclxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgdmlld3BvcnRTaXplID0gaXNWZXJ0aWNhbCA/IGhlaWdodCA6IHdpZHRoLFxyXG4gICAgICAgICAgICB0b3RhbFNpemUgPSB0aGlzLl90b3RhbFNpemU7XHJcbiAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSA+IHZpZXdwb3J0U2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2lzTW92aW5nID0gZmFsc2U7XHJcbiAgICBnZXQgaXNNb3ZpbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW92aW5nO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfeDogbnVtYmVyID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCk7XHJcbiAgICBzZXQgeCh2OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl94ID0gdGhpcy5fYWN0dWFsWCA9IHY7XHJcbiAgICB9XHJcbiAgICBnZXQgeCgpIHsgcmV0dXJuIHRoaXMuX3g7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3k6IG51bWJlciA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKTtcclxuICAgIHNldCB5KHY6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX3kgPSB0aGlzLl9hY3R1YWxZID0gdjtcclxuICAgIH1cclxuICAgIGdldCB5KCkgeyByZXR1cm4gdGhpcy5feTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfYWN0dWFsVG90YWxTaXplOiBudW1iZXIgPSAwO1xyXG4gICAgcHJvdGVjdGVkIF90b3RhbFNpemU6IG51bWJlciA9IDA7XHJcbiAgICBzZXQgdG90YWxTaXplKHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLl90b3RhbFNpemUgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fdG90YWxTaXplID0gdjtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSB0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgdGhpcy5fYWN0dWFsVG90YWxTaXplID0gdiArIHN0YXJ0T2Zmc2V0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgYWN0dWFsU2Nyb2xsSGVpZ2h0KCkge1xyXG4gICAgICAgIGNvbnN0IHsgaGVpZ2h0OiB2aWV3cG9ydEhlaWdodCB9ID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHRoaXMuX2FjdHVhbFRvdGFsU2l6ZSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBpZiAodGhpcy5faW52ZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgPiB2aWV3cG9ydEhlaWdodCA/IGlzVmVydGljYWwgPyBlbmRPZmZzZXQgOiAwIDogdmlld3BvcnRIZWlnaHQgLSB0b3RhbFNpemU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0b3RhbFNpemUgPCB2aWV3cG9ydEhlaWdodCA/IGlzVmVydGljYWwgPyBzdGFydE9mZnNldCA6IDAgOiB0b3RhbFNpemUgLSB2aWV3cG9ydEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYWN0dWFsU2Nyb2xsV2lkdGgoKSB7XHJcbiAgICAgICAgY29uc3QgeyB3aWR0aDogdmlld3BvcnRXaWR0aCB9ID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHRvdGFsU2l6ZSA9IHRoaXMuX2FjdHVhbFRvdGFsU2l6ZSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBpZiAodGhpcy5faW52ZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0b3RhbFNpemUgPiB2aWV3cG9ydFdpZHRoID8gaXNWZXJ0aWNhbCA/IDAgOiBlbmRPZmZzZXQgOiB2aWV3cG9ydFdpZHRoIC0gdG90YWxTaXplO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdG90YWxTaXplIDwgdmlld3BvcnRXaWR0aCA/IGlzVmVydGljYWwgPyAwIDogc3RhcnRPZmZzZXQgOiB0b3RhbFNpemUgLSB2aWV3cG9ydFdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfYWN0dWFsWDogbnVtYmVyID0gMDtcclxuICAgIGdldCBhY3R1YWxTY3JvbGxMZWZ0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hY3R1YWxYO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfYWN0dWFsWTogbnVtYmVyID0gMDtcclxuICAgIGdldCBhY3R1YWxTY3JvbGxUb3AoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdHVhbFk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNjcm9sbExlZnQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3g7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNjcm9sbFRvcCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5feTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2Nyb2xsV2lkdGgoKSB7XHJcbiAgICAgICAgY29uc3QgeyB3aWR0aDogdmlld3BvcnRXaWR0aCB9ID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHsgd2lkdGg6IGNvbnRlbnRXaWR0aCB9ID0gdGhpcy5fJGNvbnRlbnRCb3VuZHMuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBpZiAodGhpcy5faW52ZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50V2lkdGggPiB2aWV3cG9ydFdpZHRoID8gaXNWZXJ0aWNhbCA/IDAgOiBlbmRPZmZzZXQgOiAodmlld3BvcnRXaWR0aCAtIGNvbnRlbnRXaWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb250ZW50V2lkdGggPCB2aWV3cG9ydFdpZHRoID8gaXNWZXJ0aWNhbCA/IDAgOiBzdGFydE9mZnNldCA6IChjb250ZW50V2lkdGggLSB2aWV3cG9ydFdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2Nyb2xsSGVpZ2h0KCkge1xyXG4gICAgICAgIGNvbnN0IHsgaGVpZ2h0OiB2aWV3cG9ydEhlaWdodCB9ID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHsgaGVpZ2h0OiBjb250ZW50SGVpZ2h0IH0gPSB0aGlzLl8kY29udGVudEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgZW5kT2Zmc2V0ID0gdGhpcy5fJGVuZE9mZnNldC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLl9pbnZlcnNpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRIZWlnaHQgPiB2aWV3cG9ydEhlaWdodCA/IGlzVmVydGljYWwgPyBlbmRPZmZzZXQgOiAwIDogKHZpZXdwb3J0SGVpZ2h0IC0gY29udGVudEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb250ZW50SGVpZ2h0IDwgdmlld3BvcnRIZWlnaHQgPyBpc1ZlcnRpY2FsID8gc3RhcnRPZmZzZXQgOiAwIDogKGNvbnRlbnRIZWlnaHQgLSB2aWV3cG9ydEhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kdmlld3BvcnRCb3VuZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTaXplPih7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XHJcbiAgICByZWFkb25seSAkdmlld3BvcnRCb3VuZHMgPSB0aGlzLl8kdmlld3BvcnRCb3VuZHMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY29udGVudEJvdW5kcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNpemU+KHsgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcclxuICAgIHJlYWRvbmx5ICRjb250ZW50Qm91bmRzID0gdGhpcy5fJGNvbnRlbnRCb3VuZHMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cclxuICAgIHByb3RlY3RlZCBfaW52ZXJzaW9uID0gaW5qZWN0KFNDUk9MTF9WSUVXX0lOVkVSU0lPTik7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGRpcmVjdGlvbiA9IHRoaXMuJGRpcmVjdGlvbjtcclxuICAgICAgICAkZGlyZWN0aW9uLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kaXNWZXJ0aWNhbC5uZXh0KHYgPT09IFNjcm9sbGVyRGlyZWN0aW9uLlZFUlRJQ0FMKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aWNrKCkge1xyXG4gICAgICAgIHRoaXMub25SZXNpemVDb250ZW50KCk7XHJcbiAgICAgICAgdGhpcy5vblJlc2l6ZVZpZXdwb3J0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uUmVzaXplVmlld3BvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmICh2aWV3cG9ydCkge1xyXG4gICAgICAgICAgICBjb25zdCBpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICB3ID0gdmlld3BvcnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgICAgICAgICBoID0gdmlld3BvcnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgd2lkdGggPSBpc1ZlcnRpY2FsID8gdyA6IHcgLSBzdGFydE9mZnNldCAtIGVuZE9mZnNldCxcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IGlzVmVydGljYWwgPyBoIC0gc3RhcnRPZmZzZXQgLSBlbmRPZmZzZXQgOiBoLFxyXG4gICAgICAgICAgICAgICAgYm91bmRzID0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGlmIChib3VuZHMud2lkdGggPT09IHdpZHRoICYmIGJvdW5kcy5oZWlnaHQgPT09IGhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5uZXh0KHsgd2lkdGgsIGhlaWdodCB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uUmVzaXplQ29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5zY3JvbGxDb250ZW50Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmIChjb250ZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIHcgPSBjb250ZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgaCA9IGNvbnRlbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgd2lkdGggPSBpc1ZlcnRpY2FsID8gdyA6IHcgLSBzdGFydE9mZnNldCxcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IGlzVmVydGljYWwgPyBoIC0gc3RhcnRPZmZzZXQgOiBoLFxyXG4gICAgICAgICAgICAgICAgYm91bmRzID0gdGhpcy5fJGNvbnRlbnRCb3VuZHMuZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgaWYgKGJvdW5kcy53aWR0aCA9PT0gd2lkdGggJiYgYm91bmRzLmhlaWdodCA9PT0gaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fJGNvbnRlbnRCb3VuZHMubmV4dCh7IHdpZHRoLCBoZWlnaHQgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zY3JvbGwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC12aWV3L2Jhc2UvYmFzZS1zY3JvbGwtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FDbEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sVUFBVSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFMUU7Ozs7Ozs7R0FPRztBQUtILE1BQU0sT0FBTyxjQUFlLFNBQVEsbUJBQW1CO0lBRW5ELGFBQWEsQ0FBeUM7SUFHdEQsY0FBYyxDQUF5QztJQUU3QyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQTJCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pGLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELElBQ0ksU0FBUyxDQUFDLENBQTJCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBQ0QsSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsV0FB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RyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZTtnQkFJMUIsY0FBYztzQkFEYixTQUFTO3VCQUFDLGdCQUFnQjtnQkFNdkIsU0FBUztzQkFEWixLQUFLO2dCQVdGLFdBQVc7c0JBRGQsS0FBSztnQkFXRixTQUFTO3NCQURaLEtBQUs7Z0JBV0Ysb0JBQW9CO3NCQUR2QixLQUFLO2dCQVdGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFXRixVQUFVO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNjcm9sbGVyRGlyZWN0aW9uLCBTY3JvbGxlckRpcmVjdGlvbnMgfSBmcm9tICcuLi9lbnVtcyc7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNDUk9MTF9WSUVXX0lOVkVSU0lPTiwgU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVEIH0gZnJvbSAnLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2VTY3JvbGxWaWV3XHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE2LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGwtdmlldy9iYXNlL2Jhc2Utc2Nyb2xsLXZpZXcuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2Jhc2Utc2Nyb2xsLXZpZXcnLFxyXG4gICAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZVNjcm9sbFZpZXcgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRlbnQnKVxyXG4gICAgc2Nyb2xsQ29udGVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsVmlld3BvcnQnKVxyXG4gICAgc2Nyb2xsVmlld3BvcnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGRpcmVjdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsZXJEaXJlY3Rpb25zIHwgYW55PihTY3JvbGxlckRpcmVjdGlvbi5WRVJUSUNBTCk7XHJcbiAgICByZWFkb25seSAkZGlyZWN0aW9uID0gdGhpcy5fJGRpcmVjdGlvbi5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlyZWN0aW9uKHY6IFNjcm9sbGVyRGlyZWN0aW9ucyB8IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl8kZGlyZWN0aW9uLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGRpcmVjdGlvbi5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBkaXJlY3Rpb24oKSB7IHJldHVybiB0aGlzLl8kZGlyZWN0aW9uLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRzdGFydE9mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICAgIHJlYWRvbmx5ICRzdGFydE9mZnNldCA9IHRoaXMuXyRzdGFydE9mZnNldC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc3RhcnRPZmZzZXQodjogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRzdGFydE9mZnNldC5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRzdGFydE9mZnNldC5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBzdGFydE9mZnNldCgpIHsgcmV0dXJuIHRoaXMuXyRzdGFydE9mZnNldC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kZW5kT2Zmc2V0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gICAgcmVhZG9ubHkgJGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGVuZE9mZnNldCh2OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5fJGVuZE9mZnNldC5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRlbmRPZmZzZXQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgZW5kT2Zmc2V0KCkgeyByZXR1cm4gdGhpcy5fJGVuZE9mZnNldC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kYWxpZ25tZW50U3RhcnRPZmZzZXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkYWxpZ25tZW50U3RhcnRPZmZzZXQgPSB0aGlzLl8kYWxpZ25tZW50U3RhcnRPZmZzZXQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGFsaWdubWVudFN0YXJ0T2Zmc2V0KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLl8kYWxpZ25tZW50U3RhcnRPZmZzZXQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kYWxpZ25tZW50U3RhcnRPZmZzZXQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgYWxpZ25tZW50U3RhcnRPZmZzZXQoKSB7IHJldHVybiB0aGlzLl8kYWxpZ25tZW50U3RhcnRPZmZzZXQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGFsaWdubWVudEVuZE9mZnNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICAgIHJlYWRvbmx5ICRhbGlnbm1lbnRFbmRPZmZzZXQgPSB0aGlzLl8kYWxpZ25tZW50RW5kT2Zmc2V0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBhbGlnbm1lbnRFbmRPZmZzZXQodjogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRhbGlnbm1lbnRFbmRPZmZzZXQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kYWxpZ25tZW50RW5kT2Zmc2V0Lm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGFsaWdubWVudEVuZE9mZnNldCgpIHsgcmV0dXJuIHRoaXMuXyRhbGlnbm1lbnRFbmRPZmZzZXQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGlzSW5maW5pdHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHJlYWRvbmx5ICRpc0luZmluaXR5ID0gdGhpcy5fJGlzSW5maW5pdHkuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGlzSW5maW5pdHkodjogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICh0aGlzLl8kaXNJbmZpbml0eS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRpc0luZmluaXR5Lm5leHQodik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0IGlzSW5maW5pdHkoKSB7IHJldHVybiB0aGlzLl8kaXNJbmZpbml0eS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kaXNWZXJ0aWNhbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgICByZWFkb25seSAkaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGdyYWJiaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICByZWFkb25seSAkZ3JhYmJpbmcgPSB0aGlzLl8kZ3JhYmJpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF9pbnZlcnNpb24gPSBpbmplY3QoU0NST0xMX1ZJRVdfSU5WRVJTSU9OKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgX292ZXJzY3JvbGxFbmFibGVkID0gaW5qZWN0KFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kdXBkYXRlU2Nyb2xsQmFyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByb3RlY3RlZCAkdXBkYXRlU2Nyb2xsQmFyID0gdGhpcy5fJHVwZGF0ZVNjcm9sbEJhci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBnZXQgc2Nyb2xsYWJsZSgpIHtcclxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgdmlld3BvcnRTaXplID0gaXNWZXJ0aWNhbCA/IGhlaWdodCA6IHdpZHRoLFxyXG4gICAgICAgICAgICB0b3RhbFNpemUgPSB0aGlzLl90b3RhbFNpemU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludmVyc2lvbiA/ICh0b3RhbFNpemUgPCB2aWV3cG9ydFNpemUpIDogKHRvdGFsU2l6ZSA+IHZpZXdwb3J0U2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9pc01vdmluZyA9IGZhbHNlO1xyXG4gICAgZ2V0IGlzTW92aW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc01vdmluZztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3g6IG51bWJlciA9IDA7XHJcbiAgICBzZXQgeCh2OiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl94ID0gdGhpcy5fYWN0dWFsWCA9IHY7XHJcblxyXG4gICAgICAgIHRoaXMubm9ybWFsaXplU2Nyb2xsU2l6ZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHgoKSB7IHJldHVybiB0aGlzLl94OyB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF95OiBudW1iZXIgPSAwO1xyXG4gICAgc2V0IHkodjogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5feSA9IHRoaXMuX2FjdHVhbFkgPSB2O1xyXG5cclxuICAgICAgICB0aGlzLm5vcm1hbGl6ZVNjcm9sbFNpemUoKTtcclxuICAgIH1cclxuICAgIGdldCB5KCkgeyByZXR1cm4gdGhpcy5feTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfYWN0dWFsVG90YWxTaXplOiBudW1iZXIgPSAwO1xyXG4gICAgcHJvdGVjdGVkIF90b3RhbFNpemU6IG51bWJlciA9IDA7XHJcbiAgICBzZXQgdG90YWxTaXplKHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLl90b3RhbFNpemUgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fdG90YWxTaXplID0gdjtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSB0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKSwgZW5kT2Zmc2V0ID0gdGhpcy5fJGFsaWdubWVudEVuZE9mZnNldC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9hY3R1YWxUb3RhbFNpemUgPSB2ICsgc3RhcnRPZmZzZXQgKyBlbmRPZmZzZXQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVNjcm9sbFNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgdG90YWxTaXplKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90b3RhbFNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9zdGFydExheW91dE9mZnNldDogbnVtYmVyID0gMDtcclxuICAgIHNldCBzdGFydExheW91dE9mZnNldCh2OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5fc3RhcnRMYXlvdXRPZmZzZXQgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3RhcnRMYXlvdXRPZmZzZXQgPSB2O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBzdGFydExheW91dE9mZnNldCgpIHsgcmV0dXJuIHRoaXMuX3N0YXJ0TGF5b3V0T2Zmc2V0OyB9XHJcblxyXG4gICAgZ2V0IGFjdHVhbFNjcm9sbEhlaWdodCgpIHtcclxuICAgICAgICBjb25zdCB7IGhlaWdodDogdmlld3BvcnRIZWlnaHQgfSA9IHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICB0b3RhbFNpemUgPSB0aGlzLl9hY3R1YWxUb3RhbFNpemUsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IHRoaXMuXyRzdGFydE9mZnNldC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBlbmRPZmZzZXQgPSB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2ludmVyc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdG90YWxTaXplID4gdmlld3BvcnRIZWlnaHQgPyBpc1ZlcnRpY2FsID8gZW5kT2Zmc2V0IDogMCA6IHZpZXdwb3J0SGVpZ2h0IC0gdG90YWxTaXplO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdG90YWxTaXplIDwgdmlld3BvcnRIZWlnaHQgPyBpc1ZlcnRpY2FsID8gc3RhcnRPZmZzZXQgOiAwIDogdG90YWxTaXplIC0gdmlld3BvcnRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGFjdHVhbFNjcm9sbFdpZHRoKCkge1xyXG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IHZpZXdwb3J0V2lkdGggfSA9IHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICB0b3RhbFNpemUgPSB0aGlzLl9hY3R1YWxUb3RhbFNpemUsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IHRoaXMuXyRzdGFydE9mZnNldC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBlbmRPZmZzZXQgPSB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2ludmVyc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdG90YWxTaXplID4gdmlld3BvcnRXaWR0aCA/IGlzVmVydGljYWwgPyAwIDogZW5kT2Zmc2V0IDogdmlld3BvcnRXaWR0aCAtIHRvdGFsU2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSA8IHZpZXdwb3J0V2lkdGggPyBpc1ZlcnRpY2FsID8gMCA6IHN0YXJ0T2Zmc2V0IDogdG90YWxTaXplIC0gdmlld3BvcnRXaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2FjdHVhbFg6IG51bWJlciA9IDA7XHJcbiAgICBnZXQgYWN0dWFsU2Nyb2xsTGVmdCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWN0dWFsWDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2FjdHVhbFk6IG51bWJlciA9IDA7XHJcbiAgICBnZXQgYWN0dWFsU2Nyb2xsVG9wKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hY3R1YWxZO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzY3JvbGxMZWZ0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl94O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzY3JvbGxUb3AoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3k7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNjcm9sbFdpZHRoKCkge1xyXG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IHZpZXdwb3J0V2lkdGggfSA9IHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICB7IHdpZHRoOiBjb250ZW50V2lkdGggfSA9IHRoaXMuXyRjb250ZW50Qm91bmRzLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IHRoaXMuXyRzdGFydE9mZnNldC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBlbmRPZmZzZXQgPSB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2ludmVyc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudFdpZHRoID4gdmlld3BvcnRXaWR0aCA/IGlzVmVydGljYWwgPyAwIDogZW5kT2Zmc2V0IDogKHZpZXdwb3J0V2lkdGggLSAoY29udGVudFdpZHRoICsgdGhpcy5fJGFsaWdubWVudEVuZE9mZnNldC5nZXRWYWx1ZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb250ZW50V2lkdGggPCB2aWV3cG9ydFdpZHRoID8gaXNWZXJ0aWNhbCA/IDAgOiBzdGFydE9mZnNldCA6ICgoY29udGVudFdpZHRoICsgdGhpcy5fJGFsaWdubWVudEVuZE9mZnNldC5nZXRWYWx1ZSgpKSAtIHZpZXdwb3J0V2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzY3JvbGxIZWlnaHQoKSB7XHJcbiAgICAgICAgY29uc3QgeyBoZWlnaHQ6IHZpZXdwb3J0SGVpZ2h0IH0gPSB0aGlzLl8kdmlld3BvcnRCb3VuZHMuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgeyBoZWlnaHQ6IGNvbnRlbnRIZWlnaHQgfSA9IHRoaXMuXyRjb250ZW50Qm91bmRzLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IHRoaXMuXyRzdGFydE9mZnNldC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICBlbmRPZmZzZXQgPSB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2ludmVyc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGVudEhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0ID8gaXNWZXJ0aWNhbCA/IGVuZE9mZnNldCA6IDAgOiAodmlld3BvcnRIZWlnaHQgLSAoY29udGVudEhlaWdodCArIHRoaXMuXyRhbGlnbm1lbnRFbmRPZmZzZXQuZ2V0VmFsdWUoKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29udGVudEhlaWdodCA8IHZpZXdwb3J0SGVpZ2h0ID8gaXNWZXJ0aWNhbCA/IHN0YXJ0T2Zmc2V0IDogMCA6ICgoY29udGVudEhlaWdodCArIHRoaXMuXyRhbGlnbm1lbnRFbmRPZmZzZXQuZ2V0VmFsdWUoKSkgLSB2aWV3cG9ydEhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kdmlld3BvcnRCb3VuZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTaXplPih7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XHJcbiAgICByZWFkb25seSAkdmlld3BvcnRCb3VuZHMgPSB0aGlzLl8kdmlld3BvcnRCb3VuZHMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY29udGVudEJvdW5kcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNpemU+KHsgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcclxuICAgIHJlYWRvbmx5ICRjb250ZW50Qm91bmRzID0gdGhpcy5fJGNvbnRlbnRCb3VuZHMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF9pc0Nvb3JkaW5hdGVzT3ZlcnJpZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGRpcmVjdGlvbiA9IHRoaXMuJGRpcmVjdGlvbjtcclxuICAgICAgICAkZGlyZWN0aW9uLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kaXNWZXJ0aWNhbC5uZXh0KHYgPT09IFNjcm9sbGVyRGlyZWN0aW9uLlZFUlRJQ0FMKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aWNrKCkge1xyXG4gICAgICAgIHRoaXMub25SZXNpemVDb250ZW50KCk7XHJcbiAgICAgICAgdGhpcy5vblJlc2l6ZVZpZXdwb3J0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlQ29vcmRpbmF0ZXMoeDogbnVtYmVyLCB5OiBudW1iZXIpIHsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBub3JtYWxpemVTY3JvbGxTaXplKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl8kaXNJbmZpbml0eS5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICBpZiAoaXNWZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsU2l6ZSA9ICh0aGlzLl90b3RhbFNpemUgLSB0aGlzLl8kdmlld3BvcnRCb3VuZHMuZ2V0VmFsdWUoKS5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3kgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNDb29yZGluYXRlc092ZXJyaWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBvc2l0aW9uID0gc2Nyb2xsU2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlQ29vcmRpbmF0ZXModGhpcy5feCwgY3VycmVudFBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl95ID0gY3VycmVudFBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl95ID4gc2Nyb2xsU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzQ29vcmRpbmF0ZXNPdmVycmlkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUNvb3JkaW5hdGVzKHRoaXMuX3gsIGN1cnJlbnRQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5feSA9IGN1cnJlbnRQb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbFNpemUgPSAodGhpcy5fdG90YWxTaXplIC0gdGhpcy5fJHZpZXdwb3J0Qm91bmRzLmdldFZhbHVlKCkud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3ggPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNDb29yZGluYXRlc092ZXJyaWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBvc2l0aW9uID0gc2Nyb2xsU2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlQ29vcmRpbmF0ZXMoY3VycmVudFBvc2l0aW9uLCB0aGlzLl95KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl94ID0gY3VycmVudFBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl94ID4gc2Nyb2xsU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzQ29vcmRpbmF0ZXNPdmVycmlkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUNvb3JkaW5hdGVzKGN1cnJlbnRQb3NpdGlvbiwgdGhpcy5feSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5feCA9IGN1cnJlbnRQb3NpdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pc0Nvb3JkaW5hdGVzT3ZlcnJpZGVkID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAoISF2aWV3cG9ydCkge1xyXG4gICAgICAgICAgICBjb25zdCBpc1ZlcnRpY2FsID0gdGhpcy5fJGlzVmVydGljYWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICBlbmRPZmZzZXQgPSB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICB3ID0gdmlld3BvcnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgICAgICAgICBoID0gdmlld3BvcnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgd2lkdGggPSBpc1ZlcnRpY2FsID8gdyA6ICh3IC0gc3RhcnRPZmZzZXQgLSBlbmRPZmZzZXQpLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gaXNWZXJ0aWNhbCA/IChoIC0gc3RhcnRPZmZzZXQgLSBlbmRPZmZzZXQpIDogaCxcclxuICAgICAgICAgICAgICAgIGJvdW5kcyA9IHRoaXMuXyR2aWV3cG9ydEJvdW5kcy5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICBpZiAoYm91bmRzLndpZHRoID09PSB3aWR0aCAmJiBib3VuZHMuaGVpZ2h0ID09PSBoZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl8kdmlld3BvcnRCb3VuZHMubmV4dCh7IHdpZHRoLCBoZWlnaHQgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvblJlc2l6ZUNvbnRlbnQodmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAoISFjb250ZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLl8kc3RhcnRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIHcgPSBjb250ZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgaCA9IGNvbnRlbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgd2lkdGggPSBpc1ZlcnRpY2FsID8gdyA6IHZhbHVlID8/ICh3IC0gc3RhcnRPZmZzZXQpLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gaXNWZXJ0aWNhbCA/IHZhbHVlID8/IChoIC0gc3RhcnRPZmZzZXQpIDogaCxcclxuICAgICAgICAgICAgICAgIGJvdW5kcyA9IHRoaXMuXyRjb250ZW50Qm91bmRzLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGlmIChib3VuZHMud2lkdGggPT09IHdpZHRoICYmIGJvdW5kcy5oZWlnaHQgPT09IGhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuXyRjb250ZW50Qm91bmRzLm5leHQoeyB3aWR0aCwgaGVpZ2h0IH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -1,7 +1,9 @@
1
1
  import { InjectionToken } from "@angular/core";
2
2
  import { SCROLLER_SCROLL } from "../../../const";
3
3
  export const SCROLL_VIEW_INVERSION = new InjectionToken('ScrollViewInversion');
4
+ export const SCROLL_VIEW_OVERSCROLL_ENABLED = new InjectionToken('ScrollViewOverscrollEnabled');
4
5
  export const SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO = new InjectionToken('ScrollViewNormalizeValueFromZero');
5
- export const TOP = 'top', LEFT = 'left', INSTANT = 'instant', AUTO = 'auto', SMOOTH = 'smooth', DURATION = 2000, FRICTION_FORCE = .035, MAX_DURATION = 4000, ANIMATION_DURATION = 50, MASS = .005, MAX_DIST = 12500, MAX_VELOCITY_TIMESTAMP = 100, SPEED_SCALE = 15, OVERSCROLL_START_ITERATION = 2;
6
+ export const TOP = 'top', LEFT = 'left', INSTANT = 'instant', AUTO = 'auto', SMOOTH = 'smooth', DURATION = 2000, FRICTION_FORCE = .035, MAX_DURATION = 4000, ANIMATION_DURATION = 50, MASS = .005, MAX_DIST = 12500, MAX_VELOCITY_TIMESTAMP = 100, SPEED_SCALE = 15, OVERSCROLL_START_ITERATION = 2, INTERSECTION_DISTANCE = 1;
7
+ export const MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS = 5, INSTANT_VELOCITY_SCALE = 1000;
6
8
  export const SCROLL_EVENT = new Event(SCROLLER_SCROLL);
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC12aWV3L2NvbnN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFVLHFCQUFxQixDQUFDLENBQUM7QUFFeEYsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsSUFBSSxjQUFjLENBQVUsa0NBQWtDLENBQUMsQ0FBQztBQUVySCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUNwQixJQUFJLEdBQUcsTUFBTSxFQUNiLE9BQU8sR0FBRyxTQUEyQixFQUNyQyxJQUFJLEdBQUcsTUFBd0IsRUFDL0IsTUFBTSxHQUFHLFFBQTBCLEVBQ25DLFFBQVEsR0FBRyxJQUFJLEVBQ2YsY0FBYyxHQUFHLElBQUksRUFDckIsWUFBWSxHQUFHLElBQUksRUFDbkIsa0JBQWtCLEdBQUcsRUFBRSxFQUN2QixJQUFJLEdBQUcsSUFBSSxFQUNYLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLHNCQUFzQixHQUFHLEdBQUcsRUFDNUIsV0FBVyxHQUFHLEVBQUUsRUFDaEIsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU0NST0xMRVJfU0NST0xMIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnN0XCI7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX1ZJRVdfSU5WRVJTSU9OID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdTY3JvbGxWaWV3SW52ZXJzaW9uJyk7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignU2Nyb2xsVmlld05vcm1hbGl6ZVZhbHVlRnJvbVplcm8nKTtcclxuXHJcbmV4cG9ydCBjb25zdCBUT1AgPSAndG9wJyxcclxuICAgIExFRlQgPSAnbGVmdCcsXHJcbiAgICBJTlNUQU5UID0gJ2luc3RhbnQnIGFzIFNjcm9sbEJlaGF2aW9yLFxyXG4gICAgQVVUTyA9ICdhdXRvJyBhcyBTY3JvbGxCZWhhdmlvcixcclxuICAgIFNNT09USCA9ICdzbW9vdGgnIGFzIFNjcm9sbEJlaGF2aW9yLFxyXG4gICAgRFVSQVRJT04gPSAyMDAwLFxyXG4gICAgRlJJQ1RJT05fRk9SQ0UgPSAuMDM1LFxyXG4gICAgTUFYX0RVUkFUSU9OID0gNDAwMCxcclxuICAgIEFOSU1BVElPTl9EVVJBVElPTiA9IDUwLFxyXG4gICAgTUFTUyA9IC4wMDUsXHJcbiAgICBNQVhfRElTVCA9IDEyNTAwLFxyXG4gICAgTUFYX1ZFTE9DSVRZX1RJTUVTVEFNUCA9IDEwMCxcclxuICAgIFNQRUVEX1NDQUxFID0gMTUsXHJcbiAgICBPVkVSU0NST0xMX1NUQVJUX0lURVJBVElPTiA9IDI7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX0VWRU5UID0gbmV3IEV2ZW50KFNDUk9MTEVSX1NDUk9MTCk7XHJcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC12aWV3L2NvbnN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFVLHFCQUFxQixDQUFDLENBQUM7QUFFeEYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQVUsNkJBQTZCLENBQUMsQ0FBQztBQUV6RyxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FBVSxrQ0FBa0MsQ0FBQyxDQUFDO0FBRXJILE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3BCLElBQUksR0FBRyxNQUFNLEVBQ2IsT0FBTyxHQUFHLFNBQVMsRUFDbkIsSUFBSSxHQUFHLE1BQU0sRUFDYixNQUFNLEdBQUcsUUFBUSxFQUNqQixRQUFRLEdBQUcsSUFBSSxFQUNmLGNBQWMsR0FBRyxJQUFJLEVBQ3JCLFlBQVksR0FBRyxJQUFJLEVBQ25CLGtCQUFrQixHQUFHLEVBQUUsRUFDdkIsSUFBSSxHQUFHLElBQUksRUFDWCxRQUFRLEdBQUcsS0FBSyxFQUNoQixzQkFBc0IsR0FBRyxHQUFHLEVBQzVCLFdBQVcsR0FBRyxFQUFFLEVBQ2hCLDBCQUEwQixHQUFHLENBQUMsRUFDOUIscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLENBQUMsRUFDcEQsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU0NST0xMRVJfU0NST0xMIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnN0XCI7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX1ZJRVdfSU5WRVJTSU9OID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdTY3JvbGxWaWV3SW52ZXJzaW9uJyk7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdTY3JvbGxWaWV3T3ZlcnNjcm9sbEVuYWJsZWQnKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdTY3JvbGxWaWV3Tm9ybWFsaXplVmFsdWVGcm9tWmVybycpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRPUCA9ICd0b3AnLFxyXG4gICAgTEVGVCA9ICdsZWZ0JyxcclxuICAgIElOU1RBTlQgPSAnaW5zdGFudCcsXHJcbiAgICBBVVRPID0gJ2F1dG8nLFxyXG4gICAgU01PT1RIID0gJ3Ntb290aCcsXHJcbiAgICBEVVJBVElPTiA9IDIwMDAsXHJcbiAgICBGUklDVElPTl9GT1JDRSA9IC4wMzUsXHJcbiAgICBNQVhfRFVSQVRJT04gPSA0MDAwLFxyXG4gICAgQU5JTUFUSU9OX0RVUkFUSU9OID0gNTAsXHJcbiAgICBNQVNTID0gLjAwNSxcclxuICAgIE1BWF9ESVNUID0gMTI1MDAsXHJcbiAgICBNQVhfVkVMT0NJVFlfVElNRVNUQU1QID0gMTAwLFxyXG4gICAgU1BFRURfU0NBTEUgPSAxNSxcclxuICAgIE9WRVJTQ1JPTExfU1RBUlRfSVRFUkFUSU9OID0gMixcclxuICAgIElOVEVSU0VDVElPTl9ESVNUQU5DRSA9IDE7XHJcblxyXG5leHBvcnQgY29uc3QgTUFYX0lURVJBVElPTlNfRk9SX0FWRVJBR0VfQ0FMQ1VMQVRJT05TID0gNSxcclxuICAgIElOU1RBTlRfVkVMT0NJVFlfU0NBTEUgPSAxMDAwO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNDUk9MTF9FVkVOVCA9IG5ldyBFdmVudChTQ1JPTExFUl9TQ1JPTEwpO1xyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctc2Nyb2xsLXZpZXcvaW50ZXJmYWNlcy9zY3JvbGwtdG8tcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFYXNpbmcgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYW5pbWF0b3JcIjtcclxuXHJcbi8qKlxyXG4gKiBJU2Nyb2xsVG9QYXJhbXNcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTYueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC12aWV3L2ludGVyZmFjZXMvc2Nyb2xsLXRvLXBhcmFtcy50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNjcm9sbFRvUGFyYW1zIHtcclxuICAgIHg/OiBudW1iZXI7XHJcbiAgICB5PzogbnVtYmVyO1xyXG4gICAgbGVmdD86IG51bWJlcjtcclxuICAgIHRvcD86IG51bWJlcjtcclxuICAgIGJsZW5kaW5nPzogYm9vbGVhbjtcclxuICAgIGJlaGF2aW9yPzogU2Nyb2xsQmVoYXZpb3I7XHJcbiAgICBlYXNlPzogRWFzaW5nO1xyXG4gICAgZmlyZVVwZGF0ZT86IGJvb2xlYW47XHJcbiAgICB1c2VyQWN0aW9uPzogYm9vbGVhbjtcclxuICAgIGR1cmF0aW9uPzogbnVtYmVyO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctc2Nyb2xsLXZpZXcvaW50ZXJmYWNlcy9zY3JvbGwtdG8tcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFYXNpbmcgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYW5pbWF0b3JcIjtcclxuXHJcbi8qKlxyXG4gKiBJU2Nyb2xsVG9QYXJhbXNcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTYueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC12aWV3L2ludGVyZmFjZXMvc2Nyb2xsLXRvLXBhcmFtcy50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgQWxleGFuZHJvdmljaCBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNjcm9sbFRvUGFyYW1zIHtcclxuICAgIHg/OiBudW1iZXI7XHJcbiAgICB5PzogbnVtYmVyO1xyXG4gICAgbGVmdD86IG51bWJlcjtcclxuICAgIHRvcD86IG51bWJlcjtcclxuICAgIHNuYXA/OiBib29sZWFuO1xyXG4gICAgbm9ybWFsaXplPzogYm9vbGVhbjtcclxuICAgIGZvcmNlPzogYm9vbGVhbjtcclxuICAgIGJsZW5kaW5nPzogYm9vbGVhbjtcclxuICAgIGJlaGF2aW9yPzogU2Nyb2xsQmVoYXZpb3IgfCBcImF1dG9cIiB8IFwiaW5zdGFudFwiIHwgXCJzbW9vdGhcIjtcclxuICAgIGVhc2U/OiBFYXNpbmc7XHJcbiAgICBmaXJlVXBkYXRlPzogYm9vbGVhbjtcclxuICAgIHVzZXJBY3Rpb24/OiBib29sZWFuO1xyXG4gICAgZHVyYXRpb24/OiBudW1iZXI7XHJcbn1cclxuIl19