@skyux/core 5.7.2 → 6.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/documentation.json +4 -4
  2. package/esm2020/index.mjs +60 -0
  3. package/esm2020/lib/modules/adapter-service/adapter.module.mjs +16 -0
  4. package/esm2020/lib/modules/adapter-service/adapter.service.mjs +218 -0
  5. package/esm2020/lib/modules/adapter-service/focusable-children-options.mjs +2 -0
  6. package/esm2020/lib/modules/affix/affix-auto-fit-context.mjs +12 -0
  7. package/esm2020/lib/modules/affix/affix-config.mjs +2 -0
  8. package/esm2020/lib/modules/affix/affix-horizontal-alignment.mjs +2 -0
  9. package/esm2020/lib/modules/affix/affix-offset-change.mjs +2 -0
  10. package/esm2020/lib/modules/affix/affix-offset.mjs +2 -0
  11. package/esm2020/lib/modules/affix/affix-placement-change.mjs +2 -0
  12. package/esm2020/lib/modules/affix/affix-placement.mjs +2 -0
  13. package/esm2020/lib/modules/affix/affix-utils.mjs +18 -0
  14. package/esm2020/lib/modules/affix/affix-vertical-alignment.mjs +2 -0
  15. package/esm2020/lib/modules/affix/affix.directive.mjs +100 -0
  16. package/esm2020/lib/modules/affix/affix.module.mjs +18 -0
  17. package/esm2020/lib/modules/affix/affix.service.mjs +24 -0
  18. package/esm2020/lib/modules/affix/affixer.mjs +349 -0
  19. package/esm2020/lib/modules/affix/dom-utils.mjs +77 -0
  20. package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +80 -0
  21. package/esm2020/lib/modules/dock/dock-insert-component-config.mjs +2 -0
  22. package/esm2020/lib/modules/dock/dock-item-config.mjs +2 -0
  23. package/esm2020/lib/modules/dock/dock-item-reference.mjs +2 -0
  24. package/esm2020/lib/modules/dock/dock-item.mjs +29 -0
  25. package/esm2020/lib/modules/dock/dock-location.mjs +19 -0
  26. package/esm2020/lib/modules/dock/dock-options.mjs +2 -0
  27. package/esm2020/lib/modules/dock/dock.component.mjs +88 -0
  28. package/esm2020/lib/modules/dock/dock.module.mjs +19 -0
  29. package/esm2020/lib/modules/dock/dock.service.mjs +95 -0
  30. package/esm2020/lib/modules/dock/sort-by-stack-order.mjs +13 -0
  31. package/esm2020/lib/modules/dynamic-component/dynamic-component-location.mjs +27 -0
  32. package/esm2020/lib/modules/dynamic-component/dynamic-component-options.mjs +2 -0
  33. package/esm2020/lib/modules/dynamic-component/dynamic-component.module.mjs +17 -0
  34. package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +83 -0
  35. package/esm2020/lib/modules/format/app-format.mjs +18 -0
  36. package/esm2020/lib/modules/id/id.directive.mjs +34 -0
  37. package/esm2020/lib/modules/id/id.module.mjs +16 -0
  38. package/esm2020/lib/modules/log/log.module.mjs +16 -0
  39. package/esm2020/lib/modules/log/log.service.mjs +23 -0
  40. package/esm2020/lib/modules/media-query/media-breakpoints.mjs +20 -0
  41. package/esm2020/lib/modules/media-query/media-query-listener.mjs +2 -0
  42. package/esm2020/lib/modules/media-query/media-query.module.mjs +16 -0
  43. package/esm2020/lib/modules/media-query/media-query.service.mjs +121 -0
  44. package/esm2020/lib/modules/mutation/mutation-observer-service.mjs +16 -0
  45. package/esm2020/lib/modules/numeric/numeric-symbol.mjs +2 -0
  46. package/esm2020/lib/modules/numeric/numeric.module.mjs +20 -0
  47. package/esm2020/lib/modules/numeric/numeric.options.mjs +41 -0
  48. package/esm2020/lib/modules/numeric/numeric.pipe.mjs +82 -0
  49. package/esm2020/lib/modules/numeric/numeric.service.mjs +188 -0
  50. package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +41 -0
  51. package/esm2020/lib/modules/overlay/overlay-config.mjs +2 -0
  52. package/esm2020/lib/modules/overlay/overlay-context.mjs +10 -0
  53. package/esm2020/lib/modules/overlay/overlay-instance.mjs +55 -0
  54. package/esm2020/lib/modules/overlay/overlay.component.mjs +149 -0
  55. package/esm2020/lib/modules/overlay/overlay.module.mjs +17 -0
  56. package/esm2020/lib/modules/overlay/overlay.service.mjs +120 -0
  57. package/esm2020/lib/modules/percent-pipe/percent-pipe.module.mjs +20 -0
  58. package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +48 -0
  59. package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +184 -0
  60. package/esm2020/lib/modules/shared/number-format/number-format-utility.mjs +72 -0
  61. package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +50 -0
  62. package/esm2020/lib/modules/title/set-title-args.mjs +2 -0
  63. package/esm2020/lib/modules/title/title.service.mjs +31 -0
  64. package/esm2020/lib/modules/ui-config/ui-config.service.mjs +21 -0
  65. package/esm2020/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +2 -0
  66. package/esm2020/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +2 -0
  67. package/esm2020/lib/modules/viewkeeper/viewkeeper-host-options.mjs +10 -0
  68. package/esm2020/lib/modules/viewkeeper/viewkeeper-offset.mjs +2 -0
  69. package/esm2020/lib/modules/viewkeeper/viewkeeper-options.mjs +2 -0
  70. package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +116 -0
  71. package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +251 -0
  72. package/esm2020/lib/modules/viewkeeper/viewkeeper.module.mjs +16 -0
  73. package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +39 -0
  74. package/esm2020/lib/modules/window/window-ref.mjs +30 -0
  75. package/esm2020/skyux-core.mjs +5 -0
  76. package/esm2020/testing/mock-media-query.service.mjs +41 -0
  77. package/esm2020/testing/mock-ui-config.service.mjs +59 -0
  78. package/esm2020/testing/public-api.mjs +3 -0
  79. package/esm2020/testing/skyux-core-testing.mjs +5 -0
  80. package/fesm2015/{skyux-core-testing.js → skyux-core-testing.mjs} +7 -7
  81. package/fesm2015/skyux-core-testing.mjs.map +1 -0
  82. package/fesm2015/skyux-core.mjs +3043 -0
  83. package/fesm2015/skyux-core.mjs.map +1 -0
  84. package/fesm2020/skyux-core-testing.mjs +103 -0
  85. package/fesm2020/skyux-core-testing.mjs.map +1 -0
  86. package/{fesm2015/skyux-core.js → fesm2020/skyux-core.mjs} +134 -150
  87. package/fesm2020/skyux-core.mjs.map +1 -0
  88. package/package.json +36 -12
  89. package/testing/package.json +5 -5
  90. package/bundles/skyux-core-testing.umd.js +0 -459
  91. package/bundles/skyux-core.umd.js +0 -3648
  92. package/esm2015/index.js +0 -60
  93. package/esm2015/index.js.map +0 -1
  94. package/esm2015/lib/modules/adapter-service/adapter.module.js +0 -16
  95. package/esm2015/lib/modules/adapter-service/adapter.module.js.map +0 -1
  96. package/esm2015/lib/modules/adapter-service/adapter.service.js +0 -218
  97. package/esm2015/lib/modules/adapter-service/adapter.service.js.map +0 -1
  98. package/esm2015/lib/modules/adapter-service/focusable-children-options.js +0 -2
  99. package/esm2015/lib/modules/adapter-service/focusable-children-options.js.map +0 -1
  100. package/esm2015/lib/modules/affix/affix-auto-fit-context.js +0 -12
  101. package/esm2015/lib/modules/affix/affix-auto-fit-context.js.map +0 -1
  102. package/esm2015/lib/modules/affix/affix-config.js +0 -2
  103. package/esm2015/lib/modules/affix/affix-config.js.map +0 -1
  104. package/esm2015/lib/modules/affix/affix-horizontal-alignment.js +0 -2
  105. package/esm2015/lib/modules/affix/affix-horizontal-alignment.js.map +0 -1
  106. package/esm2015/lib/modules/affix/affix-offset-change.js +0 -2
  107. package/esm2015/lib/modules/affix/affix-offset-change.js.map +0 -1
  108. package/esm2015/lib/modules/affix/affix-offset.js +0 -2
  109. package/esm2015/lib/modules/affix/affix-offset.js.map +0 -1
  110. package/esm2015/lib/modules/affix/affix-placement-change.js +0 -2
  111. package/esm2015/lib/modules/affix/affix-placement-change.js.map +0 -1
  112. package/esm2015/lib/modules/affix/affix-placement.js +0 -2
  113. package/esm2015/lib/modules/affix/affix-placement.js.map +0 -1
  114. package/esm2015/lib/modules/affix/affix-utils.js +0 -18
  115. package/esm2015/lib/modules/affix/affix-utils.js.map +0 -1
  116. package/esm2015/lib/modules/affix/affix-vertical-alignment.js +0 -2
  117. package/esm2015/lib/modules/affix/affix-vertical-alignment.js.map +0 -1
  118. package/esm2015/lib/modules/affix/affix.directive.js +0 -100
  119. package/esm2015/lib/modules/affix/affix.directive.js.map +0 -1
  120. package/esm2015/lib/modules/affix/affix.module.js +0 -18
  121. package/esm2015/lib/modules/affix/affix.module.js.map +0 -1
  122. package/esm2015/lib/modules/affix/affix.service.js +0 -24
  123. package/esm2015/lib/modules/affix/affix.service.js.map +0 -1
  124. package/esm2015/lib/modules/affix/affixer.js +0 -349
  125. package/esm2015/lib/modules/affix/affixer.js.map +0 -1
  126. package/esm2015/lib/modules/affix/dom-utils.js +0 -77
  127. package/esm2015/lib/modules/affix/dom-utils.js.map +0 -1
  128. package/esm2015/lib/modules/dock/dock-dom-adapter.service.js +0 -80
  129. package/esm2015/lib/modules/dock/dock-dom-adapter.service.js.map +0 -1
  130. package/esm2015/lib/modules/dock/dock-insert-component-config.js +0 -2
  131. package/esm2015/lib/modules/dock/dock-insert-component-config.js.map +0 -1
  132. package/esm2015/lib/modules/dock/dock-item-config.js +0 -2
  133. package/esm2015/lib/modules/dock/dock-item-config.js.map +0 -1
  134. package/esm2015/lib/modules/dock/dock-item-reference.js +0 -2
  135. package/esm2015/lib/modules/dock/dock-item-reference.js.map +0 -1
  136. package/esm2015/lib/modules/dock/dock-item.js +0 -29
  137. package/esm2015/lib/modules/dock/dock-item.js.map +0 -1
  138. package/esm2015/lib/modules/dock/dock-location.js +0 -19
  139. package/esm2015/lib/modules/dock/dock-location.js.map +0 -1
  140. package/esm2015/lib/modules/dock/dock-options.js +0 -2
  141. package/esm2015/lib/modules/dock/dock-options.js.map +0 -1
  142. package/esm2015/lib/modules/dock/dock.component.js +0 -95
  143. package/esm2015/lib/modules/dock/dock.component.js.map +0 -1
  144. package/esm2015/lib/modules/dock/dock.module.js +0 -20
  145. package/esm2015/lib/modules/dock/dock.module.js.map +0 -1
  146. package/esm2015/lib/modules/dock/dock.service.js +0 -95
  147. package/esm2015/lib/modules/dock/dock.service.js.map +0 -1
  148. package/esm2015/lib/modules/dock/sort-by-stack-order.js +0 -13
  149. package/esm2015/lib/modules/dock/sort-by-stack-order.js.map +0 -1
  150. package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js +0 -27
  151. package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js.map +0 -1
  152. package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js +0 -2
  153. package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js.map +0 -1
  154. package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js +0 -17
  155. package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js.map +0 -1
  156. package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js +0 -83
  157. package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js.map +0 -1
  158. package/esm2015/lib/modules/format/app-format.js +0 -18
  159. package/esm2015/lib/modules/format/app-format.js.map +0 -1
  160. package/esm2015/lib/modules/id/id.directive.js +0 -34
  161. package/esm2015/lib/modules/id/id.directive.js.map +0 -1
  162. package/esm2015/lib/modules/id/id.module.js +0 -16
  163. package/esm2015/lib/modules/id/id.module.js.map +0 -1
  164. package/esm2015/lib/modules/log/log.module.js +0 -16
  165. package/esm2015/lib/modules/log/log.module.js.map +0 -1
  166. package/esm2015/lib/modules/log/log.service.js +0 -23
  167. package/esm2015/lib/modules/log/log.service.js.map +0 -1
  168. package/esm2015/lib/modules/media-query/media-breakpoints.js +0 -20
  169. package/esm2015/lib/modules/media-query/media-breakpoints.js.map +0 -1
  170. package/esm2015/lib/modules/media-query/media-query-listener.js +0 -2
  171. package/esm2015/lib/modules/media-query/media-query-listener.js.map +0 -1
  172. package/esm2015/lib/modules/media-query/media-query.module.js +0 -16
  173. package/esm2015/lib/modules/media-query/media-query.module.js.map +0 -1
  174. package/esm2015/lib/modules/media-query/media-query.service.js +0 -121
  175. package/esm2015/lib/modules/media-query/media-query.service.js.map +0 -1
  176. package/esm2015/lib/modules/mutation/mutation-observer-service.js +0 -16
  177. package/esm2015/lib/modules/mutation/mutation-observer-service.js.map +0 -1
  178. package/esm2015/lib/modules/numeric/numeric-symbol.js +0 -2
  179. package/esm2015/lib/modules/numeric/numeric-symbol.js.map +0 -1
  180. package/esm2015/lib/modules/numeric/numeric.module.js +0 -20
  181. package/esm2015/lib/modules/numeric/numeric.module.js.map +0 -1
  182. package/esm2015/lib/modules/numeric/numeric.options.js +0 -41
  183. package/esm2015/lib/modules/numeric/numeric.options.js.map +0 -1
  184. package/esm2015/lib/modules/numeric/numeric.pipe.js +0 -83
  185. package/esm2015/lib/modules/numeric/numeric.pipe.js.map +0 -1
  186. package/esm2015/lib/modules/numeric/numeric.service.js +0 -189
  187. package/esm2015/lib/modules/numeric/numeric.service.js.map +0 -1
  188. package/esm2015/lib/modules/overlay/overlay-adapter.service.js +0 -41
  189. package/esm2015/lib/modules/overlay/overlay-adapter.service.js.map +0 -1
  190. package/esm2015/lib/modules/overlay/overlay-config.js +0 -2
  191. package/esm2015/lib/modules/overlay/overlay-config.js.map +0 -1
  192. package/esm2015/lib/modules/overlay/overlay-context.js +0 -10
  193. package/esm2015/lib/modules/overlay/overlay-context.js.map +0 -1
  194. package/esm2015/lib/modules/overlay/overlay-instance.js +0 -55
  195. package/esm2015/lib/modules/overlay/overlay-instance.js.map +0 -1
  196. package/esm2015/lib/modules/overlay/overlay.component.js +0 -154
  197. package/esm2015/lib/modules/overlay/overlay.component.js.map +0 -1
  198. package/esm2015/lib/modules/overlay/overlay.module.js +0 -18
  199. package/esm2015/lib/modules/overlay/overlay.module.js.map +0 -1
  200. package/esm2015/lib/modules/overlay/overlay.service.js +0 -120
  201. package/esm2015/lib/modules/overlay/overlay.service.js.map +0 -1
  202. package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js +0 -20
  203. package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js.map +0 -1
  204. package/esm2015/lib/modules/percent-pipe/percent.pipe.js +0 -48
  205. package/esm2015/lib/modules/percent-pipe/percent.pipe.js.map +0 -1
  206. package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js +0 -184
  207. package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js.map +0 -1
  208. package/esm2015/lib/modules/shared/number-format/number-format-utility.js +0 -72
  209. package/esm2015/lib/modules/shared/number-format/number-format-utility.js.map +0 -1
  210. package/esm2015/lib/modules/shared/sky-core-resources.module.js +0 -50
  211. package/esm2015/lib/modules/shared/sky-core-resources.module.js.map +0 -1
  212. package/esm2015/lib/modules/title/set-title-args.js +0 -2
  213. package/esm2015/lib/modules/title/set-title-args.js.map +0 -1
  214. package/esm2015/lib/modules/title/title.service.js +0 -31
  215. package/esm2015/lib/modules/title/title.service.js.map +0 -1
  216. package/esm2015/lib/modules/ui-config/ui-config.service.js +0 -21
  217. package/esm2015/lib/modules/ui-config/ui-config.service.js.map +0 -1
  218. package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js +0 -2
  219. package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js.map +0 -1
  220. package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js +0 -2
  221. package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js.map +0 -1
  222. package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js +0 -10
  223. package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js.map +0 -1
  224. package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js +0 -2
  225. package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js.map +0 -1
  226. package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js +0 -2
  227. package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js.map +0 -1
  228. package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js +0 -116
  229. package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js.map +0 -1
  230. package/esm2015/lib/modules/viewkeeper/viewkeeper.js +0 -251
  231. package/esm2015/lib/modules/viewkeeper/viewkeeper.js.map +0 -1
  232. package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js +0 -16
  233. package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js.map +0 -1
  234. package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js +0 -39
  235. package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js.map +0 -1
  236. package/esm2015/lib/modules/window/window-ref.js +0 -30
  237. package/esm2015/lib/modules/window/window-ref.js.map +0 -1
  238. package/esm2015/skyux-core.js +0 -5
  239. package/esm2015/skyux-core.js.map +0 -1
  240. package/esm2015/testing/mock-media-query.service.js +0 -41
  241. package/esm2015/testing/mock-media-query.service.js.map +0 -1
  242. package/esm2015/testing/mock-ui-config.service.js +0 -59
  243. package/esm2015/testing/mock-ui-config.service.js.map +0 -1
  244. package/esm2015/testing/public-api.js +0 -3
  245. package/esm2015/testing/public-api.js.map +0 -1
  246. package/esm2015/testing/skyux-core-testing.js +0 -5
  247. package/esm2015/testing/skyux-core-testing.js.map +0 -1
  248. package/fesm2015/skyux-core-testing.js.map +0 -1
  249. package/fesm2015/skyux-core.js.map +0 -1
@@ -0,0 +1,184 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Observable, Subject, fromEvent } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { MutationObserverService } from '../mutation/mutation-observer-service';
5
+ import { SkyAppWindowRef } from '../window/window-ref';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../mutation/mutation-observer-service";
8
+ import * as i2 from "../window/window-ref";
9
+ function notifySubscribers(subscribers, item) {
10
+ for (const subscriber of subscribers) {
11
+ subscriber.next(item);
12
+ }
13
+ }
14
+ export class SkyScrollableHostService {
15
+ constructor(mutationObserverSvc, windowRef) {
16
+ this.mutationObserverSvc = mutationObserverSvc;
17
+ this.windowRef = windowRef;
18
+ }
19
+ /**
20
+ * Returns the given element's current scrollable host
21
+ * @param elementRef The element whose scrollable host is being requested
22
+ * @returns The current scrollable host
23
+ */
24
+ getScrollableHost(elementRef) {
25
+ return this.findScrollableHost(elementRef.nativeElement);
26
+ }
27
+ /**
28
+ * Returns an observable which emits the given element's current scrollable host
29
+ * @param elementRef The element whose scrollable host is being requested
30
+ * @param completionObservable An observable which alerts the internal observers that they should complete
31
+ * @returns An observable which emits the current scrollable host
32
+ * @internal
33
+ */
34
+ watchScrollableHost(elementRef) {
35
+ const subscribers = [];
36
+ let parentMutationObserver;
37
+ let documentHiddenElementMutationObserver;
38
+ return new Observable((subscriber) => {
39
+ subscribers.push(subscriber);
40
+ let scrollableHost = this.findScrollableHost(elementRef.nativeElement);
41
+ if (subscribers.length === 1) {
42
+ parentMutationObserver = this.mutationObserverSvc.create(() => {
43
+ const newScrollableHost = this.findScrollableHost(elementRef.nativeElement);
44
+ if (newScrollableHost !== scrollableHost &&
45
+ elementRef.nativeElement.offsetParent) {
46
+ scrollableHost = newScrollableHost;
47
+ this.observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
48
+ notifySubscribers(subscribers, scrollableHost);
49
+ }
50
+ });
51
+ this.observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
52
+ documentHiddenElementMutationObserver = this.mutationObserverSvc.create(() => {
53
+ if (!elementRef.nativeElement.offsetParent) {
54
+ scrollableHost = undefined;
55
+ this.observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
56
+ notifySubscribers(subscribers, scrollableHost);
57
+ }
58
+ });
59
+ this.observeDocumentHiddenElementChanges(documentHiddenElementMutationObserver);
60
+ }
61
+ subscriber.next(scrollableHost);
62
+ subscriber.add(() => {
63
+ const subIndex = subscribers.indexOf(subscriber);
64
+ /* sanity check */
65
+ /* istanbul ignore else */
66
+ if (subIndex >= 0) {
67
+ subscribers.splice(subIndex, 1);
68
+ }
69
+ if (subscribers.length === 0) {
70
+ documentHiddenElementMutationObserver.disconnect();
71
+ parentMutationObserver.disconnect();
72
+ }
73
+ });
74
+ });
75
+ }
76
+ /**
77
+ * Returns an observable which emits whenever the element's scrollable host emits a scroll event. The observable will always emit the scroll events from the elements current scrollable host and will update based on any scrollable host changes. The observable will also emit once whenever the scrollable host changes.
78
+ * @param elementRef The element whose scrollable host scroll events are being requested
79
+ * @param completionObservable An observable which alerts the internal observers that they should complete
80
+ * @returns An observable which emits when the elements scrollable host is scrolled or is changed
81
+ */
82
+ watchScrollableHostScrollEvents(elementRef) {
83
+ const subscribers = [];
84
+ let scrollableHost;
85
+ let newScrollableHostObservable = new Subject();
86
+ let scrollableHostSubscription;
87
+ let scrollEventSubscription;
88
+ return new Observable((subscriber) => {
89
+ subscribers.push(subscriber);
90
+ if (subscribers.length === 1) {
91
+ scrollableHostSubscription = this.watchScrollableHost(elementRef).subscribe((newScrollableHost) => {
92
+ newScrollableHostObservable.next();
93
+ newScrollableHostObservable.complete();
94
+ if (scrollableHost && scrollableHost !== newScrollableHost) {
95
+ notifySubscribers(subscribers);
96
+ }
97
+ scrollableHost = newScrollableHost;
98
+ newScrollableHostObservable = new Subject();
99
+ if (newScrollableHost) {
100
+ scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')
101
+ .pipe(takeUntil(newScrollableHostObservable))
102
+ .subscribe(() => {
103
+ notifySubscribers(subscribers);
104
+ });
105
+ }
106
+ });
107
+ }
108
+ subscriber.add(() => {
109
+ const subIndex = subscribers.indexOf(subscriber);
110
+ /* sanity check */
111
+ /* istanbul ignore else */
112
+ if (subIndex >= 0) {
113
+ subscribers.splice(subIndex, 1);
114
+ }
115
+ if (subscribers.length === 0) {
116
+ scrollableHostSubscription.unsubscribe();
117
+ scrollEventSubscription.unsubscribe();
118
+ newScrollableHostObservable.complete();
119
+ }
120
+ });
121
+ });
122
+ }
123
+ findScrollableHost(element) {
124
+ const regex = /(auto|scroll)/;
125
+ const windowObj = this.windowRef.nativeWindow;
126
+ const bodyObj = windowObj.document.body;
127
+ /* Sanity check */
128
+ if (!element) {
129
+ return windowObj;
130
+ }
131
+ let style = windowObj.getComputedStyle(element);
132
+ let parent = element;
133
+ do {
134
+ parent = parent.parentNode;
135
+ /* Sanity check for if this function is called for an element which has been removed from the DOM */
136
+ if (!(parent instanceof HTMLElement)) {
137
+ return windowObj;
138
+ }
139
+ style = windowObj.getComputedStyle(parent);
140
+ } while (!regex.test(style.overflow) &&
141
+ !regex.test(style.overflowY) &&
142
+ parent !== bodyObj);
143
+ if (parent === bodyObj) {
144
+ return windowObj;
145
+ }
146
+ return parent;
147
+ }
148
+ observeDocumentHiddenElementChanges(mutationObserver) {
149
+ mutationObserver.observe(document.documentElement, {
150
+ attributes: true,
151
+ attributeFilter: ['class', 'style', 'hidden'],
152
+ childList: true,
153
+ subtree: true,
154
+ });
155
+ }
156
+ observeForScrollableHostChanges(element, mutationObserver) {
157
+ mutationObserver.disconnect();
158
+ if (element instanceof HTMLElement) {
159
+ mutationObserver.observe(element, {
160
+ attributes: true,
161
+ attributeFilter: ['class', 'style'],
162
+ childList: true,
163
+ subtree: true,
164
+ });
165
+ }
166
+ else {
167
+ mutationObserver.observe(document.documentElement, {
168
+ attributes: true,
169
+ attributeFilter: ['class', 'style'],
170
+ childList: true,
171
+ subtree: true,
172
+ });
173
+ }
174
+ }
175
+ }
176
+ SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.MutationObserverService }, { token: i2.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
177
+ SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyScrollableHostService, decorators: [{
179
+ type: Injectable,
180
+ args: [{
181
+ providedIn: 'root',
182
+ }]
183
+ }], ctorParameters: function () { return [{ type: i1.MutationObserverService }, { type: i2.SkyAppWindowRef }]; } });
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQTRCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRXZELFNBQVMsaUJBQWlCLENBQUMsV0FBa0MsRUFBRSxJQUFjO0lBQzNFLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1FBQ3BDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkI7QUFDSCxDQUFDO0FBS0QsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNVLG1CQUE0QyxFQUM1QyxTQUEwQjtRQUQxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlCO1FBQzVDLGNBQVMsR0FBVCxTQUFTLENBQWlCO0lBQ2pDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsVUFBc0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBbUIsQ0FDeEIsVUFBc0I7UUFFdEIsTUFBTSxXQUFXLEdBQXVDLEVBQUUsQ0FBQztRQUMzRCxJQUFJLHNCQUF3QyxDQUFDO1FBQzdDLElBQUkscUNBQXVELENBQUM7UUFFNUQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25DLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFN0IsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN2RSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtvQkFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQy9DLFVBQVUsQ0FBQyxhQUFhLENBQ3pCLENBQUM7b0JBRUYsSUFDRSxpQkFBaUIsS0FBSyxjQUFjO3dCQUNwQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksRUFDckM7d0JBQ0EsY0FBYyxHQUFHLGlCQUFpQixDQUFDO3dCQUNuQyxJQUFJLENBQUMsK0JBQStCLENBQ2xDLGNBQWMsRUFDZCxzQkFBc0IsQ0FDdkIsQ0FBQzt3QkFFRixpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7cUJBQ2hEO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQywrQkFBK0IsQ0FDbEMsY0FBYyxFQUNkLHNCQUFzQixDQUN2QixDQUFDO2dCQUVGLHFDQUFxQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQ3JFLEdBQUcsRUFBRTtvQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUU7d0JBQzFDLGNBQWMsR0FBRyxTQUFTLENBQUM7d0JBRTNCLElBQUksQ0FBQywrQkFBK0IsQ0FDbEMsY0FBYyxFQUNkLHNCQUFzQixDQUN2QixDQUFDO3dCQUVGLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztxQkFDaEQ7Z0JBQ0gsQ0FBQyxDQUNGLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLG1DQUFtQyxDQUN0QyxxQ0FBcUMsQ0FDdEMsQ0FBQzthQUNIO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUVoQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFakQsa0JBQWtCO2dCQUNsQiwwQkFBMEI7Z0JBQzFCLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtvQkFDakIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO2dCQUVELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzVCLHFDQUFxQyxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNuRCxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQkFDckM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksK0JBQStCLENBQ3BDLFVBQXNCO1FBRXRCLE1BQU0sV0FBVyxHQUF1QixFQUFFLENBQUM7UUFDM0MsSUFBSSxjQUFvQyxDQUFDO1FBRXpDLElBQUksMkJBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNoRCxJQUFJLDBCQUF3QyxDQUFDO1FBQzdDLElBQUksdUJBQXFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25DLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFN0IsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDNUIsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUNuRCxVQUFVLENBQ1gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO29CQUNoQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkMsMkJBQTJCLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3ZDLElBQUksY0FBYyxJQUFJLGNBQWMsS0FBSyxpQkFBaUIsRUFBRTt3QkFDMUQsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQ2hDO29CQUNELGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztvQkFDbkMsMkJBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxpQkFBaUIsRUFBRTt3QkFDckIsdUJBQXVCLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQzs2QkFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDOzZCQUM1QyxTQUFTLENBQUMsR0FBRyxFQUFFOzRCQUNkLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUNqQyxDQUFDLENBQUMsQ0FBQztxQkFDTjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1lBRUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRWpELGtCQUFrQjtnQkFDbEIsMEJBQTBCO2dCQUMxQixJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7b0JBQ2pCLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNqQztnQkFFRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUM1QiwwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDekMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3RDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUN4QztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBb0I7UUFDN0MsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDO1FBQzlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRXhDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxNQUFNLEdBQWdCLE9BQU8sQ0FBQztRQUVsQyxHQUFHO1lBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUF5QixDQUFDO1lBRTFDLG9HQUFvRztZQUNwRyxJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQVksV0FBVyxDQUFDLEVBQUU7Z0JBQ3BDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsS0FBSyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QyxRQUNDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQzNCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzVCLE1BQU0sS0FBSyxPQUFPLEVBQ2xCO1FBRUYsSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFO1lBQ3RCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLG1DQUFtQyxDQUN6QyxnQkFBa0M7UUFFbEMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFDakQsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7WUFDN0MsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTywrQkFBK0IsQ0FDckMsT0FBNkIsRUFDN0IsZ0JBQWtDO1FBRWxDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksT0FBTyxZQUFZLFdBQVcsRUFBRTtZQUNsQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNoQyxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztnQkFDbkMsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7Z0JBQ2pELFVBQVUsRUFBRSxJQUFJO2dCQUNoQixlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2dCQUNuQyxTQUFTLEVBQUUsSUFBSTtnQkFDZixPQUFPLEVBQUUsSUFBSTthQUNkLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7cUhBek5VLHdCQUF3Qjt5SEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaWJlciwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTXV0YXRpb25PYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1zZXJ2aWNlJztcbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiB9IGZyb20gJy4uL3dpbmRvdy93aW5kb3ctcmVmJztcblxuZnVuY3Rpb24gbm90aWZ5U3Vic2NyaWJlcnMoc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dW5rbm93bj5bXSwgaXRlbT86IHVua25vd24pIHtcbiAgZm9yIChjb25zdCBzdWJzY3JpYmVyIG9mIHN1YnNjcmliZXJzKSB7XG4gICAgc3Vic2NyaWJlci5uZXh0KGl0ZW0pO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXJTdmM6IE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWZcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBnaXZlbiBlbGVtZW50J3MgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IGlzIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICovXG4gIHB1YmxpYyBnZXRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogSFRNTEVsZW1lbnQgfCBXaW5kb3cge1xuICAgIHJldHVybiB0aGlzLmZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHBhcmFtIGNvbXBsZXRpb25PYnNlcnZhYmxlIEFuIG9ic2VydmFibGUgd2hpY2ggYWxlcnRzIHRoZSBpbnRlcm5hbCBvYnNlcnZlcnMgdGhhdCB0aGV5IHNob3VsZCBjb21wbGV0ZVxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFdpbmRvdz4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPEhUTUxFbGVtZW50IHwgV2luZG93PltdID0gW107XG4gICAgbGV0IHBhcmVudE11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgbGV0IGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIHN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG5cbiAgICAgIGxldCBzY3JvbGxhYmxlSG9zdCA9IHRoaXMuZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXIgPSB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdmMuY3JlYXRlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTY3JvbGxhYmxlSG9zdCA9IHRoaXMuZmluZFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0ICE9PSBzY3JvbGxhYmxlSG9zdCAmJlxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgKTtcblxuICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyID0gdGhpcy5tdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZShcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycywgc2Nyb2xsYWJsZUhvc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlRG9jdW1lbnRIaWRkZW5FbGVtZW50Q2hhbmdlcyhcbiAgICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzdWJzY3JpYmVyLm5leHQoc2Nyb2xsYWJsZUhvc3QpO1xuXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHN1YkluZGV4ID49IDApIHtcbiAgICAgICAgICBzdWJzY3JpYmVycy5zcGxpY2Uoc3ViSW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbmV2ZXIgdGhlIGVsZW1lbnQncyBzY3JvbGxhYmxlIGhvc3QgZW1pdHMgYSBzY3JvbGwgZXZlbnQuIFRoZSBvYnNlcnZhYmxlIHdpbGwgYWx3YXlzIGVtaXQgdGhlIHNjcm9sbCBldmVudHMgZnJvbSB0aGUgZWxlbWVudHMgY3VycmVudCBzY3JvbGxhYmxlIGhvc3QgYW5kIHdpbGwgdXBkYXRlIGJhc2VkIG9uIGFueSBzY3JvbGxhYmxlIGhvc3QgY2hhbmdlcy4gVGhlIG9ic2VydmFibGUgd2lsbCBhbHNvIGVtaXQgb25jZSB3aGVuZXZlciB0aGUgc2Nyb2xsYWJsZSBob3N0IGNoYW5nZXMuXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBzY3JvbGwgZXZlbnRzIGFyZSBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHBhcmFtIGNvbXBsZXRpb25PYnNlcnZhYmxlIEFuIG9ic2VydmFibGUgd2hpY2ggYWxlcnRzIHRoZSBpbnRlcm5hbCBvYnNlcnZlcnMgdGhhdCB0aGV5IHNob3VsZCBjb21wbGV0ZVxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW4gdGhlIGVsZW1lbnRzIHNjcm9sbGFibGUgaG9zdCBpcyBzY3JvbGxlZCBvciBpcyBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdFNjcm9sbEV2ZW50cyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPHZvaWQ+W10gPSBbXTtcbiAgICBsZXQgc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgV2luZG93O1xuXG4gICAgbGV0IG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgbGV0IHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgbGV0IHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uID0gdGhpcy53YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgIGVsZW1lbnRSZWZcbiAgICAgICAgKS5zdWJzY3JpYmUoKG5ld1Njcm9sbGFibGVIb3N0KSA9PiB7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLm5leHQoKTtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUuY29tcGxldGUoKTtcbiAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgc2Nyb2xsYWJsZUhvc3QgIT09IG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gbmV3U2Nyb2xsYWJsZUhvc3Q7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgICBpZiAobmV3U2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG5ld1Njcm9sbGFibGVIb3N0LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgc3Vic2NyaWJlci5hZGQoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJJbmRleCA9IHN1YnNjcmliZXJzLmluZGV4T2Yoc3Vic2NyaWJlcik7XG5cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChzdWJJbmRleCA+PSAwKSB7XG4gICAgICAgICAgc3Vic2NyaWJlcnMuc3BsaWNlKHN1YkluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kU2Nyb2xsYWJsZUhvc3QoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IFdpbmRvdyB7XG4gICAgY29uc3QgcmVnZXggPSAvKGF1dG98c2Nyb2xsKS87XG4gICAgY29uc3Qgd2luZG93T2JqID0gdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93O1xuICAgIGNvbnN0IGJvZHlPYmogPSB3aW5kb3dPYmouZG9jdW1lbnQuYm9keTtcblxuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICB9XG5cbiAgICBsZXQgc3R5bGUgPSB3aW5kb3dPYmouZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBsZXQgcGFyZW50OiBIVE1MRWxlbWVudCA9IGVsZW1lbnQ7XG5cbiAgICBkbyB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgLyogU2FuaXR5IGNoZWNrIGZvciBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IgYW4gZWxlbWVudCB3aGljaCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTSAqL1xuICAgICAgaWYgKCEocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICB9IHdoaWxlIChcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93KSAmJlxuICAgICAgIXJlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3dZKSAmJlxuICAgICAgcGFyZW50ICE9PSBib2R5T2JqXG4gICAgKTtcblxuICAgIGlmIChwYXJlbnQgPT09IGJvZHlPYmopIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMoXG4gICAgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlclxuICApIHtcbiAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJywgJ3N0eWxlJywgJ2hpZGRlbiddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFdpbmRvdyxcbiAgICBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyXG4gICkge1xuICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZSddLFxuICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnLCAnc3R5bGUnXSxcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,72 @@
1
+ /* tslint:disable:no-null-keyword */
2
+ // This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old
3
+ // behavior of using the `Intl` API for formatting numbers rather than having to register every
4
+ // supported locale.
5
+ // https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts
6
+ import { SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
7
+ function isNumeric(value) {
8
+ return !isNaN(value - parseFloat(value));
9
+ }
10
+ function parseIntAutoRadix(text) {
11
+ const result = parseInt(text, 10);
12
+ /* istanbul ignore next */
13
+ if (isNaN(result)) {
14
+ throw new Error('Invalid integer literal when parsing ' + text);
15
+ }
16
+ return result;
17
+ }
18
+ // Need to add the following to classes which contain static methods.
19
+ // See: https://github.com/ng-packagr/ng-packagr/issues/641
20
+ // @dynamic
21
+ export class SkyNumberFormatUtility {
22
+ static formatNumber(locale, value, style, digits, currency = null, currencyAsSymbol = false, currencySign) {
23
+ if (value == null) {
24
+ return null;
25
+ }
26
+ // Convert strings to numbers
27
+ value = typeof value === 'string' && isNumeric(value) ? +value : value;
28
+ if (typeof value !== 'number') {
29
+ throw Error(`SkyInvalidPipeArgument: '${value}'`);
30
+ }
31
+ let minInt = undefined;
32
+ let minFraction = undefined;
33
+ let maxFraction = undefined;
34
+ if (style !== SkyIntlNumberFormatStyle.Currency) {
35
+ // rely on Intl default for currency
36
+ minInt = 1;
37
+ minFraction = 0;
38
+ maxFraction = 3;
39
+ }
40
+ if (digits) {
41
+ const parts = digits.match(this._NUMBER_FORMAT_REGEXP);
42
+ if (parts === null) {
43
+ throw new Error(`${digits} is not a valid digit info for number pipes`);
44
+ }
45
+ /* istanbul ignore else */
46
+ if (parts[1] != null) {
47
+ // min integer digits
48
+ minInt = parseIntAutoRadix(parts[1]);
49
+ }
50
+ /* istanbul ignore else */
51
+ if (parts[3] != null) {
52
+ // min fraction digits
53
+ minFraction = parseIntAutoRadix(parts[3]);
54
+ }
55
+ /* istanbul ignore else */
56
+ if (parts[5] != null) {
57
+ // max fraction digits
58
+ maxFraction = parseIntAutoRadix(parts[5]);
59
+ }
60
+ }
61
+ return SkyIntlNumberFormatter.format(value, locale, style, {
62
+ minimumIntegerDigits: minInt,
63
+ minimumFractionDigits: minFraction,
64
+ maximumFractionDigits: maxFraction,
65
+ currency: currency,
66
+ currencyAsSymbol: currencyAsSymbol,
67
+ currencySign: currencySign,
68
+ });
69
+ }
70
+ }
71
+ SkyNumberFormatUtility._NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?)?$/;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdC11dGlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMEZBQTBGO0FBQzFGLCtGQUErRjtBQUMvRixvQkFBb0I7QUFDcEIseUZBQXlGO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvRSxTQUFTLFNBQVMsQ0FBQyxLQUFVO0lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVk7SUFDckMsTUFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUUxQywwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNqRTtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsMkRBQTJEO0FBQzNELFdBQVc7QUFDWCxNQUFNLE9BQU8sc0JBQXNCO0lBRzFCLE1BQU0sQ0FBQyxZQUFZLENBQ3hCLE1BQWMsRUFDZCxLQUFzQixFQUN0QixLQUErQixFQUMvQixNQUFzQixFQUN0QixXQUEwQixJQUFJLEVBQzlCLG1CQUE0QixLQUFLLEVBQ2pDLFlBQXdDO1FBRXhDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsNkJBQTZCO1FBQzdCLEtBQUssR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE1BQU0sS0FBSyxDQUFDLDRCQUE0QixLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxNQUFNLEdBQXVCLFNBQVMsQ0FBQztRQUMzQyxJQUFJLFdBQVcsR0FBdUIsU0FBUyxDQUFDO1FBQ2hELElBQUksV0FBVyxHQUF1QixTQUFTLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssd0JBQXdCLENBQUMsUUFBUSxFQUFFO1lBQy9DLG9DQUFvQztZQUNwQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ1gsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNoQixXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRXZELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sNkNBQTZDLENBQUMsQ0FBQzthQUN6RTtZQUVELDBCQUEwQjtZQUMxQixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLHFCQUFxQjtnQkFDckIsTUFBTSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBRUQsMEJBQTBCO1lBQzFCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEIsc0JBQXNCO2dCQUN0QixXQUFXLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0M7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNwQixzQkFBc0I7Z0JBQ3RCLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQztTQUNGO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDbkUsb0JBQW9CLEVBQUUsTUFBTTtZQUM1QixxQkFBcUIsRUFBRSxXQUFXO1lBQ2xDLHFCQUFxQixFQUFFLFdBQVc7WUFDbEMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBakVjLDRDQUFxQixHQUFHLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkICovXG4vLyBUaGlzIGZpbGUgaXMgbW9zdGx5IHBvcnRlZCBmcm9tIHRoZSBBbmd1bGFyIDQueCBOdW1iZXJQaXBlIGluIG9yZGVyIHRvIG1haW50YWluIHRoZSBvbGRcbi8vIGJlaGF2aW9yIG9mIHVzaW5nIHRoZSBgSW50bGAgQVBJIGZvciBmb3JtYXR0aW5nIG51bWJlcnMgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHJlZ2lzdGVyIGV2ZXJ5XG4vLyBzdXBwb3J0ZWQgbG9jYWxlLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzQuNC54L3BhY2thZ2VzL2NvbW1vbi9zcmMvcGlwZXMvbnVtYmVyX3BpcGUudHNcbmltcG9ydCB7IFNreUludGxOdW1iZXJGb3JtYXRTdHlsZSwgU2t5SW50bE51bWJlckZvcm1hdHRlciB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuZnVuY3Rpb24gaXNOdW1lcmljKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc05hTih2YWx1ZSAtIHBhcnNlRmxvYXQodmFsdWUpKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VJbnRBdXRvUmFkaXgodGV4dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBwYXJzZUludCh0ZXh0LCAxMCk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKGlzTmFOKHJlc3VsdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdoZW4gcGFyc2luZyAnICsgdGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBOZWVkIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIGNsYXNzZXMgd2hpY2ggY29udGFpbiBzdGF0aWMgbWV0aG9kcy5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvNjQxXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFNreU51bWJlckZvcm1hdFV0aWxpdHkge1xuICBwcml2YXRlIHN0YXRpYyBfTlVNQkVSX0ZPUk1BVF9SRUdFWFAgPSAvXihcXGQrKT9cXC4oKFxcZCspKC0oXFxkKykpPyk/JC87XG5cbiAgcHVibGljIHN0YXRpYyBmb3JtYXROdW1iZXIoXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgICBzdHlsZTogU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLFxuICAgIGRpZ2l0cz86IHN0cmluZyB8IG51bGwsXG4gICAgY3VycmVuY3k6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGN1cnJlbmN5QXNTeW1ib2w6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBjdXJyZW5jeVNpZ24/OiAnYWNjb3VudGluZycgfCAnc3RhbmRhcmQnXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHN0cmluZ3MgdG8gbnVtYmVyc1xuICAgIHZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBpc051bWVyaWModmFsdWUpID8gK3ZhbHVlIDogdmFsdWU7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IEVycm9yKGBTa3lJbnZhbGlkUGlwZUFyZ3VtZW50OiAnJHt2YWx1ZX0nYCk7XG4gICAgfVxuXG4gICAgbGV0IG1pbkludDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGxldCBtaW5GcmFjdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGxldCBtYXhGcmFjdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChzdHlsZSAhPT0gU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLkN1cnJlbmN5KSB7XG4gICAgICAvLyByZWx5IG9uIEludGwgZGVmYXVsdCBmb3IgY3VycmVuY3lcbiAgICAgIG1pbkludCA9IDE7XG4gICAgICBtaW5GcmFjdGlvbiA9IDA7XG4gICAgICBtYXhGcmFjdGlvbiA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGRpZ2l0cykge1xuICAgICAgY29uc3QgcGFydHMgPSBkaWdpdHMubWF0Y2godGhpcy5fTlVNQkVSX0ZPUk1BVF9SRUdFWFApO1xuXG4gICAgICBpZiAocGFydHMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2RpZ2l0c30gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mbyBmb3IgbnVtYmVyIHBpcGVzYCk7XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocGFydHNbMV0gIT0gbnVsbCkge1xuICAgICAgICAvLyBtaW4gaW50ZWdlciBkaWdpdHNcbiAgICAgICAgbWluSW50ID0gcGFyc2VJbnRBdXRvUmFkaXgocGFydHNbMV0pO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHBhcnRzWzNdICE9IG51bGwpIHtcbiAgICAgICAgLy8gbWluIGZyYWN0aW9uIGRpZ2l0c1xuICAgICAgICBtaW5GcmFjdGlvbiA9IHBhcnNlSW50QXV0b1JhZGl4KHBhcnRzWzNdKTtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwYXJ0c1s1XSAhPSBudWxsKSB7XG4gICAgICAgIC8vIG1heCBmcmFjdGlvbiBkaWdpdHNcbiAgICAgICAgbWF4RnJhY3Rpb24gPSBwYXJzZUludEF1dG9SYWRpeChwYXJ0c1s1XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFNreUludGxOdW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlIGFzIG51bWJlciwgbG9jYWxlLCBzdHlsZSwge1xuICAgICAgbWluaW11bUludGVnZXJEaWdpdHM6IG1pbkludCxcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluRnJhY3Rpb24sXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG1heEZyYWN0aW9uLFxuICAgICAgY3VycmVuY3k6IGN1cnJlbmN5LFxuICAgICAgY3VycmVuY3lBc1N5bWJvbDogY3VycmVuY3lBc1N5bWJvbCxcbiAgICAgIGN1cnJlbmN5U2lnbjogY3VycmVuY3lTaWduLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ /**
2
+ * NOTICE: DO NOT MODIFY THIS FILE!
3
+ * The contents of this file were automatically generated by
4
+ * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.
5
+ * To update this file, simply rerun the command.
6
+ */
7
+ import { NgModule } from '@angular/core';
8
+ import { SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule, getLibStringForLocale, } from '@skyux/i18n';
9
+ import * as i0 from "@angular/core";
10
+ const RESOURCES = {
11
+ 'EN-US': {
12
+ skyux_numeric_billions_symbol: { message: 'B' },
13
+ skyux_numeric_millions_symbol: { message: 'M' },
14
+ skyux_numeric_thousands_symbol: { message: 'K' },
15
+ skyux_numeric_trillions_symbol: { message: 'T' },
16
+ },
17
+ };
18
+ export class SkyCoreResourcesProvider {
19
+ getString(localeInfo, name) {
20
+ return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
21
+ }
22
+ }
23
+ /**
24
+ * Import into any component library module that needs to use resource strings.
25
+ */
26
+ export class SkyCoreResourcesModule {
27
+ }
28
+ SkyCoreResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyCoreResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
+ SkyCoreResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyCoreResourcesModule, exports: [SkyI18nModule] });
30
+ SkyCoreResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyCoreResourcesModule, providers: [
31
+ {
32
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
33
+ useClass: SkyCoreResourcesProvider,
34
+ multi: true,
35
+ },
36
+ ], imports: [SkyI18nModule] });
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyCoreResourcesModule, decorators: [{
38
+ type: NgModule,
39
+ args: [{
40
+ exports: [SkyI18nModule],
41
+ providers: [
42
+ {
43
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
44
+ useClass: SkyCoreResourcesProvider,
45
+ multi: true,
46
+ },
47
+ ],
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1AsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQy9DLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUMvQyw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDaEQsOEJBQThCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0tBQ2pEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sT0FBTyx3QkFBd0I7SUFDNUIsU0FBUyxDQUNkLFVBQTRCLEVBQzVCLElBQVk7UUFFWixPQUFPLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBV0gsTUFBTSxPQUFPLHNCQUFzQjs7bUhBQXRCLHNCQUFzQjtvSEFBdEIsc0JBQXNCLFlBVHZCLGFBQWE7b0hBU1osc0JBQXNCLGFBUnRCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFFBQVEsRUFBRSx3QkFBd0I7WUFDbEMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLFlBUFMsYUFBYTsyRkFTWixzQkFBc0I7a0JBVmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDJCQUEyQjs0QkFDcEMsUUFBUSxFQUFFLHdCQUF3Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5PVElDRTogRE8gTk9UIE1PRElGWSBUSElTIEZJTEUhXG4gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnlcbiAqIHRoZSAnbmcgZ2VuZXJhdGUgQHNreXV4L2kxOG46bGliLXJlc291cmNlcy1tb2R1bGUgbGliL21vZHVsZXMvc2hhcmVkL3NreS1jb3JlJyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIsXG4gIGdldExpYlN0cmluZ0ZvckxvY2FsZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IHsgW2xvY2FsZTogc3RyaW5nXTogU2t5TGliUmVzb3VyY2VzIH0gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnQicgfSxcbiAgICBza3l1eF9udW1lcmljX21pbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnTScgfSxcbiAgICBza3l1eF9udW1lcmljX3Rob3VzYW5kc19zeW1ib2w6IHsgbWVzc2FnZTogJ0snIH0sXG4gICAgc2t5dXhfbnVtZXJpY190cmlsbGlvbnNfc3ltYm9sOiB7IG1lc3NhZ2U6ICdUJyB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNsYXNzIFNreUNvcmVSZXNvdXJjZXNQcm92aWRlciBpbXBsZW1lbnRzIFNreUxpYlJlc291cmNlc1Byb3ZpZGVyIHtcbiAgcHVibGljIGdldFN0cmluZyhcbiAgICBsb2NhbGVJbmZvOiBTa3lBcHBMb2NhbGVJbmZvLFxuICAgIG5hbWU6IHN0cmluZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRMaWJTdHJpbmdGb3JMb2NhbGUoUkVTT1VSQ0VTLCBsb2NhbGVJbmZvLmxvY2FsZSwgbmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU0tZX0xJQl9SRVNPVVJDRVNfUFJPVklERVJTLFxuICAgICAgdXNlQ2xhc3M6IFNreUNvcmVSZXNvdXJjZXNQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvcmVSZXNvdXJjZXNNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXRpdGxlLWFyZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdGl0bGUvc2V0LXRpdGxlLWFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2t5QXBwU2V0VGl0bGVBcmdzIHtcbiAgdGl0bGVQYXJ0czogc3RyaW5nW107XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Title } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/platform-browser";
5
+ /**
6
+ * Provides a method for setting a formatted title on the current window.
7
+ */
8
+ export class SkyAppTitleService {
9
+ constructor(title) {
10
+ this.title = title;
11
+ }
12
+ /**
13
+ * Sets the title on the current window.
14
+ * @param args An array of title parts. The parts will be concatenated with a hyphen between
15
+ * each part.
16
+ */
17
+ setTitle(args) {
18
+ if (args && args.titleParts) {
19
+ this.title.setTitle(args.titleParts.join(' - '));
20
+ }
21
+ }
22
+ }
23
+ SkyAppTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAppTitleService, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
24
+ SkyAppTitleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAppTitleService, providedIn: 'root' });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAppTitleService, decorators: [{
26
+ type: Injectable,
27
+ args: [{
28
+ providedIn: 'root',
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i1.Title }]; } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy90aXRsZS90aXRsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFJbEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW9CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQUcsQ0FBQztJQUVwQzs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQXdCO1FBQ3RDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7OytHQVpVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IFNreUFwcFNldFRpdGxlQXJncyB9IGZyb20gJy4vc2V0LXRpdGxlLWFyZ3MnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgbWV0aG9kIGZvciBzZXR0aW5nIGEgZm9ybWF0dGVkIHRpdGxlIG9uIHRoZSBjdXJyZW50IHdpbmRvdy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUFwcFRpdGxlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGl0bGU6IFRpdGxlKSB7fVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0aXRsZSBvbiB0aGUgY3VycmVudCB3aW5kb3cuXG4gICAqIEBwYXJhbSBhcmdzIEFuIGFycmF5IG9mIHRpdGxlIHBhcnRzLiBUaGUgcGFydHMgd2lsbCBiZSBjb25jYXRlbmF0ZWQgd2l0aCBhIGh5cGhlbiBiZXR3ZWVuXG4gICAqIGVhY2ggcGFydC5cbiAgICovXG4gIHB1YmxpYyBzZXRUaXRsZShhcmdzOiBTa3lBcHBTZXRUaXRsZUFyZ3MpOiB2b2lkIHtcbiAgICBpZiAoYXJncyAmJiBhcmdzLnRpdGxlUGFydHMpIHtcbiAgICAgIHRoaXMudGl0bGUuc2V0VGl0bGUoYXJncy50aXRsZVBhcnRzLmpvaW4oJyAtICcpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { of as observableOf } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class SkyUIConfigService {
5
+ getConfig(key, defaultConfig) {
6
+ return observableOf(defaultConfig);
7
+ }
8
+ /* istanbul ignore next */
9
+ setConfig(key, value) {
10
+ return observableOf({});
11
+ }
12
+ }
13
+ SkyUIConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyUIConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
14
+ SkyUIConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyUIConfigService, providedIn: 'root' });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyUIConfigService, decorators: [{
16
+ type: Injectable,
17
+ args: [{
18
+ providedIn: 'root',
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdWktY29uZmlnL3VpLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3RELE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsU0FBUyxDQUFDLEdBQVcsRUFBRSxhQUFtQjtRQUMvQyxPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN0QyxPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDOzsrR0FSVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VUlDb25maWdTZXJ2aWNlIHtcbiAgcHVibGljIGdldENvbmZpZyhrZXk6IHN0cmluZywgZGVmYXVsdENvbmZpZz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihkZWZhdWx0Q29uZmlnKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBzZXRDb25maWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2Yoe30pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1ib3VuZGFyeS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci1ib3VuZGFyeS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lWaWV3a2VlcGVyT2Zmc2V0IH0gZnJvbSAnLi92aWV3a2VlcGVyLW9mZnNldCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB7XG4gIGVsSGVpZ2h0OiBudW1iZXI7XG5cbiAgc3BhY2VyRWw6IEhUTUxFbGVtZW50O1xuXG4gIHNwYWNlcklkOiBzdHJpbmc7XG5cbiAgYm91bmRhcnlCb3R0b206IG51bWJlcjtcblxuICBib3VuZGFyeU9mZnNldDogU2t5Vmlld2tlZXBlck9mZnNldDtcblxuICBib3VuZGFyeUVsOiBIVE1MRWxlbWVudDtcblxuICBzY3JvbGxMZWZ0OiBudW1iZXI7XG5cbiAgc2Nyb2xsVG9wOiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1maXhlZC1zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWZpeGVkLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICBlbEZpeGVkTGVmdDogbnVtYmVyO1xuXG4gIGVsRml4ZWRUb3A6IG51bWJlcjtcblxuICBlbEZpeGVkV2lkdGg6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SkyViewkeeperHostOptions {
4
+ }
5
+ SkyViewkeeperHostOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperHostOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
+ SkyViewkeeperHostOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperHostOptions });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperHostOptions, decorators: [{
8
+ type: Injectable
9
+ }] });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1ob3N0LW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWhvc3Qtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sd0JBQXdCOztxSEFBeEIsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMgaW1wbGVtZW50cyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB7XG4gIHB1YmxpYyBib3VuZGFyeUVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIGVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNjcm9sbGFibGVIb3N0PzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNldFdpZHRoPzogYm9vbGVhbjtcblxuICBwdWJsaWMgdmVydGljYWxPZmZzZXQ/OiBudW1iZXI7XG5cbiAgcHVibGljIHZlcnRpY2FsT2Zmc2V0RWw/OiBIVE1MRWxlbWVudDtcblxuICBwdWJsaWMgdmlld3BvcnRNYXJnaW5Ub3A/OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1vZmZzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLW9mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyT2Zmc2V0IHtcbiAgdG9wOiBudW1iZXI7XG5cbiAgbGVmdDogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdmlld2tlZXBlciBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IGRlZmluZXMgdGhlIGJvdW5kcyBpbiB3aGljaCB0byBrZWVwIHRoZSBlbGVtZW50IGluIHZpZXcuIFdoZW4gdGhlXG4gICAqIGJvdW5kYXJ5IGVsZW1lbnQgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcsIHRoZSB2aWV3a2VlcGVyIGVsZW1lbnQgd2lsbCBiZSBzY3JvbGxlZFxuICAgKiBvdXQgb2Ygdmlldy5cbiAgICovXG4gIGJvdW5kYXJ5RWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8ga2VlcCBpbiB2aWV3LlxuICAgKi9cbiAgZWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgc2Nyb2xsYWJsZSBwYXJlbnQgd2hpY2ggdGhlIHZpZXdrZWVwZXIgcmVzaWRlcyBpbiBhbmQgc2hvdWxkIGxpc3RlbiB0byBhbmQgYmVcbiAgICogcG9zaXRpb25lZCB3aXRoaW4uXG4gICAqL1xuICBzY3JvbGxhYmxlSG9zdD86IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBzZXQgdGhlIHdpZHRoIG9mIHRoZSB2aWV3a2VlcGVyIGVsZW1lbnQgdG8gdGhlIHdpZHRoIG9mIGl0c1xuICAgKiBob3N0IGVsZW1lbnQuIE90aGVyd2lzZSwgaWYgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBleHBsaWNpdCB3aWR0aCBzcGVjaWZpZWQsXG4gICAqIHRoZSBlbGVtZW50IHdvdWxkIGNvbGxhcHNlIGhvcml6b250YWxseSBhcyBhIHJlc3VsdCBvZiBmaXhpbmcgdGhlIGVsZW1lbnQgdG8gdGhlIHRvcFxuICAgKiBvZiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBzZXRXaWR0aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlc2VydmVkIHNwYWNlIGluIHBpeGVscyBhYm92ZSB0aGUgdmlld2tlZXBlciBlbGVtZW50LlxuICAgKi9cbiAgdmVydGljYWxPZmZzZXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHVuZGVyIHdoaWNoIHRoZSB2aWV3a2VlcGVyIGVsZW1lbnQgc2hvdWxkIGJlIGZpeGVkLiBUeXBpY2FsbHkgdGhpcyBpc1xuICAgKiBhbm90aGVyIHZpZXdrZWVwZXIgZWxlbWVudCB0aGF0IGlzIGFib3ZlIHRoZSBjdXJyZW50IHZpZXdrZWVwZXIgZWxlbWVudCBpbiB0aGUgc2FtZVxuICAgKiBib3VuZGFyeSBlbGVtZW50LlxuICAgKi9cbiAgdmVydGljYWxPZmZzZXRFbD86IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBSZXNlcnZlZCBzcGFjZSBpbiBwaXhlbHMgYXQgdGhlIHRvcCBvZiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICB2aWV3cG9ydE1hcmdpblRvcD86IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,116 @@
1
+ import { Directive, ElementRef, Input, Optional, } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { MutationObserverService } from '../mutation/mutation-observer-service';
5
+ import { SkyScrollableHostService } from '../scrollable-host/scrollable-host.service';
6
+ import { SkyViewkeeperService } from './viewkeeper.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../mutation/mutation-observer-service";
9
+ import * as i2 from "./viewkeeper.service";
10
+ import * as i3 from "../scrollable-host/scrollable-host.service";
11
+ export class SkyViewkeeperDirective {
12
+ constructor(el, mutationObserverSvc, viewkeeperSvc, scrollableHostService) {
13
+ this.el = el;
14
+ this.mutationObserverSvc = mutationObserverSvc;
15
+ this.viewkeeperSvc = viewkeeperSvc;
16
+ this.scrollableHostService = scrollableHostService;
17
+ this.viewkeepers = [];
18
+ this.scrollableHostWatchUnsubscribe = undefined;
19
+ }
20
+ set skyViewkeeper(value) {
21
+ this._skyViewkeeper = value;
22
+ this.detectElements();
23
+ }
24
+ get skyViewkeeper() {
25
+ return this._skyViewkeeper;
26
+ }
27
+ ngOnInit() {
28
+ this.observer = this.mutationObserverSvc.create(() => this.detectElements());
29
+ this.observer.observe(this.el.nativeElement, {
30
+ childList: true,
31
+ subtree: true,
32
+ });
33
+ }
34
+ ngOnDestroy() {
35
+ this.observer.disconnect();
36
+ this.destroyViewkeepers();
37
+ }
38
+ destroyViewkeepers() {
39
+ for (const viewkeeper of this.viewkeepers) {
40
+ this.viewkeeperSvc.destroy(viewkeeper);
41
+ }
42
+ this.viewkeepers = [];
43
+ }
44
+ getViewkeeperEls() {
45
+ let viewkeeperEls;
46
+ if (this.skyViewkeeper) {
47
+ viewkeeperEls = [];
48
+ for (const item of this.skyViewkeeper) {
49
+ const matchingEls = Array.from(this.el.nativeElement.querySelectorAll(item));
50
+ viewkeeperEls = [...viewkeeperEls, ...matchingEls];
51
+ }
52
+ }
53
+ return viewkeeperEls;
54
+ }
55
+ viewkeeperElsChanged(viewkeeperEls) {
56
+ if (!viewkeeperEls !== !this.currentViewkeeperEls) {
57
+ return true;
58
+ }
59
+ if (viewkeeperEls && this.currentViewkeeperEls) {
60
+ if (viewkeeperEls.length !== this.currentViewkeeperEls.length) {
61
+ return true;
62
+ }
63
+ for (let i = 0, n = viewkeeperEls.length; i < n; i++) {
64
+ if (viewkeeperEls[i] !== this.currentViewkeeperEls[i]) {
65
+ return true;
66
+ }
67
+ }
68
+ }
69
+ return false;
70
+ }
71
+ detectElements() {
72
+ const viewkeeperEls = this.getViewkeeperEls();
73
+ if (this.viewkeeperElsChanged(viewkeeperEls)) {
74
+ if (this.scrollableHostWatchUnsubscribe) {
75
+ this.scrollableHostWatchUnsubscribe.next();
76
+ this.scrollableHostWatchUnsubscribe = new Subject();
77
+ }
78
+ else {
79
+ this.scrollableHostWatchUnsubscribe = new Subject();
80
+ }
81
+ this.scrollableHostService
82
+ .watchScrollableHost(this.el)
83
+ .pipe(takeUntil(this.scrollableHostWatchUnsubscribe))
84
+ .subscribe((scrollableHost) => {
85
+ this.destroyViewkeepers();
86
+ let previousViewkeeperEl;
87
+ for (const viewkeeperEl of viewkeeperEls) {
88
+ this.viewkeepers.push(this.viewkeeperSvc.create({
89
+ boundaryEl: this.el.nativeElement,
90
+ scrollableHost: scrollableHost instanceof HTMLElement
91
+ ? scrollableHost
92
+ : undefined,
93
+ el: viewkeeperEl,
94
+ setWidth: true,
95
+ verticalOffsetEl: previousViewkeeperEl,
96
+ }));
97
+ previousViewkeeperEl = viewkeeperEl;
98
+ }
99
+ });
100
+ this.currentViewkeeperEls = viewkeeperEls;
101
+ }
102
+ }
103
+ }
104
+ SkyViewkeeperDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperDirective, deps: [{ token: i0.ElementRef }, { token: i1.MutationObserverService }, { token: i2.SkyViewkeeperService }, { token: i3.SkyScrollableHostService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
105
+ SkyViewkeeperDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: SkyViewkeeperDirective, selector: "[skyViewkeeper]", inputs: { skyViewkeeper: "skyViewkeeper" }, ngImport: i0 });
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperDirective, decorators: [{
107
+ type: Directive,
108
+ args: [{
109
+ selector: '[skyViewkeeper]',
110
+ }]
111
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MutationObserverService }, { type: i2.SkyViewkeeperService }, { type: i3.SkyScrollableHostService, decorators: [{
112
+ type: Optional
113
+ }] }]; }, propDecorators: { skyViewkeeper: [{
114
+ type: Input
115
+ }] } });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUs1RCxNQUFNLE9BQU8sc0JBQXNCO0lBc0JqQyxZQUNVLEVBQWMsRUFDZCxtQkFBNEMsRUFDNUMsYUFBbUMsRUFDdkIscUJBQStDO1FBSDNELE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlCO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUN2QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQTBCO1FBWjdELGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQU1sQyxtQ0FBOEIsR0FBOEIsU0FBUyxDQUFDO0lBTzNFLENBQUM7SUExQkosSUFDVyxhQUFhLENBQUMsS0FBZTtRQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7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QkFBa0IsRUFBRSxDQUFDO2dCQUUxQixJQUFJLG9CQUFpQyxDQUFDO2dCQUV0QyxLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO3dCQUN4QixVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhO3dCQUNqQyxjQUFjLEVBQ1osY0FBYyxZQUFZLFdBQVc7NEJBQ25DLENBQUMsQ0FBQyxjQUFjOzRCQUNoQixDQUFDLENBQUMsU0FBUzt3QkFDZixFQUFFLEVBQUUsWUFBWTt3QkFDaEIsUUFBUSxFQUFFLElBQUk7d0JBQ2QsZ0JBQWdCLEVBQUUsb0JBQW9CO3FCQUN2QyxDQUFDLENBQ0gsQ0FBQztvQkFFRixvQkFBb0IsR0FBRyxZQUFZLENBQUM7aUJBQ3JDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFTCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQzs7bUhBbklVLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7OzBCQTJCSSxRQUFROzRDQXhCQSxhQUFhO3NCQUR2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNdXRhdGlvbk9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uL211dGF0aW9uL211dGF0aW9uLW9ic2VydmVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5U2Nyb2xsYWJsZUhvc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5Vmlld2tlZXBlciB9IGZyb20gJy4vdmlld2tlZXBlcic7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyU2VydmljZSB9IGZyb20gJy4vdmlld2tlZXBlci5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVZpZXdrZWVwZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3lWaWV3a2VlcGVyKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NreVZpZXdrZWVwZXIgPSB2YWx1ZTtcblxuICAgIHRoaXMuZGV0ZWN0RWxlbWVudHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2t5Vmlld2tlZXBlcigpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NreVZpZXdrZWVwZXI7XG4gIH1cblxuICBwcml2YXRlIF9za3lWaWV3a2VlcGVyOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIHZpZXdrZWVwZXJzOiBTa3lWaWV3a2VlcGVyW10gPSBbXTtcblxuICBwcml2YXRlIG9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gIHByaXZhdGUgY3VycmVudFZpZXdrZWVwZXJFbHM6IEhUTUxFbGVtZW50W107XG5cbiAgcHJpdmF0ZSBzY3JvbGxhYmxlSG9zdFdhdGNoVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXJTdmM6IE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2tlZXBlclN2YzogU2t5Vmlld2tlZXBlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY3JvbGxhYmxlSG9zdFNlcnZpY2U6IFNreVNjcm9sbGFibGVIb3N0U2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZXIgPSB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdmMuY3JlYXRlKCgpID0+XG4gICAgICB0aGlzLmRldGVjdEVsZW1lbnRzKClcbiAgICApO1xuXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgIHRoaXMuZGVzdHJveVZpZXdrZWVwZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lWaWV3a2VlcGVycygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHZpZXdrZWVwZXIgb2YgdGhpcy52aWV3a2VlcGVycykge1xuICAgICAgdGhpcy52aWV3a2VlcGVyU3ZjLmRlc3Ryb3kodmlld2tlZXBlcik7XG4gICAgfVxuXG4gICAgdGhpcy52aWV3a2VlcGVycyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaWV3a2VlcGVyRWxzKCk6IEhUTUxFbGVtZW50W10ge1xuICAgIGxldCB2aWV3a2VlcGVyRWxzOiBIVE1MRWxlbWVudFtdO1xuXG4gICAgaWYgKHRoaXMuc2t5Vmlld2tlZXBlcikge1xuICAgICAgdmlld2tlZXBlckVscyA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5za3lWaWV3a2VlcGVyKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nRWxzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKGl0ZW0pXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcblxuICAgICAgICB2aWV3a2VlcGVyRWxzID0gWy4uLnZpZXdrZWVwZXJFbHMsIC4uLm1hdGNoaW5nRWxzXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmlld2tlZXBlckVscztcbiAgfVxuXG4gIHByaXZhdGUgdmlld2tlZXBlckVsc0NoYW5nZWQodmlld2tlZXBlckVsczogSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmlld2tlZXBlckVscyAhPT0gIXRoaXMuY3VycmVudFZpZXdrZWVwZXJFbHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2aWV3a2VlcGVyRWxzICYmIHRoaXMuY3VycmVudFZpZXdrZWVwZXJFbHMpIHtcbiAgICAgIGlmICh2aWV3a2VlcGVyRWxzLmxlbmd0aCAhPT0gdGhpcy5jdXJyZW50Vmlld2tlZXBlckVscy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gdmlld2tlZXBlckVscy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgaWYgKHZpZXdrZWVwZXJFbHNbaV0gIT09IHRoaXMuY3VycmVudFZpZXdrZWVwZXJFbHNbaV0pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0RWxlbWVudHMoKTogdm9pZCB7XG4gICAgY29uc3Qgdmlld2tlZXBlckVscyA9IHRoaXMuZ2V0Vmlld2tlZXBlckVscygpO1xuXG4gICAgaWYgKHRoaXMudmlld2tlZXBlckVsc0NoYW5nZWQodmlld2tlZXBlckVscykpIHtcbiAgICAgIGlmICh0aGlzLnNjcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZSkge1xuICAgICAgICB0aGlzLnNjcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zY3JvbGxhYmxlSG9zdFNlcnZpY2VcbiAgICAgICAgLndhdGNoU2Nyb2xsYWJsZUhvc3QodGhpcy5lbClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZUhvc3QpID0+IHtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3lWaWV3a2VlcGVycygpO1xuXG4gICAgICAgICAgbGV0IHByZXZpb3VzVmlld2tlZXBlckVsOiBIVE1MRWxlbWVudDtcblxuICAgICAgICAgIGZvciAoY29uc3Qgdmlld2tlZXBlckVsIG9mIHZpZXdrZWVwZXJFbHMpIHtcbiAgICAgICAgICAgIHRoaXMudmlld2tlZXBlcnMucHVzaChcbiAgICAgICAgICAgICAgdGhpcy52aWV3a2VlcGVyU3ZjLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgYm91bmRhcnlFbDogdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0OlxuICAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICA/IHNjcm9sbGFibGVIb3N0XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGVsOiB2aWV3a2VlcGVyRWwsXG4gICAgICAgICAgICAgICAgc2V0V2lkdGg6IHRydWUsXG4gICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXRFbDogcHJldmlvdXNWaWV3a2VlcGVyRWwsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBwcmV2aW91c1ZpZXdrZWVwZXJFbCA9IHZpZXdrZWVwZXJFbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3a2VlcGVyRWxzID0gdmlld2tlZXBlckVscztcbiAgICB9XG4gIH1cbn1cbiJdfQ==